diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index b43968731..37848a318 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -10,16 +10,25 @@ body: installation. If you're having trouble with installation or just looking for assistance with using NetBox, please visit our [discussion forum](https://github.com/netbox-community/netbox/discussions) instead. + - type: dropdown + attributes: + label: Deployment Type + description: How are you running NetBox? + options: + - Self-hosted + - NetBox Cloud + validations: + required: true - type: input attributes: - label: NetBox version + label: NetBox Version description: What version of NetBox are you currently running? - placeholder: v3.5.8 + placeholder: v3.6.9 validations: required: true - type: dropdown attributes: - label: Python version + label: Python Version description: What version of Python are you currently running? options: - "3.8" diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 5df3069ba..006fb64fc 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -14,7 +14,7 @@ body: attributes: label: NetBox version description: What version of NetBox are you currently running? - placeholder: v3.5.8 + placeholder: v3.6.9 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/translation.yaml b/.github/ISSUE_TEMPLATE/translation.yaml new file mode 100644 index 000000000..d07bc399d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/translation.yaml @@ -0,0 +1,37 @@ +--- +name: 🌍 Translation +description: Request support for a new language in the user interface +labels: ["type: translation"] +body: + - type: markdown + attributes: + value: > + **NOTE:** This template is used only for proposing the addition of *new* languages. Please do + not use it to request changes to existing translations. + - type: input + attributes: + label: Language + description: What is the name of the language in English? + validations: + required: true + - type: input + attributes: + label: ISO 639-1 code + description: > + What is the two-letter [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) + assigned to the language? + validations: + required: true + - type: dropdown + attributes: + label: Volunteer + description: Are you a fluent speaker of this language **and** willing to contribute a translation map? + options: + - "Yes" + - "No" + validations: + required: true + - type: textarea + attributes: + label: Comments + description: Any other notes you would like to share diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1d9692194..9d580baa4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,15 +31,15 @@ jobs: steps: - name: Check out repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} @@ -47,7 +47,7 @@ jobs: run: npm install -g yarn - name: Setup Node.js with Yarn Caching - uses: actions/setup-node@v2 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: yarn diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml index 6019cef5d..a3e66a429 100644 --- a/.github/workflows/lock.yml +++ b/.github/workflows/lock.yml @@ -14,7 +14,7 @@ jobs: lock: runs-on: ubuntu-latest steps: - - uses: dessant/lock-threads@v3 + - uses: dessant/lock-threads@v4 with: issue-inactive-days: 90 pr-inactive-days: 30 diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 3b37aae56..22de146a2 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/stale@v6 + - uses: actions/stale@v8 with: close-issue-message: > This issue has been automatically closed due to lack of activity. In an diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 301fac079..471846427 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,6 +36,8 @@ NetBox users are welcome to participate in either role, on stage or in the crowd ## :bug: Reporting Bugs +:warning: Bug reports are used to call attention to some unintended or unexpected behavior in NetBox, such as when an error occurs or when the result of taking some action is inconsistent with the documentation. **Bug reports may not be used to suggest new functionality**; please see "feature requests" below if that is your goal. + * First, ensure that you're running the [latest stable version](https://github.com/netbox-community/netbox/releases) of NetBox. If you're running an older version, it's likely that the bug has already been fixed. * Next, search our [issues list](https://github.com/netbox-community/netbox/issues?q=is%3Aissue) to see if the bug you've found has already been reported. If you come across a bug report that seems to match, please click "add a reaction" in the top right corner of the issue and add a thumbs up (:thumbsup:). This will help draw more attention to it. Any comments you can add to provide additional information or context would also be much appreciated. diff --git a/README.md b/README.md index 54b3e727e..6e50e5687 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@
NetBox logo -

The premiere source of truth powering network automation

+

The premier source of truth powering network automation

CI status

diff --git a/base_requirements.txt b/base_requirements.txt index f66a4c4c2..715f7ad74 100644 --- a/base_requirements.txt +++ b/base_requirements.txt @@ -23,8 +23,9 @@ django-filter django-graphiql-debug-toolbar # Modified Preorder Tree Traversal (recursive nesting of objects) +# Pinned to 0.14.0; 0.15.0 requires Python 3.9+ # https://github.com/django-mptt/django-mptt/blob/main/CHANGELOG.rst -django-mptt +django-mptt==0.14.0 # Context managers for PostgreSQL advisory locks # https://github.com/Xof/django-pglocks/blob/master/CHANGES.txt @@ -88,9 +89,8 @@ gunicorn Jinja2 # Simple markup language for rendering HTML -# https://python-markdown.github.io/change_log/ -# mkdocs currently requires Markdown v3.3 -Markdown<3.4 +# https://python-markdown.github.io/changelog/ +Markdown # File inclusion plugin for Python-Markdown # https://github.com/cmacmackin/markdown-include @@ -120,9 +120,9 @@ psycopg[binary,pool] # https://github.com/yaml/pyyaml/blob/master/CHANGES PyYAML -# Sentry SDK -# https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md -sentry-sdk +# Requests +# https://github.com/psf/requests/blob/main/HISTORY.md +requests # Social authentication framework # https://github.com/python-social-auth/social-core/blob/master/CHANGELOG.md diff --git a/contrib/generated_schema.json b/contrib/generated_schema.json index 8dbcb2847..5e8507798 100644 --- a/contrib/generated_schema.json +++ b/contrib/generated_schema.json @@ -332,6 +332,7 @@ "100gbase-x-cfp", "100gbase-x-cfp2", "200gbase-x-cfp2", + "400gbase-x-cfp2", "100gbase-x-cfp4", "100gbase-x-cxp", "100gbase-x-cpak", @@ -341,8 +342,10 @@ "100gbase-x-qsfpdd", "200gbase-x-qsfp56", "200gbase-x-qsfpdd", + "400gbase-x-qsfp112", "400gbase-x-qsfpdd", "400gbase-x-osfp", + "400gbase-x-osfp-rhs", "400gbase-x-cdfp", "400gbase-x-cfp8", "800gbase-x-qsfpdd", diff --git a/docs/administration/error-reporting.md b/docs/administration/error-reporting.md index 162998774..ccc0a84a5 100644 --- a/docs/administration/error-reporting.md +++ b/docs/administration/error-reporting.md @@ -4,27 +4,15 @@ ### Enabling Error Reporting -NetBox supports native integration with [Sentry](https://sentry.io/) for automatic error reporting. To enable this functionality, simply set `SENTRY_ENABLED` to True in `configuration.py`. Errors will be sent to a Sentry ingestor maintained by the NetBox team for analysis. - -```python -SENTRY_ENABLED = True -``` - -### Using a Custom DSN - -If you prefer instead to use your own Sentry ingestor, you'll need to first create a new project under your Sentry account to represent your NetBox deployment and obtain its corresponding data source name (DSN). This looks like a URL similar to the example below: - -``` -https://examplePublicKey@o0.ingest.sentry.io/0 -``` - -Once you have obtained a DSN, configure Sentry in NetBox's `configuration.py` file with the following parameters: +NetBox supports native integration with [Sentry](https://sentry.io/) for automatic error reporting. To enable this functionality, set `SENTRY_ENABLED` to True and define your unique [data source name (DSN)](https://docs.sentry.io/product/sentry-basics/concepts/dsn-explainer/) in `configuration.py`. ```python SENTRY_ENABLED = True SENTRY_DSN = "https://examplePublicKey@o0.ingest.sentry.io/0" ``` +Setting `SENTRY_ENABLED` to False will disable the Sentry integration. + ### Assigning Tags You can optionally attach one or more arbitrary tags to the outgoing error reports if desired by setting the `SENTRY_TAGS` parameter: diff --git a/docs/administration/replicating-netbox.md b/docs/administration/replicating-netbox.md index 531f9c027..7cc4d3832 100644 --- a/docs/administration/replicating-netbox.md +++ b/docs/administration/replicating-netbox.md @@ -54,7 +54,7 @@ pg_dump --username netbox --password --host localhost -s netbox > netbox_schema. By default, NetBox stores uploaded files (such as image attachments) in its media directory. To fully replicate an instance of NetBox, you'll need to copy both the database and the media files. !!! note - These operations are not necessary if your installation is utilizing a [remote storage backend](../../configuration/optional-settings/#storage_backend). + These operations are not necessary if your installation is utilizing a [remote storage backend](../configuration/system.md#storage_backend). ### Archive the Media Directory diff --git a/docs/configuration/data-validation.md b/docs/configuration/data-validation.md index 9ff71758f..1b8263de3 100644 --- a/docs/configuration/data-validation.md +++ b/docs/configuration/data-validation.md @@ -87,3 +87,24 @@ The following colors are supported: * `gray` * `black` * `white` + +--- + +## PROTECTION_RULES + +!!! tip "Dynamic Configuration Parameter" + +This is a mapping of models to [custom validators](../customization/custom-validation.md) against which an object is evaluated immediately prior to its deletion. If validation fails, the object is not deleted. An example is provided below: + +```python +PROTECTION_RULES = { + "dcim.site": [ + { + "status": { + "eq": "decommissioning" + } + }, + "my_plugin.validators.Validator1", + ] +} +``` diff --git a/docs/configuration/default-values.md b/docs/configuration/default-values.md index e76930208..d90e6eafc 100644 --- a/docs/configuration/default-values.md +++ b/docs/configuration/default-values.md @@ -20,7 +20,7 @@ DEFAULT_DASHBOARD = [ { 'widget': 'extras.ObjectCountsWidget', 'width': 4, - 'height': 2, + 'height': 3, 'title': 'Organization', 'config': { 'models': [ @@ -32,6 +32,8 @@ DEFAULT_DASHBOARD = [ }, { 'widget': 'extras.ObjectCountsWidget', + 'width': 4, + 'height': 3, 'title': 'IPAM', 'color': 'blue', 'config': { diff --git a/docs/configuration/error-reporting.md b/docs/configuration/error-reporting.md index d1c47e2fb..8c3526dec 100644 --- a/docs/configuration/error-reporting.md +++ b/docs/configuration/error-reporting.md @@ -18,6 +18,9 @@ Default: False Set to True to enable automatic error reporting via [Sentry](https://sentry.io/). +!!! note + The `sentry-sdk` Python package is required to enable Sentry integration. + --- ## SENTRY_SAMPLE_RATE diff --git a/docs/configuration/miscellaneous.md b/docs/configuration/miscellaneous.md index fd410a9d4..4d4ca189e 100644 --- a/docs/configuration/miscellaneous.md +++ b/docs/configuration/miscellaneous.md @@ -80,19 +80,41 @@ changes in the database indefinitely. --- +## CHANGELOG_SKIP_EMPTY_CHANGES + +Default: True + +If enabled, a change log record will not be created when an object is updated without any changes to its existing field values. + +!!! note + The object's `last_updated` field will always reflect the time of the most recent update, regardless of this parameter. + +--- + +## DATA_UPLOAD_MAX_MEMORY_SIZE + +Default: `2621440` (2.5 MB) + +The maximum size (in bytes) of an incoming HTTP request (i.e. `GET` or `POST` data). Requests which exceed this size will raise a `RequestDataTooBig` exception. + +--- + ## ENFORCE_GLOBAL_UNIQUE !!! tip "Dynamic Configuration Parameter" -Default: False +Default: True -By default, NetBox will permit users to create duplicate prefixes and IP addresses in the global table (that is, those which are not assigned to any VRF). This behavior can be disabled by setting `ENFORCE_GLOBAL_UNIQUE` to True. +By default, NetBox will prevent the creation of duplicate prefixes and IP addresses in the global table (that is, those which are not assigned to any VRF). This validation can be disabled by setting `ENFORCE_GLOBAL_UNIQUE` to False. + +!!! info "Changed in v3.7" + The default value for this parameter was changed from False to True in NetBox v3.7. --- -## `FILE_UPLOAD_MAX_MEMORY_SIZE` +## FILE_UPLOAD_MAX_MEMORY_SIZE -Default: `2621440` (2.5 MB). +Default: `2621440` (2.5 MB) The maximum amount (in bytes) of uploaded data that will be held in memory before being written to the filesystem. Changing this setting can be useful for example to be able to upload files bigger than 2.5MB to custom scripts for processing. diff --git a/docs/configuration/plugins.md b/docs/configuration/plugins.md index aea60f389..a3e691f63 100644 --- a/docs/configuration/plugins.md +++ b/docs/configuration/plugins.md @@ -4,7 +4,7 @@ Default: Empty -A list of installed [NetBox plugins](../../plugins/) to enable. Plugins will not take effect unless they are listed here. +A list of installed [NetBox plugins](../plugins/index.md) to enable. Plugins will not take effect unless they are listed here. !!! warning Plugins extend NetBox by allowing external code to run with the same access and privileges as NetBox itself. Only install plugins from trusted sources. The NetBox maintainers make absolutely no guarantees about the integrity or security of your installation with plugins enabled. diff --git a/docs/configuration/required-parameters.md b/docs/configuration/required-parameters.md index 012d85762..bda365995 100644 --- a/docs/configuration/required-parameters.md +++ b/docs/configuration/required-parameters.md @@ -59,10 +59,7 @@ DATABASE = { ## REDIS -[Redis](https://redis.io/) is an in-memory data store similar to memcached. While Redis has been an optional component of -NetBox since the introduction of webhooks in version 2.4, it is required starting in 2.6 to support NetBox's caching -functionality (as well as other planned features). In 2.7, the connection settings were broken down into two sections for -task queuing and caching, allowing the user to connect to different Redis instances/databases per feature. +[Redis](https://redis.io/) is a lightweight in-memory data store similar to memcached. NetBox employs Redis for background task queuing and other features. Redis is configured using a configuration setting similar to `DATABASE` and these settings are the same for both of the `tasks` and `caching` subsections: @@ -81,7 +78,7 @@ REDIS = { 'tasks': { 'HOST': 'redis.example.com', 'PORT': 1234, - 'USERNAME': 'netbox' + 'USERNAME': 'netbox', 'PASSWORD': 'foobar', 'DATABASE': 0, 'SSL': False, @@ -89,7 +86,7 @@ REDIS = { 'caching': { 'HOST': 'localhost', 'PORT': 6379, - 'USERNAME': '' + 'USERNAME': '', 'PASSWORD': '', 'DATABASE': 1, 'SSL': False, diff --git a/docs/customization/custom-fields.md b/docs/customization/custom-fields.md index 1e0d5c31e..e9ff7bd9f 100644 --- a/docs/customization/custom-fields.md +++ b/docs/customization/custom-fields.md @@ -40,14 +40,22 @@ Related custom fields can be grouped together within the UI by assigning each th This parameter has no effect on the API representation of custom field data. -### Visibility +### Visibility & Editing -When creating a custom field, there are three options for UI visibility. These control how and whether the custom field is displayed within the NetBox UI. +!!! info "This feature was improved in NetBox v3.7." -* **Read/write** (default): The custom field is included when viewing and editing objects. -* **Read-only**: The custom field is displayed when viewing an object, but it cannot be edited via the UI. (It will appear in the form as a read-only field.) +When creating a custom field, users can control the conditions under which it may be displayed and edited within the NetBox user interface. The following choices are available for controlling the display of a custom field on an object: + +* **Always** (default): The custom field is included when viewing an object. +* **If Set**: The custom field is included only if a value has been defined for the object. * **Hidden**: The custom field will never be displayed within the UI. This option is recommended for fields which are not intended for use by human users. +Additionally, the following options are available for controlling whether custom field values can be altered within the NetBox UI: + +* **Yes** (default): The custom field's value may be modified when editing an object. +* **No**: The custom field is displayed for reference when editing an object, but its value may not be modified. +* **Hidden**: The custom field is not displayed when editing an object. + Note that this setting has no impact on the REST or GraphQL APIs: Custom field data will always be available via either API. ### Validation diff --git a/docs/customization/custom-scripts.md b/docs/customization/custom-scripts.md index 3811474d2..0b1ed11df 100644 --- a/docs/customization/custom-scripts.md +++ b/docs/customization/custom-scripts.md @@ -288,7 +288,7 @@ An IPv4 or IPv6 network with a mask. Returns a `netaddr.IPNetwork` object. Two a ## Running Custom Scripts !!! note - To run a custom script, a user must be assigned the `extras.run_script` permission. This is achieved by assigning the user (or group) a permission on the Script object and specifying the `run` action in the admin UI as shown below. + To run a custom script, a user must be assigned via permissions for `Extras > Script`, `Extras > ScriptModule`, and `Core > ManagedFile` objects. They must also be assigned the `extras.run_script` permission. This is achieved by assigning the user (or group) a permission on the Script object and specifying the `run` action in the admin UI as shown below. ![Adding the run action to a permission](../media/admin_ui_run_permission.png) diff --git a/docs/customization/custom-validation.md b/docs/customization/custom-validation.md index 30198117f..79aa82bc9 100644 --- a/docs/customization/custom-validation.md +++ b/docs/customization/custom-validation.md @@ -26,6 +26,8 @@ The `CustomValidator` class supports several validation types: * `regex`: Application of a [regular expression](https://en.wikipedia.org/wiki/Regular_expression) * `required`: A value must be specified * `prohibited`: A value must _not_ be specified +* `eq`: A value must be equal to the specified value +* `neq`: A value must _not_ be equal to the specified value The `min` and `max` types should be defined for numeric values, whereas `min_length`, `max_length`, and `regex` are suitable for character strings (text values). The `required` and `prohibited` validators may be used for any field, and should be passed a value of `True`. diff --git a/docs/customization/reports.md b/docs/customization/reports.md index b68e17bf4..a821c5da7 100644 --- a/docs/customization/reports.md +++ b/docs/customization/reports.md @@ -111,7 +111,7 @@ The following methods are available to log results within a report: The recording of one or more failure messages will automatically flag a report as failed. It is advised to log a success for each object that is evaluated so that the results will reflect how many objects are being reported on. (The inclusion of a log message is optional for successes.) Messages recorded with `log()` will appear in a report's results but are not associated with a particular object or status. Log messages also support using markdown syntax and will be rendered on the report result page. -To perform additional tasks, such as sending an email or calling a webhook, before or after a report is run, extend the `pre_run()` and/or `post_run()` methods, respectively. The status of a completed report is available as `self.failed` and the results object is `self.result`. +To perform additional tasks, such as sending an email or calling a webhook, before or after a report is run, extend the `pre_run()` and/or `post_run()` methods, respectively. By default, reports within a module are ordered alphabetically in the reports list page. To return reports in a specific order, you can define the `report_order` variable at the end of your module. The `report_order` variable is a tuple which contains each Report class in the desired order. Any reports that are omitted from this list will be listed last. @@ -132,7 +132,7 @@ Once you have created a report, it will appear in the reports list. Initially, r ## Running Reports !!! note - To run a report, a user must be assigned the `extras.run_report` permission. This is achieved by assigning the user (or group) a permission on the Report object and specifying the `run` action in the admin UI as shown below. + To run a report, a user must be assigned via permissions for `Extras > Report`, `Extras > ReportModule`, and `Core > ManagedFile` objects. They must also be assigned the `extras.run_report` permission. This is achieved by assigning the user (or group) a permission on the Report object and specifying the `run` action in the admin UI as shown below. ![Adding the run action to a permission](../media/admin_ui_run_permission.png) diff --git a/docs/development/application-registry.md b/docs/development/application-registry.md index 41bf6cb31..570563431 100644 --- a/docs/development/application-registry.md +++ b/docs/development/application-registry.md @@ -31,7 +31,7 @@ A dictionary of particular features (e.g. custom fields) mapped to the NetBox mo 'dcim': ['site', 'rack', 'devicetype', ...], ... }, - 'webhooks': { + 'event_rules': { 'extras': ['configcontext', 'tag', ...], 'dcim': ['site', 'rack', 'devicetype', ...], }, @@ -41,6 +41,10 @@ A dictionary of particular features (e.g. custom fields) mapped to the NetBox mo Supported model features are listed in the [features matrix](./models.md#features-matrix). +### `models` + +This key lists all models which have been registered in NetBox which are not designated for private use. (Setting `_netbox_private` to True on a model excludes it from this list.) As with individual features under `model_features`, models are organized by app label. + ### `plugins` This store maintains all registered items for plugins, such as navigation menus, template extensions, etc. @@ -49,6 +53,10 @@ This store maintains all registered items for plugins, such as navigation menus, A dictionary mapping each model (identified by its app and label) to its search index class, if one has been registered for it. +### `tables` + +A dictionary mapping table classes to lists of extra columns that have been registered by plugins using the `register_table_column()` utility function. Each column is defined as a tuple of name and column instance. + ### `views` A hierarchical mapping of registered views for each model. Mappings are added using the `register_model_view()` decorator, and URLs paths can be generated from these using `get_model_urls()`. diff --git a/docs/development/extending-models.md b/docs/development/extending-models.md index b7fd5e1e5..bf5431337 100644 --- a/docs/development/extending-models.md +++ b/docs/development/extending-models.md @@ -2,12 +2,25 @@ Below is a list of tasks to consider when adding a new field to a core model. -## 1. Generate and run database migrations +## 1. Add the field to the model class + +Add the field to the model, taking care to address any of the following conditions. + +* When adding a GenericForeignKey field, also add an index under `Meta` for its two concrete fields. For example: + + ```python + class Meta: + indexes = ( + models.Index(fields=('object_type', 'object_id')), + ) + ``` + +## 2. Generate and run database migrations [Django migrations](https://docs.djangoproject.com/en/stable/topics/migrations/) are used to express changes to the database schema. In most cases, Django can generate these automatically, however very complex changes may require manual intervention. Always remember to specify a short but descriptive name when generating a new migration. ``` -./manage.py makemigrations -n +./manage.py makemigrations -n --no-header ./manage.py migrate ``` @@ -16,7 +29,7 @@ Where possible, try to merge related changes into a single migration. For exampl !!! warning "Do not alter existing migrations" Migrations can only be merged within a release. Once a new release has been published, its migrations cannot be altered (other than for the purpose of correcting a bug). -## 2. Add validation logic to `clean()` +## 3. Add validation logic to `clean()` If the new field introduces additional validation requirements (beyond what's included with the field itself), implement them in the model's `clean()` method. Remember to call the model's original method using `super()` before or after your custom validation as appropriate: @@ -31,15 +44,15 @@ class Foo(models.Model): raise ValidationError() ``` -## 3. Update relevant querysets +## 4. Update relevant querysets If you're adding a relational field (e.g. `ForeignKey`) and intend to include the data when retrieving a list of objects, be sure to include the field using `prefetch_related()` as appropriate. This will optimize the view and avoid extraneous database queries. -## 4. Update API serializer +## 5. Update API serializer Extend the model's API serializer in `.api.serializers` to include the new field. In most cases, it will not be necessary to also extend the nested serializer, which produces a minimal representation of the model. -## 5. Add fields to forms +## 6. Add fields to forms Extend any forms to include the new field(s) as appropriate. These are found under the `forms/` directory within each app. Common forms include: @@ -48,23 +61,23 @@ Extend any forms to include the new field(s) as appropriate. These are found und * **CSV import** - The form used when bulk importing objects in CSV format * **Filter** - Displays the options available for filtering a list of objects (both UI and API) -## 6. Extend object filter set +## 7. Extend object filter set If the new field should be filterable, add it to the `FilterSet` for the model. If the field should be searchable, remember to query it in the FilterSet's `search()` method. -## 7. Add column to object table +## 8. Add column to object table If the new field will be included in the object list view, add a column to the model's table. For simple fields, adding the field name to `Meta.fields` will be sufficient. More complex fields may require declaring a custom column. Also add the field name to `default_columns` if the column should be present in the table by default. -## 8. Update the SearchIndex +## 9. Update the SearchIndex Where applicable, add the new field to the model's SearchIndex for inclusion in global search. -## 9. Update the UI templates +## 10. Update the UI templates Edit the object's view template to display the new field. There may also be a custom add/edit form template that needs to be updated. -## 10. Create/extend test cases +## 11. Create/extend test cases Create or extend the relevant test cases to verify that the new field and any accompanying validation logic perform as expected. This is especially important for relational fields. NetBox incorporates various test suites, including: @@ -74,8 +87,8 @@ Create or extend the relevant test cases to verify that the new field and any ac * Model tests * View tests -Be diligent to ensure all of the relevant test suites are adapted or extended as necessary to test any new functionality. +Be diligent to ensure all the relevant test suites are adapted or extended as necessary to test any new functionality. -## 11. Update the model's documentation +## 12. Update the model's documentation Each model has a dedicated page in the documentation, at `models//.md`. Update this file to include any relevant information about the new field. diff --git a/docs/development/internationalization.md b/docs/development/internationalization.md index bdc7cbdaa..bebc97470 100644 --- a/docs/development/internationalization.md +++ b/docs/development/internationalization.md @@ -97,7 +97,7 @@ class CircuitTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable): 1. Ensure translation support is enabled by including `{% load i18n %}` at the top of the template. 2. Use the [`{% trans %}`](https://docs.djangoproject.com/en/stable/topics/i18n/translation/#translate-template-tag) tag (short for "translate") to wrap short strings. -3. Longer strings may be enclosed between [`{% blocktrans %}`](https://docs.djangoproject.com/en/stable/topics/i18n/translation/#blocktranslate-template-tag) and `{% endblocktrans %}` tags to improve readability and to enable variable replacement. +3. Longer strings may be enclosed between [`{% blocktrans %}`](https://docs.djangoproject.com/en/stable/topics/i18n/translation/#blocktranslate-template-tag) and `{% endblocktrans %}` tags to improve readability and to enable variable replacement. (Remember to include the `trimmed` argument to trim whitespace between the tags.) 4. Avoid passing HTML within translated strings where possible, as this can complicate the work needed of human translators to develop message maps. ``` @@ -107,7 +107,7 @@ class CircuitTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable):
{% trans "Circuit List" %}
{# A longer string with a context variable #} -{% blocktrans with count=object.circuits.count %} +{% blocktrans trimmed with count=object.circuits.count %} There are {count} circuits. Would you like to continue? {% endblocktrans %} ``` diff --git a/docs/development/models.md b/docs/development/models.md index d4838570a..19b7be6de 100644 --- a/docs/development/models.md +++ b/docs/development/models.md @@ -10,19 +10,19 @@ The Django [content types](https://docs.djangoproject.com/en/stable/ref/contrib/ Depending on its classification, each NetBox model may support various features which enhance its operation. Each feature is enabled by inheriting from its designated mixin class, and some features also make use of the [application registry](./application-registry.md#model_features). -| Feature | Feature Mixin | Registry Key | Description | -|------------------------------------------------------------|-------------------------|--------------------|--------------------------------------------------------------------------------| -| [Change logging](../features/change-logging.md) | `ChangeLoggingMixin` | - | Changes to these objects are automatically recorded in the change log | -| Cloning | `CloningMixin` | - | Provides the `clone()` method to prepare a copy | -| [Custom fields](../customization/custom-fields.md) | `CustomFieldsMixin` | `custom_fields` | These models support the addition of user-defined fields | -| [Custom links](../customization/custom-links.md) | `CustomLinksMixin` | `custom_links` | These models support the assignment of custom links | -| [Custom validation](../customization/custom-validation.md) | `CustomValidationMixin` | - | Supports the enforcement of custom validation rules | -| [Export templates](../customization/export-templates.md) | `ExportTemplatesMixin` | `export_templates` | Users can create custom export templates for these models | -| [Job results](../features/background-jobs.md) | `JobsMixin` | `jobs` | Users can create custom export templates for these models | -| [Journaling](../features/journaling.md) | `JournalingMixin` | `journaling` | These models support persistent historical commentary | -| [Synchronized data](../integrations/synchronized-data.md) | `SyncedDataMixin` | `synced_data` | Certain model data can be automatically synchronized from a remote data source | -| [Tagging](../models/extras/tag.md) | `TagsMixin` | `tags` | The models can be tagged with user-defined tags | -| [Webhooks](../integrations/webhooks.md) | `WebhooksMixin` | `webhooks` | NetBox is capable of generating outgoing webhooks for these objects | +| Feature | Feature Mixin | Registry Key | Description | +|------------------------------------------------------------|-------------------------|--------------------|-----------------------------------------------------------------------------------------| +| [Change logging](../features/change-logging.md) | `ChangeLoggingMixin` | - | Changes to these objects are automatically recorded in the change log | +| Cloning | `CloningMixin` | - | Provides the `clone()` method to prepare a copy | +| [Custom fields](../customization/custom-fields.md) | `CustomFieldsMixin` | `custom_fields` | These models support the addition of user-defined fields | +| [Custom links](../customization/custom-links.md) | `CustomLinksMixin` | `custom_links` | These models support the assignment of custom links | +| [Custom validation](../customization/custom-validation.md) | `CustomValidationMixin` | - | Supports the enforcement of custom validation rules | +| [Export templates](../customization/export-templates.md) | `ExportTemplatesMixin` | `export_templates` | Users can create custom export templates for these models | +| [Job results](../features/background-jobs.md) | `JobsMixin` | `jobs` | Users can create custom export templates for these models | +| [Journaling](../features/journaling.md) | `JournalingMixin` | `journaling` | These models support persistent historical commentary | +| [Synchronized data](../integrations/synchronized-data.md) | `SyncedDataMixin` | `synced_data` | Certain model data can be automatically synchronized from a remote data source | +| [Tagging](../models/extras/tag.md) | `TagsMixin` | `tags` | The models can be tagged with user-defined tags | +| [Event rules](../features/event-rules.md) | `EventRulesMixin` | `event_rules` | Event rules can send webhooks or run custom scripts automatically in response to events | ## Models Index @@ -52,7 +52,6 @@ These are considered the "core" application models which are used to model netwo * [ipam.FHRPGroup](../models/ipam/fhrpgroup.md) * [ipam.IPAddress](../models/ipam/ipaddress.md) * [ipam.IPRange](../models/ipam/iprange.md) -* [ipam.L2VPN](../models/ipam/l2vpn.md) * [ipam.Prefix](../models/ipam/prefix.md) * [ipam.RouteTarget](../models/ipam/routetarget.md) * [ipam.Service](../models/ipam/service.md) @@ -63,6 +62,13 @@ These are considered the "core" application models which are used to model netwo * [tenancy.Tenant](../models/tenancy/tenant.md) * [virtualization.Cluster](../models/virtualization/cluster.md) * [virtualization.VirtualMachine](../models/virtualization/virtualmachine.md) +* [vpn.IKEPolicy](../models/vpn/ikepolicy.md) +* [vpn.IKEProposal](../models/vpn/ikeproposal.md) +* [vpn.IPSecPolicy](../models/vpn/ipsecpolicy.md) +* [vpn.IPSecProfile](../models/vpn/ipsecprofile.md) +* [vpn.IPSecProposal](../models/vpn/ipsecproposal.md) +* [vpn.L2VPN](../models/vpn/l2vpn.md) +* [vpn.Tunnel](../models/vpn/tunnel.md) * [wireless.WirelessLAN](../models/wireless/wirelesslan.md) * [wireless.WirelessLink](../models/wireless/wirelesslink.md) @@ -75,6 +81,7 @@ Organization models are used to organize and classify primary models. * [dcim.Manufacturer](../models/dcim/manufacturer.md) * [dcim.Platform](../models/dcim/platform.md) * [dcim.RackRole](../models/dcim/rackrole.md) +* [ipam.ASNRange](../models/ipam/asnrange.md) * [ipam.RIR](../models/ipam/rir.md) * [ipam.Role](../models/ipam/role.md) * [ipam.VLANGroup](../models/ipam/vlangroup.md) @@ -107,11 +114,12 @@ Component models represent individual physical or virtual components belonging t * [dcim.PowerOutlet](../models/dcim/poweroutlet.md) * [dcim.PowerPort](../models/dcim/powerport.md) * [dcim.RearPort](../models/dcim/rearport.md) +* [virtualization.VirtualDisk](../models/virtualization/virtualdisk.md) * [virtualization.VMInterface](../models/virtualization/vminterface.md) ### Component Template Models -These function as templates to effect the replication of device and virtual machine components. Component template models support a limited feature set, including change logging, custom validation, and webhooks. +These function as templates to effect the replication of device and virtual machine components. Component template models support a limited feature set, including change logging, custom validation, and event rules. * [dcim.ConsolePortTemplate](../models/dcim/consoleporttemplate.md) * [dcim.ConsoleServerPortTemplate](../models/dcim/consoleserverporttemplate.md) diff --git a/docs/development/search.md b/docs/development/search.md index 6ccffa7af..1c4eec169 100644 --- a/docs/development/search.md +++ b/docs/development/search.md @@ -17,6 +17,7 @@ class MyModelIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('site', 'device', 'status', 'description') ``` A SearchIndex subclass defines both its model and a list of two-tuples specifying which model fields to be indexed and the weight (precedence) associated with each. Guidance on weight assignment for fields is provided below. diff --git a/docs/development/signals.md b/docs/development/signals.md index 8a5d8e43f..8783b74a3 100644 --- a/docs/development/signals.md +++ b/docs/development/signals.md @@ -9,3 +9,27 @@ This signal is sent by models which inherit from `CustomValidationMixin` at the ### Receivers * `extras.signals.run_custom_validators()` + +## core.job_start + +This signal is sent whenever a [background job](../features/background-jobs.md) is started. + +### Receivers + +* `extras.signals.process_job_start_event_rules()` + +## core.job_end + +This signal is sent whenever a [background job](../features/background-jobs.md) is terminated. + +### Receivers + +* `extras.signals.process_job_end_event_rules()` + +## core.pre_sync + +This signal is sent when the [DataSource](../models/core/datasource.md) model's `sync()` method is called. + +## core.post_sync + +This signal is sent when a [DataSource](../models/core/datasource.md) finishes synchronizing. diff --git a/docs/features/api-integration.md b/docs/features/api-integration.md index 8c0843bfe..94a39d731 100644 --- a/docs/features/api-integration.md +++ b/docs/features/api-integration.md @@ -26,9 +26,9 @@ To learn more about this feature, check out the [GraphQL API documentation](../i ## Webhooks -A webhook is a mechanism for conveying to some external system a change that took place in NetBox. For example, you may want to notify a monitoring system whenever the status of a device is updated in NetBox. This can be done by creating a webhook for the device model in NetBox and identifying the webhook receiver. When NetBox detects a change to a device, an HTTP request containing the details of the change and who made it be sent to the specified receiver. Webhooks are an excellent mechanism for building event-based automation processes. +A webhook is a mechanism for conveying to some external system a change that has taken place in NetBox. For example, you may want to notify a monitoring system whenever the status of a device is updated in NetBox. To do this, first create a [webhook](../models/extras/webhook.md) identifying the remote receiver (URL), HTTP method, and any other necessary parameters. Then, define an [event rule](../models/extras/eventrule.md) which is triggered by device changes to transmit the webhook. -To learn more about this feature, check out the [webhooks documentation](../integrations/webhooks.md). +When NetBox detects a change to a device, an HTTP request containing the details of the change and who made it be sent to the specified receiver. Webhooks are an excellent mechanism for building event-based automation processes. To learn more about this feature, check out the [webhooks documentation](../integrations/webhooks.md). ## Prometheus Metrics diff --git a/docs/features/configuration-rendering.md b/docs/features/configuration-rendering.md index 9d212a34e..a87a6eae4 100644 --- a/docs/features/configuration-rendering.md +++ b/docs/features/configuration-rendering.md @@ -37,6 +37,14 @@ Configuration templates are written in the [Jinja2 templating language](https:// When rendered for a specific NetBox device, the template's `device` variable will be populated with the device instance, and `ntp_servers` will be pulled from the device's available context data. The resulting output will be a valid configuration segment that can be applied directly to a compatible network device. +### Context Data + +The objet for which the configuration is being rendered is made available as template context as `device` or `virtualmachine` for devices and virtual machines, respectively. Additionally, NetBox model classes can be accessed by the app or plugin in which they reside. For example: + +``` +There are {{ dcim.Site.objects.count() }} sites. +``` + ## Rendering Templates ### Device Configurations diff --git a/docs/features/event-rules.md b/docs/features/event-rules.md new file mode 100644 index 000000000..0e9535223 --- /dev/null +++ b/docs/features/event-rules.md @@ -0,0 +1,31 @@ +# Event Rules + +NetBox includes the ability to execute certain functions in response to internal object changes. These include: + +* [Scripts](../customization/custom-scripts.md) execution +* [Webhooks](../integrations/webhooks.md) execution + +For example, suppose you want to automatically configure a monitoring system to start monitoring a device when its operational status is changed to active, and remove it from monitoring for any other status. You can create a webhook in NetBox for the device model and craft its content and destination URL to effect the desired change on the receiving system. You can then associate an event rule with this webhook and the webhook will be sent automatically by NetBox whenever the configured constraints are met. + +Each event must be associated with at least one NetBox object type and at least one event (e.g. create, update, or delete). + +## Conditional Event Rules + +An event rule may include a set of conditional logic expressed in JSON used to control whether an event triggers for a specific object. For example, you may wish to trigger an event for devices only when the `status` field of an object is "active": + +```json +{ + "and": [ + { + "attr": "status.value", + "value": "active" + } + ] +} +``` + +For more detail, see the reference documentation for NetBox's [conditional logic](../reference/conditions.md). + +## Event Rule Processing + +When a change is detected, any resulting events are placed into a Redis queue for processing. This allows the user's request to complete without needing to wait for the outgoing event(s) to be processed. The events are then extracted from the queue by the `rqworker` process. The current event queue and any failed events can be inspected in the admin UI under System > Background Tasks. diff --git a/docs/features/search.md b/docs/features/search.md index 07394af97..92422cad9 100644 --- a/docs/features/search.md +++ b/docs/features/search.md @@ -8,6 +8,9 @@ When entering a search query, the user can choose a specific lookup type: exact Custom fields defined by NetBox administrators are also included in search results if configured with a search weight. Additionally, NetBox plugins can register their own custom models for inclusion alongside core models. +!!! note + NetBox does not index any static choice field's (including custom fields of type "Selection" or "Multiple selection"). + ## Saved Filters Each type of object in NetBox is accompanied by an extensive set of filters, each tied to a specific attribute, which enable the creation of complex queries. Often you'll find that certain queries are used routinely to apply some set of prescribed conditions to a query. Once a set of filters has been applied, NetBox offers the option to save it for future use. diff --git a/docs/features/synchronized-data.md b/docs/features/synchronized-data.md index f266519b6..a070d0ce1 100644 --- a/docs/features/synchronized-data.md +++ b/docs/features/synchronized-data.md @@ -10,7 +10,6 @@ To enable remote data synchronization, the NetBox administrator first designates (Local disk paths are considered "remote" in this context as they exist outside NetBox's database. These paths could also be mapped to external network shares.) - !!! info Data backends which connect to external sources typically require the installation of one or more supporting Python libraries. The Git backend requires the [`dulwich`](https://www.dulwich.io/) package, and the S3 backend requires the [`boto3`](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) package. These must be installed within NetBox's environment to enable these backends. @@ -23,3 +22,6 @@ The following NetBox models can be associated with replicated data files: * Export templates Once a data has been designated for a local instance, its data will be replaced with the content of the replicated file. When the replicated file is updated in the future (via synchronization jobs), the local instance will be flagged as having out-of-date data. A user can then synchronize these objects individually or in bulk to effect the update. This two-stage process ensures that automated synchronization tasks do not immediately affect production data. + +!!! note "Permissions" + A user must be assigned the `core.sync_datasource` permission in order to synchronize local files from a remote data source. diff --git a/docs/features/vpn-tunnels.md b/docs/features/vpn-tunnels.md new file mode 100644 index 000000000..4ebb91ab7 --- /dev/null +++ b/docs/features/vpn-tunnels.md @@ -0,0 +1,49 @@ +# Tunnels + +NetBox can model private tunnels formed among virtual termination points across your network. Typical tunnel implementations include GRE, IP-in-IP, and IPSec. A tunnel may be terminated to two or more device or virtual machine interfaces. For convenient organization, tunnels may be assigned to user-defined groups. + +```mermaid +flowchart TD + Termination1[TunnelTermination] + Termination2[TunnelTermination] + Interface1[Interface] + Interface2[Interface] + Tunnel --> Termination1 & Termination2 + Termination1 --> Interface1 + Termination2 --> Interface2 + Interface1 --> Device + Interface2 --> VirtualMachine + +click Tunnel "../../models/vpn/tunnel/" +click TunnelTermination1 "../../models/vpn/tunneltermination/" +click TunnelTermination2 "../../models/vpn/tunneltermination/" +``` + +# IPSec & IKE + +NetBox includes robust support for modeling IPSec & IKE policies. These are used to define encryption and authentication parameters for IPSec tunnels. + +```mermaid +flowchart TD + subgraph IKEProposals[Proposals] + IKEProposal1[IKEProposal] + IKEProposal2[IKEProposal] + end + subgraph IPSecProposals[Proposals] + IPSecProposal1[IPSecProposal] + IPSecProposal2[IPSecProposal] + end + IKEProposals --> IKEPolicy + IPSecProposals --> IPSecPolicy + IKEPolicy & IPSecPolicy--> IPSecProfile + IPSecProfile --> Tunnel + +click IKEProposal1 "../../models/vpn/ikeproposal/" +click IKEProposal2 "../../models/vpn/ikeproposal/" +click IKEPolicy "../../models/vpn/ikepolicy/" +click IPSecProposal1 "../../models/vpn/ipsecproposal/" +click IPSecProposal2 "../../models/vpn/ipsecproposal/" +click IPSecPolicy "../../models/vpn/ipsecpolicy/" +click IPSecProfile "../../models/vpn/ipsecprofile/" +click Tunnel "../../models/vpn/tunnel/" +``` diff --git a/docs/index.md b/docs/index.md index 6a53403d6..84334337b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ ![NetBox](netbox_logo.svg "NetBox logo"){style="height: 100px; margin-bottom: 3em"} -# The Premiere Network Source of Truth +# The Premier Network Source of Truth NetBox is the leading solution for modeling and documenting modern networks. By combining the traditional disciplines of IP address management (IPAM) and datacenter infrastructure management (DCIM) with powerful APIs and extensions, NetBox provides the ideal "source of truth" to power network automation. Read on to discover why thousands of organizations worldwide put NetBox at the heart of their infrastructure. @@ -32,7 +32,7 @@ In addition to its expansive and robust data model, NetBox offers myriad mechani * Custom fields * Custom model validation * Export templates -* Webhooks +* Event rules * Plugins * REST & GraphQL APIs diff --git a/docs/installation/3-netbox.md b/docs/installation/3-netbox.md index 0713d12e3..4043416a3 100644 --- a/docs/installation/3-netbox.md +++ b/docs/installation/3-netbox.md @@ -227,6 +227,17 @@ sudo sh -c "echo 'boto3' >> /opt/netbox/local_requirements.txt" !!! info These packages were previously required in NetBox v3.5 but now are optional. +### Sentry Integration + +NetBox may be configured to send error reports to [Sentry](../administration/error-reporting.md) for analysis. This integration requires installation of the `sentry-sdk` Python library. + +```no-highlight +sudo sh -c "echo 'sentry-sdk' >> /opt/netbox/local_requirements.txt" +``` + +!!! info + Sentry integration was previously included by default in NetBox v3.6 but is now optional. + ## Run the Upgrade Script Once NetBox has been configured, we're ready to proceed with the actual installation. We'll run the packaged upgrade script (`upgrade.sh`) to perform the following actions: diff --git a/docs/installation/6-ldap.md b/docs/installation/6-ldap.md index 1cd3e1f0a..6ee1c9901 100644 --- a/docs/installation/6-ldap.md +++ b/docs/installation/6-ldap.md @@ -148,6 +148,126 @@ AUTH_LDAP_CACHE_TIMEOUT = 3600 !!! warning Authentication will fail if the groups (the distinguished names) do not exist in the LDAP directory. +## Authenticating with Active Directory + +Integrating Active Directory for authentication can be a bit challenging as it may require handling different login formats. This solution will allow users to log in either using their full User Principal Name (UPN) or their username alone, by filtering the DN according to either the `sAMAccountName` or the `userPrincipalName`. The following configuration options will allow your users to enter their usernames in the format `username` or `username@domain.tld`. + +Just as before, the configuration options are defined in the file ldap_config.py. First, modify the `AUTH_LDAP_USER_SEARCH` option to match the following: + +```python +AUTH_LDAP_USER_SEARCH = LDAPSearch( + "ou=Users,dc=example,dc=com", + ldap.SCOPE_SUBTREE, + "(|(userPrincipalName=%(user)s)(sAMAccountName=%(user)s))" +) +``` + +In addition, `AUTH_LDAP_USER_DN_TEMPLATE` should be set to `None` as described in the previous sections. Next, modify `AUTH_LDAP_USER_ATTR_MAP` to match the following: + +```python +AUTH_LDAP_USER_ATTR_MAP = { + "username": "sAMAccountName", + "email": "mail", + "first_name": "givenName", + "last_name": "sn", +} +``` + +Finally, we need to add one more configuration option, `AUTH_LDAP_USER_QUERY_FIELD`. The following should be added to your LDAP configuration file: + +```python +AUTH_LDAP_USER_QUERY_FIELD = "username" +``` + +With these configuration options, your users will be able to log in either with or without the UPN suffix. + +### Example Configuration + +!!! info + This configuration is intended to serve as a template, but may need to be modified in accordance with your environment. + +```python +import ldap +from django_auth_ldap.config import LDAPSearch, NestedGroupOfNamesType + +# Server URI +AUTH_LDAP_SERVER_URI = "ldaps://ad.example.com:3269" + +# The following may be needed if you are binding to Active Directory. +AUTH_LDAP_CONNECTION_OPTIONS = { + ldap.OPT_REFERRALS: 0 +} + +# Set the DN and password for the NetBox service account. +AUTH_LDAP_BIND_DN = "CN=NETBOXSA,OU=Service Accounts,DC=example,DC=com" +AUTH_LDAP_BIND_PASSWORD = "demo" + +# Include this setting if you want to ignore certificate errors. This might be needed to accept a self-signed cert. +# Note that this is a NetBox-specific setting which sets: +# ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER) +LDAP_IGNORE_CERT_ERRORS = False + +# Include this setting if you want to validate the LDAP server certificates against a CA certificate directory on your server +# Note that this is a NetBox-specific setting which sets: +# ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, LDAP_CA_CERT_DIR) +LDAP_CA_CERT_DIR = '/etc/ssl/certs' + +# Include this setting if you want to validate the LDAP server certificates against your own CA. +# Note that this is a NetBox-specific setting which sets: +# ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, LDAP_CA_CERT_FILE) +LDAP_CA_CERT_FILE = '/path/to/example-CA.crt' + +# This search matches users with the sAMAccountName equal to the provided username. This is required if the user's +# username is not in their DN (Active Directory). +AUTH_LDAP_USER_SEARCH = LDAPSearch( + "ou=Users,dc=example,dc=com", + ldap.SCOPE_SUBTREE, + "(|(userPrincipalName=%(user)s)(sAMAccountName=%(user)s))" +) + +# If a user's DN is producible from their username, we don't need to search. +AUTH_LDAP_USER_DN_TEMPLATE = None + +# You can map user attributes to Django attributes as so. +AUTH_LDAP_USER_ATTR_MAP = { + "username": "sAMAccountName", + "email": "mail", + "first_name": "givenName", + "last_name": "sn", +} + +AUTH_LDAP_USER_QUERY_FIELD = "username" + +# This search ought to return all groups to which the user belongs. django_auth_ldap uses this to determine group +# hierarchy. +AUTH_LDAP_GROUP_SEARCH = LDAPSearch( + "dc=example,dc=com", + ldap.SCOPE_SUBTREE, + "(objectClass=group)" +) +AUTH_LDAP_GROUP_TYPE = NestedGroupOfNamesType() + +# Define a group required to login. +AUTH_LDAP_REQUIRE_GROUP = "CN=NETBOX_USERS,DC=example,DC=com" + +# Mirror LDAP group assignments. +AUTH_LDAP_MIRROR_GROUPS = True + +# Define special user types using groups. Exercise great caution when assigning superuser status. +AUTH_LDAP_USER_FLAGS_BY_GROUP = { + "is_active": "cn=active,ou=groups,dc=example,dc=com", + "is_staff": "cn=staff,ou=groups,dc=example,dc=com", + "is_superuser": "cn=superuser,ou=groups,dc=example,dc=com" +} + +# For more granular permissions, we can map LDAP groups to Django groups. +AUTH_LDAP_FIND_GROUP_PERMS = True + +# Cache groups for one hour to reduce LDAP traffic +AUTH_LDAP_CACHE_TIMEOUT = 3600 +AUTH_LDAP_ALWAYS_UPDATE_USER = True +``` + ## Troubleshooting LDAP `systemctl restart netbox` restarts the NetBox service, and initiates any changes made to `ldap_config.py`. If there are syntax errors present, the NetBox process will not spawn an instance, and errors should be logged to `/var/log/messages`. diff --git a/docs/installation/index.md b/docs/installation/index.md index da50fa5fa..5affdf247 100644 --- a/docs/installation/index.md +++ b/docs/installation/index.md @@ -1,5 +1,8 @@ # Installation +!!! info "NetBox Cloud" + The instructions below are for installing NetBox as a standalone, self-hosted application. For a Cloud-delivered solution, check out [NetBox Cloud](https://netboxlabs.com/netbox-cloud/) by NetBox Labs. + The installation instructions provided here have been tested to work on Ubuntu 22.04 and CentOS 8.3. The particular commands needed to install dependencies on other distributions may vary significantly. Unfortunately, this is outside the control of the NetBox maintainers. Please consult your distribution's documentation for assistance with any errors. diff --git a/docs/installation/upgrading.md b/docs/installation/upgrading.md index a65794037..0aaf94b1e 100644 --- a/docs/installation/upgrading.md +++ b/docs/installation/upgrading.md @@ -59,7 +59,7 @@ Copy `local_requirements.txt`, `configuration.py`, and `ldap_config.py` (if pres ```no-highlight # Set $OLDVER to the NetBox version currently installed -NEWVER=3.4.9 +OLDVER=3.4.9 sudo cp /opt/netbox-$OLDVER/local_requirements.txt /opt/netbox/ sudo cp /opt/netbox-$OLDVER/netbox/netbox/configuration.py /opt/netbox/netbox/netbox/ sudo cp /opt/netbox-$OLDVER/netbox/netbox/ldap_config.py /opt/netbox/netbox/netbox/ diff --git a/docs/integrations/synchronized-data.md b/docs/integrations/synchronized-data.md index 805cbe15b..d72501fd5 100644 --- a/docs/integrations/synchronized-data.md +++ b/docs/integrations/synchronized-data.md @@ -2,6 +2,9 @@ Some NetBox models support automatic synchronization of certain attributes from remote [data sources](../models/core/datasource.md), such as a git repository hosted on GitHub or GitLab. Data from the authoritative remote source is synchronized locally in NetBox as [data files](../models/core/datafile.md). +!!! note "Permissions" + A user must be assigned the `core.sync_datasource` permission in order to synchronize local files from a remote data source. This is accomplished by creating a permission for the "Core > Data Source" object type with the `sync` action, and assigning it to the desired user and/or group. + The following features support the use of synchronized data: * [Configuration templates](../features/configuration-rendering.md) diff --git a/docs/integrations/webhooks.md b/docs/integrations/webhooks.md index 9a1094988..8913fd99c 100644 --- a/docs/integrations/webhooks.md +++ b/docs/integrations/webhooks.md @@ -1,11 +1,9 @@ # Webhooks -NetBox can be configured to transmit outgoing webhooks to remote systems in response to internal object changes. The receiver can act on the data in these webhook messages to perform related tasks. +NetBox can be configured via [Event Rules](../features/event-rules.md) to transmit outgoing webhooks to remote systems in response to internal object changes. The receiver can act on the data in these webhook messages to perform related tasks. For example, suppose you want to automatically configure a monitoring system to start monitoring a device when its operational status is changed to active, and remove it from monitoring for any other status. You can create a webhook in NetBox for the device model and craft its content and destination URL to effect the desired change on the receiving system. Webhooks will be sent automatically by NetBox whenever the configured constraints are met. -Each webhook must be associated with at least one NetBox object type and at least one event (create, update, or delete). Users can specify the receiver URL, HTTP request type (`GET`, `POST`, etc.), content type, and headers. A request body can also be specified; if left blank, this will default to a serialized representation of the affected object. - !!! warning "Security Notice" Webhooks support the inclusion of user-submitted code to generate the URL, custom headers, and payloads, which may pose security risks under certain conditions. Only grant permission to create or modify webhooks to trusted users. @@ -70,26 +68,12 @@ If no body template is specified, the request body will be populated with a JSON } ``` -## Conditional Webhooks - -A webhook may include a set of conditional logic expressed in JSON used to control whether a webhook triggers for a specific object. For example, you may wish to trigger a webhook for devices only when the `status` field of an object is "active": - -```json -{ - "and": [ - { - "attr": "status.value", - "value": "active" - } - ] -} -``` - -For more detail, see the reference documentation for NetBox's [conditional logic](../reference/conditions.md). +!!! note + The setting of conditional webhooks has been moved to [Event Rules](../features/event-rules.md) since NetBox 3.7 ## Webhook Processing -When a change is detected, any resulting webhooks are placed into a Redis queue for processing. This allows the user's request to complete without needing to wait for the outgoing webhook(s) to be processed. The webhooks are then extracted from the queue by the `rqworker` process and HTTP requests are sent to their respective destinations. The current webhook queue and any failed webhooks can be inspected in the admin UI under System > Background Tasks. +Using [Event Rules](../features/event-rules.md), when a change is detected, any resulting webhooks are placed into a Redis queue for processing. This allows the user's request to complete without needing to wait for the outgoing webhook(s) to be processed. The webhooks are then extracted from the queue by the `rqworker` process and HTTP requests are sent to their respective destinations. The current webhook queue and any failed webhooks can be inspected in the admin UI under System > Background Tasks. A request is considered successful if the response has a 2XX status code; otherwise, the request is marked as having failed. Failed requests may be retried manually via the admin UI. diff --git a/docs/introduction.md b/docs/introduction.md index 8f62d842a..b8442dad7 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -19,10 +19,13 @@ NetBox was built specifically to serve the needs of network engineers and operat * Device modeling using pre-defined types * Virtual chassis and device contexts * Network, power, and console cabling with SVG traces +* Breakout cables * Power distribution modeling * Data circuit and provider tracking * Wireless LAN and point-to-point links -* L2 VPN overlays +* VPN tunnels +* IKE & IPSec policies +* Layer 2 VPN overlays * FHRP groups (VRRP, HSRP, etc.) * Application service bindings * Virtual machines & clusters @@ -30,13 +33,14 @@ NetBox was built specifically to serve the needs of network engineers and operat * Tenant ownership assignment * Device & VM configuration contexts for advanced configuration rendering * Custom fields for data model extension -* Custom validation rules +* Custom validation & protection rules * Custom reports & scripts executable directly within the UI * Extensive plugin framework for adding custom functionality * Single sign-on (SSO) authentication * Robust object-based permissions * Detailed, automatic change logging * Global search engine +* Event-driven scripts & webhooks ## What NetBox Is Not diff --git a/docs/media/admin_ui_run_permission.png b/docs/media/admin_ui_run_permission.png index a7aaa79b8..9c5b3e733 100644 Binary files a/docs/media/admin_ui_run_permission.png and b/docs/media/admin_ui_run_permission.png differ diff --git a/docs/media/misc/netbox_logo.png b/docs/media/misc/netbox_logo.png new file mode 100644 index 000000000..c6e0a58e6 Binary files /dev/null and b/docs/media/misc/netbox_logo.png differ diff --git a/docs/models/dcim/interface.md b/docs/models/dcim/interface.md index 42b570964..3667dabd5 100644 --- a/docs/models/dcim/interface.md +++ b/docs/models/dcim/interface.md @@ -77,6 +77,9 @@ If selected, this component will be treated as if a cable has been connected. Virtual interfaces can be bound to a physical parent interface. This is helpful for modeling virtual interfaces which employ encapsulation on a physical interface, such as an 802.1Q VLAN-tagged subinterface. +!!! note + An interface with one or more child interfaces assigned cannot be deleted until all its child interfaces have been deleted or reassigned. + ### Bridged Interface Interfaces can be bridged to other interfaces on a device in two manners: symmetric or grouped. diff --git a/docs/models/dcim/inventoryitem.md b/docs/models/dcim/inventoryitem.md index f61586eda..b9029f75c 100644 --- a/docs/models/dcim/inventoryitem.md +++ b/docs/models/dcim/inventoryitem.md @@ -19,7 +19,7 @@ The parent inventory item to which this item is assigned (optional). ### Name -The inventory item's name. Must be unique to the parent device. +The inventory item's name. If the inventory item is assigned to a parent item, its name must be unique among its siblings (all items belonging to the same parent item). ### Label diff --git a/docs/models/dcim/platform.md b/docs/models/dcim/platform.md index dc332da74..0914d0aa6 100644 --- a/docs/models/dcim/platform.md +++ b/docs/models/dcim/platform.md @@ -23,17 +23,3 @@ If designated, this platform will be available for use only to devices assigned ### Configuration Template The default [configuration template](../extras/configtemplate.md) for devices assigned to this platform. - -### NAPALM Driver - -!!! warning "Deprecated Field" - NAPALM integration was removed from NetBox core in v3.5 and is now available as a [plugin](https://github.com/netbox-community/netbox-napalm). This field will be removed in NetBox v3.6. - -The [NAPALM driver](https://napalm.readthedocs.io/en/latest/support/index.html) associated with this platform. - -### NAPALM Arguments - -!!! warning "Deprecated Field" - NAPALM integration was removed from NetBox core in v3.5 and is now available as a [plugin](https://github.com/netbox-community/netbox-napalm). This field will be removed in NetBox v3.6. - -Any additional arguments to send when invoking the NAPALM driver assigned to this platform. diff --git a/docs/models/extras/customfield.md b/docs/models/extras/customfield.md index bf0c4755a..e68ddb79d 100644 --- a/docs/models/extras/customfield.md +++ b/docs/models/extras/customfield.md @@ -64,16 +64,25 @@ Defines how filters are evaluated against custom field values. | Loose | Match any occurrence of the value | | Exact | Match only the complete field value | -### UI Visibility +### UI Visible -Controls how and whether the custom field is displayed within the NetBox user interface. +Controls whether the custom field is displayed for objects within the NetBox user interface. -| Option | Description | -|-------------------|--------------------------------------------------| -| Read/write | Display and permit editing (default) | -| Read-only | Display field but disallow editing | -| Hidden | Do not display field in the UI | -| Hidden (if unset) | Display in the UI only when a value has been set | +| Option | Description | +|--------|----------------------------------------------------------------| +| Always | The field is always displayed when viewing an object (default) | +| If set | The field is displayed only if a value has been defined | +| Hidden | The field is not displayed when viewing an object | + +### UI Editable + +Controls whether the custom field is editable on objects within the NetBox user interface. + +| Option | Description | +|--------|------------------------------------------------------------------------------| +| Yes | The field's value may be changed when editing an object (default) | +| No | The field's value is displayed when editing an object but may not be altered | +| Hidden | The field is not displayed when editing an object | ### Default diff --git a/docs/models/extras/eventrule.md b/docs/models/extras/eventrule.md new file mode 100644 index 000000000..c105a2630 --- /dev/null +++ b/docs/models/extras/eventrule.md @@ -0,0 +1,35 @@ +# EventRule + +An event rule is a mechanism for automatically taking an action (such as running a script or sending a webhook) in response to an event in NetBox. For example, you may want to notify a monitoring system whenever the status of a device is updated in NetBox. This can be done by creating an event for device objects and designating a webhook to be transmitted. When NetBox detects a change to a device, an HTTP request containing the details of the change and who made it be sent to the specified receiver. + +See the [event rules documentation](../../features/event-rules.md) for more information. + +## Fields + +### Name + +A unique human-friendly name. + +### Content Types + +The type(s) of object in NetBox that will trigger the rule. + +### Enabled + +If not selected, the event rule will not be processed. + +### Events + +The events which will trigger the rule. At least one event type must be selected. + +| Name | Description | +|------------|--------------------------------------| +| Creations | A new object has been created | +| Updates | An existing object has been modified | +| Deletions | An object has been deleted | +| Job starts | A job for an object starts | +| Job ends | A job for an object terminates | + +### Conditions + +A set of [prescribed conditions](../../reference/conditions.md) against which the triggering object will be evaluated. If the conditions are defined but not met by the object, no action will be taken. An event rule that does not define any conditions will _always_ trigger. diff --git a/docs/models/ipam/l2vpntermination.md b/docs/models/ipam/l2vpntermination.md deleted file mode 100644 index c3c27b8d2..000000000 --- a/docs/models/ipam/l2vpntermination.md +++ /dev/null @@ -1,18 +0,0 @@ -# L2VPN Termination - -A L2VPN termination is the attachment of an [L2VPN](./l2vpn.md) to an [interface](../dcim/interface.md) or [VLAN](./vlan.md). Note that the L2VPNs of the following types may have only two terminations assigned to them: - -* VPWS -* EPL -* EP-LAN -* EP-TREE - -## Fields - -### L2VPN - -The [L2VPN](./l2vpn.md) instance. - -### VLAN or Interface - -The [VLAN](./vlan.md), [device interface](../dcim/interface.md), or [virtual machine interface](../virtualization/virtualmachine.md) attached to the L2VPN. diff --git a/docs/models/virtualization/virtualdisk.md b/docs/models/virtualization/virtualdisk.md new file mode 100644 index 000000000..9d256bb66 --- /dev/null +++ b/docs/models/virtualization/virtualdisk.md @@ -0,0 +1,13 @@ +# Virtual Disks + +A virtual disk is used to model discrete virtual hard disks assigned to [virtual machines](./virtualmachine.md). + +## Fields + +### Name + +A human-friendly name that is unique to the assigned virtual machine. + +### Size + +The allocated disk size, in gigabytes. diff --git a/docs/models/virtualization/vminterface.md b/docs/models/virtualization/vminterface.md index 264fb95ba..d923bdd5d 100644 --- a/docs/models/virtualization/vminterface.md +++ b/docs/models/virtualization/vminterface.md @@ -16,6 +16,9 @@ The interface's name. Must be unique to the assigned VM. Identifies the parent interface of a subinterface (e.g. used to employ encapsulation). +!!! note + An interface with one or more child interfaces assigned cannot be deleted until all its child interfaces have been deleted or reassigned. + ### Bridged Interface An interface on the same VM with which this interface is bridged. diff --git a/docs/models/vpn/ikepolicy.md b/docs/models/vpn/ikepolicy.md new file mode 100644 index 000000000..7b739072b --- /dev/null +++ b/docs/models/vpn/ikepolicy.md @@ -0,0 +1,25 @@ +# IKE Policies + +An [Internet Key Exhcnage (IKE)](https://en.wikipedia.org/wiki/Internet_Key_Exchange) policy defines an IKE version, mode, and set of [proposals](./ikeproposal.md) to be used in IKE negotiation. These policies are referenced by [IPSec profiles](./ipsecprofile.md). + +## Fields + +### Name + +The unique user-assigned name for the policy. + +### Version + +The IKE version employed (v1 or v2). + +### Mode + +The IKE mode employed (main or aggressive). + +### Proposals + +One or more [IKE proposals](./ikeproposal.md) supported for use by this policy. + +### Pre-shared Key + +A pre-shared secret key associated with this policy (optional). diff --git a/docs/models/vpn/ikeproposal.md b/docs/models/vpn/ikeproposal.md new file mode 100644 index 000000000..312ec1f6c --- /dev/null +++ b/docs/models/vpn/ikeproposal.md @@ -0,0 +1,39 @@ +# IKE Proposals + +An [Internet Key Exhcnage (IKE)](https://en.wikipedia.org/wiki/Internet_Key_Exchange) proposal defines a set of parameters used to establish a secure bidirectional connection across an untrusted medium, such as the Internet. IKE proposals defined in NetBox can be referenced by [IKE policies](./ikepolicy.md), which are in turn employed by [IPSec profiles](./ipsecprofile.md). + +!!! note + Some platforms refer to IKE proposals as [ISAKMP](https://en.wikipedia.org/wiki/Internet_Security_Association_and_Key_Management_Protocol), which is a framework for authentication and key exchange which employs IKE. + +## Fields + +### Name + +The unique user-assigned name for the proposal. + +### Authentication Method + +The strategy employed for authenticating the IKE peer. Available options are listed below. + +| Name | +|----------------| +| Pre-shared key | +| Certificate | +| RSA signature | +| DSA signature | + +### Encryption Algorithm + +The protocol employed for data encryption. Options include DES, 3DES, and various flavors of AES. + +### Authentication Algorithm + +The mechanism employed to ensure data integrity. Options include MD5 and SHA HMAC implementations. Specifying an authentication algorithm is optional, as some encryption algorithms (e.g. AES-GCM) provide authentication natively. + +### Group + +The [Diffie-Hellman group](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange) supported by the proposal. Group IDs are [managed by IANA](https://www.iana.org/assignments/ikev2-parameters/ikev2-parameters.xhtml#ikev2-parameters-8). + +### SA Lifetime + +The maximum lifetime for the IKE security association (SA), in seconds. diff --git a/docs/models/vpn/ipsecpolicy.md b/docs/models/vpn/ipsecpolicy.md new file mode 100644 index 000000000..3283d3b23 --- /dev/null +++ b/docs/models/vpn/ipsecpolicy.md @@ -0,0 +1,17 @@ +# IPSec Policy + +An [IPSec](https://en.wikipedia.org/wiki/IPsec) policy defines a set of [proposals](./ikeproposal.md) to be used in the formation of IPSec tunnels. A perfect forward secrecy (PFS) group may optionally also be defined. These policies are referenced by [IPSec profiles](./ipsecprofile.md). + +## Fields + +### Name + +The unique user-assigned name for the policy. + +### Proposals + +One or more [IPSec proposals](./ipsecproposal.md) supported for use by this policy. + +### PFS Group + +The [perfect forward secrecy (PFS)](https://en.wikipedia.org/wiki/Forward_secrecy) group supported by this policy (optional). diff --git a/docs/models/vpn/ipsecprofile.md b/docs/models/vpn/ipsecprofile.md new file mode 100644 index 000000000..1ad1ce7d5 --- /dev/null +++ b/docs/models/vpn/ipsecprofile.md @@ -0,0 +1,21 @@ +# IPSec Profile + +An [IPSec](https://en.wikipedia.org/wiki/IPsec) profile defines an [IKE policy](./ikepolicy.md), [IPSec policy](./ipsecpolicy.md), and IPSec mode used for establishing an IPSec tunnel. + +## Fields + +### Name + +The unique user-assigned name for the profile. + +### Mode + +The IPSec mode employed by the profile: Encapsulating Security Payload (ESP) or Authentication Header (AH). + +### IKE Policy + +The [IKE policy](./ikepolicy.md) associated with the profile. + +### IPSec Policy + +The [IPSec policy](./ipsecpolicy.md) associated with the profile. diff --git a/docs/models/vpn/ipsecproposal.md b/docs/models/vpn/ipsecproposal.md new file mode 100644 index 000000000..ad3279d7a --- /dev/null +++ b/docs/models/vpn/ipsecproposal.md @@ -0,0 +1,31 @@ +# IPSec Proposal + +An [IPSec](https://en.wikipedia.org/wiki/IPsec) proposal defines a set of parameters used in negotiating security associations for IPSec tunnels. IPSec proposals defined in NetBox can be referenced by [IPSec policies](./ipsecpolicy.md), which are in turn employed by [IPSec profiles](./ipsecprofile.md). + +## Fields + +### Name + +The unique user-assigned name for the proposal. + +### Encryption Algorithm + +The protocol employed for data encryption. Options include DES, 3DES, and various flavors of AES. + +!!! note + If an encryption algorithm is not specified, an authentication algorithm must be specified. + +### Authentication Algorithm + +The mechanism employed to ensure data integrity. Options include MD5 and SHA HMAC implementations. + +!!! note + If an authentication algorithm is not specified, an encryption algorithm must be specified. + +### SA Lifetime (Seconds) + +The maximum amount of time for which the security association (SA) may be active, in seconds. + +### SA Lifetime (Data) + +The maximum amount of data which can be transferred within the security association (SA) before it must be rebuilt, in kilobytes. diff --git a/docs/models/ipam/l2vpn.md b/docs/models/vpn/l2vpn.md similarity index 81% rename from docs/models/ipam/l2vpn.md rename to docs/models/vpn/l2vpn.md index e7ee1e187..79b7435bf 100644 --- a/docs/models/ipam/l2vpn.md +++ b/docs/models/vpn/l2vpn.md @@ -1,6 +1,6 @@ # L2VPN -A L2VPN object is NetBox is a representation of a layer 2 bridge technology such as VXLAN, VPLS, or EPL. Each L2VPN can be identified by name as well as by an optional unique identifier (VNI would be an example). Once created, L2VPNs can be terminated to [interfaces](../dcim/interface.md) and [VLANs](./vlan.md). +A L2VPN object is NetBox is a representation of a layer 2 bridge technology such as VXLAN, VPLS, or EPL. Each L2VPN can be identified by name as well as by an optional unique identifier (VNI would be an example). Once created, L2VPNs can be terminated to [interfaces](../dcim/interface.md) and [VLANs](../ipam/vlan.md). ## Fields @@ -38,4 +38,4 @@ An optional numeric identifier. This can be used to track a pseudowire ID, for e ### Import & Export Targets -The [route targets](./routetarget.md) associated with this L2VPN to control the import and export of forwarding information. +The [route targets](../ipam/routetarget.md) associated with this L2VPN to control the import and export of forwarding information. diff --git a/docs/models/vpn/l2vpntermination.md b/docs/models/vpn/l2vpntermination.md new file mode 100644 index 000000000..e20677d21 --- /dev/null +++ b/docs/models/vpn/l2vpntermination.md @@ -0,0 +1,18 @@ +# L2VPN Termination + +A L2VPN termination is the attachment of an [L2VPN](./l2vpn.md) to an [interface](../dcim/interface.md) or [VLAN](../ipam/vlan.md). Note that the L2VPNs of the following types may have only two terminations assigned to them: + +* VPWS +* EPL +* EP-LAN +* EP-TREE + +## Fields + +### L2VPN + +The [L2VPN](./l2vpn.md) instance. + +### VLAN or Interface + +The [VLAN](../ipam/vlan.md), [device interface](../dcim/interface.md), or [virtual machine interface](../virtualization/virtualmachine.md) attached to the L2VPN. diff --git a/docs/models/vpn/tunnel.md b/docs/models/vpn/tunnel.md new file mode 100644 index 000000000..31625f7d6 --- /dev/null +++ b/docs/models/vpn/tunnel.md @@ -0,0 +1,38 @@ +# Tunnels + +A tunnel represents a private virtual connection established among two or more endpoints across a shared infrastructure by employing protocol encapsulation. Common encapsulation techniques include [Generic Routing Encapsulation (GRE)](https://en.wikipedia.org/wiki/Generic_Routing_Encapsulation), [IP-in-IP](https://en.wikipedia.org/wiki/IP_in_IP), and [IPSec](https://en.wikipedia.org/wiki/IPsec). NetBox supports modeling both peer-to-peer and hub-and-spoke tunnel topologies. + +Device and virtual machine interfaces are associated to tunnels by creating [tunnel terminations](./tunneltermination.md). + +## Fields + +### Name + +A unique name assigned to the tunnel for identification. + +### Status + +The operational status of the tunnel. By default, the following statuses are available: + +* Planned +* Active +* Disabled + +!!! tip "Custom tunnel statuses" + Additional tunnel statuses may be defined by setting `Tunnel.status` under the [`FIELD_CHOICES`](../../configuration/data-validation.md#field_choices) configuration parameter. + +### Group + +The [administrative group](./tunnelgroup.md) to which this tunnel is assigned (optional). + +### Encapsulation + +The encapsulation protocol or technique employed to effect the tunnel. NetBox supports GRE, IP-in-IP, and IPSec encapsulations. + +### Tunnel ID + +An optional numeric identifier for the tunnel. + +### IPSec Profile + +For IPSec tunnels, this is the [IPSec Profile](./ipsecprofile.md) employed to negotiate security associations. diff --git a/docs/models/vpn/tunnelgroup.md b/docs/models/vpn/tunnelgroup.md new file mode 100644 index 000000000..7e3a5c3cc --- /dev/null +++ b/docs/models/vpn/tunnelgroup.md @@ -0,0 +1,13 @@ +# Tunnel Group + +[Tunnels](./tunnel.md) can be arranged into administrative groups for organization. For example, you might crete a group to manage all peer-to-peer tunnels inside a mesh network. The assignment of a tunnel to a group is optional. + +## Fields + +### Name + +A unique human-friendly name. + +### Slug + +A unique URL-friendly identifier. (This value can be used for filtering.) diff --git a/docs/models/vpn/tunneltermination.md b/docs/models/vpn/tunneltermination.md new file mode 100644 index 000000000..8400eaa86 --- /dev/null +++ b/docs/models/vpn/tunneltermination.md @@ -0,0 +1,30 @@ +# Tunnel Terminations + +A tunnel termination connects a device or virtual machine interface to a [tunnel](./tunnel.md). The tunnel must be created before any terminations may be added. + +## Fields + +### Tunnel + +The [tunnel](./tunnel.md) to which this termination is made. + +### Role + +The functional role of the attached interface. The following options are available: + +| Name | Description | +|-------|--------------------------------------------------| +| Peer | An endpoint in a point-to-point or mesh topology | +| Hub | A central point in a hub-and-spoke topology | +| Spoke | An edge point in a hub-and-spoke topology | + +!!! note + Multiple hub terminations may be attached to a tunnel. + +### Termination + +The device or virtual machine interface terminated to the tunnel. + +### Outside IP + +The public or underlay IP address with which this termination is associated. This is the IP to which peers will route tunneled traffic. diff --git a/docs/plugins/development/data-backends.md b/docs/plugins/development/data-backends.md new file mode 100644 index 000000000..feffa5bed --- /dev/null +++ b/docs/plugins/development/data-backends.md @@ -0,0 +1,23 @@ +# Data Backends + +[Data sources](../../models/core/datasource.md) can be defined to reference data which exists on systems of record outside NetBox, such as a git repository or Amazon S3 bucket. Plugins can register their own backend classes to introduce support for additional resource types. This is done by subclassing NetBox's `DataBackend` class. + +```python title="data_backends.py" +from netbox.data_backends import DataBackend + +class MyDataBackend(DataBackend): + name = 'mybackend' + label = 'My Backend' + ... +``` + +To register one or more data backends with NetBox, define a list named `backends` at the end of this file: + +```python title="data_backends.py" +backends = [MyDataBackend] +``` + +!!! tip + The path to the list of search indexes can be modified by setting `data_backends` in the PluginConfig instance. + +::: core.data_backends.DataBackend diff --git a/docs/plugins/development/index.md b/docs/plugins/development/index.md index dcbad9d8d..4db1d5ef6 100644 --- a/docs/plugins/development/index.md +++ b/docs/plugins/development/index.md @@ -69,7 +69,7 @@ The plugin source directory contains all the actual Python code and other resour The `PluginConfig` class is a NetBox-specific wrapper around Django's built-in [`AppConfig`](https://docs.djangoproject.com/en/stable/ref/applications/) class. It is used to declare NetBox plugin functionality within a Python package. Each plugin should provide its own subclass, defining its name, metadata, and default and required configuration parameters. An example is below: ```python -from extras.plugins import PluginConfig +from netbox.plugins import PluginConfig class FooBarConfig(PluginConfig): name = 'foo_bar' @@ -109,6 +109,7 @@ NetBox looks for the `config` variable within a plugin's `__init__.py` to load i | `middleware` | A list of middleware classes to append after NetBox's build-in middleware | | `queues` | A list of custom background task queues to create | | `search_extensions` | The dotted path to the list of search index classes (default: `search.indexes`) | +| `data_backends` | The dotted path to the list of data source backend classes (default: `data_backends.backends`) | | `template_extensions` | The dotted path to the list of template extension classes (default: `template_content.template_extensions`) | | `menu_items` | The dotted path to the list of menu items provided by the plugin (default: `navigation.menu_items`) | | `graphql_schema` | The dotted path to the plugin's GraphQL schema class, if any (default: `graphql.schema`) | @@ -120,7 +121,7 @@ All required settings must be configured by the user. If a configuration paramet Plugin configuration parameters can be accessed using the `get_plugin_config()` function. For example: ```python - from extras.plugins import get_plugin_config + from netbox.plugins import get_plugin_config get_plugin_config('my_plugin', 'verbose_name') ``` diff --git a/docs/plugins/development/models.md b/docs/plugins/development/models.md index 8394813f8..902ee9c82 100644 --- a/docs/plugins/development/models.md +++ b/docs/plugins/development/models.md @@ -60,6 +60,10 @@ class MyModel(NetBoxModel): This attribute specifies the URL at which the documentation for this model can be reached. By default, it will return `/static/docs/models///`. Plugin models can override this to return a custom URL. For example, you might direct the user to your plugin's documentation hosted on [ReadTheDocs](https://readthedocs.org/). +#### `_netbox_private` + +By default, any model introduced by a plugin will appear in the list of available object types e.g. when creating a custom field or certain dashboard widgets. If your model is intended only for "behind the scenes use" and should not be exposed to end users, set `_netbox_private` to True. This will omit it from the list of general-purpose object types. + ### Enabling Features Individually If you prefer instead to enable only a subset of these features for a plugin model, NetBox provides a discrete "mix-in" class for each feature. You can subclass each of these individually when defining your model. (Your model will also need to inherit from Django's built-in `Model` class.) @@ -119,14 +123,17 @@ For more information about database migrations, see the [Django documentation](h ::: netbox.models.features.CustomValidationMixin +::: netbox.models.features.EventRulesMixin + +!!! note + `EventRulesMixin` was renamed from `WebhooksMixin` in NetBox v3.7. + ::: netbox.models.features.ExportTemplatesMixin ::: netbox.models.features.JournalingMixin ::: netbox.models.features.TagsMixin -::: netbox.models.features.WebhooksMixin - ## Choice Sets For model fields which support the selection of one or more values from a predefined list of choices, NetBox provides the `ChoiceSet` utility class. This can be used in place of a regular choices tuple to provide enhanced functionality, namely dynamic configuration and colorization. (See [Django's documentation](https://docs.djangoproject.com/en/stable/ref/models/fields/#choices) on the `choices` parameter for supported model fields.) diff --git a/docs/plugins/development/navigation.md b/docs/plugins/development/navigation.md index 3e7762184..dc895b2ab 100644 --- a/docs/plugins/development/navigation.md +++ b/docs/plugins/development/navigation.md @@ -5,7 +5,7 @@ A plugin can register its own submenu as part of NetBox's navigation menu. This is done by defining a variable named `menu` in `navigation.py`, pointing to an instance of the `PluginMenu` class. Each menu must define a label and grouped menu items (discussed below), and may optionally specify an icon. An example is shown below. ```python title="navigation.py" -from extras.plugins import PluginMenu +from netbox.plugins import PluginMenu menu = PluginMenu( label='My Plugin', @@ -49,7 +49,7 @@ menu_items = (item1, item2, item3) Each menu item represents a link and (optionally) a set of buttons comprising one entry in NetBox's navigation menu. Menu items are defined as PluginMenuItem instances. An example is shown below. ```python title="navigation.py" -from extras.plugins import PluginMenuButton, PluginMenuItem +from netbox.plugins import PluginMenuButton, PluginMenuItem from utilities.choices import ButtonColorChoices item1 = PluginMenuItem( @@ -64,12 +64,15 @@ item1 = PluginMenuItem( A `PluginMenuItem` has the following attributes: -| Attribute | Required | Description | -|---------------|----------|------------------------------------------------------| -| `link` | Yes | Name of the URL path to which this menu item links | -| `link_text` | Yes | The text presented to the user | -| `permissions` | - | A list of permissions required to display this link | -| `buttons` | - | An iterable of PluginMenuButton instances to include | +| Attribute | Required | Description | +|---------------|----------|----------------------------------------------------------------------------------------------------------| +| `link` | Yes | Name of the URL path to which this menu item links | +| `link_text` | Yes | The text presented to the user | +| `permissions` | - | A list of permissions required to display this link | +| `staff_only` | - | Display only for users who have `is_staff` set to true (any specified permissions will also be required) | +| `buttons` | - | An iterable of PluginMenuButton instances to include | + +!!! info "The `staff_only` attribute was introduced in NetBox v3.6.1." ## Menu Buttons diff --git a/docs/plugins/development/search.md b/docs/plugins/development/search.md index e3b861f00..e54844cf0 100644 --- a/docs/plugins/development/search.md +++ b/docs/plugins/development/search.md @@ -14,8 +14,11 @@ class MyModelIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('site', 'device', 'status', 'description') ``` +Fields listed in `display_attrs` will not be cached for search, but will be displayed alongside the object when it appears in global search results. This is helpful for conveying to the user additional information about an object. + To register one or more indexes with NetBox, define a list named `indexes` at the end of this file: ```python diff --git a/docs/plugins/development/tables.md b/docs/plugins/development/tables.md index f846139f0..9d57a9603 100644 --- a/docs/plugins/development/tables.md +++ b/docs/plugins/development/tables.md @@ -87,3 +87,28 @@ The table column classes listed below are supported for use in plugins. These cl options: members: - __init__ + +## Extending Core Tables + +!!! info "This feature was introduced in NetBox v3.7." + +Plugins can register their own custom columns on core tables using the `register_table_column()` utility function. This allows a plugin to attach additional information, such as relationships to its own models, to built-in object lists. + +```python +import django_tables2 +from django.utils.translation import gettext_lazy as _ + +from dcim.tables import SiteTable +from utilities.tables import register_table_column + +mycol = django_tables2.Column( + verbose_name=_('My Column'), + accessor=django_tables2.A('description') +) + +register_table_column(mycol, 'foo', SiteTable) +``` + +You'll typically want to define an accessor identifying the desired model field or relationship when defining a custom column. See the [django-tables2 documentation](https://django-tables2.readthedocs.io/) for more information on creating custom columns. + +::: utilities.tables.register_table_column diff --git a/docs/plugins/development/views.md b/docs/plugins/development/views.md index 3d0e87a68..1730b0ebd 100644 --- a/docs/plugins/development/views.md +++ b/docs/plugins/development/views.md @@ -206,7 +206,7 @@ For example, accessing `{{ request.user }}` within a template will return the cu Declared subclasses should be gathered into a list or tuple for integration with NetBox. By default, NetBox looks for an iterable named `template_extensions` within a `template_content.py` file. (This can be overridden by setting `template_extensions` to a custom value on the plugin's PluginConfig.) An example is below. ```python -from extras.plugins import PluginTemplateExtension +from netbox.plugins import PluginTemplateExtension from .models import Animal class SiteAnimalCount(PluginTemplateExtension): diff --git a/docs/reference/conditions.md b/docs/reference/conditions.md index 514006b01..fc571c05e 100644 --- a/docs/reference/conditions.md +++ b/docs/reference/conditions.md @@ -116,7 +116,7 @@ Multiple conditions can be combined into nested sets using AND or OR logic. This ] }, { - "attr": "tags", + "attr": "tags.slug", "value": "exempt", "op": "contains" } diff --git a/docs/reference/filtering.md b/docs/reference/filtering.md index 7ddda6f3c..5a672ed11 100644 --- a/docs/reference/filtering.md +++ b/docs/reference/filtering.md @@ -61,13 +61,14 @@ These lookup expressions can be applied by adding a suffix to the desired field' Numeric based fields (ASN, VLAN ID, etc) support these lookup expressions: -| Filter | Description | -|--------|-------------| -| `n` | Not equal to | -| `lt` | Less than | -| `lte` | Less than or equal to | -| `gt` | Greater than | -| `gte` | Greater than or equal to | +| Filter | Description | +|---------|--------------------------| +| `n` | Not equal to | +| `lt` | Less than | +| `lte` | Less than or equal to | +| `gt` | Greater than | +| `gte` | Greater than or equal to | +| `empty` | Is empty/null (boolean) | Here is an example of a numeric field lookup expression that will return all VLANs with a VLAN ID greater than 900: @@ -79,18 +80,18 @@ GET /api/ipam/vlans/?vid__gt=900 String based (char) fields (Name, Address, etc) support these lookup expressions: -| Filter | Description | -|--------|-------------| -| `n` | Not equal to | -| `ic` | Contains (case-insensitive) | -| `nic` | Does not contain (case-insensitive) | -| `isw` | Starts with (case-insensitive) | -| `nisw` | Does not start with (case-insensitive) | -| `iew` | Ends with (case-insensitive) | -| `niew` | Does not end with (case-insensitive) | -| `ie` | Exact match (case-insensitive) | -| `nie` | Inverse exact match (case-insensitive) | -| `empty` | Is empty (boolean) | +| Filter | Description | +|---------|----------------------------------------| +| `n` | Not equal to | +| `ic` | Contains (case-insensitive) | +| `nic` | Does not contain (case-insensitive) | +| `isw` | Starts with (case-insensitive) | +| `nisw` | Does not start with (case-insensitive) | +| `iew` | Ends with (case-insensitive) | +| `niew` | Does not end with (case-insensitive) | +| `ie` | Exact match (case-insensitive) | +| `nie` | Inverse exact match (case-insensitive) | +| `empty` | Is empty/null (boolean) | Here is an example of a lookup expression on a string field that will return all devices with `switch` in the name: diff --git a/docs/reference/markdown.md b/docs/reference/markdown.md index 7f280686d..0759fa2ec 100644 --- a/docs/reference/markdown.md +++ b/docs/reference/markdown.md @@ -171,23 +171,23 @@ Some text to show that the reference links can follow later. Here's the NetBox logo (hover to see the title text): Inline-style: -![alt text](/static/netbox_logo.png "Logo Title Text 1") +![alt text](/media/misc/netbox_logo.png "Logo Title Text 1") Reference-style: ![alt text][logo] -[logo]: /static/netbox_logo.png "Logo Title Text 2" +[logo]: /media/misc/netbox_logo.png "Logo Title Text 2" ``` Here's the NetBox logo (hover to see the title text): Inline-style: -![alt text](/static/netbox_logo.png "Logo Title Text 1") +![alt text](../media/misc/netbox_logo.png "Logo Title Text 1") Reference-style: ![alt text][logo] -[logo]: /static/netbox_logo.png "Logo Title Text 2" +[logo]: ../media/misc/netbox_logo.png "Logo Title Text 2" diff --git a/docs/release-notes/index.md b/docs/release-notes/index.md index 4d812938f..f01d3160f 100644 --- a/docs/release-notes/index.md +++ b/docs/release-notes/index.md @@ -10,6 +10,26 @@ Minor releases are published in April, August, and December of each calendar yea This page contains a history of all major and minor releases since NetBox v2.0. For more detail on a specific patch release, please see the release notes page for that specific minor release. +#### [Version 3.7](./version-3.7.md) (December 2023) + +* VPN Tunnels ([#9816](https://github.com/netbox-community/netbox/issues/9816)) +* Event Rules ([#14132](https://github.com/netbox-community/netbox/issues/14132)) +* Virtual Machine Disks ([#8356](https://github.com/netbox-community/netbox/issues/8356)) +* Object Protection Rules ([#10244](https://github.com/netbox-community/netbox/issues/10244)) +* Improved Custom Field Visibility Controls ([#13299](https://github.com/netbox-community/netbox/issues/13299)) +* Improved Global Search Results ([#14134](https://github.com/netbox-community/netbox/issues/14134)) +* Table Column Registration for Plugins ([#14173](https://github.com/netbox-community/netbox/issues/14173)) +* Data Backend Registration for Plugins ([#13381](https://github.com/netbox-community/netbox/issues/13381)) + +#### [Version 3.6](./version-3.6.md) (August 2023) + +* Relocated Admin UI Views ([#12589](https://github.com/netbox-community/netbox/issues/12589), [#12590](https://github.com/netbox-community/netbox/issues/12590), [#12591](https://github.com/netbox-community/netbox/issues/12591), [#13044](https://github.com/netbox-community/netbox/issues/13044)) +* Configurable Default Permissions ([#13038](https://github.com/netbox-community/netbox/issues/13038)) +* User Bookmarks ([#8248](https://github.com/netbox-community/netbox/issues/8248)) +* Custom Field Choice Sets ([#12988](https://github.com/netbox-community/netbox/issues/12988)) +* Pre-Defined Location Choices for Custom Fields ([#12194](https://github.com/netbox-community/netbox/issues/12194)) +* Restrict Tag Usage by Object Type ([#11541](https://github.com/netbox-community/netbox/issues/11541)) + #### [Version 3.5](./version-3.5.md) (April 2023) * Customizable Dashboard ([#9416](https://github.com/netbox-community/netbox/issues/9416)) diff --git a/docs/release-notes/version-3.5.md b/docs/release-notes/version-3.5.md index f7778275b..959247b30 100644 --- a/docs/release-notes/version-3.5.md +++ b/docs/release-notes/version-3.5.md @@ -1,6 +1,32 @@ # NetBox v3.5 -## v3.5.9 (FUTURE) +## v3.5.9 (2023-08-28) + +### Enhancements + +* [#12489](https://github.com/netbox-community/netbox/issues/12489) - Dynamically render location and device lists under site and location views +* [#12825](https://github.com/netbox-community/netbox/issues/12825) - Display assigned values count per obejct type under custom field view +* [#13313](https://github.com/netbox-community/netbox/issues/13313) - Enable filtering IP ranges by containing prefix +* [#13415](https://github.com/netbox-community/netbox/issues/13415) - Include request object in custom link renderer on tables +* [#13536](https://github.com/netbox-community/netbox/issues/13536) - Move child VLANs list to a separate tab under VLAN group view +* [#13542](https://github.com/netbox-community/netbox/issues/13542) - Pass additional HTTP headers through to custom script context +* [#13585](https://github.com/netbox-community/netbox/issues/13585) - Introduce `empty` lookup for numeric value filters + +### Bug Fixes + +* [#11272](https://github.com/netbox-community/netbox/issues/11272) - Fix localization support for device position field +* [#13358](https://github.com/netbox-community/netbox/issues/13358) - Git backend should send HTTP auth headers only if credentials have been defined +* [#13477](https://github.com/netbox-community/netbox/issues/13477) - Fix filtering of modified objects after bulk import/update +* [#13478](https://github.com/netbox-community/netbox/issues/13478) - Fix filtering of export templates by content type under web UI +* [#13500](https://github.com/netbox-community/netbox/issues/13500) - Fix form validation for bulk update of L2VPN terminations via bulk import form +* [#13503](https://github.com/netbox-community/netbox/issues/13503) - Fix utilization graph proportions when localization is enabled +* [#13507](https://github.com/netbox-community/netbox/issues/13507) - Avoid raising exception for invalid content type during global search +* [#13516](https://github.com/netbox-community/netbox/issues/13516) - Plugin utility functions should be importable from `extras.plugins` +* [#13530](https://github.com/netbox-community/netbox/issues/13530) - Ensure script log messages can be serialized as JSON data +* [#13543](https://github.com/netbox-community/netbox/issues/13543) - Config context tab under device/VM view should not require `extras.view_configcontext` permission +* [#13544](https://github.com/netbox-community/netbox/issues/13544) - Ensure `reindex` command clears all cached values when not in lazy mode +* [#13556](https://github.com/netbox-community/netbox/issues/13556) - Correct REST API representation of VDC status choice +* [#13569](https://github.com/netbox-community/netbox/issues/13569) - Fix selection widgets for related interfaces when bulk editing interfaces under device view --- diff --git a/docs/release-notes/version-3.6.md b/docs/release-notes/version-3.6.md index 062e96556..75a51c9cf 100644 --- a/docs/release-notes/version-3.6.md +++ b/docs/release-notes/version-3.6.md @@ -1,34 +1,253 @@ # NetBox v3.6 -## v3.6-beta2 (2023-08-16) +## v3.6.9 (2023-12-28) + +### Enhancements + +* [#14631](https://github.com/netbox-community/netbox/issues/14631) - All models can be filtered and searched by their description field (where applicable) ### Bug Fixes -* [#13351](https://github.com/netbox-community/netbox/issues/13351) - Fix missing text due to incorrectly applied translation tags -* [#13361](https://github.com/netbox-community/netbox/issues/13361) - Extra choices field on custom field choice set form should not be required -* [#13363](https://github.com/netbox-community/netbox/issues/13363) - Fix API endpoint for custom field choice selector in forms -* [#13376](https://github.com/netbox-community/netbox/issues/13376) - Restrict add/remove tag fields by model on bulk edit forms -* [#13410](https://github.com/netbox-community/netbox/issues/13410) - Fix rendering of custom choice fields with large number of choices -* [#13433](https://github.com/netbox-community/netbox/issues/13433) - User field on API token form should be required -* [#13434](https://github.com/netbox-community/netbox/issues/13434) - Randomly generate initial keys prior to the creation of new tokens -* [#13437](https://github.com/netbox-community/netbox/issues/13437) - Display bookmark button only for relevant objects +* [#14482](https://github.com/netbox-community/netbox/issues/14482) - Fix validation error when attempting to move a primary IP address to a new parent object +* [#14620](https://github.com/netbox-community/netbox/issues/14620) - Permit setting device type U height to 0 during bulk edit +* [#14621](https://github.com/netbox-community/netbox/issues/14621) - Fix error when using the device search filter --- -## v3.6-beta1 (2023-08-02) +## v3.6.8 (2023-12-27) + +### Enhancements + +* [#11039](https://github.com/netbox-community/netbox/issues/11039) - List parent prefixes under IP range view +* [#14507](https://github.com/netbox-community/netbox/issues/14507) - Print new NetBox version when running upgrade script +* [#14538](https://github.com/netbox-community/netbox/issues/14538) - Add the `available_at_site` filter for VLANs +* [#14596](https://github.com/netbox-community/netbox/issues/14596) - Match against description field when searching for devices + +### Bug Fixes + +* [#11816](https://github.com/netbox-community/netbox/issues/11816) - Correct display of error message when attempting invalid VLAN site & group assignment +* [#12731](https://github.com/netbox-community/netbox/issues/12731) - Fix custom validation for many-to-many fields +* [#13606](https://github.com/netbox-community/netbox/issues/13606) - Fix filtering custom multi-choice fields by null +* [#13649](https://github.com/netbox-community/netbox/issues/13649) - Correct calculation of absolute lengths for zero-length cables +* [#13812](https://github.com/netbox-community/netbox/issues/13812) - Update status of remote data source when syncing fails via `syncdatasource` management command +* [#13909](https://github.com/netbox-community/netbox/issues/13909) - Fix cloning of objects which have a multi-choice custom field +* [#14517](https://github.com/netbox-community/netbox/issues/14517) - Ensure reservations tab is always displayed under rack view +* [#14532](https://github.com/netbox-community/netbox/issues/14532) - Device/VM change record should accurately reflect when primary/OOB IP is deleted +* [#14549](https://github.com/netbox-community/netbox/issues/14549) - Fix association of job results when executing scripts via `runscript` management command +* [#14560](https://github.com/netbox-community/netbox/issues/14560) - Do not escape exclamation marks in custom link URLs +* [#14575](https://github.com/netbox-community/netbox/issues/14575) - Fix display of the tags column under VDC table +* [#14613](https://github.com/netbox-community/netbox/issues/14613) - Fix display of current configuration parameters in UI + +--- + +## v3.6.7 (2023-12-15) + +### Enhancements + +* [#12751](https://github.com/netbox-community/netbox/issues/12751) - Designate fields to expand by default for object selector widget +* [#14148](https://github.com/netbox-community/netbox/issues/14148) - Add tags column to L2VPN terminations column +* [#14390](https://github.com/netbox-community/netbox/issues/14390) - Add `classes` parameter to `copy_content` template tag +* [#14467](https://github.com/netbox-community/netbox/issues/14467) - Change custom field choice delimiter from comma to colon + +### Bug Fixes + +* [#13983](https://github.com/netbox-community/netbox/issues/13983) - Fix bulk import support for custom field choices +* [#14081](https://github.com/netbox-community/netbox/issues/14081) - Ensure accuracy of parent object counters when deleting related objects +* [#14249](https://github.com/netbox-community/netbox/issues/14249) - Fix server error when authenticating via IP-restricted API tokens using IPv6 +* [#14392](https://github.com/netbox-community/netbox/issues/14392) - Fix bulk operations for plugin models under admin UI +* [#14397](https://github.com/netbox-community/netbox/issues/14397) - Fix exception on non-JSON request to `/available-ips/` API endpoints +* [#14401](https://github.com/netbox-community/netbox/issues/14401) - Rack `starting_unit` cannot be zero +* [#14432](https://github.com/netbox-community/netbox/issues/14432) - Populate custom field default values for components when creating a device +* [#14448](https://github.com/netbox-community/netbox/issues/14448) - Fix exception when creating a power feed with rack and panel in different sites +* [#14505](https://github.com/netbox-community/netbox/issues/14505) - Fix the assignment of tags to L2VPN terminations +* [#14512](https://github.com/netbox-community/netbox/issues/14512) - Remove unneeded annotations from queries when using REST API brief mode +* [#14515](https://github.com/netbox-community/netbox/issues/14515) - Ensure user config is created automatically for all user accounts +* [#14522](https://github.com/netbox-community/netbox/issues/14522) - Fix filtering contact assignments by group +* [#14533](https://github.com/netbox-community/netbox/issues/14533) - Fix quick search under VLAN group VLANs list + +--- + +## v3.6.6 (2023-11-29) + +### Enhancements + +* [#13735](https://github.com/netbox-community/netbox/issues/13735) - Show complete region hierarchy in UI for all relevant objects + +### Bug Fixes + +* [#14056](https://github.com/netbox-community/netbox/issues/14056) - Record a pre-change snapshot when bulk editing objects via CSV +* [#14187](https://github.com/netbox-community/netbox/issues/14187) - Raise a validation error when attempting to create a duplicate script or report +* [#14199](https://github.com/netbox-community/netbox/issues/14199) - Fix jobs list for reports with a custom name +* [#14239](https://github.com/netbox-community/netbox/issues/14239) - Fix CustomFieldChoiceSet search filter +* [#14242](https://github.com/netbox-community/netbox/issues/14242) - Enable export templates for contact assignments +* [#14299](https://github.com/netbox-community/netbox/issues/14299) - Webhook timestamps should be in proper ISO 8601 format +* [#14325](https://github.com/netbox-community/netbox/issues/14325) - Fix numeric ordering of service ports +* [#14339](https://github.com/netbox-community/netbox/issues/14339) - Correctly hash local user password when set via REST API +* [#14343](https://github.com/netbox-community/netbox/issues/14343) - Fix ordering ASN table by ASDOT column +* [#14346](https://github.com/netbox-community/netbox/issues/14346) - Fix running reports via REST API +* [#14349](https://github.com/netbox-community/netbox/issues/14349) - Fix custom validation support for remote data sources +* [#14363](https://github.com/netbox-community/netbox/issues/14363) - Fix bulk editing of interfaces assigned to VM with no cluster + +--- + +## v3.6.5 (2023-11-09) + +### Enhancements + +* [#12741](https://github.com/netbox-community/netbox/issues/12741) - Add selector widget to platform field on device & virtual machine forms +* [#13022](https://github.com/netbox-community/netbox/issues/13022) - Introduce support for assigning IP addresses when bulk importing services +* [#13587](https://github.com/netbox-community/netbox/issues/13587) - Annotate units of measurement on power port table columns +* [#13669](https://github.com/netbox-community/netbox/issues/13669) - Add bulk import button to contact assignments list view +* [#13723](https://github.com/netbox-community/netbox/issues/13723) - Add inventory items column to interfaces table +* [#13743](https://github.com/netbox-community/netbox/issues/13743) - Add site column to power feeds table +* [#13936](https://github.com/netbox-community/netbox/issues/13936) - Add primary IPv4 and IPv6 filters for virtual machines and VDCs +* [#13951](https://github.com/netbox-community/netbox/issues/13951) - Add device & virtual machine fields to service filter form +* [#14085](https://github.com/netbox-community/netbox/issues/14085) - Strip trailing port number from value returned by `get_client_ip()` +* [#14101](https://github.com/netbox-community/netbox/issues/14101) - Add greater/less than mask length filters for IP addresses +* [#14112](https://github.com/netbox-community/netbox/issues/14112) - Add tab listing child items under inventory item view +* [#14113](https://github.com/netbox-community/netbox/issues/14113) - Add optional parent column to inventory items table +* [#14220](https://github.com/netbox-community/netbox/issues/14220) - Order available columns alphabetically in table configuration form +* [#14221](https://github.com/netbox-community/netbox/issues/14221) - Add contact group column on contact assignments table + +### Bug Fixes + +* [#14033](https://github.com/netbox-community/netbox/issues/14033) - Avoid exception when attempting to connect both ends of a cable to the same object +* [#14117](https://github.com/netbox-community/netbox/issues/14117) - Check that enough rear port positions have been selected to accommodate the number of front ports being created +* [#14166](https://github.com/netbox-community/netbox/issues/14166) - Permit user login when maintenance mode is enabled +* [#14182](https://github.com/netbox-community/netbox/issues/14182) - Ensure the active configuration is restored upon clearing cache +* [#14195](https://github.com/netbox-community/netbox/issues/14195) - Correct permissions evaluation for ASN range child ASNs view +* [#14223](https://github.com/netbox-community/netbox/issues/14223) - Disable ordering of jobs by assigned object + +--- + +## v3.6.4 (2023-10-17) + +### Enhancements + +* [#12831](https://github.com/netbox-community/netbox/issues/12831) - Include circuit description in cable trace SVG image +* [#12872](https://github.com/netbox-community/netbox/issues/12872) - Introduce the `DATA_UPLOAD_MAX_MEMORY_SIZE` configuration parameter +* [#13950](https://github.com/netbox-community/netbox/issues/13950) - Display custom choice field labels rather than values in UI +* [#13957](https://github.com/netbox-community/netbox/issues/13957) - Add DNS name filter on IP addresses list +* [#13962](https://github.com/netbox-community/netbox/issues/13962) - Add a copy-to-clipboard button for API tokens +* [#13972](https://github.com/netbox-community/netbox/issues/13972) - Introduce a filter to find unterminated cables + +### Bug Fixes + +* [#11987](https://github.com/netbox-community/netbox/issues/11987) - Fix validation of bulk cable updates via bulk import form +* [#12328](https://github.com/netbox-community/netbox/issues/12328) - Ensure generic foreign key relationships are populated in REST API serializations of objects +* [#12336](https://github.com/netbox-community/netbox/issues/12336) - Employ PostgreSQL advisory locks to avoid duplicate MPTT tree IDs when bulk creating objects +* [#13064](https://github.com/netbox-community/netbox/issues/13064) - Fix resetting of checkbox fields triggered by HTMX form re-rendering +* [#13440](https://github.com/netbox-community/netbox/issues/13440) - Fix support for assigning a tenant when creating "next available" VLANs via the REST API +* [#13746](https://github.com/netbox-community/netbox/issues/13746) - Fix support for setting custom field values when creating "next available" IP addresses via the REST API +* [#13872](https://github.com/netbox-community/netbox/issues/13872) - Add CSV delimiter field to file upload tab under bulk object upload views +* [#13876](https://github.com/netbox-community/netbox/issues/13876) - Fix support for assigning an interface when creating "next available" IP addresses via the REST API +* [#13910](https://github.com/netbox-community/netbox/issues/13910) - Correct "add device" button link under platform view +* [#13944](https://github.com/netbox-community/netbox/issues/13944) - Correct serialization of several report attributes in the REST API +* [#13966](https://github.com/netbox-community/netbox/issues/13966) - Restore "last login" column on users table +* [#14013](https://github.com/netbox-community/netbox/issues/14013) - Fix device role filter choices under inventory items list filters +* [#14023](https://github.com/netbox-community/netbox/issues/14023) - Fix exception when bulk disconnecting interfaces connected to the same cable +* [#14025](https://github.com/netbox-community/netbox/issues/14025) - Fix exception when viewing a script that begins with the same name as another +* [#14026](https://github.com/netbox-community/netbox/issues/14026) - Optimize the automatic creation of available IP addresses for large prefixes +* [#14042](https://github.com/netbox-community/netbox/issues/14042) - Fix duplicated child object count decrements when removing objects in bulk + +--- + +## v3.6.3 (2023-09-26) + +### Enhancements + +* [#12732](https://github.com/netbox-community/netbox/issues/12732) - Add toggle to hide disconnected interfaces under device view + +### Bug Fixes + +* [#11079](https://github.com/netbox-community/netbox/issues/11079) - Enable tracing cable paths across multiple cables in parallel +* [#11901](https://github.com/netbox-community/netbox/issues/11901) - Fix `IndexError` exception when manipulating terminations for existing cables via REST API +* [#13506](https://github.com/netbox-community/netbox/issues/13506) - Enable creating a config template which references a data file via the REST API +* [#13666](https://github.com/netbox-community/netbox/issues/13666) - Cleanly handle reports without any test methods defined +* [#13839](https://github.com/netbox-community/netbox/issues/13839) - Restore original text color for HTML code elements +* [#13843](https://github.com/netbox-community/netbox/issues/13843) - Fix assignment of VLAN group scope during bulk edit +* [#13845](https://github.com/netbox-community/netbox/issues/13845) - Fix `AttributeError` exception when attaching front/rear images to a device type +* [#13849](https://github.com/netbox-community/netbox/issues/13849) - Fix `KeyError` exception when deleting an object which references a configured choice value that has been removed +* [#13859](https://github.com/netbox-community/netbox/issues/13859) - Fix invalid response when searching for custom choice field values returns no matches +* [#13864](https://github.com/netbox-community/netbox/issues/13864) - Correct default background color for dashboard widget headers +* [#13871](https://github.com/netbox-community/netbox/issues/13871) - Fix rack filtering for empty location during device bulk import +* [#13891](https://github.com/netbox-community/netbox/issues/13891) - Allow designating an IP address as primary for device/VM while assigning it to an interface + +--- + +## v3.6.2 (2023-09-20) + +### Enhancements + +* [#13245](https://github.com/netbox-community/netbox/issues/13245) - Add interface types for QSFP112 and OSFP-RHS +* [#13563](https://github.com/netbox-community/netbox/issues/13563) - Add support for other delimiting characters when using CSV import + +### Bug Fixes + +* [#11209](https://github.com/netbox-community/netbox/issues/11209) - Hide available IP/VLAN listing when sorting under a parent prefix or VLAN range +* [#11617](https://github.com/netbox-community/netbox/issues/11617) - Raise validation error on the presence of an unknown CSV header during bulk import +* [#12219](https://github.com/netbox-community/netbox/issues/12219) - Fix dashboard widget heading contrast under dark mode +* [#12685](https://github.com/netbox-community/netbox/issues/12685) - Render Markdown in custom field help text on object edit forms +* [#13653](https://github.com/netbox-community/netbox/issues/13653) - Tweak color of error text to improve legibility +* [#13701](https://github.com/netbox-community/netbox/issues/13701) - Correct display of power feed legs under device view +* [#13706](https://github.com/netbox-community/netbox/issues/13706) - Restore extra filters dropdown on device interfaces list +* [#13721](https://github.com/netbox-community/netbox/issues/13721) - Filter VLAN choices by selected site (if any) when creating a prefix +* [#13727](https://github.com/netbox-community/netbox/issues/13727) - Fix exception when viewing rendered config for VM without a role assigned +* [#13745](https://github.com/netbox-community/netbox/issues/13745) - Optimize counter field migrations for large databases +* [#13756](https://github.com/netbox-community/netbox/issues/13756) - Fix exception when sorting module bay list by installed module status +* [#13757](https://github.com/netbox-community/netbox/issues/13757) - Fix RecursionError exception when assigning config context to a device type +* [#13767](https://github.com/netbox-community/netbox/issues/13767) - Fix support for comments when creating a new service via web UI +* [#13782](https://github.com/netbox-community/netbox/issues/13782) - Fix tag exclusion support for contact assignments +* [#13791](https://github.com/netbox-community/netbox/issues/13791) - Preserve whitespace in values when performing bulk rename of objects via web UI +* [#13809](https://github.com/netbox-community/netbox/issues/13809) - Avoid TypeError exception when editing active configuration with statically defined `CUSTOM_VALIDATORS` +* [#13813](https://github.com/netbox-community/netbox/issues/13813) - Fix member count for newly created virtual chassis +* [#13818](https://github.com/netbox-community/netbox/issues/13818) - Restore missing tags field on L2VPN termination edit form + +--- + +## v3.6.1 (2023-09-06) + +### Enhancements + +* [#12870](https://github.com/netbox-community/netbox/issues/12870) - Support setting token expiration time using the provisioning API endpoint +* [#13444](https://github.com/netbox-community/netbox/issues/13444) - Add bulk rename functionality to the global device component lists +* [#13638](https://github.com/netbox-community/netbox/issues/13638) - Add optional `staff_only` attribute to MenuItem + +### Bug Fixes + +* [#12553](https://github.com/netbox-community/netbox/issues/12552) - Ensure `family` attribute is always returned when creating aggregates and prefixes via REST API +* [#13619](https://github.com/netbox-community/netbox/issues/13619) - Fix exception when viewing IP address assigned to a virtual machine +* [#13596](https://github.com/netbox-community/netbox/issues/13596) - Always display "render config" tab for devices and virtual machines +* [#13620](https://github.com/netbox-community/netbox/issues/13620) - Show admin menu items only for staff users +* [#13622](https://github.com/netbox-community/netbox/issues/13622) - Fix exception when viewing current config and no revisions have been created +* [#13626](https://github.com/netbox-community/netbox/issues/13626) - Correct filtering of recent activity list under user view +* [#13628](https://github.com/netbox-community/netbox/issues/13628) - Remove stale references to obsolete NAPALM integration +* [#13630](https://github.com/netbox-community/netbox/issues/13630) - Fix display of active status under user view +* [#13632](https://github.com/netbox-community/netbox/issues/13632) - Avoid raising exception when checking if FHRP group IP address is primary +* [#13642](https://github.com/netbox-community/netbox/issues/13642) - Suppress warning about unreflected model changes when applying migrations +* [#13657](https://github.com/netbox-community/netbox/issues/13657) - Fix decoding of data file content +* [#13674](https://github.com/netbox-community/netbox/issues/13674) - Fix retrieving individual report via REST API +* [#13682](https://github.com/netbox-community/netbox/issues/13682) - Fix error message returned when validation of custom field default value fails +* [#13684](https://github.com/netbox-community/netbox/issues/13684) - Enable modifying the configuration when maintenance mode is enabled + +--- + +## v3.6.0 (2023-08-30) ### Breaking Changes * PostgreSQL 11 is no longer supported (dropped in Django 4.2). NetBox v3.6 requires PostgreSQL 12 or later. +* The `boto3` and `dulwich` packages are no longer installed automatically. If needed for S3/git remote data backend support, add them to `local_requirements.txt` to ensure their installation. * The `device_role` field on the Device model has been renamed to `role`. The `device_role` field has been temporarily retained on the REST API serializer for devices for backward compatibility, but is read-only. * The `choices` array field has been removed from the CustomField model. Any defined choices are automatically migrated to CustomFieldChoiceSets, accessible via the new `choice_set` field on the CustomField model. * The `napalm_driver` and `napalm_args` fields (which were deprecated in v3.5) have been removed from the Platform model. +* The `device` and `device_id` filter for interfaces will no longer include interfaces from virtual chassis peers. Two new filters, `virtual_chassis_member` and `virtual_chassis_member_id`, have been introduced to match all interfaces belonging to the specified device's virtual chassis (if any). * Reports and scripts are now returned within a `results` list when fetched via the REST API, consistent with other models. * Superusers can no longer retrieve API token keys via the web UI if [`ALLOW_TOKEN_RETRIEVAL`](https://docs.netbox.dev/en/stable/configuration/security/#allow_token_retrieval) is disabled. (The admin view has been removed per [#13044](https://github.com/netbox-community/netbox/issues/13044).) ### New Features -#### Relocated Admin Views ([#12589](https://github.com/netbox-community/netbox/issues/12589), [#12590](https://github.com/netbox-community/netbox/issues/12590), [#12591](https://github.com/netbox-community/netbox/issues/12591), [#13044](https://github.com/netbox-community/netbox/issues/13044)) +#### Relocated Admin UI Views ([#12589](https://github.com/netbox-community/netbox/issues/12589), [#12590](https://github.com/netbox-community/netbox/issues/12590), [#12591](https://github.com/netbox-community/netbox/issues/12591), [#13044](https://github.com/netbox-community/netbox/issues/13044)) Management views for the following object types, previously available only under the backend admin interface, have been relocated to the primary user interface: @@ -72,6 +291,7 @@ Tags may now be restricted to use with designated object types. Tags that have n * [#8137](https://github.com/netbox-community/netbox/issues/8137) - Add a field for designating the out-of-band (OOB) IP address for devices * [#10197](https://github.com/netbox-community/netbox/issues/10197) - Cache the number of member devices on each virtual chassis * [#11305](https://github.com/netbox-community/netbox/issues/11305) - Add GPS coordinate fields to the device model +* [#11478](https://github.com/netbox-community/netbox/issues/11478) - Introduce `virtual_chassis_member` filter for interfaces & restore default behavior for `device` filter * [#11519](https://github.com/netbox-community/netbox/issues/11519) - Add a SQL index for IP address host values to optimize queries * [#11732](https://github.com/netbox-community/netbox/issues/11732) - Prevent inadvertent overwriting of object attributes by competing users * [#11936](https://github.com/netbox-community/netbox/issues/11936) - Introduce support for tags and custom fields on webhooks @@ -84,6 +304,12 @@ Tags may now be restricted to use with designated object types. Tags that have n * [#13170](https://github.com/netbox-community/netbox/issues/13170) - Add `rf_role` to InterfaceTemplate * [#13269](https://github.com/netbox-community/netbox/issues/13269) - Cache the number of assigned component templates for device types +### Bug Fixes + +* [#13513](https://github.com/netbox-community/netbox/issues/13513) - Prevent exception when rendering bookmarks widget for anonymous user +* [#13599](https://github.com/netbox-community/netbox/issues/13599) - Fix errant counter increments when editing device/VM components +* [#13605](https://github.com/netbox-community/netbox/issues/13605) - Optimize cached counter migrations to avoid excessive memory consumption + ### Other Changes * Work has begun on introducing translation and localization support in NetBox. This work is being performed in preparation for release 4.0. @@ -92,8 +318,9 @@ Tags may now be restricted to use with designated object types. Tags that have n * [#11766](https://github.com/netbox-community/netbox/issues/11766) - Remove obsolete custom `ChoiceField` and `MultipleChoiceField` classes * [#12180](https://github.com/netbox-community/netbox/issues/12180) - All API endpoints for available objects (e.g. IP addresses) now inherit from a common parent view * [#12237](https://github.com/netbox-community/netbox/issues/12237) - Upgrade Django to v4.2 -* [#12794](https://github.com/netbox-community/netbox/issues/12794) - Avoid direct imports of Django's stock user model * [#12320](https://github.com/netbox-community/netbox/issues/12320) - Remove obsolete fields `napalm_driver` and `napalm_args` from Platform +* [#12794](https://github.com/netbox-community/netbox/issues/12794) - Avoid direct imports of Django's stock user model +* [#12906](https://github.com/netbox-community/netbox/issues/12906) - The `boto3` (AWS) and `dulwich` (git) packages for remote data sources are now optional requirements * [#12964](https://github.com/netbox-community/netbox/issues/12964) - Drop support for PostgreSQL 11 * [#13309](https://github.com/netbox-community/netbox/issues/13309) - User account-specific resources have been moved to a new `account` app for better organization diff --git a/docs/release-notes/version-3.7.md b/docs/release-notes/version-3.7.md new file mode 100644 index 000000000..127e241d7 --- /dev/null +++ b/docs/release-notes/version-3.7.md @@ -0,0 +1,138 @@ +# NetBox v3.7 + +## v3.7.0 (2023-12-29) + +### Breaking Changes + +* The following fields have been removed from the Webhook model: `content_types`, `type_create`, `type_update`, `type_delete`, `type_job_start`, `type_job_end`, `enabled`, and `conditions`. Webhooks are now tied to events via [event rules](../features/event-rules.md). New event rules will be created for any existing webhooks automatically upon upgrade. +* The `ui_visibility` field on the [custom field model](../models/extras/customfield.md) has been replaced with two new fields: `ui_visible` and `ui_editable`. These new fields will have their values mapped from the original field automatically upon upgrade. +* The `FeatureQuery` class used internally for querying content types by model feature has been removed. It has been replaced by the new `with_feature()` manager method on NetBox's proxy model for ContentType (`core.models.ContentType`). +* The internal ConfigRevision model has moved from `extras` to `core`. Configuration history will be retained throughout the upgrade process. +* The [L2VPN](../models/vpn/l2vpn.md) and [L2VPNTermination](../models/vpn/l2vpntermination.md) models have moved from the `ipam` app to the new `vpn` app. All object data will be retained, however please note that the relevant API endpoints have likewise moved to `/api/vpn/`. +* The `CustomFieldsMixin`, `SavedFiltersMixin`, and `TagsMixin` classes have moved from the `extras.forms.mixins` module to `netbox.forms.mixins`. + +### New Features + +#### VPN Tunnels ([#9816](https://github.com/netbox-community/netbox/issues/9816)) + +Several new models have been introduced to enable [VPN tunnel management](../features/vpn-tunnels.md). Users can now define tunnels with two or more terminations to represent peer-to-peer or hub-and-spoke topologies. Each termination is made to a virtual interface on a device or virtual machine. Additionally, users can define IKE and IPSec proposals and policies, which can be applied to tunnels to document encryption and authentication strategies. + +#### Event Rules ([#14132](https://github.com/netbox-community/netbox/issues/14132)) + +This release introduces [event rules](../features/event-rules.md), which can be used to send webhooks or execute custom scripts automatically in response to events that occur in NetBox. For example, it's now possible to run a custom script whenever a new site is created with a particular status or tag. + +Event rules replace and extend functionality that was previously built into the webhook model. New event rules will be created for any existing webhooks automatically upon upgrade. + +#### Virtual Machine Disks ([#8356](https://github.com/netbox-community/netbox/issues/8356)) + +A new [VirtualDisk](../models/virtualization/virtualdisk.md) model has been introduced to enable tracking the assignment of discrete virtual disks to virtual machines. The `size` field has been retained on the VirtualMachine model, and will be populated automatically with the aggregate size of all assigned virtual disks. (Users who opt to eschew the new model may continue using the VirtualMachine `size` attribute independently as in previous releases.) + +#### Object Protection Rules ([#10244](https://github.com/netbox-community/netbox/issues/10244)) + +A new [`PROTECTION_RULES`](../configuration/data-validation.md#protection_rules) configuration parameter has been introduced. Similar to how [custom validation rules](../customization/custom-validation.md) can be used to enforce certain values for object attributes, protection rules guard against the deletion of objects which do not meet specified criteria. This enables an administrator to prevent, for example, the deletion of a site which has a status of "active." + +#### Improved Custom Field Visibility Controls ([#13299](https://github.com/netbox-community/netbox/issues/13299)) + +The `ui_visible` field on [the custom field model](../models/extras/customfield.md) has been superseded by two new fields, `ui_visible` and `ui_editable`, which control how and whether a custom field is displayed when view and editing an object, respectively. Separating these two functions into discrete fields allows more control over how each custom field is presented to users. The values of these fields will be appropriately set automatically during the upgrade process from the value of the original field. + +#### Improved Global Search Results ([#14134](https://github.com/netbox-community/netbox/issues/14134)) + +Global search results now include additional context about each object, such as a description, status, and/or related objects. The set of attributes to be displayed is specific to each object type, and is defined by setting `display_attrs` under the object's [SearchIndex class](../plugins/development/search.md#netbox.search.SearchIndex). + +#### Table Column Registration for Plugins ([#14173](https://github.com/netbox-community/netbox/issues/14173)) + +Plugins can now [register their own custom columns](../plugins/development/tables.md#extending-core-tables) for inclusion on core NetBox tables. For example, a plugin can register a new column on SiteTable using the new `register_table_column()` utility function, and it will become available for users to select for display. + +#### Data Backend Registration for Plugins ([#13381](https://github.com/netbox-community/netbox/issues/13381)) + +Plugins can now [register their own data backends](../plugins/development/data-backends.md) for use with [synchronized data sources](../features/synchronized-data.md). This enables plugins to introduce new backends in addition to the git, S3, and local path backends provided natively. + +### Enhancements + +* [#12135](https://github.com/netbox-community/netbox/issues/12135) - Avoid orphaned interfaces by preventing the deletion of interfaces which have children assigned +* [#12216](https://github.com/netbox-community/netbox/issues/12216) - Add a `color` field for circuit types +* [#13230](https://github.com/netbox-community/netbox/issues/13230) - Allow device types to be excluded from consideration when calculating a rack's utilization +* [#13334](https://github.com/netbox-community/netbox/issues/13334) - Add an `error` field to the Job model to record any errors associated with its execution +* [#13427](https://github.com/netbox-community/netbox/issues/13427) - Introduce a mechanism for excluding models from general-purpose lists of object types +* [#13690](https://github.com/netbox-community/netbox/issues/13690) - Display any dependent objects to be deleted prior to deleting an object via the web UI +* [#13794](https://github.com/netbox-community/netbox/issues/13794) - Any models with a relationship to Tenant are now included automatically in the list of related objects under the tenant view +* [#13808](https://github.com/netbox-community/netbox/issues/13808) - Add a `/render-config` REST API endpoint for virtual machines +* [#14035](https://github.com/netbox-community/netbox/issues/14035) - Order objects of equivalent weight by value in global search results to improve readability +* [#14147](https://github.com/netbox-community/netbox/issues/14147) - Avoid recording empty changelog entries via the new `CHANGELOG_SKIP_EMPTY_CHANGES` config parameter +* [#14156](https://github.com/netbox-community/netbox/issues/14156) - Enable custom fields for contact assignments +* [#14240](https://github.com/netbox-community/netbox/issues/14240) - Increase maximum values for custom field minimum & maximum numeric validators +* [#14361](https://github.com/netbox-community/netbox/issues/14361) - Add a `description` field for webhooks +* [#14365](https://github.com/netbox-community/netbox/issues/14365) - Introduce `job_start` and `job_end` signals to allow automated plugin actions +* [#14434](https://github.com/netbox-community/netbox/issues/14434) - Add model-specific termination object filters for cables (e.g. `interface_id` and `consoleport_id`) +* [#14436](https://github.com/netbox-community/netbox/issues/14436) - Add PostgreSQL indexes for all GenericForeignKey fields +* [#14579](https://github.com/netbox-community/netbox/issues/14579) - Allow users to specify a preferred language for UI translations + +### Translations + +* [#14075](https://github.com/netbox-community/netbox/issues/14075) - Add Spanish translation +* [#14096](https://github.com/netbox-community/netbox/issues/14096) - Add French translation +* [#14145](https://github.com/netbox-community/netbox/issues/14145) - Add Portuguese translation +* [#14266](https://github.com/netbox-community/netbox/issues/14266) - Add Russian translation + +### Bug Fixes + +* [#14432](https://github.com/netbox-community/netbox/issues/14432) - Fix hyperlinks for global search result attributes +* [#14472](https://github.com/netbox-community/netbox/issues/14472) - Fix display of hidden custom fields in object edit forms +* [#14499](https://github.com/netbox-community/netbox/issues/14499) - Relax requirements for encryption/auth algorithms on IKE & IPSec proposals +* [#14550](https://github.com/netbox-community/netbox/issues/14550) - Fix changing action type of existing event rule + +### Other Changes + +* [#13550](https://github.com/netbox-community/netbox/issues/13550) - Optimize the format for declaring view actions under `ActionsMixin` (backward compatibility has been retained) +* [#13645](https://github.com/netbox-community/netbox/issues/13645) - Installation of the `sentry-sdk` Python library is now required only if Sentry reporting is enabled +* [#14036](https://github.com/netbox-community/netbox/issues/14036) - Move plugin resources from the `extras` app into `netbox` (backward compatibility has been retained) +* [#14153](https://github.com/netbox-community/netbox/issues/14153) - Replace `FeatureQuery` with new `with_feature()` method on proxy ContentType manager +* [#14311](https://github.com/netbox-community/netbox/issues/14311) - Move the L2VPN models from the `ipam` app to the new `vpn` app +* [#14312](https://github.com/netbox-community/netbox/issues/14312) - Move the ConfigRevision model from the `extras` app to `core` +* [#14326](https://github.com/netbox-community/netbox/issues/14326) - Form feature mixin classes have been moved from the `extras` app to `netbox` +* [#14395](https://github.com/netbox-community/netbox/issues/14395) - Move `extras.webhooks_worker.process_webhook()` to `extras.webhooks.send_webhook()` (backward compatibility has been retained) +* [#14424](https://github.com/netbox-community/netbox/issues/14424) - Remove change logging functionality from StagedChange +* [#14458](https://github.com/netbox-community/netbox/issues/14458) - Remove the obsolete `clearcache` management command +* [#14536](https://github.com/netbox-community/netbox/issues/14536) - Enforce uniqueness by default for non-VRF prefixes & IP addresses (`ENFORCE_GLOBAL_UNIQUE` now defaults to true) + +### REST API Changes + +* Introduced the following endpoints: + * `/api/extras/event-rules/` + * `/api/virtualization/virtual-disks/` + * `/api/vpn/ike-policies/` + * `/api/vpn/ike-proposals/` + * `/api/vpn/ipsec-policies/` + * `/api/vpn/ipsec-profiles/` + * `/api/vpn/ipsec-proposals/` + * `/api/vpn/tunnels/` + * `/api/vpn/tunnel-terminations/` +* The following endpoints have been moved: + * `/api/ipam/l2vpns/` -> `/api/vpn/l2vpns/` + * `/api/ipam/l2vpn-terminations/` -> `/api/vpn/l2vpn-terminations/` +* circuits.CircuitType + * Added the optional `color` choice field +* core.Job + * Added the read-only `error` character field +* extras.Webhook + * Removed the following fields (these have been moved to the new `EventRule` model): + * `content_types` + * `type_create` + * `type_update` + * `type_delete` + * `type_job_start` + * `type_job_end` + * `enabled` + * `conditions` + * Add the optional `description` field +* dcim.DeviceType + * Added the `exclude_from_utilization` boolean field +* extras.CustomField + * Removed the `ui_visibility` field + * Added the `ui_visible` and `ui_editable` choice fields +* tenancy.ContactAssignment + * Added support for custom fields +* virtualization.VirtualDisk + * Added the read-only `virtual_disk_count` integer field +* virtualization.VirtualMachine + * Added the `/render-config` endpoint diff --git a/mkdocs.yml b/mkdocs.yml index cc16434de..5a7e00c2c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -53,8 +53,8 @@ markdown_extensions: - admonition - attr_list - pymdownx.emoji: - emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg - pymdownx.superfences: custom_fences: - name: mermaid @@ -74,6 +74,7 @@ nav: - Circuits: 'features/circuits.md' - Wireless: 'features/wireless.md' - Virtualization: 'features/virtualization.md' + - VPN Tunnels: 'features/vpn-tunnels.md' - Tenancy: 'features/tenancy.md' - Contacts: 'features/contacts.md' - Search: 'features/search.md' @@ -82,6 +83,7 @@ nav: - Synchronized Data: 'features/synchronized-data.md' - Change Logging: 'features/change-logging.md' - Journaling: 'features/journaling.md' + - Event Rules: 'features/event-rules.md' - Background Jobs: 'features/background-jobs.md' - Auth & Permissions: 'features/authentication-permissions.md' - API & Integration: 'features/api-integration.md' @@ -136,6 +138,7 @@ nav: - Forms: 'plugins/development/forms.md' - Filters & Filter Sets: 'plugins/development/filtersets.md' - Search: 'plugins/development/search.md' + - Data Backends: 'plugins/development/data-backends.md' - REST API: 'plugins/development/rest-api.md' - GraphQL API: 'plugins/development/graphql-api.md' - Background Tasks: 'plugins/development/background-tasks.md' @@ -213,6 +216,7 @@ nav: - CustomField: 'models/extras/customfield.md' - CustomFieldChoiceSet: 'models/extras/customfieldchoiceset.md' - CustomLink: 'models/extras/customlink.md' + - EventRule: 'models/extras/eventrule.md' - ExportTemplate: 'models/extras/exporttemplate.md' - ImageAttachment: 'models/extras/imageattachment.md' - JournalEntry: 'models/extras/journalentry.md' @@ -228,8 +232,6 @@ nav: - FHRPGroupAssignment: 'models/ipam/fhrpgroupassignment.md' - IPAddress: 'models/ipam/ipaddress.md' - IPRange: 'models/ipam/iprange.md' - - L2VPN: 'models/ipam/l2vpn.md' - - L2VPNTermination: 'models/ipam/l2vpntermination.md' - Prefix: 'models/ipam/prefix.md' - RIR: 'models/ipam/rir.md' - Role: 'models/ipam/role.md' @@ -250,7 +252,19 @@ nav: - ClusterGroup: 'models/virtualization/clustergroup.md' - ClusterType: 'models/virtualization/clustertype.md' - VMInterface: 'models/virtualization/vminterface.md' + - VirtualDisk: 'models/virtualization/virtualdisk.md' - VirtualMachine: 'models/virtualization/virtualmachine.md' + - VPN: + - IKEPolicy: 'models/vpn/ikepolicy.md' + - IKEProposal: 'models/vpn/ikeproposal.md' + - IPSecPolicy: 'models/vpn/ipsecpolicy.md' + - IPSecProfile: 'models/vpn/ipsecprofile.md' + - IPSecProposal: 'models/vpn/ipsecproposal.md' + - L2VPN: 'models/vpn/l2vpn.md' + - L2VPNTermination: 'models/vpn/l2vpntermination.md' + - Tunnel: 'models/vpn/tunnel.md' + - TunnelGroup: 'models/vpn/tunnelgroup.md' + - TunnelTermination: 'models/vpn/tunneltermination.md' - Wireless: - WirelessLAN: 'models/wireless/wirelesslan.md' - WirelessLANGroup: 'models/wireless/wirelesslangroup.md' @@ -276,6 +290,7 @@ nav: - git Cheat Sheet: 'development/git-cheat-sheet.md' - Release Notes: - Summary: 'release-notes/index.md' + - Version 3.7: 'release-notes/version-3.7.md' - Version 3.6: 'release-notes/version-3.6.md' - Version 3.5: 'release-notes/version-3.5.md' - Version 3.4: 'release-notes/version-3.4.md' diff --git a/netbox/account/models.py b/netbox/account/models.py index 5d6575040..bd5879a85 100644 --- a/netbox/account/models.py +++ b/netbox/account/models.py @@ -7,6 +7,8 @@ class UserToken(Token): """ Proxy model for users to manage their own API tokens. """ + _netbox_private = True + class Meta: proxy = True verbose_name = 'token' diff --git a/netbox/account/views.py b/netbox/account/views.py index 3156b2102..3dbba9b29 100644 --- a/netbox/account/views.py +++ b/netbox/account/views.py @@ -13,6 +13,7 @@ from django.shortcuts import render, resolve_url from django.urls import reverse from django.utils.decorators import method_decorator from django.utils.http import url_has_allowed_host_and_scheme, urlencode +from django.utils.translation import gettext_lazy as _ from django.views.decorators.debug import sensitive_post_parameters from django.views.generic import View from social_core.backends.utils import load_backends @@ -193,8 +194,16 @@ class UserConfigView(LoginRequiredMixin, View): if form.is_valid(): form.save() - messages.success(request, "Your preferences have been updated.") - return redirect('account:preferences') + messages.success(request, _("Your preferences have been updated.")) + response = redirect('account:preferences') + + # Set/clear language cookie + if language := form.cleaned_data['locale.language']: + response.set_cookie(settings.LANGUAGE_COOKIE_NAME, language) + else: + response.delete_cookie(settings.LANGUAGE_COOKIE_NAME) + + return response return render(request, self.template_name, { 'form': form, diff --git a/netbox/circuits/api/serializers.py b/netbox/circuits/api/serializers.py index f4abda645..5223de339 100644 --- a/netbox/circuits/api/serializers.py +++ b/netbox/circuits/api/serializers.py @@ -85,7 +85,7 @@ class CircuitTypeSerializer(NetBoxModelSerializer): class Meta: model = CircuitType fields = [ - 'id', 'url', 'display', 'name', 'slug', 'description', 'tags', 'custom_fields', 'created', 'last_updated', + 'id', 'url', 'display', 'name', 'slug', 'color', 'description', 'tags', 'custom_fields', 'created', 'last_updated', 'circuit_count', ] diff --git a/netbox/circuits/filtersets.py b/netbox/circuits/filtersets.py index e28238fea..97be1cf57 100644 --- a/netbox/circuits/filtersets.py +++ b/netbox/circuits/filtersets.py @@ -67,13 +67,14 @@ class ProviderFilterSet(NetBoxModelFilterSet, ContactModelFilterSet): class Meta: model = Provider - fields = ['id', 'name', 'slug'] + fields = ['id', 'name', 'slug', 'description'] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter( Q(name__icontains=value) | + Q(description__icontains=value) | Q(accounts__account__icontains=value) | Q(accounts__name__icontains=value) | Q(comments__icontains=value) @@ -101,6 +102,7 @@ class ProviderAccountFilterSet(NetBoxModelFilterSet): return queryset return queryset.filter( Q(name__icontains=value) | + Q(description__icontains=value) | Q(account__icontains=value) | Q(comments__icontains=value) ).distinct() @@ -137,7 +139,7 @@ class CircuitTypeFilterSet(OrganizationalModelFilterSet): class Meta: model = CircuitType - fields = ['id', 'name', 'slug', 'description'] + fields = ['id', 'name', 'slug', 'color', 'description'] class CircuitFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilterSet): @@ -154,12 +156,12 @@ class CircuitFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilte provider_account_id = django_filters.ModelMultipleChoiceFilter( field_name='provider_account', queryset=ProviderAccount.objects.all(), - label=_('ProviderAccount (ID)'), + label=_('Provider account (ID)'), ) provider_network_id = django_filters.ModelMultipleChoiceFilter( field_name='terminations__provider_network', queryset=ProviderNetwork.objects.all(), - label=_('ProviderNetwork (ID)'), + label=_('Provider network (ID)'), ) type_id = django_filters.ModelMultipleChoiceFilter( queryset=CircuitType.objects.all(), diff --git a/netbox/circuits/forms/bulk_edit.py b/netbox/circuits/forms/bulk_edit.py index 1a9366583..5c416bff9 100644 --- a/netbox/circuits/forms/bulk_edit.py +++ b/netbox/circuits/forms/bulk_edit.py @@ -7,7 +7,7 @@ from ipam.models import ASN from netbox.forms import NetBoxModelBulkEditForm from tenancy.models import Tenant from utilities.forms import add_blank_choice -from utilities.forms.fields import CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField +from utilities.forms.fields import ColorField, CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField from utilities.forms.widgets import DatePicker, NumberWithOptions __all__ = ( @@ -91,6 +91,10 @@ class ProviderNetworkBulkEditForm(NetBoxModelBulkEditForm): class CircuitTypeBulkEditForm(NetBoxModelBulkEditForm): + color = ColorField( + label=_('Color'), + required=False + ) description = forms.CharField( label=_('Description'), max_length=200, @@ -99,9 +103,9 @@ class CircuitTypeBulkEditForm(NetBoxModelBulkEditForm): model = CircuitType fieldsets = ( - (None, ('description',)), + (None, ('color', 'description')), ) - nullable_fields = ('description',) + nullable_fields = ('color', 'description') class CircuitBulkEditForm(NetBoxModelBulkEditForm): diff --git a/netbox/circuits/forms/bulk_import.py b/netbox/circuits/forms/bulk_import.py index d2217b45b..0c30e3cda 100644 --- a/netbox/circuits/forms/bulk_import.py +++ b/netbox/circuits/forms/bulk_import.py @@ -3,6 +3,7 @@ from django import forms from circuits.choices import CircuitStatusChoices from circuits.models import * from dcim.models import Site +from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ from netbox.forms import NetBoxModelImportForm from tenancy.models import Tenant @@ -64,7 +65,10 @@ class CircuitTypeImportForm(NetBoxModelImportForm): class Meta: model = CircuitType - fields = ('name', 'slug', 'description', 'tags') + fields = ('name', 'slug', 'color', 'description', 'tags') + help_texts = { + 'color': mark_safe(_('RGB color in hexadecimal. Example:') + ' 00ff00'), + } class CircuitImportForm(NetBoxModelImportForm): diff --git a/netbox/circuits/forms/filtersets.py b/netbox/circuits/forms/filtersets.py index 1fb239023..1e1abd068 100644 --- a/netbox/circuits/forms/filtersets.py +++ b/netbox/circuits/forms/filtersets.py @@ -7,7 +7,7 @@ from dcim.models import Region, Site, SiteGroup from ipam.models import ASN from netbox.forms import NetBoxModelFilterSetForm from tenancy.forms import TenancyFilterForm, ContactModelFilterForm -from utilities.forms.fields import DynamicModelMultipleChoiceField, TagFilterField +from utilities.forms.fields import ColorField, DynamicModelMultipleChoiceField, TagFilterField from utilities.forms.widgets import DatePicker, NumberWithOptions __all__ = ( @@ -88,7 +88,7 @@ class ProviderNetworkFilterForm(NetBoxModelFilterSetForm): label=_('Provider') ) service_id = forms.CharField( - label=_('Service id'), + label=_('Service ID'), max_length=100, required=False ) @@ -97,8 +97,17 @@ class ProviderNetworkFilterForm(NetBoxModelFilterSetForm): class CircuitTypeFilterForm(NetBoxModelFilterSetForm): model = CircuitType + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Attributes'), ('color',)), + ) tag = TagFilterField(model) + color = ColorField( + label=_('Color'), + required=False + ) + class CircuitFilterForm(TenancyFilterForm, ContactModelFilterForm, NetBoxModelFilterSetForm): model = Circuit @@ -110,6 +119,7 @@ class CircuitFilterForm(TenancyFilterForm, ContactModelFilterForm, NetBoxModelFi (_('Tenant'), ('tenant_group_id', 'tenant_id')), (_('Contacts'), ('contact', 'contact_role', 'contact_group')), ) + selector_fields = ('filter_id', 'q', 'region_id', 'site_group_id', 'site_id', 'provider_id', 'provider_network_id') type_id = DynamicModelMultipleChoiceField( queryset=CircuitType.objects.all(), required=False, diff --git a/netbox/circuits/forms/model_forms.py b/netbox/circuits/forms/model_forms.py index 8a540032e..0809cb2f4 100644 --- a/netbox/circuits/forms/model_forms.py +++ b/netbox/circuits/forms/model_forms.py @@ -76,14 +76,14 @@ class CircuitTypeForm(NetBoxModelForm): fieldsets = ( (_('Circuit Type'), ( - 'name', 'slug', 'description', 'tags', + 'name', 'slug', 'color', 'description', 'tags', )), ) class Meta: model = CircuitType fields = [ - 'name', 'slug', 'description', 'tags', + 'name', 'slug', 'color', 'description', 'tags', ] diff --git a/netbox/circuits/graphql/types.py b/netbox/circuits/graphql/types.py index 33cb5749d..fc33a81a7 100644 --- a/netbox/circuits/graphql/types.py +++ b/netbox/circuits/graphql/types.py @@ -64,7 +64,8 @@ class CircuitType(NetBoxObjectType, ContactsMixin): @strawberry.django.type( models.CircuitType, - fields='__all__', + # fields='__all__', + exclude=['color',], # bug - remove color from exclude filters=CircuitTypeFilter ) class CircuitTypeType(OrganizationalObjectType): diff --git a/netbox/circuits/migrations/0043_circuittype_color.py b/netbox/circuits/migrations/0043_circuittype_color.py new file mode 100644 index 000000000..6c4dffeb6 --- /dev/null +++ b/netbox/circuits/migrations/0043_circuittype_color.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.5 on 2023-10-20 21:25 + +from django.db import migrations +import utilities.fields + + +class Migration(migrations.Migration): + dependencies = [ + ('circuits', '0042_provideraccount'), + ] + + operations = [ + migrations.AddField( + model_name='circuittype', + name='color', + field=utilities.fields.ColorField(blank=True, max_length=6), + ), + ] diff --git a/netbox/circuits/models/circuits.py b/netbox/circuits/models/circuits.py index 0322b67c6..4dc775364 100644 --- a/netbox/circuits/models/circuits.py +++ b/netbox/circuits/models/circuits.py @@ -7,6 +7,7 @@ from circuits.choices import * from dcim.models import CabledObjectModel from netbox.models import ChangeLoggedModel, OrganizationalModel, PrimaryModel from netbox.models.features import ContactsMixin, CustomFieldsMixin, CustomLinksMixin, ImageAttachmentsMixin, TagsMixin +from utilities.fields import ColorField __all__ = ( 'Circuit', @@ -20,6 +21,11 @@ class CircuitType(OrganizationalModel): Circuits can be organized by their functional role. For example, a user might wish to define CircuitTypes named "Long Haul," "Metro," or "Out-of-Band". """ + color = ColorField( + verbose_name=_('color'), + blank=True + ) + def get_absolute_url(self): return reverse('circuits:circuittype', args=[self.pk]) diff --git a/netbox/circuits/search.py b/netbox/circuits/search.py index b80f92d4d..c22b400eb 100644 --- a/netbox/circuits/search.py +++ b/netbox/circuits/search.py @@ -10,6 +10,7 @@ class CircuitIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('provider', 'provider_account', 'type', 'status', 'tenant', 'description') @register_search @@ -22,6 +23,7 @@ class CircuitTerminationIndex(SearchIndex): ('port_speed', 2000), ('upstream_speed', 2000), ) + display_attrs = ('circuit', 'site', 'provider_network', 'description') @register_search @@ -32,6 +34,7 @@ class CircuitTypeIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -42,6 +45,7 @@ class ProviderIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('description',) class ProviderAccountIndex(SearchIndex): @@ -51,6 +55,7 @@ class ProviderAccountIndex(SearchIndex): ('account', 200), ('comments', 5000), ) + display_attrs = ('provider', 'account', 'description') @register_search @@ -62,3 +67,4 @@ class ProviderNetworkIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('provider', 'service_id', 'description') diff --git a/netbox/circuits/tables/circuits.py b/netbox/circuits/tables/circuits.py index 6a05983e6..6ae727eca 100644 --- a/netbox/circuits/tables/circuits.py +++ b/netbox/circuits/tables/circuits.py @@ -28,6 +28,7 @@ class CircuitTypeTable(NetBoxTable): linkify=True, verbose_name=_('Name'), ) + color = columns.ColorColumn() tags = columns.TagColumn( url_name='circuits:circuittype_list' ) @@ -40,7 +41,7 @@ class CircuitTypeTable(NetBoxTable): class Meta(NetBoxTable.Meta): model = CircuitType fields = ( - 'pk', 'id', 'name', 'circuit_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions', + 'pk', 'id', 'name', 'circuit_count', 'color', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions', ) default_columns = ('pk', 'name', 'circuit_count', 'description', 'slug') diff --git a/netbox/circuits/tests/test_filtersets.py b/netbox/circuits/tests/test_filtersets.py index e3380a1e5..6553179ec 100644 --- a/netbox/circuits/tests/test_filtersets.py +++ b/netbox/circuits/tests/test_filtersets.py @@ -25,8 +25,8 @@ class ProviderTestCase(TestCase, ChangeLoggedFilterSetTests): ASN.objects.bulk_create(asns) providers = ( - Provider(name='Provider 1', slug='provider-1'), - Provider(name='Provider 2', slug='provider-2'), + Provider(name='Provider 1', slug='provider-1', description='foobar1'), + Provider(name='Provider 2', slug='provider-2', description='foobar2'), Provider(name='Provider 3', slug='provider-3'), Provider(name='Provider 4', slug='provider-4'), Provider(name='Provider 5', slug='provider-5'), @@ -74,6 +74,10 @@ class ProviderTestCase(TestCase, ChangeLoggedFilterSetTests): CircuitTermination(circuit=circuits[1], site=sites[0], term_side='A'), )) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Provider 1', 'Provider 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -82,6 +86,10 @@ class ProviderTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'slug': ['provider-1', 'provider-2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_asn_id(self): # ASN object assignment asns = ASN.objects.all()[:2] params = {'asn_id': [asns[0].pk, asns[1].pk]} @@ -122,6 +130,10 @@ class CircuitTypeTestCase(TestCase, ChangeLoggedFilterSetTests): CircuitType(name='Circuit Type 3', slug='circuit-type-3'), )) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Circuit Type 1']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) @@ -227,6 +239,10 @@ class CircuitTestCase(TestCase, ChangeLoggedFilterSetTests): )) CircuitTermination.objects.bulk_create(circuit_terminations) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_cid(self): params = {'cid': ['Test Circuit 1', 'Test Circuit 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -369,6 +385,10 @@ class CircuitTerminationTestCase(TestCase, ChangeLoggedFilterSetTests): Cable(a_terminations=[circuit_terminations[0]], b_terminations=[circuit_terminations[1]]).save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_term_side(self): params = {'term_side': 'A'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 7) @@ -440,6 +460,10 @@ class ProviderNetworkTestCase(TestCase, ChangeLoggedFilterSetTests): ) ProviderNetwork.objects.bulk_create(provider_networks) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Provider Network 1', 'Provider Network 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -477,6 +501,10 @@ class ProviderAccountTestCase(TestCase, ChangeLoggedFilterSetTests): ) ProviderAccount.objects.bulk_create(provider_accounts) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Provider Account 1', 'Provider Account 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/core/api/serializers.py b/netbox/core/api/serializers.py index 4117a609c..4ae426df5 100644 --- a/netbox/core/api/serializers.py +++ b/netbox/core/api/serializers.py @@ -4,6 +4,7 @@ from core.choices import * from core.models import * from netbox.api.fields import ChoiceField, ContentTypeField from netbox.api.serializers import BaseModelSerializer, NetBoxModelSerializer +from netbox.utils import get_data_backend_choices from users.api.nested_serializers import NestedUserSerializer from .nested_serializers import * @@ -19,7 +20,7 @@ class DataSourceSerializer(NetBoxModelSerializer): view_name='core-api:datasource-detail' ) type = ChoiceField( - choices=DataSourceTypeChoices + choices=get_data_backend_choices() ) status = ChoiceField( choices=DataSourceStatusChoices, @@ -68,5 +69,5 @@ class JobSerializer(BaseModelSerializer): model = Job fields = [ 'id', 'url', 'display', 'object_type', 'object_id', 'name', 'status', 'created', 'scheduled', 'interval', - 'started', 'completed', 'user', 'data', 'job_id', + 'started', 'completed', 'user', 'data', 'error', 'job_id', ] diff --git a/netbox/core/apps.py b/netbox/core/apps.py index ffcf0b4ea..2d999c57e 100644 --- a/netbox/core/apps.py +++ b/netbox/core/apps.py @@ -1,4 +1,15 @@ from django.apps import AppConfig +from django.db import models +from django.db.migrations.operations import AlterModelOptions + +from utilities.migration import custom_deconstruct + +# Ignore verbose_name & verbose_name_plural Meta options when calculating model migrations +AlterModelOptions.ALTER_OPTION_KEYS.remove('verbose_name') +AlterModelOptions.ALTER_OPTION_KEYS.remove('verbose_name_plural') + +# Use our custom destructor to ignore certain attributes when calculating field migrations +models.Field.deconstruct = custom_deconstruct class CoreConfig(AppConfig): diff --git a/netbox/core/choices.py b/netbox/core/choices.py index 0067dfed8..8d7050414 100644 --- a/netbox/core/choices.py +++ b/netbox/core/choices.py @@ -7,18 +7,6 @@ from utilities.choices import ChoiceSet # Data sources # -class DataSourceTypeChoices(ChoiceSet): - LOCAL = 'local' - GIT = 'git' - AMAZON_S3 = 'amazon-s3' - - CHOICES = ( - (LOCAL, _('Local'), 'gray'), - (GIT, _('Git'), 'blue'), - (AMAZON_S3, _('Amazon S3'), 'blue'), - ) - - class DataSourceStatusChoices(ChoiceSet): NEW = 'new' QUEUED = 'queued' diff --git a/netbox/core/data_backends.py b/netbox/core/data_backends.py index d947602a6..9ff0b4d63 100644 --- a/netbox/core/data_backends.py +++ b/netbox/core/data_backends.py @@ -10,61 +10,24 @@ from django import forms from django.conf import settings from django.utils.translation import gettext as _ -from netbox.registry import registry -from .choices import DataSourceTypeChoices +from netbox.data_backends import DataBackend +from netbox.utils import register_data_backend from .exceptions import SyncError __all__ = ( - 'LocalBackend', 'GitBackend', + 'LocalBackend', 'S3Backend', ) logger = logging.getLogger('netbox.data_backends') -def register_backend(name): - """ - Decorator for registering a DataBackend class. - """ - - def _wrapper(cls): - registry['data_backends'][name] = cls - return cls - - return _wrapper - - -class DataBackend: - parameters = {} - sensitive_parameters = [] - - # Prevent Django's template engine from calling the backend - # class when referenced via DataSource.backend_class - do_not_call_in_templates = True - - def __init__(self, url, **kwargs): - self.url = url - self.params = kwargs - self.config = self.init_config() - - def init_config(self): - """ - Hook to initialize the instance's configuration. - """ - return - - @property - def url_scheme(self): - return urlparse(self.url).scheme.lower() - - @contextmanager - def fetch(self): - raise NotImplemented() - - -@register_backend(DataSourceTypeChoices.LOCAL) +@register_data_backend() class LocalBackend(DataBackend): + name = 'local' + label = _('Local') + is_local = True @contextmanager def fetch(self): @@ -74,20 +37,22 @@ class LocalBackend(DataBackend): yield local_path -@register_backend(DataSourceTypeChoices.GIT) +@register_data_backend() class GitBackend(DataBackend): + name = 'git' + label = 'Git' parameters = { 'username': forms.CharField( required=False, label=_('Username'), widget=forms.TextInput(attrs={'class': 'form-control'}), - help_text=_("Only used for cloning with HTTP / HTTPS"), + help_text=_("Only used for cloning with HTTP(S)"), ), 'password': forms.CharField( required=False, label=_('Password'), widget=forms.TextInput(attrs={'class': 'form-control'}), - help_text=_("Only used for cloning with HTTP / HTTPS"), + help_text=_("Only used for cloning with HTTP(S)"), ), 'branch': forms.CharField( required=False, @@ -125,12 +90,13 @@ class GitBackend(DataBackend): } if self.url_scheme in ('http', 'https'): - clone_args.update( - { - "username": self.params.get('username'), - "password": self.params.get('password'), - } - ) + if self.params.get('username'): + clone_args.update( + { + "username": self.params.get('username'), + "password": self.params.get('password'), + } + ) logger.debug(f"Cloning git repo: {self.url}") try: @@ -143,8 +109,10 @@ class GitBackend(DataBackend): local_path.cleanup() -@register_backend(DataSourceTypeChoices.AMAZON_S3) +@register_data_backend() class S3Backend(DataBackend): + name = 'amazon-s3' + label = 'Amazon S3' parameters = { 'aws_access_key_id': forms.CharField( label=_('AWS access key ID'), diff --git a/netbox/core/filtersets.py b/netbox/core/filtersets.py index 62a58086a..902e240ee 100644 --- a/netbox/core/filtersets.py +++ b/netbox/core/filtersets.py @@ -4,10 +4,12 @@ from django.utils.translation import gettext as _ import django_filters from netbox.filtersets import BaseFilterSet, ChangeLoggedModelFilterSet, NetBoxModelFilterSet +from netbox.utils import get_data_backend_choices from .choices import * from .models import * __all__ = ( + 'ConfigRevisionFilterSet', 'DataFileFilterSet', 'DataSourceFilterSet', 'JobFilterSet', @@ -16,7 +18,7 @@ __all__ = ( class DataSourceFilterSet(NetBoxModelFilterSet): type = django_filters.MultipleChoiceFilter( - choices=DataSourceTypeChoices, + choices=get_data_backend_choices, null_value=None ) status = django_filters.MultipleChoiceFilter( @@ -26,7 +28,7 @@ class DataSourceFilterSet(NetBoxModelFilterSet): class Meta: model = DataSource - fields = ('id', 'name', 'enabled') + fields = ('id', 'name', 'enabled', 'description') def search(self, queryset, name, value): if not value.strip(): @@ -122,3 +124,23 @@ class JobFilterSet(BaseFilterSet): Q(user__username__icontains=value) | Q(name__icontains=value) ) + + +class ConfigRevisionFilterSet(BaseFilterSet): + q = django_filters.CharFilter( + method='search', + label=_('Search'), + ) + + class Meta: + model = ConfigRevision + fields = [ + 'id', + ] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(comment__icontains=value) + ) diff --git a/netbox/core/forms/bulk_edit.py b/netbox/core/forms/bulk_edit.py index a4ecd646f..dcc92c6f0 100644 --- a/netbox/core/forms/bulk_edit.py +++ b/netbox/core/forms/bulk_edit.py @@ -1,10 +1,9 @@ from django import forms from django.utils.translation import gettext_lazy as _ -from core.choices import DataSourceTypeChoices from core.models import * from netbox.forms import NetBoxModelBulkEditForm -from utilities.forms import add_blank_choice +from netbox.utils import get_data_backend_choices from utilities.forms.fields import CommentField from utilities.forms.widgets import BulkEditNullBooleanSelect @@ -16,9 +15,8 @@ __all__ = ( class DataSourceBulkEditForm(NetBoxModelBulkEditForm): type = forms.ChoiceField( label=_('Type'), - choices=add_blank_choice(DataSourceTypeChoices), - required=False, - initial='' + choices=get_data_backend_choices, + required=False ) enabled = forms.NullBooleanField( required=False, diff --git a/netbox/core/forms/filtersets.py b/netbox/core/forms/filtersets.py index f7a6f3595..f21bd3f87 100644 --- a/netbox/core/forms/filtersets.py +++ b/netbox/core/forms/filtersets.py @@ -1,18 +1,18 @@ from django import forms from django.contrib.auth import get_user_model -from django.contrib.contenttypes.models import ContentType from django.utils.translation import gettext_lazy as _ from core.choices import * from core.models import * -from extras.forms.mixins import SavedFiltersMixin -from extras.utils import FeatureQuery from netbox.forms import NetBoxModelFilterSetForm +from netbox.forms.mixins import SavedFiltersMixin +from netbox.utils import get_data_backend_choices from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm from utilities.forms.fields import ContentTypeChoiceField, DynamicModelMultipleChoiceField from utilities.forms.widgets import APISelectMultiple, DateTimePicker __all__ = ( + 'ConfigRevisionFilterForm', 'DataFileFilterForm', 'DataSourceFilterForm', 'JobFilterForm', @@ -27,7 +27,7 @@ class DataSourceFilterForm(NetBoxModelFilterSetForm): ) type = forms.MultipleChoiceField( label=_('Type'), - choices=DataSourceTypeChoices, + choices=get_data_backend_choices, required=False ) status = forms.MultipleChoiceField( @@ -68,7 +68,7 @@ class JobFilterForm(SavedFiltersMixin, FilterForm): ) object_type = ContentTypeChoiceField( label=_('Object Type'), - queryset=ContentType.objects.filter(FeatureQuery('jobs').get_query()), + queryset=ContentType.objects.with_feature('jobs'), required=False, ) status = forms.MultipleChoiceField( @@ -124,3 +124,9 @@ class JobFilterForm(SavedFiltersMixin, FilterForm): api_url='/api/users/users/', ) ) + + +class ConfigRevisionFilterForm(SavedFiltersMixin, FilterForm): + fieldsets = ( + (None, ('q', 'filter_id')), + ) diff --git a/netbox/core/forms/model_forms.py b/netbox/core/forms/model_forms.py index 01d5474c6..652728734 100644 --- a/netbox/core/forms/model_forms.py +++ b/netbox/core/forms/model_forms.py @@ -1,23 +1,34 @@ import copy +import json from django import forms +from django.conf import settings from django.utils.translation import gettext_lazy as _ from core.forms.mixins import SyncedDataMixin from core.models import * +from netbox.config import get_config, PARAMS from netbox.forms import NetBoxModelForm from netbox.registry import registry -from utilities.forms import get_field_value +from netbox.utils import get_data_backend_choices +from utilities.forms import BootstrapMixin, get_field_value from utilities.forms.fields import CommentField from utilities.forms.widgets import HTMXSelect __all__ = ( + 'ConfigRevisionForm', 'DataSourceForm', 'ManagedFileForm', ) +EMPTY_VALUES = ('', None, [], ()) + class DataSourceForm(NetBoxModelForm): + type = forms.ChoiceField( + choices=get_data_backend_choices, + widget=HTMXSelect() + ) comments = CommentField() class Meta: @@ -26,7 +37,6 @@ class DataSourceForm(NetBoxModelForm): 'name', 'type', 'source_url', 'enabled', 'description', 'comments', 'ignore_rules', 'tags', ] widgets = { - 'type': HTMXSelect(), 'ignore_rules': forms.Textarea( attrs={ 'rows': 5, @@ -56,12 +66,13 @@ class DataSourceForm(NetBoxModelForm): # Add backend-specific form fields self.backend_fields = [] - for name, form_field in backend.parameters.items(): - field_name = f'backend_{name}' - self.backend_fields.append(field_name) - self.fields[field_name] = copy.copy(form_field) - if self.instance and self.instance.parameters: - self.fields[field_name].initial = self.instance.parameters.get(name) + if backend: + for name, form_field in backend.parameters.items(): + field_name = f'backend_{name}' + self.backend_fields.append(field_name) + self.fields[field_name] = copy.copy(form_field) + if self.instance and self.instance.parameters: + self.fields[field_name].initial = self.instance.parameters.get(name) def save(self, *args, **kwargs): @@ -106,3 +117,113 @@ class ManagedFileForm(SyncedDataMixin, NetBoxModelForm): new_file.write(self.cleaned_data['upload_file'].read()) return super().save(*args, **kwargs) + + +class ConfigFormMetaclass(forms.models.ModelFormMetaclass): + + def __new__(mcs, name, bases, attrs): + + # Emulate a declared field for each supported configuration parameter + param_fields = {} + for param in PARAMS: + field_kwargs = { + 'required': False, + 'label': param.label, + 'help_text': param.description, + } + field_kwargs.update(**param.field_kwargs) + param_fields[param.name] = param.field(**field_kwargs) + attrs.update(param_fields) + + return super().__new__(mcs, name, bases, attrs) + + +class ConfigRevisionForm(BootstrapMixin, forms.ModelForm, metaclass=ConfigFormMetaclass): + """ + Form for creating a new ConfigRevision. + """ + + fieldsets = ( + (_('Rack Elevations'), ('RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH')), + (_('Power'), ('POWERFEED_DEFAULT_VOLTAGE', 'POWERFEED_DEFAULT_AMPERAGE', 'POWERFEED_DEFAULT_MAX_UTILIZATION')), + (_('IPAM'), ('ENFORCE_GLOBAL_UNIQUE', 'PREFER_IPV4')), + (_('Security'), ('ALLOWED_URL_SCHEMES',)), + (_('Banners'), ('BANNER_LOGIN', 'BANNER_MAINTENANCE', 'BANNER_TOP', 'BANNER_BOTTOM')), + (_('Pagination'), ('PAGINATE_COUNT', 'MAX_PAGE_SIZE')), + (_('Validation'), ('CUSTOM_VALIDATORS', 'PROTECTION_RULES')), + (_('User Preferences'), ('DEFAULT_USER_PREFERENCES',)), + (_('Miscellaneous'), ( + 'MAINTENANCE_MODE', 'GRAPHQL_ENABLED', 'CHANGELOG_RETENTION', 'JOB_RETENTION', 'MAPS_URL', + )), + (_('Config Revision'), ('comment',)) + ) + + class Meta: + model = ConfigRevision + fields = '__all__' + widgets = { + 'BANNER_LOGIN': forms.Textarea(attrs={'class': 'font-monospace'}), + 'BANNER_MAINTENANCE': forms.Textarea(attrs={'class': 'font-monospace'}), + 'BANNER_TOP': forms.Textarea(attrs={'class': 'font-monospace'}), + 'BANNER_BOTTOM': forms.Textarea(attrs={'class': 'font-monospace'}), + 'CUSTOM_VALIDATORS': forms.Textarea(attrs={'class': 'font-monospace'}), + 'PROTECTION_RULES': forms.Textarea(attrs={'class': 'font-monospace'}), + 'comment': forms.Textarea(), + } + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Append current parameter values to form field help texts and check for static configurations + config = get_config() + for param in PARAMS: + value = getattr(config, param.name) + + # Set the field's initial value, if it can be serialized. (This may not be the case e.g. for + # CUSTOM_VALIDATORS, which may reference Python objects.) + try: + json.dumps(value) + if type(value) in (tuple, list): + self.fields[param.name].initial = ', '.join(value) + else: + self.fields[param.name].initial = value + except TypeError: + pass + + # Check whether this parameter is statically configured (e.g. in configuration.py) + if hasattr(settings, param.name): + self.fields[param.name].disabled = True + self.fields[param.name].help_text = _( + 'This parameter has been defined statically and cannot be modified.' + ) + continue + + # Set the field's help text + help_text = self.fields[param.name].help_text + if help_text: + help_text += '
' # Line break + help_text += _('Current value: {value}').format(value=value or '—') + if value == param.default: + help_text += _(' (default)') + self.fields[param.name].help_text = help_text + + def save(self, commit=True): + instance = super().save(commit=False) + + # Populate JSON data on the instance + instance.data = self.render_json() + + if commit: + instance.save() + + return instance + + def render_json(self): + json = {} + + # Iterate through each field and populate non-empty values + for field_name in self.declared_fields: + if field_name in self.cleaned_data and self.cleaned_data[field_name] not in EMPTY_VALUES: + json[field_name] = self.cleaned_data[field_name] + + return json diff --git a/netbox/core/jobs.py b/netbox/core/jobs.py index d25981920..264313e62 100644 --- a/netbox/core/jobs.py +++ b/netbox/core/jobs.py @@ -25,7 +25,7 @@ def sync_datasource(job, *args, **kwargs): job.terminate() except Exception as e: - job.terminate(status=JobStatusChoices.STATUS_ERRORED) + job.terminate(status=JobStatusChoices.STATUS_ERRORED, error=repr(e)) DataSource.objects.filter(pk=datasource.pk).update(status=DataSourceStatusChoices.FAILED) if type(e) in (SyncError, JobTimeoutException): logging.error(e) diff --git a/netbox/core/management/commands/clearcache.py b/netbox/core/management/commands/clearcache.py deleted file mode 100644 index 22843c490..000000000 --- a/netbox/core/management/commands/clearcache.py +++ /dev/null @@ -1,11 +0,0 @@ -from django.core.cache import cache -from django.core.management.base import BaseCommand - - -class Command(BaseCommand): - """Command to clear the entire cache.""" - help = 'Clears the cache.' - - def handle(self, *args, **kwargs): - cache.clear() - self.stdout.write('Cache has been cleared.', ending="\n") diff --git a/netbox/core/management/commands/makemigrations.py b/netbox/core/management/commands/makemigrations.py index 10874418a..ce40bd3cc 100644 --- a/netbox/core/management/commands/makemigrations.py +++ b/netbox/core/management/commands/makemigrations.py @@ -1,18 +1,6 @@ -# noinspection PyUnresolvedReferences from django.conf import settings from django.core.management.base import CommandError from django.core.management.commands.makemigrations import Command as _Command -from django.db import models -from django.db.migrations.operations import AlterModelOptions - -from utilities.migration import custom_deconstruct - -# Monkey patch AlterModelOptions to ignore verbose name attributes -AlterModelOptions.ALTER_OPTION_KEYS.remove('verbose_name') -AlterModelOptions.ALTER_OPTION_KEYS.remove('verbose_name_plural') - -# Set our custom deconstructor for fields -models.Field.deconstruct = custom_deconstruct class Command(_Command): diff --git a/netbox/core/management/commands/migrate.py b/netbox/core/management/commands/migrate.py deleted file mode 100644 index 8d5e45a40..000000000 --- a/netbox/core/management/commands/migrate.py +++ /dev/null @@ -1,7 +0,0 @@ -# noinspection PyUnresolvedReferences -from django.core.management.commands.migrate import Command -from django.db import models - -from utilities.migration import custom_deconstruct - -models.Field.deconstruct = custom_deconstruct diff --git a/netbox/core/management/commands/nbshell.py b/netbox/core/management/commands/nbshell.py index 674a878c7..eeefe502b 100644 --- a/netbox/core/management/commands/nbshell.py +++ b/netbox/core/management/commands/nbshell.py @@ -6,10 +6,11 @@ from django import get_version from django.apps import apps from django.conf import settings from django.contrib.auth import get_user_model -from django.contrib.contenttypes.models import ContentType from django.core.management.base import BaseCommand -APPS = ('circuits', 'core', 'dcim', 'extras', 'ipam', 'tenancy', 'users', 'virtualization', 'wireless') +from core.models import ContentType + +APPS = ('circuits', 'core', 'dcim', 'extras', 'ipam', 'tenancy', 'users', 'virtualization', 'vpn', 'wireless') BANNER_TEXT = """### NetBox interactive shell ({node}) ### Python {python} | Django {django} | NetBox {netbox} diff --git a/netbox/core/management/commands/syncdatasource.py b/netbox/core/management/commands/syncdatasource.py index 3d73f70ab..aa8137952 100644 --- a/netbox/core/management/commands/syncdatasource.py +++ b/netbox/core/management/commands/syncdatasource.py @@ -1,5 +1,6 @@ from django.core.management.base import BaseCommand, CommandError +from core.choices import DataSourceStatusChoices from core.models import DataSource @@ -33,9 +34,13 @@ class Command(BaseCommand): for i, datasource in enumerate(datasources, start=1): self.stdout.write(f"[{i}] Syncing {datasource}... ", ending='') self.stdout.flush() - datasource.sync() - self.stdout.write(datasource.get_status_display()) - self.stdout.flush() + try: + datasource.sync() + self.stdout.write(datasource.get_status_display()) + self.stdout.flush() + except Exception as e: + DataSource.objects.filter(pk=datasource.pk).update(status=DataSourceStatusChoices.FAILED) + raise e if len(options['name']) > 1: self.stdout.write(f"Finished.") diff --git a/netbox/core/migrations/0003_job.py b/netbox/core/migrations/0003_job.py index ab6f058ff..f2fe41afb 100644 --- a/netbox/core/migrations/0003_job.py +++ b/netbox/core/migrations/0003_job.py @@ -4,7 +4,6 @@ from django.conf import settings import django.core.validators from django.db import migrations, models import django.db.models.deletion -import extras.utils class Migration(migrations.Migration): @@ -30,7 +29,7 @@ class Migration(migrations.Migration): ('status', models.CharField(default='pending', max_length=30)), ('data', models.JSONField(blank=True, null=True)), ('job_id', models.UUIDField(unique=True)), - ('object_type', models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('jobs'), on_delete=django.db.models.deletion.CASCADE, related_name='jobs', to='contenttypes.contenttype')), + ('object_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='jobs', to='contenttypes.contenttype')), ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), ], options={ diff --git a/netbox/core/migrations/0006_datasource_type_remove_choices.py b/netbox/core/migrations/0006_datasource_type_remove_choices.py new file mode 100644 index 000000000..0ad8d8854 --- /dev/null +++ b/netbox/core/migrations/0006_datasource_type_remove_choices.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.6 on 2023-10-20 17:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0005_job_created_auto_now'), + ] + + operations = [ + migrations.AlterField( + model_name='datasource', + name='type', + field=models.CharField(max_length=50), + ), + ] diff --git a/netbox/core/migrations/0007_job_add_error_field.py b/netbox/core/migrations/0007_job_add_error_field.py new file mode 100644 index 000000000..e2e173bfd --- /dev/null +++ b/netbox/core/migrations/0007_job_add_error_field.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.6 on 2023-10-23 20:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0006_datasource_type_remove_choices'), + ] + + operations = [ + migrations.AddField( + model_name='job', + name='error', + field=models.TextField(blank=True, editable=False), + ), + ] diff --git a/netbox/core/migrations/0008_contenttype_proxy.py b/netbox/core/migrations/0008_contenttype_proxy.py new file mode 100644 index 000000000..ac11d906a --- /dev/null +++ b/netbox/core/migrations/0008_contenttype_proxy.py @@ -0,0 +1,29 @@ +# Generated by Django 4.2.6 on 2023-10-31 19:38 + +import core.models.contenttypes +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('core', '0007_job_add_error_field'), + ] + + operations = [ + migrations.CreateModel( + name='ContentType', + fields=[ + ], + options={ + 'proxy': True, + 'indexes': [], + 'constraints': [], + }, + bases=('contenttypes.contenttype',), + managers=[ + ('objects', core.models.contenttypes.ContentTypeManager()), + ], + ), + ] diff --git a/netbox/core/migrations/0009_configrevision.py b/netbox/core/migrations/0009_configrevision.py new file mode 100644 index 000000000..e7f817a16 --- /dev/null +++ b/netbox/core/migrations/0009_configrevision.py @@ -0,0 +1,31 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0008_contenttype_proxy'), + ] + + operations = [ + migrations.SeparateDatabaseAndState( + state_operations=[ + migrations.CreateModel( + name='ConfigRevision', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('comment', models.CharField(blank=True, max_length=200)), + ('data', models.JSONField(blank=True, null=True)), + ], + options={ + 'verbose_name': 'config revision', + 'verbose_name_plural': 'config revisions', + 'ordering': ['-created'], + }, + ), + ], + # Table will be renamed from extras_configrevision in extras/0101_move_configrevision + database_operations=[], + ), + ] diff --git a/netbox/core/migrations/0010_gfk_indexes.py b/netbox/core/migrations/0010_gfk_indexes.py new file mode 100644 index 000000000..d51bc67ad --- /dev/null +++ b/netbox/core/migrations/0010_gfk_indexes.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.7 on 2023-12-07 16:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0009_configrevision'), + ] + + operations = [ + migrations.AddIndex( + model_name='job', + index=models.Index(fields=['object_type', 'object_id'], name='core_job_object__c664ac_idx'), + ), + ] diff --git a/netbox/core/models/__init__.py b/netbox/core/models/__init__.py index 185622f5f..2c30ce02b 100644 --- a/netbox/core/models/__init__.py +++ b/netbox/core/models/__init__.py @@ -1,3 +1,5 @@ +from .config import * +from .contenttypes import * from .data import * from .files import * from .jobs import * diff --git a/netbox/core/models/config.py b/netbox/core/models/config.py new file mode 100644 index 000000000..6c8e41477 --- /dev/null +++ b/netbox/core/models/config.py @@ -0,0 +1,66 @@ +from django.core.cache import cache +from django.db import models +from django.urls import reverse +from django.utils.translation import gettext, gettext_lazy as _ + +from utilities.querysets import RestrictedQuerySet + +__all__ = ( + 'ConfigRevision', +) + + +class ConfigRevision(models.Model): + """ + An atomic revision of NetBox's configuration. + """ + created = models.DateTimeField( + verbose_name=_('created'), + auto_now_add=True + ) + comment = models.CharField( + verbose_name=_('comment'), + max_length=200, + blank=True + ) + data = models.JSONField( + blank=True, + null=True, + verbose_name=_('configuration data') + ) + + objects = RestrictedQuerySet.as_manager() + + class Meta: + ordering = ['-created'] + verbose_name = _('config revision') + verbose_name_plural = _('config revisions') + + def __str__(self): + if not self.pk: + return gettext('Default configuration') + if self.is_active: + return gettext('Current configuration') + return gettext('Config revision #{id}').format(id=self.pk) + + def __getattr__(self, item): + if item in self.data: + return self.data[item] + return super().__getattribute__(item) + + def get_absolute_url(self): + if not self.pk: + return reverse('core:config') # Default config view + return reverse('core:configrevision', args=[self.pk]) + + def activate(self): + """ + Cache the configuration data. + """ + cache.set('config', self.data, None) + cache.set('config_version', self.pk, None) + activate.alters_data = True + + @property + def is_active(self): + return cache.get('config_version') == self.pk diff --git a/netbox/core/models/contenttypes.py b/netbox/core/models/contenttypes.py new file mode 100644 index 000000000..c98184c3d --- /dev/null +++ b/netbox/core/models/contenttypes.py @@ -0,0 +1,50 @@ +from django.contrib.contenttypes.models import ContentType as ContentType_, ContentTypeManager as ContentTypeManager_ +from django.db.models import Q + +from netbox.registry import registry + +__all__ = ( + 'ContentType', + 'ContentTypeManager', +) + + +class ContentTypeManager(ContentTypeManager_): + + def public(self): + """ + Filter the base queryset to return only ContentTypes corresponding to "public" models; those which are listed + in registry['models'] and intended for reference by other objects. + """ + q = Q() + for app_label, models in registry['models'].items(): + q |= Q(app_label=app_label, model__in=models) + return self.get_queryset().filter(q) + + def with_feature(self, feature): + """ + Return the ContentTypes only for models which are registered as supporting the specified feature. For example, + we can find all ContentTypes for models which support webhooks with + + ContentType.objects.with_feature('event_rules') + """ + if feature not in registry['model_features']: + raise KeyError( + f"{feature} is not a registered model feature! Valid features are: {registry['model_features'].keys()}" + ) + + q = Q() + for app_label, models in registry['model_features'][feature].items(): + q |= Q(app_label=app_label, model__in=models) + + return self.get_queryset().filter(q) + + +class ContentType(ContentType_): + """ + Wrap Django's native ContentType model to use our custom manager. + """ + objects = ContentTypeManager() + + class Meta: + proxy = True diff --git a/netbox/core/models/data.py b/netbox/core/models/data.py index 8e372c2eb..efda879af 100644 --- a/netbox/core/models/data.py +++ b/netbox/core/models/data.py @@ -6,7 +6,6 @@ from urllib.parse import urlparse from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.core.validators import RegexValidator from django.db import models @@ -45,9 +44,7 @@ class DataSource(JobsMixin, PrimaryModel): ) type = models.CharField( verbose_name=_('type'), - max_length=50, - choices=DataSourceTypeChoices, - default=DataSourceTypeChoices.LOCAL + max_length=50 ) source_url = models.CharField( max_length=200, @@ -96,8 +93,9 @@ class DataSource(JobsMixin, PrimaryModel): def docs_url(self): return f'{settings.STATIC_URL}docs/models/{self._meta.app_label}/{self._meta.model_name}/' - def get_type_color(self): - return DataSourceTypeChoices.colors.get(self.type) + def get_type_display(self): + if backend := registry['data_backends'].get(self.type): + return backend.label def get_status_color(self): return DataSourceStatusChoices.colors.get(self.status) @@ -110,10 +108,6 @@ class DataSource(JobsMixin, PrimaryModel): def backend_class(self): return registry['data_backends'].get(self.type) - @property - def is_local(self): - return self.type == DataSourceTypeChoices.LOCAL - @property def ready_for_sync(self): return self.enabled and self.status not in ( @@ -122,9 +116,16 @@ class DataSource(JobsMixin, PrimaryModel): ) def clean(self): + super().clean() + + # Validate data backend type + if self.type and self.type not in registry['data_backends']: + raise ValidationError({ + 'type': _("Unknown backend type: {type}".format(type=self.type)) + }) # Ensure URL scheme matches selected type - if self.type == DataSourceTypeChoices.LOCAL and self.url_scheme not in ('file', ''): + if self.backend_class.is_local and self.url_scheme not in ('file', ''): raise ValidationError({ 'source_url': f"URLs for local sources must start with file:// (or specify no scheme)" }) @@ -316,7 +317,7 @@ class DataFile(models.Model): if not self.data: return None try: - return bytes(self.data, 'utf-8') + return self.data.decode('utf-8') except UnicodeDecodeError: return None @@ -367,7 +368,7 @@ class AutoSyncRecord(models.Model): related_name='+' ) object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.CASCADE, related_name='+' ) @@ -377,6 +378,8 @@ class AutoSyncRecord(models.Model): fk_field='object_id' ) + _netbox_private = True + class Meta: constraints = ( models.UniqueConstraint( diff --git a/netbox/core/models/files.py b/netbox/core/models/files.py index 38d82463e..5a321bdc3 100644 --- a/netbox/core/models/files.py +++ b/netbox/core/models/files.py @@ -2,6 +2,7 @@ import logging import os from django.conf import settings +from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse from django.utils.translation import gettext as _ @@ -44,6 +45,7 @@ class ManagedFile(SyncedDataMixin, models.Model): ) objects = RestrictedQuerySet.as_manager() + _netbox_private = True class Meta: ordering = ('file_root', 'file_path') @@ -84,6 +86,14 @@ class ManagedFile(SyncedDataMixin, models.Model): self.file_path = os.path.basename(self.data_path) self.data_file.write_to_disk(self.full_path, overwrite=True) + def clean(self): + super().clean() + + # Ensure that the file root and path make a unique pair + if self._meta.model.objects.filter(file_root=self.file_root, file_path=self.file_path).exclude(pk=self.pk).exists(): + raise ValidationError( + f"A {self._meta.verbose_name.lower()} with this file path already exists ({self.file_root}/{self.file_path}).") + def delete(self, *args, **kwargs): # Delete file from disk try: diff --git a/netbox/core/models/jobs.py b/netbox/core/models/jobs.py index 61b0e64fa..7cc62a15a 100644 --- a/netbox/core/models/jobs.py +++ b/netbox/core/models/jobs.py @@ -3,7 +3,7 @@ import uuid import django_rq from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ValidationError from django.core.validators import MinValueValidator from django.db import models from django.urls import reverse @@ -11,12 +11,13 @@ from django.utils import timezone from django.utils.translation import gettext as _ from core.choices import JobStatusChoices +from core.models import ContentType +from core.signals import job_end, job_start from extras.constants import EVENT_JOB_END, EVENT_JOB_START -from extras.utils import FeatureQuery from netbox.config import get_config from netbox.constants import RQ_QUEUE_DEFAULT from utilities.querysets import RestrictedQuerySet -from utilities.rqworker import get_queue_for_model, get_rq_retry +from utilities.rqworker import get_queue_for_model __all__ = ( 'Job', @@ -28,9 +29,8 @@ class Job(models.Model): Tracks the lifecycle of a job which represents a background task (e.g. the execution of a custom script). """ object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', related_name='jobs', - limit_choices_to=FeatureQuery('jobs'), on_delete=models.CASCADE, ) object_id = models.PositiveBigIntegerField( @@ -92,6 +92,11 @@ class Job(models.Model): null=True, blank=True ) + error = models.TextField( + verbose_name=_('error'), + editable=False, + blank=True + ) job_id = models.UUIDField( verbose_name=_('job ID'), unique=True @@ -101,6 +106,9 @@ class Job(models.Model): class Meta: ordering = ['-created'] + indexes = ( + models.Index(fields=('object_type', 'object_id')), + ) verbose_name = _('job') verbose_name_plural = _('jobs') @@ -118,6 +126,15 @@ class Job(models.Model): def get_status_color(self): return JobStatusChoices.colors.get(self.status) + def clean(self): + super().clean() + + # Validate the assigned object type + if self.object_type not in ContentType.objects.with_feature('jobs'): + raise ValidationError( + _("Jobs cannot be assigned to this object type ({type}).").format(type=self.object_type) + ) + @property def duration(self): if not self.completed: @@ -155,10 +172,10 @@ class Job(models.Model): self.status = JobStatusChoices.STATUS_RUNNING self.save() - # Handle webhooks - self.trigger_webhooks(event=EVENT_JOB_START) + # Send signal + job_start.send(self) - def terminate(self, status=JobStatusChoices.STATUS_COMPLETED): + def terminate(self, status=JobStatusChoices.STATUS_COMPLETED, error=None): """ Mark the job as completed, optionally specifying a particular termination status. """ @@ -168,11 +185,13 @@ class Job(models.Model): # Mark the job as completed self.status = status + if error: + self.error = error self.completed = timezone.now() self.save() - # Handle webhooks - self.trigger_webhooks(event=EVENT_JOB_END) + # Send signal + job_end.send(self) @classmethod def enqueue(cls, func, instance, name='', user=None, schedule_at=None, interval=None, **kwargs): @@ -208,28 +227,3 @@ class Job(models.Model): queue.enqueue(func, job_id=str(job.job_id), job=job, **kwargs) return job - - def trigger_webhooks(self, event): - from extras.models import Webhook - - rq_queue_name = get_config().QUEUE_MAPPINGS.get('webhook', RQ_QUEUE_DEFAULT) - rq_queue = django_rq.get_queue(rq_queue_name, is_async=False) - - # Fetch any webhooks matching this object type and action - webhooks = Webhook.objects.filter( - **{f'type_{event}': True}, - content_types=self.object_type, - enabled=True - ) - - for webhook in webhooks: - rq_queue.enqueue( - "extras.webhooks_worker.process_webhook", - webhook=webhook, - model_name=self.object_type.model, - event=event, - data=self.data, - timestamp=str(timezone.now()), - username=self.user.username, - retry=get_rq_retry() - ) diff --git a/netbox/core/search.py b/netbox/core/search.py index e6d3005e6..158911e6a 100644 --- a/netbox/core/search.py +++ b/netbox/core/search.py @@ -11,6 +11,7 @@ class DataSourceIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('type', 'status', 'description') @register_search @@ -19,3 +20,4 @@ class DataFileIndex(SearchIndex): fields = ( ('path', 200), ) + display_attrs = ('source',) diff --git a/netbox/core/signals.py b/netbox/core/signals.py index a39a87c6a..f884a27b4 100644 --- a/netbox/core/signals.py +++ b/netbox/core/signals.py @@ -1,10 +1,19 @@ +from django.db.models.signals import post_save from django.dispatch import Signal, receiver +from .models import ConfigRevision + __all__ = ( + 'job_end', + 'job_start', 'post_sync', 'pre_sync', ) +# Job signals +job_start = Signal() +job_end = Signal() + # DataSource signals pre_sync = Signal() post_sync = Signal() @@ -19,3 +28,11 @@ def auto_sync(instance, **kwargs): for autosync in AutoSyncRecord.objects.filter(datafile__source=instance).prefetch_related('object'): autosync.object.sync(save=True) + + +@receiver(post_save, sender=ConfigRevision) +def update_config(sender, instance, **kwargs): + """ + Update the cached NetBox configuration when a new ConfigRevision is created. + """ + instance.activate() diff --git a/netbox/core/tables/__init__.py b/netbox/core/tables/__init__.py index 052f68b68..69f9d8a48 100644 --- a/netbox/core/tables/__init__.py +++ b/netbox/core/tables/__init__.py @@ -1,2 +1,3 @@ +from .config import * from .data import * from .jobs import * diff --git a/netbox/core/tables/columns.py b/netbox/core/tables/columns.py new file mode 100644 index 000000000..93f1e3901 --- /dev/null +++ b/netbox/core/tables/columns.py @@ -0,0 +1,20 @@ +import django_tables2 as tables + +from netbox.registry import registry + +__all__ = ( + 'BackendTypeColumn', +) + + +class BackendTypeColumn(tables.Column): + """ + Display a data backend type. + """ + def render(self, value): + if backend := registry['data_backends'].get(value): + return backend.label + return value + + def value(self, value): + return value diff --git a/netbox/core/tables/config.py b/netbox/core/tables/config.py new file mode 100644 index 000000000..9d4cb6393 --- /dev/null +++ b/netbox/core/tables/config.py @@ -0,0 +1,33 @@ +from django.utils.translation import gettext_lazy as _ + +from core.models import ConfigRevision +from netbox.tables import NetBoxTable, columns + +__all__ = ( + 'ConfigRevisionTable', +) + +REVISION_BUTTONS = """ +{% if not record.is_active %} + + + +{% endif %} +""" + + +class ConfigRevisionTable(NetBoxTable): + is_active = columns.BooleanColumn( + verbose_name=_('Is Active'), + ) + actions = columns.ActionsColumn( + actions=('delete',), + extra_buttons=REVISION_BUTTONS + ) + + class Meta(NetBoxTable.Meta): + model = ConfigRevision + fields = ( + 'pk', 'id', 'is_active', 'created', 'comment', + ) + default_columns = ('pk', 'id', 'is_active', 'created', 'comment') diff --git a/netbox/core/tables/data.py b/netbox/core/tables/data.py index 1ecc42369..4059ea9bc 100644 --- a/netbox/core/tables/data.py +++ b/netbox/core/tables/data.py @@ -3,6 +3,7 @@ import django_tables2 as tables from core.models import * from netbox.tables import NetBoxTable, columns +from .columns import BackendTypeColumn __all__ = ( 'DataFileTable', @@ -15,8 +16,8 @@ class DataSourceTable(NetBoxTable): verbose_name=_('Name'), linkify=True ) - type = columns.ChoiceFieldColumn( - verbose_name=_('Type'), + type = BackendTypeColumn( + verbose_name=_('Type') ) status = columns.ChoiceFieldColumn( verbose_name=_('Status'), @@ -34,8 +35,8 @@ class DataSourceTable(NetBoxTable): class Meta(NetBoxTable.Meta): model = DataSource fields = ( - 'pk', 'id', 'name', 'type', 'status', 'enabled', 'source_url', 'description', 'comments', 'parameters', 'created', - 'last_updated', 'file_count', + 'pk', 'id', 'name', 'type', 'status', 'enabled', 'source_url', 'description', 'comments', 'parameters', + 'created', 'last_updated', 'file_count', ) default_columns = ('pk', 'name', 'type', 'status', 'enabled', 'description', 'file_count') diff --git a/netbox/core/tables/jobs.py b/netbox/core/tables/jobs.py index 32ca67f7f..ac27224b3 100644 --- a/netbox/core/tables/jobs.py +++ b/netbox/core/tables/jobs.py @@ -19,7 +19,8 @@ class JobTable(NetBoxTable): ) object = tables.Column( verbose_name=_('Object'), - linkify=True + linkify=True, + orderable=False ) status = columns.ChoiceFieldColumn( verbose_name=_('Status'), @@ -47,7 +48,7 @@ class JobTable(NetBoxTable): model = Job fields = ( 'pk', 'id', 'object_type', 'object', 'name', 'status', 'created', 'scheduled', 'interval', 'started', - 'completed', 'user', 'job_id', + 'completed', 'user', 'error', 'job_id', ) default_columns = ( 'pk', 'id', 'object_type', 'object', 'name', 'status', 'created', 'started', 'completed', 'user', diff --git a/netbox/core/tests/test_api.py b/netbox/core/tests/test_api.py index dc6d6a5ce..cd25761f0 100644 --- a/netbox/core/tests/test_api.py +++ b/netbox/core/tests/test_api.py @@ -2,7 +2,6 @@ from django.urls import reverse from django.utils import timezone from utilities.testing import APITestCase, APIViewTestCases -from ..choices import * from ..models import * @@ -26,26 +25,26 @@ class DataSourceTest(APIViewTestCases.APIViewTestCase): @classmethod def setUpTestData(cls): data_sources = ( - DataSource(name='Data Source 1', type=DataSourceTypeChoices.LOCAL, source_url='file:///var/tmp/source1/'), - DataSource(name='Data Source 2', type=DataSourceTypeChoices.LOCAL, source_url='file:///var/tmp/source2/'), - DataSource(name='Data Source 3', type=DataSourceTypeChoices.LOCAL, source_url='file:///var/tmp/source3/'), + DataSource(name='Data Source 1', type='local', source_url='file:///var/tmp/source1/'), + DataSource(name='Data Source 2', type='local', source_url='file:///var/tmp/source2/'), + DataSource(name='Data Source 3', type='local', source_url='file:///var/tmp/source3/'), ) DataSource.objects.bulk_create(data_sources) cls.create_data = [ { 'name': 'Data Source 4', - 'type': DataSourceTypeChoices.GIT, + 'type': 'git', 'source_url': 'https://example.com/git/source4' }, { 'name': 'Data Source 5', - 'type': DataSourceTypeChoices.GIT, + 'type': 'git', 'source_url': 'https://example.com/git/source5' }, { 'name': 'Data Source 6', - 'type': DataSourceTypeChoices.GIT, + 'type': 'git', 'source_url': 'https://example.com/git/source6' }, ] @@ -63,7 +62,7 @@ class DataFileTest( def setUpTestData(cls): datasource = DataSource.objects.create( name='Data Source 1', - type=DataSourceTypeChoices.LOCAL, + type='local', source_url='file:///var/tmp/source1/' ) diff --git a/netbox/core/tests/test_filtersets.py b/netbox/core/tests/test_filtersets.py index e1e916f70..e6e52a8b3 100644 --- a/netbox/core/tests/test_filtersets.py +++ b/netbox/core/tests/test_filtersets.py @@ -18,21 +18,23 @@ class DataSourceTestCase(TestCase, ChangeLoggedFilterSetTests): data_sources = ( DataSource( name='Data Source 1', - type=DataSourceTypeChoices.LOCAL, + type='local', source_url='file:///var/tmp/source1/', status=DataSourceStatusChoices.NEW, - enabled=True + enabled=True, + description='foobar1' ), DataSource( name='Data Source 2', - type=DataSourceTypeChoices.LOCAL, + type='local', source_url='file:///var/tmp/source2/', status=DataSourceStatusChoices.SYNCING, - enabled=True + enabled=True, + description='foobar2' ), DataSource( name='Data Source 3', - type=DataSourceTypeChoices.GIT, + type='git', source_url='https://example.com/git/source3', status=DataSourceStatusChoices.COMPLETED, enabled=False @@ -40,12 +42,20 @@ class DataSourceTestCase(TestCase, ChangeLoggedFilterSetTests): ) DataSource.objects.bulk_create(data_sources) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Data Source 1', 'Data Source 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_type(self): - params = {'type': [DataSourceTypeChoices.LOCAL]} + params = {'type': ['local']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_enabled(self): @@ -66,9 +76,9 @@ class DataFileTestCase(TestCase, ChangeLoggedFilterSetTests): @classmethod def setUpTestData(cls): data_sources = ( - DataSource(name='Data Source 1', type=DataSourceTypeChoices.LOCAL, source_url='file:///var/tmp/source1/'), - DataSource(name='Data Source 2', type=DataSourceTypeChoices.LOCAL, source_url='file:///var/tmp/source2/'), - DataSource(name='Data Source 3', type=DataSourceTypeChoices.LOCAL, source_url='file:///var/tmp/source3/'), + DataSource(name='Data Source 1', type='local', source_url='file:///var/tmp/source1/'), + DataSource(name='Data Source 2', type='local', source_url='file:///var/tmp/source2/'), + DataSource(name='Data Source 3', type='local', source_url='file:///var/tmp/source3/'), ) DataSource.objects.bulk_create(data_sources) @@ -97,6 +107,10 @@ class DataFileTestCase(TestCase, ChangeLoggedFilterSetTests): ) DataFile.objects.bulk_create(data_files) + def test_q(self): + params = {'q': 'file1.txt'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_source(self): sources = DataSource.objects.all() params = {'source_id': [sources[0].pk, sources[1].pk]} diff --git a/netbox/core/tests/test_views.py b/netbox/core/tests/test_views.py index 4a50a8d05..16d07f376 100644 --- a/netbox/core/tests/test_views.py +++ b/netbox/core/tests/test_views.py @@ -1,7 +1,6 @@ from django.utils import timezone from utilities.testing import ViewTestCases, create_tags -from ..choices import * from ..models import * @@ -11,9 +10,9 @@ class DataSourceTestCase(ViewTestCases.PrimaryObjectViewTestCase): @classmethod def setUpTestData(cls): data_sources = ( - DataSource(name='Data Source 1', type=DataSourceTypeChoices.LOCAL, source_url='file:///var/tmp/source1/'), - DataSource(name='Data Source 2', type=DataSourceTypeChoices.LOCAL, source_url='file:///var/tmp/source2/'), - DataSource(name='Data Source 3', type=DataSourceTypeChoices.LOCAL, source_url='file:///var/tmp/source3/'), + DataSource(name='Data Source 1', type='local', source_url='file:///var/tmp/source1/'), + DataSource(name='Data Source 2', type='local', source_url='file:///var/tmp/source2/'), + DataSource(name='Data Source 3', type='local', source_url='file:///var/tmp/source3/'), ) DataSource.objects.bulk_create(data_sources) @@ -21,7 +20,7 @@ class DataSourceTestCase(ViewTestCases.PrimaryObjectViewTestCase): cls.form_data = { 'name': 'Data Source X', - 'type': DataSourceTypeChoices.GIT, + 'type': 'git', 'source_url': 'http:///exmaple/com/foo/bar/', 'description': 'Something', 'comments': 'Foo bar baz', @@ -29,10 +28,10 @@ class DataSourceTestCase(ViewTestCases.PrimaryObjectViewTestCase): } cls.csv_data = ( - f"name,type,source_url,enabled", - f"Data Source 4,{DataSourceTypeChoices.LOCAL},file:///var/tmp/source4/,true", - f"Data Source 5,{DataSourceTypeChoices.LOCAL},file:///var/tmp/source4/,true", - f"Data Source 6,{DataSourceTypeChoices.GIT},http:///exmaple/com/foo/bar/,false", + "name,type,source_url,enabled", + "Data Source 4,local,file:///var/tmp/source4/,true", + "Data Source 5,local,file:///var/tmp/source4/,true", + "Data Source 6,git,http:///exmaple/com/foo/bar/,false", ) cls.csv_update_data = ( @@ -60,7 +59,7 @@ class DataFileTestCase( def setUpTestData(cls): datasource = DataSource.objects.create( name='Data Source 1', - type=DataSourceTypeChoices.LOCAL, + type='local', source_url='file:///var/tmp/source1/' ) diff --git a/netbox/core/urls.py b/netbox/core/urls.py index 1bd56c92b..77c0d3194 100644 --- a/netbox/core/urls.py +++ b/netbox/core/urls.py @@ -25,4 +25,14 @@ urlpatterns = ( path('jobs//', views.JobView.as_view(), name='job'), path('jobs//delete/', views.JobDeleteView.as_view(), name='job_delete'), + # Config revisions + path('config-revisions/', views.ConfigRevisionListView.as_view(), name='configrevision_list'), + path('config-revisions/add/', views.ConfigRevisionEditView.as_view(), name='configrevision_add'), + path('config-revisions/delete/', views.ConfigRevisionBulkDeleteView.as_view(), name='configrevision_bulk_delete'), + path('config-revisions//restore/', views.ConfigRevisionRestoreView.as_view(), name='configrevision_restore'), + path('config-revisions//', include(get_model_urls('core', 'configrevision'))), + + # Configuration + path('config/', views.ConfigView.as_view(), name='config'), + ) diff --git a/netbox/core/views.py b/netbox/core/views.py index d3dc2b1c2..537c33d9d 100644 --- a/netbox/core/views.py +++ b/netbox/core/views.py @@ -1,10 +1,14 @@ from django.contrib import messages -from django.shortcuts import get_object_or_404, redirect +from django.core.cache import cache +from django.http import HttpResponseForbidden +from django.shortcuts import get_object_or_404, redirect, render +from django.views.generic import View +from netbox.config import get_config, PARAMS from netbox.views import generic from netbox.views.generic.base import BaseObjectView from utilities.utils import count_related -from utilities.views import register_model_view +from utilities.views import ContentTypePermissionRequiredMixin, register_model_view from . import filtersets, forms, tables from .models import * @@ -98,7 +102,9 @@ class DataFileListView(generic.ObjectListView): filterset = filtersets.DataFileFilterSet filterset_form = forms.DataFileFilterForm table = tables.DataFileTable - actions = ('bulk_delete',) + actions = { + 'bulk_delete': {'delete'}, + } @register_model_view(DataFile) @@ -126,7 +132,10 @@ class JobListView(generic.ObjectListView): filterset = filtersets.JobFilterSet filterset_form = forms.JobFilterForm table = tables.JobTable - actions = ('export', 'delete', 'bulk_delete') + actions = { + 'export': {'view'}, + 'bulk_delete': {'delete'}, + } class JobView(generic.ObjectView): @@ -141,3 +150,85 @@ class JobBulkDeleteView(generic.BulkDeleteView): queryset = Job.objects.all() filterset = filtersets.JobFilterSet table = tables.JobTable + + +# +# Config Revisions +# + +class ConfigView(generic.ObjectView): + queryset = ConfigRevision.objects.all() + + def get_object(self, **kwargs): + revision_id = cache.get('config_version') + try: + return ConfigRevision.objects.get(pk=revision_id) + except ConfigRevision.DoesNotExist: + # Fall back to using the active config data if no record is found + return ConfigRevision( + data=get_config() + ) + + +class ConfigRevisionListView(generic.ObjectListView): + queryset = ConfigRevision.objects.all() + filterset = filtersets.ConfigRevisionFilterSet + filterset_form = forms.ConfigRevisionFilterForm + table = tables.ConfigRevisionTable + + +@register_model_view(ConfigRevision) +class ConfigRevisionView(generic.ObjectView): + queryset = ConfigRevision.objects.all() + + +class ConfigRevisionEditView(generic.ObjectEditView): + queryset = ConfigRevision.objects.all() + form = forms.ConfigRevisionForm + + +@register_model_view(ConfigRevision, 'delete') +class ConfigRevisionDeleteView(generic.ObjectDeleteView): + queryset = ConfigRevision.objects.all() + + +class ConfigRevisionBulkDeleteView(generic.BulkDeleteView): + queryset = ConfigRevision.objects.all() + filterset = filtersets.ConfigRevisionFilterSet + table = tables.ConfigRevisionTable + + +class ConfigRevisionRestoreView(ContentTypePermissionRequiredMixin, View): + + def get_required_permission(self): + return 'core.configrevision_edit' + + def get(self, request, pk): + candidate_config = get_object_or_404(ConfigRevision, pk=pk) + + # Get the current ConfigRevision + config_version = get_config().version + current_config = ConfigRevision.objects.filter(pk=config_version).first() + + params = [] + for param in PARAMS: + params.append(( + param.name, + current_config.data.get(param.name, None), + candidate_config.data.get(param.name, None) + )) + + return render(request, 'core/configrevision_restore.html', { + 'object': candidate_config, + 'params': params, + }) + + def post(self, request, pk): + if not request.user.has_perm('core.configrevision_edit'): + return HttpResponseForbidden() + + candidate_config = get_object_or_404(ConfigRevision, pk=pk) + candidate_config.activate() + messages.success(request, f"Restored configuration revision #{pk}") + + return redirect(candidate_config.get_absolute_url()) diff --git a/netbox/dcim/api/serializers.py b/netbox/dcim/api/serializers.py index 341a1064a..09933f2de 100644 --- a/netbox/dcim/api/serializers.py +++ b/netbox/dcim/api/serializers.py @@ -2,8 +2,8 @@ import decimal from django.contrib.contenttypes.models import ContentType from django.utils.translation import gettext as _ -from drf_spectacular.utils import extend_schema_field from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers from timezone_field.rest_framework import TimeZoneSerializerField @@ -12,8 +12,7 @@ from dcim.constants import * from dcim.models import * from extras.api.nested_serializers import NestedConfigTemplateSerializer from ipam.api.nested_serializers import ( - NestedASNSerializer, NestedIPAddressSerializer, NestedL2VPNTerminationSerializer, NestedVLANSerializer, - NestedVRFSerializer, + NestedASNSerializer, NestedIPAddressSerializer, NestedVLANSerializer, NestedVRFSerializer, ) from ipam.models import ASN, VLAN from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField @@ -27,6 +26,7 @@ from tenancy.api.nested_serializers import NestedTenantSerializer from users.api.nested_serializers import NestedUserSerializer from utilities.api import get_serializer_for_model from virtualization.api.nested_serializers import NestedClusterSerializer +from vpn.api.nested_serializers import NestedL2VPNTerminationSerializer from wireless.api.nested_serializers import NestedWirelessLANSerializer, NestedWirelessLinkSerializer from wireless.choices import * from wireless.models import WirelessLAN @@ -343,9 +343,9 @@ class DeviceTypeSerializer(NetBoxModelSerializer): model = DeviceType fields = [ 'id', 'url', 'display', 'manufacturer', 'default_platform', 'model', 'slug', 'part_number', 'u_height', - 'is_full_depth', 'subdevice_role', 'airflow', 'weight', 'weight_unit', 'front_image', 'rear_image', - 'description', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', 'device_count', - 'console_port_template_count', 'console_server_port_template_count', 'power_port_template_count', + 'exclude_from_utilization', 'is_full_depth', 'subdevice_role', 'airflow', 'weight', 'weight_unit', + 'front_image', 'rear_image', 'description', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', + 'device_count', 'console_port_template_count', 'console_server_port_template_count', 'power_port_template_count', 'power_outlet_template_count', 'interface_template_count', 'front_port_template_count', 'rear_port_template_count', 'device_bay_template_count', 'module_bay_template_count', 'inventory_item_template_count', @@ -738,12 +738,12 @@ class DeviceWithConfigContextSerializer(DeviceSerializer): class Meta(DeviceSerializer.Meta): fields = [ 'id', 'url', 'display', 'name', 'device_type', 'role', 'device_role', 'tenant', 'platform', 'serial', - 'asset_tag', 'site', 'location', 'rack', 'position', 'face', 'parent_device', 'status', 'airflow', - 'primary_ip', 'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis', 'vc_position', - 'vc_priority', 'description', 'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context', - 'config_template', 'created', 'last_updated', 'console_port_count', 'console_server_port_count', - 'power_port_count', 'power_outlet_count', 'interface_count', 'front_port_count', 'rear_port_count', - 'device_bay_count', 'module_bay_count', 'inventory_item_count', + 'asset_tag', 'site', 'location', 'rack', 'position', 'face', 'latitude', 'longitude', 'parent_device', + 'status', 'airflow', 'primary_ip', 'primary_ip4', 'primary_ip6', 'oob_ip', 'cluster', 'virtual_chassis', + 'vc_position', 'vc_priority', 'description', 'comments', 'config_template', 'config_context', + 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated', 'console_port_count', + 'console_server_port_count', 'power_port_count', 'power_outlet_count', 'interface_count', + 'front_port_count', 'rear_port_count', 'device_bay_count', 'module_bay_count', 'inventory_item_count', ] @extend_schema_field(serializers.JSONField(allow_null=True)) @@ -758,6 +758,7 @@ class VirtualDeviceContextSerializer(NetBoxModelSerializer): primary_ip = NestedIPAddressSerializer(read_only=True, allow_null=True) primary_ip4 = NestedIPAddressSerializer(required=False, allow_null=True) primary_ip6 = NestedIPAddressSerializer(required=False, allow_null=True) + status = ChoiceField(choices=VirtualDeviceContextStatusChoices) # Related object counts interface_count = serializers.IntegerField(read_only=True) @@ -786,10 +787,6 @@ class ModuleSerializer(NetBoxModelSerializer): ] -class DeviceNAPALMSerializer(serializers.Serializer): - method = serializers.JSONField() - - # # Device components # diff --git a/netbox/dcim/api/views.py b/netbox/dcim/api/views.py index f045f1bb4..cd5a297c9 100644 --- a/netbox/dcim/api/views.py +++ b/netbox/dcim/api/views.py @@ -3,10 +3,8 @@ from django.shortcuts import get_object_or_404 from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import extend_schema, OpenApiParameter from rest_framework.decorators import action -from rest_framework.renderers import JSONRenderer from rest_framework.response import Response from rest_framework.routers import APIRootView -from rest_framework.status import HTTP_400_BAD_REQUEST from rest_framework.viewsets import ViewSet from circuits.models import Circuit @@ -14,16 +12,16 @@ from dcim import filtersets from dcim.constants import CABLE_TRACE_SVG_DEFAULT_WIDTH from dcim.models import * from dcim.svg import CableTraceSVG -from extras.api.mixins import ConfigContextQuerySetMixin, ConfigTemplateRenderMixin +from extras.api.mixins import ConfigContextQuerySetMixin, RenderConfigMixin from ipam.models import Prefix, VLAN from netbox.api.authentication import IsAuthenticatedOrLoginNotRequired from netbox.api.metadata import ContentTypeMetadata from netbox.api.pagination import StripCountAnnotationsPaginator -from netbox.api.renderers import TextRenderer -from netbox.api.viewsets import NetBoxModelViewSet +from netbox.api.viewsets import NetBoxModelViewSet, MPTTLockedMixin from netbox.api.viewsets.mixins import SequentialBulkCreatesMixin from netbox.constants import NESTED_SERIALIZER_PREFIX from utilities.api import get_serializer_for_model +from utilities.query_functions import CollateAsChar from utilities.utils import count_related from virtualization.models import VirtualMachine from . import serializers @@ -98,7 +96,7 @@ class PassThroughPortMixin(object): # Regions # -class RegionViewSet(NetBoxModelViewSet): +class RegionViewSet(MPTTLockedMixin, NetBoxModelViewSet): queryset = Region.objects.add_related_count( Region.objects.all(), Site, @@ -114,7 +112,7 @@ class RegionViewSet(NetBoxModelViewSet): # Site groups # -class SiteGroupViewSet(NetBoxModelViewSet): +class SiteGroupViewSet(MPTTLockedMixin, NetBoxModelViewSet): queryset = SiteGroup.objects.add_related_count( SiteGroup.objects.all(), Site, @@ -149,7 +147,7 @@ class SiteViewSet(NetBoxModelViewSet): # Locations # -class LocationViewSet(NetBoxModelViewSet): +class LocationViewSet(MPTTLockedMixin, NetBoxModelViewSet): queryset = Location.objects.add_related_count( Location.objects.add_related_count( Location.objects.all(), @@ -350,7 +348,7 @@ class DeviceBayTemplateViewSet(NetBoxModelViewSet): filterset_class = filtersets.DeviceBayTemplateFilterSet -class InventoryItemTemplateViewSet(NetBoxModelViewSet): +class InventoryItemTemplateViewSet(MPTTLockedMixin, NetBoxModelViewSet): queryset = InventoryItemTemplate.objects.prefetch_related('device_type__manufacturer', 'role') serializer_class = serializers.InventoryItemTemplateSerializer filterset_class = filtersets.InventoryItemTemplateFilterSet @@ -389,7 +387,7 @@ class PlatformViewSet(NetBoxModelViewSet): class DeviceViewSet( SequentialBulkCreatesMixin, ConfigContextQuerySetMixin, - ConfigTemplateRenderMixin, + RenderConfigMixin, NetBoxModelViewSet ): queryset = Device.objects.prefetch_related( @@ -419,23 +417,6 @@ class DeviceViewSet( return serializers.DeviceWithConfigContextSerializer - @action(detail=True, methods=['post'], url_path='render-config', renderer_classes=[JSONRenderer, TextRenderer]) - def render_config(self, request, pk): - """ - Resolve and render the preferred ConfigTemplate for this Device. - """ - device = self.get_object() - configtemplate = device.get_config_template() - if not configtemplate: - return Response({'error': 'No config template found for this device.'}, status=HTTP_400_BAD_REQUEST) - - # Compile context data - context_data = device.get_config_context() - context_data.update(request.data) - context_data.update({'device': device}) - - return self.render_configtemplate(request, configtemplate, context_data) - class VirtualDeviceContextViewSet(NetBoxModelViewSet): queryset = VirtualDeviceContext.objects.prefetch_related( @@ -505,6 +486,10 @@ class InterfaceViewSet(PathEndpointMixin, NetBoxModelViewSet): filterset_class = filtersets.InterfaceFilterSet brief_prefetch_fields = ['device'] + def get_bulk_destroy_queryset(self): + # Ensure child interfaces are deleted prior to their parents + return self.get_queryset().order_by('device', 'parent', CollateAsChar('_name')) + class FrontPortViewSet(PassThroughPortMixin, NetBoxModelViewSet): queryset = FrontPort.objects.prefetch_related( @@ -538,7 +523,7 @@ class DeviceBayViewSet(NetBoxModelViewSet): brief_prefetch_fields = ['device'] -class InventoryItemViewSet(NetBoxModelViewSet): +class InventoryItemViewSet(MPTTLockedMixin, NetBoxModelViewSet): queryset = InventoryItem.objects.prefetch_related('device', 'manufacturer', 'tags') serializer_class = serializers.InventoryItemSerializer filterset_class = filtersets.InventoryItemFilterSet diff --git a/netbox/dcim/choices.py b/netbox/dcim/choices.py index 1bcf61b20..2ba24e0aa 100644 --- a/netbox/dcim/choices.py +++ b/netbox/dcim/choices.py @@ -80,10 +80,10 @@ class RackWidthChoices(ChoiceSet): WIDTH_23IN = 23 CHOICES = ( - (WIDTH_10IN, _('10 inches')), - (WIDTH_19IN, _('19 inches')), - (WIDTH_21IN, _('21 inches')), - (WIDTH_23IN, _('23 inches')), + (WIDTH_10IN, _('{n} inches').format(n=10)), + (WIDTH_19IN, _('{n} inches').format(n=19)), + (WIDTH_21IN, _('{n} inches').format(n=21)), + (WIDTH_23IN, _('{n} inches').format(n=23)), ) @@ -837,8 +837,10 @@ class InterfaceTypeChoices(ChoiceSet): TYPE_200GE_QSFP56 = '200gbase-x-qsfp56' TYPE_200GE_QSFP_DD = '200gbase-x-qsfpdd' TYPE_400GE_CFP2 = '400gbase-x-cfp2' + TYPE_400GE_QSFP112 = '400gbase-x-qsfp112' TYPE_400GE_QSFP_DD = '400gbase-x-qsfpdd' TYPE_400GE_OSFP = '400gbase-x-osfp' + TYPE_400GE_OSFP_RHS = '400gbase-x-osfp-rhs' TYPE_400GE_CDFP = '400gbase-x-cdfp' TYPE_400GE_CFP8 = '400gbase-x-cfp8' TYPE_800GE_QSFP_DD = '800gbase-x-qsfpdd' @@ -989,8 +991,10 @@ class InterfaceTypeChoices(ChoiceSet): (TYPE_100GE_QSFP_DD, 'QSFP-DD (100GE)'), (TYPE_200GE_QSFP56, 'QSFP56 (200GE)'), (TYPE_200GE_QSFP_DD, 'QSFP-DD (200GE)'), + (TYPE_400GE_QSFP112, 'QSFP112 (400GE)'), (TYPE_400GE_QSFP_DD, 'QSFP-DD (400GE)'), (TYPE_400GE_OSFP, 'OSFP (400GE)'), + (TYPE_400GE_OSFP_RHS, 'OSFP-RHS (400GE)'), (TYPE_400GE_CDFP, 'CDFP (400GE)'), (TYPE_400GE_CFP8, 'CPF8 (400GE)'), (TYPE_800GE_QSFP_DD, 'QSFP-DD (800GE)'), diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index f7ae8591f..68edc93f6 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -1,10 +1,13 @@ import django_filters from django.contrib.auth import get_user_model +from django.contrib.contenttypes.models import ContentType from django.utils.translation import gettext as _ +from circuits.models import CircuitTermination from extras.filtersets import LocalConfigContextFilterSet from extras.models import ConfigTemplate -from ipam.models import ASN, L2VPN, IPAddress, VRF +from ipam.filtersets import PrimaryIPFilterSet +from ipam.models import ASN, IPAddress, VRF from netbox.filtersets import ( BaseFilterSet, ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, NetBoxModelFilterSet, ) @@ -16,6 +19,7 @@ from utilities.filters import ( TreeNodeMultipleChoiceFilter, ) from virtualization.models import Cluster +from vpn.models import L2VPN from wireless.choices import WirelessRoleChoices, WirelessChannelChoices from .choices import * from .constants import * @@ -324,7 +328,7 @@ class RackFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilterSe model = Rack fields = [ 'id', 'name', 'facility_id', 'asset_tag', 'u_height', 'starting_unit', 'desc_units', 'outer_width', - 'outer_depth', 'outer_unit', 'mounting_depth', 'weight', 'max_weight', 'weight_unit' + 'outer_depth', 'outer_unit', 'mounting_depth', 'weight', 'max_weight', 'weight_unit', 'description', ] def search(self, queryset, name, value): @@ -335,6 +339,7 @@ class RackFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilterSe Q(facility_id__icontains=value) | Q(serial__icontains=value.strip()) | Q(asset_tag__icontains=value.strip()) | + Q(description__icontains=value) | Q(comments__icontains=value) ) @@ -496,7 +501,8 @@ class DeviceTypeFilterSet(NetBoxModelFilterSet): class Meta: model = DeviceType fields = [ - 'id', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow', 'weight', 'weight_unit', + 'id', 'model', 'slug', 'part_number', 'u_height', 'exclude_from_utilization', 'is_full_depth', + 'subdevice_role', 'airflow', 'weight', 'weight_unit', 'description', ] def search(self, queryset, name, value): @@ -506,6 +512,7 @@ class DeviceTypeFilterSet(NetBoxModelFilterSet): Q(manufacturer__name__icontains=value) | Q(model__icontains=value) | Q(part_number__icontains=value) | + Q(description__icontains=value) | Q(comments__icontains=value) ) @@ -590,7 +597,7 @@ class ModuleTypeFilterSet(NetBoxModelFilterSet): class Meta: model = ModuleType - fields = ['id', 'model', 'part_number', 'weight', 'weight_unit'] + fields = ['id', 'model', 'part_number', 'weight', 'weight_unit', 'description'] def search(self, queryset, name, value): if not value.strip(): @@ -599,6 +606,7 @@ class ModuleTypeFilterSet(NetBoxModelFilterSet): Q(manufacturer__name__icontains=value) | Q(model__icontains=value) | Q(part_number__icontains=value) | + Q(description__icontains=value) | Q(comments__icontains=value) ) @@ -638,7 +646,10 @@ class DeviceTypeComponentFilterSet(django_filters.FilterSet): def search(self, queryset, name, value): if not value.strip(): return queryset - return queryset.filter(name__icontains=value) + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) + ) class ModularDeviceTypeComponentFilterSet(DeviceTypeComponentFilterSet): @@ -653,21 +664,21 @@ class ConsolePortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceType class Meta: model = ConsolePortTemplate - fields = ['id', 'name', 'type'] + fields = ['id', 'name', 'type', 'description'] class ConsoleServerPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet): class Meta: model = ConsoleServerPortTemplate - fields = ['id', 'name', 'type'] + fields = ['id', 'name', 'type', 'description'] class PowerPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet): class Meta: model = PowerPortTemplate - fields = ['id', 'name', 'type', 'maximum_draw', 'allocated_draw'] + fields = ['id', 'name', 'type', 'maximum_draw', 'allocated_draw', 'description'] class PowerOutletTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet): @@ -678,7 +689,7 @@ class PowerOutletTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceType class Meta: model = PowerOutletTemplate - fields = ['id', 'name', 'type', 'feed_leg'] + fields = ['id', 'name', 'type', 'feed_leg', 'description'] class InterfaceTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet): @@ -702,7 +713,7 @@ class InterfaceTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeCo class Meta: model = InterfaceTemplate - fields = ['id', 'name', 'type', 'enabled', 'mgmt_only'] + fields = ['id', 'name', 'type', 'enabled', 'mgmt_only', 'description'] class FrontPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet): @@ -713,7 +724,7 @@ class FrontPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeCo class Meta: model = FrontPortTemplate - fields = ['id', 'name', 'type', 'color'] + fields = ['id', 'name', 'type', 'color', 'description'] class RearPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeComponentFilterSet): @@ -724,21 +735,21 @@ class RearPortTemplateFilterSet(ChangeLoggedModelFilterSet, ModularDeviceTypeCom class Meta: model = RearPortTemplate - fields = ['id', 'name', 'type', 'color', 'positions'] + fields = ['id', 'name', 'type', 'color', 'positions', 'description'] class ModuleBayTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeComponentFilterSet): class Meta: model = ModuleBayTemplate - fields = ['id', 'name'] + fields = ['id', 'name', 'description'] class DeviceBayTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeComponentFilterSet): class Meta: model = DeviceBayTemplate - fields = ['id', 'name'] + fields = ['id', 'name', 'description'] class InventoryItemTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeComponentFilterSet): @@ -771,7 +782,7 @@ class InventoryItemTemplateFilterSet(ChangeLoggedModelFilterSet, DeviceTypeCompo class Meta: model = InventoryItemTemplate - fields = ['id', 'name', 'label', 'part_id'] + fields = ['id', 'name', 'label', 'part_id', 'description'] def search(self, queryset, name, value): if not value.strip(): @@ -817,7 +828,13 @@ class PlatformFilterSet(OrganizationalModelFilterSet): fields = ['id', 'name', 'slug', 'description'] -class DeviceFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilterSet, LocalConfigContextFilterSet): +class DeviceFilterSet( + NetBoxModelFilterSet, + TenancyFilterSet, + ContactModelFilterSet, + LocalConfigContextFilterSet, + PrimaryIPFilterSet, +): manufacturer_id = django_filters.ModelMultipleChoiceFilter( field_name='device_type__manufacturer', queryset=Manufacturer.objects.all(), @@ -993,16 +1010,6 @@ class DeviceFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilter method='_device_bays', label=_('Has device bays'), ) - primary_ip4_id = django_filters.ModelMultipleChoiceFilter( - field_name='primary_ip4', - queryset=IPAddress.objects.all(), - label=_('Primary IPv4 (ID)'), - ) - primary_ip6_id = django_filters.ModelMultipleChoiceFilter( - field_name='primary_ip6', - queryset=IPAddress.objects.all(), - label=_('Primary IPv6 (ID)'), - ) oob_ip_id = django_filters.ModelMultipleChoiceFilter( field_name='oob_ip', queryset=IPAddress.objects.all(), @@ -1011,7 +1018,10 @@ class DeviceFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilter class Meta: model = Device - fields = ['id', 'asset_tag', 'face', 'position', 'latitude', 'longitude', 'airflow', 'vc_position', 'vc_priority'] + fields = [ + 'id', 'asset_tag', 'face', 'position', 'latitude', 'longitude', 'airflow', 'vc_position', 'vc_priority', + 'description', + ] def search(self, queryset, name, value): if not value.strip(): @@ -1021,6 +1031,7 @@ class DeviceFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilter Q(serial__icontains=value.strip()) | Q(inventoryitems__serial__icontains=value.strip()) | Q(asset_tag__icontains=value.strip()) | + Q(description__icontains=value.strip()) | Q(comments__icontains=value) | Q(primary_ip4__address__startswith=value) | Q(primary_ip6__address__startswith=value) @@ -1069,7 +1080,7 @@ class DeviceFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilter return queryset.exclude(devicebays__isnull=value) -class VirtualDeviceContextFilterSet(NetBoxModelFilterSet, TenancyFilterSet): +class VirtualDeviceContextFilterSet(NetBoxModelFilterSet, TenancyFilterSet, PrimaryIPFilterSet): device_id = django_filters.ModelMultipleChoiceFilter( field_name='device', queryset=Device.objects.all(), @@ -1090,13 +1101,16 @@ class VirtualDeviceContextFilterSet(NetBoxModelFilterSet, TenancyFilterSet): class Meta: model = VirtualDeviceContext - fields = ['id', 'device', 'name'] + fields = ['id', 'device', 'name', 'description'] def search(self, queryset, name, value): if not value.strip(): return queryset - qs_filter = Q(name__icontains=value) + qs_filter = ( + Q(name__icontains=value) | + Q(description__icontains=value) + ) try: qs_filter |= Q(identifier=int(value)) except ValueError: @@ -1153,7 +1167,7 @@ class ModuleFilterSet(NetBoxModelFilterSet): class Meta: model = Module - fields = ['id', 'status', 'asset_tag'] + fields = ['id', 'status', 'asset_tag', 'description'] def search(self, queryset, name, value): if not value.strip(): @@ -1162,6 +1176,7 @@ class ModuleFilterSet(NetBoxModelFilterSet): Q(device__name__icontains=value.strip()) | Q(serial__icontains=value.strip()) | Q(asset_tag__icontains=value.strip()) | + Q(description__icontains=value) | Q(comments__icontains=value) ).distinct() @@ -1462,17 +1477,15 @@ class InterfaceFilterSet( PathEndpointFilterSet, CommonInterfaceFilterSet ): - # Override device and device_id filters from DeviceComponentFilterSet to match against any peer virtual chassis - # members - device = MultiValueCharFilter( - method='filter_device', + virtual_chassis_member = MultiValueCharFilter( + method='filter_virtual_chassis_member', field_name='name', - label=_('Device'), + label=_('Virtual Chassis Interfaces for Device') ) - device_id = MultiValueNumberFilter( - method='filter_device_id', + virtual_chassis_member_id = MultiValueNumberFilter( + method='filter_virtual_chassis_member', field_name='pk', - label=_('Device (ID)'), + label=_('Virtual Chassis Interfaces for Device (ID)') ) kind = django_filters.CharFilter( method='filter_kind', @@ -1540,23 +1553,11 @@ class InterfaceFilterSet( 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'tx_power', 'description', 'cable_end', ] - def filter_device(self, queryset, name, value): + def filter_virtual_chassis_member(self, queryset, name, value): try: - devices = Device.objects.filter(**{'{}__in'.format(name): value}) vc_interface_ids = [] - for device in devices: - vc_interface_ids.extend(device.vc_interfaces().values_list('id', flat=True)) - return queryset.filter(pk__in=vc_interface_ids) - except Device.DoesNotExist: - return queryset.none() - - def filter_device_id(self, queryset, name, id_list): - # Include interfaces belonging to peer virtual chassis members - vc_interface_ids = [] - try: - devices = Device.objects.filter(pk__in=id_list) - for device in devices: - vc_interface_ids += device.vc_interfaces(if_master=False).values_list('id', flat=True) + for device in Device.objects.filter(**{f'{name}__in': value}): + vc_interface_ids.extend(device.vc_interfaces(if_master=False).values_list('id', flat=True)) return queryset.filter(pk__in=vc_interface_ids) except Device.DoesNotExist: return queryset.none() @@ -1666,7 +1667,7 @@ class InventoryItemRoleFilterSet(OrganizationalModelFilterSet): class Meta: model = InventoryItemRole - fields = ['id', 'name', 'slug', 'color'] + fields = ['id', 'name', 'slug', 'color', 'description'] class VirtualChassisFilterSet(NetBoxModelFilterSet): @@ -1731,13 +1732,14 @@ class VirtualChassisFilterSet(NetBoxModelFilterSet): class Meta: model = VirtualChassis - fields = ['id', 'domain', 'name'] + fields = ['id', 'domain', 'name', 'description'] def search(self, queryset, name, value): if not value.strip(): return queryset qs_filter = ( Q(name__icontains=value) | + Q(description__icontains=value) | Q(members__name__icontains=value) | Q(domain__icontains=value) ) @@ -1759,6 +1761,10 @@ class CableFilterSet(TenancyFilterSet, NetBoxModelFilterSet): method='filter_by_cable_end_b', field_name='terminations__termination_id' ) + unterminated = django_filters.BooleanFilter( + method='_unterminated', + label=_('Unterminated'), + ) type = django_filters.MultipleChoiceFilter( choices=CableTypeChoices ) @@ -1800,14 +1806,47 @@ class CableFilterSet(TenancyFilterSet, NetBoxModelFilterSet): field_name='site__slug' ) + # Termination object filters + consoleport_id = MultiValueNumberFilter( + method='filter_by_consoleport' + ) + consoleserverport_id = MultiValueNumberFilter( + method='filter_by_consoleserverport' + ) + powerport_id = MultiValueNumberFilter( + method='filter_by_powerport' + ) + poweroutlet_id = MultiValueNumberFilter( + method='filter_by_poweroutlet' + ) + interface_id = MultiValueNumberFilter( + method='filter_by_interface' + ) + frontport_id = MultiValueNumberFilter( + method='filter_by_frontport' + ) + rearport_id = MultiValueNumberFilter( + method='filter_by_rearport' + ) + powerfeed_id = MultiValueNumberFilter( + method='filter_by_powerfeed' + ) + circuittermination_id = MultiValueNumberFilter( + method='filter_by_circuittermination' + ) + class Meta: model = Cable - fields = ['id', 'label', 'length', 'length_unit'] + fields = ['id', 'label', 'length', 'length_unit', 'description'] def search(self, queryset, name, value): if not value.strip(): return queryset - return queryset.filter(label__icontains=value) + qs_filter = ( + Q(label__icontains=value) | + Q(description__icontains=value) + ) + return queryset.filter(qs_filter) def filter_by_termination(self, queryset, name, value): # Filter by a related object cached on CableTermination. Note the underscore preceding the field name. @@ -1826,6 +1865,55 @@ class CableFilterSet(TenancyFilterSet, NetBoxModelFilterSet): # Filter by termination id and cable_end type return self.filter_by_cable_end(queryset, name, value, CableEndChoices.SIDE_B) + def _unterminated(self, queryset, name, value): + if value: + terminated_ids = ( + queryset.filter(terminations__cable_end=CableEndChoices.SIDE_A) + .filter(terminations__cable_end=CableEndChoices.SIDE_B) + .values("id") + ) + return queryset.exclude(id__in=terminated_ids) + else: + return queryset.filter(terminations__cable_end=CableEndChoices.SIDE_A).filter( + terminations__cable_end=CableEndChoices.SIDE_B + ) + + def filter_by_termination_object(self, queryset, model, value): + # Filter by specific termination object(s) + content_type = ContentType.objects.get_for_model(model) + cable_ids = CableTermination.objects.filter( + termination_type=content_type, + termination_id__in=value + ).values_list('cable', flat=True) + return queryset.filter(pk__in=cable_ids) + + def filter_by_consoleport(self, queryset, name, value): + return self.filter_by_termination_object(queryset, ConsolePort, value) + + def filter_by_consoleserverport(self, queryset, name, value): + return self.filter_by_termination_object(queryset, ConsoleServerPort, value) + + def filter_by_powerport(self, queryset, name, value): + return self.filter_by_termination_object(queryset, PowerPort, value) + + def filter_by_poweroutlet(self, queryset, name, value): + return self.filter_by_termination_object(queryset, PowerOutlet, value) + + def filter_by_interface(self, queryset, name, value): + return self.filter_by_termination_object(queryset, Interface, value) + + def filter_by_frontport(self, queryset, name, value): + return self.filter_by_termination_object(queryset, FrontPort, value) + + def filter_by_rearport(self, queryset, name, value): + return self.filter_by_termination_object(queryset, RearPort, value) + + def filter_by_powerfeed(self, queryset, name, value): + return self.filter_by_termination_object(queryset, PowerFeed, value) + + def filter_by_circuittermination(self, queryset, name, value): + return self.filter_by_termination_object(queryset, CircuitTermination, value) + class CableTerminationFilterSet(BaseFilterSet): termination_type = ContentTypeFilter() @@ -1881,13 +1969,14 @@ class PowerPanelFilterSet(NetBoxModelFilterSet, ContactModelFilterSet): class Meta: model = PowerPanel - fields = ['id', 'name'] + fields = ['id', 'name', 'description'] def search(self, queryset, name, value): if not value.strip(): return queryset qs_filter = ( - Q(name__icontains=value) + Q(name__icontains=value) | + Q(description__icontains=value) ) return queryset.filter(qs_filter) @@ -1948,6 +2037,7 @@ class PowerFeedFilterSet(NetBoxModelFilterSet, CabledObjectFilterSet, PathEndpoi model = PowerFeed fields = [ 'id', 'name', 'status', 'type', 'supply', 'phase', 'voltage', 'amperage', 'max_utilization', 'cable_end', + 'description', ] def search(self, queryset, name, value): @@ -1955,6 +2045,7 @@ class PowerFeedFilterSet(NetBoxModelFilterSet, CabledObjectFilterSet, PathEndpoi return queryset qs_filter = ( Q(name__icontains=value) | + Q(description__icontains=value) | Q(power_panel__name__icontains=value) | Q(comments__icontains=value) ) diff --git a/netbox/dcim/forms/bulk_create.py b/netbox/dcim/forms/bulk_create.py index 02aa5a3e4..2a84a9a51 100644 --- a/netbox/dcim/forms/bulk_create.py +++ b/netbox/dcim/forms/bulk_create.py @@ -1,9 +1,9 @@ from django import forms +from django.utils.translation import gettext_lazy as _ from dcim.models import * -from django.utils.translation import gettext_lazy as _ -from extras.forms import CustomFieldsMixin from extras.models import Tag +from netbox.forms.mixins import CustomFieldsMixin from utilities.forms import BootstrapMixin, form_from_model from utilities.forms.fields import DynamicModelMultipleChoiceField, ExpandableNameField from .object_create import ComponentCreateForm diff --git a/netbox/dcim/forms/bulk_edit.py b/netbox/dcim/forms/bulk_edit.py index cacf1f72b..68d8d4f89 100644 --- a/netbox/dcim/forms/bulk_edit.py +++ b/netbox/dcim/forms/bulk_edit.py @@ -412,7 +412,7 @@ class DeviceTypeBulkEditForm(NetBoxModelBulkEditForm): ) u_height = forms.IntegerField( label=_('U height'), - min_value=1, + min_value=0, required=False ) is_full_depth = forms.NullBooleanField( @@ -420,6 +420,11 @@ class DeviceTypeBulkEditForm(NetBoxModelBulkEditForm): widget=BulkEditNullBooleanSelect(), label=_('Is full depth') ) + exclude_from_utilization = forms.NullBooleanField( + required=False, + widget=BulkEditNullBooleanSelect(), + label=_('Exclude from utilization') + ) airflow = forms.ChoiceField( label=_('Airflow'), choices=add_blank_choice(DeviceAirflowChoices), @@ -445,7 +450,10 @@ class DeviceTypeBulkEditForm(NetBoxModelBulkEditForm): model = DeviceType fieldsets = ( - (_('Device Type'), ('manufacturer', 'default_platform', 'part_number', 'u_height', 'is_full_depth', 'airflow', 'description')), + (_('Device Type'), ( + 'manufacturer', 'default_platform', 'part_number', 'u_height', 'exclude_from_utilization', 'is_full_depth', + 'airflow', 'description', + )), (_('Weight'), ('weight', 'weight_unit')), ) nullable_fields = ('part_number', 'airflow', 'weight', 'weight_unit', 'description', 'comments') diff --git a/netbox/dcim/forms/bulk_import.py b/netbox/dcim/forms/bulk_import.py index a8e75e3c2..d63873b59 100644 --- a/netbox/dcim/forms/bulk_import.py +++ b/netbox/dcim/forms/bulk_import.py @@ -118,7 +118,9 @@ class SiteImportForm(NetBoxModelImportForm): ) help_texts = { 'time_zone': mark_safe( - _('Time zone (available options)') + '{} ({})'.format( + _('Time zone'), _('available options') + ) ) } @@ -165,7 +167,7 @@ class RackRoleImportForm(NetBoxModelImportForm): model = RackRole fields = ('name', 'slug', 'color', 'description', 'tags') help_texts = { - 'color': mark_safe(_('RGB color in hexadecimal (e.g. 00ff00)')), + 'color': mark_safe(_('RGB color in hexadecimal. Example:') + ' 00ff00'), } @@ -333,8 +335,8 @@ class DeviceTypeImportForm(NetBoxModelImportForm): class Meta: model = DeviceType fields = [ - 'manufacturer', 'default_platform', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', - 'subdevice_role', 'airflow', 'description', 'weight', 'weight_unit', 'comments', 'tags', + 'manufacturer', 'default_platform', 'model', 'slug', 'part_number', 'u_height', 'exclude_from_utilization', + 'is_full_depth', 'subdevice_role', 'airflow', 'description', 'weight', 'weight_unit', 'comments', 'tags', ] @@ -375,7 +377,7 @@ class DeviceRoleImportForm(NetBoxModelImportForm): model = DeviceRole fields = ('name', 'slug', 'color', 'vm_role', 'config_template', 'description', 'tags') help_texts = { - 'color': mark_safe(_('RGB color in hexadecimal (e.g. 00ff00)')), + 'color': mark_safe(_('RGB color in hexadecimal. Example:') + ' 00ff00'), } @@ -547,9 +549,9 @@ class DeviceImportForm(BaseDeviceImportForm): params = { f"site__{self.fields['site'].to_field_name}": data.get('site'), } - if 'location' in data: + if location := data.get('location'): params.update({ - f"location__{self.fields['location'].to_field_name}": data.get('location'), + f"location__{self.fields['location'].to_field_name}": location, }) self.fields['rack'].queryset = self.fields['rack'].queryset.filter(**params) @@ -790,7 +792,9 @@ class InterfaceImportForm(NetBoxModelImportForm): queryset=VirtualDeviceContext.objects.all(), required=False, to_field_name='name', - help_text=_('VDC names separated by commas, encased with double quotes (e.g. "vdc1, vdc2, vdc3")') + help_text=mark_safe( + _('VDC names separated by commas, encased with double quotes. Example:') + ' vdc1,vdc2,vdc3' + ) ) type = CSVChoiceField( label=_('Type'), @@ -1085,7 +1089,7 @@ class InventoryItemRoleImportForm(NetBoxModelImportForm): model = InventoryItemRole fields = ('name', 'slug', 'color', 'description') help_texts = { - 'color': mark_safe(_('RGB color in hexadecimal (e.g. 00ff00)')), + 'color': mark_safe(_('RGB color in hexadecimal. Example:') + ' 00ff00'), } @@ -1096,38 +1100,38 @@ class InventoryItemRoleImportForm(NetBoxModelImportForm): class CableImportForm(NetBoxModelImportForm): # Termination A side_a_device = CSVModelChoiceField( - label=_('Side a device'), + label=_('Side A device'), queryset=Device.objects.all(), to_field_name='name', - help_text=_('Side A device') + help_text=_('Device name') ) side_a_type = CSVContentTypeField( - label=_('Side a type'), + label=_('Side A type'), queryset=ContentType.objects.all(), limit_choices_to=CABLE_TERMINATION_MODELS, - help_text=_('Side A type') + help_text=_('Termination type') ) side_a_name = forms.CharField( - label=_('Side a name'), - help_text=_('Side A component name') + label=_('Side A name'), + help_text=_('Termination name') ) # Termination B side_b_device = CSVModelChoiceField( - label=_('Side b device'), + label=_('Side B device'), queryset=Device.objects.all(), to_field_name='name', - help_text=_('Side B device') + help_text=_('Device name') ) side_b_type = CSVContentTypeField( - label=_('Side b type'), + label=_('Side B type'), queryset=ContentType.objects.all(), limit_choices_to=CABLE_TERMINATION_MODELS, - help_text=_('Side B type') + help_text=_('Termination type') ) side_b_name = forms.CharField( - label=_('Side b name'), - help_text=_('Side B component name') + label=_('Side B name'), + help_text=_('Termination name') ) # Cable attributes @@ -1164,7 +1168,7 @@ class CableImportForm(NetBoxModelImportForm): 'status', 'tenant', 'label', 'color', 'length', 'length_unit', 'description', 'comments', 'tags', ] help_texts = { - 'color': mark_safe(_('RGB color in hexadecimal (e.g. 00ff00)')), + 'color': mark_safe(_('RGB color in hexadecimal. Example:') + ' 00ff00'), } def _clean_side(self, side): @@ -1188,7 +1192,7 @@ class CableImportForm(NetBoxModelImportForm): termination_object = model.objects.get(device__in=device.virtual_chassis.members.all(), name=name) else: termination_object = model.objects.get(device=device, name=name) - if termination_object.cable is not None: + if termination_object.cable is not None and termination_object.cable != self.instance: raise forms.ValidationError(f"Side {side.upper()}: {device} {termination_object} is already connected") except ObjectDoesNotExist: raise forms.ValidationError(f"{side.upper()} side termination not found: {device} {name}") diff --git a/netbox/dcim/forms/common.py b/netbox/dcim/forms/common.py index 77543af12..3be4d08e8 100644 --- a/netbox/dcim/forms/common.py +++ b/netbox/dcim/forms/common.py @@ -116,17 +116,17 @@ class ModuleCommonForm(forms.Form): # It is not possible to adopt components already belonging to a module if adopt_components and existing_item and existing_item.module: raise forms.ValidationError( - _("Cannot adopt {name} '{resolved_name}' as it already belongs to a module").format( - name=template.component_model.__name__, - resolved_name=resolved_name + _("Cannot adopt {model} {name} as it already belongs to a module").format( + model=template.component_model.__name__, + name=resolved_name ) ) # If we are not adopting components we error if the component exists if not adopt_components and resolved_name in installed_components: raise forms.ValidationError( - _("{name} - {resolved_name} already exists").format( - name=template.component_model.__name__, - resolved_name=resolved_name + _("A {model} named {name} already exists").format( + model=template.component_model.__name__, + name=resolved_name ) ) diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index 43e5f4481..95c441381 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -7,12 +7,13 @@ from dcim.constants import * from dcim.models import * from extras.forms import LocalConfigContextFilterForm from extras.models import ConfigTemplate -from ipam.models import ASN, L2VPN, VRF +from ipam.models import ASN, VRF from netbox.forms import NetBoxModelFilterSetForm from tenancy.forms import ContactModelFilterForm, TenancyFilterForm from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm, add_blank_choice from utilities.forms.fields import ColorField, DynamicModelMultipleChoiceField, TagFilterField from utilities.forms.widgets import APISelectMultiple, NumberWithOptions +from vpn.models import L2VPN from wireless.choices import * __all__ = ( @@ -109,7 +110,7 @@ class DeviceComponentFilterForm(NetBoxModelFilterSetForm): required=False, label=_('Device type') ) - role_id = DynamicModelMultipleChoiceField( + device_role_id = DynamicModelMultipleChoiceField( queryset=DeviceRole.objects.all(), required=False, label=_('Device role') @@ -164,6 +165,7 @@ class SiteFilterForm(TenancyFilterForm, ContactModelFilterForm, NetBoxModelFilte (_('Tenant'), ('tenant_group_id', 'tenant_id')), (_('Contacts'), ('contact', 'contact_role', 'contact_group')), ) + selector_fields = ('filter_id', 'q', 'region_id', 'group_id') status = forms.MultipleChoiceField( label=_('Status'), choices=SiteStatusChoices, @@ -247,6 +249,7 @@ class RackFilterForm(TenancyFilterForm, ContactModelFilterForm, NetBoxModelFilte (_('Contacts'), ('contact', 'contact_role', 'contact_group')), (_('Weight'), ('weight', 'max_weight', 'weight_unit')), ) + selector_fields = ('filter_id', 'q', 'region_id', 'site_group_id', 'site_id', 'location_id') region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -419,6 +422,7 @@ class DeviceTypeFilterForm(NetBoxModelFilterSetForm): )), (_('Weight'), ('weight', 'weight_unit')), ) + selector_fields = ('filter_id', 'q', 'manufacturer_id') manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, @@ -543,6 +547,7 @@ class ModuleTypeFilterForm(NetBoxModelFilterSetForm): )), (_('Weight'), ('weight', 'weight_unit')), ) + selector_fields = ('filter_id', 'q', 'manufacturer_id') manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, @@ -619,6 +624,7 @@ class DeviceRoleFilterForm(NetBoxModelFilterSetForm): class PlatformFilterForm(NetBoxModelFilterSetForm): model = Platform + selector_fields = ('filter_id', 'q', 'manufacturer_id') manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, @@ -653,6 +659,7 @@ class DeviceFilterForm( 'has_primary_ip', 'has_oob_ip', 'virtual_chassis_member', 'config_template_id', 'local_context_data', )) ) + selector_fields = ('filter_id', 'q', 'region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id') region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -910,7 +917,7 @@ class CableFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): fieldsets = ( (None, ('q', 'filter_id', 'tag')), (_('Location'), ('site_id', 'location_id', 'rack_id', 'device_id')), - (_('Attributes'), ('type', 'status', 'color', 'length', 'length_unit')), + (_('Attributes'), ('type', 'status', 'color', 'length', 'length_unit', 'unterminated')), (_('Tenant'), ('tenant_group_id', 'tenant_id')), ) region_id = DynamicModelMultipleChoiceField( @@ -979,6 +986,13 @@ class CableFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): choices=add_blank_choice(CableLengthUnitChoices), required=False ) + unterminated = forms.NullBooleanField( + label=_('Unterminated'), + required=False, + widget=forms.Select( + choices=BOOLEAN_WITH_BLANK_CHOICES + ) + ) tag = TagFilterField(model) @@ -989,6 +1003,7 @@ class PowerPanelFilterForm(ContactModelFilterForm, NetBoxModelFilterSetForm): (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id')), (_('Contacts'), ('contact', 'contact_role', 'contact_group')), ) + selector_fields = ('filter_id', 'q', 'site_id', 'location_id') region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -1136,7 +1151,7 @@ class ConsolePortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type', 'speed')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), - (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')), + (_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Connection'), ('cabled', 'connected', 'occupied')), ) type = forms.MultipleChoiceField( @@ -1158,7 +1173,7 @@ class ConsoleServerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterF (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type', 'speed')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), - (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')), + (_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Connection'), ('cabled', 'connected', 'occupied')), ) type = forms.MultipleChoiceField( @@ -1180,7 +1195,7 @@ class PowerPortFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), - (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')), + (_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Connection'), ('cabled', 'connected', 'occupied')), ) type = forms.MultipleChoiceField( @@ -1197,7 +1212,7 @@ class PowerOutletFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), - (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')), + (_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Connection'), ('cabled', 'connected', 'occupied')), ) type = forms.MultipleChoiceField( @@ -1217,9 +1232,10 @@ class InterfaceFilterForm(PathEndpointFilterForm, DeviceComponentFilterForm): (_('PoE'), ('poe_mode', 'poe_type')), (_('Wireless'), ('rf_role', 'rf_channel', 'rf_channel_width', 'tx_power')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), - (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id', 'vdc_id')), + (_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id', 'vdc_id')), (_('Connection'), ('cabled', 'connected', 'occupied')), ) + selector_fields = ('filter_id', 'q', 'device_id') vdc_id = DynamicModelMultipleChoiceField( queryset=VirtualDeviceContext.objects.all(), required=False, @@ -1324,7 +1340,7 @@ class FrontPortFilterForm(CabledFilterForm, DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type', 'color')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), - (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')), + (_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Cable'), ('cabled', 'occupied')), ) model = FrontPort @@ -1346,7 +1362,7 @@ class RearPortFilterForm(CabledFilterForm, DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'type', 'color')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), - (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')), + (_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), (_('Cable'), ('cabled', 'occupied')), ) type = forms.MultipleChoiceField( @@ -1367,7 +1383,7 @@ class ModuleBayFilterForm(DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'position')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), - (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')), + (_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), ) tag = TagFilterField(model) position = forms.CharField( @@ -1382,7 +1398,7 @@ class DeviceBayFilterForm(DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), - (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')), + (_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), ) tag = TagFilterField(model) @@ -1393,7 +1409,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm): (None, ('q', 'filter_id', 'tag')), (_('Attributes'), ('name', 'label', 'role_id', 'manufacturer_id', 'serial', 'asset_tag', 'discovered')), (_('Location'), ('region_id', 'site_group_id', 'site_id', 'location_id', 'rack_id')), - (_('Device'), ('device_type_id', 'role_id', 'device_id', 'virtual_chassis_id')), + (_('Device'), ('device_type_id', 'device_role_id', 'device_id', 'virtual_chassis_id')), ) role_id = DynamicModelMultipleChoiceField( queryset=InventoryItemRole.objects.all(), diff --git a/netbox/dcim/forms/model_forms.py b/netbox/dcim/forms/model_forms.py index 879b15da2..da3a2bea4 100644 --- a/netbox/dcim/forms/model_forms.py +++ b/netbox/dcim/forms/model_forms.py @@ -302,7 +302,8 @@ class DeviceTypeForm(NetBoxModelForm): fieldsets = ( (_('Device Type'), ('manufacturer', 'model', 'slug', 'default_platform', 'description', 'tags')), (_('Chassis'), ( - 'u_height', 'is_full_depth', 'part_number', 'subdevice_role', 'airflow', 'weight', 'weight_unit', + 'u_height', 'exclude_from_utilization', 'is_full_depth', 'part_number', 'subdevice_role', 'airflow', + 'weight', 'weight_unit', )), (_('Images'), ('front_image', 'rear_image')), ) @@ -310,9 +311,9 @@ class DeviceTypeForm(NetBoxModelForm): class Meta: model = DeviceType fields = [ - 'manufacturer', 'model', 'slug', 'default_platform', 'part_number', 'u_height', 'is_full_depth', - 'subdevice_role', 'airflow', 'weight', 'weight_unit', 'front_image', 'rear_image', 'description', - 'comments', 'tags', + 'manufacturer', 'model', 'slug', 'default_platform', 'part_number', 'u_height', 'exclude_from_utilization', + 'is_full_depth', 'subdevice_role', 'airflow', 'weight', 'weight_unit', 'front_image', 'rear_image', + 'description', 'comments', 'tags', ] widgets = { 'front_image': ClearableFileInput(attrs={ @@ -421,12 +422,13 @@ class DeviceForm(TenancyForm, NetBoxModelForm): label=_('Position'), required=False, help_text=_("The lowest-numbered unit occupied by the device"), + localize=True, widget=APISelect( api_url='/api/dcim/racks/{{rack}}/elevation/', attrs={ 'disabled-indicator': 'device', 'data-dynamic-params': '[{"fieldName":"face","queryParam":"face"}]' - } + }, ) ) device_type = DynamicModelChoiceField( @@ -441,7 +443,8 @@ class DeviceForm(TenancyForm, NetBoxModelForm): platform = DynamicModelChoiceField( label=_('Platform'), queryset=Platform.objects.all(), - required=False + required=False, + selector=True ) cluster = DynamicModelChoiceField( label=_('Cluster'), @@ -1110,7 +1113,7 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm): required=False, label=_('Parent interface'), query_params={ - 'device_id': '$device', + 'virtual_chassis_member_id': '$device', } ) bridge = DynamicModelChoiceField( @@ -1118,7 +1121,7 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm): required=False, label=_('Bridged interface'), query_params={ - 'device_id': '$device', + 'virtual_chassis_member_id': '$device', } ) lag = DynamicModelChoiceField( @@ -1126,7 +1129,7 @@ class InterfaceForm(InterfaceCommonForm, ModularDeviceComponentForm): required=False, label=_('LAG interface'), query_params={ - 'device_id': '$device', + 'virtual_chassis_member_id': '$device', 'type': 'lag', } ) diff --git a/netbox/dcim/forms/object_create.py b/netbox/dcim/forms/object_create.py index abd7bd6f6..ea842508f 100644 --- a/netbox/dcim/forms/object_create.py +++ b/netbox/dcim/forms/object_create.py @@ -151,6 +151,23 @@ class FrontPortTemplateCreateForm(ComponentCreateForm, model_forms.FrontPortTemp ) self.fields['rear_port'].choices = choices + def clean(self): + + # Check that the number of FrontPortTemplates to be created matches the selected number of RearPortTemplate + # positions + frontport_count = len(self.cleaned_data['name']) + rearport_count = len(self.cleaned_data['rear_port']) + if frontport_count != rearport_count: + raise forms.ValidationError({ + 'rear_port': _( + "The number of front port templates to be created ({frontport_count}) must match the selected " + "number of rear port positions ({rearport_count})." + ).format( + frontport_count=frontport_count, + rearport_count=rearport_count + ) + }) + def get_iterative_data(self, iteration): # Assign rear port and position from selected set @@ -291,6 +308,22 @@ class FrontPortCreateForm(ComponentCreateForm, model_forms.FrontPortForm): ) self.fields['rear_port'].choices = choices + def clean(self): + + # Check that the number of FrontPorts to be created matches the selected number of RearPort positions + frontport_count = len(self.cleaned_data['name']) + rearport_count = len(self.cleaned_data['rear_port']) + if frontport_count != rearport_count: + raise forms.ValidationError({ + 'rear_port': _( + "The number of front ports to be created ({frontport_count}) must match the selected number of " + "rear port positions ({rearport_count})." + ).format( + frontport_count=frontport_count, + rearport_count=rearport_count + ) + }) + def get_iterative_data(self, iteration): # Assign rear port and position from selected set diff --git a/netbox/dcim/migrations/0174_rack_starting_unit.py b/netbox/dcim/migrations/0174_rack_starting_unit.py index e32738660..2d2b5f826 100644 --- a/netbox/dcim/migrations/0174_rack_starting_unit.py +++ b/netbox/dcim/migrations/0174_rack_starting_unit.py @@ -1,5 +1,6 @@ # Generated by Django 4.1.9 on 2023-05-31 15:47 +import django.core.validators from django.db import migrations, models @@ -12,6 +13,6 @@ class Migration(migrations.Migration): migrations.AddField( model_name='rack', name='starting_unit', - field=models.PositiveSmallIntegerField(default=1), + field=models.PositiveSmallIntegerField(default=1, validators=[django.core.validators.MinValueValidator(1)]), ), ] diff --git a/netbox/dcim/migrations/0176_device_component_counters.py b/netbox/dcim/migrations/0176_device_component_counters.py index b570ddbd5..60857ecb9 100644 --- a/netbox/dcim/migrations/0176_device_component_counters.py +++ b/netbox/dcim/migrations/0176_device_component_counters.py @@ -2,47 +2,22 @@ from django.db import migrations from django.db.models import Count import utilities.fields +from utilities.counters import update_counts def recalculate_device_counts(apps, schema_editor): Device = apps.get_model("dcim", "Device") - devices = list(Device.objects.all().annotate( - _console_port_count=Count('consoleports', distinct=True), - _console_server_port_count=Count('consoleserverports', distinct=True), - _power_port_count=Count('powerports', distinct=True), - _power_outlet_count=Count('poweroutlets', distinct=True), - _interface_count=Count('interfaces', distinct=True), - _front_port_count=Count('frontports', distinct=True), - _rear_port_count=Count('rearports', distinct=True), - _device_bay_count=Count('devicebays', distinct=True), - _module_bay_count=Count('modulebays', distinct=True), - _inventory_item_count=Count('inventoryitems', distinct=True), - )) - for device in devices: - device.console_port_count = device._console_port_count - device.console_server_port_count = device._console_server_port_count - device.power_port_count = device._power_port_count - device.power_outlet_count = device._power_outlet_count - device.interface_count = device._interface_count - device.front_port_count = device._front_port_count - device.rear_port_count = device._rear_port_count - device.device_bay_count = device._device_bay_count - device.module_bay_count = device._module_bay_count - device.inventory_item_count = device._inventory_item_count - - Device.objects.bulk_update(devices, [ - 'console_port_count', - 'console_server_port_count', - 'power_port_count', - 'power_outlet_count', - 'interface_count', - 'front_port_count', - 'rear_port_count', - 'device_bay_count', - 'module_bay_count', - 'inventory_item_count', - ]) + update_counts(Device, 'console_port_count', 'consoleports') + update_counts(Device, 'console_server_port_count', 'consoleserverports') + update_counts(Device, 'power_port_count', 'powerports') + update_counts(Device, 'power_outlet_count', 'poweroutlets') + update_counts(Device, 'interface_count', 'interfaces') + update_counts(Device, 'front_port_count', 'frontports') + update_counts(Device, 'rear_port_count', 'rearports') + update_counts(Device, 'device_bay_count', 'devicebays') + update_counts(Device, 'module_bay_count', 'modulebays') + update_counts(Device, 'inventory_item_count', 'inventoryitems') class Migration(migrations.Migration): diff --git a/netbox/dcim/migrations/0177_devicetype_component_counters.py b/netbox/dcim/migrations/0177_devicetype_component_counters.py index 66d1460d9..b452ce2d9 100644 --- a/netbox/dcim/migrations/0177_devicetype_component_counters.py +++ b/netbox/dcim/migrations/0177_devicetype_component_counters.py @@ -2,47 +2,22 @@ from django.db import migrations from django.db.models import Count import utilities.fields +from utilities.counters import update_counts def recalculate_devicetype_template_counts(apps, schema_editor): DeviceType = apps.get_model("dcim", "DeviceType") - device_types = list(DeviceType.objects.all().annotate( - _console_port_template_count=Count('consoleporttemplates', distinct=True), - _console_server_port_template_count=Count('consoleserverporttemplates', distinct=True), - _power_port_template_count=Count('powerporttemplates', distinct=True), - _power_outlet_template_count=Count('poweroutlettemplates', distinct=True), - _interface_template_count=Count('interfacetemplates', distinct=True), - _front_port_template_count=Count('frontporttemplates', distinct=True), - _rear_port_template_count=Count('rearporttemplates', distinct=True), - _device_bay_template_count=Count('devicebaytemplates', distinct=True), - _module_bay_template_count=Count('modulebaytemplates', distinct=True), - _inventory_item_template_count=Count('inventoryitemtemplates', distinct=True), - )) - for devicetype in device_types: - devicetype.console_port_template_count = devicetype._console_port_template_count - devicetype.console_server_port_template_count = devicetype._console_server_port_template_count - devicetype.power_port_template_count = devicetype._power_port_template_count - devicetype.power_outlet_template_count = devicetype._power_outlet_template_count - devicetype.interface_template_count = devicetype._interface_template_count - devicetype.front_port_template_count = devicetype._front_port_template_count - devicetype.rear_port_template_count = devicetype._rear_port_template_count - devicetype.device_bay_template_count = devicetype._device_bay_template_count - devicetype.module_bay_template_count = devicetype._module_bay_template_count - devicetype.inventory_item_template_count = devicetype._inventory_item_template_count - - DeviceType.objects.bulk_update(device_types, [ - 'console_port_template_count', - 'console_server_port_template_count', - 'power_port_template_count', - 'power_outlet_template_count', - 'interface_template_count', - 'front_port_template_count', - 'rear_port_template_count', - 'device_bay_template_count', - 'module_bay_template_count', - 'inventory_item_template_count', - ]) + update_counts(DeviceType, 'console_port_template_count', 'consoleporttemplates') + update_counts(DeviceType, 'console_server_port_template_count', 'consoleserverporttemplates') + update_counts(DeviceType, 'power_port_template_count', 'powerporttemplates') + update_counts(DeviceType, 'power_outlet_template_count', 'poweroutlettemplates') + update_counts(DeviceType, 'interface_template_count', 'interfacetemplates') + update_counts(DeviceType, 'front_port_template_count', 'frontporttemplates') + update_counts(DeviceType, 'rear_port_template_count', 'rearporttemplates') + update_counts(DeviceType, 'device_bay_template_count', 'devicebaytemplates') + update_counts(DeviceType, 'module_bay_template_count', 'modulebaytemplates') + update_counts(DeviceType, 'inventory_item_template_count', 'inventoryitemtemplates') class Migration(migrations.Migration): diff --git a/netbox/dcim/migrations/0178_virtual_chassis_member_counter.py b/netbox/dcim/migrations/0178_virtual_chassis_member_counter.py index e3ade1344..99b304b66 100644 --- a/netbox/dcim/migrations/0178_virtual_chassis_member_counter.py +++ b/netbox/dcim/migrations/0178_virtual_chassis_member_counter.py @@ -2,17 +2,13 @@ from django.db import migrations from django.db.models import Count import utilities.fields +from utilities.counters import update_counts def populate_virtualchassis_members(apps, schema_editor): VirtualChassis = apps.get_model('dcim', 'VirtualChassis') - vcs = list(VirtualChassis.objects.annotate(_member_count=Count('members', distinct=True))) - - for vc in vcs: - vc.member_count = vc._member_count - - VirtualChassis.objects.bulk_update(vcs, ['member_count']) + update_counts(VirtualChassis, 'member_count', 'members') class Migration(migrations.Migration): diff --git a/netbox/dcim/migrations/0182_zero_length_cable_fix.py b/netbox/dcim/migrations/0182_zero_length_cable_fix.py new file mode 100644 index 000000000..080e00717 --- /dev/null +++ b/netbox/dcim/migrations/0182_zero_length_cable_fix.py @@ -0,0 +1,22 @@ +from django.db import migrations + + +def update_cable_lengths(apps, schema_editor): + Cable = apps.get_model('dcim', 'Cable') + + # Set the absolute length for any zero-length Cables + Cable.objects.filter(length=0).update(_abs_length=0) + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0181_rename_device_role_device_role'), + ] + + operations = [ + migrations.RunPython( + code=update_cable_lengths, + reverse_code=migrations.RunPython.noop + ), + ] diff --git a/netbox/dcim/migrations/0183_devicetype_exclude_from_utilization.py b/netbox/dcim/migrations/0183_devicetype_exclude_from_utilization.py new file mode 100644 index 000000000..f9f2c20b4 --- /dev/null +++ b/netbox/dcim/migrations/0183_devicetype_exclude_from_utilization.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.5 on 2023-10-20 22:30 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ('dcim', '0182_zero_length_cable_fix'), + ] + + operations = [ + migrations.AddField( + model_name='devicetype', + name='exclude_from_utilization', + field=models.BooleanField(default=False), + ), + ] diff --git a/netbox/dcim/migrations/0184_protect_child_interfaces.py b/netbox/dcim/migrations/0184_protect_child_interfaces.py new file mode 100644 index 000000000..3459e23fc --- /dev/null +++ b/netbox/dcim/migrations/0184_protect_child_interfaces.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.6 on 2023-10-20 11:48 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0183_devicetype_exclude_from_utilization'), + ] + + operations = [ + migrations.AlterField( + model_name='interface', + name='parent', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.RESTRICT, related_name='child_interfaces', to='dcim.interface'), + ), + ] diff --git a/netbox/dcim/migrations/0185_gfk_indexes.py b/netbox/dcim/migrations/0185_gfk_indexes.py new file mode 100644 index 000000000..84cdc53ff --- /dev/null +++ b/netbox/dcim/migrations/0185_gfk_indexes.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.7 on 2023-12-07 16:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0184_protect_child_interfaces'), + ] + + operations = [ + migrations.AddIndex( + model_name='cabletermination', + index=models.Index(fields=['termination_type', 'termination_id'], name='dcim_cablet_termina_884752_idx'), + ), + migrations.AddIndex( + model_name='inventoryitem', + index=models.Index(fields=['component_type', 'component_id'], name='dcim_invent_compone_0560bb_idx'), + ), + migrations.AddIndex( + model_name='inventoryitemtemplate', + index=models.Index(fields=['component_type', 'component_id'], name='dcim_invent_compone_77b5f8_idx'), + ), + ] diff --git a/netbox/dcim/models/cables.py b/netbox/dcim/models/cables.py index de7ba0eb6..d1c80d0be 100644 --- a/netbox/dcim/models/cables.py +++ b/netbox/dcim/models/cables.py @@ -2,7 +2,6 @@ import itertools from collections import defaultdict from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db import models from django.db.models import Sum @@ -10,17 +9,17 @@ from django.dispatch import Signal from django.urls import reverse from django.utils.translation import gettext_lazy as _ +from core.models import ContentType from dcim.choices import * from dcim.constants import * from dcim.fields import PathField from dcim.utils import decompile_path_node, object_to_path_node from netbox.models import ChangeLoggedModel, PrimaryModel - from utilities.fields import ColorField from utilities.querysets import RestrictedQuerySet from utilities.utils import to_meters from wireless.models import WirelessLink -from .device_components import FrontPort, RearPort +from .device_components import FrontPort, RearPort, PathEndpoint __all__ = ( 'Cable', @@ -98,10 +97,10 @@ class Cable(PrimaryModel): super().__init__(*args, **kwargs) # A copy of the PK to be used by __str__ in case the object is deleted - self._pk = self.pk + self._pk = self.__dict__.get('id') # Cache the original status so we can check later if it's been changed - self._orig_status = self.status + self._orig_status = self.__dict__.get('status') self._terminations_modified = False @@ -180,6 +179,17 @@ class Cable(PrimaryModel): if b_type not in COMPATIBLE_TERMINATION_TYPES.get(a_type): raise ValidationError(f"Incompatible termination types: {a_type} and {b_type}") + if a_type == b_type: + # can't directly use self.a_terminations here as possible they + # don't have pk yet + a_pks = set(obj.pk for obj in self.a_terminations if obj.pk) + b_pks = set(obj.pk for obj in self.b_terminations if obj.pk) + + if (a_pks & b_pks): + raise ValidationError( + _("A and B terminations cannot connect to the same object.") + ) + # Run clean() on any new CableTerminations for termination in self.a_terminations: CableTermination(cable=self, cable_end='A', termination=termination).clean() @@ -190,7 +200,7 @@ class Cable(PrimaryModel): _created = self.pk is None # Store the given length (if any) in meters for use in database ordering - if self.length and self.length_unit: + if self.length is not None and self.length_unit: self._abs_length = to_meters(self.length, self.length_unit) else: self._abs_length = None @@ -247,7 +257,7 @@ class CableTermination(ChangeLoggedModel): verbose_name=_('end') ) termination_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', limit_choices_to=CABLE_TERMINATION_MODELS, on_delete=models.PROTECT, related_name='+' @@ -288,6 +298,9 @@ class CableTermination(ChangeLoggedModel): class Meta: ordering = ('cable', 'cable_end', 'pk') + indexes = ( + models.Index(fields=('termination_type', 'termination_id')), + ) constraints = ( models.UniqueConstraint( fields=('termination_type', 'termination_id'), @@ -431,6 +444,8 @@ class CablePath(models.Model): ) _nodes = PathField() + _netbox_private = True + class Meta: verbose_name = _('cable path') verbose_name_plural = _('cable paths') @@ -518,9 +533,16 @@ class CablePath(models.Model): # Terminations must all be of the same type assert all(isinstance(t, type(terminations[0])) for t in terminations[1:]) + # All mid-span terminations must all be attached to the same device + if not isinstance(terminations[0], PathEndpoint): + assert all(isinstance(t, type(terminations[0])) for t in terminations[1:]) + assert all(t.parent_object == terminations[0].parent_object for t in terminations[1:]) + # Check for a split path (e.g. rear port fanning out to multiple front ports with # different cables attached) - if len(set(t.link for t in terminations)) > 1: + if len(set(t.link for t in terminations)) > 1 and ( + position_stack and len(terminations) != len(position_stack[-1]) + ): is_split = True break @@ -529,46 +551,68 @@ class CablePath(models.Model): object_to_path_node(t) for t in terminations ]) - # Step 2: Determine the attached link (Cable or WirelessLink), if any - link = terminations[0].link - if link is None and len(path) == 1: - # If this is the start of the path and no link exists, return None - return None - elif link is None: + # Step 2: Determine the attached links (Cable or WirelessLink), if any + links = [termination.link for termination in terminations if termination.link is not None] + if len(links) == 0: + if len(path) == 1: + # If this is the start of the path and no link exists, return None + return None # Otherwise, halt the trace if no link exists break - assert type(link) in (Cable, WirelessLink) + assert all(type(link) in (Cable, WirelessLink) for link in links) + assert all(isinstance(link, type(links[0])) for link in links) - # Step 3: Record the link and update path status if not "connected" - path.append([object_to_path_node(link)]) - if hasattr(link, 'status') and link.status != LinkStatusChoices.STATUS_CONNECTED: + # Step 3: Record asymmetric paths as split + not_connected_terminations = [termination.link for termination in terminations if termination.link is None] + if len(not_connected_terminations) > 0: + is_complete = False + is_split = True + + # Step 4: Record the links, keeping cables in order to allow for SVG rendering + cables = [] + for link in links: + if object_to_path_node(link) not in cables: + cables.append(object_to_path_node(link)) + path.append(cables) + + # Step 5: Update the path status if a link is not connected + links_status = [link.status for link in links if link.status != LinkStatusChoices.STATUS_CONNECTED] + if any([status != LinkStatusChoices.STATUS_CONNECTED for status in links_status]): is_active = False - # Step 4: Determine the far-end terminations - if isinstance(link, Cable): + # Step 6: Determine the far-end terminations + if isinstance(links[0], Cable): termination_type = ContentType.objects.get_for_model(terminations[0]) local_cable_terminations = CableTermination.objects.filter( termination_type=termination_type, termination_id__in=[t.pk for t in terminations] ) - # Terminations must all belong to same end of Cable - local_cable_end = local_cable_terminations[0].cable_end - assert all(ct.cable_end == local_cable_end for ct in local_cable_terminations[1:]) - remote_cable_terminations = CableTermination.objects.filter( - cable=link, - cable_end='A' if local_cable_end == 'B' else 'B' - ) + + q_filter = Q() + for lct in local_cable_terminations: + cable_end = 'A' if lct.cable_end == 'B' else 'B' + q_filter |= Q(cable=lct.cable, cable_end=cable_end) + + remote_cable_terminations = CableTermination.objects.filter(q_filter) remote_terminations = [ct.termination for ct in remote_cable_terminations] else: # WirelessLink - remote_terminations = [link.interface_b] if link.interface_a is terminations[0] else [link.interface_a] + remote_terminations = [ + link.interface_b if link.interface_a is terminations[0] else link.interface_a for link in links + ] - # Step 5: Record the far-end termination object(s) + # Remote Terminations must all be of the same type, otherwise return a split path + if not all(isinstance(t, type(remote_terminations[0])) for t in remote_terminations[1:]): + is_complete = False + is_split = True + break + + # Step 7: Record the far-end termination object(s) path.append([ object_to_path_node(t) for t in remote_terminations if t is not None ]) - # Step 6: Determine the "next hop" terminations, if applicable + # Step 8: Determine the "next hop" terminations, if applicable if not remote_terminations: break @@ -577,20 +621,32 @@ class CablePath(models.Model): rear_ports = RearPort.objects.filter( pk__in=[t.rear_port_id for t in remote_terminations] ) - if len(rear_ports) > 1: - assert all(rp.positions == 1 for rp in rear_ports) - elif rear_ports[0].positions > 1: + if len(rear_ports) > 1 or rear_ports[0].positions > 1: position_stack.append([fp.rear_port_position for fp in remote_terminations]) terminations = rear_ports elif isinstance(remote_terminations[0], RearPort): - - if len(remote_terminations) > 1 or remote_terminations[0].positions == 1: + if len(remote_terminations) == 1 and remote_terminations[0].positions == 1: front_ports = FrontPort.objects.filter( rear_port_id__in=[rp.pk for rp in remote_terminations], rear_port_position=1 ) + # Obtain the individual front ports based on the termination and all positions + elif len(remote_terminations) > 1 and position_stack: + positions = position_stack.pop() + + # Ensure we have a number of positions equal to the amount of remote terminations + assert len(remote_terminations) == len(positions) + + # Get our front ports + q_filter = Q() + for rt in remote_terminations: + position = positions.pop() + q_filter |= Q(rear_port_id=rt.pk, rear_port_position=position) + assert q_filter is not Q() + front_ports = FrontPort.objects.filter(q_filter) + # Obtain the individual front ports based on the termination and position elif position_stack: front_ports = FrontPort.objects.filter( rear_port_id=remote_terminations[0].pk, @@ -632,9 +688,16 @@ class CablePath(models.Model): terminations = [circuit_termination] - # Anything else marks the end of the path else: - is_complete = True + # Check for non-symmetric path + if all(isinstance(t, type(remote_terminations[0])) for t in remote_terminations[1:]): + is_complete = True + elif len(remote_terminations) == 0: + is_complete = False + else: + # Unsupported topology, mark as split and exit + is_complete = False + is_split = True break return cls( @@ -740,3 +803,15 @@ class CablePath(models.Model): return [ ct.get_peer_termination() for ct in nodes ] + + def get_asymmetric_nodes(self): + """ + Return all available next segments in a split cable path. + """ + from circuits.models import CircuitTermination + asymmetric_nodes = [] + for nodes in self.path_objects: + if type(nodes[0]) in [RearPort, FrontPort, CircuitTermination]: + asymmetric_nodes.extend([node for node in nodes if node.link is None]) + + return asymmetric_nodes diff --git a/netbox/dcim/models/device_component_templates.py b/netbox/dcim/models/device_component_templates.py index f58d2bbca..dacd7ec3e 100644 --- a/netbox/dcim/models/device_component_templates.py +++ b/netbox/dcim/models/device_component_templates.py @@ -1,5 +1,4 @@ from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models @@ -89,7 +88,7 @@ class ComponentTemplateModel(ChangeLoggedModel, TrackingModelMixin): super().__init__(*args, **kwargs) # Cache the original DeviceType ID for reference under clean() - self._original_device_type = self.device_type_id + self._original_device_type = self.__dict__.get('device_type_id') def to_objectchange(self, action): objectchange = super().to_objectchange(action) @@ -534,14 +533,16 @@ class FrontPortTemplate(ModularComponentTemplateModel): # Validate rear port assignment if self.rear_port.device_type != self.device_type: raise ValidationError( - _("Rear port ({}) must belong to the same device type").format(self.rear_port) + _("Rear port ({name}) must belong to the same device type").format(name=self.rear_port) ) # Validate rear port position assignment if self.rear_port_position > self.rear_port.positions: raise ValidationError( - _("Invalid rear port position ({}); rear port {} has only {} positions").format( - self.rear_port_position, self.rear_port.name, self.rear_port.positions + _("Invalid rear port position ({position}); rear port {name} has only {count} positions").format( + position=self.rear_port_position, + name=self.rear_port.name, + count=self.rear_port.positions ) ) @@ -707,7 +708,7 @@ class InventoryItemTemplate(MPTTModel, ComponentTemplateModel): db_index=True ) component_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', limit_choices_to=MODULAR_COMPONENT_TEMPLATE_MODELS, on_delete=models.PROTECT, related_name='+', @@ -748,6 +749,9 @@ class InventoryItemTemplate(MPTTModel, ComponentTemplateModel): class Meta: ordering = ('device_type__id', 'parent__id', '_name') + indexes = ( + models.Index(fields=('component_type', 'component_id')), + ) constraints = ( models.UniqueConstraint( fields=('device_type', 'parent', 'name'), diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index e18f25e4f..ef235078f 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -1,7 +1,6 @@ from functools import cached_property from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation -from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models @@ -86,7 +85,7 @@ class ComponentModel(NetBoxModel): super().__init__(*args, **kwargs) # Cache the original Device ID for reference under clean() - self._original_device = self.device_id + self._original_device = self.__dict__.get('device_id') def __str__(self): if self.label: @@ -537,7 +536,7 @@ class BaseInterface(models.Model): ) parent = models.ForeignKey( to='self', - on_delete=models.SET_NULL, + on_delete=models.RESTRICT, related_name='child_interfaces', null=True, blank=True, @@ -567,6 +566,10 @@ class BaseInterface(models.Model): return super().save(*args, **kwargs) + @property + def tunnel_termination(self): + return self.tunnel_terminations.first() + @property def count_ipaddresses(self): return self.ip_addresses.count() @@ -720,8 +723,14 @@ class Interface(ModularComponentModel, BaseInterface, CabledObjectModel, PathEnd object_id_field='interface_id', related_query_name='+' ) + tunnel_terminations = GenericRelation( + to='vpn.TunnelTermination', + content_type_field='termination_type', + object_id_field='termination_id', + related_query_name='interface' + ) l2vpn_terminations = GenericRelation( - to='ipam.L2VPNTermination', + to='vpn.L2VPNTermination', content_type_field='assigned_object_type', object_id_field='assigned_object_id', related_query_name='interface', @@ -799,9 +808,9 @@ class Interface(ModularComponentModel, BaseInterface, CabledObjectModel, PathEnd if self.bridge and self.bridge.device != self.device: if self.device.virtual_chassis is None: raise ValidationError({ - 'bridge': _(""" - The selected bridge interface ({bridge}) belongs to a different device - ({device}).""").format(bridge=self.bridge, device=self.bridge.device) + 'bridge': _( + "The selected bridge interface ({bridge}) belongs to a different device ({device})." + ).format(bridge=self.bridge, device=self.bridge.device) }) elif self.bridge.device.virtual_chassis != self.device.virtual_chassis: raise ValidationError({ @@ -889,10 +898,10 @@ class Interface(ModularComponentModel, BaseInterface, CabledObjectModel, PathEnd # Validate untagged VLAN if self.untagged_vlan and self.untagged_vlan.site not in [self.device.site, None]: raise ValidationError({ - 'untagged_vlan': _(""" - The untagged VLAN ({untagged_vlan}) must belong to the same site as the - interface's parent device, or it must be global. - """).format(untagged_vlan=self.untagged_vlan) + 'untagged_vlan': _( + "The untagged VLAN ({untagged_vlan}) must belong to the same site as the interface's parent " + "device, or it must be global." + ).format(untagged_vlan=self.untagged_vlan) }) def save(self, *args, **kwargs): @@ -1067,9 +1076,10 @@ class RearPort(ModularComponentModel, CabledObjectModel, TrackingModelMixin): frontport_count = self.frontports.count() if self.positions < frontport_count: raise ValidationError({ - "positions": _(""" - The number of positions cannot be less than the number of mapped front ports - ({frontport_count})""").format(frontport_count=frontport_count) + "positions": _( + "The number of positions cannot be less than the number of mapped front ports " + "({frontport_count})" + ).format(frontport_count=frontport_count) }) @@ -1180,7 +1190,7 @@ class InventoryItem(MPTTModel, ComponentModel, TrackingModelMixin): db_index=True ) component_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', limit_choices_to=MODULAR_COMPONENT_MODELS, on_delete=models.PROTECT, related_name='+', @@ -1240,6 +1250,9 @@ class InventoryItem(MPTTModel, ComponentModel, TrackingModelMixin): class Meta: ordering = ('device__id', 'parent__id', '_name') + indexes = ( + models.Index(fields=('component_type', 'component_id')), + ) constraints = ( models.UniqueConstraint( fields=('device', 'parent', 'name'), diff --git a/netbox/dcim/models/devices.py b/netbox/dcim/models/devices.py index 857251caf..4b9689a22 100644 --- a/netbox/dcim/models/devices.py +++ b/netbox/dcim/models/devices.py @@ -4,6 +4,7 @@ import yaml from functools import cached_property from django.core.exceptions import ValidationError +from django.core.files.storage import default_storage from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models from django.db.models import F, ProtectedError @@ -15,7 +16,7 @@ from django.utils.translation import gettext_lazy as _ from dcim.choices import * from dcim.constants import * -from extras.models import ConfigContextModel +from extras.models import ConfigContextModel, CustomField from extras.querysets import ConfigContextModelQuerySet from netbox.config import ConfigItem from netbox.models import OrganizationalModel, PrimaryModel @@ -105,10 +106,15 @@ class DeviceType(ImageAttachmentsMixin, PrimaryModel, WeightMixin): default=1.0, verbose_name=_('height (U)') ) + exclude_from_utilization = models.BooleanField( + default=False, + verbose_name=_('exclude from utilization'), + help_text=_('Devices of this type are excluded when calculating rack utilization.') + ) is_full_depth = models.BooleanField( default=True, verbose_name=_('is full depth'), - help_text=_('Device consumes both front and rear rack faces') + help_text=_('Device consumes both front and rear rack faces.') ) subdevice_role = models.CharField( max_length=50, @@ -205,11 +211,11 @@ class DeviceType(ImageAttachmentsMixin, PrimaryModel, WeightMixin): super().__init__(*args, **kwargs) # Save a copy of u_height for validation in clean() - self._original_u_height = self.u_height + self._original_u_height = self.__dict__.get('u_height') # Save references to the original front/rear images - self._original_front_image = self.front_image - self._original_rear_image = self.rear_image + self._original_front_image = self.__dict__.get('front_image') + self._original_rear_image = self.__dict__.get('rear_image') def get_absolute_url(self): return reverse('dcim:devicetype', args=[self.pk]) @@ -296,8 +302,10 @@ class DeviceType(ImageAttachmentsMixin, PrimaryModel, WeightMixin): ) if d.position not in u_available: raise ValidationError({ - 'u_height': _("Device {} in rack {} does not have sufficient space to accommodate a height of " - "{}U").format(d, d.rack, self.u_height) + 'u_height': _( + "Device {device} in rack {rack} does not have sufficient space to accommodate a " + "height of {height}U" + ).format(device=d, rack=d.rack, height=self.u_height) }) # If modifying the height of an existing DeviceType to 0U, check for any instances assigned to a rack position. @@ -332,10 +340,10 @@ class DeviceType(ImageAttachmentsMixin, PrimaryModel, WeightMixin): ret = super().save(*args, **kwargs) # Delete any previously uploaded image files that are no longer in use - if self.front_image != self._original_front_image: - self._original_front_image.delete(save=False) - if self.rear_image != self._original_rear_image: - self._original_rear_image.delete(save=False) + if self._original_front_image and self.front_image != self._original_front_image: + default_storage.delete(self._original_front_image) + if self._original_rear_image and self.rear_image != self._original_rear_image: + default_storage.delete(self._original_rear_image) return ret @@ -914,7 +922,7 @@ class Device( if self.primary_ip4: if self.primary_ip4.family != 4: raise ValidationError({ - 'primary_ip4': _("{primary_ip4} is not an IPv4 address.").format(primary_ip4=self.primary_ip4) + 'primary_ip4': _("{ip} is not an IPv4 address.").format(ip=self.primary_ip4) }) if self.primary_ip4.assigned_object in vc_interfaces: pass @@ -923,13 +931,13 @@ class Device( else: raise ValidationError({ 'primary_ip4': _( - "The specified IP address ({primary_ip4}) is not assigned to this device." - ).format(primary_ip4=self.primary_ip4) + "The specified IP address ({ip}) is not assigned to this device." + ).format(ip=self.primary_ip4) }) if self.primary_ip6: if self.primary_ip6.family != 6: raise ValidationError({ - 'primary_ip6': _("{primary_ip6} is not an IPv6 address.").format(primary_ip6=self.primary_ip6m) + 'primary_ip6': _("{ip} is not an IPv6 address.").format(ip=self.primary_ip6) }) if self.primary_ip6.assigned_object in vc_interfaces: pass @@ -938,8 +946,8 @@ class Device( else: raise ValidationError({ 'primary_ip6': _( - "The specified IP address ({primary_ip6}) is not assigned to this device." - ).format(primary_ip6=self.primary_ip6) + "The specified IP address ({ip}) is not assigned to this device." + ).format(ip=self.primary_ip6) }) if self.oob_ip: if self.oob_ip.assigned_object in vc_interfaces: @@ -957,17 +965,19 @@ class Device( raise ValidationError({ 'platform': _( "The assigned platform is limited to {platform_manufacturer} device types, but this device's " - "type belongs to {device_type_manufacturer}." + "type belongs to {devicetype_manufacturer}." ).format( platform_manufacturer=self.platform.manufacturer, - device_type_manufacturer=self.device_type.manufacturer + devicetype_manufacturer=self.device_type.manufacturer ) }) # A Device can only be assigned to a Cluster in the same Site (or no Site) if self.cluster and self.cluster.site is not None and self.cluster.site != self.site: raise ValidationError({ - 'cluster': _("The assigned cluster belongs to a different site ({})").format(self.cluster.site) + 'cluster': _("The assigned cluster belongs to a different site ({site})").format( + site=self.cluster.site + ) }) # Validate virtual chassis assignment @@ -984,11 +994,17 @@ class Device( bulk_create: If True, bulk_create() will be called to create all components in a single query (default). Otherwise, save() will be called on each instance individually. """ + components = [obj.instantiate(device=self) for obj in queryset] + if not components: + return + + # Set default values for any applicable custom fields + model = queryset.model.component_model + if cf_defaults := CustomField.objects.get_defaults_for_model(model): + for component in components: + component.custom_field_data = cf_defaults + if bulk_create: - components = [obj.instantiate(device=self) for obj in queryset] - if not components: - return - model = components[0]._meta.model model.objects.bulk_create(components) # Manually send the post_save signal for each of the newly created components for component in components: @@ -1001,8 +1017,7 @@ class Device( update_fields=None ) else: - for obj in queryset: - component = obj.instantiate(device=self) + for component in components: component.save() def save(self, *args, **kwargs): @@ -1439,8 +1454,8 @@ class VirtualDeviceContext(PrimaryModel): if primary_ip.family != family: raise ValidationError({ f'primary_ip{family}': _( - "{primary_ip} is not an IPv{family} address." - ).format(family=family, primary_ip=primary_ip) + "{ip} is not an IPv{family} address." + ).format(family=family, ip=primary_ip) }) device_interfaces = self.device.vc_interfaces(if_master=False) if primary_ip.assigned_object not in device_interfaces: diff --git a/netbox/dcim/models/mixins.py b/netbox/dcim/models/mixins.py index 95f6d41fe..9be8dc0a3 100644 --- a/netbox/dcim/models/mixins.py +++ b/netbox/dcim/models/mixins.py @@ -69,7 +69,7 @@ class RenderConfigMixin(models.Model): """ if self.config_template: return self.config_template - if self.role.config_template: + if self.role and self.role.config_template: return self.role.config_template if self.platform and self.platform.config_template: return self.platform.config_template diff --git a/netbox/dcim/models/power.py b/netbox/dcim/models/power.py index 83e5eb23a..62578d6c4 100644 --- a/netbox/dcim/models/power.py +++ b/netbox/dcim/models/power.py @@ -174,8 +174,13 @@ class PowerFeed(PrimaryModel, PathEndpoint, CabledObjectModel): # Rack must belong to same Site as PowerPanel if self.rack and self.rack.site != self.power_panel.site: - raise ValidationError(_("Rack {} ({}) and power panel {} ({}) are in different sites").format( - self.rack, self.rack.site, self.power_panel, self.power_panel.site + raise ValidationError(_( + "Rack {rack} ({rack_site}) and power panel {powerpanel} ({powerpanel_site}) are in different sites." + ).format( + rack=self.rack, + rack_site=self.rack.site, + powerpanel=self.power_panel, + powerpanel_site=self.power_panel.site )) # AC voltage cannot be negative diff --git a/netbox/dcim/models/racks.py b/netbox/dcim/models/racks.py index ef0dde4da..3cb4e0225 100644 --- a/netbox/dcim/models/racks.py +++ b/netbox/dcim/models/racks.py @@ -141,6 +141,7 @@ class Rack(ContactsMixin, ImageAttachmentsMixin, PrimaryModel, WeightMixin): starting_unit = models.PositiveSmallIntegerField( default=RACK_STARTING_UNIT_DEFAULT, verbose_name=_('starting unit'), + validators=[MinValueValidator(1),], help_text=_('Starting unit for rack') ) desc_units = models.BooleanField( @@ -357,7 +358,7 @@ class Rack(ContactsMixin, ImageAttachmentsMixin, PrimaryModel, WeightMixin): return [u for u in elevation.values()] - def get_available_units(self, u_height=1, rack_face=None, exclude=None): + def get_available_units(self, u_height=1, rack_face=None, exclude=None, ignore_excluded_devices=False): """ Return a list of units within the rack available to accommodate a device of a given U height (default 1). Optionally exclude one or more devices when calculating empty units (needed when moving a device from one @@ -366,9 +367,13 @@ class Rack(ContactsMixin, ImageAttachmentsMixin, PrimaryModel, WeightMixin): :param u_height: Minimum number of contiguous free units required :param rack_face: The face of the rack (front or rear) required; 'None' if device is full depth :param exclude: List of devices IDs to exclude (useful when moving a device within a rack) + :param ignore_excluded_devices: Ignore devices that are marked to exclude from utilization calculations """ # Gather all devices which consume U space within the rack devices = self.devices.prefetch_related('device_type').filter(position__gte=1) + if ignore_excluded_devices: + devices = devices.exclude(device_type__exclude_from_utilization=True) + if exclude is not None: devices = devices.exclude(pk__in=exclude) @@ -453,7 +458,7 @@ class Rack(ContactsMixin, ImageAttachmentsMixin, PrimaryModel, WeightMixin): """ # Determine unoccupied units total_units = len(list(self.units)) - available_units = self.get_available_units(u_height=0.5) + available_units = self.get_available_units(u_height=0.5, ignore_excluded_devices=True) # Remove reserved units for ru in self.get_reserved_units(): @@ -558,9 +563,9 @@ class RackReservation(PrimaryModel): invalid_units = [u for u in self.units if u not in self.rack.units] if invalid_units: raise ValidationError({ - 'units': _("Invalid unit(s) for {}U rack: {}").format( - self.rack.u_height, - ', '.join([str(u) for u in invalid_units]), + 'units': _("Invalid unit(s) for {height}U rack: {unit_list}").format( + height=self.rack.u_height, + unit_list=', '.join([str(u) for u in invalid_units]) ), }) @@ -571,8 +576,8 @@ class RackReservation(PrimaryModel): conflicting_units = [u for u in self.units if u in reserved_units] if conflicting_units: raise ValidationError({ - 'units': _('The following units have already been reserved: {}').format( - ', '.join([str(u) for u in conflicting_units]), + 'units': _('The following units have already been reserved: {unit_list}').format( + unit_list=', '.join([str(u) for u in conflicting_units]) ) }) diff --git a/netbox/dcim/search.py b/netbox/dcim/search.py index f70c729f4..18cf75a9a 100644 --- a/netbox/dcim/search.py +++ b/netbox/dcim/search.py @@ -10,6 +10,7 @@ class CableIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('type', 'status', 'tenant', 'label', 'description') @register_search @@ -21,6 +22,7 @@ class ConsolePortIndex(SearchIndex): ('description', 500), ('speed', 2000), ) + display_attrs = ('device', 'label', 'type', 'description') @register_search @@ -32,6 +34,7 @@ class ConsoleServerPortIndex(SearchIndex): ('description', 500), ('speed', 2000), ) + display_attrs = ('device', 'label', 'type', 'description') @register_search @@ -44,6 +47,10 @@ class DeviceIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ( + 'site', 'location', 'rack', 'status', 'device_type', 'role', 'tenant', 'platform', 'serial', 'asset_tag', + 'description', + ) @register_search @@ -54,6 +61,7 @@ class DeviceBayIndex(SearchIndex): ('label', 200), ('description', 500), ) + display_attrs = ('device', 'label', 'description') @register_search @@ -64,6 +72,7 @@ class DeviceRoleIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -75,6 +84,7 @@ class DeviceTypeIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('manufacturer', 'part_number', 'description') @register_search @@ -85,6 +95,7 @@ class FrontPortIndex(SearchIndex): ('label', 200), ('description', 500), ) + display_attrs = ('device', 'label', 'type', 'description') @register_search @@ -99,6 +110,7 @@ class InterfaceIndex(SearchIndex): ('mtu', 2000), ('speed', 2000), ) + display_attrs = ('device', 'label', 'type', 'mac_address', 'wwn', 'description') @register_search @@ -112,6 +124,7 @@ class InventoryItemIndex(SearchIndex): ('description', 500), ('part_id', 2000), ) + display_attrs = ('device', 'manufacturer', 'parent', 'part_id', 'serial', 'asset_tag', 'description') @register_search @@ -122,6 +135,7 @@ class LocationIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('site', 'status', 'tenant', 'description') @register_search @@ -132,6 +146,7 @@ class ManufacturerIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -143,6 +158,7 @@ class ModuleIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('device', 'module_bay', 'module_type', 'status', 'serial', 'asset_tag', 'description') @register_search @@ -153,6 +169,7 @@ class ModuleBayIndex(SearchIndex): ('label', 200), ('description', 500), ) + display_attrs = ('device', 'label', 'position', 'description') @register_search @@ -164,6 +181,7 @@ class ModuleTypeIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('manufacturer', 'model', 'part_number', 'description') @register_search @@ -174,6 +192,7 @@ class PlatformIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('manufacturer', 'description') @register_search @@ -184,6 +203,7 @@ class PowerFeedIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('power_panel', 'rack', 'status', 'description') @register_search @@ -194,6 +214,7 @@ class PowerOutletIndex(SearchIndex): ('label', 200), ('description', 500), ) + display_attrs = ('device', 'label', 'type', 'description') @register_search @@ -204,6 +225,7 @@ class PowerPanelIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('site', 'location', 'description') @register_search @@ -216,6 +238,7 @@ class PowerPortIndex(SearchIndex): ('maximum_draw', 2000), ('allocated_draw', 2000), ) + display_attrs = ('device', 'label', 'type', 'description') @register_search @@ -229,6 +252,9 @@ class RackIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ( + 'site', 'location', 'facility_id', 'tenant', 'status', 'role', 'serial', 'asset_tag', 'description', + ) @register_search @@ -238,6 +264,7 @@ class RackReservationIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('rack', 'tenant', 'user', 'description') @register_search @@ -248,6 +275,7 @@ class RackRoleIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -258,6 +286,7 @@ class RearPortIndex(SearchIndex): ('label', 200), ('description', 500), ) + display_attrs = ('device', 'label', 'type', 'description') @register_search @@ -268,6 +297,7 @@ class RegionIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('parent', 'description') @register_search @@ -282,6 +312,7 @@ class SiteIndex(SearchIndex): ('shipping_address', 2000), ('comments', 5000), ) + display_attrs = ('region', 'group', 'status', 'tenant', 'facility', 'description') @register_search @@ -292,6 +323,7 @@ class SiteGroupIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('parent', 'description') @register_search @@ -303,6 +335,7 @@ class VirtualChassisIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('master', 'domain', 'description') @register_search @@ -314,3 +347,4 @@ class VirtualDeviceContextIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('device', 'status', 'identifier', 'tenant', 'description') diff --git a/netbox/dcim/svg/cables.py b/netbox/dcim/svg/cables.py index 9413726fa..d7365161e 100644 --- a/netbox/dcim/svg/cables.py +++ b/netbox/dcim/svg/cables.py @@ -32,11 +32,18 @@ class Node(Hyperlink): color: Box fill color (RRGGBB format) labels: An iterable of text strings. Each label will render on a new line within the box. radius: Box corner radius, for rounded corners (default: 10) + object: A copy of the object to allow reference when drawing cables to determine which cables are connected to + which terminations. """ - def __init__(self, position, width, url, color, labels, radius=10, **extra): + object = None + + def __init__(self, position, width, url, color, labels, radius=10, object=object, **extra): super(Node, self).__init__(href=url, target='_parent', **extra) + # Save object for reference by cable systems + self.object = object + x, y = position # Add the box @@ -77,7 +84,7 @@ class Connector(Group): labels: Iterable of text labels """ - def __init__(self, start, url, color, labels=[], **extra): + def __init__(self, start, url, color, labels=[], description=[], **extra): super().__init__(class_='connector', **extra) self.start = start @@ -104,6 +111,8 @@ class Connector(Group): text_coords = (start[0] + PADDING * 2, cursor - LINE_HEIGHT / 2) text = Text(label, insert=text_coords, class_='bold' if not i else []) link.add(text) + if len(description) > 0: + link.set_desc("\n".join(description)) self.add(link) @@ -150,7 +159,10 @@ class CableTraceSVG: labels.append(location_label) elif instance._meta.model_name == 'circuit': labels[0] = f'Circuit {instance}' + labels.append(instance.type) labels.append(instance.provider) + if instance.description: + labels.append(instance.description) elif instance._meta.model_name == 'circuittermination': if instance.xconnect_id: labels.append(f'{instance.xconnect_id}') @@ -170,6 +182,8 @@ class CableTraceSVG: if hasattr(instance, 'role'): # Device return instance.role.color + elif instance._meta.model_name == 'circuit' and instance.type.color: + return instance.type.color else: # Other parent object return 'e0e0e0' @@ -206,7 +220,8 @@ class CableTraceSVG: url=f'{self.base_url}{term.get_absolute_url()}', color=self._get_color(term), labels=self._get_labels(term), - radius=5 + radius=5, + object=term ) nodes_height = max(nodes_height, node.box['height']) nodes.append(node) @@ -238,22 +253,65 @@ class CableTraceSVG: Polyline(points=points, style=f'stroke: #{connector.color}'), )) - def draw_cable(self, cable): - labels = [ - f'Cable {cable}', - cable.get_status_display() - ] - if cable.type: - labels.append(cable.get_type_display()) - if cable.length and cable.length_unit: - labels.append(f'{cable.length} {cable.get_length_unit_display()}') + def draw_cable(self, cable, terminations, cable_count=0): + """ + Draw a single cable. Terminations and cable count are passed for determining position and padding + + :param cable: The cable to draw + :param terminations: List of terminations to build positioning data off of + :param cable_count: Count of all cables on this layer for determining whether to collapse description into a + tooltip. + """ + + # If the cable count is higher than 2, collapse the description into a tooltip + if cable_count > 2: + # Use the cable __str__ function to denote the cable + labels = [f'{cable}'] + + # Include the label and the status description in the tooltip + description = [ + f'Cable {cable}', + cable.get_status_display() + ] + + if cable.type: + # Include the cable type in the tooltip + description.append(cable.get_type_display()) + if cable.length is not None and cable.length_unit: + # Include the cable length in the tooltip + description.append(f'{cable.length} {cable.get_length_unit_display()}') + else: + labels = [ + f'Cable {cable}', + cable.get_status_display() + ] + description = [] + if cable.type: + labels.append(cable.get_type_display()) + if cable.length is not None and cable.length_unit: + # Include the cable length in the tooltip + labels.append(f'{cable.length} {cable.get_length_unit_display()}') + + # If there is only one termination, center on that termination + # Otherwise average the center across the terminations + if len(terminations) == 1: + center = terminations[0].bottom_center[0] + else: + # Get a list of termination centers + termination_centers = [term.bottom_center[0] for term in terminations] + # Average the centers + center = sum(termination_centers) / len(termination_centers) + + # Create the connector connector = Connector( - start=(self.center + OFFSET, self.cursor), + start=(center, self.cursor), color=cable.color or '000000', url=f'{self.base_url}{cable.get_absolute_url()}', - labels=labels + labels=labels, + description=description ) + # Set the cursor position self.cursor += connector.height return connector @@ -334,34 +392,52 @@ class CableTraceSVG: # Connector (a Cable or WirelessLink) if links: - link = links[0] # Remove Cable from list + link_cables = {} + fanin = False + fanout = False - # Cable - if type(link) is Cable: + # Determine if we have fanins or fanouts + if len(near_ends) > len(set(links)): + self.cursor += FANOUT_HEIGHT + fanin = True + if len(far_ends) > len(set(links)): + fanout = True + cursor = self.cursor + for link in links: + # Cable + if type(link) is Cable and not link_cables.get(link.pk): + # Reset cursor + self.cursor = cursor + # Generate a list of terminations connected to this cable + near_end_link_terminations = [term for term in terminations if term.object.cable == link] + # Draw the cable + cable = self.draw_cable(link, near_end_link_terminations, cable_count=len(links)) + # Add cable to the list of cables + link_cables.update({link.pk: cable}) + # Add cable to drawing + self.connectors.append(cable) - # Account for fan-ins height - if len(near_ends) > 1: - self.cursor += FANOUT_HEIGHT + # Draw fan-ins + if len(near_ends) > 1 and fanin: + for term in terminations: + if term.object.cable == link: + self.draw_fanin(term, cable) - cable = self.draw_cable(link) - self.connectors.append(cable) - - # Draw fan-ins - if len(near_ends) > 1: - for term in terminations: - self.draw_fanin(term, cable) - - # WirelessLink - elif type(link) is WirelessLink: - wirelesslink = self.draw_wirelesslink(link) - self.connectors.append(wirelesslink) + # WirelessLink + elif type(link) is WirelessLink: + wirelesslink = self.draw_wirelesslink(link) + self.connectors.append(wirelesslink) # Far end termination(s) if len(far_ends) > 1: - self.cursor += FANOUT_HEIGHT - terminations = self.draw_terminations(far_ends) - for term in terminations: - self.draw_fanout(term, cable) + if fanout: + self.cursor += FANOUT_HEIGHT + terminations = self.draw_terminations(far_ends) + for term in terminations: + if hasattr(term.object, 'cable') and link_cables.get(term.object.cable.pk): + self.draw_fanout(term, link_cables.get(term.object.cable.pk)) + else: + self.draw_terminations(far_ends) elif far_ends: self.draw_terminations(far_ends) else: diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 68c24ca14..4c863e12a 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -64,9 +64,19 @@ def get_interface_state_attribute(record): Get interface enabled state as string to attach to DOM element. """ if record.enabled: - return "enabled" + return 'enabled' else: - return "disabled" + return 'disabled' + + +def get_interface_connected_attribute(record): + """ + Get interface disconnected state as string to attach to DOM element. + """ + if record.mark_connected or record.cable: + return 'connected' + else: + return 'disconnected' # @@ -456,6 +466,12 @@ class PowerPortTable(ModularDeviceComponentTable, PathEndpointTable): 'args': [Accessor('device_id')], } ) + maximum_draw = tables.Column( + verbose_name=_('Maximum draw (W)') + ) + allocated_draw = tables.Column( + verbose_name=_('Allocated draw (W)') + ) tags = columns.TagColumn( url_name='dcim:powerport_list' ) @@ -568,6 +584,12 @@ class BaseInterfaceTable(NetBoxTable): orderable=False, verbose_name=_('L2VPN') ) + tunnel = tables.Column( + accessor=tables.A('tunnel_termination__tunnel'), + linkify=True, + orderable=False, + verbose_name=_('Tunnel') + ) untagged_vlan = tables.Column( verbose_name=_('Untagged VLAN'), linkify=True @@ -615,6 +637,10 @@ class InterfaceTable(ModularDeviceComponentTable, BaseInterfaceTable, PathEndpoi verbose_name=_('VRF'), linkify=True ) + inventory_items = tables.ManyToManyColumn( + linkify_item=True, + verbose_name=_('Inventory Items'), + ) tags = columns.TagColumn( url_name='dcim:interface_list' ) @@ -626,7 +652,8 @@ class InterfaceTable(ModularDeviceComponentTable, BaseInterfaceTable, PathEndpoi 'speed', 'speed_formatted', 'duplex', 'mode', 'mac_address', 'wwn', 'poe_mode', 'poe_type', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'tx_power', 'description', 'mark_connected', 'cable', 'cable_color', 'wireless_link', 'wireless_lans', 'link_peer', 'connection', 'tags', 'vdcs', 'vrf', 'l2vpn', - 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'created', 'last_updated', + 'tunnel', 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'inventory_items', 'created', + 'last_updated', ) default_columns = ('pk', 'name', 'device', 'label', 'enabled', 'type', 'description') @@ -662,8 +689,8 @@ class DeviceInterfaceTable(InterfaceTable): 'pk', 'id', 'name', 'module_bay', 'module', 'label', 'enabled', 'type', 'parent', 'bridge', 'lag', 'mgmt_only', 'mtu', 'mode', 'mac_address', 'wwn', 'rf_role', 'rf_channel', 'rf_channel_frequency', 'rf_channel_width', 'tx_power', 'description', 'mark_connected', 'cable', 'cable_color', 'wireless_link', - 'wireless_lans', 'link_peer', 'connection', 'tags', 'vdcs', 'vrf', 'l2vpn', 'ip_addresses', 'fhrp_groups', - 'untagged_vlan', 'tagged_vlans', 'actions', + 'wireless_lans', 'link_peer', 'connection', 'tags', 'vdcs', 'vrf', 'l2vpn', 'tunnel', 'ip_addresses', + 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'actions', ) default_columns = ( 'pk', 'name', 'label', 'enabled', 'type', 'parent', 'lag', 'mtu', 'mode', 'description', 'ip_addresses', @@ -674,6 +701,7 @@ class DeviceInterfaceTable(InterfaceTable): 'data-name': lambda record: record.name, 'data-enabled': get_interface_state_attribute, 'data-type': lambda record: record.type, + 'data-connected': get_interface_connected_attribute } @@ -871,8 +899,9 @@ class ModuleBayTable(DeviceComponentTable): url_name='dcim:modulebay_list' ) module_status = columns.TemplateColumn( - verbose_name=_('Module Status'), - template_code=MODULEBAY_STATUS + accessor=tables.A('installed_module__status'), + template_code=MODULEBAY_STATUS, + verbose_name=_('Module Status') ) class Meta(DeviceComponentTable.Meta): @@ -921,6 +950,10 @@ class InventoryItemTable(DeviceComponentTable): discovered = columns.BooleanColumn( verbose_name=_('Discovered'), ) + parent = tables.Column( + linkify=True, + verbose_name=_('Parent'), + ) tags = columns.TagColumn( url_name='dcim:inventoryitem_list' ) @@ -929,7 +962,7 @@ class InventoryItemTable(DeviceComponentTable): class Meta(NetBoxTable.Meta): model = models.InventoryItem fields = ( - 'pk', 'id', 'name', 'device', 'component', 'label', 'role', 'manufacturer', 'part_id', 'serial', + 'pk', 'id', 'name', 'device', 'parent', 'component', 'label', 'role', 'manufacturer', 'part_id', 'serial', 'asset_tag', 'description', 'discovered', 'tags', 'created', 'last_updated', ) default_columns = ( @@ -1052,7 +1085,7 @@ class VirtualDeviceContextTable(TenancyColumnsMixin, NetBoxTable): comments = columns.MarkdownColumn() tags = columns.TagColumn( - url_name='dcim:vdc_list' + url_name='dcim:virtualdevicecontext_list' ) class Meta(NetBoxTable.Meta): diff --git a/netbox/dcim/tables/devicetypes.py b/netbox/dcim/tables/devicetypes.py index 7d8884fc1..fad238c6e 100644 --- a/netbox/dcim/tables/devicetypes.py +++ b/netbox/dcim/tables/devicetypes.py @@ -98,6 +98,7 @@ class DeviceTypeTable(NetBoxTable): verbose_name=_('U Height'), template_code='{{ value|floatformat }}' ) + exclude_from_utilization = columns.BooleanColumn() weight = columns.TemplateColumn( verbose_name=_('Weight'), template_code=WEIGHT, @@ -142,9 +143,9 @@ class DeviceTypeTable(NetBoxTable): class Meta(NetBoxTable.Meta): model = models.DeviceType fields = ( - 'pk', 'id', 'model', 'manufacturer', 'default_platform', 'slug', 'part_number', 'u_height', 'is_full_depth', - 'subdevice_role', 'airflow', 'weight', 'description', 'comments', 'instance_count', 'tags', 'created', - 'last_updated', + 'pk', 'id', 'model', 'manufacturer', 'default_platform', 'slug', 'part_number', 'u_height', + 'exclude_from_utilization', 'is_full_depth', 'subdevice_role', 'airflow', 'weight', + 'description', 'comments', 'instance_count', 'tags', 'created', 'last_updated', ) default_columns = ( 'pk', 'model', 'manufacturer', 'part_number', 'u_height', 'is_full_depth', 'instance_count', diff --git a/netbox/dcim/tables/power.py b/netbox/dcim/tables/power.py index e4735bd57..40a58ad81 100644 --- a/netbox/dcim/tables/power.py +++ b/netbox/dcim/tables/power.py @@ -87,6 +87,11 @@ class PowerFeedTable(TenancyColumnsMixin, CableTerminationTable): linkify=True, verbose_name=_('Tenant') ) + site = tables.Column( + accessor='rack__site', + linkify=True, + verbose_name=_('Site'), + ) comments = columns.MarkdownColumn( verbose_name=_('Comments'), ) @@ -97,9 +102,9 @@ class PowerFeedTable(TenancyColumnsMixin, CableTerminationTable): class Meta(NetBoxTable.Meta): model = PowerFeed fields = ( - 'pk', 'id', 'name', 'power_panel', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', 'phase', - 'max_utilization', 'mark_connected', 'cable', 'cable_color', 'link_peer', 'available_power', 'tenant', - 'tenant_group', 'description', 'comments', 'tags', 'created', 'last_updated', + 'pk', 'id', 'name', 'power_panel', 'site', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', + 'phase', 'max_utilization', 'mark_connected', 'cable', 'cable_color', 'link_peer', 'available_power', + 'tenant', 'tenant_group', 'description', 'comments', 'tags', 'created', 'last_updated', ) default_columns = ( 'pk', 'name', 'power_panel', 'rack', 'status', 'type', 'supply', 'voltage', 'amperage', 'phase', 'cable', diff --git a/netbox/dcim/tables/template_code.py b/netbox/dcim/tables/template_code.py index e0f38afef..1862893ff 100644 --- a/netbox/dcim/tables/template_code.py +++ b/netbox/dcim/tables/template_code.py @@ -316,8 +316,8 @@ INTERFACE_BUTTONS = """ {% if perms.dcim.add_interface %}
  • Child Interface
  • {% endif %} - {% if perms.ipam.add_l2vpntermination %} -
  • L2VPN Termination
  • + {% if perms.vpn.add_l2vpntermination %} +
  • L2VPN Termination
  • {% endif %} {% if perms.ipam.add_fhrpgroupassignment %}
  • Assign FHRP Group
  • @@ -359,6 +359,16 @@ INTERFACE_BUTTONS = """ {% endif %} +{% elif record.type == 'virtual' %} + {% if perms.vpn.add_tunnel and not record.tunnel_termination %} + + + + {% elif perms.vpn.delete_tunneltermination and record.tunnel_termination %} + + + + {% endif %} {% elif record.is_wired and perms.dcim.add_cable %} diff --git a/netbox/dcim/tests/test_api.py b/netbox/dcim/tests/test_api.py index 1ce362963..f36b11033 100644 --- a/netbox/dcim/tests/test_api.py +++ b/netbox/dcim/tests/test_api.py @@ -6,6 +6,7 @@ from rest_framework import status from dcim.choices import * from dcim.constants import * from dcim.models import * +from extras.models import ConfigTemplate from ipam.models import ASN, RIR, VLAN, VRF from netbox.api.serializers import GenericObjectSerializer from utilities.testing import APITestCase, APIViewTestCases, create_test_device @@ -1265,6 +1266,22 @@ class DeviceTest(APIViewTestCases.APIViewTestCase): self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST) + def test_render_config(self): + configtemplate = ConfigTemplate.objects.create( + name='Config Template 1', + template_code='Config for device {{ device.name }}' + ) + + device = Device.objects.first() + device.config_template = configtemplate + device.save() + + self.add_permissions('dcim.add_device') + url = reverse('dcim-api:device-detail', kwargs={'pk': device.pk}) + 'render-config/' + response = self.client.post(url, {}, format='json', **self.header) + self.assertHttpStatus(response, status.HTTP_200_OK) + self.assertEqual(response.data['content'], f'Config for device {device.name}') + class ModuleTest(APIViewTestCases.APIViewTestCase): model = Module @@ -1607,6 +1624,33 @@ class InterfaceTest(Mixins.ComponentTraceMixin, APIViewTestCases.APIViewTestCase }, ] + def test_bulk_delete_child_interfaces(self): + interface1 = Interface.objects.get(name='Interface 1') + device = interface1.device + self.add_permissions('dcim.delete_interface') + + # Create a child interface + child = Interface.objects.create( + device=device, + name='Interface 1A', + type=InterfaceTypeChoices.TYPE_VIRTUAL, + parent=interface1 + ) + self.assertEqual(device.interfaces.count(), 4) + + # Attempt to delete only the parent interface + url = self._get_detail_url(interface1) + self.client.delete(url, **self.header) + self.assertEqual(device.interfaces.count(), 4) # Parent was not deleted + + # Attempt to bulk delete parent & child together + data = [ + {"id": interface1.pk}, + {"id": child.pk}, + ] + self.client.delete(self._get_list_url(), data, format='json', **self.header) + self.assertEqual(device.interfaces.count(), 2) # Child & parent were both deleted + class FrontPortTest(APIViewTestCases.APIViewTestCase): model = FrontPort diff --git a/netbox/dcim/tests/test_cablepaths.py b/netbox/dcim/tests/test_cablepaths.py index d25333aed..a827939f7 100644 --- a/netbox/dcim/tests/test_cablepaths.py +++ b/netbox/dcim/tests/test_cablepaths.py @@ -15,6 +15,7 @@ class CablePathTestCase(TestCase): 1XX: Test direct connections between different endpoint types 2XX: Test different cable topologies 3XX: Test responses to changes in existing objects + 4XX: Test to exclude specific cable topologies """ @classmethod def setUpTestData(cls): @@ -33,12 +34,11 @@ class CablePathTestCase(TestCase): circuit_type = CircuitType.objects.create(name='Circuit Type', slug='circuit-type') cls.circuit = Circuit.objects.create(provider=provider, type=circuit_type, cid='Circuit 1') - def assertPathExists(self, nodes, **kwargs): + def _get_cablepath(self, nodes, **kwargs): """ - Assert that a CablePath from origin to destination with a specific intermediate path exists. + Return a given cable path :param nodes: Iterable of steps, with each step being either a single node or a list of nodes - :param is_active: Boolean indicating whether the end-to-end path is complete and active (optional) :return: The matching CablePath (if any) """ @@ -48,12 +48,29 @@ class CablePathTestCase(TestCase): path.append([object_to_path_node(node) for node in step]) else: path.append([object_to_path_node(step)]) + return CablePath.objects.filter(path=path, **kwargs).first() - cablepath = CablePath.objects.filter(path=path, **kwargs).first() + def assertPathExists(self, nodes, **kwargs): + """ + Assert that a CablePath from origin to destination with a specific intermediate path exists. Returns the + first matching CablePath, if found. + + :param nodes: Iterable of steps, with each step being either a single node or a list of nodes + """ + cablepath = self._get_cablepath(nodes, **kwargs) self.assertIsNotNone(cablepath, msg='CablePath not found') return cablepath + def assertPathDoesNotExist(self, nodes, **kwargs): + """ + Assert that a specific CablePath does *not* exist. + + :param nodes: Iterable of steps, with each step being either a single node or a list of nodes + """ + cablepath = self._get_cablepath(nodes, **kwargs) + self.assertIsNone(cablepath, msg='Unexpected CablePath found') + def assertPathIsSet(self, origin, cablepath, msg=None): """ Assert that a specific CablePath instance is set as the path on the origin. @@ -1695,6 +1712,291 @@ class CablePathTestCase(TestCase): self.assertPathIsSet(interface3, path3) self.assertPathIsSet(interface4, path4) + def test_219_interface_to_interface_duplex_via_multiple_rearports(self): + """ + [IF1] --C1-- [FP1] [RP1] --C2-- [RP2] [FP2] --C3-- [IF2] + [FP3] [RP3] --C4-- [RP4] [FP4] + """ + interface1 = Interface.objects.create(device=self.device, name='Interface 1') + interface2 = Interface.objects.create(device=self.device, name='Interface 2') + rearport1 = RearPort.objects.create(device=self.device, name='Rear Port 1', positions=1) + rearport2 = RearPort.objects.create(device=self.device, name='Rear Port 2', positions=1) + rearport3 = RearPort.objects.create(device=self.device, name='Rear Port 3', positions=1) + rearport4 = RearPort.objects.create(device=self.device, name='Rear Port 4', positions=1) + frontport1 = FrontPort.objects.create( + device=self.device, name='Front Port 1', rear_port=rearport1, rear_port_position=1 + ) + frontport2 = FrontPort.objects.create( + device=self.device, name='Front Port 2', rear_port=rearport2, rear_port_position=1 + ) + frontport3 = FrontPort.objects.create( + device=self.device, name='Front Port 3', rear_port=rearport3, rear_port_position=1 + ) + frontport4 = FrontPort.objects.create( + device=self.device, name='Front Port 4', rear_port=rearport4, rear_port_position=1 + ) + + cable2 = Cable( + a_terminations=[rearport1], + b_terminations=[rearport2] + ) + cable2.save() + cable4 = Cable( + a_terminations=[rearport3], + b_terminations=[rearport4] + ) + cable4.save() + self.assertEqual(CablePath.objects.count(), 0) + + # Create cable1 + cable1 = Cable( + a_terminations=[interface1], + b_terminations=[frontport1, frontport3] + ) + cable1.save() + self.assertPathExists( + (interface1, cable1, (frontport1, frontport3), (rearport1, rearport3), (cable2, cable4), (rearport2, rearport4), (frontport2, frontport4)), + is_complete=False + ) + self.assertEqual(CablePath.objects.count(), 1) + + # Create cable 3 + cable3 = Cable( + a_terminations=[frontport2, frontport4], + b_terminations=[interface2] + ) + cable3.save() + self.assertPathExists( + ( + interface1, cable1, (frontport1, frontport3), (rearport1, rearport3), (cable2, cable4), + (rearport2, rearport4), (frontport2, frontport4), cable3, interface2 + ), + is_complete=True, + is_active=True + ) + self.assertPathExists( + ( + interface2, cable3, (frontport2, frontport4), (rearport2, rearport4), (cable2, cable4), + (rearport1, rearport3), (frontport1, frontport3), cable1, interface1 + ), + is_complete=True, + is_active=True + ) + self.assertEqual(CablePath.objects.count(), 2) + + def test_220_interface_to_interface_duplex_via_multiple_front_and_rear_ports(self): + """ + [IF1] --C1-- [FP1] [RP1] --C2-- [RP2] [FP2] --C3-- [IF2] + [IF2] --C5-- [FP3] [RP3] --C4-- [RP4] [FP4] + """ + interface1 = Interface.objects.create(device=self.device, name='Interface 1') + interface2 = Interface.objects.create(device=self.device, name='Interface 2') + interface3 = Interface.objects.create(device=self.device, name='Interface 3') + rearport1 = RearPort.objects.create(device=self.device, name='Rear Port 1', positions=1) + rearport2 = RearPort.objects.create(device=self.device, name='Rear Port 2', positions=1) + rearport3 = RearPort.objects.create(device=self.device, name='Rear Port 3', positions=1) + rearport4 = RearPort.objects.create(device=self.device, name='Rear Port 4', positions=1) + frontport1 = FrontPort.objects.create( + device=self.device, name='Front Port 1', rear_port=rearport1, rear_port_position=1 + ) + frontport2 = FrontPort.objects.create( + device=self.device, name='Front Port 2', rear_port=rearport2, rear_port_position=1 + ) + frontport3 = FrontPort.objects.create( + device=self.device, name='Front Port 3', rear_port=rearport3, rear_port_position=1 + ) + frontport4 = FrontPort.objects.create( + device=self.device, name='Front Port 4', rear_port=rearport4, rear_port_position=1 + ) + + cable2 = Cable( + a_terminations=[rearport1], + b_terminations=[rearport2] + ) + cable2.save() + cable4 = Cable( + a_terminations=[rearport3], + b_terminations=[rearport4] + ) + cable4.save() + self.assertEqual(CablePath.objects.count(), 0) + + # Create cable1 + cable1 = Cable( + a_terminations=[interface1], + b_terminations=[frontport1] + ) + cable1.save() + self.assertPathExists( + ( + interface1, cable1, frontport1, rearport1, cable2, rearport2, frontport2 + ), + is_complete=False + ) + # Create cable1 + cable5 = Cable( + a_terminations=[interface3], + b_terminations=[frontport3] + ) + cable5.save() + self.assertPathExists( + ( + interface3, cable5, frontport3, rearport3, cable4, rearport4, frontport4 + ), + is_complete=False + ) + self.assertEqual(CablePath.objects.count(), 2) + + # Create cable 3 + cable3 = Cable( + a_terminations=[frontport2, frontport4], + b_terminations=[interface2] + ) + cable3.save() + self.assertPathExists( + ( + interface2, cable3, (frontport2, frontport4), (rearport2, rearport4), (cable2, cable4), + (rearport1, rearport3), (frontport1, frontport3), (cable1, cable5), (interface1, interface3) + ), + is_complete=True, + is_active=True + ) + self.assertPathExists( + ( + interface1, cable1, frontport1, rearport1, cable2, rearport2, frontport2, cable3, interface2 + ), + is_complete=True, + is_active=True + ) + self.assertPathExists( + ( + interface3, cable5, frontport3, rearport3, cable4, rearport4, frontport4, cable3, interface2 + ), + is_complete=True, + is_active=True + ) + self.assertEqual(CablePath.objects.count(), 3) + + def test_221_non_symmetric_paths(self): + """ + [IF1] --C1-- [FP1] [RP1] --C2-- [RP2] [FP2] --C3-- -------------------------------------- [IF2] + [IF2] --C5-- [FP3] [RP3] --C4-- [RP4] [FP4] --C6-- [FP5] [RP5] --C7-- [RP6] [FP6] --C3---/ + """ + interface1 = Interface.objects.create(device=self.device, name='Interface 1') + interface2 = Interface.objects.create(device=self.device, name='Interface 2') + interface3 = Interface.objects.create(device=self.device, name='Interface 3') + rearport1 = RearPort.objects.create(device=self.device, name='Rear Port 1', positions=1) + rearport2 = RearPort.objects.create(device=self.device, name='Rear Port 2', positions=1) + rearport3 = RearPort.objects.create(device=self.device, name='Rear Port 3', positions=1) + rearport4 = RearPort.objects.create(device=self.device, name='Rear Port 4', positions=1) + rearport5 = RearPort.objects.create(device=self.device, name='Rear Port 5', positions=1) + rearport6 = RearPort.objects.create(device=self.device, name='Rear Port 6', positions=1) + frontport1 = FrontPort.objects.create( + device=self.device, name='Front Port 1', rear_port=rearport1, rear_port_position=1 + ) + frontport2 = FrontPort.objects.create( + device=self.device, name='Front Port 2', rear_port=rearport2, rear_port_position=1 + ) + frontport3 = FrontPort.objects.create( + device=self.device, name='Front Port 3', rear_port=rearport3, rear_port_position=1 + ) + frontport4 = FrontPort.objects.create( + device=self.device, name='Front Port 4', rear_port=rearport4, rear_port_position=1 + ) + frontport5 = FrontPort.objects.create( + device=self.device, name='Front Port 5', rear_port=rearport5, rear_port_position=1 + ) + frontport6 = FrontPort.objects.create( + device=self.device, name='Front Port 6', rear_port=rearport6, rear_port_position=1 + ) + + cable2 = Cable( + a_terminations=[rearport1], + b_terminations=[rearport2], + label='C2' + ) + cable2.save() + cable4 = Cable( + a_terminations=[rearport3], + b_terminations=[rearport4], + label='C4' + ) + cable4.save() + cable6 = Cable( + a_terminations=[frontport4], + b_terminations=[frontport5], + label='C6' + ) + cable6.save() + cable7 = Cable( + a_terminations=[rearport5], + b_terminations=[rearport6], + label='C7' + ) + cable7.save() + self.assertEqual(CablePath.objects.count(), 0) + + # Create cable1 + cable1 = Cable( + a_terminations=[interface1], + b_terminations=[frontport1], + label='C1' + ) + cable1.save() + self.assertPathExists( + ( + interface1, cable1, frontport1, rearport1, cable2, rearport2, frontport2 + ), + is_complete=False + ) + # Create cable1 + cable5 = Cable( + a_terminations=[interface3], + b_terminations=[frontport3], + label='C5' + ) + cable5.save() + self.assertPathExists( + ( + interface3, cable5, frontport3, rearport3, cable4, rearport4, frontport4, cable6, frontport5, rearport5, + cable7, rearport6, frontport6 + ), + is_complete=False + ) + self.assertEqual(CablePath.objects.count(), 2) + + # Create cable 3 + cable3 = Cable( + a_terminations=[frontport2, frontport6], + b_terminations=[interface2], + label='C3' + ) + cable3.save() + self.assertPathExists( + ( + interface2, cable3, (frontport2, frontport6), (rearport2, rearport6), (cable2, cable7), + (rearport1, rearport5), (frontport1, frontport5), (cable1, cable6) + ), + is_complete=False, + is_split=True + ) + self.assertPathExists( + ( + interface1, cable1, frontport1, rearport1, cable2, rearport2, frontport2, cable3, interface2 + ), + is_complete=True, + is_active=True + ) + self.assertPathExists( + ( + interface3, cable5, frontport3, rearport3, cable4, rearport4, frontport4, cable6, frontport5, rearport5, + cable7, rearport6, frontport6, cable3, interface2 + ), + is_complete=True, + is_active=True + ) + self.assertEqual(CablePath.objects.count(), 3) + def test_301_create_path_via_existing_cable(self): """ [IF1] --C1-- [FP1] [RP1] --C2-- [RP2] [FP2] --C3-- [IF2] @@ -1845,3 +2147,93 @@ class CablePathTestCase(TestCase): is_complete=True, is_active=True ) + + def test_401_exclude_midspan_devices(self): + """ + [IF1] --C1-- [FP1][Test Device][RP1] --C2-- [RP2][Test Device][FP2] --C3-- [IF2] + [FP3][Test mid-span Device][RP3] --C4-- [RP4][Test mid-span Device][FP4] / + """ + device = Device.objects.create( + site=self.site, + device_type=self.device.device_type, + device_role=self.device.device_role, + name='Test mid-span Device' + ) + interface1 = Interface.objects.create(device=self.device, name='Interface 1') + interface2 = Interface.objects.create(device=self.device, name='Interface 2') + rearport1 = RearPort.objects.create(device=self.device, name='Rear Port 1', positions=1) + rearport2 = RearPort.objects.create(device=self.device, name='Rear Port 2', positions=1) + rearport3 = RearPort.objects.create(device=device, name='Rear Port 3', positions=1) + rearport4 = RearPort.objects.create(device=device, name='Rear Port 4', positions=1) + frontport1 = FrontPort.objects.create( + device=self.device, name='Front Port 1', rear_port=rearport1, rear_port_position=1 + ) + frontport2 = FrontPort.objects.create( + device=self.device, name='Front Port 2', rear_port=rearport2, rear_port_position=1 + ) + frontport3 = FrontPort.objects.create( + device=device, name='Front Port 3', rear_port=rearport3, rear_port_position=1 + ) + frontport4 = FrontPort.objects.create( + device=device, name='Front Port 4', rear_port=rearport4, rear_port_position=1 + ) + + cable2 = Cable( + a_terminations=[rearport1], + b_terminations=[rearport2], + label='C2' + ) + cable2.save() + cable4 = Cable( + a_terminations=[rearport3], + b_terminations=[rearport4], + label='C4' + ) + cable4.save() + self.assertEqual(CablePath.objects.count(), 0) + + # Create cable1 + cable1 = Cable( + a_terminations=[interface1], + b_terminations=[frontport1, frontport3], + label='C1' + ) + with self.assertRaises(AssertionError): + cable1.save() + + self.assertPathDoesNotExist( + ( + interface1, cable1, (frontport1, frontport3), (rearport1, rearport3), (cable2, cable4), + (rearport2, rearport4), (frontport2, frontport4) + ), + is_complete=False + ) + self.assertEqual(CablePath.objects.count(), 0) + + # Create cable 3 + cable3 = Cable( + a_terminations=[frontport2, frontport4], + b_terminations=[interface2], + label='C3' + ) + + with self.assertRaises(AssertionError): + cable3.save() + + self.assertPathDoesNotExist( + ( + interface2, cable3, (frontport2, frontport4), (rearport2, rearport4), (cable2, cable4), + (rearport1, rearport3), (frontport1, frontport2), cable1, interface1 + ), + is_complete=True, + is_active=True + ) + self.assertPathDoesNotExist( + ( + interface1, cable1, (frontport1, frontport3), (rearport1, rearport3), (cable2, cable4), + (rearport2, rearport4), (frontport2, frontport4), cable3, interface2 + ), + is_complete=True, + is_active=True + ) + self.assertEqual(CablePath.objects.count(), 0) diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index 48600bf41..89d15a0ef 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -1,6 +1,7 @@ from django.contrib.auth import get_user_model from django.test import TestCase +from circuits.models import Circuit, CircuitTermination, CircuitType, Provider from dcim.choices import * from dcim.filtersets import * from dcim.models import * @@ -17,6 +18,14 @@ User = get_user_model() class DeviceComponentFilterSetTests: + def test_q(self): + params = {'q': 'First'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_description(self): + params = {'description': ['First', 'Second']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_device_type(self): device_types = DeviceType.objects.all()[:2] params = {'device_type_id': [device_types[0].pk, device_types[1].pk]} @@ -32,6 +41,22 @@ class DeviceComponentFilterSetTests: self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) +class DeviceComponentTemplateFilterSetTests: + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_devicetype_id(self): + device_types = DeviceType.objects.all()[:2] + params = {'devicetype_id': [device_types[0].pk, device_types[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + class RegionTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = Region.objects.all() filterset = RegionFilterSet @@ -40,9 +65,9 @@ class RegionTestCase(TestCase, ChangeLoggedFilterSetTests): def setUpTestData(cls): regions = ( - Region(name='Region 1', slug='region-1', description='A'), - Region(name='Region 2', slug='region-2', description='B'), - Region(name='Region 3', slug='region-3', description='C'), + Region(name='Region 1', slug='region-1', description='foobar1'), + Region(name='Region 2', slug='region-2', description='foobar2'), + Region(name='Region 3', slug='region-3', description='foobar3'), ) for region in regions: region.save() @@ -58,6 +83,10 @@ class RegionTestCase(TestCase, ChangeLoggedFilterSetTests): for region in child_regions: region.save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Region 1', 'Region 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -67,7 +96,7 @@ class RegionTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_parent(self): @@ -86,9 +115,9 @@ class SiteGroupTestCase(TestCase, ChangeLoggedFilterSetTests): def setUpTestData(cls): sitegroups = ( - SiteGroup(name='Site Group 1', slug='site-group-1', description='A'), - SiteGroup(name='Site Group 2', slug='site-group-2', description='B'), - SiteGroup(name='Site Group 3', slug='site-group-3', description='C'), + SiteGroup(name='Site Group 1', slug='site-group-1', description='foobar1'), + SiteGroup(name='Site Group 2', slug='site-group-2', description='foobar2'), + SiteGroup(name='Site Group 3', slug='site-group-3', description='foobar3'), ) for sitegroup in sitegroups: sitegroup.save() @@ -104,6 +133,10 @@ class SiteGroupTestCase(TestCase, ChangeLoggedFilterSetTests): for sitegroup in child_sitegroups: sitegroup.save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Site Group 1', 'Site Group 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -113,7 +146,7 @@ class SiteGroupTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_parent(self): @@ -172,7 +205,7 @@ class SiteTestCase(TestCase, ChangeLoggedFilterSetTests): sites = ( Site(name='Site 1', slug='site-1', region=regions[0], group=groups[0], tenant=tenants[0], status=SiteStatusChoices.STATUS_ACTIVE, facility='Facility 1', latitude=10, longitude=10, description='foobar1'), - Site(name='Site 2', slug='site-2', region=regions[1], group=groups[1], tenant=tenants[1], status=SiteStatusChoices.STATUS_PLANNED, facility='Facility 2', latitude=20, longitude=20, description='foobar1'), + Site(name='Site 2', slug='site-2', region=regions[1], group=groups[1], tenant=tenants[1], status=SiteStatusChoices.STATUS_PLANNED, facility='Facility 2', latitude=20, longitude=20, description='foobar2'), Site(name='Site 3', slug='site-3', region=regions[2], group=groups[2], tenant=tenants[2], status=SiteStatusChoices.STATUS_RETIRED, facility='Facility 3', latitude=30, longitude=30), ) Site.objects.bulk_create(sites) @@ -180,6 +213,10 @@ class SiteTestCase(TestCase, ChangeLoggedFilterSetTests): sites[1].asns.set([asns[1]]) sites[2].asns.set([asns[2]]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Site 1', 'Site 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -285,13 +322,17 @@ class LocationTestCase(TestCase, ChangeLoggedFilterSetTests): location.save() locations = ( - Location(name='Location 1', slug='location-1', site=sites[0], parent=parent_locations[0], status=LocationStatusChoices.STATUS_PLANNED, description='A'), - Location(name='Location 2', slug='location-2', site=sites[1], parent=parent_locations[1], status=LocationStatusChoices.STATUS_STAGING, description='B'), - Location(name='Location 3', slug='location-3', site=sites[2], parent=parent_locations[2], status=LocationStatusChoices.STATUS_DECOMMISSIONING, description='C'), + Location(name='Location 1', slug='location-1', site=sites[0], parent=parent_locations[0], status=LocationStatusChoices.STATUS_PLANNED, description='foobar1'), + Location(name='Location 2', slug='location-2', site=sites[1], parent=parent_locations[1], status=LocationStatusChoices.STATUS_STAGING, description='foobar2'), + Location(name='Location 3', slug='location-3', site=sites[2], parent=parent_locations[2], status=LocationStatusChoices.STATUS_DECOMMISSIONING, description='foobar3'), ) for location in locations: location.save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Location 1', 'Location 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -305,7 +346,7 @@ class LocationTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_region(self): @@ -351,6 +392,10 @@ class RackRoleTestCase(TestCase, ChangeLoggedFilterSetTests): ) RackRole.objects.bulk_create(rack_roles) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Rack Role 1', 'Rack Role 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -429,12 +474,79 @@ class RackTestCase(TestCase, ChangeLoggedFilterSetTests): Tenant.objects.bulk_create(tenants) racks = ( - Rack(name='Rack 1', facility_id='rack-1', site=sites[0], location=locations[0], tenant=tenants[0], status=RackStatusChoices.STATUS_ACTIVE, role=rack_roles[0], serial='ABC', asset_tag='1001', type=RackTypeChoices.TYPE_2POST, width=RackWidthChoices.WIDTH_19IN, u_height=42, desc_units=False, outer_width=100, outer_depth=100, outer_unit=RackDimensionUnitChoices.UNIT_MILLIMETER, weight=10, max_weight=1000, weight_unit=WeightUnitChoices.UNIT_POUND), - Rack(name='Rack 2', facility_id='rack-2', site=sites[1], location=locations[1], tenant=tenants[1], status=RackStatusChoices.STATUS_PLANNED, role=rack_roles[1], serial='DEF', asset_tag='1002', type=RackTypeChoices.TYPE_4POST, width=RackWidthChoices.WIDTH_21IN, u_height=43, desc_units=False, outer_width=200, outer_depth=200, outer_unit=RackDimensionUnitChoices.UNIT_MILLIMETER, weight=20, max_weight=2000, weight_unit=WeightUnitChoices.UNIT_POUND), - Rack(name='Rack 3', facility_id='rack-3', site=sites[2], location=locations[2], tenant=tenants[2], status=RackStatusChoices.STATUS_RESERVED, role=rack_roles[2], serial='GHI', asset_tag='1003', type=RackTypeChoices.TYPE_CABINET, width=RackWidthChoices.WIDTH_23IN, u_height=44, desc_units=True, outer_width=300, outer_depth=300, outer_unit=RackDimensionUnitChoices.UNIT_INCH, weight=30, max_weight=3000, weight_unit=WeightUnitChoices.UNIT_KILOGRAM), + Rack( + name='Rack 1', + facility_id='rack-1', + site=sites[0], + location=locations[0], + tenant=tenants[0], + status=RackStatusChoices.STATUS_ACTIVE, + role=rack_roles[0], + serial='ABC', + asset_tag='1001', + type=RackTypeChoices.TYPE_2POST, + width=RackWidthChoices.WIDTH_19IN, + u_height=42, + desc_units=False, + outer_width=100, + outer_depth=100, + outer_unit=RackDimensionUnitChoices.UNIT_MILLIMETER, + weight=10, + max_weight=1000, + weight_unit=WeightUnitChoices.UNIT_POUND, + description='foobar1' + ), + Rack( + name='Rack 2', + facility_id='rack-2', + site=sites[1], + location=locations[1], + tenant=tenants[1], + status=RackStatusChoices.STATUS_PLANNED, + role=rack_roles[1], + serial='DEF', + asset_tag='1002', + type=RackTypeChoices.TYPE_4POST, + width=RackWidthChoices.WIDTH_21IN, + u_height=43, + desc_units=False, + outer_width=200, + outer_depth=200, + outer_unit=RackDimensionUnitChoices.UNIT_MILLIMETER, + weight=20, + max_weight=2000, + weight_unit=WeightUnitChoices.UNIT_POUND, + description='foobar2' + ), + Rack( + name='Rack 3', + facility_id='rack-3', + site=sites[2], + location=locations[2], + tenant=tenants[2], + status=RackStatusChoices.STATUS_RESERVED, + role=rack_roles[2], + serial='GHI', + asset_tag='1003', + type=RackTypeChoices.TYPE_CABINET, + width=RackWidthChoices.WIDTH_23IN, + u_height=44, + desc_units=True, + outer_width=300, + outer_depth=300, + outer_unit=RackDimensionUnitChoices.UNIT_INCH, + weight=30, + max_weight=3000, + weight_unit=WeightUnitChoices.UNIT_KILOGRAM, + description='foobar3' + ), ) Rack.objects.bulk_create(racks) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Rack 1', 'Rack 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -447,6 +559,10 @@ class RackTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'asset_tag': ['1001', '1002']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_type(self): params = {'type': [RackTypeChoices.TYPE_2POST, RackTypeChoices.TYPE_4POST]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -626,10 +742,14 @@ class RackReservationTestCase(TestCase, ChangeLoggedFilterSetTests): reservations = ( RackReservation(rack=racks[0], units=[1, 2, 3], user=users[0], tenant=tenants[0], description='foobar1'), RackReservation(rack=racks[1], units=[4, 5, 6], user=users[1], tenant=tenants[1], description='foobar2'), - RackReservation(rack=racks[2], units=[7, 8, 9], user=users[2], tenant=tenants[2]), + RackReservation(rack=racks[2], units=[7, 8, 9], user=users[2], tenant=tenants[2], description='foobar3'), ) RackReservation.objects.bulk_create(reservations) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_region(self): regions = Region.objects.all()[:2] params = {'region_id': [regions[0].pk, regions[1].pk]} @@ -692,12 +812,16 @@ class ManufacturerTestCase(TestCase, ChangeLoggedFilterSetTests): def setUpTestData(cls): manufacturers = ( - Manufacturer(name='Manufacturer 1', slug='manufacturer-1', description='A'), - Manufacturer(name='Manufacturer 2', slug='manufacturer-2', description='B'), - Manufacturer(name='Manufacturer 3', slug='manufacturer-3', description='C'), + Manufacturer(name='Manufacturer 1', slug='manufacturer-1', description='foobar1'), + Manufacturer(name='Manufacturer 2', slug='manufacturer-2', description='foobar2'), + Manufacturer(name='Manufacturer 3', slug='manufacturer-3', description='foobar3'), ) Manufacturer.objects.bulk_create(manufacturers) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Manufacturer 1', 'Manufacturer 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -707,7 +831,7 @@ class ManufacturerTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -733,9 +857,47 @@ class DeviceTypeTestCase(TestCase, ChangeLoggedFilterSetTests): Platform.objects.bulk_create(platforms) device_types = ( - DeviceType(manufacturer=manufacturers[0], default_platform=platforms[0], model='Model 1', slug='model-1', part_number='Part Number 1', u_height=1, is_full_depth=True, front_image='front.png', rear_image='rear.png', weight=10, weight_unit=WeightUnitChoices.UNIT_POUND), - DeviceType(manufacturer=manufacturers[1], default_platform=platforms[1], model='Model 2', slug='model-2', part_number='Part Number 2', u_height=2, is_full_depth=True, subdevice_role=SubdeviceRoleChoices.ROLE_PARENT, airflow=DeviceAirflowChoices.AIRFLOW_FRONT_TO_REAR, weight=20, weight_unit=WeightUnitChoices.UNIT_POUND), - DeviceType(manufacturer=manufacturers[2], model='Model 3', slug='model-3', part_number='Part Number 3', u_height=3, is_full_depth=False, subdevice_role=SubdeviceRoleChoices.ROLE_CHILD, airflow=DeviceAirflowChoices.AIRFLOW_REAR_TO_FRONT, weight=30, weight_unit=WeightUnitChoices.UNIT_KILOGRAM), + DeviceType( + manufacturer=manufacturers[0], + default_platform=platforms[0], + model='Model 1', + slug='model-1', + part_number='Part Number 1', + u_height=1, + is_full_depth=True, + front_image='front.png', + rear_image='rear.png', + weight=10, + weight_unit=WeightUnitChoices.UNIT_POUND, + description='foobar1' + ), + DeviceType( + manufacturer=manufacturers[1], + default_platform=platforms[1], + model='Model 2', + slug='model-2', + part_number='Part Number 2', + u_height=2, + is_full_depth=True, + subdevice_role=SubdeviceRoleChoices.ROLE_PARENT, + airflow=DeviceAirflowChoices.AIRFLOW_FRONT_TO_REAR, + weight=20, + weight_unit=WeightUnitChoices.UNIT_POUND, + description='foobar2' + ), + DeviceType( + manufacturer=manufacturers[2], + model='Model 3', + slug='model-3', + part_number='Part Number 3', + u_height=3, + is_full_depth=False, + subdevice_role=SubdeviceRoleChoices.ROLE_CHILD, + airflow=DeviceAirflowChoices.AIRFLOW_REAR_TO_FRONT, + weight=30, + weight_unit=WeightUnitChoices.UNIT_KILOGRAM, + description='foobar3' + ), ) DeviceType.objects.bulk_create(device_types) @@ -781,6 +943,10 @@ class DeviceTypeTestCase(TestCase, ChangeLoggedFilterSetTests): inventory_item = InventoryItemTemplate(device_type=device_types[1], name='Inventory Item 1') inventory_item.save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_model(self): params = {'model': ['Model 1', 'Model 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -793,6 +959,10 @@ class DeviceTypeTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'part_number': ['Part Number 1', 'Part Number 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_u_height(self): params = {'u_height': [1, 2]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -915,9 +1085,30 @@ class ModuleTypeTestCase(TestCase, ChangeLoggedFilterSetTests): Manufacturer.objects.bulk_create(manufacturers) module_types = ( - ModuleType(manufacturer=manufacturers[0], model='Model 1', part_number='Part Number 1', weight=10, weight_unit=WeightUnitChoices.UNIT_POUND), - ModuleType(manufacturer=manufacturers[1], model='Model 2', part_number='Part Number 2', weight=20, weight_unit=WeightUnitChoices.UNIT_POUND), - ModuleType(manufacturer=manufacturers[2], model='Model 3', part_number='Part Number 3', weight=30, weight_unit=WeightUnitChoices.UNIT_KILOGRAM), + ModuleType( + manufacturer=manufacturers[0], + model='Model 1', + part_number='Part Number 1', + weight=10, + weight_unit=WeightUnitChoices.UNIT_POUND, + description='foobar1' + ), + ModuleType( + manufacturer=manufacturers[1], + model='Model 2', + part_number='Part Number 2', + weight=20, + weight_unit=WeightUnitChoices.UNIT_POUND, + description='foobar2' + ), + ModuleType( + manufacturer=manufacturers[2], + model='Model 3', + part_number='Part Number 3', + weight=30, + weight_unit=WeightUnitChoices.UNIT_KILOGRAM, + description='foobar3' + ), ) ModuleType.objects.bulk_create(module_types) @@ -952,6 +1143,10 @@ class ModuleTypeTestCase(TestCase, ChangeLoggedFilterSetTests): FrontPortTemplate(module_type=module_types[1], name='Front Port 2', type=PortTypeChoices.TYPE_8P8C, rear_port=rear_ports[1]), )) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_model(self): params = {'model': ['Model 1', 'Model 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -960,6 +1155,10 @@ class ModuleTypeTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'part_number': ['Part Number 1', 'Part Number 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_manufacturer(self): manufacturers = Manufacturer.objects.all()[:2] params = {'manufacturer_id': [manufacturers[0].pk, manufacturers[1].pk]} @@ -1012,7 +1211,7 @@ class ModuleTypeTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) -class ConsolePortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): +class ConsolePortTemplateTestCase(TestCase, DeviceComponentTemplateFilterSetTests, ChangeLoggedFilterSetTests): queryset = ConsolePortTemplate.objects.all() filterset = ConsolePortTemplateFilterSet @@ -1029,22 +1228,17 @@ class ConsolePortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): DeviceType.objects.bulk_create(device_types) ConsolePortTemplate.objects.bulk_create(( - ConsolePortTemplate(device_type=device_types[0], name='Console Port 1'), - ConsolePortTemplate(device_type=device_types[1], name='Console Port 2'), - ConsolePortTemplate(device_type=device_types[2], name='Console Port 3'), + ConsolePortTemplate(device_type=device_types[0], name='Console Port 1', description='foobar1'), + ConsolePortTemplate(device_type=device_types[1], name='Console Port 2', description='foobar2'), + ConsolePortTemplate(device_type=device_types[2], name='Console Port 3', description='foobar3'), )) def test_name(self): params = {'name': ['Console Port 1', 'Console Port 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_devicetype_id(self): - device_types = DeviceType.objects.all()[:2] - params = {'devicetype_id': [device_types[0].pk, device_types[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - -class ConsoleServerPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): +class ConsoleServerPortTemplateTestCase(TestCase, DeviceComponentTemplateFilterSetTests, ChangeLoggedFilterSetTests): queryset = ConsoleServerPortTemplate.objects.all() filterset = ConsoleServerPortTemplateFilterSet @@ -1061,22 +1255,17 @@ class ConsoleServerPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): DeviceType.objects.bulk_create(device_types) ConsoleServerPortTemplate.objects.bulk_create(( - ConsoleServerPortTemplate(device_type=device_types[0], name='Console Server Port 1'), - ConsoleServerPortTemplate(device_type=device_types[1], name='Console Server Port 2'), - ConsoleServerPortTemplate(device_type=device_types[2], name='Console Server Port 3'), + ConsoleServerPortTemplate(device_type=device_types[0], name='Console Server Port 1', description='foobar1'), + ConsoleServerPortTemplate(device_type=device_types[1], name='Console Server Port 2', description='foobar2'), + ConsoleServerPortTemplate(device_type=device_types[2], name='Console Server Port 3', description='foobar3'), )) def test_name(self): params = {'name': ['Console Server Port 1', 'Console Server Port 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_devicetype_id(self): - device_types = DeviceType.objects.all()[:2] - params = {'devicetype_id': [device_types[0].pk, device_types[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - -class PowerPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): +class PowerPortTemplateTestCase(TestCase, DeviceComponentTemplateFilterSetTests, ChangeLoggedFilterSetTests): queryset = PowerPortTemplate.objects.all() filterset = PowerPortTemplateFilterSet @@ -1093,20 +1282,33 @@ class PowerPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): DeviceType.objects.bulk_create(device_types) PowerPortTemplate.objects.bulk_create(( - PowerPortTemplate(device_type=device_types[0], name='Power Port 1', maximum_draw=100, allocated_draw=50), - PowerPortTemplate(device_type=device_types[1], name='Power Port 2', maximum_draw=200, allocated_draw=100), - PowerPortTemplate(device_type=device_types[2], name='Power Port 3', maximum_draw=300, allocated_draw=150), + PowerPortTemplate( + device_type=device_types[0], + name='Power Port 1', + maximum_draw=100, + allocated_draw=50, + description='foobar1' + ), + PowerPortTemplate( + device_type=device_types[1], + name='Power Port 2', + maximum_draw=200, + allocated_draw=100, + description='foobar2' + ), + PowerPortTemplate( + device_type=device_types[2], + name='Power Port 3', + maximum_draw=300, + allocated_draw=150, + description='foobar3' + ), )) def test_name(self): params = {'name': ['Power Port 1', 'Power Port 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_devicetype_id(self): - device_types = DeviceType.objects.all()[:2] - params = {'devicetype_id': [device_types[0].pk, device_types[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_maximum_draw(self): params = {'maximum_draw': [100, 200]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1116,7 +1318,7 @@ class PowerPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) -class PowerOutletTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): +class PowerOutletTemplateTestCase(TestCase, DeviceComponentTemplateFilterSetTests, ChangeLoggedFilterSetTests): queryset = PowerOutletTemplate.objects.all() filterset = PowerOutletTemplateFilterSet @@ -1133,26 +1335,36 @@ class PowerOutletTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): DeviceType.objects.bulk_create(device_types) PowerOutletTemplate.objects.bulk_create(( - PowerOutletTemplate(device_type=device_types[0], name='Power Outlet 1', feed_leg=PowerOutletFeedLegChoices.FEED_LEG_A), - PowerOutletTemplate(device_type=device_types[1], name='Power Outlet 2', feed_leg=PowerOutletFeedLegChoices.FEED_LEG_B), - PowerOutletTemplate(device_type=device_types[2], name='Power Outlet 3', feed_leg=PowerOutletFeedLegChoices.FEED_LEG_C), + PowerOutletTemplate( + device_type=device_types[0], + name='Power Outlet 1', + feed_leg=PowerOutletFeedLegChoices.FEED_LEG_A, + description='foobar1' + ), + PowerOutletTemplate( + device_type=device_types[1], + name='Power Outlet 2', + feed_leg=PowerOutletFeedLegChoices.FEED_LEG_B, + description='foobar2' + ), + PowerOutletTemplate( + device_type=device_types[2], + name='Power Outlet 3', + feed_leg=PowerOutletFeedLegChoices.FEED_LEG_C, + description='foobar3' + ), )) def test_name(self): params = {'name': ['Power Outlet 1', 'Power Outlet 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_devicetype_id(self): - device_types = DeviceType.objects.all()[:2] - params = {'devicetype_id': [device_types[0].pk, device_types[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_feed_leg(self): params = {'feed_leg': [PowerOutletFeedLegChoices.FEED_LEG_A, PowerOutletFeedLegChoices.FEED_LEG_B]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) -class InterfaceTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): +class InterfaceTemplateTestCase(TestCase, DeviceComponentTemplateFilterSetTests, ChangeLoggedFilterSetTests): queryset = InterfaceTemplate.objects.all() filterset = InterfaceTemplateFilterSet @@ -1176,7 +1388,8 @@ class InterfaceTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): enabled=True, mgmt_only=True, poe_mode=InterfacePoEModeChoices.MODE_PD, - poe_type=InterfacePoETypeChoices.TYPE_1_8023AF + poe_type=InterfacePoETypeChoices.TYPE_1_8023AF, + description='foobar1' ), InterfaceTemplate( device_type=device_types[1], @@ -1185,13 +1398,15 @@ class InterfaceTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): enabled=False, mgmt_only=False, poe_mode=InterfacePoEModeChoices.MODE_PSE, - poe_type=InterfacePoETypeChoices.TYPE_2_8023AT + poe_type=InterfacePoETypeChoices.TYPE_2_8023AT, + description='foobar2' ), InterfaceTemplate( device_type=device_types[2], name='Interface 3', type=InterfaceTypeChoices.TYPE_1GE_SFP, - mgmt_only=False + mgmt_only=False, + description='foobar3' ), ) InterfaceTemplate.objects.bulk_create(interface_templates) @@ -1203,11 +1418,6 @@ class InterfaceTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'name': ['Interface 1', 'Interface 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_devicetype_id(self): - device_types = DeviceType.objects.all()[:2] - params = {'devicetype_id': [device_types[0].pk, device_types[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_type(self): params = {'type': [InterfaceTypeChoices.TYPE_1GE_FIXED, InterfaceTypeChoices.TYPE_1GE_GBIC]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1237,7 +1447,7 @@ class InterfaceTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) -class FrontPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): +class FrontPortTemplateTestCase(TestCase, DeviceComponentTemplateFilterSetTests, ChangeLoggedFilterSetTests): queryset = FrontPortTemplate.objects.all() filterset = FrontPortTemplateFilterSet @@ -1261,20 +1471,36 @@ class FrontPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): RearPortTemplate.objects.bulk_create(rear_ports) FrontPortTemplate.objects.bulk_create(( - FrontPortTemplate(device_type=device_types[0], name='Front Port 1', rear_port=rear_ports[0], type=PortTypeChoices.TYPE_8P8C, color=ColorChoices.COLOR_RED), - FrontPortTemplate(device_type=device_types[1], name='Front Port 2', rear_port=rear_ports[1], type=PortTypeChoices.TYPE_110_PUNCH, color=ColorChoices.COLOR_GREEN), - FrontPortTemplate(device_type=device_types[2], name='Front Port 3', rear_port=rear_ports[2], type=PortTypeChoices.TYPE_BNC, color=ColorChoices.COLOR_BLUE), + FrontPortTemplate( + device_type=device_types[0], + name='Front Port 1', + rear_port=rear_ports[0], + type=PortTypeChoices.TYPE_8P8C, + color=ColorChoices.COLOR_RED, + description='foobar1' + ), + FrontPortTemplate( + device_type=device_types[1], + name='Front Port 2', + rear_port=rear_ports[1], + type=PortTypeChoices.TYPE_110_PUNCH, + color=ColorChoices.COLOR_GREEN, + description='foobar2' + ), + FrontPortTemplate( + device_type=device_types[2], + name='Front Port 3', + rear_port=rear_ports[2], + type=PortTypeChoices.TYPE_BNC, + color=ColorChoices.COLOR_BLUE, + description='foobar3' + ), )) def test_name(self): params = {'name': ['Front Port 1', 'Front Port 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_devicetype_id(self): - device_types = DeviceType.objects.all()[:2] - params = {'devicetype_id': [device_types[0].pk, device_types[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_type(self): params = {'type': [PortTypeChoices.TYPE_8P8C, PortTypeChoices.TYPE_110_PUNCH]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1284,7 +1510,7 @@ class FrontPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) -class RearPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): +class RearPortTemplateTestCase(TestCase, DeviceComponentTemplateFilterSetTests, ChangeLoggedFilterSetTests): queryset = RearPortTemplate.objects.all() filterset = RearPortTemplateFilterSet @@ -1301,20 +1527,36 @@ class RearPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): DeviceType.objects.bulk_create(device_types) RearPortTemplate.objects.bulk_create(( - RearPortTemplate(device_type=device_types[0], name='Rear Port 1', type=PortTypeChoices.TYPE_8P8C, color=ColorChoices.COLOR_RED, positions=1), - RearPortTemplate(device_type=device_types[1], name='Rear Port 2', type=PortTypeChoices.TYPE_110_PUNCH, color=ColorChoices.COLOR_GREEN, positions=2), - RearPortTemplate(device_type=device_types[2], name='Rear Port 3', type=PortTypeChoices.TYPE_BNC, color=ColorChoices.COLOR_BLUE, positions=3), + RearPortTemplate( + device_type=device_types[0], + name='Rear Port 1', + type=PortTypeChoices.TYPE_8P8C, + color=ColorChoices.COLOR_RED, + positions=1, + description='foobar1' + ), + RearPortTemplate( + device_type=device_types[1], + name='Rear Port 2', + type=PortTypeChoices.TYPE_110_PUNCH, + color=ColorChoices.COLOR_GREEN, + positions=2, + description='foobar2' + ), + RearPortTemplate( + device_type=device_types[2], + name='Rear Port 3', + type=PortTypeChoices.TYPE_BNC, + color=ColorChoices.COLOR_BLUE, + positions=3, + description='foobar3' + ), )) def test_name(self): params = {'name': ['Rear Port 1', 'Rear Port 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_devicetype_id(self): - device_types = DeviceType.objects.all()[:2] - params = {'devicetype_id': [device_types[0].pk, device_types[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_type(self): params = {'type': [PortTypeChoices.TYPE_8P8C, PortTypeChoices.TYPE_110_PUNCH]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1328,7 +1570,7 @@ class RearPortTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) -class ModuleBayTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): +class ModuleBayTemplateTestCase(TestCase, DeviceComponentTemplateFilterSetTests, ChangeLoggedFilterSetTests): queryset = ModuleBayTemplate.objects.all() filterset = ModuleBayTemplateFilterSet @@ -1345,22 +1587,17 @@ class ModuleBayTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): DeviceType.objects.bulk_create(device_types) ModuleBayTemplate.objects.bulk_create(( - ModuleBayTemplate(device_type=device_types[0], name='Module Bay 1'), - ModuleBayTemplate(device_type=device_types[1], name='Module Bay 2'), - ModuleBayTemplate(device_type=device_types[2], name='Module Bay 3'), + ModuleBayTemplate(device_type=device_types[0], name='Module Bay 1', description='foobar1'), + ModuleBayTemplate(device_type=device_types[1], name='Module Bay 2', description='foobar2'), + ModuleBayTemplate(device_type=device_types[2], name='Module Bay 3', description='foobar3'), )) def test_name(self): params = {'name': ['Module Bay 1', 'Module Bay 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_devicetype_id(self): - device_types = DeviceType.objects.all()[:2] - params = {'devicetype_id': [device_types[0].pk, device_types[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - -class DeviceBayTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): +class DeviceBayTemplateTestCase(TestCase, DeviceComponentTemplateFilterSetTests, ChangeLoggedFilterSetTests): queryset = DeviceBayTemplate.objects.all() filterset = DeviceBayTemplateFilterSet @@ -1377,22 +1614,17 @@ class DeviceBayTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): DeviceType.objects.bulk_create(device_types) DeviceBayTemplate.objects.bulk_create(( - DeviceBayTemplate(device_type=device_types[0], name='Device Bay 1'), - DeviceBayTemplate(device_type=device_types[1], name='Device Bay 2'), - DeviceBayTemplate(device_type=device_types[2], name='Device Bay 3'), + DeviceBayTemplate(device_type=device_types[0], name='Device Bay 1', description='foobar1'), + DeviceBayTemplate(device_type=device_types[1], name='Device Bay 2', description='foobar2'), + DeviceBayTemplate(device_type=device_types[2], name='Device Bay 3', description='foobar3'), )) def test_name(self): params = {'name': ['Device Bay 1', 'Device Bay 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - def test_devicetype_id(self): - device_types = DeviceType.objects.all()[:2] - params = {'devicetype_id': [device_types[0].pk, device_types[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - -class InventoryItemTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): +class InventoryItemTemplateTestCase(TestCase, DeviceComponentTemplateFilterSetTests, ChangeLoggedFilterSetTests): queryset = InventoryItemTemplate.objects.all() filterset = InventoryItemTemplateFilterSet @@ -1420,9 +1652,33 @@ class InventoryItemTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): InventoryItemRole.objects.bulk_create(inventory_item_roles) inventory_item_templates = ( - InventoryItemTemplate(device_type=device_types[0], name='Inventory Item 1', label='A', role=inventory_item_roles[0], manufacturer=manufacturers[0], part_id='1001'), - InventoryItemTemplate(device_type=device_types[1], name='Inventory Item 2', label='B', role=inventory_item_roles[1], manufacturer=manufacturers[1], part_id='1002'), - InventoryItemTemplate(device_type=device_types[2], name='Inventory Item 3', label='C', role=inventory_item_roles[2], manufacturer=manufacturers[2], part_id='1003'), + InventoryItemTemplate( + device_type=device_types[0], + name='Inventory Item 1', + label='A', + role=inventory_item_roles[0], + manufacturer=manufacturers[0], + part_id='1001', + description='foobar1' + ), + InventoryItemTemplate( + device_type=device_types[1], + name='Inventory Item 2', + label='B', + role=inventory_item_roles[1], + manufacturer=manufacturers[1], + part_id='1002', + description='foobar2' + ), + InventoryItemTemplate( + device_type=device_types[2], + name='Inventory Item 3', + label='C', + role=inventory_item_roles[2], + manufacturer=manufacturers[2], + part_id='1003', + description='foobar3' + ), ) for item in inventory_item_templates: item.save() @@ -1486,6 +1742,10 @@ class DeviceRoleTestCase(TestCase, ChangeLoggedFilterSetTests): ) DeviceRole.objects.bulk_create(roles) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Device Role 1', 'Device Role 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1524,12 +1784,16 @@ class PlatformTestCase(TestCase, ChangeLoggedFilterSetTests): Manufacturer.objects.bulk_create(manufacturers) platforms = ( - Platform(name='Platform 1', slug='platform-1', manufacturer=manufacturers[0], description='A'), - Platform(name='Platform 2', slug='platform-2', manufacturer=manufacturers[1], description='B'), - Platform(name='Platform 3', slug='platform-3', manufacturer=manufacturers[2], description='C'), + Platform(name='Platform 1', slug='platform-1', manufacturer=manufacturers[0], description='foobar1'), + Platform(name='Platform 2', slug='platform-2', manufacturer=manufacturers[1], description='foobar2'), + Platform(name='Platform 3', slug='platform-3', manufacturer=manufacturers[2], description='foobar3'), ) Platform.objects.bulk_create(platforms) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Platform 1', 'Platform 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1539,7 +1803,7 @@ class PlatformTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_manufacturer(self): @@ -1647,9 +1911,66 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): Tenant.objects.bulk_create(tenants) devices = ( - Device(name='Device 1', device_type=device_types[0], role=roles[0], platform=platforms[0], tenant=tenants[0], serial='ABC', asset_tag='1001', site=sites[0], location=locations[0], rack=racks[0], position=1, face=DeviceFaceChoices.FACE_FRONT, latitude=10, longitude=10, status=DeviceStatusChoices.STATUS_ACTIVE, cluster=clusters[0], local_context_data={"foo": 123}), - Device(name='Device 2', device_type=device_types[1], role=roles[1], platform=platforms[1], tenant=tenants[1], serial='DEF', asset_tag='1002', site=sites[1], location=locations[1], rack=racks[1], position=2, face=DeviceFaceChoices.FACE_FRONT, latitude=20, longitude=20, status=DeviceStatusChoices.STATUS_STAGED, airflow=DeviceAirflowChoices.AIRFLOW_FRONT_TO_REAR, cluster=clusters[1]), - Device(name='Device 3', device_type=device_types[2], role=roles[2], platform=platforms[2], tenant=tenants[2], serial='GHI', asset_tag='1003', site=sites[2], location=locations[2], rack=racks[2], position=3, face=DeviceFaceChoices.FACE_REAR, latitude=30, longitude=30, status=DeviceStatusChoices.STATUS_FAILED, airflow=DeviceAirflowChoices.AIRFLOW_REAR_TO_FRONT, cluster=clusters[2]), + Device( + name='Device 1', + device_type=device_types[0], + role=roles[0], + platform=platforms[0], + tenant=tenants[0], + serial='ABC', + asset_tag='1001', + site=sites[0], + location=locations[0], + rack=racks[0], + position=1, + face=DeviceFaceChoices.FACE_FRONT, + latitude=10, + longitude=10, + status=DeviceStatusChoices.STATUS_ACTIVE, + cluster=clusters[0], + local_context_data={"foo": 123}, + description='foobar1' + ), + Device( + name='Device 2', + device_type=device_types[1], + role=roles[1], + platform=platforms[1], + tenant=tenants[1], + serial='DEF', + asset_tag='1002', + site=sites[1], + location=locations[1], + rack=racks[1], + position=2, + face=DeviceFaceChoices.FACE_FRONT, + latitude=20, + longitude=20, + status=DeviceStatusChoices.STATUS_STAGED, + airflow=DeviceAirflowChoices.AIRFLOW_FRONT_TO_REAR, + cluster=clusters[1], + description='foobar2' + ), + Device( + name='Device 3', + device_type=device_types[2], + role=roles[2], + platform=platforms[2], + tenant=tenants[2], + serial='GHI', + asset_tag='1003', + site=sites[2], + location=locations[2], + rack=racks[2], + position=3, + face=DeviceFaceChoices.FACE_REAR, + latitude=30, + longitude=30, + status=DeviceStatusChoices.STATUS_FAILED, + airflow=DeviceAirflowChoices.AIRFLOW_REAR_TO_FRONT, + cluster=clusters[2], + description='foobar3' + ), ) Device.objects.bulk_create(devices) @@ -1711,6 +2032,10 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): Device.objects.filter(pk=devices[0].pk).update(virtual_chassis=virtual_chassis, vc_position=1, vc_priority=1) Device.objects.filter(pk=devices[1].pk).update(virtual_chassis=virtual_chassis, vc_position=2, vc_priority=2) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Device 1', 'Device 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1718,6 +2043,10 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'name': ['DEVICE 1', 'DEVICE 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_asset_tag(self): params = {'asset_tag': ['1001', '1002']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1977,18 +2306,88 @@ class ModuleTestCase(TestCase, ChangeLoggedFilterSetTests): ModuleBay.objects.bulk_create(module_bays) modules = ( - Module(device=devices[0], module_bay=module_bays[0], module_type=module_types[0], status=ModuleStatusChoices.STATUS_ACTIVE, serial='A', asset_tag='A'), - Module(device=devices[0], module_bay=module_bays[1], module_type=module_types[1], status=ModuleStatusChoices.STATUS_ACTIVE, serial='B', asset_tag='B'), - Module(device=devices[0], module_bay=module_bays[2], module_type=module_types[2], status=ModuleStatusChoices.STATUS_ACTIVE, serial='C', asset_tag='C'), - Module(device=devices[1], module_bay=module_bays[3], module_type=module_types[0], status=ModuleStatusChoices.STATUS_ACTIVE, serial='D', asset_tag='D'), - Module(device=devices[1], module_bay=module_bays[4], module_type=module_types[1], status=ModuleStatusChoices.STATUS_ACTIVE, serial='E', asset_tag='E'), - Module(device=devices[1], module_bay=module_bays[5], module_type=module_types[2], status=ModuleStatusChoices.STATUS_ACTIVE, serial='F', asset_tag='F'), - Module(device=devices[2], module_bay=module_bays[6], module_type=module_types[0], status=ModuleStatusChoices.STATUS_ACTIVE, serial='G', asset_tag='G'), - Module(device=devices[2], module_bay=module_bays[7], module_type=module_types[1], status=ModuleStatusChoices.STATUS_PLANNED, serial='H', asset_tag='H'), - Module(device=devices[2], module_bay=module_bays[8], module_type=module_types[2], status=ModuleStatusChoices.STATUS_FAILED, serial='I', asset_tag='I'), + Module( + device=devices[0], + module_bay=module_bays[0], + module_type=module_types[0], + status=ModuleStatusChoices.STATUS_ACTIVE, + serial='A', + asset_tag='A', + description='foobar1' + ), + Module( + device=devices[0], + module_bay=module_bays[1], + module_type=module_types[1], + status=ModuleStatusChoices.STATUS_ACTIVE, + serial='B', + asset_tag='B', + description='foobar2' + ), + Module( + device=devices[0], + module_bay=module_bays[2], + module_type=module_types[2], + status=ModuleStatusChoices.STATUS_ACTIVE, + serial='C', + asset_tag='C', + description='foobar3' + ), + Module( + device=devices[1], + module_bay=module_bays[3], + module_type=module_types[0], + status=ModuleStatusChoices.STATUS_ACTIVE, + serial='D', + asset_tag='D' + ), + Module( + device=devices[1], + module_bay=module_bays[4], + module_type=module_types[1], + status=ModuleStatusChoices.STATUS_ACTIVE, + serial='E', + asset_tag='E' + ), + Module( + device=devices[1], + module_bay=module_bays[5], + module_type=module_types[2], + status=ModuleStatusChoices.STATUS_ACTIVE, + serial='F', + asset_tag='F' + ), + Module( + device=devices[2], + module_bay=module_bays[6], + module_type=module_types[0], + status=ModuleStatusChoices.STATUS_ACTIVE, + serial='G', + asset_tag='G' + ), + Module( + device=devices[2], + module_bay=module_bays[7], + module_type=module_types[1], + status=ModuleStatusChoices.STATUS_PLANNED, + serial='H', + asset_tag='H' + ), + Module( + device=devices[2], + module_bay=module_bays[8], + module_type=module_types[2], + status=ModuleStatusChoices.STATUS_FAILED, + serial='I', + asset_tag='I' + ), ) Module.objects.bulk_create(modules) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_manufacturer(self): manufacturers = Manufacturer.objects.all()[:2] params = {'manufacturer_id': [manufacturers[0].pk, manufacturers[1].pk]} @@ -2003,6 +2402,10 @@ class ModuleTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'module_type': [module_types[0].model, module_types[1].model]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_module_bay(self): module_bays = ModuleBay.objects.all()[:2] params = {'module_bay_id': [module_bays[0].pk, module_bays[1].pk]} @@ -2822,11 +3225,56 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil ) Rack.objects.bulk_create(racks) + # VirtualChassis assignment for filtering + virtual_chassis = VirtualChassis(name='Virtual Chassis') + virtual_chassis.save() + devices = ( - Device(name='Device 1', device_type=device_types[0], role=roles[0], site=sites[0], location=locations[0], rack=racks[0]), - Device(name='Device 2', device_type=device_types[1], role=roles[1], site=sites[1], location=locations[1], rack=racks[1]), - Device(name='Device 3', device_type=device_types[2], role=roles[2], site=sites[2], location=locations[2], rack=racks[2]), - Device(name=None, device_type=device_types[2], role=roles[2], site=sites[3]), # For cable connections + Device( + name='Device 1A', + device_type=device_types[0], + role=roles[0], + site=sites[0], + location=locations[0], + rack=racks[0], + virtual_chassis=virtual_chassis, + vc_position=1, + vc_priority=1 + ), + Device( + name='Device 1B', + device_type=device_types[2], + role=roles[2], + site=sites[2], + location=locations[2], + rack=racks[2], + virtual_chassis=virtual_chassis, + vc_position=2, + vc_priority=1 + ), + Device( + name='Device 2', + device_type=device_types[1], + role=roles[1], + site=sites[1], + location=locations[1], + rack=racks[1] + ), + Device( + name='Device 3', + device_type=device_types[2], + role=roles[2], + site=sites[2], + location=locations[2], + rack=racks[2] + ), + # For cable connections + Device( + name=None, + device_type=device_types[2], + role=roles[2], + site=sites[3] + ), ) Device.objects.bulk_create(devices) @@ -2834,6 +3282,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil ModuleBay(device=devices[0], name='Module Bay 1'), ModuleBay(device=devices[1], name='Module Bay 2'), ModuleBay(device=devices[2], name='Module Bay 3'), + ModuleBay(device=devices[3], name='Module Bay 4'), ) ModuleBay.objects.bulk_create(module_bays) @@ -2841,6 +3290,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil Module(device=devices[0], module_bay=module_bays[0], module_type=module_type), Module(device=devices[1], module_bay=module_bays[1], module_type=module_type), Module(device=devices[2], module_bay=module_bays[2], module_type=module_type), + Module(device=devices[3], module_bay=module_bays[3], module_type=module_type), ) Module.objects.bulk_create(modules) @@ -2853,16 +3303,11 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil # Virtual Device Context Creation vdcs = ( - VirtualDeviceContext(device=devices[3], name='VDC 1', identifier=1, status=VirtualDeviceContextStatusChoices.STATUS_ACTIVE), - VirtualDeviceContext(device=devices[3], name='VDC 2', identifier=2, status=VirtualDeviceContextStatusChoices.STATUS_PLANNED), + VirtualDeviceContext(device=devices[4], name='VDC 1', identifier=1, status=VirtualDeviceContextStatusChoices.STATUS_ACTIVE), + VirtualDeviceContext(device=devices[4], name='VDC 2', identifier=2, status=VirtualDeviceContextStatusChoices.STATUS_PLANNED), ) VirtualDeviceContext.objects.bulk_create(vdcs) - # VirtualChassis assignment for filtering - virtual_chassis = VirtualChassis.objects.create(master=devices[0]) - Device.objects.filter(pk=devices[0].pk).update(virtual_chassis=virtual_chassis, vc_position=1, vc_priority=1) - Device.objects.filter(pk=devices[1].pk).update(virtual_chassis=virtual_chassis, vc_position=2, vc_priority=2) - interfaces = ( Interface( device=devices[0], @@ -2885,6 +3330,13 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil Interface( device=devices[1], module=modules[1], + name='VC Chassis Interface', + type=InterfaceTypeChoices.TYPE_1GE_SFP, + enabled=True + ), + Interface( + device=devices[2], + module=modules[2], name='Interface 2', label='B', type=InterfaceTypeChoices.TYPE_1GE_GBIC, @@ -2901,8 +3353,8 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil poe_type=InterfacePoETypeChoices.TYPE_1_8023AF ), Interface( - device=devices[2], - module=modules[2], + device=devices[3], + module=modules[3], name='Interface 3', label='C', type=InterfaceTypeChoices.TYPE_1GE_FIXED, @@ -2919,7 +3371,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil poe_type=InterfacePoETypeChoices.TYPE_2_8023AT ), Interface( - device=devices[3], + device=devices[4], name='Interface 4', label='D', type=InterfaceTypeChoices.TYPE_OTHER, @@ -2932,7 +3384,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil poe_type=InterfacePoETypeChoices.TYPE_2_8023AT ), Interface( - device=devices[3], + device=devices[4], name='Interface 5', label='E', type=InterfaceTypeChoices.TYPE_OTHER, @@ -2941,7 +3393,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil tx_power=40 ), Interface( - device=devices[3], + device=devices[4], name='Interface 6', label='F', type=InterfaceTypeChoices.TYPE_OTHER, @@ -2950,7 +3402,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil tx_power=40 ), Interface( - device=devices[3], + device=devices[4], name='Interface 7', type=InterfaceTypeChoices.TYPE_80211AC, rf_role=WirelessRoleChoices.ROLE_AP, @@ -2959,7 +3411,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil rf_channel_width=22 ), Interface( - device=devices[3], + device=devices[4], name='Interface 8', type=InterfaceTypeChoices.TYPE_80211AC, rf_role=WirelessRoleChoices.ROLE_STATION, @@ -2977,8 +3429,8 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil interfaces[7].vdcs.set([vdcs[1]]) # Cables - Cable(a_terminations=[interfaces[0]], b_terminations=[interfaces[3]]).save() - Cable(a_terminations=[interfaces[1]], b_terminations=[interfaces[4]]).save() + Cable(a_terminations=[interfaces[0]], b_terminations=[interfaces[5]]).save() + Cable(a_terminations=[interfaces[1]], b_terminations=[interfaces[6]]).save() # Third pair is not connected def test_name(self): @@ -2991,7 +3443,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil def test_enabled(self): params = {'enabled': 'true'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 7) params = {'enabled': 'false'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -3011,7 +3463,7 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil params = {'mgmt_only': 'true'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'mgmt_only': 'false'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) def test_poe_mode(self): params = {'poe_mode': [InterfacePoEModeChoices.MODE_PD, InterfacePoEModeChoices.MODE_PSE]} @@ -3116,6 +3568,14 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil params = {'device': [devices[0].name, devices[1].name]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_virtual_chassis_member(self): + # Device 1A & 3 have 1 management interface, Device 1B has 1 interfaces + devices = Device.objects.filter(name__in=['Device 1A', 'Device 3']) + params = {'virtual_chassis_member_id': [devices[0].pk, devices[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + params = {'virtual_chassis_member': [devices[0].name, devices[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + def test_module(self): modules = Module.objects.all()[:2] params = {'module_id': [modules[0].pk, modules[1].pk]} @@ -3125,23 +3585,23 @@ class InterfaceTestCase(TestCase, DeviceComponentFilterSetTests, ChangeLoggedFil params = {'cabled': True} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'cabled': False} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) def test_occupied(self): params = {'occupied': True} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'occupied': False} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) def test_connected(self): params = {'connected': True} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) params = {'connected': False} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) def test_kind(self): params = {'kind': 'physical'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 7) params = {'kind': 'virtual'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) @@ -4044,12 +4504,31 @@ class InventoryItemRoleTestCase(TestCase, ChangeLoggedFilterSetTests): def setUpTestData(cls): roles = ( - InventoryItemRole(name='Inventory Item Role 1', slug='inventory-item-role-1', color='ff0000'), - InventoryItemRole(name='Inventory Item Role 2', slug='inventory-item-role-2', color='00ff00'), - InventoryItemRole(name='Inventory Item Role 3', slug='inventory-item-role-3', color='0000ff'), + InventoryItemRole( + name='Inventory Item Role 1', + slug='inventory-item-role-1', + color='ff0000', + description='foobar1' + ), + InventoryItemRole( + name='Inventory Item Role 2', + slug='inventory-item-role-2', + color='00ff00', + description='foobar2' + ), + InventoryItemRole( + name='Inventory Item Role 3', + slug='inventory-item-role-3', + color='0000ff', + description='foobar3' + ), ) InventoryItemRole.objects.bulk_create(roles) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Inventory Item Role 1', 'Inventory Item Role 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -4058,6 +4537,10 @@ class InventoryItemRoleTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'slug': ['inventory-item-role-1', 'inventory-item-role-2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_color(self): params = {'color': ['ff0000', '00ff00']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -4108,9 +4591,9 @@ class VirtualChassisTestCase(TestCase, ChangeLoggedFilterSetTests): Device.objects.bulk_create(devices) virtual_chassis = ( - VirtualChassis(name='VC 1', master=devices[0], domain='Domain 1'), - VirtualChassis(name='VC 2', master=devices[2], domain='Domain 2'), - VirtualChassis(name='VC 3', master=devices[4], domain='Domain 3'), + VirtualChassis(name='VC 1', master=devices[0], domain='Domain 1', description='foobar1'), + VirtualChassis(name='VC 2', master=devices[2], domain='Domain 2', description='foobar2'), + VirtualChassis(name='VC 3', master=devices[4], domain='Domain 3', description='foobar3'), ) VirtualChassis.objects.bulk_create(virtual_chassis) @@ -4118,6 +4601,10 @@ class VirtualChassisTestCase(TestCase, ChangeLoggedFilterSetTests): Device.objects.filter(pk=devices[3].pk).update(virtual_chassis=virtual_chassis[1]) Device.objects.filter(pk=devices[5].pk).update(virtual_chassis=virtual_chassis[2]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_domain(self): params = {'domain': ['Domain 1', 'Domain 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -4133,6 +4620,10 @@ class VirtualChassisTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'name': ['VC 1', 'VC 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_region(self): regions = Region.objects.all()[:2] params = {'region_id': [regions[0].pk, regions[1].pk]} @@ -4218,20 +4709,142 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): Interface(device=devices[4], name='Interface 10', type=InterfaceTypeChoices.TYPE_1GE_FIXED), Interface(device=devices[5], name='Interface 11', type=InterfaceTypeChoices.TYPE_1GE_FIXED), Interface(device=devices[5], name='Interface 12', type=InterfaceTypeChoices.TYPE_1GE_FIXED), + Interface(device=devices[5], name='Interface 13', type=InterfaceTypeChoices.TYPE_1GE_FIXED), ) Interface.objects.bulk_create(interfaces) console_port = ConsolePort.objects.create(device=devices[0], name='Console Port 1') console_server_port = ConsoleServerPort.objects.create(device=devices[0], name='Console Server Port 1') + power_port = PowerPort.objects.create(device=devices[0], name='Power Port 1') + power_outlet = PowerOutlet.objects.create(device=devices[0], name='Power Outlet 1') + rear_port = RearPort.objects.create(device=devices[0], name='Rear Port 1', positions=1) + front_port = FrontPort.objects.create( + device=devices[0], + name='Front Port 1', + rear_port=rear_port, + rear_port_position=1 + ) + + power_panel = PowerPanel.objects.create(name='Power Panel 1', site=sites[0]) + power_feed = PowerFeed.objects.create(name='Power Feed 1', power_panel=power_panel) + + provider = Provider.objects.create(name='Provider 1', slug='provider-1') + circuit_type = CircuitType.objects.create(name='Circuit Type 1', slug='circuit-type-1') + circuit = Circuit.objects.create(cid='Circuit 1', provider=provider, type=circuit_type) + circuit_termination = CircuitTermination.objects.create(circuit=circuit, term_side='A', site=sites[0]) # Cables - Cable(a_terminations=[interfaces[1]], b_terminations=[interfaces[2]], label='Cable 1', type=CableTypeChoices.TYPE_CAT3, tenant=tenants[0], status=LinkStatusChoices.STATUS_CONNECTED, color='aa1409', length=10, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(a_terminations=[interfaces[3]], b_terminations=[interfaces[4]], label='Cable 2', type=CableTypeChoices.TYPE_CAT3, tenant=tenants[0], status=LinkStatusChoices.STATUS_CONNECTED, color='aa1409', length=20, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(a_terminations=[interfaces[5]], b_terminations=[interfaces[6]], label='Cable 3', type=CableTypeChoices.TYPE_CAT5E, tenant=tenants[1], status=LinkStatusChoices.STATUS_CONNECTED, color='f44336', length=30, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(a_terminations=[interfaces[7]], b_terminations=[interfaces[8]], label='Cable 4', type=CableTypeChoices.TYPE_CAT5E, tenant=tenants[1], status=LinkStatusChoices.STATUS_PLANNED, color='f44336', length=40, length_unit=CableLengthUnitChoices.UNIT_FOOT).save() - Cable(a_terminations=[interfaces[9]], b_terminations=[interfaces[10]], label='Cable 5', type=CableTypeChoices.TYPE_CAT6, tenant=tenants[2], status=LinkStatusChoices.STATUS_PLANNED, color='e91e63', length=10, length_unit=CableLengthUnitChoices.UNIT_METER).save() - Cable(a_terminations=[interfaces[11]], b_terminations=[interfaces[0]], label='Cable 6', type=CableTypeChoices.TYPE_CAT6, tenant=tenants[2], status=LinkStatusChoices.STATUS_PLANNED, color='e91e63', length=20, length_unit=CableLengthUnitChoices.UNIT_METER).save() - Cable(a_terminations=[console_port], b_terminations=[console_server_port], label='Cable 7').save() + cables = ( + Cable( + a_terminations=[interfaces[1]], + b_terminations=[interfaces[2]], + label='Cable 1', + type=CableTypeChoices.TYPE_CAT3, + tenant=tenants[0], + status=LinkStatusChoices.STATUS_CONNECTED, + color='aa1409', + length=10, + length_unit=CableLengthUnitChoices.UNIT_FOOT, + description='foobar1' + ), + Cable( + a_terminations=[interfaces[3]], + b_terminations=[interfaces[4]], + label='Cable 2', + type=CableTypeChoices.TYPE_CAT3, + tenant=tenants[0], + status=LinkStatusChoices.STATUS_CONNECTED, + color='aa1409', + length=20, + length_unit=CableLengthUnitChoices.UNIT_FOOT, + description='foobar2' + ), + Cable( + a_terminations=[interfaces[5]], + b_terminations=[interfaces[6]], + label='Cable 3', + type=CableTypeChoices.TYPE_CAT5E, + tenant=tenants[1], + status=LinkStatusChoices.STATUS_CONNECTED, + color='f44336', + length=30, + length_unit=CableLengthUnitChoices.UNIT_FOOT, + description='foobar3' + ), + Cable( + a_terminations=[interfaces[7]], + b_terminations=[interfaces[8]], + label='Cable 4', + type=CableTypeChoices.TYPE_CAT5E, + tenant=tenants[1], + status=LinkStatusChoices.STATUS_PLANNED, + color='f44336', + length=40, + length_unit=CableLengthUnitChoices.UNIT_FOOT + ), + Cable( + a_terminations=[interfaces[9]], + b_terminations=[interfaces[10]], + label='Cable 5', + type=CableTypeChoices.TYPE_CAT6, + tenant=tenants[2], + status=LinkStatusChoices.STATUS_PLANNED, + color='e91e63', + length=10, + length_unit=CableLengthUnitChoices.UNIT_METER + ), + Cable( + a_terminations=[interfaces[11]], + b_terminations=[interfaces[0]], + label='Cable 6', + type=CableTypeChoices.TYPE_CAT6, + tenant=tenants[2], + status=LinkStatusChoices.STATUS_PLANNED, + color='e91e63', + length=20, + length_unit=CableLengthUnitChoices.UNIT_METER + ), + + # Cables for filtering by termination object + Cable( + a_terminations=[console_port], + label='Cable 7' + ), + Cable( + a_terminations=[console_server_port], + label='Cable 8' + ), + Cable( + a_terminations=[power_port], + label='Cable 9' + ), + Cable( + a_terminations=[power_outlet], + label='Cable 10' + ), + Cable( + a_terminations=[front_port], + label='Cable 11' + ), + Cable( + a_terminations=[rear_port], + label='Cable 12' + ), + Cable( + a_terminations=[power_feed], + label='Cable 13' + ), + Cable( + a_terminations=[circuit_termination], + label='Cable 14' + ), + ) + for cable in cables: + cable.save() + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) def test_label(self): params = {'label': ['Cable 1', 'Cable 2']} @@ -4251,7 +4864,7 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): def test_status(self): params = {'status': [LinkStatusChoices.STATUS_CONNECTED]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 11) params = {'status': [LinkStatusChoices.STATUS_PLANNED]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) @@ -4259,33 +4872,37 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'color': ['aa1409', 'f44336']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_device(self): devices = Device.objects.all()[:2] params = {'device_id': [devices[0].pk, devices[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 9) params = {'device': [devices[0].name, devices[1].name]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 9) def test_rack(self): racks = Rack.objects.all()[:2] params = {'rack_id': [racks[0].pk, racks[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 11) params = {'rack': [racks[0].name, racks[1].name]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 11) def test_location(self): locations = Location.objects.all()[:2] params = {'location_id': [locations[0].pk, locations[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 11) params = {'location': [locations[0].name, locations[1].name]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 11) def test_site(self): site = Site.objects.all()[:2] params = {'site_id': [site[0].pk, site[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 12) params = {'site': [site[0].slug, site[1].slug]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 12) def test_tenant(self): tenant = Tenant.objects.all()[:2] @@ -4297,8 +4914,8 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): def test_termination_types(self): params = {'termination_a_type': 'dcim.consoleport'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) - params = {'termination_b_type': 'dcim.consoleserverport'} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + # params = {'termination_b_type': 'dcim.consoleserverport'} + # self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) def test_termination_ids(self): interface_ids = CableTermination.objects.filter( @@ -4311,6 +4928,44 @@ class CableTestCase(TestCase, ChangeLoggedFilterSetTests): } self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + def test_unterminated(self): + params = {'unterminated': True} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 8) + params = {'unterminated': False} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + + def test_consoleport(self): + params = {'consoleport_id': [ConsolePort.objects.first().pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_consoleserverport(self): + params = {'consoleserverport_id': [ConsoleServerPort.objects.first().pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_powerport(self): + params = {'powerport_id': [PowerPort.objects.first().pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_poweroutlet(self): + params = {'poweroutlet_id': [PowerOutlet.objects.first().pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_frontport(self): + params = {'frontport_id': [FrontPort.objects.first().pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_rearport(self): + params = {'rearport_id': [RearPort.objects.first().pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_powerfeed(self): + params = {'powerfeed_id': [PowerFeed.objects.first().pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_circuittermination(self): + params = {'circuittermination_id': [CircuitTermination.objects.first().pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + class PowerPanelTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = PowerPanel.objects.all() @@ -4351,16 +5006,24 @@ class PowerPanelTestCase(TestCase, ChangeLoggedFilterSetTests): location.save() power_panels = ( - PowerPanel(name='Power Panel 1', site=sites[0], location=locations[0]), - PowerPanel(name='Power Panel 2', site=sites[1], location=locations[1]), - PowerPanel(name='Power Panel 3', site=sites[2], location=locations[2]), + PowerPanel(name='Power Panel 1', site=sites[0], location=locations[0], description='foobar1'), + PowerPanel(name='Power Panel 2', site=sites[1], location=locations[1], description='foobar2'), + PowerPanel(name='Power Panel 3', site=sites[2], location=locations[2], description='foobar3'), ) PowerPanel.objects.bulk_create(power_panels) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Power Panel 1', 'Power Panel 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_region(self): regions = Region.objects.all()[:2] params = {'region_id': [regions[0].pk, regions[1].pk]} @@ -4459,7 +5122,8 @@ class PowerFeedTestCase(TestCase, ChangeLoggedFilterSetTests): phase=PowerFeedPhaseChoices.PHASE_3PHASE, voltage=100, amperage=100, - max_utilization=10 + max_utilization=10, + description='foobar1' ), PowerFeed( power_panel=power_panels[1], @@ -4472,7 +5136,9 @@ class PowerFeedTestCase(TestCase, ChangeLoggedFilterSetTests): phase=PowerFeedPhaseChoices.PHASE_3PHASE, voltage=200, amperage=200, - max_utilization=20), + max_utilization=20, + description='foobar2' + ), PowerFeed( power_panel=power_panels[2], rack=racks[2], @@ -4484,7 +5150,8 @@ class PowerFeedTestCase(TestCase, ChangeLoggedFilterSetTests): phase=PowerFeedPhaseChoices.PHASE_SINGLE, voltage=300, amperage=300, - max_utilization=30 + max_utilization=30, + description='foobar3' ), ) PowerFeed.objects.bulk_create(power_feeds) @@ -4501,6 +5168,10 @@ class PowerFeedTestCase(TestCase, ChangeLoggedFilterSetTests): Cable(a_terminations=[power_feeds[0]], b_terminations=[power_ports[0]]).save() Cable(a_terminations=[power_feeds[1]], b_terminations=[power_ports[1]]).save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Power Feed 1', 'Power Feed 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -4533,6 +5204,10 @@ class PowerFeedTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'max_utilization': [10, 20]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_region(self): regions = Region.objects.all()[:2] params = {'region_id': [regions[0].pk, regions[1].pk]} @@ -4624,12 +5299,41 @@ class VirtualDeviceContextTestCase(TestCase, ChangeLoggedFilterSetTests): Device.objects.bulk_create(devices) vdcs = ( - VirtualDeviceContext(device=devices[0], name='VDC 1', identifier=1, status=VirtualDeviceContextStatusChoices.STATUS_ACTIVE), - VirtualDeviceContext(device=devices[0], name='VDC 2', identifier=2, status=VirtualDeviceContextStatusChoices.STATUS_PLANNED), - VirtualDeviceContext(device=devices[1], name='VDC 1', status=VirtualDeviceContextStatusChoices.STATUS_OFFLINE), - VirtualDeviceContext(device=devices[1], name='VDC 2', status=VirtualDeviceContextStatusChoices.STATUS_PLANNED), - VirtualDeviceContext(device=devices[2], name='VDC 1', status=VirtualDeviceContextStatusChoices.STATUS_ACTIVE), - VirtualDeviceContext(device=devices[2], name='VDC 2', status=VirtualDeviceContextStatusChoices.STATUS_ACTIVE), + VirtualDeviceContext( + device=devices[0], + name='VDC 1', + identifier=1, + status=VirtualDeviceContextStatusChoices.STATUS_ACTIVE, + description='foobar1' + ), + VirtualDeviceContext( + device=devices[0], + name='VDC 2', + identifier=2, + status=VirtualDeviceContextStatusChoices.STATUS_PLANNED, + description='foobar2' + ), + VirtualDeviceContext( + device=devices[1], + name='VDC 1', + status=VirtualDeviceContextStatusChoices.STATUS_OFFLINE, + description='foobar3' + ), + VirtualDeviceContext( + device=devices[1], + name='VDC 2', + status=VirtualDeviceContextStatusChoices.STATUS_PLANNED + ), + VirtualDeviceContext( + device=devices[2], + name='VDC 1', + status=VirtualDeviceContextStatusChoices.STATUS_ACTIVE + ), + VirtualDeviceContext( + device=devices[2], + name='VDC 2', + status=VirtualDeviceContextStatusChoices.STATUS_ACTIVE + ), ) VirtualDeviceContext.objects.bulk_create(vdcs) @@ -4645,14 +5349,24 @@ class VirtualDeviceContextTestCase(TestCase, ChangeLoggedFilterSetTests): addresses = ( IPAddress(assigned_object=interfaces[0], address='10.1.1.1/24'), IPAddress(assigned_object=interfaces[1], address='10.1.1.2/24'), + IPAddress(assigned_object=None, address='10.1.1.3/24'), + IPAddress(assigned_object=interfaces[0], address='2001:db8::1/64'), + IPAddress(assigned_object=interfaces[1], address='2001:db8::2/64'), + IPAddress(assigned_object=None, address='2001:db8::3/64'), ) IPAddress.objects.bulk_create(addresses) vdcs[0].primary_ip4 = addresses[0] + vdcs[0].primary_ip6 = addresses[3] vdcs[0].save() vdcs[1].primary_ip4 = addresses[1] + vdcs[1].primary_ip6 = addresses[4] vdcs[1].save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_device(self): params = {'device': ['Device 1', 'Device 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) @@ -4661,6 +5375,10 @@ class VirtualDeviceContextTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'status': ['active']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_device_id(self): devices = Device.objects.filter(name__in=['Device 1', 'Device 2']) params = {'device_id': [devices[0].pk, devices[1].pk]} @@ -4671,3 +5389,17 @@ class VirtualDeviceContextTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) params = {'has_primary_ip': False} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + + def test_primary_ip4(self): + addresses = IPAddress.objects.filter(address__family=4) + params = {'primary_ip4_id': [addresses[0].pk, addresses[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'primary_ip4_id': [addresses[2].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + + def test_primary_ip6(self): + addresses = IPAddress.objects.filter(address__family=6) + params = {'primary_ip6_id': [addresses[0].pk, addresses[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'primary_ip6_id': [addresses[2].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) diff --git a/netbox/dcim/tests/test_models.py b/netbox/dcim/tests/test_models.py index 2e5ae0d5c..d56bf0741 100644 --- a/netbox/dcim/tests/test_models.py +++ b/netbox/dcim/tests/test_models.py @@ -1,9 +1,11 @@ +from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.test import TestCase from circuits.models import * from dcim.choices import * from dcim.models import * +from extras.models import CustomField from tenancy.models import Tenant from utilities.utils import drange @@ -238,6 +240,40 @@ class RackTestCase(TestCase): # Check that Device1 is now assigned to Site B self.assertEqual(Device.objects.get(pk=device1.pk).site, site_b) + def test_utilization(self): + site = Site.objects.first() + rack = Rack.objects.first() + + Device( + name='Device 1', + role=DeviceRole.objects.first(), + device_type=DeviceType.objects.first(), + site=site, + rack=rack, + position=1 + ).save() + rack.refresh_from_db() + self.assertEqual(rack.get_utilization(), 1 / 42 * 100) + + # create device excluded from utilization calculations + dt = DeviceType.objects.create( + manufacturer=Manufacturer.objects.first(), + model='Device Type 4', + slug='device-type-4', + u_height=1, + exclude_from_utilization=True + ) + Device( + name='Device 2', + role=DeviceRole.objects.first(), + device_type=dt, + site=site, + rack=rack, + position=5 + ).save() + rack.refresh_from_db() + self.assertEqual(rack.get_utilization(), 1 / 42 * 100) + class DeviceTestCase(TestCase): @@ -255,6 +291,23 @@ class DeviceTestCase(TestCase): ) DeviceRole.objects.bulk_create(roles) + # Create a CustomField with a default value & assign it to all component models + cf1 = CustomField.objects.create(name='cf1', default='foo') + cf1.content_types.set( + ContentType.objects.filter(app_label='dcim', model__in=[ + 'consoleport', + 'consoleserverport', + 'powerport', + 'poweroutlet', + 'interface', + 'rearport', + 'frontport', + 'modulebay', + 'devicebay', + 'inventoryitem', + ]) + ) + # Create DeviceType components ConsolePortTemplate( device_type=device_type, @@ -266,18 +319,18 @@ class DeviceTestCase(TestCase): name='Console Server Port 1' ).save() - ppt = PowerPortTemplate( + powerport = PowerPortTemplate( device_type=device_type, name='Power Port 1', maximum_draw=1000, allocated_draw=500 ) - ppt.save() + powerport.save() PowerOutletTemplate( device_type=device_type, name='Power Outlet 1', - power_port=ppt, + power_port=powerport, feed_leg=PowerOutletFeedLegChoices.FEED_LEG_A ).save() @@ -288,19 +341,19 @@ class DeviceTestCase(TestCase): mgmt_only=True ).save() - rpt = RearPortTemplate( + rearport = RearPortTemplate( device_type=device_type, name='Rear Port 1', type=PortTypeChoices.TYPE_8P8C, positions=8 ) - rpt.save() + rearport.save() FrontPortTemplate( device_type=device_type, name='Front Port 1', type=PortTypeChoices.TYPE_8P8C, - rear_port=rpt, + rear_port=rearport, rear_port_position=2 ).save() @@ -314,73 +367,93 @@ class DeviceTestCase(TestCase): name='Device Bay 1' ).save() + InventoryItemTemplate( + device_type=device_type, + name='Inventory Item 1' + ).save() + def test_device_creation(self): """ Ensure that all Device components are copied automatically from the DeviceType. """ - d = Device( + device = Device( site=Site.objects.first(), device_type=DeviceType.objects.first(), role=DeviceRole.objects.first(), name='Test Device 1' ) - d.save() + device.save() - ConsolePort.objects.get( - device=d, + consoleport = ConsolePort.objects.get( + device=device, name='Console Port 1' ) + self.assertEqual(consoleport.cf['cf1'], 'foo') - ConsoleServerPort.objects.get( - device=d, + consoleserverport = ConsoleServerPort.objects.get( + device=device, name='Console Server Port 1' ) + self.assertEqual(consoleserverport.cf['cf1'], 'foo') - pp = PowerPort.objects.get( - device=d, + powerport = PowerPort.objects.get( + device=device, name='Power Port 1', maximum_draw=1000, allocated_draw=500 ) + self.assertEqual(powerport.cf['cf1'], 'foo') - PowerOutlet.objects.get( - device=d, + poweroutlet = PowerOutlet.objects.get( + device=device, name='Power Outlet 1', - power_port=pp, + power_port=powerport, feed_leg=PowerOutletFeedLegChoices.FEED_LEG_A ) + self.assertEqual(poweroutlet.cf['cf1'], 'foo') - Interface.objects.get( - device=d, + interface = Interface.objects.get( + device=device, name='Interface 1', type=InterfaceTypeChoices.TYPE_1GE_FIXED, mgmt_only=True ) + self.assertEqual(interface.cf['cf1'], 'foo') - rp = RearPort.objects.get( - device=d, + rearport = RearPort.objects.get( + device=device, name='Rear Port 1', type=PortTypeChoices.TYPE_8P8C, positions=8 ) + self.assertEqual(rearport.cf['cf1'], 'foo') - FrontPort.objects.get( - device=d, + frontport = FrontPort.objects.get( + device=device, name='Front Port 1', type=PortTypeChoices.TYPE_8P8C, - rear_port=rp, + rear_port=rearport, rear_port_position=2 ) + self.assertEqual(frontport.cf['cf1'], 'foo') - ModuleBay.objects.get( - device=d, + modulebay = ModuleBay.objects.get( + device=device, name='Module Bay 1' ) + self.assertEqual(modulebay.cf['cf1'], 'foo') - DeviceBay.objects.get( - device=d, + devicebay = DeviceBay.objects.get( + device=device, name='Device Bay 1' ) + self.assertEqual(devicebay.cf['cf1'], 'foo') + + inventoryitem = InventoryItem.objects.get( + device=device, + name='Inventory Item 1' + ) + self.assertEqual(inventoryitem.cf['cf1'], 'foo') def test_multiple_unnamed_devices(self): diff --git a/netbox/dcim/tests/test_views.py b/netbox/dcim/tests/test_views.py index aff4a65b5..88e0d44f2 100644 --- a/netbox/dcim/tests/test_views.py +++ b/netbox/dcim/tests/test_views.py @@ -17,7 +17,7 @@ from dcim.constants import * from dcim.models import * from ipam.models import ASN, RIR, VLAN, VRF from tenancy.models import Tenant -from utilities.choices import ImportFormatChoices +from utilities.choices import CSVDelimiterChoices, ImportFormatChoices from utilities.testing import ViewTestCases, create_tags, create_test_device, post_data from wireless.models import WirelessLAN @@ -2014,6 +2014,7 @@ class ModuleTestCase( 'data': { 'data': '\n'.join(csv_data), 'format': ImportFormatChoices.CSV, + 'csv_delimiter': CSVDelimiterChoices.AUTO, } } @@ -2030,6 +2031,7 @@ class ModuleTestCase( 'data': { 'data': '\n'.join(csv_data), 'format': ImportFormatChoices.CSV, + 'csv_delimiter': CSVDelimiterChoices.AUTO, } } @@ -2106,6 +2108,7 @@ class ModuleTestCase( 'data': { 'data': '\n'.join(csv_data), 'format': ImportFormatChoices.CSV, + 'csv_delimiter': CSVDelimiterChoices.AUTO, } } @@ -2528,6 +2531,36 @@ class InterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): response = self.client.get(reverse('dcim:interface_trace', kwargs={'pk': interface1.pk})) self.assertHttpStatus(response, 200) + def test_bulk_delete_child_interfaces(self): + interface1 = Interface.objects.get(name='Interface 1') + device = interface1.device + self.add_permissions('dcim.delete_interface') + + # Create a child interface + child = Interface.objects.create( + device=device, + name='Interface 1A', + type=InterfaceTypeChoices.TYPE_VIRTUAL, + parent=interface1 + ) + self.assertEqual(device.interfaces.count(), 6) + + # Attempt to delete only the parent interface + data = { + 'confirm': True, + } + self.client.post(self._get_url('delete', interface1), data) + self.assertEqual(device.interfaces.count(), 6) # Parent was not deleted + + # Attempt to bulk delete parent & child together + data = { + 'pk': [interface1.pk, child.pk], + 'confirm': True, + '_confirm': True, # Form button + } + self.client.post(self._get_url('bulk_delete'), data) + self.assertEqual(device.interfaces.count(), 4) # Child & parent were both deleted + class FrontPortTestCase(ViewTestCases.DeviceComponentViewTestCase): model = FrontPort diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index e57a5834c..497935b15 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -1,5 +1,4 @@ import traceback -from collections import defaultdict from django.contrib import messages from django.contrib.contenttypes.models import ContentType @@ -20,11 +19,13 @@ from circuits.models import Circuit, CircuitTermination from extras.views import ObjectConfigContextView from ipam.models import ASN, IPAddress, Prefix, VLAN, VLANGroup from ipam.tables import InterfaceVLANTable +from netbox.constants import DEFAULT_ACTION_PERMISSIONS from netbox.views import generic from tenancy.views import ObjectContactsView from utilities.forms import ConfirmationForm from utilities.paginator import EnhancedPaginator, get_paginate_count from utilities.permissions import get_permission_for_model +from utilities.query_functions import CollateAsChar from utilities.utils import count_related from utilities.views import GetReturnURLMixin, ObjectPermissionRequiredMixin, ViewTab, register_model_view from virtualization.models import VirtualMachine @@ -46,15 +47,11 @@ CABLE_TERMINATION_TYPES = { class DeviceComponentsView(generic.ObjectChildrenView): - actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete', 'bulk_rename', 'bulk_disconnect') - action_perms = defaultdict(set, **{ - 'add': {'add'}, - 'import': {'add'}, - 'bulk_edit': {'change'}, - 'bulk_delete': {'delete'}, + actions = { + **DEFAULT_ACTION_PERMISSIONS, 'bulk_rename': {'change'}, 'bulk_disconnect': {'change'}, - }) + } queryset = Device.objects.all() def get_children(self, request, parent): @@ -122,16 +119,18 @@ class BulkDisconnectView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View) if form.is_valid(): with transaction.atomic(): - count = 0 + cable_ids = set() for obj in self.queryset.filter(pk__in=form.cleaned_data['pk']): - if obj.cable is None: - continue - obj.cable.delete() - count += 1 + if obj.cable: + cable_ids.add(obj.cable.pk) + count += 1 + for cable in Cable.objects.filter(pk__in=cable_ids): + cable.delete() - messages.success(request, "Disconnected {} {}".format( - count, self.queryset.model._meta.verbose_name_plural + messages.success(request, _("Disconnected {count} {type}").format( + count=count, + type=self.queryset.model._meta.verbose_name_plural )) return redirect(return_url) @@ -398,32 +397,8 @@ class SiteView(generic.ObjectView): (Circuit.objects.restrict(request.user, 'view').filter(terminations__site=instance).distinct(), 'site_id'), ) - locations = Location.objects.add_related_count( - Location.objects.all(), - Rack, - 'location', - 'rack_count', - cumulative=True - ) - locations = Location.objects.add_related_count( - locations, - Device, - 'location', - 'device_count', - cumulative=True - ).restrict(request.user, 'view').filter(site=instance) - - nonracked_devices = Device.objects.filter( - site=instance, - rack__isnull=True, - parent_bay__isnull=True - ).prefetch_related('device_type__manufacturer', 'parent_bay', 'role') - return { 'related_models': related_models, - 'locations': locations, - 'nonracked_devices': nonracked_devices.order_by('-pk')[:10], - 'total_nonracked_devices_count': nonracked_devices.count(), } @@ -495,16 +470,8 @@ class LocationView(generic.ObjectView): (Device.objects.restrict(request.user, 'view').filter(location__in=locations), 'location_id'), ) - nonracked_devices = Device.objects.filter( - location=instance, - rack__isnull=True, - parent_bay__isnull=True - ).prefetch_related('device_type__manufacturer', 'parent_bay', 'role') - return { 'related_models': related_models, - 'nonracked_devices': nonracked_devices.order_by('-pk')[:10], - 'total_nonracked_devices_count': nonracked_devices.count(), } @@ -725,8 +692,7 @@ class RackRackReservationsView(generic.ObjectChildrenView): label=_('Reservations'), badge=lambda obj: obj.reservations.count(), permission='dcim.view_rackreservation', - weight=510, - hide_if_empty=True + weight=510 ) def get_children(self, request, parent): @@ -2007,7 +1973,10 @@ class DeviceModuleBaysView(DeviceComponentsView): table = tables.DeviceModuleBayTable filterset = filtersets.ModuleBayFilterSet template_name = 'dcim/device/modulebays.html' - actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete', 'bulk_rename') + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } tab = ViewTab( label=_('Module Bays'), badge=lambda obj: obj.module_bay_count, @@ -2023,7 +1992,10 @@ class DeviceDeviceBaysView(DeviceComponentsView): table = tables.DeviceDeviceBayTable filterset = filtersets.DeviceBayFilterSet template_name = 'dcim/device/devicebays.html' - actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete', 'bulk_rename') + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } tab = ViewTab( label=_('Device Bays'), badge=lambda obj: obj.device_bay_count, @@ -2035,11 +2007,14 @@ class DeviceDeviceBaysView(DeviceComponentsView): @register_model_view(Device, 'inventory') class DeviceInventoryView(DeviceComponentsView): - actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete', 'bulk_rename') child_model = InventoryItem table = tables.DeviceInventoryItemTable filterset = filtersets.InventoryItemFilterSet template_name = 'dcim/device/inventory.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } tab = ViewTab( label=_('Inventory Items'), badge=lambda obj: obj.inventory_item_count, @@ -2055,7 +2030,6 @@ class DeviceConfigContextView(ObjectConfigContextView): base_template = 'dcim/device/base.html' tab = ViewTab( label=_('Config Context'), - permission='extras.view_configcontext', weight=2000 ) @@ -2066,7 +2040,6 @@ class DeviceRenderConfigView(generic.ObjectView): template_name = 'dcim/device/render_config.html' tab = ViewTab( label=_('Render Config'), - permission='extras.view_configtemplate', weight=2100 ) @@ -2218,6 +2191,11 @@ class ConsolePortListView(generic.ObjectListView): filterset = filtersets.ConsolePortFilterSet filterset_form = forms.ConsolePortFilterForm table = tables.ConsolePortTable + template_name = 'dcim/component_list.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } @register_model_view(ConsolePort) @@ -2281,6 +2259,11 @@ class ConsoleServerPortListView(generic.ObjectListView): filterset = filtersets.ConsoleServerPortFilterSet filterset_form = forms.ConsoleServerPortFilterForm table = tables.ConsoleServerPortTable + template_name = 'dcim/component_list.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } @register_model_view(ConsoleServerPort) @@ -2344,6 +2327,11 @@ class PowerPortListView(generic.ObjectListView): filterset = filtersets.PowerPortFilterSet filterset_form = forms.PowerPortFilterForm table = tables.PowerPortTable + template_name = 'dcim/component_list.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } @register_model_view(PowerPort) @@ -2407,6 +2395,11 @@ class PowerOutletListView(generic.ObjectListView): filterset = filtersets.PowerOutletFilterSet filterset_form = forms.PowerOutletFilterForm table = tables.PowerOutletTable + template_name = 'dcim/component_list.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } @register_model_view(PowerOutlet) @@ -2470,6 +2463,11 @@ class InterfaceListView(generic.ObjectListView): filterset = filtersets.InterfaceFilterSet filterset_form = forms.InterfaceFilterForm table = tables.InterfaceTable + template_name = 'dcim/component_list.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } @register_model_view(Interface) @@ -2563,7 +2561,8 @@ class InterfaceBulkDisconnectView(BulkDisconnectView): class InterfaceBulkDeleteView(generic.BulkDeleteView): - queryset = Interface.objects.all() + # Ensure child interfaces are deleted prior to their parents + queryset = Interface.objects.order_by('device', 'parent', CollateAsChar('_name')) filterset = filtersets.InterfaceFilterSet table = tables.InterfaceTable @@ -2581,6 +2580,11 @@ class FrontPortListView(generic.ObjectListView): filterset = filtersets.FrontPortFilterSet filterset_form = forms.FrontPortFilterForm table = tables.FrontPortTable + template_name = 'dcim/component_list.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } @register_model_view(FrontPort) @@ -2644,6 +2648,11 @@ class RearPortListView(generic.ObjectListView): filterset = filtersets.RearPortFilterSet filterset_form = forms.RearPortFilterForm table = tables.RearPortTable + template_name = 'dcim/component_list.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } @register_model_view(RearPort) @@ -2707,6 +2716,11 @@ class ModuleBayListView(generic.ObjectListView): filterset = filtersets.ModuleBayFilterSet filterset_form = forms.ModuleBayFilterForm table = tables.ModuleBayTable + template_name = 'dcim/component_list.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } @register_model_view(ModuleBay) @@ -2762,6 +2776,11 @@ class DeviceBayListView(generic.ObjectListView): filterset = filtersets.DeviceBayFilterSet filterset_form = forms.DeviceBayFilterForm table = tables.DeviceBayTable + template_name = 'dcim/component_list.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } @register_model_view(DeviceBay) @@ -2886,6 +2905,11 @@ class InventoryItemListView(generic.ObjectListView): filterset = filtersets.InventoryItemFilterSet filterset_form = forms.InventoryItemFilterForm table = tables.InventoryItemTable + template_name = 'dcim/component_list.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } @register_model_view(InventoryItem) @@ -2935,6 +2959,25 @@ class InventoryItemBulkDeleteView(generic.BulkDeleteView): template_name = 'dcim/inventoryitem_bulk_delete.html' +@register_model_view(InventoryItem, 'children') +class InventoryItemChildrenView(generic.ObjectChildrenView): + queryset = InventoryItem.objects.all() + child_model = InventoryItem + table = tables.InventoryItemTable + filterset = filtersets.InventoryItemFilterSet + template_name = 'generic/object_children.html' + tab = ViewTab( + label=_('Children'), + badge=lambda obj: obj.child_items.count(), + permission='dcim.view_inventoryitem', + hide_if_empty=True, + weight=5000 + ) + + def get_children(self, request, parent): + return parent.child_items.restrict(request.user, 'view') + + # # Inventory item roles # @@ -3117,7 +3160,12 @@ class CableListView(generic.ObjectListView): filterset = filtersets.CableFilterSet filterset_form = forms.CableFilterForm table = tables.CableTable - actions = ('import', 'export', 'bulk_edit', 'bulk_delete') + actions = { + 'import': {'add'}, + 'export': {'view'}, + 'bulk_edit': {'change'}, + 'bulk_delete': {'delete'}, + } @register_model_view(Cable) @@ -3211,7 +3259,9 @@ class ConsoleConnectionsListView(generic.ObjectListView): filterset_form = forms.ConsoleConnectionFilterForm table = tables.ConsoleConnectionTable template_name = 'dcim/connections_list.html' - actions = ('export',) + actions = { + 'export': {'view'}, + } def get_extra_context(self, request): return { @@ -3225,7 +3275,9 @@ class PowerConnectionsListView(generic.ObjectListView): filterset_form = forms.PowerConnectionFilterForm table = tables.PowerConnectionTable template_name = 'dcim/connections_list.html' - actions = ('export',) + actions = { + 'export': {'view'}, + } def get_extra_context(self, request): return { @@ -3239,7 +3291,9 @@ class InterfaceConnectionsListView(generic.ObjectListView): filterset_form = forms.InterfaceConnectionFilterForm table = tables.InterfaceConnectionTable template_name = 'dcim/connections_list.html' - actions = ('export',) + actions = { + 'export': {'view'}, + } def get_extra_context(self, request): return { diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py deleted file mode 100644 index 6e82ffc75..000000000 --- a/netbox/extras/admin.py +++ /dev/null @@ -1,2 +0,0 @@ -# TODO: Removing this import triggers an import loop due to how form mixins are currently organized -from .forms import ConfigRevisionForm diff --git a/netbox/extras/api/mixins.py b/netbox/extras/api/mixins.py index b6be47bbb..1737ff9f8 100644 --- a/netbox/extras/api/mixins.py +++ b/netbox/extras/api/mixins.py @@ -1,10 +1,16 @@ from jinja2.exceptions import TemplateError +from rest_framework.decorators import action +from rest_framework.renderers import JSONRenderer from rest_framework.response import Response +from rest_framework.status import HTTP_400_BAD_REQUEST +from netbox.api.renderers import TextRenderer from .nested_serializers import NestedConfigTemplateSerializer __all__ = ( 'ConfigContextQuerySetMixin', + 'ConfigTemplateRenderMixin', + 'RenderConfigMixin', ) @@ -31,7 +37,9 @@ class ConfigContextQuerySetMixin: class ConfigTemplateRenderMixin: - + """ + Provides a method to return a rendered ConfigTemplate as REST API data. + """ def render_configtemplate(self, request, configtemplate, context): try: output = configtemplate.render(context=context) @@ -50,3 +58,28 @@ class ConfigTemplateRenderMixin: 'configtemplate': template_serializer.data, 'content': output }) + + +class RenderConfigMixin(ConfigTemplateRenderMixin): + """ + Provides a /render-config/ endpoint for REST API views whose model may have a ConfigTemplate assigned. + """ + @action(detail=True, methods=['post'], url_path='render-config', renderer_classes=[JSONRenderer, TextRenderer]) + def render_config(self, request, pk): + """ + Resolve and render the preferred ConfigTemplate for this Device. + """ + instance = self.get_object() + object_type = instance._meta.model_name + configtemplate = instance.get_config_template() + if not configtemplate: + return Response({ + 'error': f'No config template found for this {object_type}.' + }, status=HTTP_400_BAD_REQUEST) + + # Compile context data + context_data = instance.get_config_context() + context_data.update(request.data) + context_data.update({object_type: instance}) + + return self.render_configtemplate(request, configtemplate, context_data) diff --git a/netbox/extras/api/nested_serializers.py b/netbox/extras/api/nested_serializers.py index a97c630d2..4bada494f 100644 --- a/netbox/extras/api/nested_serializers.py +++ b/netbox/extras/api/nested_serializers.py @@ -10,15 +10,25 @@ __all__ = [ 'NestedCustomFieldChoiceSetSerializer', 'NestedCustomFieldSerializer', 'NestedCustomLinkSerializer', + 'NestedEventRuleSerializer', 'NestedExportTemplateSerializer', 'NestedImageAttachmentSerializer', 'NestedJournalEntrySerializer', 'NestedSavedFilterSerializer', + 'NestedScriptSerializer', 'NestedTagSerializer', # Defined in netbox.api.serializers 'NestedWebhookSerializer', ] +class NestedEventRuleSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='extras-api:eventrule-detail') + + class Meta: + model = models.EventRule + fields = ['id', 'url', 'display', 'name'] + + class NestedWebhookSerializer(WritableNestedSerializer): url = serializers.HyperlinkedIdentityField(view_name='extras-api:webhook-detail') @@ -105,3 +115,20 @@ class NestedJournalEntrySerializer(WritableNestedSerializer): class Meta: model = models.JournalEntry fields = ['id', 'url', 'display', 'created'] + + +class NestedScriptSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='extras-api:script-detail', + lookup_field='full_name', + lookup_url_kwarg='pk' + ) + name = serializers.CharField(read_only=True) + display = serializers.SerializerMethodField(read_only=True) + + class Meta: + model = models.Script + fields = ['id', 'url', 'display', 'name'] + + def get_display(self, obj): + return f'{obj.name} ({obj.module})' diff --git a/netbox/extras/api/serializers.py b/netbox/extras/api/serializers.py index 4da5fa629..60a30aed2 100644 --- a/netbox/extras/api/serializers.py +++ b/netbox/extras/api/serializers.py @@ -1,20 +1,19 @@ from django.contrib.auth import get_user_model -from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field from rest_framework import serializers -from core.api.serializers import JobSerializer from core.api.nested_serializers import NestedDataSourceSerializer, NestedDataFileSerializer, NestedJobSerializer +from core.api.serializers import JobSerializer +from core.models import ContentType from dcim.api.nested_serializers import ( NestedDeviceRoleSerializer, NestedDeviceTypeSerializer, NestedLocationSerializer, NestedPlatformSerializer, NestedRegionSerializer, NestedSiteSerializer, NestedSiteGroupSerializer, ) from dcim.models import DeviceRole, DeviceType, Location, Platform, Region, Site, SiteGroup -from drf_spectacular.utils import extend_schema_field -from drf_spectacular.types import OpenApiTypes from extras.choices import * from extras.models import * -from extras.utils import FeatureQuery from netbox.api.exceptions import SerializerNotFound from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField from netbox.api.serializers import BaseModelSerializer, NetBoxModelSerializer, ValidatedModelSerializer @@ -39,6 +38,7 @@ __all__ = ( 'CustomFieldSerializer', 'CustomLinkSerializer', 'DashboardSerializer', + 'EventRuleSerializer', 'ExportTemplateSerializer', 'ImageAttachmentSerializer', 'JournalEntrySerializer', @@ -57,24 +57,59 @@ __all__ = ( ) +# +# Event Rules +# + +class EventRuleSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='extras-api:eventrule-detail') + content_types = ContentTypeField( + queryset=ContentType.objects.with_feature('event_rules'), + many=True + ) + action_type = ChoiceField(choices=EventRuleActionChoices) + action_object_type = ContentTypeField( + queryset=ContentType.objects.with_feature('event_rules'), + ) + action_object = serializers.SerializerMethodField(read_only=True) + + class Meta: + model = EventRule + fields = [ + 'id', 'url', 'display', 'content_types', 'name', 'type_create', 'type_update', 'type_delete', + 'type_job_start', 'type_job_end', 'enabled', 'conditions', 'action_type', 'action_object_type', + 'action_object_id', 'action_object', 'description', 'custom_fields', 'tags', 'created', 'last_updated', + ] + + @extend_schema_field(OpenApiTypes.OBJECT) + def get_action_object(self, instance): + context = {'request': self.context['request']} + # We need to manually instantiate the serializer for scripts + if instance.action_type == EventRuleActionChoices.SCRIPT: + script_name = instance.action_parameters['script_name'] + script = instance.action_object.scripts[script_name]() + return NestedScriptSerializer(script, context=context).data + else: + serializer = get_serializer_for_model( + model=instance.action_object_type.model_class(), + prefix=NESTED_SERIALIZER_PREFIX + ) + return serializer(instance.action_object, context=context).data + + # # Webhooks # class WebhookSerializer(NetBoxModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='extras-api:webhook-detail') - content_types = ContentTypeField( - queryset=ContentType.objects.filter(FeatureQuery('webhooks').get_query()), - many=True - ) class Meta: model = Webhook fields = [ - 'id', 'url', 'display', 'content_types', 'name', 'type_create', 'type_update', 'type_delete', - 'type_job_start', 'type_job_end', 'payload_url', 'enabled', 'http_method', 'http_content_type', - 'additional_headers', 'body_template', 'secret', 'conditions', 'ssl_verification', 'ca_file_path', - 'custom_fields', 'tags', 'created', 'last_updated', + 'id', 'url', 'display', 'name', 'description', 'payload_url', 'http_method', 'http_content_type', + 'additional_headers', 'body_template', 'secret', 'ssl_verification', 'ca_file_path', 'custom_fields', + 'tags', 'created', 'last_updated', ] @@ -85,7 +120,7 @@ class WebhookSerializer(NetBoxModelSerializer): class CustomFieldSerializer(ValidatedModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='extras-api:customfield-detail') content_types = ContentTypeField( - queryset=ContentType.objects.filter(FeatureQuery('custom_fields').get_query()), + queryset=ContentType.objects.with_feature('custom_fields'), many=True ) type = ChoiceField(choices=CustomFieldTypeChoices) @@ -96,15 +131,16 @@ class CustomFieldSerializer(ValidatedModelSerializer): filter_logic = ChoiceField(choices=CustomFieldFilterLogicChoices, required=False) data_type = serializers.SerializerMethodField() choice_set = NestedCustomFieldChoiceSetSerializer(required=False) - ui_visibility = ChoiceField(choices=CustomFieldVisibilityChoices, required=False) + ui_visible = ChoiceField(choices=CustomFieldUIVisibleChoices, required=False) + ui_editable = ChoiceField(choices=CustomFieldUIEditableChoices, required=False) class Meta: model = CustomField fields = [ 'id', 'url', 'display', 'content_types', 'type', 'object_type', 'data_type', 'name', 'label', 'group_name', - 'description', 'required', 'search_weight', 'filter_logic', 'ui_visibility', 'is_cloneable', 'default', - 'weight', 'validation_minimum', 'validation_maximum', 'validation_regex', 'choice_set', 'created', - 'last_updated', + 'description', 'required', 'search_weight', 'filter_logic', 'ui_visible', 'ui_editable', 'is_cloneable', + 'default', 'weight', 'validation_minimum', 'validation_maximum', 'validation_regex', 'choice_set', + 'created', 'last_updated', ] def validate_type(self, value): @@ -151,7 +187,7 @@ class CustomFieldChoiceSetSerializer(ValidatedModelSerializer): class CustomLinkSerializer(ValidatedModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='extras-api:customlink-detail') content_types = ContentTypeField( - queryset=ContentType.objects.filter(FeatureQuery('custom_links').get_query()), + queryset=ContentType.objects.with_feature('custom_links'), many=True ) @@ -170,7 +206,7 @@ class CustomLinkSerializer(ValidatedModelSerializer): class ExportTemplateSerializer(ValidatedModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='extras-api:exporttemplate-detail') content_types = ContentTypeField( - queryset=ContentType.objects.filter(FeatureQuery('export_templates').get_query()), + queryset=ContentType.objects.with_feature('export_templates'), many=True ) data_source = NestedDataSourceSerializer( @@ -215,7 +251,7 @@ class SavedFilterSerializer(ValidatedModelSerializer): class BookmarkSerializer(ValidatedModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='extras-api:bookmark-detail') object_type = ContentTypeField( - queryset=ContentType.objects.filter(FeatureQuery('bookmarks').get_query()), + queryset=ContentType.objects.with_feature('bookmarks'), ) object = serializers.SerializerMethodField(read_only=True) user = NestedUserSerializer() @@ -239,7 +275,7 @@ class BookmarkSerializer(ValidatedModelSerializer): class TagSerializer(ValidatedModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='extras-api:tag-detail') object_types = ContentTypeField( - queryset=ContentType.objects.filter(FeatureQuery('tags').get_query()), + queryset=ContentType.objects.with_feature('tags'), many=True, required=False ) @@ -454,7 +490,7 @@ class ConfigTemplateSerializer(TaggableModelSerializer, ValidatedModelSerializer required=False ) data_file = NestedDataFileSerializer( - read_only=True + required=False ) class Meta: @@ -479,7 +515,7 @@ class ReportSerializer(serializers.Serializer): module = serializers.CharField(max_length=255) name = serializers.CharField(max_length=255) description = serializers.CharField(max_length=255, required=False) - test_methods = serializers.ListField(child=serializers.CharField(max_length=255)) + test_methods = serializers.ListField(child=serializers.CharField(max_length=255), read_only=True) result = NestedJobSerializer() display = serializers.SerializerMethodField(read_only=True) diff --git a/netbox/extras/api/urls.py b/netbox/extras/api/urls.py index 5f2b324e6..1616b8554 100644 --- a/netbox/extras/api/urls.py +++ b/netbox/extras/api/urls.py @@ -7,6 +7,7 @@ from . import views router = NetBoxRouter() router.APIRootView = views.ExtrasRootView +router.register('event-rules', views.EventRuleViewSet) router.register('webhooks', views.WebhookViewSet) router.register('custom-fields', views.CustomFieldViewSet) router.register('custom-field-choice-sets', views.CustomFieldChoiceSetViewSet) diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index 06797891e..e0fca8617 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -37,6 +37,17 @@ class ExtrasRootView(APIRootView): return 'Extras' +# +# EventRules +# + +class EventRuleViewSet(NetBoxModelViewSet): + metadata_class = ContentTypeMetadata + queryset = EventRule.objects.all() + serializer_class = serializers.EventRuleSerializer + filterset_class = filtersets.EventRuleFilterSet + + # # Webhooks # @@ -82,7 +93,10 @@ class CustomFieldChoiceSetViewSet(NetBoxModelViewSet): data = [ {'id': c[0], 'display': c[1]} for c in page ] - return self.get_paginated_response(data) + else: + data = [] + + return self.get_paginated_response(data) # @@ -280,7 +294,7 @@ class ReportViewSet(ViewSet): # Retrieve and run the Report. This will create a new Job. module, report_cls = self._get_report(pk) - report = report_cls() + report = report_cls input_serializer = serializers.ReportInputSerializer( data=request.data, context={'report': report} diff --git a/netbox/extras/choices.py b/netbox/extras/choices.py index 1061bf871..14179fb39 100644 --- a/netbox/extras/choices.py +++ b/netbox/extras/choices.py @@ -53,18 +53,29 @@ class CustomFieldFilterLogicChoices(ChoiceSet): ) -class CustomFieldVisibilityChoices(ChoiceSet): +class CustomFieldUIVisibleChoices(ChoiceSet): - VISIBILITY_READ_WRITE = 'read-write' - VISIBILITY_READ_ONLY = 'read-only' - VISIBILITY_HIDDEN = 'hidden' - VISIBILITY_HIDDEN_IFUNSET = 'hidden-ifunset' + ALWAYS = 'always' + IF_SET = 'if-set' + HIDDEN = 'hidden' CHOICES = ( - (VISIBILITY_READ_WRITE, _('Read/write')), - (VISIBILITY_READ_ONLY, _('Read-only')), - (VISIBILITY_HIDDEN, _('Hidden')), - (VISIBILITY_HIDDEN_IFUNSET, _('Hidden (if unset)')), + (ALWAYS, _('Always'), 'green'), + (IF_SET, _('If set'), 'yellow'), + (HIDDEN, _('Hidden'), 'gray'), + ) + + +class CustomFieldUIEditableChoices(ChoiceSet): + + YES = 'yes' + NO = 'no' + HIDDEN = 'hidden' + + CHOICES = ( + (YES, _('Yes'), 'green'), + (NO, _('No'), 'red'), + (HIDDEN, _('Hidden'), 'gray'), ) @@ -244,3 +255,54 @@ class ChangeActionChoices(ChoiceSet): (ACTION_UPDATE, _('Update'), 'blue'), (ACTION_DELETE, _('Delete'), 'red'), ) + + +# +# Dashboard widgets +# + +class DashboardWidgetColorChoices(ChoiceSet): + BLUE = 'blue' + INDIGO = 'indigo' + PURPLE = 'purple' + PINK = 'pink' + RED = 'red' + ORANGE = 'orange' + YELLOW = 'yellow' + GREEN = 'green' + TEAL = 'teal' + CYAN = 'cyan' + GRAY = 'gray' + BLACK = 'black' + WHITE = 'white' + + CHOICES = ( + (BLUE, _('Blue')), + (INDIGO, _('Indigo')), + (PURPLE, _('Purple')), + (PINK, _('Pink')), + (RED, _('Red')), + (ORANGE, _('Orange')), + (YELLOW, _('Yellow')), + (GREEN, _('Green')), + (TEAL, _('Teal')), + (CYAN, _('Cyan')), + (GRAY, _('Gray')), + (BLACK, _('Black')), + (WHITE, _('White')), + ) + + +# +# Event Rules +# + +class EventRuleActionChoices(ChoiceSet): + + WEBHOOK = 'webhook' + SCRIPT = 'script' + + CHOICES = ( + (WEBHOOK, _('Webhook')), + (SCRIPT, _('Script')), + ) diff --git a/netbox/extras/context_managers.py b/netbox/extras/context_managers.py index 32323999e..8de47465e 100644 --- a/netbox/extras/context_managers.py +++ b/netbox/extras/context_managers.py @@ -1,25 +1,25 @@ from contextlib import contextmanager -from netbox.context import current_request, webhooks_queue -from .webhooks import flush_webhooks +from netbox.context import current_request, events_queue +from .events import flush_events @contextmanager -def change_logging(request): +def event_tracking(request): """ - Enable change logging by connecting the appropriate signals to their receivers before code is run, and - disconnecting them afterward. + Queue interesting events in memory while processing a request, then flush that queue for processing by the + events pipline before returning the response. :param request: WSGIRequest object with a unique `id` set """ current_request.set(request) - webhooks_queue.set([]) + events_queue.set([]) yield # Flush queued webhooks to RQ - flush_webhooks(webhooks_queue.get()) + flush_events(events_queue.get()) # Clear context vars current_request.set(None) - webhooks_queue.set([]) + events_queue.set([]) diff --git a/netbox/extras/dashboard/forms.py b/netbox/extras/dashboard/forms.py index 1e9f15408..ab708228c 100644 --- a/netbox/extras/dashboard/forms.py +++ b/netbox/extras/dashboard/forms.py @@ -2,9 +2,9 @@ from django import forms from django.urls import reverse_lazy from django.utils.translation import gettext as _ +from extras.choices import DashboardWidgetColorChoices from netbox.registry import registry from utilities.forms import BootstrapMixin, add_blank_choice -from utilities.choices import ButtonColorChoices __all__ = ( 'DashboardWidgetAddForm', @@ -21,7 +21,7 @@ class DashboardWidgetForm(BootstrapMixin, forms.Form): required=False ) color = forms.ChoiceField( - choices=add_blank_choice(ButtonColorChoices), + choices=add_blank_choice(DashboardWidgetColorChoices), required=False, ) diff --git a/netbox/extras/dashboard/widgets.py b/netbox/extras/dashboard/widgets.py index 3d6275f45..8cfbb4c61 100644 --- a/netbox/extras/dashboard/widgets.py +++ b/netbox/extras/dashboard/widgets.py @@ -7,15 +7,14 @@ import feedparser import requests from django import forms from django.conf import settings -from django.contrib.contenttypes.models import ContentType from django.core.cache import cache -from django.db.models import Q from django.template.loader import render_to_string from django.urls import NoReverseMatch, resolve, reverse from django.utils.translation import gettext as _ +from core.models import ContentType from extras.choices import BookmarkOrderingChoices -from extras.utils import FeatureQuery +from utilities.choices import ButtonColorChoices from utilities.forms import BootstrapMixin from utilities.permissions import get_permission_for_model from utilities.templatetags.builtins.filters import render_markdown @@ -33,13 +32,17 @@ __all__ = ( ) -def get_content_type_labels(): +def get_object_type_choices(): return [ (content_type_identifier(ct), content_type_name(ct)) - for ct in ContentType.objects.filter( - FeatureQuery('export_templates').get_query() | Q(app_label='extras', model='objectchange') | - Q(app_label='extras', model='configcontext') - ).order_by('app_label', 'model') + for ct in ContentType.objects.public().order_by('app_label', 'model') + ] + + +def get_bookmarks_object_type_choices(): + return [ + (content_type_identifier(ct), content_type_name(ct)) + for ct in ContentType.objects.with_feature('bookmarks').order_by('app_label', 'model') ] @@ -115,6 +118,22 @@ class DashboardWidget: def name(self): return f'{self.__class__.__module__.split(".")[0]}.{self.__class__.__name__}' + @property + def fg_color(self): + """ + Return the appropriate foreground (text) color for the widget's color. + """ + if self.color in ( + ButtonColorChoices.CYAN, + ButtonColorChoices.GRAY, + ButtonColorChoices.GREY, + ButtonColorChoices.TEAL, + ButtonColorChoices.WHITE, + ButtonColorChoices.YELLOW, + ): + return ButtonColorChoices.BLACK + return ButtonColorChoices.WHITE + @property def form_data(self): return { @@ -146,7 +165,7 @@ class ObjectCountsWidget(DashboardWidget): class ConfigForm(WidgetConfigForm): models = forms.MultipleChoiceField( - choices=get_content_type_labels + choices=get_object_type_choices ) filters = forms.JSONField( required=False, @@ -195,7 +214,7 @@ class ObjectListWidget(DashboardWidget): class ConfigForm(WidgetConfigForm): model = forms.ChoiceField( - choices=get_content_type_labels + choices=get_object_type_choices ) page_size = forms.IntegerField( required=False, @@ -331,8 +350,7 @@ class BookmarksWidget(DashboardWidget): class ConfigForm(WidgetConfigForm): object_types = forms.MultipleChoiceField( - # TODO: Restrict the choices by FeatureQuery('bookmarks') - choices=get_content_type_labels, + choices=get_bookmarks_object_type_choices, required=False ) order_by = forms.ChoiceField( @@ -346,13 +364,16 @@ class BookmarksWidget(DashboardWidget): def render(self, request): from extras.models import Bookmark - bookmarks = Bookmark.objects.filter(user=request.user).order_by(self.config['order_by']) - if object_types := self.config.get('object_types'): - models = get_models_from_content_types(object_types) - conent_types = ContentType.objects.get_for_models(*models).values() - bookmarks = bookmarks.filter(object_type__in=conent_types) - if max_items := self.config.get('max_items'): - bookmarks = bookmarks[:max_items] + if request.user.is_anonymous: + bookmarks = list() + else: + bookmarks = Bookmark.objects.filter(user=request.user).order_by(self.config['order_by']) + if object_types := self.config.get('object_types'): + models = get_models_from_content_types(object_types) + conent_types = ContentType.objects.get_for_models(*models).values() + bookmarks = bookmarks.filter(object_type__in=conent_types) + if max_items := self.config.get('max_items'): + bookmarks = bookmarks[:max_items] return render_to_string(self.template_name, { 'bookmarks': bookmarks, diff --git a/netbox/extras/events.py b/netbox/extras/events.py new file mode 100644 index 000000000..6d0654929 --- /dev/null +++ b/netbox/extras/events.py @@ -0,0 +1,178 @@ +import logging + +from django.conf import settings +from django.contrib.auth import get_user_model +from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ObjectDoesNotExist +from django.utils import timezone +from django.utils.module_loading import import_string +from django_rq import get_queue + +from core.models import Job +from netbox.config import get_config +from netbox.constants import RQ_QUEUE_DEFAULT +from netbox.registry import registry +from utilities.api import get_serializer_for_model +from utilities.rqworker import get_rq_retry +from utilities.utils import serialize_object +from .choices import * +from .models import EventRule, ScriptModule + +logger = logging.getLogger('netbox.events_processor') + + +def serialize_for_event(instance): + """ + Return a serialized representation of the given instance suitable for use in a queued event. + """ + serializer_class = get_serializer_for_model(instance.__class__) + serializer_context = { + 'request': None, + } + serializer = serializer_class(instance, context=serializer_context) + + return serializer.data + + +def get_snapshots(instance, action): + snapshots = { + 'prechange': getattr(instance, '_prechange_snapshot', None), + 'postchange': None, + } + if action != ObjectChangeActionChoices.ACTION_DELETE: + # Use model's serialize_object() method if defined; fall back to serialize_object() utility function + if hasattr(instance, 'serialize_object'): + snapshots['postchange'] = instance.serialize_object() + else: + snapshots['postchange'] = serialize_object(instance) + + return snapshots + + +def enqueue_object(queue, instance, user, request_id, action): + """ + Enqueue a serialized representation of a created/updated/deleted object for the processing of + events once the request has completed. + """ + # Determine whether this type of object supports event rules + app_label = instance._meta.app_label + model_name = instance._meta.model_name + if model_name not in registry['model_features']['event_rules'].get(app_label, []): + return + + queue.append({ + 'content_type': ContentType.objects.get_for_model(instance), + 'object_id': instance.pk, + 'event': action, + 'data': serialize_for_event(instance), + 'snapshots': get_snapshots(instance, action), + 'username': user.username, + 'request_id': request_id + }) + + +def process_event_rules(event_rules, model_name, event, data, username, snapshots=None, request_id=None): + try: + user = get_user_model().objects.get(username=username) + except ObjectDoesNotExist: + user = None + + for event_rule in event_rules: + + # Evaluate event rule conditions (if any) + if not event_rule.eval_conditions(data): + return + + # Webhooks + if event_rule.action_type == EventRuleActionChoices.WEBHOOK: + + # Select the appropriate RQ queue + queue_name = get_config().QUEUE_MAPPINGS.get('webhook', RQ_QUEUE_DEFAULT) + rq_queue = get_queue(queue_name) + + # Compile the task parameters + params = { + "event_rule": event_rule, + "model_name": model_name, + "event": event, + "data": data, + "snapshots": snapshots, + "timestamp": timezone.now().isoformat(), + "username": username, + "retry": get_rq_retry() + } + if snapshots: + params["snapshots"] = snapshots + if request_id: + params["request_id"] = request_id + + # Enqueue the task + rq_queue.enqueue( + "extras.webhooks.send_webhook", + **params + ) + + # Scripts + elif event_rule.action_type == EventRuleActionChoices.SCRIPT: + # Resolve the script from action parameters + script_module = event_rule.action_object + script_name = event_rule.action_parameters['script_name'] + script = script_module.scripts[script_name]() + + # Enqueue a Job to record the script's execution + Job.enqueue( + "extras.scripts.run_script", + instance=script_module, + name=script.class_name, + user=user, + data=data + ) + + else: + raise ValueError(f"Unknown action type for an event rule: {event_rule.action_type}") + + +def process_event_queue(events): + """ + Flush a list of object representation to RQ for EventRule processing. + """ + events_cache = { + 'type_create': {}, + 'type_update': {}, + 'type_delete': {}, + } + + for data in events: + action_flag = { + ObjectChangeActionChoices.ACTION_CREATE: 'type_create', + ObjectChangeActionChoices.ACTION_UPDATE: 'type_update', + ObjectChangeActionChoices.ACTION_DELETE: 'type_delete', + }[data['event']] + content_type = data['content_type'] + + # Cache applicable Event Rules + if content_type not in events_cache[action_flag]: + events_cache[action_flag][content_type] = EventRule.objects.filter( + **{action_flag: True}, + content_types=content_type, + enabled=True + ) + event_rules = events_cache[action_flag][content_type] + + process_event_rules( + event_rules, content_type.model, data['event'], data['data'], data['username'], + snapshots=data['snapshots'], request_id=data['request_id'] + ) + + +def flush_events(queue): + """ + Flush a list of object representation to RQ for webhook processing. + """ + if queue: + for name in settings.EVENTS_PIPELINE: + try: + func = import_string(name) + func(queue) + except Exception as e: + logger.error(f"Cannot import events pipeline {name} error: {e}") diff --git a/netbox/extras/filtersets.py b/netbox/extras/filtersets.py index fec067263..730499956 100644 --- a/netbox/extras/filtersets.py +++ b/netbox/extras/filtersets.py @@ -17,12 +17,12 @@ from .models import * __all__ = ( 'BookmarkFilterSet', 'ConfigContextFilterSet', - 'ConfigRevisionFilterSet', 'ConfigTemplateFilterSet', 'ContentTypeFilterSet', 'CustomFieldChoiceSetFilterSet', 'CustomFieldFilterSet', 'CustomLinkFilterSet', + 'EventRuleFilterSet', 'ExportTemplateFilterSet', 'ImageAttachmentFilterSet', 'JournalEntryFilterSet', @@ -39,19 +39,18 @@ class WebhookFilterSet(NetBoxModelFilterSet): method='search', label=_('Search'), ) - content_type_id = MultiValueNumberFilter( - field_name='content_types__id' - ) - content_types = ContentTypeFilter() http_method = django_filters.MultipleChoiceFilter( choices=WebhookHttpMethodChoices ) + payload_url = MultiValueCharFilter( + lookup_expr='icontains' + ) class Meta: model = Webhook fields = [ - 'id', 'name', 'type_create', 'type_update', 'type_delete', 'type_job_start', 'type_job_end', 'payload_url', - 'enabled', 'http_method', 'http_content_type', 'secret', 'ssl_verification', 'ca_file_path', + 'id', 'name', 'payload_url', 'http_method', 'http_content_type', 'secret', 'ssl_verification', + 'ca_file_path', 'description', ] def search(self, queryset, name, value): @@ -59,10 +58,43 @@ class WebhookFilterSet(NetBoxModelFilterSet): return queryset return queryset.filter( Q(name__icontains=value) | + Q(description__icontains=value) | Q(payload_url__icontains=value) ) +class EventRuleFilterSet(NetBoxModelFilterSet): + q = django_filters.CharFilter( + method='search', + label=_('Search'), + ) + content_type_id = MultiValueNumberFilter( + field_name='content_types__id' + ) + content_types = ContentTypeFilter() + action_type = django_filters.MultipleChoiceFilter( + choices=EventRuleActionChoices + ) + action_object_type = ContentTypeFilter() + action_object_id = MultiValueNumberFilter() + + class Meta: + model = EventRule + fields = [ + 'id', 'name', 'type_create', 'type_update', 'type_delete', 'type_job_start', 'type_job_end', 'enabled', + 'action_type', 'description', + ] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) | + Q(comments__icontains=value) + ) + + class CustomFieldFilterSet(BaseFilterSet): q = django_filters.CharFilter( method='search', @@ -87,8 +119,8 @@ class CustomFieldFilterSet(BaseFilterSet): class Meta: model = CustomField fields = [ - 'id', 'content_types', 'name', 'group_name', 'required', 'search_weight', 'filter_logic', 'ui_visibility', - 'weight', 'is_cloneable', 'description', + 'id', 'content_types', 'name', 'group_name', 'required', 'search_weight', 'filter_logic', 'ui_visible', + 'ui_editable', 'weight', 'is_cloneable', 'description', ] def search(self, queryset, name, value): @@ -122,8 +154,7 @@ class CustomFieldChoiceSetFilterSet(BaseFilterSet): return queryset return queryset.filter( Q(name__icontains=value) | - Q(description__icontains=value) | - Q(extra_choices__contains=value) + Q(description__icontains=value) ) def filter_by_choice(self, queryset, name, value): @@ -513,7 +544,7 @@ class ConfigContextFilterSet(ChangeLoggedModelFilterSet): class Meta: model = ConfigContext - fields = ['id', 'name', 'is_active', 'data_synced'] + fields = ['id', 'name', 'is_active', 'data_synced', 'description'] def search(self, queryset, name, value): if not value.strip(): @@ -625,27 +656,3 @@ class ContentTypeFilterSet(django_filters.FilterSet): Q(app_label__icontains=value) | Q(model__icontains=value) ) - - -# -# ConfigRevisions -# - -class ConfigRevisionFilterSet(BaseFilterSet): - q = django_filters.CharFilter( - method='search', - label=_('Search'), - ) - - class Meta: - model = ConfigRevision - fields = [ - 'id', - ] - - def search(self, queryset, name, value): - if not value.strip(): - return queryset - return queryset.filter( - Q(comment__icontains=value) - ) diff --git a/netbox/extras/forms/__init__.py b/netbox/extras/forms/__init__.py index e203bee46..8bebaeec2 100644 --- a/netbox/extras/forms/__init__.py +++ b/netbox/extras/forms/__init__.py @@ -3,5 +3,4 @@ from .filtersets import * from .bulk_edit import * from .bulk_import import * from .misc import * -from .mixins import * from .scripts import * diff --git a/netbox/extras/forms/bulk_edit.py b/netbox/extras/forms/bulk_edit.py index 821ce7eb2..9479fef99 100644 --- a/netbox/extras/forms/bulk_edit.py +++ b/netbox/extras/forms/bulk_edit.py @@ -14,6 +14,7 @@ __all__ = ( 'CustomFieldBulkEditForm', 'CustomFieldChoiceSetBulkEditForm', 'CustomLinkBulkEditForm', + 'EventRuleBulkEditForm', 'ExportTemplateBulkEditForm', 'JournalEntryBulkEditForm', 'SavedFilterBulkEditForm', @@ -48,11 +49,15 @@ class CustomFieldBulkEditForm(BulkEditForm): queryset=CustomFieldChoiceSet.objects.all(), required=False ) - ui_visibility = forms.ChoiceField( - label=_("UI visibility"), - choices=add_blank_choice(CustomFieldVisibilityChoices), - required=False, - initial='' + ui_visible = forms.ChoiceField( + label=_("UI visible"), + choices=add_blank_choice(CustomFieldUIVisibleChoices), + required=False + ) + ui_editable = forms.ChoiceField( + label=_("UI editable"), + choices=add_blank_choice(CustomFieldUIEditableChoices), + required=False ) is_cloneable = forms.NullBooleanField( label=_('Is cloneable'), @@ -173,6 +178,44 @@ class WebhookBulkEditForm(NetBoxModelBulkEditForm): queryset=Webhook.objects.all(), widget=forms.MultipleHiddenInput ) + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + http_method = forms.ChoiceField( + choices=add_blank_choice(WebhookHttpMethodChoices), + required=False, + label=_('HTTP method') + ) + payload_url = forms.CharField( + required=False, + label=_('Payload URL') + ) + ssl_verification = forms.NullBooleanField( + required=False, + widget=BulkEditNullBooleanSelect(), + label=_('SSL verification') + ) + secret = forms.CharField( + label=_('Secret'), + required=False + ) + ca_file_path = forms.CharField( + required=False, + label=_('CA file path') + ) + + nullable_fields = ('secret', 'ca_file_path') + + +class EventRuleBulkEditForm(NetBoxModelBulkEditForm): + model = EventRule + + pk = forms.ModelMultipleChoiceField( + queryset=EventRule.objects.all(), + widget=forms.MultipleHiddenInput + ) enabled = forms.NullBooleanField( label=_('Enabled'), required=False, @@ -203,30 +246,8 @@ class WebhookBulkEditForm(NetBoxModelBulkEditForm): required=False, widget=BulkEditNullBooleanSelect() ) - http_method = forms.ChoiceField( - choices=add_blank_choice(WebhookHttpMethodChoices), - required=False, - label=_('HTTP method') - ) - payload_url = forms.CharField( - required=False, - label=_('Payload URL') - ) - ssl_verification = forms.NullBooleanField( - required=False, - widget=BulkEditNullBooleanSelect(), - label=_('SSL verification') - ) - secret = forms.CharField( - label=_('Secret'), - required=False - ) - ca_file_path = forms.CharField( - required=False, - label=_('CA file path') - ) - nullable_fields = ('secret', 'conditions', 'ca_file_path') + nullable_fields = ('description', 'conditions',) class TagBulkEditForm(BulkEditForm): diff --git a/netbox/extras/forms/bulk_import.py b/netbox/extras/forms/bulk_import.py index 466baa241..f8d3ffb7f 100644 --- a/netbox/extras/forms/bulk_import.py +++ b/netbox/extras/forms/bulk_import.py @@ -1,12 +1,14 @@ +import re + from django import forms -from django.contrib.contenttypes.models import ContentType from django.contrib.postgres.forms import SimpleArrayField +from django.core.exceptions import ObjectDoesNotExist from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ +from core.models import ContentType from extras.choices import * from extras.models import * -from extras.utils import FeatureQuery from netbox.forms import NetBoxModelImportForm from utilities.forms import CSVModelForm from utilities.forms.fields import ( @@ -18,6 +20,7 @@ __all__ = ( 'CustomFieldChoiceSetImportForm', 'CustomFieldImportForm', 'CustomLinkImportForm', + 'EventRuleImportForm', 'ExportTemplateImportForm', 'JournalEntryImportForm', 'SavedFilterImportForm', @@ -29,8 +32,7 @@ __all__ = ( class CustomFieldImportForm(CSVModelForm): content_types = CSVMultipleContentTypeField( label=_('Content types'), - queryset=ContentType.objects.all(), - limit_choices_to=FeatureQuery('custom_fields'), + queryset=ContentType.objects.with_feature('custom_fields'), help_text=_("One or more assigned object types") ) type = CSVChoiceField( @@ -40,8 +42,7 @@ class CustomFieldImportForm(CSVModelForm): ) object_type = CSVContentTypeField( label=_('Object type'), - queryset=ContentType.objects.all(), - limit_choices_to=FeatureQuery('custom_fields'), + queryset=ContentType.objects.public(), required=False, help_text=_("Object type (for object or multi-object fields)") ) @@ -52,10 +53,17 @@ class CustomFieldImportForm(CSVModelForm): required=False, help_text=_('Choice set (for selection fields)') ) - ui_visibility = CSVChoiceField( - label=_('UI visibility'), - choices=CustomFieldVisibilityChoices, - help_text=_('How the custom field is displayed in the user interface') + ui_visible = CSVChoiceField( + label=_('UI visible'), + choices=CustomFieldUIVisibleChoices, + required=False, + help_text=_('Whether the custom field is displayed in the UI') + ) + ui_editable = CSVChoiceField( + label=_('UI editable'), + choices=CustomFieldUIEditableChoices, + required=False, + help_text=_('Whether the custom field is editable in the UI') ) class Meta: @@ -63,7 +71,7 @@ class CustomFieldImportForm(CSVModelForm): fields = ( 'name', 'label', 'group_name', 'type', 'content_types', 'object_type', 'required', 'description', 'search_weight', 'filter_logic', 'default', 'choice_set', 'weight', 'validation_minimum', - 'validation_maximum', 'validation_regex', 'ui_visibility', 'is_cloneable', + 'validation_maximum', 'validation_regex', 'ui_visible', 'ui_editable', 'is_cloneable', ) @@ -76,7 +84,10 @@ class CustomFieldChoiceSetImportForm(CSVModelForm): extra_choices = SimpleArrayField( base_field=forms.CharField(), required=False, - help_text=_('Comma-separated list of field choices') + help_text=_( + 'Quoted string of comma-separated field choices with optional labels separated by colon: ' + '"choice1:First Choice,choice2:Second Choice"' + ) ) class Meta: @@ -85,12 +96,24 @@ class CustomFieldChoiceSetImportForm(CSVModelForm): 'name', 'description', 'extra_choices', 'order_alphabetically', ) + def clean_extra_choices(self): + if isinstance(self.cleaned_data['extra_choices'], list): + data = [] + for line in self.cleaned_data['extra_choices']: + try: + value, label = re.split(r'(?00ff00)')), + 'color': mark_safe(_('RGB color in hexadecimal. Example:') + ' 00ff00'), } diff --git a/netbox/extras/forms/filtersets.py b/netbox/extras/forms/filtersets.py index 1ea361a7c..c91e3b8c6 100644 --- a/netbox/extras/forms/filtersets.py +++ b/netbox/extras/forms/filtersets.py @@ -1,14 +1,13 @@ from django import forms from django.contrib.auth import get_user_model -from django.contrib.contenttypes.models import ContentType from django.utils.translation import gettext_lazy as _ -from core.models import DataFile, DataSource +from core.models import ContentType, DataFile, DataSource from dcim.models import DeviceRole, DeviceType, Location, Platform, Region, Site, SiteGroup from extras.choices import * from extras.models import * -from extras.utils import FeatureQuery from netbox.forms.base import NetBoxModelFilterSetForm +from netbox.forms.mixins import SavedFiltersMixin from tenancy.models import Tenant, TenantGroup from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm, add_blank_choice from utilities.forms.fields import ( @@ -16,15 +15,14 @@ from utilities.forms.fields import ( ) from utilities.forms.widgets import APISelectMultiple, DateTimePicker from virtualization.models import Cluster, ClusterGroup, ClusterType -from .mixins import * __all__ = ( 'ConfigContextFilterForm', - 'ConfigRevisionFilterForm', 'ConfigTemplateFilterForm', 'CustomFieldChoiceSetFilterForm', 'CustomFieldFilterForm', 'CustomLinkFilterForm', + 'EventRuleFilterForm', 'ExportTemplateFilterForm', 'ImageAttachmentFilterForm', 'JournalEntryFilterForm', @@ -40,12 +38,12 @@ class CustomFieldFilterForm(SavedFiltersMixin, FilterForm): fieldsets = ( (None, ('q', 'filter_id')), (_('Attributes'), ( - 'type', 'content_type_id', 'group_name', 'weight', 'required', 'choice_set_id', 'ui_visibility', + 'type', 'content_type_id', 'group_name', 'weight', 'required', 'choice_set_id', 'ui_visible', 'ui_editable', 'is_cloneable', )), ) content_type_id = ContentTypeMultipleChoiceField( - queryset=ContentType.objects.filter(FeatureQuery('custom_fields').get_query()), + queryset=ContentType.objects.with_feature('custom_fields'), required=False, label=_('Object type') ) @@ -74,10 +72,15 @@ class CustomFieldFilterForm(SavedFiltersMixin, FilterForm): required=False, label=_('Choice set') ) - ui_visibility = forms.ChoiceField( - choices=add_blank_choice(CustomFieldVisibilityChoices), + ui_visible = forms.ChoiceField( + choices=add_blank_choice(CustomFieldUIVisibleChoices), required=False, - label=_('UI visibility') + label=_('UI visible') + ) + ui_editable = forms.ChoiceField( + choices=add_blank_choice(CustomFieldUIEditableChoices), + required=False, + label=_('UI editable') ) is_cloneable = forms.NullBooleanField( label=_('Is cloneable'), @@ -109,7 +112,7 @@ class CustomLinkFilterForm(SavedFiltersMixin, FilterForm): ) content_types = ContentTypeMultipleChoiceField( label=_('Content types'), - queryset=ContentType.objects.filter(FeatureQuery('custom_links').get_query()), + queryset=ContentType.objects.with_feature('custom_links'), required=False ) enabled = forms.NullBooleanField( @@ -136,7 +139,7 @@ class ExportTemplateFilterForm(SavedFiltersMixin, FilterForm): fieldsets = ( (None, ('q', 'filter_id')), (_('Data'), ('data_source_id', 'data_file_id')), - (_('Attributes'), ('content_types', 'mime_type', 'file_extension', 'as_attachment')), + (_('Attributes'), ('content_type_id', 'mime_type', 'file_extension', 'as_attachment')), ) data_source_id = DynamicModelMultipleChoiceField( queryset=DataSource.objects.all(), @@ -151,10 +154,10 @@ class ExportTemplateFilterForm(SavedFiltersMixin, FilterForm): 'source_id': '$data_source_id' } ) - content_types = ContentTypeMultipleChoiceField( - label=_('Content types'), - queryset=ContentType.objects.filter(FeatureQuery('export_templates').get_query()), - required=False + content_type_id = ContentTypeMultipleChoiceField( + queryset=ContentType.objects.with_feature('export_templates'), + required=False, + label=_('Content types') ) mime_type = forms.CharField( required=False, @@ -180,7 +183,7 @@ class ImageAttachmentFilterForm(SavedFiltersMixin, FilterForm): ) content_type_id = ContentTypeChoiceField( label=_('Content type'), - queryset=ContentType.objects.filter(FeatureQuery('image_attachments').get_query()), + queryset=ContentType.objects.with_feature('image_attachments'), required=False ) name = forms.CharField( @@ -196,7 +199,7 @@ class SavedFilterFilterForm(SavedFiltersMixin, FilterForm): ) content_types = ContentTypeMultipleChoiceField( label=_('Content types'), - queryset=ContentType.objects.filter(FeatureQuery('export_templates').get_query()), + queryset=ContentType.objects.public(), required=False ) enabled = forms.NullBooleanField( @@ -221,23 +224,45 @@ class SavedFilterFilterForm(SavedFiltersMixin, FilterForm): class WebhookFilterForm(NetBoxModelFilterSetForm): model = Webhook - tag = TagFilterField(model) - fieldsets = ( (None, ('q', 'filter_id', 'tag')), - (_('Attributes'), ('content_type_id', 'http_method', 'enabled')), - (_('Events'), ('type_create', 'type_update', 'type_delete', 'type_job_start', 'type_job_end')), + (_('Attributes'), ('payload_url', 'http_method', 'http_content_type')), ) - content_type_id = ContentTypeMultipleChoiceField( - queryset=ContentType.objects.filter(FeatureQuery('webhooks').get_query()), - required=False, - label=_('Object type') + http_content_type = forms.CharField( + label=_('HTTP content type'), + required=False + ) + payload_url = forms.CharField( + label=_('Payload URL'), + required=False ) http_method = forms.MultipleChoiceField( choices=WebhookHttpMethodChoices, required=False, label=_('HTTP method') ) + tag = TagFilterField(model) + + +class EventRuleFilterForm(NetBoxModelFilterSetForm): + model = EventRule + tag = TagFilterField(model) + + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Attributes'), ('content_type_id', 'action_type', 'enabled')), + (_('Events'), ('type_create', 'type_update', 'type_delete', 'type_job_start', 'type_job_end')), + ) + content_type_id = ContentTypeMultipleChoiceField( + queryset=ContentType.objects.with_feature('event_rules'), + required=False, + label=_('Object type') + ) + action_type = forms.ChoiceField( + choices=add_blank_choice(EventRuleActionChoices), + required=False, + label=_('Action type') + ) enabled = forms.NullBooleanField( label=_('Enabled'), required=False, @@ -285,12 +310,12 @@ class WebhookFilterForm(NetBoxModelFilterSetForm): class TagFilterForm(SavedFiltersMixin, FilterForm): model = Tag content_type_id = ContentTypeMultipleChoiceField( - queryset=ContentType.objects.filter(FeatureQuery('tags').get_query()), + queryset=ContentType.objects.with_feature('tags'), required=False, label=_('Tagged object type') ) for_object_type_id = ContentTypeChoiceField( - queryset=ContentType.objects.filter(FeatureQuery('tags').get_query()), + queryset=ContentType.objects.with_feature('tags'), required=False, label=_('Allowed object type') ) @@ -496,9 +521,3 @@ class ObjectChangeFilterForm(SavedFiltersMixin, FilterForm): api_url='/api/extras/content-types/', ) ) - - -class ConfigRevisionFilterForm(SavedFiltersMixin, FilterForm): - fieldsets = ( - (None, ('q', 'filter_id')), - ) diff --git a/netbox/extras/forms/model_forms.py b/netbox/extras/forms/model_forms.py index 47bde65f9..346225c8a 100644 --- a/netbox/extras/forms/model_forms.py +++ b/netbox/extras/forms/model_forms.py @@ -1,36 +1,34 @@ import json +import re from django import forms -from django.conf import settings -from django.db.models import Q from django.contrib.contenttypes.models import ContentType +from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ from core.forms.mixins import SyncedDataMixin +from core.models import ContentType from dcim.models import DeviceRole, DeviceType, Location, Platform, Region, Site, SiteGroup from extras.choices import * from extras.models import * -from extras.utils import FeatureQuery -from netbox.config import get_config, PARAMS from netbox.forms import NetBoxModelForm from tenancy.models import Tenant, TenantGroup -from utilities.forms import BootstrapMixin, add_blank_choice +from utilities.forms import BootstrapMixin, add_blank_choice, get_field_value from utilities.forms.fields import ( CommentField, ContentTypeChoiceField, ContentTypeMultipleChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, JSONField, SlugField, ) -from utilities.forms.widgets import ChoicesWidget +from utilities.forms.widgets import ChoicesWidget, HTMXSelect from virtualization.models import Cluster, ClusterGroup, ClusterType - __all__ = ( 'BookmarkForm', 'ConfigContextForm', - 'ConfigRevisionForm', 'ConfigTemplateForm', 'CustomFieldChoiceSetForm', 'CustomFieldForm', 'CustomLinkForm', + 'EventRuleForm', 'ExportTemplateForm', 'ImageAttachmentForm', 'JournalEntryForm', @@ -43,14 +41,11 @@ __all__ = ( class CustomFieldForm(BootstrapMixin, forms.ModelForm): content_types = ContentTypeMultipleChoiceField( label=_('Content types'), - queryset=ContentType.objects.all(), - limit_choices_to=FeatureQuery('custom_fields'), + queryset=ContentType.objects.with_feature('custom_fields') ) object_type = ContentTypeChoiceField( label=_('Object type'), - queryset=ContentType.objects.all(), - # TODO: Come up with a canonical way to register suitable models - limit_choices_to=FeatureQuery('webhooks').get_query() | Q(app_label='auth', model__in=['user', 'group']), + queryset=ContentType.objects.public(), required=False, help_text=_("Type of the related object (for object/multi-object fields only)") ) @@ -63,7 +58,7 @@ class CustomFieldForm(BootstrapMixin, forms.ModelForm): (_('Custom Field'), ( 'content_types', 'name', 'label', 'group_name', 'type', 'object_type', 'required', 'description', )), - (_('Behavior'), ('search_weight', 'filter_logic', 'ui_visibility', 'weight', 'is_cloneable')), + (_('Behavior'), ('search_weight', 'filter_logic', 'ui_visible', 'ui_editable', 'weight', 'is_cloneable')), (_('Values'), ('default', 'choice_set')), (_('Validation'), ('validation_minimum', 'validation_maximum', 'validation_regex')), ) @@ -75,13 +70,15 @@ class CustomFieldForm(BootstrapMixin, forms.ModelForm): 'type': _( "The type of data stored in this field. For object/multi-object fields, select the related object " "type below." - ) + ), + 'description': _("This will be displayed as help text for the form field. Markdown is supported.") } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - # Disable changing the type of a CustomField as it almost universally causes errors if custom field data is already present. + # Disable changing the type of a CustomField as it almost universally causes errors if custom field data + # is already present. if self.instance.pk: self.fields['type'].disabled = True @@ -90,21 +87,35 @@ class CustomFieldChoiceSetForm(BootstrapMixin, forms.ModelForm): extra_choices = forms.CharField( widget=ChoicesWidget(), required=False, - help_text=_( + help_text=mark_safe(_( 'Enter one choice per line. An optional label may be specified for each choice by appending it with a ' - 'comma (for example, "choice1,First Choice").' - ) + 'colon. Example:' + ) + ' choice1:First Choice') ) class Meta: model = CustomFieldChoiceSet fields = ('name', 'description', 'base_choices', 'extra_choices', 'order_alphabetically') + def __init__(self, *args, initial=None, **kwargs): + super().__init__(*args, initial=initial, **kwargs) + + # Escape colons in extra_choices + if 'extra_choices' in self.initial and self.initial['extra_choices']: + choices = [] + for choice in self.initial['extra_choices']: + choice = (choice[0].replace(':', '\\:'), choice[1].replace(':', '\\:')) + choices.append(choice) + + self.initial['extra_choices'] = choices + def clean_extra_choices(self): data = [] for line in self.cleaned_data['extra_choices'].splitlines(): try: - value, label = line.split(',', maxsplit=1) + value, label = re.split(r'(?JSON format.') + ) + action_data = JSONField( + required=False, + help_text=_('Enter parameters to pass to the action in JSON format.') + ) + + fieldsets = ( + (_('Event Rule'), ('name', 'description', 'content_types', 'enabled', 'tags')), + (_('Events'), ('type_create', 'type_update', 'type_delete', 'type_job_start', 'type_job_end')), + (_('Conditions'), ('conditions',)), + (_('Action'), ( + 'action_type', 'action_choice', 'action_object_type', 'action_object_id', 'action_data', + )), + ) + + class Meta: + model = EventRule + fields = ( + 'content_types', 'name', 'description', 'type_create', 'type_update', 'type_delete', 'type_job_start', + 'type_job_end', 'enabled', 'conditions', 'action_type', 'action_object_type', 'action_object_id', + 'action_data', 'comments', 'tags' + ) labels = { 'type_create': _('Creations'), 'type_update': _('Updates'), @@ -247,18 +288,90 @@ class WebhookForm(NetBoxModelForm): 'type_job_end': _('Job terminations'), } widgets = { - 'additional_headers': forms.Textarea(attrs={'class': 'font-monospace'}), - 'body_template': forms.Textarea(attrs={'class': 'font-monospace'}), 'conditions': forms.Textarea(attrs={'class': 'font-monospace'}), + 'action_type': HTMXSelect(), + 'action_object_type': forms.HiddenInput, + 'action_object_id': forms.HiddenInput, } + def init_script_choice(self): + choices = [] + for module in ScriptModule.objects.all(): + scripts = [] + for script_name in module.scripts.keys(): + name = f"{str(module.pk)}:{script_name}" + scripts.append((name, script_name)) + if scripts: + choices.append((str(module), scripts)) + self.fields['action_choice'].choices = choices + + if self.instance.action_type == EventRuleActionChoices.SCRIPT and self.instance.action_parameters: + scriptmodule_id = self.instance.action_object_id + script_name = self.instance.action_parameters.get('script_name') + self.fields['action_choice'].initial = f'{scriptmodule_id}:{script_name}' + + def init_webhook_choice(self): + initial = None + if self.instance.action_type == EventRuleActionChoices.WEBHOOK: + webhook_id = get_field_value(self, 'action_object_id') + initial = Webhook.objects.get(pk=webhook_id) if webhook_id else None + self.fields['action_choice'] = DynamicModelChoiceField( + label=_('Webhook'), + queryset=Webhook.objects.all(), + required=True, + initial=initial + ) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['action_object_type'].required = False + self.fields['action_object_id'].required = False + + # Determine the action type + action_type = get_field_value(self, 'action_type') + + if action_type == EventRuleActionChoices.WEBHOOK: + self.init_webhook_choice() + elif action_type == EventRuleActionChoices.SCRIPT: + self.init_script_choice() + + def clean(self): + super().clean() + + action_choice = self.cleaned_data.get('action_choice') + # Webhook + if self.cleaned_data.get('action_type') == EventRuleActionChoices.WEBHOOK: + self.cleaned_data['action_object_type'] = ContentType.objects.get_for_model(action_choice) + self.cleaned_data['action_object_id'] = action_choice.id + # Script + elif self.cleaned_data.get('action_type') == EventRuleActionChoices.SCRIPT: + self.cleaned_data['action_object_type'] = ContentType.objects.get_for_model( + ScriptModule, + for_concrete_model=False + ) + module_id, script_name = action_choice.split(":", maxsplit=1) + self.cleaned_data['action_object_id'] = module_id + + return self.cleaned_data + + def save(self, *args, **kwargs): + # Set action_parameters on the instance + if self.cleaned_data['action_type'] == EventRuleActionChoices.SCRIPT: + module_id, script_name = self.cleaned_data.get('action_choice').split(":", maxsplit=1) + self.instance.action_parameters = { + 'script_name': script_name, + } + else: + self.instance.action_parameters = None + + return super().save(*args, **kwargs) + class TagForm(BootstrapMixin, forms.ModelForm): slug = SlugField() object_types = ContentTypeMultipleChoiceField( label=_('Object types'), - queryset=ContentType.objects.all(), - limit_choices_to=FeatureQuery('tags'), + queryset=ContentType.objects.with_feature('tags'), required=False ) @@ -325,7 +438,7 @@ class ConfigContextForm(BootstrapMixin, SyncedDataMixin, forms.ModelForm): required=False ) tenant_groups = DynamicModelMultipleChoiceField( - label=_('Tenat groups'), + label=_('Tenant groups'), queryset=TenantGroup.objects.all(), required=False ) @@ -452,99 +565,3 @@ class JournalEntryForm(NetBoxModelForm): 'assigned_object_type': forms.HiddenInput, 'assigned_object_id': forms.HiddenInput, } - - -EMPTY_VALUES = ('', None, [], ()) - - -class ConfigFormMetaclass(forms.models.ModelFormMetaclass): - - def __new__(mcs, name, bases, attrs): - - # Emulate a declared field for each supported configuration parameter - param_fields = {} - for param in PARAMS: - field_kwargs = { - 'required': False, - 'label': param.label, - 'help_text': param.description, - } - field_kwargs.update(**param.field_kwargs) - param_fields[param.name] = param.field(**field_kwargs) - attrs.update(param_fields) - - return super().__new__(mcs, name, bases, attrs) - - -class ConfigRevisionForm(BootstrapMixin, forms.ModelForm, metaclass=ConfigFormMetaclass): - """ - Form for creating a new ConfigRevision. - """ - - fieldsets = ( - (_('Rack Elevations'), ('RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH')), - (_('Power'), ('POWERFEED_DEFAULT_VOLTAGE', 'POWERFEED_DEFAULT_AMPERAGE', 'POWERFEED_DEFAULT_MAX_UTILIZATION')), - (_('IPAM'), ('ENFORCE_GLOBAL_UNIQUE', 'PREFER_IPV4')), - (_('Security'), ('ALLOWED_URL_SCHEMES',)), - (_('Banners'), ('BANNER_LOGIN', 'BANNER_MAINTENANCE', 'BANNER_TOP', 'BANNER_BOTTOM')), - (_('Pagination'), ('PAGINATE_COUNT', 'MAX_PAGE_SIZE')), - (_('Validation'), ('CUSTOM_VALIDATORS',)), - (_('User Preferences'), ('DEFAULT_USER_PREFERENCES',)), - (_('Miscellaneous'), ('MAINTENANCE_MODE', 'GRAPHQL_ENABLED', 'CHANGELOG_RETENTION', 'JOB_RETENTION', 'MAPS_URL')), - (_('Config Revision'), ('comment',)) - ) - - class Meta: - model = ConfigRevision - fields = '__all__' - widgets = { - 'BANNER_LOGIN': forms.Textarea(attrs={'class': 'font-monospace'}), - 'BANNER_MAINTENANCE': forms.Textarea(attrs={'class': 'font-monospace'}), - 'BANNER_TOP': forms.Textarea(attrs={'class': 'font-monospace'}), - 'BANNER_BOTTOM': forms.Textarea(attrs={'class': 'font-monospace'}), - 'CUSTOM_VALIDATORS': forms.Textarea(attrs={'class': 'font-monospace'}), - 'comment': forms.Textarea(), - } - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # Append current parameter values to form field help texts and check for static configurations - config = get_config() - for param in PARAMS: - value = getattr(config, param.name) - is_static = hasattr(settings, param.name) - if value: - help_text = self.fields[param.name].help_text - if help_text: - help_text += '
    ' # Line break - help_text += _('Current value: {value}').format(value=value) - if is_static: - help_text += _(' (defined statically)') - elif value == param.default: - help_text += _(' (default)') - self.fields[param.name].help_text = help_text - self.fields[param.name].initial = value - if is_static: - self.fields[param.name].disabled = True - - def save(self, commit=True): - instance = super().save(commit=False) - - # Populate JSON data on the instance - instance.data = self.render_json() - - if commit: - instance.save() - - return instance - - def render_json(self): - json = {} - - # Iterate through each field and populate non-empty values - for field_name in self.declared_fields: - if field_name in self.cleaned_data and self.cleaned_data[field_name] not in EMPTY_VALUES: - json[field_name] = self.cleaned_data[field_name] - - return json diff --git a/netbox/extras/graphql/filters.py b/netbox/extras/graphql/filters.py index f5ce2b23a..16ee63cd9 100644 --- a/netbox/extras/graphql/filters.py +++ b/netbox/extras/graphql/filters.py @@ -8,6 +8,7 @@ __all__ = ( 'CustomFieldFilter', 'CustomFieldChoiceSetFilter', 'CustomLinkFilter', + 'EventRuleFilter', 'ExportTemplateFilter', 'ImageAttachmentFilter', 'JournalEntryFilter', @@ -43,7 +44,6 @@ class CustomFieldFilter(filtersets.CustomFieldFilterSet): required: auto search_weight: auto filter_logic: auto - ui_visibility: auto weight: auto is_cloneable: auto description: auto @@ -135,15 +135,21 @@ class TagFilter(filtersets.TagFilterSet): class WebhookFilter(filtersets.WebhookFilterSet): id: auto name: auto - type_create: auto - type_update: auto - type_delete: auto - type_job_start: auto - type_job_end: auto payload_url: auto - enabled: auto http_method: auto http_content_type: auto secret: auto ssl_verification: auto ca_file_path: auto + + +@strawberry.django.filter(models.EventRule, lookups=True) +class EventRuleFilter(filtersets.EventRuleFilterSet): + id: auto + name: auto + enabled: auto + type_create: auto + type_update: auto + type_delete: auto + type_job_start: auto + type_job_end: auto diff --git a/netbox/extras/graphql/schema.py b/netbox/extras/graphql/schema.py index e13cc0e9f..09e399e37 100644 --- a/netbox/extras/graphql/schema.py +++ b/netbox/extras/graphql/schema.py @@ -72,3 +72,9 @@ class ExtrasQuery(graphene.ObjectType): def resolve_webhook_list(root, info, **kwargs): return gql_query_optimizer(models.Webhook.objects.all(), info) + + event_rule = ObjectField(EventRuleType) + event_rule_list = ObjectListField(EventRuleType) + + def resolve_eventrule_list(root, info, **kwargs): + return gql_query_optimizer(models.EventRule.objects.all(), info) diff --git a/netbox/extras/graphql/types.py b/netbox/extras/graphql/types.py index e962859db..e11f495a1 100644 --- a/netbox/extras/graphql/types.py +++ b/netbox/extras/graphql/types.py @@ -12,6 +12,7 @@ __all__ = ( 'CustomFieldChoiceSetType', 'CustomFieldType', 'CustomLinkType', + 'EventRuleType', 'ExportTemplateType', 'ImageAttachmentType', 'JournalEntryType', @@ -128,3 +129,12 @@ class TagType(ObjectType): ) class WebhookType(OrganizationalObjectType): pass + + +@strawberry.django.type( + models.EventRule, + exclude=['content_types',], + filters=EventRuleFilter +) +class EventRuleType(OrganizationalObjectType): + pass diff --git a/netbox/extras/management/commands/reindex.py b/netbox/extras/management/commands/reindex.py index 9a29c54f5..e072c220a 100644 --- a/netbox/extras/management/commands/reindex.py +++ b/netbox/extras/management/commands/reindex.py @@ -69,10 +69,7 @@ class Command(BaseCommand): if not kwargs['lazy']: self.stdout.write('Clearing cached values... ', ending='') self.stdout.flush() - content_types = [ - ContentType.objects.get_for_model(model) for model in indexers.keys() - ] - deleted_count = search_backend.clear(content_types) + deleted_count = search_backend.clear() self.stdout.write(f'{deleted_count} entries deleted.') # Index models diff --git a/netbox/extras/management/commands/runscript.py b/netbox/extras/management/commands/runscript.py index d9a9f41ae..609374378 100644 --- a/netbox/extras/management/commands/runscript.py +++ b/netbox/extras/management/commands/runscript.py @@ -11,9 +11,9 @@ from django.db import transaction from core.choices import JobStatusChoices from core.models import Job from extras.api.serializers import ScriptOutputSerializer -from extras.context_managers import change_logging +from extras.context_managers import event_tracking from extras.scripts import get_module_and_script -from extras.signals import clear_webhooks +from extras.signals import clear_events from utilities.exceptions import AbortTransaction from utilities.utils import NetBoxFakeRequest @@ -37,7 +37,7 @@ class Command(BaseCommand): def _run_script(): """ Core script execution task. We capture this within a subfunction to allow for conditionally wrapping it with - the change_logging context manager (which is bypassed if commit == False). + the event_tracking context manager (which is bypassed if commit == False). """ try: try: @@ -47,7 +47,7 @@ class Command(BaseCommand): raise AbortTransaction() except AbortTransaction: script.log_info("Database changes have been reverted automatically.") - clear_webhooks.send(request) + clear_events.send(request) job.data = ScriptOutputSerializer(script).data job.terminate() except Exception as e: @@ -57,9 +57,9 @@ class Command(BaseCommand): ) script.log_info("Database changes have been reverted due to error.") logger.error(f"Exception raised during script execution: {e}") - clear_webhooks.send(request) + clear_events.send(request) job.data = ScriptOutputSerializer(script).data - job.terminate(status=JobStatusChoices.STATUS_ERRORED) + job.terminate(status=JobStatusChoices.STATUS_ERRORED, error=repr(e)) logger.info(f"Script completed in {job.duration}") @@ -114,7 +114,7 @@ class Command(BaseCommand): # Create the job job = Job.objects.create( object=module, - name=script.name, + name=script.class_name, user=User.objects.filter(is_superuser=True).order_by('pk')[0], job_id=uuid.uuid4() ) @@ -136,9 +136,9 @@ class Command(BaseCommand): logger.info(f"Running script (commit={commit})") script.request = request - # Execute the script. If commit is True, wrap it with the change_logging context manager to ensure we process + # Execute the script. If commit is True, wrap it with the event_tracking context manager to ensure we process # change logging, webhooks, etc. - with change_logging(request): + with event_tracking(request): _run_script() else: logger.error('Data is not valid:') diff --git a/netbox/extras/migrations/0001_squashed.py b/netbox/extras/migrations/0001_squashed.py index 2fdcc07eb..6f1f77e53 100644 --- a/netbox/extras/migrations/0001_squashed.py +++ b/netbox/extras/migrations/0001_squashed.py @@ -88,7 +88,7 @@ class Migration(migrations.Migration): ('secret', models.CharField(blank=True, max_length=255)), ('ssl_verification', models.BooleanField(default=True)), ('ca_file_path', models.CharField(blank=True, max_length=4096, null=True)), - ('content_types', models.ManyToManyField(limit_choices_to=extras.utils.FeatureQuery('webhooks'), related_name='webhooks', to='contenttypes.ContentType')), + ('content_types', models.ManyToManyField(related_name='webhooks', to='contenttypes.ContentType')), ], options={ 'ordering': ('name',), @@ -151,7 +151,7 @@ class Migration(migrations.Migration): ('status', models.CharField(default='pending', max_length=30)), ('data', models.JSONField(blank=True, null=True)), ('job_id', models.UUIDField(unique=True)), - ('obj_type', models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('jobs'), on_delete=django.db.models.deletion.CASCADE, related_name='job_results', to='contenttypes.contenttype')), + ('obj_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='job_results', to='contenttypes.contenttype')), ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)), ], options={ @@ -184,7 +184,7 @@ class Migration(migrations.Migration): ('mime_type', models.CharField(blank=True, max_length=50)), ('file_extension', models.CharField(blank=True, max_length=15)), ('as_attachment', models.BooleanField(default=True)), - ('content_type', models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('export_templates'), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), + ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), ], options={ 'ordering': ['content_type', 'name'], @@ -201,7 +201,7 @@ class Migration(migrations.Migration): ('group_name', models.CharField(blank=True, max_length=50)), ('button_class', models.CharField(default='default', max_length=30)), ('new_window', models.BooleanField(default=False)), - ('content_type', models.ForeignKey(limit_choices_to=extras.utils.FeatureQuery('custom_links'), on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), + ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype')), ], options={ 'ordering': ['group_name', 'weight', 'name'], @@ -223,7 +223,7 @@ class Migration(migrations.Migration): ('validation_maximum', models.PositiveIntegerField(blank=True, null=True)), ('validation_regex', models.CharField(blank=True, max_length=500, validators=[utilities.validators.validate_regex])), ('choices', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=100), blank=True, null=True, size=None)), - ('content_types', models.ManyToManyField(limit_choices_to=extras.utils.FeatureQuery('custom_fields'), related_name='custom_fields', to='contenttypes.ContentType')), + ('content_types', models.ManyToManyField(related_name='custom_fields', to='contenttypes.ContentType')), ], options={ 'ordering': ['weight', 'name'], diff --git a/netbox/extras/migrations/0094_tag_object_types.py b/netbox/extras/migrations/0094_tag_object_types.py index 944ef64b2..8bb760980 100644 --- a/netbox/extras/migrations/0094_tag_object_types.py +++ b/netbox/extras/migrations/0094_tag_object_types.py @@ -1,5 +1,4 @@ from django.db import migrations, models -import extras.utils class Migration(migrations.Migration): @@ -13,7 +12,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='tag', name='object_types', - field=models.ManyToManyField(blank=True, limit_choices_to=extras.utils.FeatureQuery('tags'), related_name='+', to='contenttypes.contenttype'), + field=models.ManyToManyField(blank=True, related_name='+', to='contenttypes.contenttype'), ), migrations.RenameIndex( model_name='taggeditem', diff --git a/netbox/extras/migrations/0099_cachedvalue_ordering.py b/netbox/extras/migrations/0099_cachedvalue_ordering.py new file mode 100644 index 000000000..242ffd983 --- /dev/null +++ b/netbox/extras/migrations/0099_cachedvalue_ordering.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.6 on 2023-10-30 14:04 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0098_webhook_custom_field_data_webhook_tags'), + ] + + operations = [ + migrations.AlterModelOptions( + name='cachedvalue', + options={'ordering': ('weight', 'object_type', 'value', 'object_id')}, + ), + ] diff --git a/netbox/extras/migrations/0100_customfield_ui_attrs.py b/netbox/extras/migrations/0100_customfield_ui_attrs.py new file mode 100644 index 000000000..a4a713a86 --- /dev/null +++ b/netbox/extras/migrations/0100_customfield_ui_attrs.py @@ -0,0 +1,41 @@ +from django.db import migrations, models + + +def update_ui_attrs(apps, schema_editor): + """ + Replicate legacy ui_visibility values to the new ui_visible and ui_editable fields. + """ + CustomField = apps.get_model('extras', 'CustomField') + + CustomField.objects.filter(ui_visibility='read-write').update(ui_visible='always', ui_editable='yes') + CustomField.objects.filter(ui_visibility='read-only').update(ui_visible='always', ui_editable='no') + CustomField.objects.filter(ui_visibility='hidden').update(ui_visible='hidden', ui_editable='hidden') + CustomField.objects.filter(ui_visibility='hidden-ifunset').update(ui_visible='if-set', ui_editable='yes') + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0099_cachedvalue_ordering'), + ] + + operations = [ + migrations.AddField( + model_name='customfield', + name='ui_editable', + field=models.CharField(default='yes', max_length=50), + ), + migrations.AddField( + model_name='customfield', + name='ui_visible', + field=models.CharField(default='always', max_length=50), + ), + migrations.RunPython( + code=update_ui_attrs, + reverse_code=migrations.RunPython.noop + ), + migrations.RemoveField( + model_name='customfield', + name='ui_visibility', + ), + ] diff --git a/netbox/extras/migrations/0101_eventrule.py b/netbox/extras/migrations/0101_eventrule.py new file mode 100644 index 000000000..3d236c847 --- /dev/null +++ b/netbox/extras/migrations/0101_eventrule.py @@ -0,0 +1,146 @@ +import django.db.models.deletion +import taggit.managers +from django.contrib.contenttypes.models import ContentType +from django.db import migrations, models + +import utilities.json +from extras.choices import * + + +def move_webhooks(apps, schema_editor): + Webhook = apps.get_model("extras", "Webhook") + EventRule = apps.get_model("extras", "EventRule") + + webhook_ct = ContentType.objects.get_for_model(Webhook).pk + for webhook in Webhook.objects.all(): + event = EventRule() + + # Replicate attributes from Webhook instance + event.name = webhook.name + event.type_create = webhook.type_create + event.type_update = webhook.type_update + event.type_delete = webhook.type_delete + event.type_job_start = webhook.type_job_start + event.type_job_end = webhook.type_job_end + event.enabled = webhook.enabled + event.conditions = webhook.conditions + + event.action_type = EventRuleActionChoices.WEBHOOK + event.action_object_type_id = webhook_ct + event.action_object_id = webhook.id + event.save() + event.content_types.add(*webhook.content_types.all()) + + +class Migration(migrations.Migration): + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('extras', '0100_customfield_ui_attrs'), + ] + + operations = [ + + # Create the EventRule model + migrations.CreateModel( + name='EventRule', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ( + 'custom_field_data', + models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder), + ), + ('name', models.CharField(max_length=150, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ('type_create', models.BooleanField(default=False)), + ('type_update', models.BooleanField(default=False)), + ('type_delete', models.BooleanField(default=False)), + ('type_job_start', models.BooleanField(default=False)), + ('type_job_end', models.BooleanField(default=False)), + ('enabled', models.BooleanField(default=True)), + ('conditions', models.JSONField(blank=True, null=True)), + ('action_type', models.CharField(default='webhook', max_length=30)), + ('action_object_id', models.PositiveBigIntegerField(blank=True, null=True)), + ('action_parameters', models.JSONField(blank=True, null=True)), + ('action_data', models.JSONField(blank=True, null=True)), + ('comments', models.TextField(blank=True)), + ], + options={ + 'verbose_name': 'eventrule', + 'verbose_name_plural': 'eventrules', + 'ordering': ('name',), + }, + ), + migrations.AddField( + model_name='eventrule', + name='action_object_type', + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name='eventrule_actions', + to='contenttypes.contenttype', + ), + ), + migrations.AddField( + model_name='eventrule', + name='content_types', + field=models.ManyToManyField(related_name='eventrules', to='contenttypes.contenttype'), + ), + migrations.AddField( + model_name='eventrule', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.AddIndex( + model_name='eventrule', + index=models.Index(fields=['action_object_type', 'action_object_id'], name='extras_even_action__d9e2af_idx'), + ), + + # Replicate Webhook data + migrations.RunPython(move_webhooks), + + # Remove obsolete fields from Webhook + migrations.RemoveConstraint( + model_name='webhook', + name='extras_webhook_unique_payload_url_types', + ), + migrations.RemoveField( + model_name='webhook', + name='conditions', + ), + migrations.RemoveField( + model_name='webhook', + name='content_types', + ), + migrations.RemoveField( + model_name='webhook', + name='enabled', + ), + migrations.RemoveField( + model_name='webhook', + name='type_create', + ), + migrations.RemoveField( + model_name='webhook', + name='type_delete', + ), + migrations.RemoveField( + model_name='webhook', + name='type_job_end', + ), + migrations.RemoveField( + model_name='webhook', + name='type_job_start', + ), + migrations.RemoveField( + model_name='webhook', + name='type_update', + ), + + # Add description field to Webhook + migrations.AddField( + model_name='webhook', + name='description', + field=models.CharField(blank=True, max_length=200), + ), + ] diff --git a/netbox/extras/migrations/0102_move_configrevision.py b/netbox/extras/migrations/0102_move_configrevision.py new file mode 100644 index 000000000..36eef1205 --- /dev/null +++ b/netbox/extras/migrations/0102_move_configrevision.py @@ -0,0 +1,39 @@ +from django.db import migrations + + +def update_content_type(apps, schema_editor): + ContentType = apps.get_model('contenttypes', 'ContentType') + + # Delete the new ContentType effected by the introduction of core.ConfigRevision + ContentType.objects.filter(app_label='core', model='configrevision').delete() + + # Update the app label of the original ContentType for extras.ConfigRevision to ensure any foreign key + # references are preserved + ContentType.objects.filter(app_label='extras', model='configrevision').update(app_label='core') + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0101_eventrule'), + ] + + operations = [ + migrations.SeparateDatabaseAndState( + state_operations=[ + migrations.DeleteModel( + name='ConfigRevision', + ), + ], + database_operations=[ + migrations.AlterModelTable( + name='ConfigRevision', + table='core_configrevision', + ), + ], + ), + migrations.RunPython( + code=update_content_type, + reverse_code=migrations.RunPython.noop + ), + ] diff --git a/netbox/extras/migrations/0103_gfk_indexes.py b/netbox/extras/migrations/0103_gfk_indexes.py new file mode 100644 index 000000000..2ccbdb2ff --- /dev/null +++ b/netbox/extras/migrations/0103_gfk_indexes.py @@ -0,0 +1,37 @@ +# Generated by Django 4.2.7 on 2023-12-07 16:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0102_move_configrevision'), + ] + + operations = [ + migrations.AddIndex( + model_name='bookmark', + index=models.Index(fields=['object_type', 'object_id'], name='extras_book_object__2df6b4_idx'), + ), + migrations.AddIndex( + model_name='imageattachment', + index=models.Index(fields=['content_type', 'object_id'], name='extras_imag_content_94728e_idx'), + ), + migrations.AddIndex( + model_name='journalentry', + index=models.Index(fields=['assigned_object_type', 'assigned_object_id'], name='extras_jour_assigne_76510f_idx'), + ), + migrations.AddIndex( + model_name='objectchange', + index=models.Index(fields=['changed_object_type', 'changed_object_id'], name='extras_obje_changed_927fe5_idx'), + ), + migrations.AddIndex( + model_name='objectchange', + index=models.Index(fields=['related_object_type', 'related_object_id'], name='extras_obje_related_bfcdef_idx'), + ), + migrations.AddIndex( + model_name='stagedchange', + index=models.Index(fields=['object_type', 'object_id'], name='extras_stag_object__4734d5_idx'), + ), + ] diff --git a/netbox/extras/migrations/0104_stagedchange_remove_change_logging.py b/netbox/extras/migrations/0104_stagedchange_remove_change_logging.py new file mode 100644 index 000000000..df962bbb8 --- /dev/null +++ b/netbox/extras/migrations/0104_stagedchange_remove_change_logging.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.5 on 2023-12-08 16:03 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ('extras', '0103_gfk_indexes'), + ] + + operations = [ + migrations.RemoveField( + model_name='stagedchange', + name='created', + ), + migrations.RemoveField( + model_name='stagedchange', + name='last_updated', + ), + ] diff --git a/netbox/extras/migrations/0105_customfield_min_max_values.py b/netbox/extras/migrations/0105_customfield_min_max_values.py new file mode 100644 index 000000000..bcf3f97bd --- /dev/null +++ b/netbox/extras/migrations/0105_customfield_min_max_values.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.8 on 2023-12-27 20:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0104_stagedchange_remove_change_logging'), + ] + + operations = [ + migrations.AlterField( + model_name='customfield', + name='validation_maximum', + field=models.BigIntegerField(blank=True, null=True), + ), + migrations.AlterField( + model_name='customfield', + name='validation_minimum', + field=models.BigIntegerField(blank=True, null=True), + ), + ] diff --git a/netbox/extras/models/change_logging.py b/netbox/extras/models/change_logging.py index ac9c60998..0155849aa 100644 --- a/netbox/extras/models/change_logging.py +++ b/netbox/extras/models/change_logging.py @@ -1,10 +1,11 @@ from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse from django.utils.translation import gettext_lazy as _ +from core.models import ContentType from extras.choices import * from ..querysets import ObjectChangeQuerySet @@ -48,7 +49,7 @@ class ObjectChange(models.Model): choices=ObjectChangeActionChoices ) changed_object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.PROTECT, related_name='+' ) @@ -58,7 +59,7 @@ class ObjectChange(models.Model): fk_field='changed_object_id' ) related_object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.PROTECT, related_name='+', blank=True, @@ -93,6 +94,10 @@ class ObjectChange(models.Model): class Meta: ordering = ['-time'] + indexes = ( + models.Index(fields=('changed_object_type', 'changed_object_id')), + models.Index(fields=('related_object_type', 'related_object_id')), + ) verbose_name = _('object change') verbose_name_plural = _('object changes') @@ -104,6 +109,17 @@ class ObjectChange(models.Model): self.user_name ) + def clean(self): + super().clean() + + # Validate the assigned object type + if self.changed_object_type not in ContentType.objects.with_feature('change_logging'): + raise ValidationError( + _("Change logging is not supported for this object type ({type}).").format( + type=self.changed_object_type + ) + ) + def save(self, *args, **kwargs): # Record the user's name and the object's representation as static strings @@ -119,3 +135,7 @@ class ObjectChange(models.Model): def get_action_color(self): return ObjectChangeActionChoices.colors.get(self.action) + + @property + def has_changes(self): + return self.prechange_data != self.postchange_data diff --git a/netbox/extras/models/configs.py b/netbox/extras/models/configs.py index 47e8dcd82..425c1386a 100644 --- a/netbox/extras/models/configs.py +++ b/netbox/extras/models/configs.py @@ -146,7 +146,7 @@ class ConfigContext(SyncedDataMixin, CloningMixin, ChangeLoggedModel): # Verify that JSON data is provided as an object if type(self.data) is not dict: raise ValidationError( - {'data': _('JSON data must be in object form. Example: {"foo": 123}')} + {'data': _('JSON data must be in object form. Example:') + ' {"foo": 123}'} ) def sync_data(self): @@ -202,7 +202,7 @@ class ConfigContextModel(models.Model): # Verify that JSON data is provided as an object if self.local_context_data and type(self.local_context_data) is not dict: raise ValidationError( - {'local_context_data': _('JSON data must be in object form. Example: {"foo": 123}')} + {'local_context_data': _('JSON data must be in object form. Example:') + ' {"foo": 123}'} ) @@ -260,12 +260,14 @@ class ConfigTemplate(SyncedDataMixin, ExportTemplatesMixin, TagsMixin, ChangeLog _context = dict() # Populate the default template context with NetBox model classes, namespaced by app - # TODO: Devise a canonical mechanism for identifying the models to include (see #13427) - for app, model_names in registry['model_features']['custom_fields'].items(): + for app, model_names in registry['models'].items(): _context.setdefault(app, {}) for model_name in model_names: - model = apps.get_registered_model(app, model_name) - _context[app][model.__name__] = model + try: + model = apps.get_registered_model(app, model_name) + _context[app][model.__name__] = model + except LookupError: + pass # Add the provided context data, if any if context is not None: diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index ac68855a0..e78d1af23 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -5,18 +5,16 @@ from datetime import datetime, date import django_filters from django import forms from django.conf import settings -from django.contrib.contenttypes.models import ContentType from django.contrib.postgres.fields import ArrayField from django.core.validators import RegexValidator, ValidationError from django.db import models from django.urls import reverse -from django.utils.html import escape from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ +from core.models import ContentType from extras.choices import * from extras.data import CHOICE_SETS -from extras.utils import FeatureQuery from netbox.models import ChangeLoggedModel from netbox.models.features import CloningMixin, ExportTemplatesMixin from netbox.search import FieldTypes @@ -28,6 +26,7 @@ from utilities.forms.fields import ( from utilities.forms.utils import add_blank_choice from utilities.forms.widgets import APISelect, APISelectMultiple, DatePicker, DateTimePicker from utilities.querysets import RestrictedQuerySet +from utilities.templatetags.builtins.filters import render_markdown from utilities.validators import validate_regex __all__ = ( @@ -56,12 +55,20 @@ class CustomFieldManager(models.Manager.from_queryset(RestrictedQuerySet)): content_type = ContentType.objects.get_for_model(model._meta.concrete_model) return self.get_queryset().filter(content_types=content_type) + def get_defaults_for_model(self, model): + """ + Return a dictionary of serialized default values for all CustomFields applicable to the given model. + """ + custom_fields = self.get_for_model(model).filter(default__isnull=False) + return { + cf.name: cf.default for cf in custom_fields + } + class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): content_types = models.ManyToManyField( - to=ContentType, + to='contenttypes.ContentType', related_name='custom_fields', - limit_choices_to=FeatureQuery('custom_fields'), help_text=_('The object(s) to which this field applies.') ) type = models.CharField( @@ -72,7 +79,7 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): help_text=_('The type of data this custom field holds') ) object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.PROTECT, blank=True, null=True, @@ -149,13 +156,13 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): verbose_name=_('display weight'), help_text=_('Fields with higher weights appear lower in a form.') ) - validation_minimum = models.IntegerField( + validation_minimum = models.BigIntegerField( blank=True, null=True, verbose_name=_('minimum value'), help_text=_('Minimum allowed value (for numeric fields)') ) - validation_maximum = models.IntegerField( + validation_maximum = models.BigIntegerField( blank=True, null=True, verbose_name=_('maximum value'), @@ -179,12 +186,19 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): blank=True, null=True ) - ui_visibility = models.CharField( + ui_visible = models.CharField( max_length=50, - choices=CustomFieldVisibilityChoices, - default=CustomFieldVisibilityChoices.VISIBILITY_READ_WRITE, - verbose_name=_('UI visibility'), - help_text=_('Specifies the visibility of custom field in the UI') + choices=CustomFieldUIVisibleChoices, + default=CustomFieldUIVisibleChoices.ALWAYS, + verbose_name=_('UI visible'), + help_text=_('Specifies whether the custom field is displayed in the UI') + ) + ui_editable = models.CharField( + max_length=50, + choices=CustomFieldUIEditableChoices, + default=CustomFieldUIEditableChoices.YES, + verbose_name=_('UI editable'), + help_text=_('Specifies whether the custom field value can be edited in the UI') ) is_cloneable = models.BooleanField( default=False, @@ -197,7 +211,7 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): clone_fields = ( 'content_types', 'type', 'object_type', 'group_name', 'description', 'required', 'search_weight', 'filter_logic', 'default', 'weight', 'validation_minimum', 'validation_maximum', 'validation_regex', - 'choice_set', 'ui_visibility', 'is_cloneable', + 'choice_set', 'ui_visible', 'ui_editable', 'is_cloneable', ) class Meta: @@ -219,7 +233,7 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): super().__init__(*args, **kwargs) # Cache instance's original name so we can check later whether it has changed - self._name = self.name + self._name = self.__dict__.get('name') @property def search_type(self): @@ -231,6 +245,17 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): return self.choice_set.choices return [] + def get_ui_visible_color(self): + return CustomFieldUIVisibleChoices.colors.get(self.ui_visible) + + def get_ui_editable_color(self): + return CustomFieldUIEditableChoices.colors.get(self.ui_editable) + + def get_choice_label(self, value): + if not hasattr(self, '_choice_map'): + self._choice_map = dict(self.choices) + return self._choice_map.get(value, value) + def populate_initial_data(self, content_types): """ Populate initial custom field data upon either a) the creation of a new CustomField, or @@ -281,8 +306,8 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): except ValidationError as err: raise ValidationError({ 'default': _( - 'Invalid default value "{default}": {message}' - ).format(default=self.default, message=self.message) + 'Invalid default value "{value}": {error}' + ).format(value=self.default, error=err.message) }) # Minimum/maximum values can be set only for numeric fields @@ -317,14 +342,6 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): 'choice_set': _("Choices may be set only on selection fields.") }) - # A selection field's default (if any) must be present in its available choices - if self.type == CustomFieldTypeChoices.TYPE_SELECT and self.default and self.default not in self.choices: - raise ValidationError({ - 'default': _( - "The specified default value ({default}) is not listed as an available choice." - ).format(default=self.default) - }) - # Object fields must define an object_type; other fields must not if self.type in (CustomFieldTypeChoices.TYPE_OBJECT, CustomFieldTypeChoices.TYPE_MULTIOBJECT): if not self.object_type: @@ -334,8 +351,8 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): elif self.object_type: raise ValidationError({ 'object_type': _( - "{type_display} fields may not define an object type.") - .format(type_display=self.get_type_display()) + "{type} fields may not define an object type.") + .format(type=self.get_type_display()) }) def serialize(self, value): @@ -384,7 +401,7 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): set_initial: Set initial data for the field. This should be False when generating a field for bulk editing. enforce_required: Honor the value of CustomField.required. Set to False for filtering/bulk editing. - enforce_visibility: Honor the value of CustomField.ui_visibility. Set to False for filtering. + enforce_visibility: Honor the value of CustomField.ui_visible. Set to False for filtering. for_csv_import: Return a form field suitable for bulk import of objects in CSV format. """ initial = self.default if set_initial else None @@ -506,13 +523,11 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): field.model = self field.label = str(self) if self.description: - field.help_text = escape(self.description) + field.help_text = render_markdown(self.description) # Annotate read-only fields - if enforce_visibility and self.ui_visibility == CustomFieldVisibilityChoices.VISIBILITY_READ_ONLY: + if enforce_visibility and self.ui_editable != CustomFieldUIEditableChoices.YES: field.disabled = True - prepend = '
    ' if field.help_text else '' - field.help_text += f'{prepend} ' + _('Field is set to read-only.') return field @@ -564,8 +579,7 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): # Multiselect elif self.type == CustomFieldTypeChoices.TYPE_MULTISELECT: - filter_class = filters.MultiValueCharFilter - kwargs['lookup_expr'] = 'has_key' + filter_class = filters.MultiValueArrayFilter # Object elif self.type == CustomFieldTypeChoices.TYPE_OBJECT: @@ -650,19 +664,22 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): # Validate selected choice elif self.type == CustomFieldTypeChoices.TYPE_SELECT: - if value not in [c[0] for c in self.choices]: + if value not in self.choice_set.values: raise ValidationError( - _("Invalid choice ({value}). Available choices are: {choices}").format( - value=value, choices=', '.join(self.choices) + _("Invalid choice ({value}) for choice set {choiceset}.").format( + value=value, + choiceset=self.choice_set ) ) # Validate all selected choices elif self.type == CustomFieldTypeChoices.TYPE_MULTISELECT: - if not set(value).issubset([c[0] for c in self.choices]): + if not set(value).issubset(self.choice_set.values): raise ValidationError( - _("Invalid choice(s) ({invalid_choices}). Available choices are: {available_choices}").format( - invalid_choices=', '.join(value), available_choices=', '.join(self.choices)) + _("Invalid choice(s) ({value}) for choice set {choiceset}.").format( + value=value, + choiceset=self.choice_set + ) ) # Validate selected object @@ -747,6 +764,13 @@ class CustomFieldChoiceSet(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel def choices_count(self): return len(self.choices) + @property + def values(self): + """ + Returns an iterator of the valid choice values. + """ + return (x[0] for x in self.choices) + def clean(self): if not self.base_choices and not self.extra_choices: raise ValidationError(_("Must define base or extra choices.")) diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index 54832b3ba..778d7b68d 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -1,11 +1,8 @@ import json import urllib.parse -from django.contrib import admin from django.conf import settings -from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType -from django.core.cache import cache +from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation from django.core.validators import ValidationError from django.db import models from django.http import HttpResponse @@ -15,10 +12,11 @@ from django.utils.formats import date_format from django.utils.translation import gettext_lazy as _ from rest_framework.utils.encoders import JSONEncoder +from core.models import ContentType from extras.choices import * from extras.conditions import ConditionSet from extras.constants import * -from extras.utils import FeatureQuery, image_upload +from extras.utils import image_upload from netbox.config import get_config from netbox.models import ChangeLoggedModel from netbox.models.features import ( @@ -29,8 +27,8 @@ from utilities.utils import clean_html, dict_to_querydict, render_jinja2 __all__ = ( 'Bookmark', - 'ConfigRevision', 'CustomLink', + 'EventRule', 'ExportTemplate', 'ImageAttachment', 'JournalEntry', @@ -39,24 +37,28 @@ __all__ = ( ) -class Webhook(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedModel): +class EventRule(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedModel): """ - A Webhook defines a request that will be sent to a remote application when an object is created, updated, and/or - delete in NetBox. The request will contain a representation of the object, which the remote application can act on. - Each Webhook can be limited to firing only on certain actions or certain object types. + An EventRule defines an action to be taken automatically in response to a specific set of events, such as when a + specific type of object is created, modified, or deleted. The action to be taken might entail transmitting a + webhook or executing a custom script. """ content_types = models.ManyToManyField( - to=ContentType, - related_name='webhooks', + to='contenttypes.ContentType', + related_name='eventrules', verbose_name=_('object types'), - limit_choices_to=FeatureQuery('webhooks'), - help_text=_("The object(s) to which this Webhook applies.") + help_text=_("The object(s) to which this rule applies.") ) name = models.CharField( verbose_name=_('name'), max_length=150, unique=True ) + description = models.CharField( + verbose_name=_('description'), + max_length=200, + blank=True + ) type_create = models.BooleanField( verbose_name=_('on create'), default=False, @@ -82,6 +84,111 @@ class Webhook(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedMo default=False, help_text=_("Triggers when a job for a matching object terminates.") ) + enabled = models.BooleanField( + verbose_name=_('enabled'), + default=True + ) + conditions = models.JSONField( + verbose_name=_('conditions'), + blank=True, + null=True, + help_text=_("A set of conditions which determine whether the event will be generated.") + ) + + # Action to take + action_type = models.CharField( + max_length=30, + choices=EventRuleActionChoices, + default=EventRuleActionChoices.WEBHOOK, + verbose_name=_('action type') + ) + action_object_type = models.ForeignKey( + to='contenttypes.ContentType', + related_name='eventrule_actions', + on_delete=models.CASCADE + ) + action_object_id = models.PositiveBigIntegerField( + blank=True, + null=True + ) + action_object = GenericForeignKey( + ct_field='action_object_type', + fk_field='action_object_id' + ) + action_parameters = models.JSONField( + blank=True, + null=True + ) + action_data = models.JSONField( + verbose_name=_('data'), + blank=True, + null=True, + help_text=_("Additional data to pass to the action object") + ) + comments = models.TextField( + verbose_name=_('comments'), + blank=True + ) + + class Meta: + ordering = ('name',) + indexes = ( + models.Index(fields=('action_object_type', 'action_object_id')), + ) + verbose_name = _('event rule') + verbose_name_plural = _('event rules') + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('extras:eventrule', args=[self.pk]) + + def clean(self): + super().clean() + + # At least one action type must be selected + if not any([ + self.type_create, self.type_update, self.type_delete, self.type_job_start, self.type_job_end + ]): + raise ValidationError( + _("At least one event type must be selected: create, update, delete, job start, and/or job end.") + ) + + # Validate that any conditions are in the correct format + if self.conditions: + try: + ConditionSet(self.conditions) + except ValueError as e: + raise ValidationError({'conditions': e}) + + def eval_conditions(self, data): + """ + Test whether the given data meets the conditions of the event rule (if any). Return True + if met or no conditions are specified. + """ + if not self.conditions: + return True + + return ConditionSet(self.conditions).eval(data) + + +class Webhook(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedModel): + """ + A Webhook defines a request that will be sent to a remote application when an object is created, updated, and/or + delete in NetBox. The request will contain a representation of the object, which the remote application can act on. + Each Webhook can be limited to firing only on certain actions or certain object types. + """ + name = models.CharField( + verbose_name=_('name'), + max_length=150, + unique=True + ) + description = models.CharField( + verbose_name=_('description'), + max_length=200, + blank=True + ) payload_url = models.CharField( max_length=500, verbose_name=_('URL'), @@ -90,10 +197,6 @@ class Webhook(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedMo "processing is supported with the same context as the request body." ) ) - enabled = models.BooleanField( - verbose_name=_('enabled'), - default=True - ) http_method = models.CharField( max_length=30, choices=WebhookHttpMethodChoices, @@ -136,12 +239,6 @@ class Webhook(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedMo "digest of the payload body using the secret as the key. The secret is not transmitted in the request." ) ) - conditions = models.JSONField( - verbose_name=_('conditions'), - blank=True, - null=True, - help_text=_("A set of conditions which determine whether the webhook will be generated.") - ) ssl_verification = models.BooleanField( default=True, verbose_name=_('SSL verification'), @@ -156,15 +253,14 @@ class Webhook(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedMo "The specific CA certificate file to use for SSL verification. Leave blank to use the system defaults." ) ) + events = GenericRelation( + EventRule, + content_type_field='action_object_type', + object_id_field='action_object_id' + ) class Meta: ordering = ('name',) - constraints = ( - models.UniqueConstraint( - fields=('payload_url', 'type_create', 'type_update', 'type_delete'), - name='%(app_label)s_%(class)s_unique_payload_url_types' - ), - ) verbose_name = _('webhook') verbose_name_plural = _('webhooks') @@ -181,20 +277,6 @@ class Webhook(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedMo def clean(self): super().clean() - # At least one action type must be selected - if not any([ - self.type_create, self.type_update, self.type_delete, self.type_job_start, self.type_job_end - ]): - raise ValidationError( - _("At least one event type must be selected: create, update, delete, job_start, and/or job_end.") - ) - - if self.conditions: - try: - ConditionSet(self.conditions) - except ValueError as e: - raise ValidationError({'conditions': e}) - # CA file path requires SSL verification enabled if not self.ssl_verification and self.ca_file_path: raise ValidationError({ @@ -236,7 +318,7 @@ class CustomLink(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): code to be rendered with an object as context. """ content_types = models.ManyToManyField( - to=ContentType, + to='contenttypes.ContentType', related_name='custom_links', help_text=_('The object type(s) to which this link applies.') ) @@ -316,7 +398,7 @@ class CustomLink(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): text = clean_html(text, allowed_schemes) # Sanitize link - link = urllib.parse.quote(link, safe='/:?&=%+[]@#,;') + link = urllib.parse.quote(link, safe='/:?&=%+[]@#,;!') # Verify link scheme is allowed result = urllib.parse.urlparse(link) @@ -332,7 +414,7 @@ class CustomLink(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): class ExportTemplate(SyncedDataMixin, CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): content_types = models.ManyToManyField( - to=ContentType, + to='contenttypes.ContentType', related_name='export_templates', help_text=_('The object type(s) to which this template applies.') ) @@ -441,7 +523,7 @@ class SavedFilter(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): A set of predefined keyword parameters that can be reused to filter for specific objects. """ content_types = models.ManyToManyField( - to=ContentType, + to='contenttypes.ContentType', related_name='saved_filters', help_text=_('The object type(s) to which this filter applies.') ) @@ -521,7 +603,7 @@ class ImageAttachment(ChangeLoggedModel): An uploaded image which is associated with an object. """ content_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.CASCADE ) object_id = models.PositiveBigIntegerField() @@ -552,6 +634,9 @@ class ImageAttachment(ChangeLoggedModel): class Meta: ordering = ('name', 'pk') # name may be non-unique + indexes = ( + models.Index(fields=('content_type', 'object_id')), + ) verbose_name = _('image attachment') verbose_name_plural = _('image attachments') @@ -561,6 +646,15 @@ class ImageAttachment(ChangeLoggedModel): filename = self.image.name.rsplit('/', 1)[-1] return filename.split('_', 2)[2] + def clean(self): + super().clean() + + # Validate the assigned object type + if self.content_type not in ContentType.objects.with_feature('image_attachments'): + raise ValidationError( + _("Image attachments cannot be assigned to this object type ({type}).").format(type=self.content_type) + ) + def delete(self, *args, **kwargs): _name = self.image.name @@ -606,7 +700,7 @@ class JournalEntry(CustomFieldsMixin, CustomLinksMixin, TagsMixin, ExportTemplat might record a new journal entry when a device undergoes maintenance, or when a prefix is expanded. """ assigned_object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.CASCADE ) assigned_object_id = models.PositiveBigIntegerField() @@ -632,6 +726,9 @@ class JournalEntry(CustomFieldsMixin, CustomLinksMixin, TagsMixin, ExportTemplat class Meta: ordering = ('-created',) + indexes = ( + models.Index(fields=('assigned_object_type', 'assigned_object_id')), + ) verbose_name = _('journal entry') verbose_name_plural = _('journal entries') @@ -645,9 +742,8 @@ class JournalEntry(CustomFieldsMixin, CustomLinksMixin, TagsMixin, ExportTemplat def clean(self): super().clean() - # Prevent the creation of journal entries on unsupported models - permitted_types = ContentType.objects.filter(FeatureQuery('journaling').get_query()) - if self.assigned_object_type not in permitted_types: + # Validate the assigned object type + if self.assigned_object_type not in ContentType.objects.with_feature('journaling'): raise ValidationError( _("Journaling is not supported for this object type ({type}).").format(type=self.assigned_object_type) ) @@ -665,7 +761,7 @@ class Bookmark(models.Model): auto_now_add=True ) object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.PROTECT ) object_id = models.PositiveBigIntegerField() @@ -682,6 +778,9 @@ class Bookmark(models.Model): class Meta: ordering = ('created', 'pk') + indexes = ( + models.Index(fields=('object_type', 'object_id')), + ) constraints = ( models.UniqueConstraint( fields=('object_type', 'object_id', 'user'), @@ -696,52 +795,11 @@ class Bookmark(models.Model): return str(self.object) return super().__str__() + def clean(self): + super().clean() -class ConfigRevision(models.Model): - """ - An atomic revision of NetBox's configuration. - """ - created = models.DateTimeField( - verbose_name=_('created'), - auto_now_add=True - ) - comment = models.CharField( - verbose_name=_('comment'), - max_length=200, - blank=True - ) - data = models.JSONField( - blank=True, - null=True, - verbose_name=_('configuration data') - ) - - objects = RestrictedQuerySet.as_manager() - - class Meta: - ordering = ['-created'] - verbose_name = _('config revision') - verbose_name_plural = _('config revisions') - - def __str__(self): - return f'Config revision #{self.pk} ({self.created})' - - def __getattr__(self, item): - if item in self.data: - return self.data[item] - return super().__getattribute__(item) - - def get_absolute_url(self): - return reverse('extras:configrevision', args=[self.pk]) - - def activate(self): - """ - Cache the configuration data. - """ - cache.set('config', self.data, None) - cache.set('config_version', self.pk, None) - activate.alters_data = True - - @admin.display(boolean=True) - def is_active(self): - return cache.get('config_version') == self.pk + # Validate the assigned object type + if self.object_type not in ContentType.objects.with_feature('bookmarks'): + raise ValidationError( + _("Bookmarks cannot be assigned to this object type ({type}).").format(type=self.object_type) + ) diff --git a/netbox/extras/models/reports.py b/netbox/extras/models/reports.py index 223d679bd..f6228ef24 100644 --- a/netbox/extras/models/reports.py +++ b/netbox/extras/models/reports.py @@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _ from core.choices import ManagedFileRootPathChoices from core.models import ManagedFile from extras.utils import is_report -from netbox.models.features import JobsMixin, WebhooksMixin +from netbox.models.features import JobsMixin, EventRulesMixin from utilities.querysets import RestrictedQuerySet from .mixins import PythonModuleMixin @@ -21,7 +21,7 @@ __all__ = ( ) -class Report(WebhooksMixin, models.Model): +class Report(EventRulesMixin, models.Model): """ Dummy model used to generate permissions for reports. Does not exist in the database. """ diff --git a/netbox/extras/models/scripts.py b/netbox/extras/models/scripts.py index 122f56f20..93275acda 100644 --- a/netbox/extras/models/scripts.py +++ b/netbox/extras/models/scripts.py @@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _ from core.choices import ManagedFileRootPathChoices from core.models import ManagedFile from extras.utils import is_script -from netbox.models.features import JobsMixin, WebhooksMixin +from netbox.models.features import JobsMixin, EventRulesMixin from utilities.querysets import RestrictedQuerySet from .mixins import PythonModuleMixin @@ -21,7 +21,7 @@ __all__ = ( logger = logging.getLogger('netbox.data_backends') -class Script(WebhooksMixin, models.Model): +class Script(EventRulesMixin, models.Model): """ Dummy model used to generate permissions for custom scripts. Does not exist in the database. """ diff --git a/netbox/extras/models/search.py b/netbox/extras/models/search.py index debe4c648..9ba779642 100644 --- a/netbox/extras/models/search.py +++ b/netbox/extras/models/search.py @@ -1,10 +1,12 @@ import uuid -from django.contrib.contenttypes.models import ContentType from django.db import models from django.utils.translation import gettext_lazy as _ +from netbox.search.utils import get_indexer +from netbox.registry import registry from utilities.fields import RestrictedGenericForeignKey +from utilities.utils import content_type_identifier from ..fields import CachedValueField __all__ = ( @@ -24,7 +26,7 @@ class CachedValue(models.Model): editable=False ) object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.CASCADE, related_name='+' ) @@ -49,10 +51,28 @@ class CachedValue(models.Model): default=1000 ) + _netbox_private = True + class Meta: - ordering = ('weight', 'object_type', 'object_id') + ordering = ('weight', 'object_type', 'value', 'object_id') verbose_name = _('cached value') verbose_name_plural = _('cached values') def __str__(self): return f'{self.object_type} {self.object_id}: {self.field}={self.value}' + + @property + def display_attrs(self): + """ + Render any display attributes associated with this search result. + """ + indexer = get_indexer(self.object_type) + attrs = {} + for attr in indexer.display_attrs: + name = self.object._meta.get_field(attr).verbose_name + if value := getattr(self.object, attr): + if display_func := getattr(self.object, f'get_{attr}_display', None): + attrs[name] = display_func() + else: + attrs[name] = value + return attrs diff --git a/netbox/extras/models/staging.py b/netbox/extras/models/staging.py index b0df9e26e..f15d8d470 100644 --- a/netbox/extras/models/staging.py +++ b/netbox/extras/models/staging.py @@ -2,12 +2,12 @@ import logging from django.contrib.auth import get_user_model from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType from django.db import models, transaction from django.utils.translation import gettext_lazy as _ from extras.choices import ChangeActionChoices from netbox.models import ChangeLoggedModel +from netbox.models.features import * from utilities.utils import deserialize_object __all__ = ( @@ -55,7 +55,7 @@ class Branch(ChangeLoggedModel): self.staged_changes.all().delete() -class StagedChange(ChangeLoggedModel): +class StagedChange(CustomValidationMixin, EventRulesMixin, models.Model): """ The prepared creation, modification, or deletion of an object to be applied to the active database at a future point. @@ -71,7 +71,7 @@ class StagedChange(ChangeLoggedModel): choices=ChangeActionChoices ) object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.CASCADE, related_name='+' ) @@ -91,6 +91,9 @@ class StagedChange(ChangeLoggedModel): class Meta: ordering = ('pk',) + indexes = ( + models.Index(fields=('object_type', 'object_id')), + ) verbose_name = _('staged change') verbose_name_plural = _('staged changes') diff --git a/netbox/extras/models/tags.py b/netbox/extras/models/tags.py index f4ba5ea64..3aba6df60 100644 --- a/netbox/extras/models/tags.py +++ b/netbox/extras/models/tags.py @@ -1,13 +1,10 @@ from django.conf import settings -from django.contrib.contenttypes.models import ContentType -from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse from django.utils.text import slugify from django.utils.translation import gettext_lazy as _ from taggit.models import TagBase, GenericTaggedItemBase -from extras.utils import FeatureQuery from netbox.models import ChangeLoggedModel from netbox.models.features import CloningMixin, ExportTemplatesMixin from utilities.choices import ColorChoices @@ -37,9 +34,8 @@ class Tag(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel, TagBase): blank=True, ) object_types = models.ManyToManyField( - to=ContentType, + to='contenttypes.ContentType', related_name='+', - limit_choices_to=FeatureQuery('tags'), blank=True, help_text=_("The object type(s) to which this this tag can be applied.") ) @@ -75,6 +71,8 @@ class TaggedItem(GenericTaggedItemBase): on_delete=models.CASCADE ) + _netbox_private = True + class Meta: indexes = [models.Index(fields=["content_type", "object_id"])] verbose_name = _('tagged item') diff --git a/netbox/extras/plugins/__init__.py b/netbox/extras/plugins/__init__.py index 8736a3197..31ea1ce09 100644 --- a/netbox/extras/plugins/__init__.py +++ b/netbox/extras/plugins/__init__.py @@ -1,147 +1,9 @@ -import collections -from importlib import import_module - -from django.apps import AppConfig -from django.core.exceptions import ImproperlyConfigured -from django.utils.module_loading import import_string -from packaging import version - -from netbox.registry import registry -from netbox.search import register_search from .navigation import * from .registration import * from .templates import * - -# Initialize plugin registry -registry['plugins'].update({ - 'graphql_schemas': [], - 'menus': [], - 'menu_items': {}, - 'preferences': {}, - 'template_extensions': collections.defaultdict(list), -}) - -DEFAULT_RESOURCE_PATHS = { - 'search_indexes': 'search.indexes', - 'graphql_schema': 'graphql.schema', - 'menu': 'navigation.menu', - 'menu_items': 'navigation.menu_items', - 'template_extensions': 'template_content.template_extensions', - 'user_preferences': 'preferences.preferences', -} +from .utils import * +from netbox.plugins import PluginConfig -# -# Plugin AppConfig class -# - -class PluginConfig(AppConfig): - """ - Subclass of Django's built-in AppConfig class, to be used for NetBox plugins. - """ - # Plugin metadata - author = '' - author_email = '' - description = '' - version = '' - - # Root URL path under /plugins. If not set, the plugin's label will be used. - base_url = None - - # Minimum/maximum compatible versions of NetBox - min_version = None - max_version = None - - # Default configuration parameters - default_settings = {} - - # Mandatory configuration parameters - required_settings = [] - - # Middleware classes provided by the plugin - middleware = [] - - # Django-rq queues dedicated to the plugin - queues = [] - - # Django apps to append to INSTALLED_APPS when plugin requires them. - django_apps = [] - - # Optional plugin resources - search_indexes = None - graphql_schema = None - menu = None - menu_items = None - template_extensions = None - user_preferences = None - - def _load_resource(self, name): - # Import from the configured path, if defined. - if path := getattr(self, name, None): - return import_string(f"{self.__module__}.{path}") - - # Fall back to the resource's default path. Return None if the module has not been provided. - default_path = f'{self.__module__}.{DEFAULT_RESOURCE_PATHS[name]}' - default_module, resource_name = default_path.rsplit('.', 1) - try: - module = import_module(default_module) - return getattr(module, resource_name, None) - except ModuleNotFoundError: - pass - - def ready(self): - plugin_name = self.name.rsplit('.', 1)[-1] - - # Register search extensions (if defined) - search_indexes = self._load_resource('search_indexes') or [] - for idx in search_indexes: - register_search(idx) - - # Register template content (if defined) - if template_extensions := self._load_resource('template_extensions'): - register_template_extensions(template_extensions) - - # Register navigation menu and/or menu items (if defined) - if menu := self._load_resource('menu'): - register_menu(menu) - if menu_items := self._load_resource('menu_items'): - register_menu_items(self.verbose_name, menu_items) - - # Register GraphQL schema (if defined) - if graphql_schema := self._load_resource('graphql_schema'): - register_graphql_schema(graphql_schema) - - # Register user preferences (if defined) - if user_preferences := self._load_resource('user_preferences'): - register_user_preferences(plugin_name, user_preferences) - - @classmethod - def validate(cls, user_config, netbox_version): - - # Enforce version constraints - current_version = version.parse(netbox_version) - if cls.min_version is not None: - min_version = version.parse(cls.min_version) - if current_version < min_version: - raise ImproperlyConfigured( - f"Plugin {cls.__module__} requires NetBox minimum version {cls.min_version}." - ) - if cls.max_version is not None: - max_version = version.parse(cls.max_version) - if current_version > max_version: - raise ImproperlyConfigured( - f"Plugin {cls.__module__} requires NetBox maximum version {cls.max_version}." - ) - - # Verify required configuration settings - for setting in cls.required_settings: - if setting not in user_config: - raise ImproperlyConfigured( - f"Plugin {cls.__module__} requires '{setting}' to be present in the PLUGINS_CONFIG section of " - f"configuration.py." - ) - - # Apply default configuration values - for setting, value in cls.default_settings.items(): - if setting not in user_config: - user_config[setting] = value +# TODO: Remove in v4.0 +warnings.warn(f"{__name__} is deprecated. Import from netbox.plugins instead.", DeprecationWarning) diff --git a/netbox/extras/plugins/navigation.py b/netbox/extras/plugins/navigation.py index 288a78512..08d1baa54 100644 --- a/netbox/extras/plugins/navigation.py +++ b/netbox/extras/plugins/navigation.py @@ -1,71 +1,7 @@ -from netbox.navigation import MenuGroup -from utilities.choices import ButtonColorChoices -from django.utils.text import slugify +import warnings -__all__ = ( - 'PluginMenu', - 'PluginMenuButton', - 'PluginMenuItem', -) +from netbox.plugins.navigation import * -class PluginMenu: - icon_class = 'mdi mdi-puzzle' - - def __init__(self, label, groups, icon_class=None): - self.label = label - self.groups = [ - MenuGroup(label, items) for label, items in groups - ] - if icon_class is not None: - self.icon_class = icon_class - - @property - def name(self): - return slugify(self.label) - - -class PluginMenuItem: - """ - This class represents a navigation menu item. This constitutes primary link and its text, but also allows for - specifying additional link buttons that appear to the right of the item in the van menu. - - Links are specified as Django reverse URL strings. - Buttons are each specified as a list of PluginMenuButton instances. - """ - permissions = [] - buttons = [] - - def __init__(self, link, link_text, permissions=None, buttons=None): - self.link = link - self.link_text = link_text - if permissions is not None: - if type(permissions) not in (list, tuple): - raise TypeError("Permissions must be passed as a tuple or list.") - self.permissions = permissions - if buttons is not None: - if type(buttons) not in (list, tuple): - raise TypeError("Buttons must be passed as a tuple or list.") - self.buttons = buttons - - -class PluginMenuButton: - """ - This class represents a button within a PluginMenuItem. Note that button colors should come from - ButtonColorChoices. - """ - color = ButtonColorChoices.DEFAULT - permissions = [] - - def __init__(self, link, title, icon_class, color=None, permissions=None): - self.link = link - self.title = title - self.icon_class = icon_class - if permissions is not None: - if type(permissions) not in (list, tuple): - raise TypeError("Permissions must be passed as a tuple or list.") - self.permissions = permissions - if color is not None: - if color not in ButtonColorChoices.values(): - raise ValueError("Button color must be a choice within ButtonColorChoices.") - self.color = color +# TODO: Remove in v4.0 +warnings.warn(f"{__name__} is deprecated. Import from netbox.plugins instead.", DeprecationWarning) diff --git a/netbox/extras/plugins/registration.py b/netbox/extras/plugins/registration.py index 5b7e58172..8d2d85573 100644 --- a/netbox/extras/plugins/registration.py +++ b/netbox/extras/plugins/registration.py @@ -1,64 +1,7 @@ -import inspect +import warnings -from netbox.registry import registry -from .navigation import PluginMenu, PluginMenuButton, PluginMenuItem -from .templates import PluginTemplateExtension - -__all__ = ( - 'register_graphql_schema', - 'register_menu', - 'register_menu_items', - 'register_template_extensions', - 'register_user_preferences', -) +from netbox.plugins.registration import * -def register_template_extensions(class_list): - """ - Register a list of PluginTemplateExtension classes - """ - # Validation - for template_extension in class_list: - if not inspect.isclass(template_extension): - raise TypeError(f"PluginTemplateExtension class {template_extension} was passed as an instance!") - if not issubclass(template_extension, PluginTemplateExtension): - raise TypeError(f"{template_extension} is not a subclass of extras.plugins.PluginTemplateExtension!") - if template_extension.model is None: - raise TypeError(f"PluginTemplateExtension class {template_extension} does not define a valid model!") - - registry['plugins']['template_extensions'][template_extension.model].append(template_extension) - - -def register_menu(menu): - if not isinstance(menu, PluginMenu): - raise TypeError(f"{menu} must be an instance of extras.plugins.PluginMenu") - registry['plugins']['menus'].append(menu) - - -def register_menu_items(section_name, class_list): - """ - Register a list of PluginMenuItem instances for a given menu section (e.g. plugin name) - """ - # Validation - for menu_link in class_list: - if not isinstance(menu_link, PluginMenuItem): - raise TypeError(f"{menu_link} must be an instance of extras.plugins.PluginMenuItem") - for button in menu_link.buttons: - if not isinstance(button, PluginMenuButton): - raise TypeError(f"{button} must be an instance of extras.plugins.PluginMenuButton") - - registry['plugins']['menu_items'][section_name] = class_list - - -def register_graphql_schema(graphql_schema): - """ - Register a GraphQL schema class for inclusion in NetBox's GraphQL API. - """ - registry['plugins']['graphql_schemas'].append(graphql_schema) - - -def register_user_preferences(plugin_name, preferences): - """ - Register a list of user preferences defined by a plugin. - """ - registry['plugins']['preferences'][plugin_name] = preferences +# TODO: Remove in v4.0 +warnings.warn(f"{__name__} is deprecated. Import from netbox.plugins instead.", DeprecationWarning) diff --git a/netbox/extras/plugins/templates.py b/netbox/extras/plugins/templates.py index e9b9a9dca..0e09f33d2 100644 --- a/netbox/extras/plugins/templates.py +++ b/netbox/extras/plugins/templates.py @@ -1,73 +1,7 @@ -from django.template.loader import get_template +import warnings -__all__ = ( - 'PluginTemplateExtension', -) +from netbox.plugins.templates import * -class PluginTemplateExtension: - """ - This class is used to register plugin content to be injected into core NetBox templates. It contains methods - that are overridden by plugin authors to return template content. - - The `model` attribute on the class defines the which model detail page this class renders content for. It - should be set as a string in the form '.'. render() provides the following context data: - - * object - The object being viewed - * request - The current request - * settings - Global NetBox settings - * config - Plugin-specific configuration parameters - """ - model = None - - def __init__(self, context): - self.context = context - - def render(self, template_name, extra_context=None): - """ - Convenience method for rendering the specified Django template using the default context data. An additional - context dictionary may be passed as `extra_context`. - """ - if extra_context is None: - extra_context = {} - elif not isinstance(extra_context, dict): - raise TypeError("extra_context must be a dictionary") - - return get_template(template_name).render({**self.context, **extra_context}) - - def left_page(self): - """ - Content that will be rendered on the left of the detail page view. Content should be returned as an - HTML string. Note that content does not need to be marked as safe because this is automatically handled. - """ - raise NotImplementedError - - def right_page(self): - """ - Content that will be rendered on the right of the detail page view. Content should be returned as an - HTML string. Note that content does not need to be marked as safe because this is automatically handled. - """ - raise NotImplementedError - - def full_width_page(self): - """ - Content that will be rendered within the full width of the detail page view. Content should be returned as an - HTML string. Note that content does not need to be marked as safe because this is automatically handled. - """ - raise NotImplementedError - - def buttons(self): - """ - Buttons that will be rendered and added to the existing list of buttons on the detail page view. Content - should be returned as an HTML string. Note that content does not need to be marked as safe because this is - automatically handled. - """ - raise NotImplementedError - - def list_buttons(self): - """ - Buttons that will be rendered and added to the existing list of buttons on the list view. Content - should be returned as an HTML string. Note that content does not need to be marked as safe because this is - automatically handled. - """ - raise NotImplementedError +# TODO: Remove in v4.0 +warnings.warn(f"{__name__} is deprecated. Import from netbox.plugins instead.", DeprecationWarning) diff --git a/netbox/extras/plugins/urls.py b/netbox/extras/plugins/urls.py index 2f237f56a..8b24e8fd2 100644 --- a/netbox/extras/plugins/urls.py +++ b/netbox/extras/plugins/urls.py @@ -1,41 +1,7 @@ -from importlib import import_module +import warnings -from django.apps import apps -from django.conf import settings -from django.conf.urls import include -from django.contrib.admin.views.decorators import staff_member_required -from django.urls import path -from django.utils.module_loading import import_string, module_has_submodule +from netbox.plugins.urls import * -from . import views -# Initialize URL base, API, and admin URL patterns for plugins -plugin_patterns = [] -plugin_api_patterns = [ - path('', views.PluginsAPIRootView.as_view(), name='api-root'), - path('installed-plugins/', views.InstalledPluginsAPIView.as_view(), name='plugins-list') -] -plugin_admin_patterns = [ - path('installed-plugins/', staff_member_required(views.InstalledPluginsAdminView.as_view()), name='plugins_list') -] - -# Register base/API URL patterns for each plugin -for plugin_path in settings.PLUGINS: - plugin = import_module(plugin_path) - plugin_name = plugin_path.split('.')[-1] - app = apps.get_app_config(plugin_name) - base_url = getattr(app, 'base_url') or app.label - - # Check if the plugin specifies any base URLs - if module_has_submodule(plugin, 'urls'): - urlpatterns = import_string(f"{plugin_path}.urls.urlpatterns") - plugin_patterns.append( - path(f"{base_url}/", include((urlpatterns, app.label))) - ) - - # Check if the plugin specifies any API URLs - if module_has_submodule(plugin, 'api.urls'): - urlpatterns = import_string(f"{plugin_path}.api.urls.urlpatterns") - plugin_api_patterns.append( - path(f"{base_url}/", include((urlpatterns, f"{app.label}-api"))) - ) +# TODO: Remove in v4.0 +warnings.warn(f"{__name__} is deprecated. Import from netbox.plugins instead.", DeprecationWarning) diff --git a/netbox/extras/plugins/utils.py b/netbox/extras/plugins/utils.py index c260f156d..15ae018d1 100644 --- a/netbox/extras/plugins/utils.py +++ b/netbox/extras/plugins/utils.py @@ -1,37 +1,7 @@ -from django.apps import apps -from django.conf import settings -from django.core.exceptions import ImproperlyConfigured +import warnings -__all__ = ( - 'get_installed_plugins', - 'get_plugin_config', -) +from netbox.plugins.utils import * -def get_installed_plugins(): - """ - Return a dictionary mapping the names of installed plugins to their versions. - """ - plugins = {} - for plugin_name in settings.PLUGINS: - plugin_name = plugin_name.rsplit('.', 1)[-1] - plugin_config = apps.get_app_config(plugin_name) - plugins[plugin_name] = getattr(plugin_config, 'version', None) - - return dict(sorted(plugins.items())) - - -def get_plugin_config(plugin_name, parameter, default=None): - """ - Return the value of the specified plugin configuration parameter. - - Args: - plugin_name: The name of the plugin - parameter: The name of the configuration parameter - default: The value to return if the parameter is not defined (default: None) - """ - try: - plugin_config = settings.PLUGINS_CONFIG[plugin_name] - return plugin_config.get(parameter, default) - except KeyError: - raise ImproperlyConfigured(f"Plugin {plugin_name} is not registered.") +# TODO: Remove in v4.0 +warnings.warn(f"{__name__} is deprecated. Import from netbox.plugins instead.", DeprecationWarning) diff --git a/netbox/extras/plugins/views.py b/netbox/extras/plugins/views.py index 5971f78ef..505742e6b 100644 --- a/netbox/extras/plugins/views.py +++ b/netbox/extras/plugins/views.py @@ -1,89 +1,7 @@ -from collections import OrderedDict +import warnings -from django.apps import apps -from django.conf import settings -from django.shortcuts import render -from django.urls.exceptions import NoReverseMatch -from django.views.generic import View -from drf_spectacular.utils import extend_schema -from rest_framework import permissions -from rest_framework.response import Response -from rest_framework.reverse import reverse -from rest_framework.views import APIView +from netbox.plugins.views import * -class InstalledPluginsAdminView(View): - """ - Admin view for listing all installed plugins - """ - def get(self, request): - plugins = [apps.get_app_config(plugin) for plugin in settings.PLUGINS] - return render(request, 'extras/admin/plugins_list.html', { - 'plugins': plugins, - }) - - -@extend_schema(exclude=True) -class InstalledPluginsAPIView(APIView): - """ - API view for listing all installed plugins - """ - permission_classes = [permissions.IsAdminUser] - _ignore_model_permissions = True - schema = None - - def get_view_name(self): - return "Installed Plugins" - - @staticmethod - def _get_plugin_data(plugin_app_config): - return { - 'name': plugin_app_config.verbose_name, - 'package': plugin_app_config.name, - 'author': plugin_app_config.author, - 'author_email': plugin_app_config.author_email, - 'description': plugin_app_config.description, - 'version': plugin_app_config.version - } - - def get(self, request, format=None): - return Response([self._get_plugin_data(apps.get_app_config(plugin)) for plugin in settings.PLUGINS]) - - -@extend_schema(exclude=True) -class PluginsAPIRootView(APIView): - _ignore_model_permissions = True - schema = None - - def get_view_name(self): - return "Plugins" - - @staticmethod - def _get_plugin_entry(plugin, app_config, request, format): - # Check if the plugin specifies any API URLs - api_app_name = f'{app_config.name}-api' - try: - entry = (getattr(app_config, 'base_url', app_config.label), reverse( - f"plugins-api:{api_app_name}:api-root", - request=request, - format=format - )) - except NoReverseMatch: - # The plugin does not include an api-root url - entry = None - - return entry - - def get(self, request, format=None): - - entries = [] - for plugin in settings.PLUGINS: - app_config = apps.get_app_config(plugin) - entry = self._get_plugin_entry(plugin, app_config, request, format) - if entry is not None: - entries.append(entry) - - return Response(OrderedDict(( - ('installed-plugins', reverse('plugins-api:plugins-list', request=request, format=format)), - *entries - ))) +# TODO: Remove in v4.0 +warnings.warn(f"{__name__} is deprecated. Import from netbox.plugins instead.", DeprecationWarning) diff --git a/netbox/extras/reports.py b/netbox/extras/reports.py index 6af81a9d9..90641cc84 100644 --- a/netbox/extras/reports.py +++ b/netbox/extras/reports.py @@ -23,7 +23,7 @@ logger = logging.getLogger(__name__) def get_module_and_report(module_name, report_name): module = ReportModule.objects.get(file_path=f'{module_name}.py') - report = module.reports.get(report_name) + report = module.reports.get(report_name)() return module, report @@ -40,8 +40,8 @@ def run_report(job, *args, **kwargs): try: report.run(job) - except Exception: - job.terminate(status=JobStatusChoices.STATUS_ERRORED) + except Exception as e: + job.terminate(status=JobStatusChoices.STATUS_ERRORED, error=repr(e)) logging.error(f"Error during execution of report {job.name}") finally: # Schedule the next job if an interval has been set @@ -106,8 +106,6 @@ class Report(object): 'failure': 0, 'log': [], } - if not test_methods: - raise Exception("A report must contain at least one test method.") self.test_methods = test_methods @classproperty @@ -137,6 +135,13 @@ class Report(object): def source(self): return inspect.getsource(self.__class__) + @property + def is_valid(self): + """ + Indicates whether the report can be run. + """ + return bool(self.test_methods) + # # Logging methods # @@ -225,7 +230,7 @@ class Report(object): stacktrace = traceback.format_exc() self.log_failure(None, f"An exception occurred: {type(e).__name__}: {e}
    {stacktrace}
    ") logger.error(f"Exception raised during report execution: {e}") - job.terminate(status=JobStatusChoices.STATUS_ERRORED) + job.terminate(status=JobStatusChoices.STATUS_ERRORED, error=repr(e)) # Perform any post-run tasks self.post_run() diff --git a/netbox/extras/scripts.py b/netbox/extras/scripts.py index 9fa31db31..f28465547 100644 --- a/netbox/extras/scripts.py +++ b/netbox/extras/scripts.py @@ -17,13 +17,13 @@ from core.models import Job from extras.api.serializers import ScriptOutputSerializer from extras.choices import LogLevelChoices from extras.models import ScriptModule -from extras.signals import clear_webhooks +from extras.signals import clear_events from ipam.formfields import IPAddressFormField, IPNetworkFormField from ipam.validators import MaxPrefixLengthValidator, MinPrefixLengthValidator, prefix_validator from utilities.exceptions import AbortScript, AbortTransaction from utilities.forms import add_blank_choice from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField -from .context_managers import change_logging +from .context_managers import event_tracking from .forms import ScriptForm __all__ = ( @@ -401,23 +401,23 @@ class BaseScript: def log_debug(self, message): self.logger.log(logging.DEBUG, message) - self.log.append((LogLevelChoices.LOG_DEFAULT, message)) + self.log.append((LogLevelChoices.LOG_DEFAULT, str(message))) def log_success(self, message): self.logger.log(logging.INFO, message) # No syslog equivalent for SUCCESS - self.log.append((LogLevelChoices.LOG_SUCCESS, message)) + self.log.append((LogLevelChoices.LOG_SUCCESS, str(message))) def log_info(self, message): self.logger.log(logging.INFO, message) - self.log.append((LogLevelChoices.LOG_INFO, message)) + self.log.append((LogLevelChoices.LOG_INFO, str(message))) def log_warning(self, message): self.logger.log(logging.WARNING, message) - self.log.append((LogLevelChoices.LOG_WARNING, message)) + self.log.append((LogLevelChoices.LOG_WARNING, str(message))) def log_failure(self, message): self.logger.log(logging.ERROR, message) - self.log.append((LogLevelChoices.LOG_FAILURE, message)) + self.log.append((LogLevelChoices.LOG_FAILURE, str(message))) # Convenience functions @@ -472,10 +472,16 @@ def get_module_and_script(module_name, script_name): return module, script -def run_script(data, request, job, commit=True, **kwargs): +def run_script(data, job, request=None, commit=True, **kwargs): """ A wrapper for calling Script.run(). This performs error handling and provides a hook for committing changes. It exists outside the Script class to ensure it cannot be overridden by a script author. + + Args: + data: A dictionary of data to be passed to the script upon execution + job: The Job associated with this execution + request: The WSGI request associated with this execution (if any) + commit: Passed through to Script.run() """ job.start() @@ -486,9 +492,10 @@ def run_script(data, request, job, commit=True, **kwargs): logger.info(f"Running script (commit={commit})") # Add files to form data - files = request.FILES - for field_name, fileobj in files.items(): - data[field_name] = fileobj + if request: + files = request.FILES + for field_name, fileobj in files.items(): + data[field_name] = fileobj # Add the current request as a property of the script script.request = request @@ -496,7 +503,7 @@ def run_script(data, request, job, commit=True, **kwargs): def _run_script(): """ Core script execution task. We capture this within a subfunction to allow for conditionally wrapping it with - the change_logging context manager (which is bypassed if commit == False). + the event_tracking context manager (which is bypassed if commit == False). """ try: try: @@ -506,7 +513,8 @@ def run_script(data, request, job, commit=True, **kwargs): raise AbortTransaction() except AbortTransaction: script.log_info("Database changes have been reverted automatically.") - clear_webhooks.send(request) + if request: + clear_events.send(request) job.data = ScriptOutputSerializer(script).data job.terminate() except Exception as e: @@ -519,15 +527,16 @@ def run_script(data, request, job, commit=True, **kwargs): logger.error(f"Exception raised during script execution: {e}") script.log_info("Database changes have been reverted due to error.") job.data = ScriptOutputSerializer(script).data - job.terminate(status=JobStatusChoices.STATUS_ERRORED) - clear_webhooks.send(request) + job.terminate(status=JobStatusChoices.STATUS_ERRORED, error=repr(e)) + if request: + clear_events.send(request) logger.info(f"Script completed in {job.duration}") - # Execute the script. If commit is True, wrap it with the change_logging context manager to ensure we process - # change logging, webhooks, etc. + # Execute the script. If commit is True, wrap it with the event_tracking context manager to ensure we process + # change logging, event rules, etc. if commit: - with change_logging(request): + with event_tracking(request): _run_script() else: _run_script() diff --git a/netbox/extras/search.py b/netbox/extras/search.py index da4aa1c84..fff59fa77 100644 --- a/netbox/extras/search.py +++ b/netbox/extras/search.py @@ -9,3 +9,14 @@ class JournalEntryIndex(SearchIndex): ('comments', 5000), ) category = 'Journal' + display_attrs = ('kind', 'created_by') + + +@register_search +class WebhookEntryIndex(SearchIndex): + model = models.Webhook + fields = ( + ('name', 100), + ('description', 500), + ) + display_attrs = ('description',) diff --git a/netbox/extras/signals.py b/netbox/extras/signals.py index d6550309f..798a9f442 100644 --- a/netbox/extras/signals.py +++ b/netbox/extras/signals.py @@ -2,25 +2,31 @@ import importlib import logging from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ValidationError from django.db.models.signals import m2m_changed, post_save, pre_delete from django.dispatch import receiver, Signal +from django.utils.translation import gettext_lazy as _ from django_prometheus.models import model_deletes, model_inserts, model_updates +from core.signals import job_end, job_start +from extras.constants import EVENT_JOB_END, EVENT_JOB_START +from extras.events import process_event_rules +from extras.models import EventRule from extras.validators import CustomValidator from netbox.config import get_config -from netbox.context import current_request, webhooks_queue +from netbox.context import current_request, events_queue from netbox.signals import post_clean from utilities.exceptions import AbortRequest from .choices import ObjectChangeActionChoices -from .models import ConfigRevision, CustomField, ObjectChange, TaggedItem -from .webhooks import enqueue_object, get_snapshots, serialize_for_webhook +from .events import enqueue_object, get_snapshots, serialize_for_event +from .models import CustomField, ObjectChange, TaggedItem # # Change logging/webhooks # -# Define a custom signal that can be sent to clear any queued webhooks -clear_webhooks = Signal() +# Define a custom signal that can be sent to clear any queued events +clear_events = Signal() def is_same_object(instance, webhook_data, request_id): @@ -63,30 +69,30 @@ def handle_changed_object(sender, instance, **kwargs): return # Record an ObjectChange if applicable - if hasattr(instance, 'to_objectchange'): - if m2m_changed: - ObjectChange.objects.filter( - changed_object_type=ContentType.objects.get_for_model(instance), - changed_object_id=instance.pk, - request_id=request.id - ).update( - postchange_data=instance.to_objectchange(action).postchange_data - ) - else: - objectchange = instance.to_objectchange(action) + if m2m_changed: + ObjectChange.objects.filter( + changed_object_type=ContentType.objects.get_for_model(instance), + changed_object_id=instance.pk, + request_id=request.id + ).update( + postchange_data=instance.to_objectchange(action).postchange_data + ) + else: + objectchange = instance.to_objectchange(action) + if objectchange and objectchange.has_changes: objectchange.user = request.user objectchange.request_id = request.id objectchange.save() # If this is an M2M change, update the previously queued webhook (from post_save) - queue = webhooks_queue.get() + queue = events_queue.get() if m2m_changed and queue and is_same_object(instance, queue[-1], request.id): instance.refresh_from_db() # Ensure that we're working with fresh M2M assignments - queue[-1]['data'] = serialize_for_webhook(instance) + queue[-1]['data'] = serialize_for_event(instance) queue[-1]['snapshots']['postchange'] = get_snapshots(instance, action)['postchange'] else: enqueue_object(queue, instance, request.user, request.id, action) - webhooks_queue.set(queue) + events_queue.set(queue) # Increment metric counters if action == ObjectChangeActionChoices.ACTION_CREATE: @@ -115,22 +121,22 @@ def handle_deleted_object(sender, instance, **kwargs): objectchange.save() # Enqueue webhooks - queue = webhooks_queue.get() + queue = events_queue.get() enqueue_object(queue, instance, request.user, request.id, ObjectChangeActionChoices.ACTION_DELETE) - webhooks_queue.set(queue) + events_queue.set(queue) # Increment metric counters model_deletes.labels(instance._meta.model_name).inc() -@receiver(clear_webhooks) -def clear_webhook_queue(sender, **kwargs): +@receiver(clear_events) +def clear_events_queue(sender, **kwargs): """ - Delete any queued webhooks (e.g. because of an aborted bulk transaction) + Delete any queued events (e.g. because of an aborted bulk transaction) """ - logger = logging.getLogger('webhooks') - logger.info(f"Clearing {len(webhooks_queue.get())} queued webhooks ({sender})") - webhooks_queue.set([]) + logger = logging.getLogger('events') + logger.info(f"Clearing {len(events_queue.get())} queued events ({sender})") + events_queue.set([]) # @@ -178,11 +184,7 @@ m2m_changed.connect(handle_cf_removed_obj_types, sender=CustomField.content_type # Custom validation # -@receiver(post_clean) -def run_custom_validators(sender, instance, **kwargs): - config = get_config() - model_name = f'{sender._meta.app_label}.{sender._meta.model_name}' - validators = config.CUSTOM_VALIDATORS.get(model_name, []) +def run_validators(instance, validators): for validator in validators: @@ -198,16 +200,27 @@ def run_custom_validators(sender, instance, **kwargs): validator(instance) -# -# Dynamic configuration -# +@receiver(post_clean) +def run_save_validators(sender, instance, **kwargs): + model_name = f'{sender._meta.app_label}.{sender._meta.model_name}' + validators = get_config().CUSTOM_VALIDATORS.get(model_name, []) -@receiver(post_save, sender=ConfigRevision) -def update_config(sender, instance, **kwargs): - """ - Update the cached NetBox configuration when a new ConfigRevision is created. - """ - instance.activate() + run_validators(instance, validators) + + +@receiver(pre_delete) +def run_delete_validators(sender, instance, **kwargs): + model_name = f'{sender._meta.app_label}.{sender._meta.model_name}' + validators = get_config().PROTECTION_RULES.get(model_name, []) + + try: + run_validators(instance, validators) + except ValidationError as e: + raise AbortRequest( + _("Deletion is prevented by a protection rule: {message}").format( + message=e + ) + ) # @@ -226,3 +239,25 @@ def validate_assigned_tags(sender, instance, action, model, pk_set, **kwargs): for tag in model.objects.filter(pk__in=pk_set, object_types__isnull=False).prefetch_related('object_types'): if ct not in tag.object_types.all(): raise AbortRequest(f"Tag {tag} cannot be assigned to {ct.model} objects.") + + +# +# Event rules +# + +@receiver(job_start) +def process_job_start_event_rules(sender, **kwargs): + """ + Process event rules for jobs starting. + """ + event_rules = EventRule.objects.filter(type_job_start=True, enabled=True, content_types=sender.object_type) + process_event_rules(event_rules, sender.object_type.model, EVENT_JOB_START, sender.data, sender.user.username) + + +@receiver(job_end) +def process_job_end_event_rules(sender, **kwargs): + """ + Process event rules for jobs terminating. + """ + event_rules = EventRule.objects.filter(type_job_end=True, enabled=True, content_types=sender.object_type) + process_event_rules(event_rules, sender.object_type.model, EVENT_JOB_END, sender.data, sender.user.username) diff --git a/netbox/extras/tables/tables.py b/netbox/extras/tables/tables.py index 9e14a2d27..8482c5e24 100644 --- a/netbox/extras/tables/tables.py +++ b/netbox/extras/tables/tables.py @@ -11,11 +11,11 @@ from .template_code import * __all__ = ( 'BookmarkTable', 'ConfigContextTable', - 'ConfigRevisionTable', 'ConfigTemplateTable', 'CustomFieldChoiceSetTable', 'CustomFieldTable', 'CustomLinkTable', + 'EventRuleTable', 'ExportTemplateTable', 'ImageAttachmentTable', 'JournalEntryTable', @@ -34,31 +34,6 @@ IMAGEATTACHMENT_IMAGE = ''' {% endif %} ''' -REVISION_BUTTONS = """ -{% if not record.is_active %} - - - -{% endif %} -""" - - -class ConfigRevisionTable(NetBoxTable): - is_active = columns.BooleanColumn( - verbose_name=_('Is Active'), - ) - actions = columns.ActionsColumn( - actions=('delete',), - extra_buttons=REVISION_BUTTONS - ) - - class Meta(NetBoxTable.Meta): - model = ConfigRevision - fields = ( - 'pk', 'id', 'is_active', 'created', 'comment', - ) - default_columns = ('pk', 'id', 'is_active', 'created', 'comment') - class CustomFieldTable(NetBoxTable): name = tables.Column( @@ -71,8 +46,11 @@ class CustomFieldTable(NetBoxTable): required = columns.BooleanColumn( verbose_name=_('Required') ) - ui_visibility = columns.ChoiceFieldColumn( - verbose_name=_('UI Visibility') + ui_visible = columns.ChoiceFieldColumn( + verbose_name=_('Visible') + ) + ui_editable = columns.ChoiceFieldColumn( + verbose_name=_('Editable') ) description = columns.MarkdownColumn( verbose_name=_('Description') @@ -94,8 +72,8 @@ class CustomFieldTable(NetBoxTable): model = CustomField fields = ( 'pk', 'id', 'name', 'content_types', 'label', 'type', 'group_name', 'required', 'default', 'description', - 'search_weight', 'filter_logic', 'ui_visibility', 'is_cloneable', 'weight', 'choice_set', 'choices', - 'created', 'last_updated', + 'search_weight', 'filter_logic', 'ui_visible', 'ui_editable', 'is_cloneable', 'weight', 'choice_set', + 'choices', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'content_types', 'label', 'group_name', 'type', 'required', 'description') @@ -273,6 +251,36 @@ class WebhookTable(NetBoxTable): verbose_name=_('Name'), linkify=True ) + ssl_validation = columns.BooleanColumn( + verbose_name=_('SSL Validation') + ) + tags = columns.TagColumn( + url_name='extras:webhook_list' + ) + + class Meta(NetBoxTable.Meta): + model = Webhook + fields = ( + 'pk', 'id', 'name', 'http_method', 'payload_url', 'http_content_type', 'secret', 'ssl_verification', + 'ca_file_path', 'description', 'tags', 'created', 'last_updated', + ) + default_columns = ( + 'pk', 'name', 'http_method', 'payload_url', 'description', + ) + + +class EventRuleTable(NetBoxTable): + name = tables.Column( + verbose_name=_('Name'), + linkify=True + ) + action_type = tables.Column( + verbose_name=_('Type'), + ) + action_object = tables.Column( + linkify=True, + verbose_name=_('Object'), + ) content_types = columns.ContentTypesColumn( verbose_name=_('Content Types'), ) @@ -294,23 +302,20 @@ class WebhookTable(NetBoxTable): type_job_end = columns.BooleanColumn( verbose_name=_('Job End') ) - ssl_validation = columns.BooleanColumn( - verbose_name=_('SSL Validation') - ) tags = columns.TagColumn( url_name='extras:webhook_list' ) class Meta(NetBoxTable.Meta): - model = Webhook + model = EventRule fields = ( - 'pk', 'id', 'name', 'content_types', 'enabled', 'type_create', 'type_update', 'type_delete', - 'type_job_start', 'type_job_end', 'http_method', 'payload_url', 'secret', 'ssl_validation', 'ca_file_path', - 'tags', 'created', 'last_updated', + 'pk', 'id', 'name', 'enabled', 'description', 'action_type', 'action_object', 'content_types', + 'type_create', 'type_update', 'type_delete', 'type_job_start', 'type_job_end', 'tags', 'created', + 'last_updated', ) default_columns = ( - 'pk', 'name', 'content_types', 'enabled', 'type_create', 'type_update', 'type_delete', 'type_job_start', - 'type_job_end', 'http_method', 'payload_url', + 'pk', 'name', 'enabled', 'action_type', 'action_object', 'content_types', 'type_create', 'type_update', + 'type_delete', 'type_job_start', 'type_job_end', ) diff --git a/netbox/extras/tests/test_api.py b/netbox/extras/tests/test_api.py index 255457f21..93be2d2c4 100644 --- a/netbox/extras/tests/test_api.py +++ b/netbox/extras/tests/test_api.py @@ -8,6 +8,7 @@ from rest_framework import status from core.choices import ManagedFileRootPathChoices from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Rack, Location, RackRole, Site +from extras.choices import * from extras.models import * from extras.reports import Report from extras.scripts import BooleanVar, IntegerVar, Script, StringVar @@ -32,53 +33,119 @@ class WebhookTest(APIViewTestCases.APIViewTestCase): brief_fields = ['display', 'id', 'name', 'url'] create_data = [ { - 'content_types': ['dcim.device', 'dcim.devicetype'], 'name': 'Webhook 4', - 'type_create': True, 'payload_url': 'http://example.com/?4', }, { - 'content_types': ['dcim.device', 'dcim.devicetype'], 'name': 'Webhook 5', - 'type_update': True, 'payload_url': 'http://example.com/?5', }, { - 'content_types': ['dcim.device', 'dcim.devicetype'], 'name': 'Webhook 6', - 'type_delete': True, 'payload_url': 'http://example.com/?6', }, ] bulk_update_data = { + 'description': 'New description', 'ssl_verification': False, } @classmethod def setUpTestData(cls): - site_ct = ContentType.objects.get_for_model(Site) - rack_ct = ContentType.objects.get_for_model(Rack) webhooks = ( Webhook( name='Webhook 1', - type_create=True, payload_url='http://example.com/?1', ), Webhook( name='Webhook 2', - type_update=True, payload_url='http://example.com/?1', ), Webhook( name='Webhook 3', - type_delete=True, payload_url='http://example.com/?1', ), ) Webhook.objects.bulk_create(webhooks) - for webhook in webhooks: - webhook.content_types.add(site_ct, rack_ct) + + +class EventRuleTest(APIViewTestCases.APIViewTestCase): + model = EventRule + brief_fields = ['display', 'id', 'name', 'url'] + bulk_update_data = { + 'enabled': False, + 'description': 'New description', + } + update_data = { + 'name': 'Event Rule X', + 'enabled': False, + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + webhooks = ( + Webhook( + name='Webhook 1', + payload_url='http://example.com/?1', + ), + Webhook( + name='Webhook 2', + payload_url='http://example.com/?1', + ), + Webhook( + name='Webhook 3', + payload_url='http://example.com/?1', + ), + Webhook( + name='Webhook 4', + payload_url='http://example.com/?1', + ), + Webhook( + name='Webhook 5', + payload_url='http://example.com/?1', + ), + Webhook( + name='Webhook 6', + payload_url='http://example.com/?1', + ), + ) + Webhook.objects.bulk_create(webhooks) + + event_rules = ( + EventRule(name='EventRule 1', type_create=True, action_object=webhooks[0]), + EventRule(name='EventRule 2', type_create=True, action_object=webhooks[1]), + EventRule(name='EventRule 3', type_create=True, action_object=webhooks[2]), + ) + EventRule.objects.bulk_create(event_rules) + + cls.create_data = [ + { + 'name': 'EventRule 4', + 'content_types': ['dcim.device', 'dcim.devicetype'], + 'type_create': True, + 'action_type': EventRuleActionChoices.WEBHOOK, + 'action_object_type': 'extras.webhook', + 'action_object_id': webhooks[3].pk, + }, + { + 'name': 'EventRule 5', + 'content_types': ['dcim.device', 'dcim.devicetype'], + 'type_create': True, + 'action_type': EventRuleActionChoices.WEBHOOK, + 'action_object_type': 'extras.webhook', + 'action_object_id': webhooks[4].pk, + }, + { + 'name': 'EventRule 6', + 'content_types': ['dcim.device', 'dcim.devicetype'], + 'type_create': True, + 'action_type': EventRuleActionChoices.WEBHOOK, + 'action_object_type': 'extras.webhook', + 'action_object_id': webhooks[5].pk, + }, + ] class CustomFieldTest(APIViewTestCases.APIViewTestCase): diff --git a/netbox/extras/tests/test_changelog.py b/netbox/extras/tests/test_changelog.py index 34fd72b2b..e144c5dee 100644 --- a/netbox/extras/tests/test_changelog.py +++ b/netbox/extras/tests/test_changelog.py @@ -1,4 +1,5 @@ from django.contrib.contenttypes.models import ContentType +from django.test import override_settings from django.urls import reverse from rest_framework import status @@ -207,6 +208,66 @@ class ChangeLogViewTest(ModelViewTestCase): self.assertEqual(objectchange.prechange_data['slug'], sites[0].slug) self.assertEqual(objectchange.postchange_data, None) + @override_settings(CHANGELOG_SKIP_EMPTY_CHANGES=False) + def test_update_object_change(self): + # Create a Site + site = Site.objects.create( + name='Site 1', + slug='site-1', + status=SiteStatusChoices.STATUS_PLANNED, + custom_field_data={ + 'cf1': None, + 'cf2': None + } + ) + + # Update it with the same field values + form_data = { + 'name': site.name, + 'slug': site.slug, + 'status': SiteStatusChoices.STATUS_PLANNED, + } + request = { + 'path': self._get_url('edit', instance=site), + 'data': post_data(form_data), + } + self.add_permissions('dcim.change_site', 'extras.view_tag') + response = self.client.post(**request) + self.assertHttpStatus(response, 302) + + # Check that an ObjectChange record has been created + self.assertEqual(ObjectChange.objects.count(), 1) + + @override_settings(CHANGELOG_SKIP_EMPTY_CHANGES=True) + def test_update_object_nochange(self): + # Create a Site + site = Site.objects.create( + name='Site 1', + slug='site-1', + status=SiteStatusChoices.STATUS_PLANNED, + custom_field_data={ + 'cf1': None, + 'cf2': None + } + ) + + # Update it with the same field values + form_data = { + 'name': site.name, + 'slug': site.slug, + 'status': SiteStatusChoices.STATUS_PLANNED, + } + request = { + 'path': self._get_url('edit', instance=site), + 'data': post_data(form_data), + } + self.add_permissions('dcim.change_site', 'extras.view_tag') + response = self.client.post(**request) + self.assertHttpStatus(response, 302) + + # Check that no ObjectChange records have been created + self.assertEqual(ObjectChange.objects.count(), 0) + class ChangeLogAPITest(APITestCase): diff --git a/netbox/extras/tests/test_custom_validation.py b/netbox/extras/tests/test_custom_validation.py new file mode 100644 index 000000000..e375b49f5 --- /dev/null +++ b/netbox/extras/tests/test_custom_validation.py @@ -0,0 +1,265 @@ +from django.test import TestCase +from django.test import override_settings + +from circuits.api.serializers import ProviderSerializer +from circuits.forms import ProviderForm +from circuits.models import Provider +from ipam.models import ASN, RIR +from utilities.choices import CSVDelimiterChoices, ImportFormatChoices +from utilities.testing import APITestCase, ModelViewTestCase, create_tags, post_data + + +class ModelFormCustomValidationTest(TestCase): + + @override_settings(CUSTOM_VALIDATORS={ + 'circuits.provider': [ + {'tags': {'required': True}} + ] + }) + def test_tags_validation(self): + """ + Check that custom validation rules work for tag assignment. + """ + data = { + 'name': 'Provider 1', + 'slug': 'provider-1', + } + form = ProviderForm(data) + self.assertFalse(form.is_valid()) + + tags = create_tags('Tag1', 'Tag2', 'Tag3') + data['tags'] = [tag.pk for tag in tags] + form = ProviderForm(data) + self.assertTrue(form.is_valid()) + + @override_settings(CUSTOM_VALIDATORS={ + 'circuits.provider': [ + {'asns': {'required': True}} + ] + }) + def test_m2m_validation(self): + """ + Check that custom validation rules work for many-to-many fields. + """ + data = { + 'name': 'Provider 1', + 'slug': 'provider-1', + } + form = ProviderForm(data) + self.assertFalse(form.is_valid()) + + rir = RIR.objects.create(name='RIR 1', slug='rir-1') + asns = ASN.objects.bulk_create(( + ASN(rir=rir, asn=65001), + ASN(rir=rir, asn=65002), + ASN(rir=rir, asn=65003), + )) + data['asns'] = [asn.pk for asn in asns] + form = ProviderForm(data) + self.assertTrue(form.is_valid()) + + +class BulkEditCustomValidationTest(ModelViewTestCase): + model = Provider + + @classmethod + def setUpTestData(cls): + rir = RIR.objects.create(name='RIR 1', slug='rir-1') + asns = ASN.objects.bulk_create(( + ASN(rir=rir, asn=65001), + ASN(rir=rir, asn=65002), + ASN(rir=rir, asn=65003), + )) + + providers = ( + Provider(name='Provider 1', slug='provider-1'), + Provider(name='Provider 2', slug='provider-2'), + Provider(name='Provider 3', slug='provider-3'), + ) + Provider.objects.bulk_create(providers) + for provider in providers: + provider.asns.set(asns) + + @override_settings(CUSTOM_VALIDATORS={ + 'circuits.provider': [ + {'asns': {'required': True}} + ] + }) + def test_bulk_edit_without_m2m(self): + """ + Check that custom validation rules do not interfere with bulk editing. + """ + data = { + 'pk': list(Provider.objects.values_list('pk', flat=True)), + '_apply': '', + 'description': 'New description', + } + self.add_permissions( + 'circuits.view_provider', + 'circuits.change_provider', + ) + + # Bulk edit the description without changing ASN assignments + request = { + 'path': self._get_url('bulk_edit'), + 'data': post_data(data), + } + response = self.client.post(**request) + self.assertHttpStatus(response, 302) + self.assertEqual( + Provider.objects.filter(description=data['description']).count(), + len(data['pk']) + ) + + @override_settings(CUSTOM_VALIDATORS={ + 'circuits.provider': [ + {'asns': {'required': True}} + ] + }) + def test_bulk_edit_m2m(self): + """ + Test that custom validation rules are enforced during bulk editing. + """ + data = { + 'pk': list(Provider.objects.values_list('pk', flat=True)), + '_apply': '', + 'description': 'New description', + } + self.add_permissions( + 'circuits.view_provider', + 'circuits.change_provider', + 'ipam.view_asn', + ) + + # Change the ASN assignments + asn = ASN.objects.first() + data['asns'] = [asn.pk] + request = { + 'path': self._get_url('bulk_edit'), + 'data': post_data(data), + } + response = self.client.post(**request) + self.assertHttpStatus(response, 302) + for provider in Provider.objects.all(): + self.assertEqual(len(provider.asns.all()), 1) + + # Attempt to remove the ASN assignments + data.pop('asns') + data['_nullify'] = 'asns' + request = { + 'path': self._get_url('bulk_edit'), + 'data': post_data(data), + } + response = self.client.post(**request) + self.assertHttpStatus(response, 200) + for provider in Provider.objects.all(): + self.assertTrue(provider.asns.exists()) + + +class BulkImportCustomValidationTest(ModelViewTestCase): + model = Provider + + @classmethod + def setUpTestData(cls): + create_tags('Tag1', 'Tag2', 'Tag3') + + @override_settings(CUSTOM_VALIDATORS={ + 'circuits.provider': [ + {'tags': {'required': True}} + ] + }) + def test_bulk_import_invalid(self): + """ + Test that custom validation rules are enforced during bulk import. + """ + csv_data = ( + "name,slug", + "Provider 1,provider-1", + "Provider 2,provider-2", + "Provider 3,provider-3", + ) + data = { + 'data': '\n'.join(csv_data), + 'format': ImportFormatChoices.CSV, + 'csv_delimiter': CSVDelimiterChoices.COMMA, + } + self.add_permissions( + 'circuits.view_provider', + 'circuits.add_provider', + 'extras.view_tag', + ) + + # Attempt to import providers without tags + request = { + 'path': self._get_url('import'), + 'data': post_data(data), + } + response = self.client.post(**request) + self.assertHttpStatus(response, 200) + self.assertFalse(Provider.objects.exists()) + + # Import providers successfully with tag assignments + csv_data = ( + "name,slug,tags", + "Provider 1,provider-1,tag1", + "Provider 2,provider-2,tag2", + "Provider 3,provider-3,tag3", + ) + data['data'] = '\n'.join(csv_data) + request = { + 'path': self._get_url('import'), + 'data': post_data(data), + } + response = self.client.post(**request) + self.assertHttpStatus(response, 302) + self.assertTrue(Provider.objects.exists()) + + +class APISerializerCustomValidationTest(APITestCase): + + @override_settings(CUSTOM_VALIDATORS={ + 'circuits.provider': [ + {'tags': {'required': True}} + ] + }) + def test_tags_validation(self): + """ + Check that custom validation rules work for tag assignment. + """ + data = { + 'name': 'Provider 1', + 'slug': 'provider-1', + } + serializer = ProviderSerializer(data=data) + self.assertFalse(serializer.is_valid()) + + tags = create_tags('Tag1', 'Tag2', 'Tag3') + data['tags'] = [tag.pk for tag in tags] + serializer = ProviderSerializer(data=data) + self.assertTrue(serializer.is_valid()) + + @override_settings(CUSTOM_VALIDATORS={ + 'circuits.provider': [ + {'asns': {'required': True}} + ] + }) + def test_m2m_validation(self): + """ + Check that custom validation rules work for many-to-many fields. + """ + data = { + 'name': 'Provider 1', + 'slug': 'provider-1', + } + serializer = ProviderSerializer(data=data) + self.assertFalse(serializer.is_valid()) + + rir = RIR.objects.create(name='RIR 1', slug='rir-1') + asns = ASN.objects.bulk_create(( + ASN(rir=rir, asn=65001), + ASN(rir=rir, asn=65002), + ASN(rir=rir, asn=65003), + )) + data['asns'] = [asn.pk for asn in asns] + serializer = ProviderSerializer(data=data) + self.assertTrue(serializer.is_valid()) diff --git a/netbox/extras/tests/test_customfields.py b/netbox/extras/tests/test_customfields.py index 019aef235..574452a81 100644 --- a/netbox/extras/tests/test_customfields.py +++ b/netbox/extras/tests/test_customfields.py @@ -12,6 +12,7 @@ from dcim.models import Manufacturer, Rack, Site from extras.choices import * from extras.models import CustomField, CustomFieldChoiceSet from ipam.models import VLAN +from utilities.choices import CSVDelimiterChoices, ImportFormatChoices from utilities.testing import APITestCase, TestCase from virtualization.models import VirtualMachine @@ -427,6 +428,97 @@ class CustomFieldTest(TestCase): self.assertNotIn('field1', site.custom_field_data) self.assertEqual(site.custom_field_data['field2'], FIELD_DATA) + def test_default_value_validation(self): + choiceset = CustomFieldChoiceSet.objects.create( + name="Test Choice Set", + extra_choices=( + ('choice1', 'Choice 1'), + ('choice2', 'Choice 2'), + ) + ) + site = Site.objects.create(name='Site 1', slug='site-1') + object_type = ContentType.objects.get_for_model(Site) + + # Text + CustomField(name='test', type='text', required=True, default="Default text").full_clean() + + # Integer + CustomField(name='test', type='integer', required=True, default=1).full_clean() + with self.assertRaises(ValidationError): + CustomField(name='test', type='integer', required=True, default='xxx').full_clean() + + # Boolean + CustomField(name='test', type='boolean', required=True, default=True).full_clean() + with self.assertRaises(ValidationError): + CustomField(name='test', type='boolean', required=True, default='xxx').full_clean() + + # Date + CustomField(name='test', type='date', required=True, default="2023-02-25").full_clean() + with self.assertRaises(ValidationError): + CustomField(name='test', type='date', required=True, default='xxx').full_clean() + + # Datetime + CustomField(name='test', type='datetime', required=True, default="2023-02-25 02:02:02").full_clean() + with self.assertRaises(ValidationError): + CustomField(name='test', type='datetime', required=True, default='xxx').full_clean() + + # URL + CustomField(name='test', type='url', required=True, default="https://www.netbox.dev").full_clean() + + # JSON + CustomField(name='test', type='json', required=True, default='{"test": "object"}').full_clean() + + # Selection + CustomField(name='test', type='select', required=True, choice_set=choiceset, default='choice1').full_clean() + with self.assertRaises(ValidationError): + CustomField(name='test', type='select', required=True, choice_set=choiceset, default='xxx').full_clean() + + # Multi-select + CustomField( + name='test', + type='multiselect', + required=True, + choice_set=choiceset, + default=['choice1'] # Single default choice + ).full_clean() + CustomField( + name='test', + type='multiselect', + required=True, + choice_set=choiceset, + default=['choice1', 'choice2'] # Multiple default choices + ).full_clean() + with self.assertRaises(ValidationError): + CustomField( + name='test', + type='multiselect', + required=True, + choice_set=choiceset, + default=['xxx'] + ).full_clean() + + # Object + CustomField(name='test', type='object', required=True, object_type=object_type, default=site.pk).full_clean() + with self.assertRaises(ValidationError): + CustomField(name='test', type='object', required=True, object_type=object_type, default="xxx").full_clean() + + # Multi-object + CustomField( + name='test', + type='multiobject', + required=True, + object_type=object_type, + default=[site.pk] + ).full_clean() + with self.assertRaises(ValidationError): + CustomField( + name='test', + type='multiobject', + required=True, + object_type=object_type, + default=["xxx"] + ).full_clean() + class CustomFieldManagerTest(TestCase): @@ -1085,7 +1177,11 @@ class CustomFieldImportTest(TestCase): ) csv_data = '\n'.join(','.join(row) for row in data) - response = self.client.post(reverse('dcim:site_import'), {'data': csv_data, 'format': 'csv'}) + response = self.client.post(reverse('dcim:site_import'), { + 'data': csv_data, + 'format': ImportFormatChoices.CSV, + 'csv_delimiter': CSVDelimiterChoices.AUTO, + }) self.assertEqual(response.status_code, 302) self.assertEqual(Site.objects.count(), 3) @@ -1233,7 +1329,7 @@ class CustomFieldModelFilterTest(TestCase): choice_set = CustomFieldChoiceSet.objects.create( name='Custom Field Choice Set 1', - extra_choices=(('a', 'A'), ('b', 'B'), ('c', 'C'), ('x', 'X')) + extra_choices=(('a', 'A'), ('b', 'B'), ('c', 'C')) ) # Integer filtering @@ -1339,7 +1435,7 @@ class CustomFieldModelFilterTest(TestCase): 'cf7': 'http://a.example.com', 'cf8': 'http://a.example.com', 'cf9': 'A', - 'cf10': ['A', 'X'], + 'cf10': ['A', 'B'], 'cf11': manufacturers[0].pk, 'cf12': [manufacturers[0].pk, manufacturers[3].pk], }), @@ -1353,7 +1449,7 @@ class CustomFieldModelFilterTest(TestCase): 'cf7': 'http://b.example.com', 'cf8': 'http://b.example.com', 'cf9': 'B', - 'cf10': ['B', 'X'], + 'cf10': ['B', 'C'], 'cf11': manufacturers[1].pk, 'cf12': [manufacturers[1].pk, manufacturers[3].pk], }), @@ -1367,7 +1463,7 @@ class CustomFieldModelFilterTest(TestCase): 'cf7': 'http://c.example.com', 'cf8': 'http://c.example.com', 'cf9': 'C', - 'cf10': ['C', 'X'], + 'cf10': None, 'cf11': manufacturers[2].pk, 'cf12': [manufacturers[2].pk, manufacturers[3].pk], }), @@ -1435,8 +1531,9 @@ class CustomFieldModelFilterTest(TestCase): self.assertEqual(self.filterset({'cf_cf9': ['A', 'B']}, self.queryset).qs.count(), 2) def test_filter_multiselect(self): - self.assertEqual(self.filterset({'cf_cf10': ['A', 'B']}, self.queryset).qs.count(), 2) - self.assertEqual(self.filterset({'cf_cf10': ['X']}, self.queryset).qs.count(), 3) + self.assertEqual(self.filterset({'cf_cf10': ['A']}, self.queryset).qs.count(), 1) + self.assertEqual(self.filterset({'cf_cf10': ['A', 'C']}, self.queryset).qs.count(), 2) + self.assertEqual(self.filterset({'cf_cf10': ['null']}, self.queryset).qs.count(), 1) def test_filter_object(self): manufacturer_ids = Manufacturer.objects.values_list('id', flat=True) diff --git a/netbox/extras/tests/test_customvalidator.py b/netbox/extras/tests/test_customvalidation.py similarity index 64% rename from netbox/extras/tests/test_customvalidator.py rename to netbox/extras/tests/test_customvalidation.py index 0fe507b67..d74ad599b 100644 --- a/netbox/extras/tests/test_customvalidator.py +++ b/netbox/extras/tests/test_customvalidation.py @@ -1,10 +1,13 @@ from django.conf import settings from django.core.exceptions import ValidationError +from django.db import transaction from django.test import TestCase, override_settings from ipam.models import ASN, RIR +from dcim.choices import SiteStatusChoices from dcim.models import Site from extras.validators import CustomValidator +from utilities.exceptions import AbortRequest class MyValidator(CustomValidator): @@ -14,6 +17,20 @@ class MyValidator(CustomValidator): self.fail("Name must be foo!") +eq_validator = CustomValidator({ + 'asn': { + 'eq': 100 + } +}) + + +neq_validator = CustomValidator({ + 'asn': { + 'neq': 100 + } +}) + + min_validator = CustomValidator({ 'asn': { 'min': 65000 @@ -77,6 +94,18 @@ class CustomValidatorTest(TestCase): validator = settings.CUSTOM_VALIDATORS['ipam.asn'][0] self.assertIsInstance(validator, CustomValidator) + @override_settings(CUSTOM_VALIDATORS={'ipam.asn': [eq_validator]}) + def test_eq(self): + ASN(asn=100, rir=RIR.objects.first()).clean() + with self.assertRaises(ValidationError): + ASN(asn=99, rir=RIR.objects.first()).clean() + + @override_settings(CUSTOM_VALIDATORS={'ipam.asn': [neq_validator]}) + def test_neq(self): + ASN(asn=99, rir=RIR.objects.first()).clean() + with self.assertRaises(ValidationError): + ASN(asn=100, rir=RIR.objects.first()).clean() + @override_settings(CUSTOM_VALIDATORS={'ipam.asn': [min_validator]}) def test_min(self): with self.assertRaises(ValidationError): @@ -147,7 +176,7 @@ class CustomValidatorConfigTest(TestCase): @override_settings( CUSTOM_VALIDATORS={ 'dcim.site': ( - 'extras.tests.test_customvalidator.MyValidator', + 'extras.tests.test_customvalidation.MyValidator', ) } ) @@ -159,3 +188,62 @@ class CustomValidatorConfigTest(TestCase): Site(name='foo', slug='foo').clean() with self.assertRaises(ValidationError): Site(name='bar', slug='bar').clean() + + +class ProtectionRulesConfigTest(TestCase): + + @override_settings( + PROTECTION_RULES={ + 'dcim.site': [ + {'status': {'eq': SiteStatusChoices.STATUS_DECOMMISSIONING}} + ] + } + ) + def test_plain_data(self): + """ + Test custom validator configuration using plain data (as opposed to a CustomValidator + class) + """ + # Create a site with a protected status + site = Site(name='Site 1', slug='site-1', status=SiteStatusChoices.STATUS_ACTIVE) + site.save() + + # Try to delete it + with self.assertRaises(AbortRequest): + with transaction.atomic(): + site.delete() + + # Change its status to an allowed value + site.status = SiteStatusChoices.STATUS_DECOMMISSIONING + site.save() + + # Deletion should now succeed + site.delete() + + @override_settings( + PROTECTION_RULES={ + 'dcim.site': ( + 'extras.tests.test_customvalidation.MyValidator', + ) + } + ) + def test_dotted_path(self): + """ + Test custom validator configuration using a dotted path (string) reference to a + CustomValidator class. + """ + # Create a site with a protected name + site = Site(name='bar', slug='bar') + site.save() + + # Try to delete it + with self.assertRaises(AbortRequest): + with transaction.atomic(): + site.delete() + + # Change the name to an allowed value + site.name = site.slug = 'foo' + site.save() + + # Deletion should now succeed + site.delete() diff --git a/netbox/extras/tests/test_webhooks.py b/netbox/extras/tests/test_event_rules.py similarity index 72% rename from netbox/extras/tests/test_webhooks.py rename to netbox/extras/tests/test_event_rules.py index ef7637765..549c33478 100644 --- a/netbox/extras/tests/test_webhooks.py +++ b/netbox/extras/tests/test_event_rules.py @@ -3,22 +3,21 @@ import uuid from unittest.mock import patch import django_rq +from dcim.choices import SiteStatusChoices +from dcim.models import Site from django.contrib.contenttypes.models import ContentType from django.http import HttpResponse from django.urls import reverse +from extras.choices import EventRuleActionChoices, ObjectChangeActionChoices +from extras.events import enqueue_object, flush_events, serialize_for_event +from extras.models import EventRule, Tag, Webhook +from extras.webhooks import generate_signature, send_webhook from requests import Session from rest_framework import status - -from dcim.choices import SiteStatusChoices -from dcim.models import Site -from extras.choices import ObjectChangeActionChoices -from extras.models import Tag, Webhook -from extras.webhooks import enqueue_object, flush_webhooks, generate_signature, serialize_for_webhook -from extras.webhooks_worker import eval_conditions, process_webhook from utilities.testing import APITestCase -class WebhookTest(APITestCase): +class EventRuleTest(APITestCase): def setUp(self): super().setUp() @@ -35,12 +34,37 @@ class WebhookTest(APITestCase): DUMMY_SECRET = 'LOOKATMEIMASECRETSTRING' webhooks = Webhook.objects.bulk_create(( - Webhook(name='Webhook 1', type_create=True, payload_url=DUMMY_URL, secret=DUMMY_SECRET, additional_headers='X-Foo: Bar'), - Webhook(name='Webhook 2', type_update=True, payload_url=DUMMY_URL, secret=DUMMY_SECRET), - Webhook(name='Webhook 3', type_delete=True, payload_url=DUMMY_URL, secret=DUMMY_SECRET), + Webhook(name='Webhook 1', payload_url=DUMMY_URL, secret=DUMMY_SECRET, additional_headers='X-Foo: Bar'), + Webhook(name='Webhook 2', payload_url=DUMMY_URL, secret=DUMMY_SECRET), + Webhook(name='Webhook 3', payload_url=DUMMY_URL, secret=DUMMY_SECRET), )) - for webhook in webhooks: - webhook.content_types.set([site_ct]) + + ct = ContentType.objects.get(app_label='extras', model='webhook') + event_rules = EventRule.objects.bulk_create(( + EventRule( + name='Webhook Event 1', + type_create=True, + action_type=EventRuleActionChoices.WEBHOOK, + action_object_type=ct, + action_object_id=webhooks[0].id + ), + EventRule( + name='Webhook Event 2', + type_update=True, + action_type=EventRuleActionChoices.WEBHOOK, + action_object_type=ct, + action_object_id=webhooks[0].id + ), + EventRule( + name='Webhook Event 3', + type_delete=True, + action_type=EventRuleActionChoices.WEBHOOK, + action_object_type=ct, + action_object_id=webhooks[0].id + ), + )) + for event_rule in event_rules: + event_rule.content_types.set([site_ct]) Tag.objects.bulk_create(( Tag(name='Foo', slug='foo'), @@ -48,7 +72,42 @@ class WebhookTest(APITestCase): Tag(name='Baz', slug='baz'), )) - def test_enqueue_webhook_create(self): + def test_eventrule_conditions(self): + """ + Test evaluation of EventRule conditions. + """ + event_rule = EventRule( + name='Event Rule 1', + type_create=True, + type_update=True, + conditions={ + 'and': [ + { + 'attr': 'status.value', + 'value': 'active', + } + ] + } + ) + + # Create a Site to evaluate + site = Site.objects.create(name='Site 1', slug='site-1', status=SiteStatusChoices.STATUS_STAGING) + data = serialize_for_event(site) + + # Evaluate the conditions (status='staging') + self.assertFalse(event_rule.eval_conditions(data)) + + # Change the site's status + site.status = SiteStatusChoices.STATUS_ACTIVE + data = serialize_for_event(site) + + # Evaluate the conditions (status='active') + self.assertTrue(event_rule.eval_conditions(data)) + + def test_single_create_process_eventrule(self): + """ + Check that creating an object with an applicable EventRule queues a background task for the rule's action. + """ # Create an object via the REST API data = { 'name': 'Site 1', @@ -65,10 +124,10 @@ class WebhookTest(APITestCase): self.assertEqual(Site.objects.count(), 1) self.assertEqual(Site.objects.first().tags.count(), 2) - # Verify that a job was queued for the object creation webhook + # Verify that a background task was queued for the new object self.assertEqual(self.queue.count, 1) job = self.queue.jobs[0] - self.assertEqual(job.kwargs['webhook'], Webhook.objects.get(type_create=True)) + self.assertEqual(job.kwargs['event_rule'], EventRule.objects.get(type_create=True)) self.assertEqual(job.kwargs['event'], ObjectChangeActionChoices.ACTION_CREATE) self.assertEqual(job.kwargs['model_name'], 'site') self.assertEqual(job.kwargs['data']['id'], response.data['id']) @@ -76,7 +135,11 @@ class WebhookTest(APITestCase): self.assertEqual(job.kwargs['snapshots']['postchange']['name'], 'Site 1') self.assertEqual(job.kwargs['snapshots']['postchange']['tags'], ['Bar', 'Foo']) - def test_enqueue_webhook_bulk_create(self): + def test_bulk_create_process_eventrule(self): + """ + Check that bulk creating multiple objects with an applicable EventRule queues a background task for each + new object. + """ # Create multiple objects via the REST API data = [ { @@ -111,10 +174,10 @@ class WebhookTest(APITestCase): self.assertEqual(Site.objects.count(), 3) self.assertEqual(Site.objects.first().tags.count(), 2) - # Verify that a webhook was queued for each object + # Verify that a background task was queued for each new object self.assertEqual(self.queue.count, 3) for i, job in enumerate(self.queue.jobs): - self.assertEqual(job.kwargs['webhook'], Webhook.objects.get(type_create=True)) + self.assertEqual(job.kwargs['event_rule'], EventRule.objects.get(type_create=True)) self.assertEqual(job.kwargs['event'], ObjectChangeActionChoices.ACTION_CREATE) self.assertEqual(job.kwargs['model_name'], 'site') self.assertEqual(job.kwargs['data']['id'], response.data[i]['id']) @@ -122,7 +185,10 @@ class WebhookTest(APITestCase): self.assertEqual(job.kwargs['snapshots']['postchange']['name'], response.data[i]['name']) self.assertEqual(job.kwargs['snapshots']['postchange']['tags'], ['Bar', 'Foo']) - def test_enqueue_webhook_update(self): + def test_single_update_process_eventrule(self): + """ + Check that updating an object with an applicable EventRule queues a background task for the rule's action. + """ site = Site.objects.create(name='Site 1', slug='site-1') site.tags.set(Tag.objects.filter(name__in=['Foo', 'Bar'])) @@ -139,10 +205,10 @@ class WebhookTest(APITestCase): response = self.client.patch(url, data, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_200_OK) - # Verify that a job was queued for the object update webhook + # Verify that a background task was queued for the updated object self.assertEqual(self.queue.count, 1) job = self.queue.jobs[0] - self.assertEqual(job.kwargs['webhook'], Webhook.objects.get(type_update=True)) + self.assertEqual(job.kwargs['event_rule'], EventRule.objects.get(type_update=True)) self.assertEqual(job.kwargs['event'], ObjectChangeActionChoices.ACTION_UPDATE) self.assertEqual(job.kwargs['model_name'], 'site') self.assertEqual(job.kwargs['data']['id'], site.pk) @@ -152,7 +218,11 @@ class WebhookTest(APITestCase): self.assertEqual(job.kwargs['snapshots']['postchange']['name'], 'Site X') self.assertEqual(job.kwargs['snapshots']['postchange']['tags'], ['Baz']) - def test_enqueue_webhook_bulk_update(self): + def test_bulk_update_process_eventrule(self): + """ + Check that bulk updating multiple objects with an applicable EventRule queues a background task for each + updated object. + """ sites = ( Site(name='Site 1', slug='site-1'), Site(name='Site 2', slug='site-2'), @@ -191,10 +261,10 @@ class WebhookTest(APITestCase): response = self.client.patch(url, data, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_200_OK) - # Verify that a job was queued for the object update webhook + # Verify that a background task was queued for each updated object self.assertEqual(self.queue.count, 3) for i, job in enumerate(self.queue.jobs): - self.assertEqual(job.kwargs['webhook'], Webhook.objects.get(type_update=True)) + self.assertEqual(job.kwargs['event_rule'], EventRule.objects.get(type_update=True)) self.assertEqual(job.kwargs['event'], ObjectChangeActionChoices.ACTION_UPDATE) self.assertEqual(job.kwargs['model_name'], 'site') self.assertEqual(job.kwargs['data']['id'], data[i]['id']) @@ -204,7 +274,10 @@ class WebhookTest(APITestCase): self.assertEqual(job.kwargs['snapshots']['postchange']['name'], response.data[i]['name']) self.assertEqual(job.kwargs['snapshots']['postchange']['tags'], ['Baz']) - def test_enqueue_webhook_delete(self): + def test_single_delete_process_eventrule(self): + """ + Check that deleting an object with an applicable EventRule queues a background task for the rule's action. + """ site = Site.objects.create(name='Site 1', slug='site-1') site.tags.set(Tag.objects.filter(name__in=['Foo', 'Bar'])) @@ -214,17 +287,21 @@ class WebhookTest(APITestCase): response = self.client.delete(url, **self.header) self.assertHttpStatus(response, status.HTTP_204_NO_CONTENT) - # Verify that a job was queued for the object update webhook + # Verify that a task was queued for the deleted object self.assertEqual(self.queue.count, 1) job = self.queue.jobs[0] - self.assertEqual(job.kwargs['webhook'], Webhook.objects.get(type_delete=True)) + self.assertEqual(job.kwargs['event_rule'], EventRule.objects.get(type_delete=True)) self.assertEqual(job.kwargs['event'], ObjectChangeActionChoices.ACTION_DELETE) self.assertEqual(job.kwargs['model_name'], 'site') self.assertEqual(job.kwargs['data']['id'], site.pk) self.assertEqual(job.kwargs['snapshots']['prechange']['name'], 'Site 1') self.assertEqual(job.kwargs['snapshots']['prechange']['tags'], ['Bar', 'Foo']) - def test_enqueue_webhook_bulk_delete(self): + def test_bulk_delete_process_eventrule(self): + """ + Check that bulk deleting multiple objects with an applicable EventRule queues a background task for each + deleted object. + """ sites = ( Site(name='Site 1', slug='site-1'), Site(name='Site 2', slug='site-2'), @@ -243,49 +320,17 @@ class WebhookTest(APITestCase): response = self.client.delete(url, data, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_204_NO_CONTENT) - # Verify that a job was queued for the object update webhook + # Verify that a background task was queued for each deleted object self.assertEqual(self.queue.count, 3) for i, job in enumerate(self.queue.jobs): - self.assertEqual(job.kwargs['webhook'], Webhook.objects.get(type_delete=True)) + self.assertEqual(job.kwargs['event_rule'], EventRule.objects.get(type_delete=True)) self.assertEqual(job.kwargs['event'], ObjectChangeActionChoices.ACTION_DELETE) self.assertEqual(job.kwargs['model_name'], 'site') self.assertEqual(job.kwargs['data']['id'], sites[i].pk) self.assertEqual(job.kwargs['snapshots']['prechange']['name'], sites[i].name) self.assertEqual(job.kwargs['snapshots']['prechange']['tags'], ['Bar', 'Foo']) - def test_webhook_conditions(self): - # Create a conditional Webhook - webhook = Webhook( - name='Conditional Webhook', - type_create=True, - type_update=True, - payload_url='http://localhost:9000/', - conditions={ - 'and': [ - { - 'attr': 'status.value', - 'value': 'active', - } - ] - } - ) - - # Create a Site to evaluate - site = Site.objects.create(name='Site 1', slug='site-1', status=SiteStatusChoices.STATUS_STAGING) - data = serialize_for_webhook(site) - - # Evaluate the conditions (status='staging') - self.assertFalse(eval_conditions(webhook, data)) - - # Change the site's status - site.status = SiteStatusChoices.STATUS_ACTIVE - data = serialize_for_webhook(site) - - # Evaluate the conditions (status='active') - self.assertTrue(eval_conditions(webhook, data)) - - def test_webhooks_worker(self): - + def test_send_webhook(self): request_id = uuid.uuid4() def dummy_send(_, request, **kwargs): @@ -293,7 +338,8 @@ class WebhookTest(APITestCase): A dummy implementation of Session.send() to be used for testing. Always returns a 200 HTTP response. """ - webhook = Webhook.objects.get(type_create=True) + event = EventRule.objects.get(type_create=True) + webhook = event.action_object signature = generate_signature(request.body, webhook.secret) # Validate the outgoing request headers @@ -322,11 +368,11 @@ class WebhookTest(APITestCase): request_id=request_id, action=ObjectChangeActionChoices.ACTION_CREATE ) - flush_webhooks(webhooks_queue) + flush_events(webhooks_queue) # Retrieve the job from queue job = self.queue.jobs[0] # Patch the Session object with our dummy_send() method, then process the webhook for sending with patch.object(Session, 'send', dummy_send) as mock_send: - process_webhook(**job.kwargs) + send_webhook(**job.kwargs) diff --git a/netbox/extras/tests/test_filtersets.py b/netbox/extras/tests/test_filtersets.py index c558a0467..ef8aedcbd 100644 --- a/netbox/extras/tests/test_filtersets.py +++ b/netbox/extras/tests/test_filtersets.py @@ -6,6 +6,7 @@ from django.contrib.contenttypes.models import ContentType from django.test import TestCase from circuits.models import Provider +from core.choices import ManagedFileRootPathChoices from dcim.filtersets import SiteFilterSet from dcim.models import DeviceRole, DeviceType, Manufacturer, Platform, Rack, Region, Site, SiteGroup from dcim.models import Location @@ -40,7 +41,9 @@ class CustomFieldTestCase(TestCase, BaseFilterSetTests): required=True, weight=100, filter_logic=CustomFieldFilterLogicChoices.FILTER_LOOSE, - ui_visibility=CustomFieldVisibilityChoices.VISIBILITY_READ_WRITE + ui_visible=CustomFieldUIVisibleChoices.ALWAYS, + ui_editable=CustomFieldUIEditableChoices.YES, + description='foobar1' ), CustomField( name='Custom Field 2', @@ -48,7 +51,9 @@ class CustomFieldTestCase(TestCase, BaseFilterSetTests): required=False, weight=200, filter_logic=CustomFieldFilterLogicChoices.FILTER_EXACT, - ui_visibility=CustomFieldVisibilityChoices.VISIBILITY_READ_ONLY + ui_visible=CustomFieldUIVisibleChoices.IF_SET, + ui_editable=CustomFieldUIEditableChoices.NO, + description='foobar2' ), CustomField( name='Custom Field 3', @@ -56,7 +61,9 @@ class CustomFieldTestCase(TestCase, BaseFilterSetTests): required=False, weight=300, filter_logic=CustomFieldFilterLogicChoices.FILTER_DISABLED, - ui_visibility=CustomFieldVisibilityChoices.VISIBILITY_HIDDEN + ui_visible=CustomFieldUIVisibleChoices.HIDDEN, + ui_editable=CustomFieldUIEditableChoices.HIDDEN, + description='foobar3' ), CustomField( name='Custom Field 4', @@ -64,7 +71,8 @@ class CustomFieldTestCase(TestCase, BaseFilterSetTests): required=False, weight=400, filter_logic=CustomFieldFilterLogicChoices.FILTER_DISABLED, - ui_visibility=CustomFieldVisibilityChoices.VISIBILITY_HIDDEN, + ui_visible=CustomFieldUIVisibleChoices.HIDDEN, + ui_editable=CustomFieldUIEditableChoices.HIDDEN, choice_set=choice_sets[0] ), CustomField( @@ -73,7 +81,8 @@ class CustomFieldTestCase(TestCase, BaseFilterSetTests): required=False, weight=500, filter_logic=CustomFieldFilterLogicChoices.FILTER_DISABLED, - ui_visibility=CustomFieldVisibilityChoices.VISIBILITY_HIDDEN, + ui_visible=CustomFieldUIVisibleChoices.HIDDEN, + ui_editable=CustomFieldUIEditableChoices.HIDDEN, choice_set=choice_sets[1] ), ) @@ -84,6 +93,10 @@ class CustomFieldTestCase(TestCase, BaseFilterSetTests): custom_fields[3].content_types.add(ContentType.objects.get_by_natural_key('dcim', 'device')) custom_fields[4].content_types.add(ContentType.objects.get_by_natural_key('dcim', 'device')) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Custom Field 1', 'Custom Field 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -106,8 +119,12 @@ class CustomFieldTestCase(TestCase, BaseFilterSetTests): params = {'filter_logic': CustomFieldFilterLogicChoices.FILTER_LOOSE} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) - def test_ui_visibility(self): - params = {'ui_visibility': CustomFieldVisibilityChoices.VISIBILITY_READ_WRITE} + def test_ui_visible(self): + params = {'ui_visible': CustomFieldUIVisibleChoices.ALWAYS} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_ui_editable(self): + params = {'ui_editable': CustomFieldUIEditableChoices.YES} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) def test_choice_set(self): @@ -116,6 +133,10 @@ class CustomFieldTestCase(TestCase, BaseFilterSetTests): params = {'choice_set_id': CustomFieldChoiceSet.objects.values_list('pk', flat=True)} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + class CustomFieldChoiceSetTestCase(TestCase, BaseFilterSetTests): queryset = CustomFieldChoiceSet.objects.all() @@ -124,12 +145,16 @@ class CustomFieldChoiceSetTestCase(TestCase, BaseFilterSetTests): @classmethod def setUpTestData(cls): choice_sets = ( - CustomFieldChoiceSet(name='Choice Set 1', extra_choices=['A', 'B', 'C']), - CustomFieldChoiceSet(name='Choice Set 2', extra_choices=['D', 'E', 'F']), - CustomFieldChoiceSet(name='Choice Set 3', extra_choices=['G', 'H', 'I']), + CustomFieldChoiceSet(name='Choice Set 1', extra_choices=['A', 'B', 'C'], description='foobar1'), + CustomFieldChoiceSet(name='Choice Set 2', extra_choices=['D', 'E', 'F'], description='foobar2'), + CustomFieldChoiceSet(name='Choice Set 3', extra_choices=['G', 'H', 'I'], description='foobar3'), ) CustomFieldChoiceSet.objects.bulk_create(choice_sets) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Choice Set 1', 'Choice Set 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -138,6 +163,10 @@ class CustomFieldChoiceSetTestCase(TestCase, BaseFilterSetTests): params = {'choice': ['A', 'D']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + class WebhookTestCase(TestCase, BaseFilterSetTests): queryset = Webhook.objects.all() @@ -150,82 +179,196 @@ class WebhookTestCase(TestCase, BaseFilterSetTests): webhooks = ( Webhook( name='Webhook 1', - type_create=True, - type_update=False, - type_delete=False, - type_job_start=False, - type_job_end=False, payload_url='http://example.com/?1', - enabled=True, http_method='GET', ssl_verification=True, + description='foobar1' ), Webhook( name='Webhook 2', - type_create=False, - type_update=True, - type_delete=False, - type_job_start=False, - type_job_end=False, payload_url='http://example.com/?2', - enabled=True, http_method='POST', ssl_verification=True, + description='foobar2' ), Webhook( name='Webhook 3', - type_create=False, - type_update=False, - type_delete=True, - type_job_start=False, - type_job_end=False, payload_url='http://example.com/?3', - enabled=False, http_method='PATCH', ssl_verification=False, + description='foobar3' ), Webhook( name='Webhook 4', - type_create=False, - type_update=False, - type_delete=False, - type_job_start=True, - type_job_end=False, payload_url='http://example.com/?4', - enabled=False, http_method='PATCH', ssl_verification=False, ), Webhook( name='Webhook 5', - type_create=False, - type_update=False, - type_delete=False, - type_job_start=False, - type_job_end=True, payload_url='http://example.com/?5', - enabled=False, http_method='PATCH', ssl_verification=False, ), ) Webhook.objects.bulk_create(webhooks) - webhooks[0].content_types.add(content_types[0]) - webhooks[1].content_types.add(content_types[1]) - webhooks[2].content_types.add(content_types[2]) - webhooks[3].content_types.add(content_types[3]) - webhooks[4].content_types.add(content_types[4]) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) def test_name(self): params = {'name': ['Webhook 1', 'Webhook 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_http_method(self): + params = {'http_method': ['GET', 'POST']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_ssl_verification(self): + params = {'ssl_verification': True} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class EventRuleTestCase(TestCase, BaseFilterSetTests): + queryset = EventRule.objects.all() + filterset = EventRuleFilterSet + + @classmethod + def setUpTestData(cls): + content_types = ContentType.objects.filter( + model__in=['region', 'site', 'rack', 'location', 'device'] + ) + + webhooks = ( + Webhook( + name='Webhook 1', + payload_url='http://example.com/?1', + ), + Webhook( + name='Webhook 2', + payload_url='http://example.com/?2', + ), + Webhook( + name='Webhook 3', + payload_url='http://example.com/?3', + ), + ) + Webhook.objects.bulk_create(webhooks) + + scripts = ( + ScriptModule( + file_root=ManagedFileRootPathChoices.SCRIPTS, + file_path='/var/tmp/script1.py' + ), + ScriptModule( + file_root=ManagedFileRootPathChoices.SCRIPTS, + file_path='/var/tmp/script2.py' + ), + ) + ScriptModule.objects.bulk_create(scripts) + + event_rules = ( + EventRule( + name='Event Rule 1', + action_object=webhooks[0], + enabled=True, + type_create=True, + type_update=False, + type_delete=False, + type_job_start=False, + type_job_end=False, + action_type=EventRuleActionChoices.WEBHOOK, + description='foobar1' + ), + EventRule( + name='Event Rule 2', + action_object=webhooks[1], + enabled=True, + type_create=False, + type_update=True, + type_delete=False, + type_job_start=False, + type_job_end=False, + action_type=EventRuleActionChoices.WEBHOOK, + description='foobar2' + ), + EventRule( + name='Event Rule 3', + action_object=webhooks[2], + enabled=False, + type_create=False, + type_update=False, + type_delete=True, + type_job_start=False, + type_job_end=False, + action_type=EventRuleActionChoices.WEBHOOK, + description='foobar3' + ), + EventRule( + name='Event Rule 4', + action_object=scripts[0], + enabled=False, + type_create=False, + type_update=False, + type_delete=False, + type_job_start=True, + type_job_end=False, + action_type=EventRuleActionChoices.SCRIPT, + ), + EventRule( + name='Event Rule 5', + action_object=scripts[1], + enabled=False, + type_create=False, + type_update=False, + type_delete=False, + type_job_start=False, + type_job_end=True, + action_type=EventRuleActionChoices.SCRIPT, + ), + ) + EventRule.objects.bulk_create(event_rules) + event_rules[0].content_types.add(content_types[0]) + event_rules[1].content_types.add(content_types[1]) + event_rules[2].content_types.add(content_types[2]) + event_rules[3].content_types.add(content_types[3]) + event_rules[4].content_types.add(content_types[4]) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['Event Rule 1', 'Event Rule 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_content_types(self): params = {'content_types': 'dcim.region'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) params = {'content_type_id': [ContentType.objects.get_for_model(Region).pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_action_type(self): + params = {'action_type': [EventRuleActionChoices.WEBHOOK]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + params = {'action_type': [EventRuleActionChoices.SCRIPT]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_enabled(self): + params = {'enabled': True} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'enabled': False} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + def test_type_create(self): params = {'type_create': True} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) @@ -246,18 +389,6 @@ class WebhookTestCase(TestCase, BaseFilterSetTests): params = {'type_job_end': True} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) - def test_enabled(self): - params = {'enabled': True} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_http_method(self): - params = {'http_method': ['GET', 'POST']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_ssl_verification(self): - params = {'ssl_verification': True} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - class CustomLinkTestCase(TestCase, BaseFilterSetTests): queryset = CustomLink.objects.all() @@ -297,6 +428,10 @@ class CustomLinkTestCase(TestCase, BaseFilterSetTests): for i, custom_link in enumerate(custom_links): custom_link.content_types.set([content_types[i]]) + def test_q(self): + params = {'q': 'Custom Link 1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Custom Link 1', 'Custom Link 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -347,7 +482,8 @@ class SavedFilterTestCase(TestCase, BaseFilterSetTests): weight=100, enabled=True, shared=True, - parameters={'status': ['active']} + parameters={'status': ['active']}, + description='foobar1' ), SavedFilter( name='Saved Filter 2', @@ -356,7 +492,8 @@ class SavedFilterTestCase(TestCase, BaseFilterSetTests): weight=200, enabled=True, shared=True, - parameters={'status': ['planned']} + parameters={'status': ['planned']}, + description='foobar2' ), SavedFilter( name='Saved Filter 3', @@ -365,13 +502,18 @@ class SavedFilterTestCase(TestCase, BaseFilterSetTests): weight=300, enabled=False, shared=False, - parameters={'status': ['retired']} + parameters={'status': ['retired']}, + description='foobar3' ), ) SavedFilter.objects.bulk_create(saved_filters) for i, savedfilter in enumerate(saved_filters): savedfilter.content_types.set([content_types[i]]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Saved Filter 1', 'Saved Filter 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -380,6 +522,10 @@ class SavedFilterTestCase(TestCase, BaseFilterSetTests): params = {'slug': ['saved-filter-1', 'saved-filter-2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_content_types(self): params = {'content_types': 'dcim.site'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) @@ -423,8 +569,6 @@ class BookmarkTestCase(TestCase, BaseFilterSetTests): @classmethod def setUpTestData(cls): - content_types = ContentType.objects.filter(model__in=['site', 'rack', 'device']) - users = ( User(username='User 1'), User(username='User 2'), @@ -505,6 +649,10 @@ class ExportTemplateTestCase(TestCase, BaseFilterSetTests): for i, et in enumerate(export_templates): et.content_types.set([content_types[i]]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Export Template 1', 'Export Template 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -578,6 +726,10 @@ class ImageAttachmentTestCase(TestCase, BaseFilterSetTests): ) ImageAttachment.objects.bulk_create(image_attachments) + def test_q(self): + params = {'q': 'Attachment 1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Image Attachment 1', 'Image Attachment 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -630,41 +782,45 @@ class JournalEntryTestCase(TestCase, ChangeLoggedFilterSetTests): assigned_object=sites[0], created_by=users[0], kind=JournalEntryKindChoices.KIND_INFO, - comments='New journal entry' + comments='foobar1' ), JournalEntry( assigned_object=sites[0], created_by=users[1], kind=JournalEntryKindChoices.KIND_SUCCESS, - comments='New journal entry' + comments='foobar2' ), JournalEntry( assigned_object=sites[1], created_by=users[2], kind=JournalEntryKindChoices.KIND_WARNING, - comments='New journal entry' + comments='foobar3' ), JournalEntry( assigned_object=racks[0], created_by=users[0], kind=JournalEntryKindChoices.KIND_INFO, - comments='New journal entry' + comments='foobar4' ), JournalEntry( assigned_object=racks[0], created_by=users[1], kind=JournalEntryKindChoices.KIND_SUCCESS, - comments='New journal entry' + comments='foobar5' ), JournalEntry( assigned_object=racks[1], created_by=users[2], kind=JournalEntryKindChoices.KIND_WARNING, - comments='New journal entry' + comments='foobar6' ), ) JournalEntry.objects.bulk_create(journal_entries) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_created_by(self): users = User.objects.filter(username__in=['Alice', 'Bob']) params = {'created_by': [users[0].username, users[1].username]} @@ -800,9 +956,10 @@ class ConfigContextTestCase(TestCase, ChangeLoggedFilterSetTests): for i in range(0, 3): is_active = bool(i % 2) c = ConfigContext.objects.create( - name='Config Context {}'.format(i + 1), + name=f"Config Context {i + 1}", is_active=is_active, - data='{"foo": 123}' + data='{"foo": 123}', + description=f"foobar{i + 1}" ) c.regions.set([regions[i]]) c.site_groups.set([site_groups[i]]) @@ -818,6 +975,10 @@ class ConfigContextTestCase(TestCase, ChangeLoggedFilterSetTests): c.tenants.set([tenants[i]]) c.tags.set([tags[i]]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Config Context 1', 'Config Context 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -828,6 +989,10 @@ class ConfigContextTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'is_active': False} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_region(self): regions = Region.objects.all()[:2] params = {'region_id': [regions[0].pk, regions[1].pk]} @@ -929,6 +1094,10 @@ class ConfigTemplateTestCase(TestCase, BaseFilterSetTests): ) ConfigTemplate.objects.bulk_create(config_templates) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Config Template 1', 'Config Template 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -965,6 +1134,10 @@ class TagTestCase(TestCase, ChangeLoggedFilterSetTests): site.tags.set([tags[0]]) provider.tags.set([tags[1]]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Tag 1', 'Tag 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1076,6 +1249,10 @@ class ObjectChangeTestCase(TestCase, BaseFilterSetTests): ) ObjectChange.objects.bulk_create(object_changes) + def test_q(self): + params = {'q': 'Site 1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + def test_user(self): params = {'user_id': User.objects.filter(username__in=['user1', 'user2']).values_list('pk', flat=True)} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) @@ -1109,11 +1286,13 @@ class ChangeLoggedFilterSetTestCase(TestCase): Site(name='Site 1', slug='site-1'), Site(name='Site 2', slug='site-2'), Site(name='Site 3', slug='site-3'), + Site(name='Site 4', slug='site-4'), ) Site.objects.bulk_create(sites) # Simulate *creation* changelog records for two of the sites request_id = uuid.uuid4() + cls.create_request_id = request_id objectchanges = ( ObjectChange( changed_object_type=content_type, @@ -1132,6 +1311,7 @@ class ChangeLoggedFilterSetTestCase(TestCase): # Simulate *update* changelog records for two of the sites request_id = uuid.uuid4() + cls.update_request_id = request_id objectchanges = ( ObjectChange( changed_object_type=content_type, @@ -1148,14 +1328,36 @@ class ChangeLoggedFilterSetTestCase(TestCase): ) ObjectChange.objects.bulk_create(objectchanges) + # Simulate *create* and *update* changelog records for two of the sites + request_id = uuid.uuid4() + cls.create_update_request_id = request_id + objectchanges = ( + ObjectChange( + changed_object_type=content_type, + changed_object_id=sites[2].pk, + action=ObjectChangeActionChoices.ACTION_CREATE, + request_id=request_id + ), + ObjectChange( + changed_object_type=content_type, + changed_object_id=sites[3].pk, + action=ObjectChangeActionChoices.ACTION_UPDATE, + request_id=request_id + ), + ) + ObjectChange.objects.bulk_create(objectchanges) + def test_created_by_request(self): - request_id = ObjectChange.objects.filter(action=ObjectChangeActionChoices.ACTION_CREATE).first().request_id - params = {'created_by_request': request_id} + params = {'created_by_request': self.create_request_id} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - self.assertEqual(self.queryset.count(), 3) + self.assertEqual(self.queryset.count(), 4) def test_updated_by_request(self): - request_id = ObjectChange.objects.filter(action=ObjectChangeActionChoices.ACTION_UPDATE).first().request_id - params = {'updated_by_request': request_id} + params = {'updated_by_request': self.update_request_id} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - self.assertEqual(self.queryset.count(), 3) + self.assertEqual(self.queryset.count(), 4) + + def test_modified_by_request(self): + params = {'modified_by_request': self.create_update_request_id} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + self.assertEqual(self.queryset.count(), 4) diff --git a/netbox/extras/tests/test_views.py b/netbox/extras/tests/test_views.py index 01ef9a2a6..d720560e4 100644 --- a/netbox/extras/tests/test_views.py +++ b/netbox/extras/tests/test_views.py @@ -1,4 +1,3 @@ -import json import urllib.parse import uuid @@ -6,12 +5,11 @@ from django.contrib.auth import get_user_model from django.contrib.contenttypes.models import ContentType from django.urls import reverse -from dcim.models import Site +from dcim.models import DeviceType, Manufacturer, Site from extras.choices import * from extras.models import * from utilities.testing import ViewTestCases, TestCase - User = get_user_model() @@ -50,15 +48,16 @@ class CustomFieldTestCase(ViewTestCases.PrimaryObjectViewTestCase): 'default': None, 'weight': 200, 'required': True, - 'ui_visibility': CustomFieldVisibilityChoices.VISIBILITY_READ_WRITE, + 'ui_visible': CustomFieldUIVisibleChoices.ALWAYS, + 'ui_editable': CustomFieldUIEditableChoices.YES, } cls.csv_data = ( - 'name,label,type,content_types,object_type,weight,search_weight,filter_logic,choice_set,validation_minimum,validation_maximum,validation_regex,ui_visibility', - 'field4,Field 4,text,dcim.site,,100,1000,exact,,,,[a-z]{3},read-write', - 'field5,Field 5,integer,dcim.site,,100,2000,exact,,1,100,,read-write', - 'field6,Field 6,select,dcim.site,,100,3000,exact,Choice Set 1,,,,read-write', - 'field7,Field 7,object,dcim.site,dcim.region,100,4000,exact,,,,,read-write', + 'name,label,type,content_types,object_type,weight,search_weight,filter_logic,choice_set,validation_minimum,validation_maximum,validation_regex,ui_visible,ui_editable', + 'field4,Field 4,text,dcim.site,,100,1000,exact,,,,[a-z]{3},always,yes', + 'field5,Field 5,integer,dcim.site,,100,2000,exact,,1,100,,always,yes', + 'field6,Field 6,select,dcim.site,,100,3000,exact,Choice Set 1,,,,always,yes', + 'field7,Field 7,object,dcim.site,dcim.region,100,4000,exact,,,,,always,yes', ) cls.csv_update_data = ( @@ -93,19 +92,24 @@ class CustomFieldChoiceSetTestCase(ViewTestCases.PrimaryObjectViewTestCase): name='Choice Set 3', extra_choices=(('C1', 'Choice 1'), ('C2', 'Choice 2'), ('C3', 'Choice 3')) ), + CustomFieldChoiceSet( + name='Choice Set 4', + extra_choices=(('D1', 'Choice 1'), ('D2', 'Choice 2'), ('D3', 'Choice 3')) + ), ) CustomFieldChoiceSet.objects.bulk_create(choice_sets) cls.form_data = { 'name': 'Choice Set X', - 'extra_choices': '\n'.join(['X1,Choice 1', 'X2,Choice 2', 'X3,Choice 3']) + 'extra_choices': '\n'.join(['X1:Choice 1', 'X2:Choice 2', 'X3:Choice 3']) } cls.csv_data = ( 'name,extra_choices', - 'Choice Set 4,"D1,D2,D3"', - 'Choice Set 5,"E1,E2,E3"', - 'Choice Set 6,"F1,F2,F3"', + 'Choice Set 5,"D1,D2,D3"', + 'Choice Set 6,"E1,E2,E3"', + 'Choice Set 7,"F1,F2,F3"', + 'Choice Set 8,"F1:L1,F2:L2,F3:L3"', ) cls.csv_update_data = ( @@ -113,12 +117,20 @@ class CustomFieldChoiceSetTestCase(ViewTestCases.PrimaryObjectViewTestCase): f'{choice_sets[0].pk},"A,B,C"', f'{choice_sets[1].pk},"A,B,C"', f'{choice_sets[2].pk},"A,B,C"', + f'{choice_sets[3].pk},"A:L1,B:L2,C:L3"', ) cls.bulk_edit_data = { 'description': 'New description', } + # This is here as extra_choices field splits on colon, but is returned + # from DB as comma separated. + def assertInstanceEqual(self, instance, data, exclude=None, api=False): + if 'extra_choices' in data: + data['extra_choices'] = data['extra_choices'].replace(':', ',') + return super().assertInstanceEqual(instance, data, exclude, api) + class CustomLinkTestCase(ViewTestCases.PrimaryObjectViewTestCase): model = CustomLink @@ -335,48 +347,94 @@ class WebhookTestCase(ViewTestCases.PrimaryObjectViewTestCase): @classmethod def setUpTestData(cls): - site_ct = ContentType.objects.get_for_model(Site) webhooks = ( - Webhook(name='Webhook 1', payload_url='http://example.com/?1', type_create=True, http_method='POST'), - Webhook(name='Webhook 2', payload_url='http://example.com/?2', type_create=True, http_method='POST'), - Webhook(name='Webhook 3', payload_url='http://example.com/?3', type_create=True, http_method='POST'), + Webhook(name='Webhook 1', payload_url='http://example.com/?1', http_method='POST'), + Webhook(name='Webhook 2', payload_url='http://example.com/?2', http_method='POST'), + Webhook(name='Webhook 3', payload_url='http://example.com/?3', http_method='POST'), ) for webhook in webhooks: webhook.save() - webhook.content_types.add(site_ct) cls.form_data = { 'name': 'Webhook X', + 'payload_url': 'http://example.com/?x', + 'http_method': 'GET', + 'http_content_type': 'application/foo', + 'description': 'My webhook', + } + + cls.csv_data = ( + "name,payload_url,http_method,http_content_type,description", + "Webhook 4,http://example.com/?4,GET,application/json,Foo", + "Webhook 5,http://example.com/?5,GET,application/json,Bar", + "Webhook 6,http://example.com/?6,GET,application/json,Baz", + ) + + cls.csv_update_data = ( + "id,name,description", + f"{webhooks[0].pk},Webhook 7,Foo", + f"{webhooks[1].pk},Webhook 8,Bar", + f"{webhooks[2].pk},Webhook 9,Baz", + ) + + cls.bulk_edit_data = { + 'http_method': 'GET', + } + + +class EventRulesTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = EventRule + + @classmethod + def setUpTestData(cls): + + webhooks = ( + Webhook(name='Webhook 1', payload_url='http://example.com/?1', http_method='POST'), + Webhook(name='Webhook 2', payload_url='http://example.com/?2', http_method='POST'), + Webhook(name='Webhook 3', payload_url='http://example.com/?3', http_method='POST'), + ) + for webhook in webhooks: + webhook.save() + + site_ct = ContentType.objects.get_for_model(Site) + event_rules = ( + EventRule(name='EventRule 1', type_create=True, action_object=webhooks[0]), + EventRule(name='EventRule 2', type_create=True, action_object=webhooks[1]), + EventRule(name='EventRule 3', type_create=True, action_object=webhooks[2]), + ) + for event in event_rules: + event.save() + event.content_types.add(site_ct) + + webhook_ct = ContentType.objects.get_for_model(Webhook) + cls.form_data = { + 'name': 'Event X', 'content_types': [site_ct.pk], 'type_create': False, 'type_update': True, 'type_delete': True, - 'payload_url': 'http://example.com/?x', - 'http_method': 'GET', - 'http_content_type': 'application/foo', 'conditions': None, + 'action_type': 'webhook', + 'action_object_type': webhook_ct.pk, + 'action_object_id': webhooks[0].pk, + 'action_choice': webhooks[0], + 'description': 'New description', } cls.csv_data = ( - "name,content_types,type_create,payload_url,http_method,http_content_type", - "Webhook 4,dcim.site,True,http://example.com/?4,GET,application/json", - "Webhook 5,dcim.site,True,http://example.com/?5,GET,application/json", - "Webhook 6,dcim.site,True,http://example.com/?6,GET,application/json", + "name,content_types,type_create,action_type,action_object", + "Webhook 4,dcim.site,True,webhook,Webhook 1", ) cls.csv_update_data = ( "id,name", - f"{webhooks[0].pk},Webhook 7", - f"{webhooks[1].pk},Webhook 8", - f"{webhooks[2].pk},Webhook 9", + f"{event_rules[0].pk},Event 7", + f"{event_rules[1].pk},Event 8", + f"{event_rules[2].pk},Event 9", ) cls.bulk_edit_data = { - 'enabled': False, - 'type_create': False, 'type_update': True, - 'type_delete': True, - 'http_method': 'GET', } @@ -434,7 +492,8 @@ class ConfigContextTestCase( @classmethod def setUpTestData(cls): - site = Site.objects.create(name='Site 1', slug='site-1') + manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') + devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1', slug='device-type-1') # Create three ConfigContexts for i in range(1, 4): @@ -443,7 +502,7 @@ class ConfigContextTestCase( data={'foo': i} ) configcontext.save() - configcontext.sites.add(site) + configcontext.device_types.add(devicetype) cls.form_data = { 'name': 'Config Context X', @@ -451,11 +510,12 @@ class ConfigContextTestCase( 'description': 'A new config context', 'is_active': True, 'regions': [], - 'sites': [site.pk], + 'sites': [], 'roles': [], 'platforms': [], 'tenant_groups': [], 'tenants': [], + 'device_types': [devicetype.id], 'tags': [], 'data': '{"foo": 123}', } diff --git a/netbox/extras/urls.py b/netbox/extras/urls.py index fd95186e4..0a1786f1f 100644 --- a/netbox/extras/urls.py +++ b/netbox/extras/urls.py @@ -61,6 +61,14 @@ urlpatterns = [ path('webhooks/delete/', views.WebhookBulkDeleteView.as_view(), name='webhook_bulk_delete'), path('webhooks//', include(get_model_urls('extras', 'webhook'))), + # Event rules + path('event-rules/', views.EventRuleListView.as_view(), name='eventrule_list'), + path('event-rules/add/', views.EventRuleEditView.as_view(), name='eventrule_add'), + path('event-rules/import/', views.EventRuleBulkImportView.as_view(), name='eventrule_import'), + path('event-rules/edit/', views.EventRuleBulkEditView.as_view(), name='eventrule_bulk_edit'), + path('event-rules/delete/', views.EventRuleBulkDeleteView.as_view(), name='eventrule_bulk_delete'), + path('event-rules//', include(get_model_urls('extras', 'eventrule'))), + # Tags path('tags/', views.TagListView.as_view(), name='tag_list'), path('tags/add/', views.TagEditView.as_view(), name='tag_add'), @@ -98,13 +106,6 @@ urlpatterns = [ path('journal-entries/import/', views.JournalEntryBulkImportView.as_view(), name='journalentry_import'), path('journal-entries//', include(get_model_urls('extras', 'journalentry'))), - # Config revisions - path('config-revisions/', views.ConfigRevisionListView.as_view(), name='configrevision_list'), - path('config-revisions/add/', views.ConfigRevisionEditView.as_view(), name='configrevision_add'), - path('config-revisions/delete/', views.ConfigRevisionBulkDeleteView.as_view(), name='configrevision_bulk_delete'), - path('config-revisions//restore/', views.ConfigRevisionRestoreView.as_view(), name='configrevision_restore'), - path('config-revisions//', include(get_model_urls('extras', 'configrevision'))), - # Change logging path('changelog/', views.ObjectChangeListView.as_view(), name='objectchange_list'), path('changelog//', include(get_model_urls('extras', 'objectchange'))), diff --git a/netbox/extras/utils.py b/netbox/extras/utils.py index 23892e098..c6b2de188 100644 --- a/netbox/extras/utils.py +++ b/netbox/extras/utils.py @@ -1,5 +1,3 @@ -from django.db.models import Q -from django.utils.deconstruct import deconstructible from taggit.managers import _TaggableManager from netbox.registry import registry @@ -31,29 +29,6 @@ def image_upload(instance, filename): return '{}{}_{}_{}'.format(path, instance.content_type.name, instance.object_id, filename) -@deconstructible -class FeatureQuery: - """ - Helper class that delays evaluation of the registry contents for the functionality store - until it has been populated. - """ - def __init__(self, feature): - self.feature = feature - - def __call__(self): - return self.get_query() - - def get_query(self): - """ - Given an extras feature, return a Q object for content type lookup - """ - query = Q() - for app_label, models in registry['model_features'][self.feature].items(): - query |= Q(app_label=app_label, model__in=models) - - return query - - def register_features(model, features): """ Register model features in the application registry. @@ -67,6 +42,10 @@ def register_features(model, features): f"{feature} is not a valid model feature! Valid keys are: {registry['model_features'].keys()}" ) + # Register public models + if not getattr(model, '_netbox_private', False): + registry['models'][app_label].add(model_name) + def is_script(obj): """ diff --git a/netbox/extras/validators.py b/netbox/extras/validators.py index 686c9b032..35f61958c 100644 --- a/netbox/extras/validators.py +++ b/netbox/extras/validators.py @@ -1,15 +1,38 @@ -from django.core.exceptions import ValidationError from django.core import validators +from django.core.exceptions import ValidationError +from django.utils.translation import gettext_lazy as _ # NOTE: As this module may be imported by configuration.py, we cannot import # anything from NetBox itself. +class IsEqualValidator(validators.BaseValidator): + """ + Employed by CustomValidator to require a specific value. + """ + message = _("Ensure this value is equal to %(limit_value)s.") + code = "is_equal" + + def compare(self, a, b): + return a != b + + +class IsNotEqualValidator(validators.BaseValidator): + """ + Employed by CustomValidator to exclude a specific value. + """ + message = _("Ensure this value does not equal %(limit_value)s.") + code = "is_not_equal" + + def compare(self, a, b): + return a == b + + class IsEmptyValidator: """ Employed by CustomValidator to enforce required fields. """ - message = "This field must be empty." + message = _("This field must be empty.") code = 'is_empty' def __init__(self, enforce=True): @@ -24,7 +47,7 @@ class IsNotEmptyValidator: """ Employed by CustomValidator to enforce prohibited fields. """ - message = "This field must not be empty." + message = _("This field must not be empty.") code = 'not_empty' def __init__(self, enforce=True): @@ -50,6 +73,8 @@ class CustomValidator: :param validation_rules: A dictionary mapping object attributes to validation rules """ VALIDATORS = { + 'eq': IsEqualValidator, + 'neq': IsNotEqualValidator, 'min': validators.MinValueValidator, 'max': validators.MaxValueValidator, 'min_length': validators.MinLengthValidator, @@ -66,8 +91,7 @@ class CustomValidator: def __call__(self, instance): # Validate instance attributes per validation rules for attr_name, rules in self.validation_rules.items(): - assert hasattr(instance, attr_name), f"Invalid attribute '{attr_name}' for {instance.__class__.__name__}" - attr = getattr(instance, attr_name) + attr = self._getattr(instance, attr_name) for descriptor, value in rules.items(): validator = self.get_validator(descriptor, value) try: @@ -79,6 +103,26 @@ class CustomValidator: # Execute custom validation logic (if any) self.validate(instance) + @staticmethod + def _getattr(instance, name): + # Attempt to resolve many-to-many fields to their stored values + m2m_fields = [f.name for f in instance._meta.local_many_to_many] + if name in m2m_fields: + if name in getattr(instance, '_m2m_values', []): + return instance._m2m_values[name] + if instance.pk: + return list(getattr(instance, name).all()) + return [] + + # Raise a ValidationError for unknown attributes + if not hasattr(instance, name): + raise ValidationError(_('Invalid attribute "{name}" for {model}').format( + name=name, + model=instance.__class__.__name__ + )) + + return getattr(instance, name) + def get_validator(self, descriptor, value): """ Instantiate and return the appropriate validator based on the descriptor given. For diff --git a/netbox/extras/views.py b/netbox/extras/views.py index a9636cc9e..a3dd7f193 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -15,7 +15,7 @@ from core.models import Job from core.tables import JobTable from extras.dashboard.forms import DashboardWidgetAddForm, DashboardWidgetForm from extras.dashboard.utils import get_widget_class -from netbox.config import get_config, PARAMS +from netbox.constants import DEFAULT_ACTION_PERMISSIONS from netbox.views import generic from utilities.forms import ConfirmationForm, get_field_value from utilities.htmx import is_htmx @@ -46,6 +46,21 @@ class CustomFieldListView(generic.ObjectListView): class CustomFieldView(generic.ObjectView): queryset = CustomField.objects.select_related('choice_set') + def get_extra_context(self, request, instance): + related_models = () + + for content_type in instance.content_types.all(): + related_models += ( + content_type.model_class().objects.restrict(request.user, 'view').exclude( + Q(**{f'custom_field_data__{instance.name}': ''}) | + Q(**{f'custom_field_data__{instance.name}': None}) + ), + ) + + return { + 'related_models': related_models + } + @register_model_view(CustomField, 'edit') class CustomFieldEditView(generic.ObjectEditView): @@ -195,7 +210,10 @@ class ExportTemplateListView(generic.ObjectListView): filterset_form = forms.ExportTemplateFilterForm table = tables.ExportTemplateTable template_name = 'extras/exporttemplate_list.html' - actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete', 'bulk_sync') + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_sync': {'sync'}, + } @register_model_view(ExportTemplate) @@ -377,6 +395,51 @@ class WebhookBulkDeleteView(generic.BulkDeleteView): table = tables.WebhookTable +# +# Event Rules +# + +class EventRuleListView(generic.ObjectListView): + queryset = EventRule.objects.all() + filterset = filtersets.EventRuleFilterSet + filterset_form = forms.EventRuleFilterForm + table = tables.EventRuleTable + + +@register_model_view(EventRule) +class EventRuleView(generic.ObjectView): + queryset = EventRule.objects.all() + + +@register_model_view(EventRule, 'edit') +class EventRuleEditView(generic.ObjectEditView): + queryset = EventRule.objects.all() + form = forms.EventRuleForm + + +@register_model_view(EventRule, 'delete') +class EventRuleDeleteView(generic.ObjectDeleteView): + queryset = EventRule.objects.all() + + +class EventRuleBulkImportView(generic.BulkImportView): + queryset = EventRule.objects.all() + model_form = forms.EventRuleImportForm + + +class EventRuleBulkEditView(generic.BulkEditView): + queryset = EventRule.objects.all() + filterset = filtersets.EventRuleFilterSet + table = tables.EventRuleTable + form = forms.EventRuleBulkEditForm + + +class EventRuleBulkDeleteView(generic.BulkDeleteView): + queryset = EventRule.objects.all() + filterset = filtersets.EventRuleFilterSet + table = tables.EventRuleTable + + # # Tags # @@ -457,7 +520,12 @@ class ConfigContextListView(generic.ObjectListView): filterset_form = forms.ConfigContextFilterForm table = tables.ConfigContextTable template_name = 'extras/configcontext_list.html' - actions = ('add', 'bulk_edit', 'bulk_delete', 'bulk_sync') + actions = { + 'add': {'add'}, + 'bulk_edit': {'change'}, + 'bulk_delete': {'delete'}, + 'bulk_sync': {'sync'}, + } @register_model_view(ConfigContext) @@ -561,7 +629,10 @@ class ConfigTemplateListView(generic.ObjectListView): filterset_form = forms.ConfigTemplateFilterForm table = tables.ConfigTemplateTable template_name = 'extras/configtemplate_list.html' - actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete', 'bulk_sync') + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_sync': {'sync'}, + } @register_model_view(ConfigTemplate) @@ -612,7 +683,9 @@ class ObjectChangeListView(generic.ObjectListView): filterset_form = forms.ObjectChangeFilterForm table = tables.ObjectChangeTable template_name = 'extras/objectchange_list.html' - actions = ('export',) + actions = { + 'export': {'view'}, + } @register_model_view(ObjectChange) @@ -678,7 +751,9 @@ class ImageAttachmentListView(generic.ObjectListView): filterset = filtersets.ImageAttachmentFilterSet filterset_form = forms.ImageAttachmentFilterForm table = tables.ImageAttachmentTable - actions = ('export',) + actions = { + 'export': {'view'}, + } @register_model_view(ImageAttachment, 'edit') @@ -721,7 +796,12 @@ class JournalEntryListView(generic.ObjectListView): filterset = filtersets.JournalEntryFilterSet filterset_form = forms.JournalEntryFilterForm table = tables.JournalEntryTable - actions = ('import', 'export', 'bulk_edit', 'bulk_delete') + actions = { + 'import': {'add'}, + 'export': {'view'}, + 'bulk_edit': {'change'}, + 'bulk_delete': {'delete'}, + } @register_model_view(JournalEntry) @@ -963,6 +1043,10 @@ class ReportListView(ContentTypePermissionRequiredMixin, View): }) +def get_report_module(module, request): + return get_object_or_404(ReportModule.objects.restrict(request.user), file_path__regex=f"^{module}\\.") + + class ReportView(ContentTypePermissionRequiredMixin, View): """ Display a single Report and its associated Job (if any). @@ -971,7 +1055,7 @@ class ReportView(ContentTypePermissionRequiredMixin, View): return 'extras.view_report' def get(self, request, module, name): - module = get_object_or_404(ReportModule.objects.restrict(request.user), file_path__startswith=module) + module = get_report_module(module, request) report = module.reports[name]() object_type = ContentType.objects.get(app_label='extras', model='reportmodule') @@ -992,7 +1076,7 @@ class ReportView(ContentTypePermissionRequiredMixin, View): if not request.user.has_perm('extras.run_report'): return HttpResponseForbidden() - module = get_object_or_404(ReportModule.objects.restrict(request.user), file_path__startswith=module) + module = get_report_module(module, request) report = module.reports[name]() form = ReportForm(request.POST, scheduling_enabled=report.scheduling_enabled) @@ -1031,7 +1115,7 @@ class ReportSourceView(ContentTypePermissionRequiredMixin, View): return 'extras.view_report' def get(self, request, module, name): - module = get_object_or_404(ReportModule.objects.restrict(request.user), file_path__startswith=module) + module = get_report_module(module, request) report = module.reports[name]() return render(request, 'extras/report/source.html', { @@ -1047,14 +1131,14 @@ class ReportJobsView(ContentTypePermissionRequiredMixin, View): return 'extras.view_report' def get(self, request, module, name): - module = get_object_or_404(ReportModule.objects.restrict(request.user), file_path__startswith=module) + module = get_report_module(module, request) report = module.reports[name]() object_type = ContentType.objects.get(app_label='extras', model='reportmodule') jobs = Job.objects.filter( object_type=object_type, object_id=module.pk, - name=report.name + name=report.class_name ) jobs_table = JobTable( @@ -1136,13 +1220,17 @@ class ScriptListView(ContentTypePermissionRequiredMixin, View): }) +def get_script_module(module, request): + return get_object_or_404(ScriptModule.objects.restrict(request.user), file_path__regex=f"^{module}\\.") + + class ScriptView(ContentTypePermissionRequiredMixin, View): def get_required_permission(self): return 'extras.view_script' def get(self, request, module, name): - module = get_object_or_404(ScriptModule.objects.restrict(request.user), file_path__startswith=module) + module = get_script_module(module, request) script = module.scripts[name]() form = script.as_form(initial=normalize_querydict(request.GET)) @@ -1166,7 +1254,7 @@ class ScriptView(ContentTypePermissionRequiredMixin, View): if not request.user.has_perm('extras.run_script'): return HttpResponseForbidden() - module = get_object_or_404(ScriptModule.objects.restrict(request.user), file_path__startswith=module) + module = get_script_module(module, request) script = module.scripts[name]() form = script.as_form(request.POST, request.FILES) @@ -1203,7 +1291,7 @@ class ScriptSourceView(ContentTypePermissionRequiredMixin, View): return 'extras.view_script' def get(self, request, module, name): - module = get_object_or_404(ScriptModule.objects.restrict(request.user), file_path__startswith=module) + module = get_script_module(module, request) script = module.scripts[name]() return render(request, 'extras/script/source.html', { @@ -1219,7 +1307,7 @@ class ScriptJobsView(ContentTypePermissionRequiredMixin, View): return 'extras.view_script' def get(self, request, module, name): - module = get_object_or_404(ScriptModule.objects.restrict(request.user), file_path__startswith=module) + module = get_script_module(module, request) script = module.scripts[name]() object_type = ContentType.objects.get(app_label='extras', model='scriptmodule') @@ -1272,74 +1360,6 @@ class ScriptResultView(ContentTypePermissionRequiredMixin, View): }) -# -# Config Revisions -# - -class ConfigRevisionListView(generic.ObjectListView): - queryset = ConfigRevision.objects.all() - filterset = filtersets.ConfigRevisionFilterSet - filterset_form = forms.ConfigRevisionFilterForm - table = tables.ConfigRevisionTable - - -@register_model_view(ConfigRevision) -class ConfigRevisionView(generic.ObjectView): - queryset = ConfigRevision.objects.all() - - -class ConfigRevisionEditView(generic.ObjectEditView): - queryset = ConfigRevision.objects.all() - form = forms.ConfigRevisionForm - - -@register_model_view(ConfigRevision, 'delete') -class ConfigRevisionDeleteView(generic.ObjectDeleteView): - queryset = ConfigRevision.objects.all() - - -class ConfigRevisionBulkDeleteView(generic.BulkDeleteView): - queryset = ConfigRevision.objects.all() - filterset = filtersets.ConfigRevisionFilterSet - table = tables.ConfigRevisionTable - - -class ConfigRevisionRestoreView(ContentTypePermissionRequiredMixin, View): - - def get_required_permission(self): - return 'extras.configrevision_edit' - - def get(self, request, pk): - candidate_config = get_object_or_404(ConfigRevision, pk=pk) - - # Get the current ConfigRevision - config_version = get_config().version - current_config = ConfigRevision.objects.filter(pk=config_version).first() - - params = [] - for param in PARAMS: - params.append(( - param.name, - current_config.data.get(param.name, None), - candidate_config.data.get(param.name, None) - )) - - return render(request, 'extras/configrevision_restore.html', { - 'object': candidate_config, - 'params': params, - }) - - def post(self, request, pk): - if not request.user.has_perm('extras.configrevision_edit'): - return HttpResponseForbidden() - - candidate_config = get_object_or_404(ConfigRevision, pk=pk) - candidate_config.activate() - messages.success(request, f"Restored configuration revision #{pk}") - - return redirect(candidate_config.get_absolute_url()) - - # # Markdown # diff --git a/netbox/extras/webhooks.py b/netbox/extras/webhooks.py index 1fc869ee8..53ec161d7 100644 --- a/netbox/extras/webhooks.py +++ b/netbox/extras/webhooks.py @@ -1,46 +1,15 @@ import hashlib import hmac +import logging -from django.contrib.contenttypes.models import ContentType -from django.utils import timezone -from django_rq import get_queue +import requests +from django.conf import settings +from django_rq import job +from jinja2.exceptions import TemplateError -from netbox.config import get_config -from netbox.constants import RQ_QUEUE_DEFAULT -from netbox.registry import registry -from utilities.api import get_serializer_for_model -from utilities.rqworker import get_rq_retry -from utilities.utils import serialize_object -from .choices import * -from .models import Webhook +from .constants import WEBHOOK_EVENT_TYPES - -def serialize_for_webhook(instance): - """ - Return a serialized representation of the given instance suitable for use in a webhook. - """ - serializer_class = get_serializer_for_model(instance.__class__) - serializer_context = { - 'request': None, - } - serializer = serializer_class(instance, context=serializer_context) - - return serializer.data - - -def get_snapshots(instance, action): - snapshots = { - 'prechange': getattr(instance, '_prechange_snapshot', None), - 'postchange': None, - } - if action != ObjectChangeActionChoices.ACTION_DELETE: - # Use model's serialize_object() method if defined; fall back to serialize_object() utility function - if hasattr(instance, 'serialize_object'): - snapshots['postchange'] = instance.serialize_object() - else: - snapshots['postchange'] = serialize_object(instance) - - return snapshots +logger = logging.getLogger('netbox.webhooks') def generate_signature(request_body, secret): @@ -55,68 +24,77 @@ def generate_signature(request_body, secret): return hmac_prep.hexdigest() -def enqueue_object(queue, instance, user, request_id, action): +@job('default') +def send_webhook(event_rule, model_name, event, data, timestamp, username, request_id=None, snapshots=None): """ - Enqueue a serialized representation of a created/updated/deleted object for the processing of - webhooks once the request has completed. + Make a POST request to the defined Webhook """ - # Determine whether this type of object supports webhooks - app_label = instance._meta.app_label - model_name = instance._meta.model_name - if model_name not in registry['model_features']['webhooks'].get(app_label, []): - return + webhook = event_rule.action_object - queue.append({ - 'content_type': ContentType.objects.get_for_model(instance), - 'object_id': instance.pk, - 'event': action, - 'data': serialize_for_webhook(instance), - 'snapshots': get_snapshots(instance, action), - 'username': user.username, - 'request_id': request_id - }) - - -def flush_webhooks(queue): - """ - Flush a list of object representation to RQ for webhook processing. - """ - rq_queue_name = get_config().QUEUE_MAPPINGS.get('webhook', RQ_QUEUE_DEFAULT) - rq_queue = get_queue(rq_queue_name) - webhooks_cache = { - 'type_create': {}, - 'type_update': {}, - 'type_delete': {}, + # Prepare context data for headers & body templates + context = { + 'event': WEBHOOK_EVENT_TYPES[event], + 'timestamp': timestamp, + 'model': model_name, + 'username': username, + 'request_id': request_id, + 'data': data, } + if snapshots: + context.update({ + 'snapshots': snapshots + }) - for data in queue: + # Build the headers for the HTTP request + headers = { + 'Content-Type': webhook.http_content_type, + } + try: + headers.update(webhook.render_headers(context)) + except (TemplateError, ValueError) as e: + logger.error(f"Error parsing HTTP headers for webhook {webhook}: {e}") + raise e - action_flag = { - ObjectChangeActionChoices.ACTION_CREATE: 'type_create', - ObjectChangeActionChoices.ACTION_UPDATE: 'type_update', - ObjectChangeActionChoices.ACTION_DELETE: 'type_delete', - }[data['event']] - content_type = data['content_type'] + # Render the request body + try: + body = webhook.render_body(context) + except TemplateError as e: + logger.error(f"Error rendering request body for webhook {webhook}: {e}") + raise e - # Cache applicable Webhooks - if content_type not in webhooks_cache[action_flag]: - webhooks_cache[action_flag][content_type] = Webhook.objects.filter( - **{action_flag: True}, - content_types=content_type, - enabled=True - ) - webhooks = webhooks_cache[action_flag][content_type] + # Prepare the HTTP request + params = { + 'method': webhook.http_method, + 'url': webhook.render_payload_url(context), + 'headers': headers, + 'data': body.encode('utf8'), + } + logger.info( + f"Sending {params['method']} request to {params['url']} ({context['model']} {context['event']})" + ) + logger.debug(params) + try: + prepared_request = requests.Request(**params).prepare() + except requests.exceptions.RequestException as e: + logger.error(f"Error forming HTTP request: {e}") + raise e - for webhook in webhooks: - rq_queue.enqueue( - "extras.webhooks_worker.process_webhook", - webhook=webhook, - model_name=content_type.model, - event=data['event'], - data=data['data'], - snapshots=data['snapshots'], - timestamp=str(timezone.now()), - username=data['username'], - request_id=data['request_id'], - retry=get_rq_retry() - ) + # If a secret key is defined, sign the request with a hash of the key and its content + if webhook.secret != '': + prepared_request.headers['X-Hook-Signature'] = generate_signature(prepared_request.body, webhook.secret) + + # Send the request + with requests.Session() as session: + session.verify = webhook.ssl_verification + if webhook.ca_file_path: + session.verify = webhook.ca_file_path + response = session.send(prepared_request, proxies=settings.HTTP_PROXIES) + + if 200 <= response.status_code <= 299: + logger.info(f"Request succeeded; response status {response.status_code}") + return f"Status {response.status_code} returned, webhook successfully processed." + else: + logger.warning(f"Request failed; response status {response.status_code}: {response.content}") + raise requests.exceptions.RequestException( + f"Status {response.status_code} returned with content '{response.content}', webhook FAILED to process." + ) diff --git a/netbox/extras/webhooks_worker.py b/netbox/extras/webhooks_worker.py index 438231b7e..77535fafa 100644 --- a/netbox/extras/webhooks_worker.py +++ b/netbox/extras/webhooks_worker.py @@ -1,105 +1,10 @@ -import logging +import warnings -import requests -from django.conf import settings -from django_rq import job -from jinja2.exceptions import TemplateError - -from .conditions import ConditionSet -from .constants import WEBHOOK_EVENT_TYPES -from .webhooks import generate_signature - -logger = logging.getLogger('netbox.webhooks_worker') +from .webhooks import send_webhook as process_webhook -def eval_conditions(webhook, data): - """ - Test whether the given data meets the conditions of the webhook (if any). Return True - if met or no conditions are specified. - """ - if not webhook.conditions: - return True - - logger.debug(f'Evaluating webhook conditions: {webhook.conditions}') - if ConditionSet(webhook.conditions).eval(data): - return True - - return False - - -@job('default') -def process_webhook(webhook, model_name, event, data, timestamp, username, request_id=None, snapshots=None): - """ - Make a POST request to the defined Webhook - """ - # Evaluate webhook conditions (if any) - if not eval_conditions(webhook, data): - return - - # Prepare context data for headers & body templates - context = { - 'event': WEBHOOK_EVENT_TYPES[event], - 'timestamp': timestamp, - 'model': model_name, - 'username': username, - 'request_id': request_id, - 'data': data, - } - if snapshots: - context.update({ - 'snapshots': snapshots - }) - - # Build the headers for the HTTP request - headers = { - 'Content-Type': webhook.http_content_type, - } - try: - headers.update(webhook.render_headers(context)) - except (TemplateError, ValueError) as e: - logger.error(f"Error parsing HTTP headers for webhook {webhook}: {e}") - raise e - - # Render the request body - try: - body = webhook.render_body(context) - except TemplateError as e: - logger.error(f"Error rendering request body for webhook {webhook}: {e}") - raise e - - # Prepare the HTTP request - params = { - 'method': webhook.http_method, - 'url': webhook.render_payload_url(context), - 'headers': headers, - 'data': body.encode('utf8'), - } - logger.info( - f"Sending {params['method']} request to {params['url']} ({context['model']} {context['event']})" - ) - logger.debug(params) - try: - prepared_request = requests.Request(**params).prepare() - except requests.exceptions.RequestException as e: - logger.error(f"Error forming HTTP request: {e}") - raise e - - # If a secret key is defined, sign the request with a hash of the key and its content - if webhook.secret != '': - prepared_request.headers['X-Hook-Signature'] = generate_signature(prepared_request.body, webhook.secret) - - # Send the request - with requests.Session() as session: - session.verify = webhook.ssl_verification - if webhook.ca_file_path: - session.verify = webhook.ca_file_path - response = session.send(prepared_request, proxies=settings.HTTP_PROXIES) - - if 200 <= response.status_code <= 299: - logger.info(f"Request succeeded; response status {response.status_code}") - return f"Status {response.status_code} returned, webhook successfully processed." - else: - logger.warning(f"Request failed; response status {response.status_code}: {response.content}") - raise requests.exceptions.RequestException( - f"Status {response.status_code} returned with content '{response.content}', webhook FAILED to process." - ) +# TODO: Remove in v4.0 +warnings.warn( + f"webhooks_worker.process_webhook has been moved to webhooks.send_webhook.", + DeprecationWarning +) diff --git a/netbox/ipam/api/field_serializers.py b/netbox/ipam/api/field_serializers.py index d44d8b7d4..d12530a60 100644 --- a/netbox/ipam/api/field_serializers.py +++ b/netbox/ipam/api/field_serializers.py @@ -1,21 +1,18 @@ from django.utils.translation import gettext_lazy as _ from rest_framework import serializers -from ipam import models from netaddr import AddrFormatError, IPNetwork -__all__ = [ +__all__ = ( 'IPAddressField', -] + 'IPNetworkField', +) -# -# IP address field -# - class IPAddressField(serializers.CharField): - """IPAddressField with mask""" - + """ + An IPv4 or IPv6 address with optional mask + """ default_error_messages = { 'invalid': _('Enter a valid IPv4 or IPv6 address with optional mask.'), } @@ -24,7 +21,27 @@ class IPAddressField(serializers.CharField): try: return IPNetwork(data) except AddrFormatError: - raise serializers.ValidationError("Invalid IP address format: {}".format(data)) + raise serializers.ValidationError(_("Invalid IP address format: {data}").format(data)) + except (TypeError, ValueError) as e: + raise serializers.ValidationError(e) + + def to_representation(self, value): + return str(value) + + +class IPNetworkField(serializers.CharField): + """ + An IPv4 or IPv6 prefix + """ + default_error_messages = { + 'invalid': _('Enter a valid IPv4 or IPv6 prefix and mask in CIDR notation.'), + } + + def to_internal_value(self, data): + try: + return IPNetwork(data) + except AddrFormatError: + raise serializers.ValidationError(_("Invalid IP prefix format: {data}").format(data)) except (TypeError, ValueError) as e: raise serializers.ValidationError(e) diff --git a/netbox/ipam/api/nested_serializers.py b/netbox/ipam/api/nested_serializers.py index 9e150e2cb..17d8d74a7 100644 --- a/netbox/ipam/api/nested_serializers.py +++ b/netbox/ipam/api/nested_serializers.py @@ -2,7 +2,6 @@ from drf_spectacular.utils import extend_schema_serializer from rest_framework import serializers from ipam import models -from ipam.models.l2vpn import L2VPNTermination, L2VPN from netbox.api.serializers import WritableNestedSerializer from .field_serializers import IPAddressField @@ -14,8 +13,6 @@ __all__ = [ 'NestedFHRPGroupAssignmentSerializer', 'NestedIPAddressSerializer', 'NestedIPRangeSerializer', - 'NestedL2VPNSerializer', - 'NestedL2VPNTerminationSerializer', 'NestedPrefixSerializer', 'NestedRIRSerializer', 'NestedRoleSerializer', @@ -223,28 +220,3 @@ class NestedServiceSerializer(WritableNestedSerializer): class Meta: model = models.Service fields = ['id', 'url', 'display', 'name', 'protocol', 'ports'] - -# -# L2VPN -# - - -class NestedL2VPNSerializer(WritableNestedSerializer): - url = serializers.HyperlinkedIdentityField(view_name='ipam-api:l2vpn-detail') - - class Meta: - model = L2VPN - fields = [ - 'id', 'url', 'display', 'identifier', 'name', 'slug', 'type' - ] - - -class NestedL2VPNTerminationSerializer(WritableNestedSerializer): - url = serializers.HyperlinkedIdentityField(view_name='ipam-api:l2vpntermination-detail') - l2vpn = NestedL2VPNSerializer() - - class Meta: - model = L2VPNTermination - fields = [ - 'id', 'url', 'display', 'l2vpn' - ] diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index c2cf38fe7..33aa55a93 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -12,8 +12,9 @@ from netbox.constants import NESTED_SERIALIZER_PREFIX from tenancy.api.nested_serializers import NestedTenantSerializer from utilities.api import get_serializer_for_model from virtualization.api.nested_serializers import NestedVirtualMachineSerializer +from vpn.api.nested_serializers import NestedL2VPNTerminationSerializer +from .field_serializers import IPAddressField, IPNetworkField from .nested_serializers import * -from .field_serializers import IPAddressField # @@ -138,7 +139,7 @@ class AggregateSerializer(NetBoxModelSerializer): family = ChoiceField(choices=IPAddressFamilyChoices, read_only=True) rir = NestedRIRSerializer() tenant = NestedTenantSerializer(required=False, allow_null=True) - prefix = serializers.CharField() + prefix = IPNetworkField() class Meta: model = Aggregate @@ -146,7 +147,6 @@ class AggregateSerializer(NetBoxModelSerializer): 'id', 'url', 'display', 'family', 'prefix', 'rir', 'tenant', 'date_added', 'description', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', ] - read_only_fields = ['family'] # @@ -306,7 +306,7 @@ class PrefixSerializer(NetBoxModelSerializer): role = NestedRoleSerializer(required=False, allow_null=True) children = serializers.IntegerField(read_only=True) _depth = serializers.IntegerField(read_only=True) - prefix = serializers.CharField() + prefix = IPNetworkField() class Meta: model = Prefix @@ -315,7 +315,6 @@ class PrefixSerializer(NetBoxModelSerializer): 'mark_utilized', 'description', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', 'children', '_depth', ] - read_only_fields = ['family'] class PrefixLengthSerializer(serializers.Serializer): @@ -386,7 +385,6 @@ class IPRangeSerializer(NetBoxModelSerializer): 'description', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', 'mark_utilized', 'description', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', ] - read_only_fields = ['family'] # @@ -482,54 +480,3 @@ class ServiceSerializer(NetBoxModelSerializer): 'id', 'url', 'display', 'device', 'virtual_machine', 'name', 'ports', 'protocol', 'ipaddresses', 'description', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', ] - -# -# L2VPN -# - - -class L2VPNSerializer(NetBoxModelSerializer): - url = serializers.HyperlinkedIdentityField(view_name='ipam-api:l2vpn-detail') - type = ChoiceField(choices=L2VPNTypeChoices, required=False) - import_targets = SerializedPKRelatedField( - queryset=RouteTarget.objects.all(), - serializer=NestedRouteTargetSerializer, - required=False, - many=True - ) - export_targets = SerializedPKRelatedField( - queryset=RouteTarget.objects.all(), - serializer=NestedRouteTargetSerializer, - required=False, - many=True - ) - tenant = NestedTenantSerializer(required=False, allow_null=True) - - class Meta: - model = L2VPN - fields = [ - 'id', 'url', 'display', 'identifier', 'name', 'slug', 'type', 'import_targets', 'export_targets', - 'description', 'comments', 'tenant', 'tags', 'custom_fields', 'created', 'last_updated' - ] - - -class L2VPNTerminationSerializer(NetBoxModelSerializer): - url = serializers.HyperlinkedIdentityField(view_name='ipam-api:l2vpntermination-detail') - l2vpn = NestedL2VPNSerializer() - assigned_object_type = ContentTypeField( - queryset=ContentType.objects.all() - ) - assigned_object = serializers.SerializerMethodField(read_only=True) - - class Meta: - model = L2VPNTermination - fields = [ - 'id', 'url', 'display', 'l2vpn', 'assigned_object_type', 'assigned_object_id', - 'assigned_object', 'tags', 'custom_fields', 'created', 'last_updated' - ] - - @extend_schema_field(serializers.JSONField(allow_null=True)) - def get_assigned_object(self, instance): - serializer = get_serializer_for_model(instance.assigned_object, prefix=NESTED_SERIALIZER_PREFIX) - context = {'request': self.context['request']} - return serializer(instance.assigned_object, context=context).data diff --git a/netbox/ipam/api/urls.py b/netbox/ipam/api/urls.py index 442fd2240..bae9d8048 100644 --- a/netbox/ipam/api/urls.py +++ b/netbox/ipam/api/urls.py @@ -23,8 +23,6 @@ router.register('vlan-groups', views.VLANGroupViewSet) router.register('vlans', views.VLANViewSet) router.register('service-templates', views.ServiceTemplateViewSet) router.register('services', views.ServiceViewSet) -router.register('l2vpns', views.L2VPNViewSet) -router.register('l2vpn-terminations', views.L2VPNTerminationViewSet) app_name = 'ipam-api' diff --git a/netbox/ipam/api/views.py b/netbox/ipam/api/views.py index da6463e23..4439e82b4 100644 --- a/netbox/ipam/api/views.py +++ b/netbox/ipam/api/views.py @@ -1,3 +1,5 @@ +from copy import deepcopy + from django.core.exceptions import ObjectDoesNotExist, PermissionDenied from django.db import transaction from django.shortcuts import get_object_or_404 @@ -14,7 +16,6 @@ from circuits.models import Provider from dcim.models import Site from ipam import filtersets from ipam.models import * -from ipam.models import L2VPN, L2VPNTermination from ipam.utils import get_next_available_prefix from netbox.api.viewsets import NetBoxModelViewSet from netbox.api.viewsets.mixins import ObjectValidationMixin @@ -178,18 +179,6 @@ class ServiceViewSet(NetBoxModelViewSet): filterset_class = filtersets.ServiceFilterSet -class L2VPNViewSet(NetBoxModelViewSet): - queryset = L2VPN.objects.prefetch_related('import_targets', 'export_targets', 'tenant', 'tags') - serializer_class = serializers.L2VPNSerializer - filterset_class = filtersets.L2VPNFilterSet - - -class L2VPNTerminationViewSet(NetBoxModelViewSet): - queryset = L2VPNTermination.objects.prefetch_related('assigned_object') - serializer_class = serializers.L2VPNTerminationSerializer - filterset_class = filtersets.L2VPNTerminationFilterSet - - # # Views # @@ -266,6 +255,7 @@ class AvailableObjectsView(ObjectValidationMixin, APIView): # Normalize request data to a list of objects requested_objects = request.data if isinstance(request.data, list) else [request.data] + limit = len(requested_objects) # Serialize and validate the request data serializer = self.write_serializer_class(data=requested_objects, many=True, context={ @@ -279,7 +269,7 @@ class AvailableObjectsView(ObjectValidationMixin, APIView): ) with advisory_lock(ADVISORY_LOCK_KEYS[self.advisory_lock_key]): - available_objects = self.get_available_objects(parent) + available_objects = self.get_available_objects(parent, limit) # Determine if the requested number of objects is available if not self.check_sufficient_available(serializer.validated_data, available_objects): @@ -289,7 +279,7 @@ class AvailableObjectsView(ObjectValidationMixin, APIView): ) # Prepare object data for deserialization - requested_objects = self.prep_object_data(serializer.validated_data, available_objects, parent) + requested_objects = self.prep_object_data(deepcopy(requested_objects), available_objects, parent) # Initialize the serializer with a list or a single object depending on what was requested serializer_class = get_serializer_for_model(self.queryset.model) diff --git a/netbox/ipam/choices.py b/netbox/ipam/choices.py index 436cbd040..017fd0430 100644 --- a/netbox/ipam/choices.py +++ b/netbox/ipam/choices.py @@ -172,52 +172,3 @@ class ServiceProtocolChoices(ChoiceSet): (PROTOCOL_UDP, 'UDP'), (PROTOCOL_SCTP, 'SCTP'), ) - - -class L2VPNTypeChoices(ChoiceSet): - TYPE_VPLS = 'vpls' - TYPE_VPWS = 'vpws' - TYPE_EPL = 'epl' - TYPE_EVPL = 'evpl' - TYPE_EPLAN = 'ep-lan' - TYPE_EVPLAN = 'evp-lan' - TYPE_EPTREE = 'ep-tree' - TYPE_EVPTREE = 'evp-tree' - TYPE_VXLAN = 'vxlan' - TYPE_VXLAN_EVPN = 'vxlan-evpn' - TYPE_MPLS_EVPN = 'mpls-evpn' - TYPE_PBB_EVPN = 'pbb-evpn' - - CHOICES = ( - ('VPLS', ( - (TYPE_VPWS, 'VPWS'), - (TYPE_VPLS, 'VPLS'), - )), - ('VXLAN', ( - (TYPE_VXLAN, 'VXLAN'), - (TYPE_VXLAN_EVPN, 'VXLAN-EVPN'), - )), - ('L2VPN E-VPN', ( - (TYPE_MPLS_EVPN, 'MPLS EVPN'), - (TYPE_PBB_EVPN, 'PBB EVPN'), - )), - ('E-Line', ( - (TYPE_EPL, 'EPL'), - (TYPE_EVPL, 'EVPL'), - )), - ('E-LAN', ( - (TYPE_EPLAN, 'Ethernet Private LAN'), - (TYPE_EVPLAN, 'Ethernet Virtual Private LAN'), - )), - ('E-Tree', ( - (TYPE_EPTREE, 'Ethernet Private Tree'), - (TYPE_EVPTREE, 'Ethernet Virtual Private Tree'), - )), - ) - - P2P = ( - TYPE_VPWS, - TYPE_EPL, - TYPE_EPLAN, - TYPE_EPTREE - ) diff --git a/netbox/ipam/constants.py b/netbox/ipam/constants.py index f26fce2b5..6dffd3287 100644 --- a/netbox/ipam/constants.py +++ b/netbox/ipam/constants.py @@ -86,9 +86,3 @@ VLANGROUP_SCOPE_TYPES = ( # 16-bit port number SERVICE_PORT_MIN = 1 SERVICE_PORT_MAX = 65535 - -L2VPN_ASSIGNMENT_MODELS = Q( - Q(app_label='dcim', model='interface') | - Q(app_label='ipam', model='vlan') | - Q(app_label='virtualization', model='vminterface') -) diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 9b57cb273..404baf71b 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -4,8 +4,8 @@ from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db.models import Q from django.utils.translation import gettext as _ -from drf_spectacular.utils import extend_schema_field from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field from netaddr.core import AddrFormatError from dcim.models import Device, Interface, Region, Site, SiteGroup @@ -15,6 +15,7 @@ from utilities.filters import ( ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter, NumericArrayFilter, TreeNodeMultipleChoiceFilter, ) from virtualization.models import VirtualMachine, VMInterface +from vpn.models import L2VPN from .choices import * from .models import * @@ -26,9 +27,8 @@ __all__ = ( 'FHRPGroupFilterSet', 'IPAddressFilterSet', 'IPRangeFilterSet', - 'L2VPNFilterSet', - 'L2VPNTerminationFilterSet', 'PrefixFilterSet', + 'PrimaryIPFilterSet', 'RIRFilterSet', 'RoleFilterSet', 'RouteTargetFilterSet', @@ -266,7 +266,8 @@ class PrefixFilterSet(NetBoxModelFilterSet, TenancyFilterSet): ) mask_length = MultiValueNumberFilter( field_name='prefix', - lookup_expr='net_mask_length' + lookup_expr='net_mask_length', + label=_('Mask length') ) mask_length__gte = django_filters.NumberFilter( field_name='prefix', @@ -467,6 +468,10 @@ class IPRangeFilterSet(TenancyFilterSet, NetBoxModelFilterSet): choices=IPRangeStatusChoices, null_value=None ) + parent = MultiValueCharFilter( + method='search_by_parent', + label=_('Parent prefix'), + ) class Meta: model = IPRange @@ -501,6 +506,18 @@ class IPRangeFilterSet(TenancyFilterSet, NetBoxModelFilterSet): except ValidationError: return queryset.none() + def search_by_parent(self, queryset, name, value): + if not value: + return queryset + q = Q() + for prefix in value: + try: + query = str(netaddr.IPNetwork(prefix.strip()).cidr) + q |= Q(start_address__net_host_contained=query, end_address__net_host_contained=query) + except (AddrFormatError, ValueError): + return queryset.none() + return queryset.filter(q) + class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet): family = django_filters.NumberFilter( @@ -515,9 +532,18 @@ class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet): method='filter_address', label=_('Address'), ) - mask_length = django_filters.NumberFilter( - method='filter_mask_length', - label=_('Mask length'), + mask_length = MultiValueNumberFilter( + field_name='address', + lookup_expr='net_mask_length', + label=_('Mask length') + ) + mask_length__gte = django_filters.NumberFilter( + field_name='address', + lookup_expr='net_mask_length__gte' + ) + mask_length__lte = django_filters.NumberFilter( + field_name='address', + lookup_expr='net_mask_length__lte' ) vrf_id = django_filters.ModelMultipleChoiceFilter( queryset=VRF.objects.all(), @@ -661,11 +687,6 @@ class IPAddressFilterSet(NetBoxModelFilterSet, TenancyFilterSet): except ValidationError: return queryset.none() - def filter_mask_length(self, queryset, name, value): - if not value: - return queryset - return queryset.filter(address__net_mask_length=value) - @extend_schema_field(OpenApiTypes.STR) def filter_present_in_vrf(self, queryset, name, vrf): if vrf is None: @@ -737,7 +758,7 @@ class FHRPGroupFilterSet(NetBoxModelFilterSet): class Meta: model = FHRPGroup - fields = ['id', 'group_id', 'name', 'auth_key'] + fields = ['id', 'group_id', 'name', 'auth_key', 'description'] def search(self, queryset, name, value): if not value.strip(): @@ -928,6 +949,10 @@ class VLANFilterSet(NetBoxModelFilterSet, TenancyFilterSet): choices=VLANStatusChoices, null_value=None ) + available_at_site = django_filters.ModelChoiceFilter( + queryset=Site.objects.all(), + method='get_for_site' + ) available_on_device = django_filters.ModelChoiceFilter( queryset=Device.objects.all(), method='get_for_device' @@ -962,6 +987,10 @@ class VLANFilterSet(NetBoxModelFilterSet, TenancyFilterSet): pass return queryset.filter(qs_filter) + @extend_schema_field(OpenApiTypes.STR) + def get_for_site(self, queryset, name, value): + return queryset.get_for_site(value) + @extend_schema_field(OpenApiTypes.STR) def get_for_device(self, queryset, name, value): return queryset.get_for_device(value) @@ -979,12 +1008,15 @@ class ServiceTemplateFilterSet(NetBoxModelFilterSet): class Meta: model = ServiceTemplate - fields = ['id', 'name', 'protocol'] + fields = ['id', 'name', 'protocol', 'description'] def search(self, queryset, name, value): if not value.strip(): return queryset - qs_filter = Q(name__icontains=value) | Q(description__icontains=value) + qs_filter = ( + Q(name__icontains=value) | + Q(description__icontains=value) + ) return queryset.filter(qs_filter) @@ -1037,177 +1069,17 @@ class ServiceFilterSet(NetBoxModelFilterSet): return queryset.filter(qs_filter) -# -# L2VPN -# - -class L2VPNFilterSet(NetBoxModelFilterSet, TenancyFilterSet): - type = django_filters.MultipleChoiceFilter( - choices=L2VPNTypeChoices, - null_value=None +class PrimaryIPFilterSet(django_filters.FilterSet): + """ + An inheritable FilterSet for models which support primary IP assignment. + """ + primary_ip4_id = django_filters.ModelMultipleChoiceFilter( + field_name='primary_ip4', + queryset=IPAddress.objects.all(), + label=_('Primary IPv4 (ID)'), ) - import_target_id = django_filters.ModelMultipleChoiceFilter( - field_name='import_targets', - queryset=RouteTarget.objects.all(), - label=_('Import target'), + primary_ip6_id = django_filters.ModelMultipleChoiceFilter( + field_name='primary_ip6', + queryset=IPAddress.objects.all(), + label=_('Primary IPv6 (ID)'), ) - import_target = django_filters.ModelMultipleChoiceFilter( - field_name='import_targets__name', - queryset=RouteTarget.objects.all(), - to_field_name='name', - label=_('Import target (name)'), - ) - export_target_id = django_filters.ModelMultipleChoiceFilter( - field_name='export_targets', - queryset=RouteTarget.objects.all(), - label=_('Export target'), - ) - export_target = django_filters.ModelMultipleChoiceFilter( - field_name='export_targets__name', - queryset=RouteTarget.objects.all(), - to_field_name='name', - label=_('Export target (name)'), - ) - - class Meta: - model = L2VPN - fields = ['id', 'identifier', 'name', 'slug', 'type', 'description'] - - def search(self, queryset, name, value): - if not value.strip(): - return queryset - qs_filter = Q(name__icontains=value) | Q(description__icontains=value) - try: - qs_filter |= Q(identifier=int(value)) - except ValueError: - pass - return queryset.filter(qs_filter) - - -class L2VPNTerminationFilterSet(NetBoxModelFilterSet): - l2vpn_id = django_filters.ModelMultipleChoiceFilter( - queryset=L2VPN.objects.all(), - label=_('L2VPN (ID)'), - ) - l2vpn = django_filters.ModelMultipleChoiceFilter( - field_name='l2vpn__slug', - queryset=L2VPN.objects.all(), - to_field_name='slug', - label=_('L2VPN (slug)'), - ) - region = MultiValueCharFilter( - method='filter_region', - field_name='slug', - label=_('Region (slug)'), - ) - region_id = MultiValueNumberFilter( - method='filter_region', - field_name='pk', - label=_('Region (ID)'), - ) - site = MultiValueCharFilter( - method='filter_site', - field_name='slug', - label=_('Site (slug)'), - ) - site_id = MultiValueNumberFilter( - method='filter_site', - field_name='pk', - label=_('Site (ID)'), - ) - device = django_filters.ModelMultipleChoiceFilter( - field_name='interface__device__name', - queryset=Device.objects.all(), - to_field_name='name', - label=_('Device (name)'), - ) - device_id = django_filters.ModelMultipleChoiceFilter( - field_name='interface__device', - queryset=Device.objects.all(), - label=_('Device (ID)'), - ) - virtual_machine = django_filters.ModelMultipleChoiceFilter( - field_name='vminterface__virtual_machine__name', - queryset=VirtualMachine.objects.all(), - to_field_name='name', - label=_('Virtual machine (name)'), - ) - virtual_machine_id = django_filters.ModelMultipleChoiceFilter( - field_name='vminterface__virtual_machine', - queryset=VirtualMachine.objects.all(), - label=_('Virtual machine (ID)'), - ) - interface = django_filters.ModelMultipleChoiceFilter( - field_name='interface__name', - queryset=Interface.objects.all(), - to_field_name='name', - label=_('Interface (name)'), - ) - interface_id = django_filters.ModelMultipleChoiceFilter( - field_name='interface', - queryset=Interface.objects.all(), - label=_('Interface (ID)'), - ) - vminterface = django_filters.ModelMultipleChoiceFilter( - field_name='vminterface__name', - queryset=VMInterface.objects.all(), - to_field_name='name', - label=_('VM interface (name)'), - ) - vminterface_id = django_filters.ModelMultipleChoiceFilter( - field_name='vminterface', - queryset=VMInterface.objects.all(), - label=_('VM Interface (ID)'), - ) - vlan = django_filters.ModelMultipleChoiceFilter( - field_name='vlan__name', - queryset=VLAN.objects.all(), - to_field_name='name', - label=_('VLAN (name)'), - ) - vlan_vid = django_filters.NumberFilter( - field_name='vlan__vid', - label=_('VLAN number (1-4094)'), - ) - vlan_id = django_filters.ModelMultipleChoiceFilter( - field_name='vlan', - queryset=VLAN.objects.all(), - label=_('VLAN (ID)'), - ) - assigned_object_type = ContentTypeFilter() - - class Meta: - model = L2VPNTermination - fields = ('id', 'assigned_object_type_id') - - def search(self, queryset, name, value): - if not value.strip(): - return queryset - qs_filter = Q(l2vpn__name__icontains=value) - return queryset.filter(qs_filter) - - def filter_assigned_object(self, queryset, name, value): - qs = queryset.filter( - Q(**{'{}__in'.format(name): value}) - ) - return qs - - def filter_site(self, queryset, name, value): - qs = queryset.filter( - Q( - Q(**{'vlan__site__{}__in'.format(name): value}) | - Q(**{'interface__device__site__{}__in'.format(name): value}) | - Q(**{'vminterface__virtual_machine__site__{}__in'.format(name): value}) - ) - ) - return qs - - def filter_region(self, queryset, name, value): - qs = queryset.filter( - Q( - Q(**{'vlan__site__region__{}__in'.format(name): value}) | - Q(**{'interface__device__site__region__{}__in'.format(name): value}) | - Q(**{'vminterface__virtual_machine__site__region__{}__in'.format(name): value}) - ) - ) - return qs diff --git a/netbox/ipam/forms/bulk_edit.py b/netbox/ipam/forms/bulk_edit.py index 548d01afa..bf4825be9 100644 --- a/netbox/ipam/forms/bulk_edit.py +++ b/netbox/ipam/forms/bulk_edit.py @@ -1,7 +1,8 @@ from django import forms +from django.contrib.contenttypes.models import ContentType from django.utils.translation import gettext_lazy as _ -from dcim.models import Region, Site, SiteGroup +from dcim.models import Location, Rack, Region, Site, SiteGroup from ipam.choices import * from ipam.constants import * from ipam.models import * @@ -10,9 +11,10 @@ from netbox.forms import NetBoxModelBulkEditForm from tenancy.models import Tenant from utilities.forms import add_blank_choice from utilities.forms.fields import ( - CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, NumericArrayField, + CommentField, ContentTypeChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, NumericArrayField, ) from utilities.forms.widgets import BulkEditNullBooleanSelect +from virtualization.models import Cluster, ClusterGroup __all__ = ( 'AggregateBulkEditForm', @@ -21,8 +23,6 @@ __all__ = ( 'FHRPGroupBulkEditForm', 'IPAddressBulkEditForm', 'IPRangeBulkEditForm', - 'L2VPNBulkEditForm', - 'L2VPNTerminationBulkEditForm', 'PrefixBulkEditForm', 'RIRBulkEditForm', 'RoleBulkEditForm', @@ -407,11 +407,6 @@ class FHRPGroupBulkEditForm(NetBoxModelBulkEditForm): class VLANGroupBulkEditForm(NetBoxModelBulkEditForm): - site = DynamicModelChoiceField( - label=_('Site'), - queryset=Site.objects.all(), - required=False - ) min_vid = forms.IntegerField( min_value=VLAN_VID_MIN, max_value=VLAN_VID_MAX, @@ -429,12 +424,84 @@ class VLANGroupBulkEditForm(NetBoxModelBulkEditForm): max_length=200, required=False ) + scope_type = ContentTypeChoiceField( + label=_('Scope type'), + queryset=ContentType.objects.filter(model__in=VLANGROUP_SCOPE_TYPES), + required=False + ) + scope_id = forms.IntegerField( + required=False, + widget=forms.HiddenInput() + ) + region = DynamicModelChoiceField( + label=_('Region'), + queryset=Region.objects.all(), + required=False + ) + sitegroup = DynamicModelChoiceField( + queryset=SiteGroup.objects.all(), + required=False, + label=_('Site group') + ) + site = DynamicModelChoiceField( + label=_('Site'), + queryset=Site.objects.all(), + required=False, + query_params={ + 'region_id': '$region', + 'group_id': '$sitegroup', + } + ) + location = DynamicModelChoiceField( + label=_('Location'), + queryset=Location.objects.all(), + required=False, + query_params={ + 'site_id': '$site', + } + ) + rack = DynamicModelChoiceField( + label=_('Rack'), + queryset=Rack.objects.all(), + required=False, + query_params={ + 'site_id': '$site', + 'location_id': '$location', + } + ) + clustergroup = DynamicModelChoiceField( + queryset=ClusterGroup.objects.all(), + required=False, + label=_('Cluster group') + ) + cluster = DynamicModelChoiceField( + label=_('Cluster'), + queryset=Cluster.objects.all(), + required=False, + query_params={ + 'group_id': '$clustergroup', + } + ) model = VLANGroup fieldsets = ( (None, ('site', 'min_vid', 'max_vid', 'description')), + (_('Scope'), ('scope_type', 'region', 'sitegroup', 'site', 'location', 'rack', 'clustergroup', 'cluster')), ) - nullable_fields = ('site', 'description') + nullable_fields = ('description',) + + def clean(self): + super().clean() + + # Assign scope based on scope_type + if self.cleaned_data.get('scope_type'): + scope_field = self.cleaned_data['scope_type'].model + if scope_obj := self.cleaned_data.get(scope_field): + self.cleaned_data['scope_id'] = scope_obj.pk + self.changed_data.append('scope_id') + else: + self.cleaned_data.pop('scope_type') + self.changed_data.remove('scope_type') class VLANBulkEditForm(NetBoxModelBulkEditForm): @@ -527,32 +594,3 @@ class ServiceTemplateBulkEditForm(NetBoxModelBulkEditForm): class ServiceBulkEditForm(ServiceTemplateBulkEditForm): model = Service - - -class L2VPNBulkEditForm(NetBoxModelBulkEditForm): - type = forms.ChoiceField( - label=_('Type'), - choices=add_blank_choice(L2VPNTypeChoices), - required=False - ) - tenant = DynamicModelChoiceField( - label=_('Tenant'), - queryset=Tenant.objects.all(), - required=False - ) - description = forms.CharField( - label=_('Description'), - max_length=200, - required=False - ) - comments = CommentField() - - model = L2VPN - fieldsets = ( - (None, ('type', 'tenant', 'description')), - ) - nullable_fields = ('tenant', 'description', 'comments') - - -class L2VPNTerminationBulkEditForm(NetBoxModelBulkEditForm): - model = L2VPN diff --git a/netbox/ipam/forms/bulk_import.py b/netbox/ipam/forms/bulk_import.py index ec0812593..0627a6765 100644 --- a/netbox/ipam/forms/bulk_import.py +++ b/netbox/ipam/forms/bulk_import.py @@ -1,6 +1,5 @@ from django import forms from django.contrib.contenttypes.models import ContentType -from django.core.exceptions import ValidationError from django.utils.translation import gettext_lazy as _ from dcim.models import Device, Interface, Site @@ -21,8 +20,6 @@ __all__ = ( 'FHRPGroupImportForm', 'IPAddressImportForm', 'IPRangeImportForm', - 'L2VPNImportForm', - 'L2VPNTerminationImportForm', 'PrefixImportForm', 'RIRImportForm', 'RoleImportForm', @@ -507,94 +504,25 @@ class ServiceImportForm(NetBoxModelImportForm): choices=ServiceProtocolChoices, help_text=_('IP protocol') ) + ipaddresses = CSVModelMultipleChoiceField( + queryset=IPAddress.objects.all(), + required=False, + to_field_name='address', + help_text=_('IP Address'), + ) class Meta: model = Service - fields = ('device', 'virtual_machine', 'name', 'protocol', 'ports', 'description', 'comments', 'tags') + fields = ( + 'device', 'virtual_machine', 'ipaddresses', 'name', 'protocol', 'ports', 'description', 'comments', 'tags', + ) - -class L2VPNImportForm(NetBoxModelImportForm): - tenant = CSVModelChoiceField( - label=_('Tenant'), - queryset=Tenant.objects.all(), - required=False, - to_field_name='name', - ) - type = CSVChoiceField( - label=_('Type'), - choices=L2VPNTypeChoices, - help_text=_('L2VPN type') - ) - - class Meta: - model = L2VPN - fields = ('identifier', 'name', 'slug', 'tenant', 'type', 'description', - 'comments', 'tags') - - -class L2VPNTerminationImportForm(NetBoxModelImportForm): - l2vpn = CSVModelChoiceField( - queryset=L2VPN.objects.all(), - required=True, - to_field_name='name', - label=_('L2VPN'), - ) - device = CSVModelChoiceField( - label=_('Device'), - queryset=Device.objects.all(), - required=False, - to_field_name='name', - help_text=_('Parent device (for interface)') - ) - virtual_machine = CSVModelChoiceField( - label=_('Virtual machine'), - queryset=VirtualMachine.objects.all(), - required=False, - to_field_name='name', - help_text=_('Parent virtual machine (for interface)') - ) - interface = CSVModelChoiceField( - label=_('Interface'), - queryset=Interface.objects.none(), # Can also refer to VMInterface - required=False, - to_field_name='name', - help_text=_('Assigned interface (device or VM)') - ) - vlan = CSVModelChoiceField( - label=_('VLAN'), - queryset=VLAN.objects.all(), - required=False, - to_field_name='name', - help_text=_('Assigned VLAN') - ) - - class Meta: - model = L2VPNTermination - fields = ('l2vpn', 'device', 'virtual_machine', 'interface', 'vlan', 'tags') - - def __init__(self, data=None, *args, **kwargs): - super().__init__(data, *args, **kwargs) - - if data: - - # Limit interface queryset by device or VM - if data.get('device'): - self.fields['interface'].queryset = Interface.objects.filter( - **{f"device__{self.fields['device'].to_field_name}": data['device']} - ) - elif data.get('virtual_machine'): - self.fields['interface'].queryset = VMInterface.objects.filter( - **{f"virtual_machine__{self.fields['virtual_machine'].to_field_name}": data['virtual_machine']} + def clean_ipaddresses(self): + parent = self.cleaned_data.get('device') or self.cleaned_data.get('virtual_machine') + for ip_address in self.cleaned_data['ipaddresses']: + if not ip_address.assigned_object or getattr(ip_address.assigned_object, 'parent_object') != parent: + raise forms.ValidationError( + _("{ip} is not assigned to this device/VM.").format(ip=ip_address) ) - def clean(self): - super().clean() - - if self.cleaned_data.get('device') and self.cleaned_data.get('virtual_machine'): - raise ValidationError(_('Cannot import device and VM interface terminations simultaneously.')) - if not (self.cleaned_data.get('interface') or self.cleaned_data.get('vlan')): - raise ValidationError(_('Each termination must specify either an interface or a VLAN.')) - if self.cleaned_data.get('interface') and self.cleaned_data.get('vlan'): - raise ValidationError(_('Cannot assign both an interface and a VLAN.')) - - self.instance.assigned_object = self.cleaned_data.get('interface') or self.cleaned_data.get('vlan') + return self.cleaned_data['ipaddresses'] diff --git a/netbox/ipam/forms/filtersets.py b/netbox/ipam/forms/filtersets.py index e4e967f81..e6acdb012 100644 --- a/netbox/ipam/forms/filtersets.py +++ b/netbox/ipam/forms/filtersets.py @@ -1,5 +1,4 @@ from django import forms -from django.contrib.contenttypes.models import ContentType from django.utils.translation import gettext_lazy as _ from dcim.models import Location, Rack, Region, Site, SiteGroup, Device @@ -9,10 +8,9 @@ from ipam.models import * from netbox.forms import NetBoxModelFilterSetForm from tenancy.forms import TenancyFilterForm from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, add_blank_choice -from utilities.forms.fields import ( - ContentTypeMultipleChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, TagFilterField, -) +from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField, TagFilterField from virtualization.models import VirtualMachine +from vpn.models import L2VPN __all__ = ( 'AggregateFilterForm', @@ -21,8 +19,6 @@ __all__ = ( 'FHRPGroupFilterForm', 'IPAddressFilterForm', 'IPRangeFilterForm', - 'L2VPNFilterForm', - 'L2VPNTerminationFilterForm', 'PrefixFilterForm', 'RIRFilterForm', 'RoleFilterForm', @@ -295,11 +291,12 @@ class IPAddressFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): model = IPAddress fieldsets = ( (None, ('q', 'filter_id', 'tag')), - (_('Attributes'), ('parent', 'family', 'status', 'role', 'mask_length', 'assigned_to_interface')), + (_('Attributes'), ('parent', 'family', 'status', 'role', 'mask_length', 'assigned_to_interface', 'dns_name')), (_('VRF'), ('vrf_id', 'present_in_vrf_id')), (_('Tenant'), ('tenant_group_id', 'tenant_id')), (_('Device/VM'), ('device_id', 'virtual_machine_id')), ) + selector_fields = ('filter_id', 'q', 'region_id', 'group_id', 'parent', 'status', 'role') parent = forms.CharField( required=False, widget=forms.TextInput( @@ -357,6 +354,10 @@ class IPAddressFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): choices=BOOLEAN_WITH_BLANK_CHOICES ) ) + dns_name = forms.CharField( + required=False, + label=_('DNS Name') + ) tag = TagFilterField(model) @@ -448,6 +449,7 @@ class VLANFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): (_('Attributes'), ('group_id', 'status', 'role_id', 'vid', 'l2vpn_id')), (_('Tenant'), ('tenant_group_id', 'tenant_id')), ) + selector_fields = ('filter_id', 'q', 'site_id') region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, @@ -519,91 +521,19 @@ class ServiceTemplateFilterForm(NetBoxModelFilterSetForm): class ServiceFilterForm(ServiceTemplateFilterForm): model = Service - tag = TagFilterField(model) - - -class L2VPNFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): - model = L2VPN fieldsets = ( (None, ('q', 'filter_id', 'tag')), - (_('Attributes'), ('type', 'import_target_id', 'export_target_id')), - (_('Tenant'), ('tenant_group_id', 'tenant_id')), - ) - type = forms.ChoiceField( - label=_('Type'), - choices=add_blank_choice(L2VPNTypeChoices), - required=False - ) - import_target_id = DynamicModelMultipleChoiceField( - queryset=RouteTarget.objects.all(), - required=False, - label=_('Import targets') - ) - export_target_id = DynamicModelMultipleChoiceField( - queryset=RouteTarget.objects.all(), - required=False, - label=_('Export targets') - ) - tag = TagFilterField(model) - - -class L2VPNTerminationFilterForm(NetBoxModelFilterSetForm): - model = L2VPNTermination - fieldsets = ( - (None, ('filter_id', 'l2vpn_id',)), - (_('Assigned Object'), ( - 'assigned_object_type_id', 'region_id', 'site_id', 'device_id', 'virtual_machine_id', 'vlan_id', - )), - ) - l2vpn_id = DynamicModelChoiceField( - queryset=L2VPN.objects.all(), - required=False, - label=_('L2VPN') - ) - assigned_object_type_id = ContentTypeMultipleChoiceField( - queryset=ContentType.objects.filter(L2VPN_ASSIGNMENT_MODELS), - required=False, - label=_('Assigned Object Type'), - limit_choices_to=L2VPN_ASSIGNMENT_MODELS - ) - region_id = DynamicModelMultipleChoiceField( - queryset=Region.objects.all(), - required=False, - label=_('Region') - ) - site_id = DynamicModelMultipleChoiceField( - queryset=Site.objects.all(), - required=False, - null_option='None', - query_params={ - 'region_id': '$region_id' - }, - label=_('Site') + (_('Attributes'), ('protocol', 'port')), + (_('Assignment'), ('device_id', 'virtual_machine_id')), ) device_id = DynamicModelMultipleChoiceField( queryset=Device.objects.all(), required=False, - null_option='None', - query_params={ - 'site_id': '$site_id' - }, - label=_('Device') - ) - vlan_id = DynamicModelMultipleChoiceField( - queryset=VLAN.objects.all(), - required=False, - null_option='None', - query_params={ - 'site_id': '$site_id' - }, - label=_('VLAN') + label=_('Device'), ) virtual_machine_id = DynamicModelMultipleChoiceField( queryset=VirtualMachine.objects.all(), required=False, - null_option='None', - query_params={ - 'site_id': '$site_id' - }, - label=_('Virtual Machine') + label=_('Virtual Machine'), ) + tag = TagFilterField(model) diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index c466e279f..6c445ef27 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -29,8 +29,6 @@ __all__ = ( 'IPAddressBulkAddForm', 'IPAddressForm', 'IPRangeForm', - 'L2VPNForm', - 'L2VPNTerminationForm', 'PrefixForm', 'RIRForm', 'RoleForm', @@ -215,6 +213,9 @@ class PrefixForm(TenancyForm, NetBoxModelForm): queryset=VLAN.objects.all(), required=False, selector=True, + query_params={ + 'site_id': '$site', + }, label=_('VLAN'), ) role = DynamicModelChoiceField( @@ -351,7 +352,7 @@ class IPAddressForm(TenancyForm, NetBoxModelForm): }) elif selected_objects: assigned_object = self.cleaned_data[selected_objects[0]] - if self.instance.pk and self.cleaned_data['primary_for_parent'] and assigned_object != self.instance.assigned_object: + if self.instance.pk and self.instance.assigned_object and self.cleaned_data['primary_for_parent'] and assigned_object != self.instance.assigned_object: raise ValidationError( _("Cannot reassign IP address while it is designated as the primary IP for the parent object") ) @@ -369,14 +370,14 @@ class IPAddressForm(TenancyForm, NetBoxModelForm): # Do not allow assigning a network ID or broadcast address to an interface. if interface and (address := self.cleaned_data.get('address')): if address.ip == address.network: - msg = _("{address} is a network ID, which may not be assigned to an interface.").format(address=address) + msg = _("{ip} is a network ID, which may not be assigned to an interface.").format(ip=address.ip) if address.version == 4 and address.prefixlen not in (31, 32): raise ValidationError(msg) if address.version == 6 and address.prefixlen not in (127, 128): raise ValidationError(msg) if address.version == 4 and address.ip == address.broadcast and address.prefixlen not in (31, 32): - msg = _("{address} is a broadcast address, which may not be assigned to an interface.").format( - address=address + msg = _("{ip} is a broadcast address, which may not be assigned to an interface.").format( + ip=address.ip ) raise ValidationError(msg) @@ -728,7 +729,7 @@ class ServiceCreateForm(ServiceForm): class Meta(ServiceForm.Meta): fields = [ 'device', 'virtual_machine', 'service_template', 'name', 'protocol', 'ports', 'ipaddresses', 'description', - 'tags', + 'comments', 'tags', ] def __init__(self, *args, **kwargs): @@ -751,97 +752,3 @@ class ServiceCreateForm(ServiceForm): self.cleaned_data['description'] = service_template.description elif not all(self.cleaned_data[f] for f in ('name', 'protocol', 'ports')): raise forms.ValidationError("Must specify name, protocol, and port(s) if not using a service template.") - - -# -# L2VPN -# - - -class L2VPNForm(TenancyForm, NetBoxModelForm): - slug = SlugField() - import_targets = DynamicModelMultipleChoiceField( - label=_('Import targets'), - queryset=RouteTarget.objects.all(), - required=False - ) - export_targets = DynamicModelMultipleChoiceField( - label=_('Export targets'), - queryset=RouteTarget.objects.all(), - required=False - ) - comments = CommentField() - - fieldsets = ( - (_('L2VPN'), ('name', 'slug', 'type', 'identifier', 'description', 'tags')), - (_('Route Targets'), ('import_targets', 'export_targets')), - (_('Tenancy'), ('tenant_group', 'tenant')), - ) - - class Meta: - model = L2VPN - fields = ( - 'name', 'slug', 'type', 'identifier', 'import_targets', 'export_targets', 'tenant', 'description', - 'comments', 'tags' - ) - - -class L2VPNTerminationForm(NetBoxModelForm): - l2vpn = DynamicModelChoiceField( - queryset=L2VPN.objects.all(), - required=True, - query_params={}, - label=_('L2VPN'), - fetch_trigger='open' - ) - vlan = DynamicModelChoiceField( - queryset=VLAN.objects.all(), - required=False, - selector=True, - label=_('VLAN') - ) - interface = DynamicModelChoiceField( - label=_('Interface'), - queryset=Interface.objects.all(), - required=False, - selector=True - ) - vminterface = DynamicModelChoiceField( - queryset=VMInterface.objects.all(), - required=False, - selector=True, - label=_('Interface') - ) - - class Meta: - model = L2VPNTermination - fields = ('l2vpn', ) - - def __init__(self, *args, **kwargs): - instance = kwargs.get('instance') - initial = kwargs.get('initial', {}).copy() - - if instance: - if type(instance.assigned_object) is Interface: - initial['interface'] = instance.assigned_object - elif type(instance.assigned_object) is VLAN: - initial['vlan'] = instance.assigned_object - elif type(instance.assigned_object) is VMInterface: - initial['vminterface'] = instance.assigned_object - kwargs['initial'] = initial - - super().__init__(*args, **kwargs) - - def clean(self): - super().clean() - - interface = self.cleaned_data.get('interface') - vminterface = self.cleaned_data.get('vminterface') - vlan = self.cleaned_data.get('vlan') - - if not (interface or vminterface or vlan): - raise ValidationError(_('A termination must specify an interface or VLAN.')) - if len([x for x in (interface, vminterface, vlan) if x]) > 1: - raise ValidationError(_('A termination can only have one terminating object (an interface or VLAN).')) - - self.instance.assigned_object = interface or vminterface or vlan diff --git a/netbox/ipam/graphql/schema.py b/netbox/ipam/graphql/schema.py index 596b5eb78..6627c540e 100644 --- a/netbox/ipam/graphql/schema.py +++ b/netbox/ipam/graphql/schema.py @@ -1,9 +1,8 @@ import graphene + from ipam import models -from utilities.graphql_optimizer import gql_query_optimizer - from netbox.graphql.fields import ObjectField, ObjectListField - +from utilities.graphql_optimizer import gql_query_optimizer from .types import * @@ -38,18 +37,6 @@ class IPAMQuery(graphene.ObjectType): def resolve_ip_range_list(root, info, **kwargs): return gql_query_optimizer(models.IPRange.objects.all(), info) - l2vpn = ObjectField(L2VPNType) - l2vpn_list = ObjectListField(L2VPNType) - - def resolve_l2vpn_list(root, info, **kwargs): - return gql_query_optimizer(models.L2VPN.objects.all(), info) - - l2vpn_termination = ObjectField(L2VPNTerminationType) - l2vpn_termination_list = ObjectListField(L2VPNTerminationType) - - def resolve_l2vpn_termination_list(root, info, **kwargs): - return gql_query_optimizer(models.L2VPNTermination.objects.all(), info) - prefix = ObjectField(PrefixType) prefix_list = ObjectListField(PrefixType) diff --git a/netbox/ipam/graphql/types.py b/netbox/ipam/graphql/types.py index 6e834512e..b4350f9f2 100644 --- a/netbox/ipam/graphql/types.py +++ b/netbox/ipam/graphql/types.py @@ -1,6 +1,5 @@ import graphene -from extras.graphql.mixins import ContactsMixin from ipam import filtersets, models from netbox.graphql.scalars import BigInt from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, NetBoxObjectType @@ -13,8 +12,6 @@ __all__ = ( 'FHRPGroupAssignmentType', 'IPAddressType', 'IPRangeType', - 'L2VPNType', - 'L2VPNTerminationType', 'PrefixType', 'RIRType', 'RoleType', @@ -188,19 +185,3 @@ class VRFType(NetBoxObjectType): model = models.VRF fields = '__all__' filterset_class = filtersets.VRFFilterSet - - -class L2VPNType(ContactsMixin, NetBoxObjectType): - class Meta: - model = models.L2VPN - fields = '__all__' - filtersets_class = filtersets.L2VPNFilterSet - - -class L2VPNTerminationType(NetBoxObjectType): - assigned_object = graphene.Field('ipam.graphql.gfk_mixins.L2VPNAssignmentType') - - class Meta: - model = models.L2VPNTermination - exclude = ('assigned_object_type', 'assigned_object_id') - filtersets_class = filtersets.L2VPNTerminationFilterSet diff --git a/netbox/ipam/migrations/0068_move_l2vpn.py b/netbox/ipam/migrations/0068_move_l2vpn.py new file mode 100644 index 000000000..b1a059de1 --- /dev/null +++ b/netbox/ipam/migrations/0068_move_l2vpn.py @@ -0,0 +1,64 @@ +from django.db import migrations + + +def update_content_types(apps, schema_editor): + ContentType = apps.get_model('contenttypes', 'ContentType') + + # Delete the new ContentTypes effected by the new models in the vpn app + ContentType.objects.filter(app_label='vpn', model='l2vpn').delete() + ContentType.objects.filter(app_label='vpn', model='l2vpntermination').delete() + + # Update the app labels of the original ContentTypes for ipam.L2VPN and ipam.L2VPNTermination to ensure + # that any foreign key references are preserved + ContentType.objects.filter(app_label='ipam', model='l2vpn').update(app_label='vpn') + ContentType.objects.filter(app_label='ipam', model='l2vpntermination').update(app_label='vpn') + + +class Migration(migrations.Migration): + + dependencies = [ + ('ipam', '0067_ipaddress_index_host'), + ] + + operations = [ + migrations.RemoveConstraint( + model_name='l2vpntermination', + name='ipam_l2vpntermination_assigned_object', + ), + migrations.SeparateDatabaseAndState( + state_operations=[ + migrations.RemoveField( + model_name='l2vpntermination', + name='assigned_object_type', + ), + migrations.RemoveField( + model_name='l2vpntermination', + name='l2vpn', + ), + migrations.RemoveField( + model_name='l2vpntermination', + name='tags', + ), + migrations.DeleteModel( + name='L2VPN', + ), + migrations.DeleteModel( + name='L2VPNTermination', + ), + ], + database_operations=[ + migrations.AlterModelTable( + name='L2VPN', + table='vpn_l2vpn', + ), + migrations.AlterModelTable( + name='L2VPNTermination', + table='vpn_l2vpntermination', + ), + ], + ), + migrations.RunPython( + code=update_content_types, + reverse_code=migrations.RunPython.noop + ), + ] diff --git a/netbox/ipam/migrations/0069_gfk_indexes.py b/netbox/ipam/migrations/0069_gfk_indexes.py new file mode 100644 index 000000000..75c016102 --- /dev/null +++ b/netbox/ipam/migrations/0069_gfk_indexes.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.7 on 2023-12-07 16:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ipam', '0068_move_l2vpn'), + ] + + operations = [ + migrations.AddIndex( + model_name='fhrpgroupassignment', + index=models.Index(fields=['interface_type', 'interface_id'], name='ipam_fhrpgr_interfa_2acc3f_idx'), + ), + migrations.AddIndex( + model_name='ipaddress', + index=models.Index(fields=['assigned_object_type', 'assigned_object_id'], name='ipam_ipaddr_assigne_890ab8_idx'), + ), + migrations.AddIndex( + model_name='vlangroup', + index=models.Index(fields=['scope_type', 'scope_id'], name='ipam_vlangr_scope_t_9da557_idx'), + ), + ] diff --git a/netbox/ipam/models/__init__.py b/netbox/ipam/models/__init__.py index a00919ee0..0d0b3d6ac 100644 --- a/netbox/ipam/models/__init__.py +++ b/netbox/ipam/models/__init__.py @@ -3,27 +3,5 @@ from .asns import * from .fhrp import * from .vrfs import * from .ip import * -from .l2vpn import * from .services import * from .vlans import * - -__all__ = ( - 'ASN', - 'ASNRange', - 'Aggregate', - 'IPAddress', - 'IPRange', - 'FHRPGroup', - 'FHRPGroupAssignment', - 'L2VPN', - 'L2VPNTermination', - 'Prefix', - 'RIR', - 'Role', - 'RouteTarget', - 'Service', - 'ServiceTemplate', - 'VLAN', - 'VLANGroup', - 'VRF', -) diff --git a/netbox/ipam/models/fhrp.py b/netbox/ipam/models/fhrp.py index 5d355102f..c3a7084b6 100644 --- a/netbox/ipam/models/fhrp.py +++ b/netbox/ipam/models/fhrp.py @@ -1,13 +1,12 @@ from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation -from django.contrib.contenttypes.models import ContentType from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models from django.urls import reverse from django.utils.translation import gettext_lazy as _ -from netbox.models import ChangeLoggedModel, PrimaryModel from ipam.choices import * from ipam.constants import * +from netbox.models import ChangeLoggedModel, PrimaryModel __all__ = ( 'FHRPGroup', @@ -78,7 +77,7 @@ class FHRPGroup(PrimaryModel): class FHRPGroupAssignment(ChangeLoggedModel): interface_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.CASCADE ) interface_id = models.PositiveBigIntegerField() @@ -102,6 +101,9 @@ class FHRPGroupAssignment(ChangeLoggedModel): class Meta: ordering = ('-priority', 'pk') + indexes = ( + models.Index(fields=('interface_type', 'interface_id')), + ) constraints = ( models.UniqueConstraint( fields=('interface_type', 'interface_id', 'group'), diff --git a/netbox/ipam/models/ip.py b/netbox/ipam/models/ip.py index 553f5eb92..01e2ed1c7 100644 --- a/netbox/ipam/models/ip.py +++ b/netbox/ipam/models/ip.py @@ -1,6 +1,5 @@ import netaddr from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db import models from django.db.models import F @@ -9,6 +8,7 @@ from django.urls import reverse from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ +from core.models import ContentType from ipam.choices import * from ipam.constants import * from ipam.fields import IPNetworkField, IPAddressField @@ -140,8 +140,11 @@ class Aggregate(GetAvailablePrefixesMixin, PrimaryModel): if covering_aggregates: raise ValidationError({ 'prefix': _( - "Aggregates cannot overlap. {} is already covered by an existing aggregate ({})." - ).format(self.prefix, covering_aggregates[0]) + "Aggregates cannot overlap. {prefix} is already covered by an existing aggregate ({aggregate})." + ).format( + prefix=self.prefix, + aggregate=covering_aggregates[0] + ) }) # Ensure that the aggregate being added does not cover an existing aggregate @@ -150,8 +153,11 @@ class Aggregate(GetAvailablePrefixesMixin, PrimaryModel): covered_aggregates = covered_aggregates.exclude(pk=self.pk) if covered_aggregates: raise ValidationError({ - 'prefix': _("Aggregates cannot overlap. {} covers an existing aggregate ({}).").format( - self.prefix, covered_aggregates[0] + 'prefix': _( + "Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate ({aggregate})." + ).format( + prefix=self.prefix, + aggregate=covered_aggregates[0] ) }) @@ -290,8 +296,8 @@ class Prefix(GetAvailablePrefixesMixin, PrimaryModel): super().__init__(*args, **kwargs) # Cache the original prefix and VRF so we can check if they have changed on post_save - self._prefix = self.prefix - self._vrf_id = self.vrf_id + self._prefix = self.__dict__.get('prefix') + self._vrf_id = self.__dict__.get('vrf_id') def __str__(self): return str(self.prefix) @@ -314,10 +320,11 @@ class Prefix(GetAvailablePrefixesMixin, PrimaryModel): if (self.vrf is None and get_config().ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique): duplicate_prefixes = self.get_duplicates() if duplicate_prefixes: + table = _("VRF {vrf}").format(vrf=self.vrf) if self.vrf else _("global table") raise ValidationError({ - 'prefix': _("Duplicate prefix found in {}: {}").format( - _("VRF {}").format(self.vrf) if self.vrf else _("global table"), - duplicate_prefixes.first(), + 'prefix': _("Duplicate prefix found in {table}: {prefix}").format( + table=table, + prefix=duplicate_prefixes.first(), ) }) @@ -554,25 +561,13 @@ class IPRange(PrimaryModel): # Check that start & end IP versions match if self.start_address.version != self.end_address.version: raise ValidationError({ - 'end_address': _( - "Ending address version (IPv{end_address_version}) does not match starting address " - "(IPv{start_address_version})" - ).format( - end_address_version=self.end_address.version, - start_address_version=self.start_address.version - ) + 'end_address': _("Starting and ending IP address versions must match") }) # Check that the start & end IP prefix lengths match if self.start_address.prefixlen != self.end_address.prefixlen: raise ValidationError({ - 'end_address': _( - "Ending address mask (/{end_address_prefixlen}) does not match starting address mask " - "(/{start_address_prefixlen})" - ).format( - end_address_prefixlen=self.end_address.prefixlen, - start_address_prefixlen=self.start_address.prefixlen - ) + 'end_address': _("Starting and ending IP address masks must match") }) # Check that the ending address is greater than the starting address @@ -745,7 +740,7 @@ class IPAddress(PrimaryModel): help_text=_('The functional role of this IP') ) assigned_object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', limit_choices_to=IPADDRESS_ASSIGNMENT_MODELS, on_delete=models.PROTECT, related_name='+', @@ -785,15 +780,23 @@ class IPAddress(PrimaryModel): class Meta: ordering = ('address', 'pk') # address may be non-unique - indexes = [ + indexes = ( models.Index(Cast(Host('address'), output_field=IPAddressField()), name='ipam_ipaddress_host'), - ] + models.Index(fields=('assigned_object_type', 'assigned_object_id')), + ) verbose_name = _('IP address') verbose_name_plural = _('IP addresses') def __str__(self): return str(self.address) + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Denote the original assigned object (if any) for validation in clean() + self._original_assigned_object_id = self.__dict__.get('assigned_object_id') + self._original_assigned_object_type_id = self.__dict__.get('assigned_object_type_id') + def get_absolute_url(self): return reverse('ipam:ipaddress', args=[self.pk]) @@ -848,13 +851,32 @@ class IPAddress(PrimaryModel): self.role not in IPADDRESS_ROLES_NONUNIQUE or any(dip.role not in IPADDRESS_ROLES_NONUNIQUE for dip in duplicate_ips) ): + table = _("VRF {vrf}").format(vrf=self.vrf) if self.vrf else _("global table") raise ValidationError({ - 'address': _("Duplicate IP address found in {}: {}").format( - _("VRF {}").format(self.vrf) if self.vrf else _("global table"), - duplicate_ips.first(), + 'address': _("Duplicate IP address found in {table}: {ipaddress}").format( + table=table, + ipaddress=duplicate_ips.first(), ) }) + if self._original_assigned_object_id and self._original_assigned_object_type_id: + parent = getattr(self.assigned_object, 'parent_object', None) + ct = ContentType.objects.get_for_id(self._original_assigned_object_type_id) + original_assigned_object = ct.get_object_for_this_type(pk=self._original_assigned_object_id) + original_parent = getattr(original_assigned_object, 'parent_object', None) + + # can't use is_primary_ip as self.assigned_object might be changed + is_primary = False + if self.family == 4 and hasattr(original_parent, 'primary_ip4') and original_parent.primary_ip4_id == self.pk: + is_primary = True + if self.family == 6 and hasattr(original_parent, 'primary_ip6') and original_parent.primary_ip6_id == self.pk: + is_primary = True + + if is_primary and (parent != original_parent): + raise ValidationError( + _("Cannot reassign IP address while it is designated as the primary IP for the parent object") + ) + # Validate IP status selection if self.status == IPAddressStatusChoices.STATUS_SLAAC and self.family != 6: raise ValidationError({ @@ -892,7 +914,7 @@ class IPAddress(PrimaryModel): def is_oob_ip(self): if self.assigned_object: parent = getattr(self.assigned_object, 'parent_object', None) - if parent.oob_ip_id == self.pk: + if hasattr(parent, 'oob_ip') and parent.oob_ip_id == self.pk: return True return False @@ -900,9 +922,9 @@ class IPAddress(PrimaryModel): def is_primary_ip(self): if self.assigned_object: parent = getattr(self.assigned_object, 'parent_object', None) - if self.family == 4 and parent.primary_ip4_id == self.pk: + if self.family == 4 and hasattr(parent, 'primary_ip4') and parent.primary_ip4_id == self.pk: return True - if self.family == 6 and parent.primary_ip6_id == self.pk: + if self.family == 6 and hasattr(parent, 'primary_ip6') and parent.primary_ip6_id == self.pk: return True return False diff --git a/netbox/ipam/models/vlans.py b/netbox/ipam/models/vlans.py index 927d01fa5..7434bd0b4 100644 --- a/netbox/ipam/models/vlans.py +++ b/netbox/ipam/models/vlans.py @@ -1,5 +1,4 @@ from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation -from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models @@ -32,7 +31,7 @@ class VLANGroup(OrganizationalModel): max_length=100 ) scope_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.CASCADE, limit_choices_to=Q(model__in=VLANGROUP_SCOPE_TYPES), blank=True, @@ -69,6 +68,9 @@ class VLANGroup(OrganizationalModel): class Meta: ordering = ('name', 'pk') # Name may be non-unique + indexes = ( + models.Index(fields=('scope_type', 'scope_id')), + ) constraints = ( models.UniqueConstraint( fields=('scope_type', 'scope_id', 'name'), @@ -118,6 +120,12 @@ class VLANGroup(OrganizationalModel): return available_vids[0] return None + def get_child_vlans(self): + """ + Return all VLANs within this group. + """ + return VLAN.objects.filter(group=self).order_by('vid') + class VLAN(PrimaryModel): """ @@ -178,9 +186,8 @@ class VLAN(PrimaryModel): null=True, help_text=_("The primary function of this VLAN") ) - l2vpn_terminations = GenericRelation( - to='ipam.L2VPNTermination', + to='vpn.L2VPNTermination', content_type_field='assigned_object_type', object_id_field='assigned_object_id', related_query_name='vlan' @@ -218,18 +225,18 @@ class VLAN(PrimaryModel): # Validate VLAN group (if assigned) if self.group and self.site and self.group.scope != self.site: - raise ValidationError({ - 'group': _( + raise ValidationError( + _( "VLAN is assigned to group {group} (scope: {scope}); cannot also assign to site {site}." ).format(group=self.group, scope=self.group.scope, site=self.site) - }) + ) # Validate group min/max VIDs if self.group and not self.group.min_vid <= self.vid <= self.group.max_vid: raise ValidationError({ 'vid': _( - "VID must be between {min_vid} and {max_vid} for VLANs in group {group}" - ).format(min_vid=self.group.min_vid, max_vid=self.group.max_vid, group=self.group) + "VID must be between {minimum} and {maximum} for VLANs in group {group}" + ).format(minimum=self.group.min_vid, maximum=self.group.max_vid, group=self.group) }) def get_status_color(self): diff --git a/netbox/ipam/querysets.py b/netbox/ipam/querysets.py index 39da0c3a2..2ff8a8b6e 100644 --- a/netbox/ipam/querysets.py +++ b/netbox/ipam/querysets.py @@ -69,6 +69,35 @@ class VLANGroupQuerySet(RestrictedQuerySet): class VLANQuerySet(RestrictedQuerySet): + def get_for_site(self, site): + """ + Return all VLANs in the specified site + """ + from .models import VLANGroup + q = Q() + q |= Q( + scope_type=ContentType.objects.get_by_natural_key('dcim', 'site'), + scope_id=site.pk + ) + + if site.region: + q |= Q( + scope_type=ContentType.objects.get_by_natural_key('dcim', 'region'), + scope_id__in=site.region.get_ancestors(include_self=True) + ) + if site.group: + q |= Q( + scope_type=ContentType.objects.get_by_natural_key('dcim', 'sitegroup'), + scope_id__in=site.group.get_ancestors(include_self=True) + ) + + return self.filter( + Q(group__in=VLANGroup.objects.filter(q)) | + Q(site=site) | + Q(group__scope_id__isnull=True, site__isnull=True) | # Global group VLANs + Q(group__isnull=True, site__isnull=True) # Global VLANs + ) + def get_for_device(self, device): """ Return all VLANs available to the specified Device. diff --git a/netbox/ipam/search.py b/netbox/ipam/search.py index 4d97bf5f0..a1cddbb1a 100644 --- a/netbox/ipam/search.py +++ b/netbox/ipam/search.py @@ -1,5 +1,5 @@ -from . import models from netbox.search import SearchIndex, register_search +from . import models @register_search @@ -11,6 +11,7 @@ class AggregateIndex(SearchIndex): ('date_added', 2000), ('comments', 5000), ) + display_attrs = ('rir', 'tenant', 'description') @register_search @@ -20,6 +21,7 @@ class ASNIndex(SearchIndex): ('asn', 100), ('description', 500), ) + display_attrs = ('rir', 'tenant', 'description') @register_search @@ -28,6 +30,7 @@ class ASNRangeIndex(SearchIndex): fields = ( ('description', 500), ) + display_attrs = ('rir', 'tenant', 'description') @register_search @@ -39,6 +42,7 @@ class FHRPGroupIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('protocol', 'auth_type', 'description') @register_search @@ -50,6 +54,7 @@ class IPAddressIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('vrf', 'tenant', 'status', 'role', 'description') @register_search @@ -61,17 +66,7 @@ class IPRangeIndex(SearchIndex): ('description', 500), ('comments', 5000), ) - - -@register_search -class L2VPNIndex(SearchIndex): - model = models.L2VPN - fields = ( - ('name', 100), - ('slug', 110), - ('description', 500), - ('comments', 5000), - ) + display_attrs = ('vrf', 'tenant', 'status', 'role', 'description') @register_search @@ -82,6 +77,7 @@ class PrefixIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('site', 'vrf', 'tenant', 'vlan', 'status', 'role', 'description') @register_search @@ -92,6 +88,7 @@ class RIRIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -102,6 +99,7 @@ class RoleIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -112,6 +110,7 @@ class RouteTargetIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('tenant', 'description') @register_search @@ -122,6 +121,7 @@ class ServiceIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('device', 'virtual_machine', 'description') @register_search @@ -132,6 +132,7 @@ class ServiceTemplateIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('description',) @register_search @@ -143,6 +144,7 @@ class VLANIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('site', 'group', 'tenant', 'status', 'role', 'description') @register_search @@ -154,6 +156,7 @@ class VLANGroupIndex(SearchIndex): ('description', 500), ('max_vid', 2000), ) + display_attrs = ('scope_type', 'min_vid', 'max_vid', 'description') @register_search @@ -165,3 +168,4 @@ class VRFIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('rd', 'tenant', 'description') diff --git a/netbox/ipam/signals.py b/netbox/ipam/signals.py index 2a985c294..3b36b561f 100644 --- a/netbox/ipam/signals.py +++ b/netbox/ipam/signals.py @@ -56,8 +56,12 @@ def clear_primary_ip(instance, **kwargs): """ field_name = f'primary_ip{instance.family}' if device := Device.objects.filter(**{field_name: instance}).first(): + device.snapshot() + setattr(device, field_name, None) device.save() if virtualmachine := VirtualMachine.objects.filter(**{field_name: instance}).first(): + virtualmachine.snapshot() + setattr(virtualmachine, field_name, None) virtualmachine.save() @@ -67,4 +71,6 @@ def clear_oob_ip(instance, **kwargs): When an IPAddress is deleted, trigger save() on any Devices for which it was a OOB IP. """ if device := Device.objects.filter(oob_ip=instance).first(): + device.snapshot() + device.oob_ip = None device.save() diff --git a/netbox/ipam/tables/__init__.py b/netbox/ipam/tables/__init__.py index 7d04a5fea..95676b82c 100644 --- a/netbox/ipam/tables/__init__.py +++ b/netbox/ipam/tables/__init__.py @@ -1,7 +1,6 @@ from .asn import * from .fhrp import * from .ip import * -from .l2vpn import * from .services import * from .vlans import * from .vrfs import * diff --git a/netbox/ipam/tables/asn.py b/netbox/ipam/tables/asn.py index 6bb15523e..bbe38dc1a 100644 --- a/netbox/ipam/tables/asn.py +++ b/netbox/ipam/tables/asn.py @@ -48,6 +48,7 @@ class ASNTable(TenancyColumnsMixin, NetBoxTable): asn_asdot = tables.Column( accessor=tables.A('asn_asdot'), linkify=True, + order_by=tables.A('asn'), verbose_name=_('ASDOT') ) site_count = columns.LinkedCountColumn( diff --git a/netbox/ipam/tests/test_api.py b/netbox/ipam/tests/test_api.py index 24d219ca0..cb633e162 100644 --- a/netbox/ipam/tests/test_api.py +++ b/netbox/ipam/tests/test_api.py @@ -659,6 +659,62 @@ class IPAddressTest(APIViewTestCases.APIViewTestCase): ) IPAddress.objects.bulk_create(ip_addresses) + def test_assign_object(self): + """ + Test the creation of available IP addresses within a parent IP range. + """ + site = Site.objects.create(name='Site 1') + manufacturer = Manufacturer.objects.create(name='Manufacturer 1') + device_type = DeviceType.objects.create(model='Device Type 1', manufacturer=manufacturer) + role = DeviceRole.objects.create(name='Switch') + device1 = Device.objects.create( + name='Device 1', + site=site, + device_type=device_type, + role=role, + status='active' + ) + interface1 = Interface.objects.create(name='Interface 1', device=device1, type='1000baset') + interface2 = Interface.objects.create(name='Interface 2', device=device1, type='1000baset') + device2 = Device.objects.create( + name='Device 2', + site=site, + device_type=device_type, + role=role, + status='active' + ) + interface3 = Interface.objects.create(name='Interface 3', device=device2, type='1000baset') + + ip_addresses = ( + IPAddress(address=IPNetwork('192.168.0.4/24'), assigned_object=interface1), + IPAddress(address=IPNetwork('192.168.1.4/24')), + ) + IPAddress.objects.bulk_create(ip_addresses) + + ip1 = ip_addresses[0] + ip1.assigned_object = interface1 + device1.primary_ip4 = ip_addresses[0] + device1.save() + + ip2 = ip_addresses[1] + + url = reverse('ipam-api:ipaddress-detail', kwargs={'pk': ip1.pk}) + self.add_permissions('ipam.change_ipaddress') + + # assign to same parent + data = { + 'assigned_object_id': interface2.pk + } + response = self.client.patch(url, data, format='json', **self.header) + self.assertHttpStatus(response, status.HTTP_200_OK) + + # assign to same different parent - should error + data = { + 'assigned_object_id': interface3.pk + } + response = self.client.patch(url, data, format='json', **self.header) + self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST) + class FHRPGroupTest(APIViewTestCases.APIViewTestCase): model = FHRPGroup @@ -1044,96 +1100,3 @@ class ServiceTest(APIViewTestCases.APIViewTestCase): 'ports': [6], }, ] - - -class L2VPNTest(APIViewTestCases.APIViewTestCase): - model = L2VPN - brief_fields = ['display', 'id', 'identifier', 'name', 'slug', 'type', 'url'] - create_data = [ - { - 'name': 'L2VPN 4', - 'slug': 'l2vpn-4', - 'type': 'vxlan', - 'identifier': 33343344 - }, - { - 'name': 'L2VPN 5', - 'slug': 'l2vpn-5', - 'type': 'vxlan', - 'identifier': 33343345 - }, - { - 'name': 'L2VPN 6', - 'slug': 'l2vpn-6', - 'type': 'vpws', - 'identifier': 33343346 - }, - ] - bulk_update_data = { - 'description': 'New description', - } - - @classmethod - def setUpTestData(cls): - - l2vpns = ( - L2VPN(name='L2VPN 1', slug='l2vpn-1', type='vxlan', identifier=650001), - L2VPN(name='L2VPN 2', slug='l2vpn-2', type='vpws', identifier=650002), - L2VPN(name='L2VPN 3', slug='l2vpn-3', type='vpls'), # No RD - ) - L2VPN.objects.bulk_create(l2vpns) - - -class L2VPNTerminationTest(APIViewTestCases.APIViewTestCase): - model = L2VPNTermination - brief_fields = ['display', 'id', 'l2vpn', 'url'] - - @classmethod - def setUpTestData(cls): - - vlans = ( - VLAN(name='VLAN 1', vid=651), - VLAN(name='VLAN 2', vid=652), - VLAN(name='VLAN 3', vid=653), - VLAN(name='VLAN 4', vid=654), - VLAN(name='VLAN 5', vid=655), - VLAN(name='VLAN 6', vid=656), - VLAN(name='VLAN 7', vid=657) - ) - VLAN.objects.bulk_create(vlans) - - l2vpns = ( - L2VPN(name='L2VPN 1', slug='l2vpn-1', type='vxlan', identifier=650001), - L2VPN(name='L2VPN 2', slug='l2vpn-2', type='vpws', identifier=650002), - L2VPN(name='L2VPN 3', slug='l2vpn-3', type='vpls'), # No RD - ) - L2VPN.objects.bulk_create(l2vpns) - - l2vpnterminations = ( - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[0]), - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[1]), - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[2]) - ) - L2VPNTermination.objects.bulk_create(l2vpnterminations) - - cls.create_data = [ - { - 'l2vpn': l2vpns[0].pk, - 'assigned_object_type': 'ipam.vlan', - 'assigned_object_id': vlans[3].pk, - }, - { - 'l2vpn': l2vpns[0].pk, - 'assigned_object_type': 'ipam.vlan', - 'assigned_object_id': vlans[4].pk, - }, - { - 'l2vpn': l2vpns[0].pk, - 'assigned_object_type': 'ipam.vlan', - 'assigned_object_id': vlans[5].pk, - }, - ] - - cls.bulk_update_data = { - 'l2vpn': l2vpns[2].pk - } diff --git a/netbox/ipam/tests/test_filtersets.py b/netbox/ipam/tests/test_filtersets.py index 4adff78ef..bb4f50c21 100644 --- a/netbox/ipam/tests/test_filtersets.py +++ b/netbox/ipam/tests/test_filtersets.py @@ -7,10 +7,9 @@ from dcim.models import Device, DeviceRole, DeviceType, Interface, Location, Man from ipam.choices import * from ipam.filtersets import * from ipam.models import * +from tenancy.models import Tenant, TenantGroup from utilities.testing import ChangeLoggedFilterSetTests, create_test_device, create_test_virtualmachine from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface -from tenancy.models import Tenant, TenantGroup -from rest_framework import serializers class ASNRangeTestCase(TestCase, ChangeLoggedFilterSetTests): @@ -40,7 +39,7 @@ class ASNRangeTestCase(TestCase, ChangeLoggedFilterSetTests): tenant=None, start=65000, end=65009, - description='aaa' + description='foobar1' ), ASNRange( name='ASN Range 2', @@ -49,7 +48,7 @@ class ASNRangeTestCase(TestCase, ChangeLoggedFilterSetTests): tenant=tenants[0], start=65010, end=65019, - description='bbb' + description='foobar2' ), ASNRange( name='ASN Range 3', @@ -58,11 +57,15 @@ class ASNRangeTestCase(TestCase, ChangeLoggedFilterSetTests): tenant=tenants[1], start=65020, end=65029, - description='ccc' + description='foobar3' ), ) ASNRange.objects.bulk_create(asn_ranges) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['ASN Range 1', 'ASN Range 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -90,7 +93,7 @@ class ASNRangeTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['aaa', 'bbb']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -124,9 +127,9 @@ class ASNTestCase(TestCase, ChangeLoggedFilterSetTests): Tenant.objects.bulk_create(tenants) asns = ( - ASN(asn=65001, rir=rirs[0], tenant=tenants[0], description='aaa'), - ASN(asn=65002, rir=rirs[1], tenant=tenants[1], description='bbb'), - ASN(asn=65003, rir=rirs[2], tenant=tenants[2], description='ccc'), + ASN(asn=65001, rir=rirs[0], tenant=tenants[0], description='foobar1'), + ASN(asn=65002, rir=rirs[1], tenant=tenants[1], description='foobar2'), + ASN(asn=65003, rir=rirs[2], tenant=tenants[2], description='foobar3'), ASN(asn=4200000000, rir=rirs[0], tenant=tenants[0]), ASN(asn=4200000001, rir=rirs[1], tenant=tenants[1]), ASN(asn=4200000002, rir=rirs[2], tenant=tenants[2]), @@ -140,6 +143,10 @@ class ASNTestCase(TestCase, ChangeLoggedFilterSetTests): asns[4].sites.set([sites[1]]) asns[5].sites.set([sites[2]]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_asn(self): params = {'asn': [65001, 4200000000]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -166,7 +173,7 @@ class ASNTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) def test_description(self): - params = {'description': ['aaa', 'bbb']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -215,6 +222,10 @@ class VRFTestCase(TestCase, ChangeLoggedFilterSetTests): vrfs[2].import_targets.add(route_targets[2]) vrfs[2].export_targets.add(route_targets[2]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['VRF 1', 'VRF 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -311,6 +322,10 @@ class RouteTargetTestCase(TestCase, ChangeLoggedFilterSetTests): vrfs[1].import_targets.add(route_targets[4], route_targets[5]) vrfs[1].export_targets.add(route_targets[6], route_targets[7]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['65000:1001', '65000:1002', '65000:1003']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) @@ -356,15 +371,19 @@ class RIRTestCase(TestCase, ChangeLoggedFilterSetTests): def setUpTestData(cls): rirs = ( - RIR(name='RIR 1', slug='rir-1', is_private=False, description='A'), - RIR(name='RIR 2', slug='rir-2', is_private=False, description='B'), - RIR(name='RIR 3', slug='rir-3', is_private=False, description='C'), - RIR(name='RIR 4', slug='rir-4', is_private=True, description='D'), - RIR(name='RIR 5', slug='rir-5', is_private=True, description='E'), - RIR(name='RIR 6', slug='rir-6', is_private=True, description='F'), + RIR(name='RIR 1', slug='rir-1', is_private=False, description='foobar1'), + RIR(name='RIR 2', slug='rir-2', is_private=False, description='foobar2'), + RIR(name='RIR 3', slug='rir-3', is_private=False, description='foobar3'), + RIR(name='RIR 4', slug='rir-4', is_private=True), + RIR(name='RIR 5', slug='rir-5', is_private=True), + RIR(name='RIR 6', slug='rir-6', is_private=True), ) RIR.objects.bulk_create(rirs) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['RIR 1', 'RIR 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -374,7 +393,7 @@ class RIRTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_is_private(self): @@ -423,6 +442,10 @@ class AggregateTestCase(TestCase, ChangeLoggedFilterSetTests): ) Aggregate.objects.bulk_create(aggregates) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_family(self): params = {'family': '4'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) @@ -476,6 +499,10 @@ class RoleTestCase(TestCase, ChangeLoggedFilterSetTests): ) Role.objects.bulk_create(roles) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Role 1', 'Role 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -580,6 +607,10 @@ class PrefixTestCase(TestCase, ChangeLoggedFilterSetTests): for prefix in prefixes: prefix.save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_family(self): params = {'family': '6'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) @@ -628,8 +659,12 @@ class PrefixTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_mask_length(self): - params = {'mask_length': ['24']} + params = {'mask_length': [24]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + params = {'mask_length__gte': 32} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) + params = {'mask_length__lte': 24} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) def test_vrf(self): vrfs = VRF.objects.all()[:2] @@ -742,17 +777,87 @@ class IPRangeTestCase(TestCase, ChangeLoggedFilterSetTests): Tenant.objects.bulk_create(tenants) ip_ranges = ( - IPRange(start_address='10.0.1.100/24', end_address='10.0.1.199/24', size=100, vrf=None, tenant=None, role=None, status=IPRangeStatusChoices.STATUS_ACTIVE, description='foobar1'), - IPRange(start_address='10.0.2.100/24', end_address='10.0.2.199/24', size=100, vrf=vrfs[0], tenant=tenants[0], role=roles[0], status=IPRangeStatusChoices.STATUS_ACTIVE, description='foobar2'), - IPRange(start_address='10.0.3.100/24', end_address='10.0.3.199/24', size=100, vrf=vrfs[1], tenant=tenants[1], role=roles[1], status=IPRangeStatusChoices.STATUS_DEPRECATED), - IPRange(start_address='10.0.4.100/24', end_address='10.0.4.199/24', size=100, vrf=vrfs[2], tenant=tenants[2], role=roles[2], status=IPRangeStatusChoices.STATUS_RESERVED), - IPRange(start_address='2001:db8:0:1::1/64', end_address='2001:db8:0:1::100/64', size=100, vrf=None, tenant=None, role=None, status=IPRangeStatusChoices.STATUS_ACTIVE), - IPRange(start_address='2001:db8:0:2::1/64', end_address='2001:db8:0:2::100/64', size=100, vrf=vrfs[0], tenant=tenants[0], role=roles[0], status=IPRangeStatusChoices.STATUS_ACTIVE), - IPRange(start_address='2001:db8:0:3::1/64', end_address='2001:db8:0:3::100/64', size=100, vrf=vrfs[1], tenant=tenants[1], role=roles[1], status=IPRangeStatusChoices.STATUS_DEPRECATED), - IPRange(start_address='2001:db8:0:4::1/64', end_address='2001:db8:0:4::100/64', size=100, vrf=vrfs[2], tenant=tenants[2], role=roles[2], status=IPRangeStatusChoices.STATUS_RESERVED), + IPRange( + start_address='10.0.1.100/24', + end_address='10.0.1.199/24', + size=100, + vrf=None, + tenant=None, + role=None, + status=IPRangeStatusChoices.STATUS_ACTIVE, + description='foobar1' + ), + IPRange( + start_address='10.0.2.100/24', + end_address='10.0.2.199/24', + size=100, + vrf=vrfs[0], + tenant=tenants[0], + role=roles[0], + status=IPRangeStatusChoices.STATUS_ACTIVE, + description='foobar2' + ), + IPRange( + start_address='10.0.3.100/24', + end_address='10.0.3.199/24', + size=100, + vrf=vrfs[1], + tenant=tenants[1], + role=roles[1], + status=IPRangeStatusChoices.STATUS_DEPRECATED + ), + IPRange( + start_address='10.0.4.100/24', + end_address='10.0.4.199/24', + size=100, + vrf=vrfs[2], + tenant=tenants[2], + role=roles[2], + status=IPRangeStatusChoices.STATUS_RESERVED + ), + IPRange( + start_address='2001:db8:0:1::1/64', + end_address='2001:db8:0:1::100/64', + size=100, + vrf=None, + tenant=None, + role=None, + status=IPRangeStatusChoices.STATUS_ACTIVE + ), + IPRange( + start_address='2001:db8:0:2::1/64', + end_address='2001:db8:0:2::100/64', + size=100, + vrf=vrfs[0], + tenant=tenants[0], + role=roles[0], + status=IPRangeStatusChoices.STATUS_ACTIVE + ), + IPRange( + start_address='2001:db8:0:3::1/64', + end_address='2001:db8:0:3::100/64', + size=100, + vrf=vrfs[1], + tenant=tenants[1], + role=roles[1], + status=IPRangeStatusChoices.STATUS_DEPRECATED + ), + IPRange( + start_address='2001:db8:0:4::1/64', + end_address='2001:db8:0:4::100/64', + size=100, + vrf=vrfs[2], + tenant=tenants[2], + role=roles[2], + status=IPRangeStatusChoices.STATUS_RESERVED + ), ) IPRange.objects.bulk_create(ip_ranges) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_family(self): params = {'family': '6'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) @@ -807,6 +912,12 @@ class IPRangeTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_parent(self): + params = {'parent': ['10.0.1.0/24', '10.0.2.0/24']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'parent': ['10.0.1.0/25']} # Range 10.0.1.100-199 is not fully contained by 10.0.1.0/25 + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + class IPAddressTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = IPAddress.objects.all() @@ -880,21 +991,111 @@ class IPAddressTestCase(TestCase, ChangeLoggedFilterSetTests): Tenant.objects.bulk_create(tenants) ipaddresses = ( - IPAddress(address='10.0.0.1/24', tenant=None, vrf=None, assigned_object=None, status=IPAddressStatusChoices.STATUS_ACTIVE, dns_name='ipaddress-a', description='foobar1'), - IPAddress(address='10.0.0.2/24', tenant=tenants[0], vrf=vrfs[0], assigned_object=interfaces[0], status=IPAddressStatusChoices.STATUS_ACTIVE, dns_name='ipaddress-b'), - IPAddress(address='10.0.0.3/24', tenant=tenants[1], vrf=vrfs[1], assigned_object=interfaces[1], status=IPAddressStatusChoices.STATUS_RESERVED, role=IPAddressRoleChoices.ROLE_VIP, dns_name='ipaddress-c'), - IPAddress(address='10.0.0.4/24', tenant=tenants[2], vrf=vrfs[2], assigned_object=interfaces[2], status=IPAddressStatusChoices.STATUS_DEPRECATED, role=IPAddressRoleChoices.ROLE_SECONDARY, dns_name='ipaddress-d'), - IPAddress(address='10.0.0.5/24', tenant=None, vrf=None, assigned_object=fhrp_groups[0], status=IPAddressStatusChoices.STATUS_ACTIVE), - IPAddress(address='10.0.0.1/25', tenant=None, vrf=None, assigned_object=None, status=IPAddressStatusChoices.STATUS_ACTIVE), - IPAddress(address='2001:db8::1/64', tenant=None, vrf=None, assigned_object=None, status=IPAddressStatusChoices.STATUS_ACTIVE, dns_name='ipaddress-a', description='foobar2'), - IPAddress(address='2001:db8::2/64', tenant=tenants[0], vrf=vrfs[0], assigned_object=vminterfaces[0], status=IPAddressStatusChoices.STATUS_ACTIVE, dns_name='ipaddress-b'), - IPAddress(address='2001:db8::3/64', tenant=tenants[1], vrf=vrfs[1], assigned_object=vminterfaces[1], status=IPAddressStatusChoices.STATUS_RESERVED, role=IPAddressRoleChoices.ROLE_VIP, dns_name='ipaddress-c'), - IPAddress(address='2001:db8::4/64', tenant=tenants[2], vrf=vrfs[2], assigned_object=vminterfaces[2], status=IPAddressStatusChoices.STATUS_DEPRECATED, role=IPAddressRoleChoices.ROLE_SECONDARY, dns_name='ipaddress-d'), - IPAddress(address='2001:db8::5/64', tenant=None, vrf=None, assigned_object=fhrp_groups[1], status=IPAddressStatusChoices.STATUS_ACTIVE), - IPAddress(address='2001:db8::1/65', tenant=None, vrf=None, assigned_object=None, status=IPAddressStatusChoices.STATUS_ACTIVE), + IPAddress( + address='10.0.0.1/24', + tenant=None, + vrf=None, + assigned_object=None, + status=IPAddressStatusChoices.STATUS_ACTIVE, + dns_name='ipaddress-a', + description='foobar1' + ), + IPAddress( + address='10.0.0.2/24', + tenant=tenants[0], + vrf=vrfs[0], + assigned_object=interfaces[0], + status=IPAddressStatusChoices.STATUS_ACTIVE, + dns_name='ipaddress-b' + ), + IPAddress( + address='10.0.0.3/24', + tenant=tenants[1], + vrf=vrfs[1], + assigned_object=interfaces[1], + status=IPAddressStatusChoices.STATUS_RESERVED, + role=IPAddressRoleChoices.ROLE_VIP, + dns_name='ipaddress-c' + ), + IPAddress( + address='10.0.0.4/24', + tenant=tenants[2], + vrf=vrfs[2], + assigned_object=interfaces[2], + status=IPAddressStatusChoices.STATUS_DEPRECATED, + role=IPAddressRoleChoices.ROLE_SECONDARY, + dns_name='ipaddress-d' + ), + IPAddress( + address='10.0.0.5/24', + tenant=None, + vrf=None, + assigned_object=fhrp_groups[0], + status=IPAddressStatusChoices.STATUS_ACTIVE + ), + IPAddress( + address='10.0.0.1/25', + tenant=None, + vrf=None, + assigned_object=None, + status=IPAddressStatusChoices.STATUS_ACTIVE + ), + IPAddress( + address='2001:db8::1/64', + tenant=None, + vrf=None, + assigned_object=None, + status=IPAddressStatusChoices.STATUS_ACTIVE, + dns_name='ipaddress-a', + description='foobar2' + ), + IPAddress( + address='2001:db8::2/64', + tenant=tenants[0], + vrf=vrfs[0], + assigned_object=vminterfaces[0], + status=IPAddressStatusChoices.STATUS_ACTIVE, + dns_name='ipaddress-b' + ), + IPAddress( + address='2001:db8::3/64', + tenant=tenants[1], + vrf=vrfs[1], + assigned_object=vminterfaces[1], + status=IPAddressStatusChoices.STATUS_RESERVED, + role=IPAddressRoleChoices.ROLE_VIP, + dns_name='ipaddress-c' + ), + IPAddress( + address='2001:db8::4/64', + tenant=tenants[2], + vrf=vrfs[2], + assigned_object=vminterfaces[2], + status=IPAddressStatusChoices.STATUS_DEPRECATED, + role=IPAddressRoleChoices.ROLE_SECONDARY, + dns_name='ipaddress-d' + ), + IPAddress( + address='2001:db8::5/64', + tenant=None, + vrf=None, + assigned_object=fhrp_groups[1], + status=IPAddressStatusChoices.STATUS_ACTIVE + ), + IPAddress( + address='2001:db8::1/65', + tenant=None, + vrf=None, + assigned_object=None, + status=IPAddressStatusChoices.STATUS_ACTIVE + ), ) IPAddress.objects.bulk_create(ipaddresses) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_family(self): params = {'family': '4'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) @@ -949,8 +1150,12 @@ class IPAddressTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_mask_length(self): - params = {'mask_length': '24'} + params = {'mask_length': [24]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) + params = {'mask_length__gte': 64} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + params = {'mask_length__lte': 25} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) def test_vrf(self): vrfs = VRF.objects.all()[:2] @@ -1042,15 +1247,36 @@ class FHRPGroupTestCase(TestCase, ChangeLoggedFilterSetTests): IPAddress.objects.bulk_create(ip_addresses) fhrp_groups = ( - FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, group_id=10, auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_PLAINTEXT, auth_key='foo123'), - FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP3, group_id=20, auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_MD5, auth_key='bar456', name='bar123'), - FHRPGroup(protocol=FHRPGroupProtocolChoices.PROTOCOL_HSRP, group_id=30), + FHRPGroup( + protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP2, + group_id=10, + auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_PLAINTEXT, + auth_key='foo123', + description='foobar1' + ), + FHRPGroup( + protocol=FHRPGroupProtocolChoices.PROTOCOL_VRRP3, + group_id=20, + auth_type=FHRPGroupAuthTypeChoices.AUTHENTICATION_MD5, + auth_key='bar456', + name='bar123', + description='foobar2' + ), + FHRPGroup( + protocol=FHRPGroupProtocolChoices.PROTOCOL_HSRP, + group_id=30, + description='foobar3' + ), ) FHRPGroup.objects.bulk_create(fhrp_groups) fhrp_groups[0].ip_addresses.set([ip_addresses[0]]) fhrp_groups[1].ip_addresses.set([ip_addresses[1]]) fhrp_groups[2].ip_addresses.set([ip_addresses[2]]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_protocol(self): params = {'protocol': [FHRPGroupProtocolChoices.PROTOCOL_VRRP2, FHRPGroupProtocolChoices.PROTOCOL_VRRP3]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1071,6 +1297,10 @@ class FHRPGroupTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'name': ['bar123', ]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_related_ip(self): # Create some regular IPs to query for related IPs ipaddresses = ( @@ -1186,17 +1416,21 @@ class VLANGroupTestCase(TestCase, ChangeLoggedFilterSetTests): cluster.save() vlan_groups = ( - VLANGroup(name='VLAN Group 1', slug='vlan-group-1', scope=region, description='A'), - VLANGroup(name='VLAN Group 2', slug='vlan-group-2', scope=sitegroup, description='B'), - VLANGroup(name='VLAN Group 3', slug='vlan-group-3', scope=site, description='C'), - VLANGroup(name='VLAN Group 4', slug='vlan-group-4', scope=location, description='D'), - VLANGroup(name='VLAN Group 5', slug='vlan-group-5', scope=rack, description='E'), - VLANGroup(name='VLAN Group 6', slug='vlan-group-6', scope=clustergroup, description='F'), - VLANGroup(name='VLAN Group 7', slug='vlan-group-7', scope=cluster, description='G'), + VLANGroup(name='VLAN Group 1', slug='vlan-group-1', scope=region, description='foobar1'), + VLANGroup(name='VLAN Group 2', slug='vlan-group-2', scope=sitegroup, description='foobar2'), + VLANGroup(name='VLAN Group 3', slug='vlan-group-3', scope=site, description='foobar3'), + VLANGroup(name='VLAN Group 4', slug='vlan-group-4', scope=location), + VLANGroup(name='VLAN Group 5', slug='vlan-group-5', scope=rack), + VLANGroup(name='VLAN Group 6', slug='vlan-group-6', scope=clustergroup), + VLANGroup(name='VLAN Group 7', slug='vlan-group-7', scope=cluster), VLANGroup(name='VLAN Group 8', slug='vlan-group-8'), ) VLANGroup.objects.bulk_create(vlan_groups) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['VLAN Group 1', 'VLAN Group 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1206,7 +1440,7 @@ class VLANGroupTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_region(self): @@ -1346,6 +1580,7 @@ class VLANTestCase(TestCase, ChangeLoggedFilterSetTests): VLANGroup(name='VLAN Group 1', slug='vlan-group-1'), VLANGroup(name='VLAN Group 2', slug='vlan-group-2'), VLANGroup(name='VLAN Group 3', slug='vlan-group-3'), + VLANGroup(name='VLAN Group 4', slug='vlan-group-4'), ) VLANGroup.objects.bulk_create(groups) @@ -1402,11 +1637,18 @@ class VLANTestCase(TestCase, ChangeLoggedFilterSetTests): VLAN(vid=301, name='VLAN 301', site=sites[5], group=groups[23], role=roles[2], tenant=tenants[2], status=VLANStatusChoices.STATUS_RESERVED), VLAN(vid=302, name='VLAN 302', site=sites[5], group=groups[23], role=roles[2], tenant=tenants[2], status=VLANStatusChoices.STATUS_RESERVED), + # Create one globally available VLAN on a VLAN group + VLAN(vid=500, name='VLAN Group 1', group=groups[24]), + # Create one globally available VLAN VLAN(vid=1000, name='Global VLAN'), ) VLAN.objects.bulk_create(vlans) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['VLAN 101', 'VLAN 102']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1475,12 +1717,17 @@ class VLANTestCase(TestCase, ChangeLoggedFilterSetTests): def test_available_on_device(self): device_id = Device.objects.first().pk params = {'available_on_device': device_id} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) # 5 scoped + 1 global + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 7) # 5 scoped + 1 global group + 1 global def test_available_on_virtualmachine(self): vm_id = VirtualMachine.objects.first().pk params = {'available_on_virtualmachine': vm_id} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) # 5 scoped + 1 global + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 7) # 5 scoped + 1 global group + 1 global + + def test_available_at_site(self): + site_id = Site.objects.first().pk + params = {'available_at_site': site_id} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 5) # 4 scoped + 1 global group + 1 global class ServiceTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): @@ -1490,15 +1737,46 @@ class ServiceTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): @classmethod def setUpTestData(cls): service_templates = ( - ServiceTemplate(name='Service Template 1', protocol=ServiceProtocolChoices.PROTOCOL_TCP, ports=[1001]), - ServiceTemplate(name='Service Template 2', protocol=ServiceProtocolChoices.PROTOCOL_TCP, ports=[1002]), - ServiceTemplate(name='Service Template 3', protocol=ServiceProtocolChoices.PROTOCOL_UDP, ports=[1003]), - ServiceTemplate(name='Service Template 4', protocol=ServiceProtocolChoices.PROTOCOL_TCP, ports=[2001]), - ServiceTemplate(name='Service Template 5', protocol=ServiceProtocolChoices.PROTOCOL_TCP, ports=[2002]), - ServiceTemplate(name='Service Template 6', protocol=ServiceProtocolChoices.PROTOCOL_UDP, ports=[2003]), + ServiceTemplate( + name='Service Template 1', + protocol=ServiceProtocolChoices.PROTOCOL_TCP, + ports=[1001], + description='foobar1' + ), + ServiceTemplate( + name='Service Template 2', + protocol=ServiceProtocolChoices.PROTOCOL_TCP, + ports=[1002], + description='foobar2' + ), + ServiceTemplate( + name='Service Template 3', + protocol=ServiceProtocolChoices.PROTOCOL_UDP, + ports=[1003], + description='foobar3' + ), + ServiceTemplate( + name='Service Template 4', + protocol=ServiceProtocolChoices.PROTOCOL_TCP, + ports=[2001] + ), + ServiceTemplate( + name='Service Template 5', + protocol=ServiceProtocolChoices.PROTOCOL_TCP, + ports=[2002] + ), + ServiceTemplate( + name='Service Template 6', + protocol=ServiceProtocolChoices.PROTOCOL_UDP, + ports=[2003] + ), ) ServiceTemplate.objects.bulk_create(service_templates) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Service Template 1', 'Service Template 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1511,6 +1789,10 @@ class ServiceTemplateTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'port': '1001'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + class ServiceTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = Service.objects.all() @@ -1567,6 +1849,10 @@ class ServiceTestCase(TestCase, ChangeLoggedFilterSetTests): services[1].ipaddresses.add(ip_addresses[1]) services[2].ipaddresses.add(ip_addresses[2]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Service 1', 'Service 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -1603,163 +1889,3 @@ class ServiceTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) params = {'ipaddress': [str(ips[0].address), str(ips[1].address)]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - -class L2VPNTestCase(TestCase, ChangeLoggedFilterSetTests): - queryset = L2VPN.objects.all() - filterset = L2VPNFilterSet - - @classmethod - def setUpTestData(cls): - - route_targets = ( - RouteTarget(name='1:1'), - RouteTarget(name='1:2'), - RouteTarget(name='1:3'), - RouteTarget(name='2:1'), - RouteTarget(name='2:2'), - RouteTarget(name='2:3'), - ) - RouteTarget.objects.bulk_create(route_targets) - - l2vpns = ( - L2VPN(name='L2VPN 1', slug='l2vpn-1', type=L2VPNTypeChoices.TYPE_VXLAN, identifier=65001), - L2VPN(name='L2VPN 2', slug='l2vpn-2', type=L2VPNTypeChoices.TYPE_VPWS, identifier=65002), - L2VPN(name='L2VPN 3', slug='l2vpn-3', type=L2VPNTypeChoices.TYPE_VPLS), - ) - L2VPN.objects.bulk_create(l2vpns) - l2vpns[0].import_targets.add(route_targets[0]) - l2vpns[1].import_targets.add(route_targets[1]) - l2vpns[2].import_targets.add(route_targets[2]) - l2vpns[0].export_targets.add(route_targets[3]) - l2vpns[1].export_targets.add(route_targets[4]) - l2vpns[2].export_targets.add(route_targets[5]) - - def test_name(self): - params = {'name': ['L2VPN 1', 'L2VPN 2']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_slug(self): - params = {'slug': ['l2vpn-1', 'l2vpn-2']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_identifier(self): - params = {'identifier': ['65001', '65002']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_type(self): - params = {'type': [L2VPNTypeChoices.TYPE_VXLAN, L2VPNTypeChoices.TYPE_VPWS]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_import_targets(self): - route_targets = RouteTarget.objects.filter(name__in=['1:1', '1:2']) - params = {'import_target_id': [route_targets[0].pk, route_targets[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - params = {'import_target': [route_targets[0].name, route_targets[1].name]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_export_targets(self): - route_targets = RouteTarget.objects.filter(name__in=['2:1', '2:2']) - params = {'export_target_id': [route_targets[0].pk, route_targets[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - params = {'export_target': [route_targets[0].name, route_targets[1].name]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - -class L2VPNTerminationTestCase(TestCase, ChangeLoggedFilterSetTests): - queryset = L2VPNTermination.objects.all() - filterset = L2VPNTerminationFilterSet - - @classmethod - def setUpTestData(cls): - device = create_test_device('Device 1') - interfaces = ( - Interface(name='Interface 1', device=device, type=InterfaceTypeChoices.TYPE_1GE_FIXED), - Interface(name='Interface 2', device=device, type=InterfaceTypeChoices.TYPE_1GE_FIXED), - Interface(name='Interface 3', device=device, type=InterfaceTypeChoices.TYPE_1GE_FIXED), - ) - Interface.objects.bulk_create(interfaces) - - vm = create_test_virtualmachine('Virtual Machine 1') - vminterfaces = ( - VMInterface(name='Interface 1', virtual_machine=vm), - VMInterface(name='Interface 2', virtual_machine=vm), - VMInterface(name='Interface 3', virtual_machine=vm), - ) - VMInterface.objects.bulk_create(vminterfaces) - - vlans = ( - VLAN(name='VLAN 1', vid=101), - VLAN(name='VLAN 2', vid=102), - VLAN(name='VLAN 3', vid=103), - ) - VLAN.objects.bulk_create(vlans) - - l2vpns = ( - L2VPN(name='L2VPN 1', slug='l2vpn-1', type='vxlan', identifier=65001), - L2VPN(name='L2VPN 2', slug='l2vpn-2', type='vpws', identifier=65002), - L2VPN(name='L2VPN 3', slug='l2vpn-3', type='vpls'), # No RD, - ) - L2VPN.objects.bulk_create(l2vpns) - - l2vpnterminations = ( - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[0]), - L2VPNTermination(l2vpn=l2vpns[1], assigned_object=vlans[1]), - L2VPNTermination(l2vpn=l2vpns[2], assigned_object=vlans[2]), - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=interfaces[0]), - L2VPNTermination(l2vpn=l2vpns[1], assigned_object=interfaces[1]), - L2VPNTermination(l2vpn=l2vpns[2], assigned_object=interfaces[2]), - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vminterfaces[0]), - L2VPNTermination(l2vpn=l2vpns[1], assigned_object=vminterfaces[1]), - L2VPNTermination(l2vpn=l2vpns[2], assigned_object=vminterfaces[2]), - ) - L2VPNTermination.objects.bulk_create(l2vpnterminations) - - def test_l2vpn(self): - l2vpns = L2VPN.objects.all()[:2] - params = {'l2vpn_id': [l2vpns[0].pk, l2vpns[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) - params = {'l2vpn': [l2vpns[0].slug, l2vpns[1].slug]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) - - def test_content_type(self): - params = {'assigned_object_type_id': ContentType.objects.get(model='vlan').pk} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) - - def test_interface(self): - interfaces = Interface.objects.all()[:2] - params = {'interface_id': [interfaces[0].pk, interfaces[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_vminterface(self): - vminterfaces = VMInterface.objects.all()[:2] - params = {'vminterface_id': [vminterfaces[0].pk, vminterfaces[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_vlan(self): - vlans = VLAN.objects.all()[:2] - params = {'vlan_id': [vlans[0].pk, vlans[1].pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - params = {'vlan': ['VLAN 1', 'VLAN 2']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - - def test_site(self): - site = Site.objects.all().first() - params = {'site_id': [site.pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) - params = {'site': ['site-1']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) - - def test_device(self): - device = Device.objects.all().first() - params = {'device_id': [device.pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) - params = {'device': ['Device 1']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) - - def test_virtual_machine(self): - virtual_machine = VirtualMachine.objects.all().first() - params = {'virtual_machine_id': [virtual_machine.pk]} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) - params = {'virtual_machine': ['Virtual Machine 1']} - self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) diff --git a/netbox/ipam/tests/test_models.py b/netbox/ipam/tests/test_models.py index 06cd9b445..d0f42e8a6 100644 --- a/netbox/ipam/tests/test_models.py +++ b/netbox/ipam/tests/test_models.py @@ -1,10 +1,9 @@ -from netaddr import IPNetwork, IPSet from django.core.exceptions import ValidationError from django.test import TestCase, override_settings +from netaddr import IPNetwork, IPSet -from dcim.models import Interface, Device, DeviceRole, DeviceType, Manufacturer, Site -from ipam.choices import IPAddressRoleChoices, PrefixStatusChoices -from ipam.models import Aggregate, IPAddress, IPRange, Prefix, RIR, VLAN, VLANGroup, VRF, L2VPN, L2VPNTermination +from ipam.choices import * +from ipam.models import * class TestAggregate(TestCase): @@ -233,7 +232,6 @@ class TestPrefix(TestCase): duplicate_prefix = Prefix(prefix=IPNetwork('192.0.2.0/24')) self.assertIsNone(duplicate_prefix.clean()) - @override_settings(ENFORCE_GLOBAL_UNIQUE=True) def test_duplicate_global_unique(self): Prefix.objects.create(prefix=IPNetwork('192.0.2.0/24')) duplicate_prefix = Prefix(prefix=IPNetwork('192.0.2.0/24')) @@ -472,7 +470,6 @@ class TestIPAddress(TestCase): duplicate_ip = IPAddress(address=IPNetwork('192.0.2.1/24')) self.assertIsNone(duplicate_ip.clean()) - @override_settings(ENFORCE_GLOBAL_UNIQUE=True) def test_duplicate_global_unique(self): IPAddress.objects.create(address=IPNetwork('192.0.2.1/24')) duplicate_ip = IPAddress(address=IPNetwork('192.0.2.1/24')) @@ -490,19 +487,16 @@ class TestIPAddress(TestCase): duplicate_ip = IPAddress(vrf=vrf, address=IPNetwork('192.0.2.1/24')) self.assertRaises(ValidationError, duplicate_ip.clean) - @override_settings(ENFORCE_GLOBAL_UNIQUE=True) def test_duplicate_nonunique_nonrole_role(self): IPAddress.objects.create(address=IPNetwork('192.0.2.1/24')) duplicate_ip = IPAddress(address=IPNetwork('192.0.2.1/24'), role=IPAddressRoleChoices.ROLE_VIP) self.assertRaises(ValidationError, duplicate_ip.clean) - @override_settings(ENFORCE_GLOBAL_UNIQUE=True) def test_duplicate_nonunique_role_nonrole(self): IPAddress.objects.create(address=IPNetwork('192.0.2.1/24'), role=IPAddressRoleChoices.ROLE_VIP) duplicate_ip = IPAddress(address=IPNetwork('192.0.2.1/24')) self.assertRaises(ValidationError, duplicate_ip.clean) - @override_settings(ENFORCE_GLOBAL_UNIQUE=True) def test_duplicate_nonunique_role(self): IPAddress.objects.create(address=IPNetwork('192.0.2.1/24'), role=IPAddressRoleChoices.ROLE_VIP) IPAddress.objects.create(address=IPNetwork('192.0.2.1/24'), role=IPAddressRoleChoices.ROLE_VIP) @@ -539,76 +533,3 @@ class TestVLANGroup(TestCase): VLAN.objects.create(name='VLAN 104', vid=104, group=vlangroup) self.assertEqual(vlangroup.get_next_available_vid(), 105) - - -class TestL2VPNTermination(TestCase): - - @classmethod - def setUpTestData(cls): - - site = Site.objects.create(name='Site 1') - manufacturer = Manufacturer.objects.create(name='Manufacturer 1') - device_type = DeviceType.objects.create(model='Device Type 1', manufacturer=manufacturer) - role = DeviceRole.objects.create(name='Switch') - device = Device.objects.create( - name='Device 1', - site=site, - device_type=device_type, - role=role, - status='active' - ) - - interfaces = ( - Interface(name='Interface 1', device=device, type='1000baset'), - Interface(name='Interface 2', device=device, type='1000baset'), - Interface(name='Interface 3', device=device, type='1000baset'), - Interface(name='Interface 4', device=device, type='1000baset'), - Interface(name='Interface 5', device=device, type='1000baset'), - ) - - Interface.objects.bulk_create(interfaces) - - vlans = ( - VLAN(name='VLAN 1', vid=651), - VLAN(name='VLAN 2', vid=652), - VLAN(name='VLAN 3', vid=653), - VLAN(name='VLAN 4', vid=654), - VLAN(name='VLAN 5', vid=655), - VLAN(name='VLAN 6', vid=656), - VLAN(name='VLAN 7', vid=657) - ) - - VLAN.objects.bulk_create(vlans) - - l2vpns = ( - L2VPN(name='L2VPN 1', slug='l2vpn-1', type='vxlan', identifier=650001), - L2VPN(name='L2VPN 2', slug='l2vpn-2', type='vpws', identifier=650002), - L2VPN(name='L2VPN 3', slug='l2vpn-3', type='vpls'), # No RD - ) - L2VPN.objects.bulk_create(l2vpns) - - l2vpnterminations = ( - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[0]), - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[1]), - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[2]) - ) - - L2VPNTermination.objects.bulk_create(l2vpnterminations) - - def test_duplicate_interface_terminations(self): - device = Device.objects.first() - interface = Interface.objects.filter(device=device).first() - l2vpn = L2VPN.objects.first() - - L2VPNTermination.objects.create(l2vpn=l2vpn, assigned_object=interface) - duplicate = L2VPNTermination(l2vpn=l2vpn, assigned_object=interface) - - self.assertRaises(ValidationError, duplicate.clean) - - def test_duplicate_vlan_terminations(self): - vlan = Interface.objects.first() - l2vpn = L2VPN.objects.first() - - L2VPNTermination.objects.create(l2vpn=l2vpn, assigned_object=vlan) - duplicate = L2VPNTermination(l2vpn=l2vpn, assigned_object=vlan) - self.assertRaises(ValidationError, duplicate.clean) diff --git a/netbox/ipam/tests/test_views.py b/netbox/ipam/tests/test_views.py index afc97cc63..bc42341ba 100644 --- a/netbox/ipam/tests/test_views.py +++ b/netbox/ipam/tests/test_views.py @@ -4,11 +4,12 @@ from django.test import override_settings from django.urls import reverse from netaddr import IPNetwork +from dcim.constants import InterfaceTypeChoices from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site, Interface from ipam.choices import * from ipam.models import * from tenancy.models import Tenant -from utilities.testing import ViewTestCases, create_test_device, create_tags +from utilities.testing import ViewTestCases, create_tags class ASNRangeTestCase(ViewTestCases.PrimaryObjectViewTestCase): @@ -911,6 +912,7 @@ class ServiceTestCase(ViewTestCases.PrimaryObjectViewTestCase): devicetype = DeviceType.objects.create(manufacturer=manufacturer, model='Device Type 1') role = DeviceRole.objects.create(name='Device Role 1', slug='device-role-1') device = Device.objects.create(name='Device 1', site=site, device_type=devicetype, role=role) + interface = Interface.objects.create(device=device, name='Interface 1', type=InterfaceTypeChoices.TYPE_VIRTUAL) services = ( Service(device=device, name='Service 1', protocol=ServiceProtocolChoices.PROTOCOL_TCP, ports=[101]), @@ -919,6 +921,12 @@ class ServiceTestCase(ViewTestCases.PrimaryObjectViewTestCase): ) Service.objects.bulk_create(services) + ip_addresses = ( + IPAddress(assigned_object=interface, address='192.0.2.1/24'), + IPAddress(assigned_object=interface, address='192.0.2.2/24'), + ) + IPAddress.objects.bulk_create(ip_addresses) + tags = create_tags('Alpha', 'Bravo', 'Charlie') cls.form_data = { @@ -933,10 +941,10 @@ class ServiceTestCase(ViewTestCases.PrimaryObjectViewTestCase): } cls.csv_data = ( - "device,name,protocol,ports,description", - "Device 1,Service 1,tcp,1,First service", - "Device 1,Service 2,tcp,2,Second service", - "Device 1,Service 3,udp,3,Third service", + "device,name,protocol,ports,ipaddresses,description", + "Device 1,Service 1,tcp,1,192.0.2.1/24,First service", + "Device 1,Service 2,tcp,2,192.0.2.2/24,Second service", + "Device 1,Service 3,udp,3,,Third service", ) cls.csv_update_data = ( @@ -978,142 +986,3 @@ class ServiceTestCase(ViewTestCases.PrimaryObjectViewTestCase): self.assertEqual(instance.protocol, service_template.protocol) self.assertEqual(instance.ports, service_template.ports) self.assertEqual(instance.description, service_template.description) - - -class L2VPNTestCase(ViewTestCases.PrimaryObjectViewTestCase): - model = L2VPN - - @classmethod - def setUpTestData(cls): - rts = ( - RouteTarget(name='64534:123'), - RouteTarget(name='64534:321') - ) - RouteTarget.objects.bulk_create(rts) - - l2vpns = ( - L2VPN(name='L2VPN 1', slug='l2vpn-1', type=L2VPNTypeChoices.TYPE_VXLAN, identifier='650001'), - L2VPN(name='L2VPN 2', slug='l2vpn-2', type=L2VPNTypeChoices.TYPE_VXLAN, identifier='650002'), - L2VPN(name='L2VPN 3', slug='l2vpn-3', type=L2VPNTypeChoices.TYPE_VXLAN, identifier='650003') - ) - L2VPN.objects.bulk_create(l2vpns) - - cls.csv_data = ( - 'name,slug,type,identifier', - 'L2VPN 5,l2vpn-5,vxlan,456', - 'L2VPN 6,l2vpn-6,vxlan,444', - ) - - cls.csv_update_data = ( - 'id,name,description', - f'{l2vpns[0].pk},L2VPN 7,New description 7', - f'{l2vpns[1].pk},L2VPN 8,New description 8', - ) - - cls.bulk_edit_data = { - 'description': 'New Description', - } - - cls.form_data = { - 'name': 'L2VPN 8', - 'slug': 'l2vpn-8', - 'type': L2VPNTypeChoices.TYPE_VXLAN, - 'identifier': 123, - 'description': 'Description', - 'import_targets': [rts[0].pk], - 'export_targets': [rts[1].pk] - } - - -class L2VPNTerminationTestCase( - ViewTestCases.GetObjectViewTestCase, - ViewTestCases.GetObjectChangelogViewTestCase, - ViewTestCases.CreateObjectViewTestCase, - ViewTestCases.EditObjectViewTestCase, - ViewTestCases.DeleteObjectViewTestCase, - ViewTestCases.ListObjectsViewTestCase, - ViewTestCases.BulkImportObjectsViewTestCase, - ViewTestCases.BulkDeleteObjectsViewTestCase, -): - - model = L2VPNTermination - - @classmethod - def setUpTestData(cls): - device = create_test_device('Device 1') - interface = Interface.objects.create(name='Interface 1', device=device, type='1000baset') - l2vpns = ( - L2VPN(name='L2VPN 1', slug='l2vpn-1', type=L2VPNTypeChoices.TYPE_VXLAN, identifier=650001), - L2VPN(name='L2VPN 2', slug='l2vpn-2', type=L2VPNTypeChoices.TYPE_VXLAN, identifier=650002), - ) - L2VPN.objects.bulk_create(l2vpns) - - vlans = ( - VLAN(name='Vlan 1', vid=1001), - VLAN(name='Vlan 2', vid=1002), - VLAN(name='Vlan 3', vid=1003), - VLAN(name='Vlan 4', vid=1004), - VLAN(name='Vlan 5', vid=1005), - VLAN(name='Vlan 6', vid=1006) - ) - VLAN.objects.bulk_create(vlans) - - terminations = ( - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[0]), - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[1]), - L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[2]) - ) - L2VPNTermination.objects.bulk_create(terminations) - - cls.form_data = { - 'l2vpn': l2vpns[0].pk, - 'device': device.pk, - 'interface': interface.pk, - } - - cls.csv_data = ( - "l2vpn,vlan", - "L2VPN 1,Vlan 4", - "L2VPN 1,Vlan 5", - "L2VPN 1,Vlan 6", - ) - - cls.csv_update_data = ( - f"id,l2vpn", - f"{terminations[0].pk},{l2vpns[0].name}", - f"{terminations[1].pk},{l2vpns[0].name}", - f"{terminations[2].pk},{l2vpns[0].name}", - ) - - cls.bulk_edit_data = {} - - # TODO: Fix L2VPNTerminationImportForm validation to support bulk updates - def test_bulk_update_objects_with_permission(self): - pass - - # - # Custom assertions - # - - # TODO: Remove this - def assertInstanceEqual(self, instance, data, exclude=None, api=False): - """ - Override parent - """ - if exclude is None: - exclude = [] - - fields = [k for k in data.keys() if k not in exclude] - model_dict = self.model_to_dict(instance, fields=fields, api=api) - - # Omit any dictionary keys which are not instance attributes or have been excluded - relevant_data = { - k: v for k, v in data.items() if hasattr(instance, k) and k not in exclude - } - - # Handle relations on the model - for k, v in model_dict.items(): - if isinstance(v, object) and hasattr(v, 'first'): - model_dict[k] = v.first().pk - - self.assertDictEqual(model_dict, relevant_data) diff --git a/netbox/ipam/urls.py b/netbox/ipam/urls.py index 3bfe34b7b..61deeff4b 100644 --- a/netbox/ipam/urls.py +++ b/netbox/ipam/urls.py @@ -131,20 +131,4 @@ urlpatterns = [ path('services/edit/', views.ServiceBulkEditView.as_view(), name='service_bulk_edit'), path('services/delete/', views.ServiceBulkDeleteView.as_view(), name='service_bulk_delete'), path('services//', include(get_model_urls('ipam', 'service'))), - - # L2VPN - path('l2vpns/', views.L2VPNListView.as_view(), name='l2vpn_list'), - path('l2vpns/add/', views.L2VPNEditView.as_view(), name='l2vpn_add'), - path('l2vpns/import/', views.L2VPNBulkImportView.as_view(), name='l2vpn_import'), - path('l2vpns/edit/', views.L2VPNBulkEditView.as_view(), name='l2vpn_bulk_edit'), - path('l2vpns/delete/', views.L2VPNBulkDeleteView.as_view(), name='l2vpn_bulk_delete'), - path('l2vpns//', include(get_model_urls('ipam', 'l2vpn'))), - - # L2VPN terminations - path('l2vpn-terminations/', views.L2VPNTerminationListView.as_view(), name='l2vpntermination_list'), - path('l2vpn-terminations/add/', views.L2VPNTerminationEditView.as_view(), name='l2vpntermination_add'), - path('l2vpn-terminations/import/', views.L2VPNTerminationBulkImportView.as_view(), name='l2vpntermination_import'), - path('l2vpn-terminations/edit/', views.L2VPNTerminationBulkEditView.as_view(), name='l2vpntermination_bulk_edit'), - path('l2vpn-terminations/delete/', views.L2VPNTerminationBulkDeleteView.as_view(), name='l2vpntermination_bulk_delete'), - path('l2vpn-terminations//', include(get_model_urls('ipam', 'l2vpntermination'))), ] diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index d8e4d8b47..1598f0321 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -1,7 +1,6 @@ from django.contrib.contenttypes.models import ContentType -from django.db.models import F, Prefetch +from django.db.models import Prefetch from django.db.models.expressions import RawSQL -from django.db.models.functions import Round from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse from django.utils.translation import gettext as _ @@ -10,7 +9,7 @@ from circuits.models import Provider from dcim.filtersets import InterfaceFilterSet from dcim.models import Interface, Site from netbox.views import generic -from tenancy.views import ObjectContactsView +from utilities.tables import get_table_ordering from utilities.utils import count_related from utilities.views import ViewTab, register_model_view from virtualization.filtersets import VMInterfaceFilterSet @@ -19,7 +18,6 @@ from . import filtersets, forms, tables from .choices import PrefixStatusChoices from .constants import * from .models import * -from .tables.l2vpn import L2VPNTable, L2VPNTerminationTable from .utils import add_requested_prefixes, add_available_ipaddresses, add_available_vlans @@ -220,7 +218,7 @@ class ASNRangeASNsView(generic.ObjectChildrenView): tab = ViewTab( label=_('ASNs'), badge=lambda x: x.get_child_asns().count(), - permission='ipam.view_asns', + permission='ipam.view_asn', weight=500 ) @@ -606,7 +604,7 @@ class PrefixIPAddressesView(generic.ObjectChildrenView): return parent.get_child_ips().restrict(request.user, 'view').prefetch_related('vrf', 'tenant', 'tenant__group') def prep_table_data(self, request, queryset, parent): - if not request.GET.get('q') and not request.GET.get('sort'): + if not get_table_ordering(request, self.table): return add_available_ipaddresses(parent.prefix, queryset, parent.is_pool) return queryset @@ -661,6 +659,26 @@ class IPRangeListView(generic.ObjectListView): class IPRangeView(generic.ObjectView): queryset = IPRange.objects.all() + def get_extra_context(self, request, instance): + + # Parent prefixes table + parent_prefixes = Prefix.objects.restrict(request.user, 'view').filter( + Q(prefix__net_contains_or_equals=str(instance.start_address.ip)), + Q(prefix__net_contains_or_equals=str(instance.end_address.ip)), + vrf=instance.vrf + ).prefetch_related( + 'site', 'role', 'tenant', 'vlan', 'role' + ) + parent_prefixes_table = tables.PrefixTable( + list(parent_prefixes), + exclude=('vrf', 'utilization'), + orderable=False + ) + + return { + 'parent_prefixes_table': parent_prefixes_table, + } + @register_model_view(IPRange, 'ipaddresses', path='ip-addresses') class IPRangeIPAddressesView(generic.ObjectChildrenView): @@ -897,21 +915,8 @@ class VLANGroupView(generic.ObjectView): (VLAN.objects.restrict(request.user, 'view').filter(group=instance), 'group_id'), ) - # TODO: Replace with embedded table - vlans = VLAN.objects.restrict(request.user, 'view').filter(group=instance).prefetch_related( - Prefetch('prefixes', queryset=Prefix.objects.restrict(request.user)), - 'tenant', 'site', 'role', - ).order_by('vid') - vlans = add_available_vlans(vlans, vlan_group=instance) - - vlans_table = tables.VLANTable(vlans, user=request.user, exclude=('group',)) - if request.user.has_perm('ipam.change_vlan') or request.user.has_perm('ipam.delete_vlan'): - vlans_table.columns.show('pk') - vlans_table.configure(request) - return { 'related_models': related_models, - 'vlans_table': vlans_table, } @@ -944,6 +949,32 @@ class VLANGroupBulkDeleteView(generic.BulkDeleteView): table = tables.VLANGroupTable +@register_model_view(VLANGroup, 'vlans') +class VLANGroupVLANsView(generic.ObjectChildrenView): + queryset = VLANGroup.objects.all() + child_model = VLAN + table = tables.VLANTable + filterset = filtersets.VLANFilterSet + template_name = 'generic/object_children.html' + tab = ViewTab( + label=_('VLANs'), + badge=lambda x: x.get_child_vlans().count(), + permission='ipam.view_vlan', + weight=500 + ) + + def get_children(self, request, parent): + return parent.get_child_vlans().restrict(request.user, 'view').prefetch_related( + Prefetch('prefixes', queryset=Prefix.objects.restrict(request.user)), + 'tenant', 'site', 'role', + ) + + def prep_table_data(self, request, queryset, parent): + if not get_table_ordering(request, self.table): + return add_available_vlans(queryset, parent) + return queryset + + # # FHRP groups # @@ -1230,112 +1261,3 @@ class ServiceBulkDeleteView(generic.BulkDeleteView): queryset = Service.objects.prefetch_related('device', 'virtual_machine') filterset = filtersets.ServiceFilterSet table = tables.ServiceTable - - -# L2VPN - -class L2VPNListView(generic.ObjectListView): - queryset = L2VPN.objects.all() - table = L2VPNTable - filterset = filtersets.L2VPNFilterSet - filterset_form = forms.L2VPNFilterForm - - -@register_model_view(L2VPN) -class L2VPNView(generic.ObjectView): - queryset = L2VPN.objects.all() - - def get_extra_context(self, request, instance): - import_targets_table = tables.RouteTargetTable( - instance.import_targets.prefetch_related('tenant'), - orderable=False - ) - export_targets_table = tables.RouteTargetTable( - instance.export_targets.prefetch_related('tenant'), - orderable=False - ) - - return { - 'import_targets_table': import_targets_table, - 'export_targets_table': export_targets_table, - } - - -@register_model_view(L2VPN, 'edit') -class L2VPNEditView(generic.ObjectEditView): - queryset = L2VPN.objects.all() - form = forms.L2VPNForm - - -@register_model_view(L2VPN, 'delete') -class L2VPNDeleteView(generic.ObjectDeleteView): - queryset = L2VPN.objects.all() - - -class L2VPNBulkImportView(generic.BulkImportView): - queryset = L2VPN.objects.all() - model_form = forms.L2VPNImportForm - - -class L2VPNBulkEditView(generic.BulkEditView): - queryset = L2VPN.objects.all() - filterset = filtersets.L2VPNFilterSet - table = tables.L2VPNTable - form = forms.L2VPNBulkEditForm - - -class L2VPNBulkDeleteView(generic.BulkDeleteView): - queryset = L2VPN.objects.all() - filterset = filtersets.L2VPNFilterSet - table = tables.L2VPNTable - - -@register_model_view(L2VPN, 'contacts') -class L2VPNContactsView(ObjectContactsView): - queryset = L2VPN.objects.all() - - -# -# L2VPN terminations -# - -class L2VPNTerminationListView(generic.ObjectListView): - queryset = L2VPNTermination.objects.all() - table = L2VPNTerminationTable - filterset = filtersets.L2VPNTerminationFilterSet - filterset_form = forms.L2VPNTerminationFilterForm - - -@register_model_view(L2VPNTermination) -class L2VPNTerminationView(generic.ObjectView): - queryset = L2VPNTermination.objects.all() - - -@register_model_view(L2VPNTermination, 'edit') -class L2VPNTerminationEditView(generic.ObjectEditView): - queryset = L2VPNTermination.objects.all() - form = forms.L2VPNTerminationForm - template_name = 'ipam/l2vpntermination_edit.html' - - -@register_model_view(L2VPNTermination, 'delete') -class L2VPNTerminationDeleteView(generic.ObjectDeleteView): - queryset = L2VPNTermination.objects.all() - - -class L2VPNTerminationBulkImportView(generic.BulkImportView): - queryset = L2VPNTermination.objects.all() - model_form = forms.L2VPNTerminationImportForm - - -class L2VPNTerminationBulkEditView(generic.BulkEditView): - queryset = L2VPNTermination.objects.all() - filterset = filtersets.L2VPNTerminationFilterSet - table = tables.L2VPNTerminationTable - form = forms.L2VPNTerminationBulkEditForm - - -class L2VPNTerminationBulkDeleteView(generic.BulkDeleteView): - queryset = L2VPNTermination.objects.all() - filterset = filtersets.L2VPNTerminationFilterSet - table = tables.L2VPNTerminationTable diff --git a/netbox/netbox/api/fields.py b/netbox/netbox/api/fields.py index 347ed55bd..d6e43ea75 100644 --- a/netbox/netbox/api/fields.py +++ b/netbox/netbox/api/fields.py @@ -46,12 +46,13 @@ class ChoiceField(serializers.Field): return super().validate_empty_values(data) def to_representation(self, obj): - if obj == '': - return None - return { - 'value': obj, - 'label': self._choices[obj], - } + if obj != '': + # Use an empty string in place of the choice label if it cannot be resolved (i.e. because a previously + # configured choice has been removed from FIELD_CHOICES). + return { + 'value': obj, + 'label': self._choices.get(obj, ''), + } def to_internal_value(self, data): if data == '': diff --git a/netbox/netbox/api/serializers/base.py b/netbox/netbox/api/serializers/base.py index 5ee74bf8c..d513c8000 100644 --- a/netbox/netbox/api/serializers/base.py +++ b/netbox/netbox/api/serializers/base.py @@ -23,16 +23,16 @@ class ValidatedModelSerializer(BaseModelSerializer): validation. (DRF does not do this by default; see https://github.com/encode/django-rest-framework/issues/3144) """ def validate(self, data): - - # Remove custom fields data and tags (if any) prior to model validation attrs = data.copy() + + # Remove custom field data (if any) prior to model validation attrs.pop('custom_fields', None) - attrs.pop('tags', None) # Skip ManyToManyFields - for field in self.Meta.model._meta.get_fields(): - if isinstance(field, ManyToManyField): - attrs.pop(field.name, None) + m2m_values = {} + for field in self.Meta.model._meta.local_many_to_many: + if field.name in attrs: + m2m_values[field.name] = attrs.pop(field.name) # Run clean() on an instance of the model if self.instance is None: @@ -41,6 +41,7 @@ class ValidatedModelSerializer(BaseModelSerializer): instance = self.instance for k, v in attrs.items(): setattr(instance, k, v) + instance._m2m_values = m2m_values instance.full_clean() return data diff --git a/netbox/netbox/api/views.py b/netbox/netbox/api/views.py index 97f690762..cfbe82f14 100644 --- a/netbox/netbox/api/views.py +++ b/netbox/netbox/api/views.py @@ -11,7 +11,7 @@ from rest_framework.reverse import reverse from rest_framework.views import APIView from rq.worker import Worker -from extras.plugins.utils import get_installed_plugins +from netbox.plugins.utils import get_installed_plugins from netbox.api.authentication import IsAuthenticatedOrLoginNotRequired @@ -39,6 +39,7 @@ class APIRootView(APIView): 'tenancy': reverse('tenancy-api:api-root', request=request, format=format), 'users': reverse('users-api:api-root', request=request, format=format), 'virtualization': reverse('virtualization-api:api-root', request=request, format=format), + 'vpn': reverse('vpn-api:api-root', request=request, format=format), 'wireless': reverse('wireless-api:api-root', request=request, format=format), }) diff --git a/netbox/netbox/api/viewsets/__init__.py b/netbox/netbox/api/viewsets/__init__.py index 5fe81b1f5..522bcf77b 100644 --- a/netbox/netbox/api/viewsets/__init__.py +++ b/netbox/netbox/api/viewsets/__init__.py @@ -2,7 +2,9 @@ import logging from django.core.exceptions import ObjectDoesNotExist, PermissionDenied from django.db import transaction -from django.db.models import ProtectedError +from django.db.models import ProtectedError, RestrictedError +from django_pglocks import advisory_lock +from netbox.constants import ADVISORY_LOCK_KEYS from rest_framework import mixins as drf_mixins from rest_framework.response import Response from rest_framework.viewsets import GenericViewSet @@ -89,8 +91,11 @@ class NetBoxModelViewSet( try: return super().dispatch(request, *args, **kwargs) - except ProtectedError as e: - protected_objects = list(e.protected_objects) + except (ProtectedError, RestrictedError) as e: + if type(e) is ProtectedError: + protected_objects = list(e.protected_objects) + else: + protected_objects = list(e.restricted_objects) msg = f'Unable to delete object. {len(protected_objects)} dependent objects were found: ' msg += ', '.join([f'{obj} ({obj.pk})' for obj in protected_objects]) logger.warning(msg) @@ -157,3 +162,22 @@ class NetBoxModelViewSet( logger.info(f"Deleting {model._meta.verbose_name} {instance} (PK: {instance.pk})") return super().perform_destroy(instance) + + +class MPTTLockedMixin: + """ + Puts pglock on objects that derive from MPTTModel for parallel API calling. + Note: If adding this to a view, must add the model name to ADVISORY_LOCK_KEYS + """ + + def create(self, request, *args, **kwargs): + with advisory_lock(ADVISORY_LOCK_KEYS[self.queryset.model._meta.model_name]): + return super().create(request, *args, **kwargs) + + def update(self, request, *args, **kwargs): + with advisory_lock(ADVISORY_LOCK_KEYS[self.queryset.model._meta.model_name]): + return super().update(request, *args, **kwargs) + + def destroy(self, request, *args, **kwargs): + with advisory_lock(ADVISORY_LOCK_KEYS[self.queryset.model._meta.model_name]): + return super().destroy(request, *args, **kwargs) diff --git a/netbox/netbox/api/viewsets/mixins.py b/netbox/netbox/api/viewsets/mixins.py index fde486fe9..a45e0bdda 100644 --- a/netbox/netbox/api/viewsets/mixins.py +++ b/netbox/netbox/api/viewsets/mixins.py @@ -56,8 +56,15 @@ class BriefModeMixin: def get_queryset(self): qs = super().get_queryset() - # If using brief mode, clear all prefetches from the queryset and append only brief_prefetch_fields (if any) if self.brief: + serializer_class = self.get_serializer_class() + + # Clear any annotations for fields not present on the nested serializer + for annotation in list(qs.query.annotations.keys()): + if annotation not in serializer_class().fields: + qs.query.annotations.pop(annotation) + + # Clear any prefetches from the queryset and append only brief_prefetch_fields (if any) return qs.prefetch_related(None).prefetch_related(*self.brief_prefetch_fields) return qs @@ -137,11 +144,14 @@ class BulkUpdateModelMixin: } ] """ + def get_bulk_update_queryset(self): + return self.get_queryset() + def bulk_update(self, request, *args, **kwargs): partial = kwargs.pop('partial', False) serializer = BulkOperationSerializer(data=request.data, many=True) serializer.is_valid(raise_exception=True) - qs = self.get_queryset().filter( + qs = self.get_bulk_update_queryset().filter( pk__in=[o['id'] for o in serializer.data] ) @@ -184,10 +194,13 @@ class BulkDestroyModelMixin: {"id": 456} ] """ + def get_bulk_destroy_queryset(self): + return self.get_queryset() + def bulk_destroy(self, request, *args, **kwargs): serializer = BulkOperationSerializer(data=request.data, many=True) serializer.is_valid(raise_exception=True) - qs = self.get_queryset().filter( + qs = self.get_bulk_destroy_queryset().filter( pk__in=[o['id'] for o in serializer.data] ) diff --git a/netbox/netbox/config/__init__.py b/netbox/netbox/config/__init__.py index a9a93636c..c536ceadb 100644 --- a/netbox/netbox/config/__init__.py +++ b/netbox/netbox/config/__init__.py @@ -74,7 +74,7 @@ class Config: def _populate_from_db(self): """Cache data from latest ConfigRevision, then populate from cache""" - from extras.models import ConfigRevision + from core.models import ConfigRevision try: revision = ConfigRevision.objects.last() diff --git a/netbox/netbox/config/parameters.py b/netbox/netbox/config/parameters.py index 9c613217c..54c9027cc 100644 --- a/netbox/netbox/config/parameters.py +++ b/netbox/netbox/config/parameters.py @@ -66,7 +66,7 @@ PARAMS = ( ConfigParam( name='ENFORCE_GLOBAL_UNIQUE', label=_('Globally unique IP space'), - default=False, + default=True, description=_("Enforce unique IP addressing within the global table"), field=forms.BooleanField ), @@ -102,7 +102,6 @@ PARAMS = ( description=_("Default voltage for powerfeeds"), field=forms.IntegerField ), - ConfigParam( name='POWERFEED_DEFAULT_AMPERAGE', label=_('Powerfeed amperage'), @@ -110,7 +109,6 @@ PARAMS = ( description=_("Default amperage for powerfeeds"), field=forms.IntegerField ), - ConfigParam( name='POWERFEED_DEFAULT_MAX_UTILIZATION', label=_('Powerfeed max utilization'), @@ -154,42 +152,17 @@ PARAMS = ( description=_("Custom validation rules (JSON)"), field=forms.JSONField, field_kwargs={ - 'widget': forms.Textarea( - attrs={'class': 'vLargeTextField'} - ), + 'widget': forms.Textarea(), }, ), - - # NAPALM ConfigParam( - name='NAPALM_USERNAME', - label=_('NAPALM username'), - default='', - description=_("Username to use when connecting to devices via NAPALM") - ), - ConfigParam( - name='NAPALM_PASSWORD', - label=_('NAPALM password'), - default='', - description=_("Password to use when connecting to devices via NAPALM") - ), - ConfigParam( - name='NAPALM_TIMEOUT', - label=_('NAPALM timeout'), - default=30, - description=_("NAPALM connection timeout (in seconds)"), - field=forms.IntegerField - ), - ConfigParam( - name='NAPALM_ARGS', - label=_('NAPALM arguments'), + name='PROTECTION_RULES', + label=_('Protection rules'), default={}, - description=_("Additional arguments to pass when invoking a NAPALM driver (as JSON data)"), + description=_("Deletion protection rules (JSON)"), field=forms.JSONField, field_kwargs={ - 'widget': forms.Textarea( - attrs={'class': 'vLargeTextField'} - ), + 'widget': forms.Textarea(), }, ), diff --git a/netbox/netbox/configuration_testing.py b/netbox/netbox/configuration_testing.py index 18a3c2afa..cec05cabb 100644 --- a/netbox/netbox/configuration_testing.py +++ b/netbox/netbox/configuration_testing.py @@ -15,7 +15,7 @@ DATABASE = { } PLUGINS = [ - 'extras.tests.dummy_plugin', + 'netbox.tests.dummy_plugin', ] REDIS = { diff --git a/netbox/netbox/constants.py b/netbox/netbox/constants.py index d69edc69c..faddf8c21 100644 --- a/netbox/netbox/constants.py +++ b/netbox/netbox/constants.py @@ -11,8 +11,28 @@ RQ_QUEUE_LOW = 'low' # When adding a new key, pick something arbitrary and unique so that it is easily searchable in # query logs. ADVISORY_LOCK_KEYS = { + # Available object locks 'available-prefixes': 100100, 'available-ips': 100200, 'available-vlans': 100300, 'available-asns': 100400, + + # MPTT locks + 'region': 105100, + 'sitegroup': 105200, + 'location': 105300, + 'tenantgroup': 105400, + 'contactgroup': 105500, + 'wirelesslangroup': 105600, + 'inventoryitem': 105700, + 'inventoryitemtemplate': 105800, +} + +# Default view action permission mapping +DEFAULT_ACTION_PERMISSIONS = { + 'add': {'add'}, + 'import': {'add'}, + 'export': {'view'}, + 'bulk_edit': {'change'}, + 'bulk_delete': {'delete'}, } diff --git a/netbox/netbox/context.py b/netbox/netbox/context.py index 5461a4e94..56e41cb63 100644 --- a/netbox/netbox/context.py +++ b/netbox/netbox/context.py @@ -2,9 +2,9 @@ from contextvars import ContextVar __all__ = ( 'current_request', - 'webhooks_queue', + 'events_queue', ) current_request = ContextVar('current_request', default=None) -webhooks_queue = ContextVar('webhooks_queue', default=[]) +events_queue = ContextVar('events_queue', default=[]) diff --git a/netbox/netbox/data_backends.py b/netbox/netbox/data_backends.py new file mode 100644 index 000000000..d5bab75c1 --- /dev/null +++ b/netbox/netbox/data_backends.py @@ -0,0 +1,53 @@ +from contextlib import contextmanager +from urllib.parse import urlparse + +__all__ = ( + 'DataBackend', +) + + +class DataBackend: + """ + A data backend represents a specific system of record for data, such as a git repository or Amazon S3 bucket. + + Attributes: + name: The identifier under which this backend will be registered in NetBox + label: The human-friendly name for this backend + is_local: A boolean indicating whether this backend accesses local data + parameters: A dictionary mapping configuration form field names to their classes + sensitive_parameters: An iterable of field names for which the values should not be displayed to the user + """ + is_local = False + parameters = {} + sensitive_parameters = [] + + # Prevent Django's template engine from calling the backend + # class when referenced via DataSource.backend_class + do_not_call_in_templates = True + + def __init__(self, url, **kwargs): + self.url = url + self.params = kwargs + self.config = self.init_config() + + def init_config(self): + """ + A hook to initialize the instance's configuration. The data returned by this method is assigned to the + instance's `config` attribute upon initialization, which can be referenced by the `fetch()` method. + """ + return + + @property + def url_scheme(self): + return urlparse(self.url).scheme.lower() + + @contextmanager + def fetch(self): + """ + A context manager which performs the following: + + 1. Handles all setup and synchronization + 2. Yields the local path at which data has been replicated + 3. Performs any necessary cleanup + """ + raise NotImplemented() diff --git a/netbox/netbox/filtersets.py b/netbox/netbox/filtersets.py index 9a2385c45..ebb98d15f 100644 --- a/netbox/netbox/filtersets.py +++ b/netbox/netbox/filtersets.py @@ -246,18 +246,22 @@ class ChangeLoggedModelFilterSet(BaseFilterSet): updated_by_request = django_filters.UUIDFilter( method='filter_by_request' ) + modified_by_request = django_filters.UUIDFilter( + method='filter_by_request' + ) def filter_by_request(self, queryset, name, value): content_type = ContentType.objects.get_for_model(self.Meta.model) action = { - 'created_by_request': ObjectChangeActionChoices.ACTION_CREATE, - 'updated_by_request': ObjectChangeActionChoices.ACTION_UPDATE, + 'created_by_request': Q(action=ObjectChangeActionChoices.ACTION_CREATE), + 'updated_by_request': Q(action=ObjectChangeActionChoices.ACTION_UPDATE), + 'modified_by_request': Q(action__in=[ObjectChangeActionChoices.ACTION_CREATE, ObjectChangeActionChoices.ACTION_UPDATE]), }.get(name) request_id = value pks = ObjectChange.objects.filter( + action, changed_object_type=content_type, - action=action, - request_id=request_id + request_id=request_id, ).values_list('changed_object_id', flat=True) return queryset.filter(pk__in=pks) @@ -311,5 +315,6 @@ class OrganizationalModelFilterSet(NetBoxModelFilterSet): return queryset return queryset.filter( models.Q(name__icontains=value) | - models.Q(slug__icontains=value) + models.Q(slug__icontains=value) | + models.Q(description__icontains=value) ) diff --git a/netbox/netbox/forms/base.py b/netbox/netbox/forms/base.py index c5dac90f7..0b0e2036e 100644 --- a/netbox/netbox/forms/base.py +++ b/netbox/netbox/forms/base.py @@ -3,11 +3,12 @@ from django.contrib.contenttypes.models import ContentType from django.db.models import Q from django.utils.translation import gettext_lazy as _ -from extras.choices import CustomFieldFilterLogicChoices, CustomFieldTypeChoices, CustomFieldVisibilityChoices -from extras.forms.mixins import CustomFieldsMixin, SavedFiltersMixin +from extras.choices import * from extras.models import CustomField, Tag -from utilities.forms import BootstrapMixin, CSVModelForm, CheckLastUpdatedMixin +from utilities.forms import CSVModelForm from utilities.forms.fields import CSVModelMultipleChoiceField, DynamicModelMultipleChoiceField +from utilities.forms.mixins import BootstrapMixin, CheckLastUpdatedMixin +from .mixins import CustomFieldsMixin, SavedFiltersMixin, TagsMixin __all__ = ( 'NetBoxModelForm', @@ -17,7 +18,7 @@ __all__ = ( ) -class NetBoxModelForm(BootstrapMixin, CheckLastUpdatedMixin, CustomFieldsMixin, forms.ModelForm): +class NetBoxModelForm(BootstrapMixin, CheckLastUpdatedMixin, CustomFieldsMixin, TagsMixin, forms.ModelForm): """ Base form for creating & editing NetBox models. Extends Django's ModelForm to add support for custom fields. @@ -26,18 +27,6 @@ class NetBoxModelForm(BootstrapMixin, CheckLastUpdatedMixin, CustomFieldsMixin, the rendered form (optional). If not defined, the all fields will be rendered as a single section. """ fieldsets = () - tags = DynamicModelMultipleChoiceField( - queryset=Tag.objects.all(), - required=False, - label=_('Tags'), - ) - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # Limit tags to those applicable to the object type - if (ct := self._get_content_type()) and hasattr(self.fields['tags'].widget, 'add_query_param'): - self.fields['tags'].widget.add_query_param('for_object_type_id', ct.pk) def _get_content_type(self): return ContentType.objects.get_for_model(self._meta.model) @@ -68,6 +57,17 @@ class NetBoxModelForm(BootstrapMixin, CheckLastUpdatedMixin, CustomFieldsMixin, return super().clean() + def _post_clean(self): + """ + Override BaseModelForm's _post_clean() to store many-to-many field values on the model instance. + """ + self.instance._m2m_values = {} + for field in self.instance._meta.local_many_to_many: + if field.name in self.cleaned_data: + self.instance._m2m_values[field.name] = list(self.cleaned_data[field.name]) + + return super()._post_clean() + class NetBoxModelImportForm(CSVModelForm, NetBoxModelForm): """ @@ -87,11 +87,9 @@ class NetBoxModelImportForm(CSVModelForm, NetBoxModelForm): ) def _get_custom_fields(self, content_type): - return CustomField.objects.filter(content_types=content_type).filter( - ui_visibility__in=[ - CustomFieldVisibilityChoices.VISIBILITY_READ_WRITE, - CustomFieldVisibilityChoices.VISIBILITY_HIDDEN_IFUNSET, - ] + return CustomField.objects.filter( + content_types=content_type, + ui_editable=CustomFieldUIEditableChoices.YES ) def _get_form_field(self, customfield): @@ -142,7 +140,8 @@ class NetBoxModelBulkEditForm(BootstrapMixin, CustomFieldsMixin, forms.Form): def _extend_nullable_fields(self): nullable_custom_fields = [ - name for name, customfield in self.custom_fields.items() if (not customfield.required and customfield.ui_visibility == CustomFieldVisibilityChoices.VISIBILITY_READ_WRITE) + name for name, customfield in self.custom_fields.items() + if (not customfield.required and customfield.ui_editable == CustomFieldUIEditableChoices.YES) ] self.nullable_fields = (*self.nullable_fields, *nullable_custom_fields) @@ -156,12 +155,16 @@ class NetBoxModelFilterSetForm(BootstrapMixin, CustomFieldsMixin, SavedFiltersMi model: The model class associated with the form fieldsets: An iterable of two-tuples which define a heading and field set to display per section of the rendered form (optional). If not defined, the all fields will be rendered as a single section. + selector_fields: An iterable of names of fields to display by default when rendering the form as + a selector widget """ q = forms.CharField( required=False, label=_('Search') ) + selector_fields = ('filter_id', 'q') + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/netbox/extras/forms/mixins.py b/netbox/netbox/forms/mixins.py similarity index 76% rename from netbox/extras/forms/mixins.py rename to netbox/netbox/forms/mixins.py index be45f5211..d76eb56c8 100644 --- a/netbox/extras/forms/mixins.py +++ b/netbox/netbox/forms/mixins.py @@ -2,13 +2,14 @@ from django import forms from django.contrib.contenttypes.models import ContentType from django.utils.translation import gettext as _ -from extras.choices import CustomFieldVisibilityChoices +from extras.choices import * from extras.models import * from utilities.forms.fields import DynamicModelMultipleChoiceField __all__ = ( 'CustomFieldsMixin', 'SavedFiltersMixin', + 'TagsMixin', ) @@ -39,7 +40,7 @@ class CustomFieldsMixin: def _get_custom_fields(self, content_type): return CustomField.objects.filter(content_types=content_type).exclude( - ui_visibility=CustomFieldVisibilityChoices.VISIBILITY_HIDDEN + ui_editable=CustomFieldUIEditableChoices.HIDDEN ) def _get_form_field(self, customfield): @@ -50,9 +51,6 @@ class CustomFieldsMixin: Append form fields for all CustomFields assigned to this object type. """ for customfield in self._get_custom_fields(self._get_content_type()): - if customfield.ui_visibility == CustomFieldVisibilityChoices.VISIBILITY_HIDDEN: - continue - field_name = f'cf_{customfield.name}' self.fields[field_name] = self._get_form_field(customfield) @@ -72,3 +70,19 @@ class SavedFiltersMixin(forms.Form): 'usable': True, } ) + + +class TagsMixin(forms.Form): + tags = DynamicModelMultipleChoiceField( + queryset=Tag.objects.all(), + required=False, + label=_('Tags'), + ) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Limit tags to those applicable to the object type + content_type = ContentType.objects.get_for_model(self._meta.model) + if content_type and hasattr(self.fields['tags'].widget, 'add_query_param'): + self.fields['tags'].widget.add_query_param('for_object_type_id', content_type.pk) diff --git a/netbox/netbox/graphql/schema.py b/netbox/netbox/graphql/schema.py index 02737b819..6a9e13d1c 100644 --- a/netbox/netbox/graphql/schema.py +++ b/netbox/netbox/graphql/schema.py @@ -3,12 +3,31 @@ from strawberry_django.optimizer import DjangoOptimizerExtension from strawberry.schema.config import StrawberryConfig from circuits.graphql.schema import CircuitsQuery from users.graphql.schema import UsersQuery +# from virtualization.graphql.schema import VirtualizationQuery +# from vpn.graphql.schema import VPNQuery +# from wireless.graphql.schema import WirelessQuery @strawberry.type class Query(CircuitsQuery, UsersQuery): pass +# class Query( +# UsersQuery, +# CircuitsQuery, +# CoreQuery, +# DCIMQuery, +# ExtrasQuery, +# IPAMQuery, +# TenancyQuery, +# VirtualizationQuery, +# VPNQuery, +# WirelessQuery, +# *registry['plugins']['graphql_schemas'], # Append plugin schemas +# graphene.ObjectType +# ): +# pass + schema = strawberry.Schema( query=Query, diff --git a/netbox/netbox/middleware.py b/netbox/netbox/middleware.py index 18f350fd7..cb7d2c8ba 100644 --- a/netbox/netbox/middleware.py +++ b/netbox/netbox/middleware.py @@ -10,7 +10,7 @@ from django.db import connection, ProgrammingError from django.db.utils import InternalError from django.http import Http404, HttpResponseRedirect -from extras.context_managers import change_logging +from extras.context_managers import event_tracking from netbox.config import clear_config, get_config from netbox.views import handler_500 from utilities.api import is_api_request, rest_api_server_error @@ -42,8 +42,8 @@ class CoreMiddleware: login_url = f'{settings.LOGIN_URL}?next={parse.quote(request.get_full_path_info())}' return HttpResponseRedirect(login_url) - # Enable the change_logging context manager and process the request. - with change_logging(request): + # Enable the event_tracking context manager and process the request. + with event_tracking(request): response = self.get_response(request) # Attach the unique request ID as an HTTP header. diff --git a/netbox/netbox/models/__init__.py b/netbox/netbox/models/__init__.py index 596357ea4..2c262b258 100644 --- a/netbox/netbox/models/__init__.py +++ b/netbox/netbox/models/__init__.py @@ -1,5 +1,6 @@ from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey +from django.core.exceptions import ObjectDoesNotExist from django.core.validators import ValidationError from django.db import models from django.utils.translation import gettext_lazy as _ @@ -29,7 +30,7 @@ class NetBoxFeatureSet( ExportTemplatesMixin, JournalingMixin, TagsMixin, - WebhooksMixin + EventRulesMixin ): class Meta: abstract = True @@ -43,7 +44,7 @@ class NetBoxFeatureSet( # Base model classes # -class ChangeLoggedModel(ChangeLoggingMixin, CustomValidationMixin, WebhooksMixin, models.Model): +class ChangeLoggedModel(ChangeLoggingMixin, CustomValidationMixin, EventRulesMixin, models.Model): """ Base model for ancillary models; provides limited functionality for models which don't support NetBox's full feature set. @@ -85,11 +86,16 @@ class NetBoxModel(NetBoxFeatureSet, models.Model): if ct_value and fk_value: klass = getattr(self, field.ct_field).model_class() - if not klass.objects.filter(pk=fk_value).exists(): + try: + obj = klass.objects.get(pk=fk_value) + except ObjectDoesNotExist: raise ValidationError({ field.fk_field: f"Related object not found using the provided value: {fk_value}." }) + # update the GFK field value + setattr(self, field.name, obj) + # # NetBox internal base models diff --git a/netbox/netbox/models/features.py b/netbox/netbox/models/features.py index cce265efc..0cba27318 100644 --- a/netbox/netbox/models/features.py +++ b/netbox/netbox/models/features.py @@ -3,7 +3,6 @@ from collections import defaultdict from functools import cached_property from django.contrib.contenttypes.fields import GenericRelation -from django.contrib.contenttypes.models import ContentType from django.core.validators import ValidationError from django.db import models from django.db.models.signals import class_prepared @@ -13,8 +12,10 @@ from django.utils.translation import gettext_lazy as _ from taggit.managers import TaggableManager from core.choices import JobStatusChoices -from extras.choices import CustomFieldVisibilityChoices, ObjectChangeActionChoices +from core.models import ContentType +from extras.choices import * from extras.utils import is_taggable, register_features +from netbox.config import get_config from netbox.registry import registry from netbox.signals import post_clean from utilities.json import CustomFieldJSONEncoder @@ -35,7 +36,7 @@ __all__ = ( 'JournalingMixin', 'SyncedDataMixin', 'TagsMixin', - 'WebhooksMixin', + 'EventRulesMixin', ) @@ -63,19 +64,26 @@ class ChangeLoggingMixin(models.Model): class Meta: abstract = True - def serialize_object(self): + def serialize_object(self, exclude=None): """ Return a JSON representation of the instance. Models can override this method to replace or extend the default serialization logic provided by the `serialize_object()` utility function. + + Args: + exclude: An iterable of attribute names to omit from the serialized output """ - return serialize_object(self) + return serialize_object(self, exclude=exclude or []) def snapshot(self): """ Save a snapshot of the object's current state in preparation for modification. The snapshot is saved as `_prechange_snapshot` on the instance. """ - self._prechange_snapshot = self.serialize_object() + exclude_fields = [] + if get_config().CHANGELOG_SKIP_EMPTY_CHANGES: + exclude_fields = ['last_updated',] + + self._prechange_snapshot = self.serialize_object(exclude=exclude_fields) snapshot.alters_data = True def to_objectchange(self, action): @@ -84,6 +92,11 @@ class ChangeLoggingMixin(models.Model): by ChangeLoggingMiddleware. """ from extras.models import ObjectChange + + exclude = [] + if get_config().CHANGELOG_SKIP_EMPTY_CHANGES: + exclude = ['last_updated'] + objectchange = ObjectChange( changed_object=self, object_repr=str(self)[:200], @@ -92,7 +105,7 @@ class ChangeLoggingMixin(models.Model): if hasattr(self, '_prechange_snapshot'): objectchange.prechange_data = self._prechange_snapshot if action in (ObjectChangeActionChoices.ACTION_CREATE, ObjectChangeActionChoices.ACTION_UPDATE): - objectchange.postchange_data = self.serialize_object() + objectchange.postchange_data = self.serialize_object(exclude=exclude) return objectchange @@ -205,12 +218,11 @@ class CustomFieldsMixin(models.Model): for field in CustomField.objects.get_for_model(self): value = self.custom_field_data.get(field.name) - # Skip fields that are hidden if 'omit_hidden' is set - if omit_hidden: - if field.ui_visibility == CustomFieldVisibilityChoices.VISIBILITY_HIDDEN: - continue - if field.ui_visibility == CustomFieldVisibilityChoices.VISIBILITY_HIDDEN_IFUNSET and not value: - continue + # Skip hidden fields if 'omit_hidden' is True + if omit_hidden and field.ui_visible == CustomFieldUIVisibleChoices.HIDDEN: + continue + elif omit_hidden and field.ui_visible == CustomFieldUIVisibleChoices.IF_SET and not value: + continue data[field] = field.deserialize(value) @@ -232,12 +244,12 @@ class CustomFieldsMixin(models.Model): from extras.models import CustomField groups = defaultdict(dict) visible_custom_fields = CustomField.objects.get_for_model(self).exclude( - ui_visibility=CustomFieldVisibilityChoices.VISIBILITY_HIDDEN + ui_visible=CustomFieldUIVisibleChoices.HIDDEN ) for cf in visible_custom_fields: value = self.custom_field_data.get(cf.name) - if value in (None, []) and cf.ui_visibility == CustomFieldVisibilityChoices.VISIBILITY_HIDDEN_IFUNSET: + if value in (None, '', []) and cf.ui_visible == CustomFieldUIVisibleChoices.IF_SET: continue value = cf.deserialize(value) groups[cf.group_name][cf] = value @@ -401,9 +413,9 @@ class TagsMixin(models.Model): abstract = True -class WebhooksMixin(models.Model): +class EventRulesMixin(models.Model): """ - Enables support for webhooks. + Enables support for event rules, which can be used to transmit webhooks or execute scripts automatically. """ class Meta: abstract = True @@ -556,7 +568,7 @@ FEATURES_MAP = { 'journaling': JournalingMixin, 'synced_data': SyncedDataMixin, 'tags': TagsMixin, - 'webhooks': WebhooksMixin, + 'event_rules': EventRulesMixin, } registry['model_features'].update({ diff --git a/netbox/netbox/navigation/__init__.py b/netbox/netbox/navigation/__init__.py index a05b1c495..4c7190bbb 100644 --- a/netbox/netbox/navigation/__init__.py +++ b/netbox/netbox/navigation/__init__.py @@ -34,6 +34,7 @@ class MenuItem: link: str link_text: str permissions: Optional[Sequence[str]] = () + staff_only: Optional[bool] = False buttons: Optional[Sequence[MenuItemButton]] = () diff --git a/netbox/netbox/navigation/menu.py b/netbox/netbox/navigation/menu.py index 6b883c838..d4969386e 100644 --- a/netbox/netbox/navigation/menu.py +++ b/netbox/netbox/navigation/menu.py @@ -1,4 +1,4 @@ -from django.utils.translation import gettext as _ +from django.utils.translation import gettext_lazy as _ from netbox.registry import registry from utilities.choices import ButtonColorChoices @@ -195,15 +195,33 @@ IPAM_MENU = Menu( ), ) -OVERLAY_MENU = Menu( - label=_('Overlay'), +VPN_MENU = Menu( + label=_('VPN'), icon_class='mdi mdi-graph-outline', groups=( MenuGroup( - label='L2VPNs', + label=_('Tunnels'), items=( - get_model_item('ipam', 'l2vpn', _('L2VPNs')), - get_model_item('ipam', 'l2vpntermination', _('Terminations')), + get_model_item('vpn', 'tunnel', _('Tunnels')), + get_model_item('vpn', 'tunnelgroup', _('Tunnel Groups')), + get_model_item('vpn', 'tunneltermination', _('Tunnel Terminations')), + ), + ), + MenuGroup( + label=_('L2VPNs'), + items=( + get_model_item('vpn', 'l2vpn', _('L2VPNs')), + get_model_item('vpn', 'l2vpntermination', _('Terminations')), + ), + ), + MenuGroup( + label=_('Security'), + items=( + get_model_item('vpn', 'ikeproposal', _('IKE Proposals')), + get_model_item('vpn', 'ikepolicy', _('IKE Policies')), + get_model_item('vpn', 'ipsecproposal', _('IPSec Proposals')), + get_model_item('vpn', 'ipsecpolicy', _('IPSec Policies')), + get_model_item('vpn', 'ipsecprofile', _('IPSec Profiles')), ), ), ), @@ -218,6 +236,7 @@ VIRTUALIZATION_MENU = Menu( items=( get_model_item('virtualization', 'virtualmachine', _('Virtual Machines')), get_model_item('virtualization', 'vminterface', _('Interfaces')), + get_model_item('virtualization', 'virtualdisk', _('Virtual Disks')), ), ), MenuGroup( @@ -325,6 +344,7 @@ OPERATIONS_MENU = Menu( label=_('Integrations'), items=( get_model_item('core', 'datasource', _('Data Sources')), + get_model_item('extras', 'eventrule', _('Event Rules')), get_model_item('extras', 'webhook', _('Webhooks')), ), ), @@ -360,6 +380,7 @@ ADMIN_MENU = Menu( link=f'users:netboxuser_list', link_text=_('Users'), permissions=[f'auth.view_user'], + staff_only=True, buttons=( MenuItemButton( link=f'users:netboxuser_add', @@ -382,6 +403,7 @@ ADMIN_MENU = Menu( link=f'users:netboxgroup_list', link_text=_('Groups'), permissions=[f'auth.view_group'], + staff_only=True, buttons=( MenuItemButton( link=f'users:netboxgroup_add', @@ -399,17 +421,36 @@ ADMIN_MENU = Menu( ) ) ), - get_model_item('users', 'token', _('API Tokens')), - get_model_item('users', 'objectpermission', _('Permissions'), actions=['add']), + MenuItem( + link=f'users:token_list', + link_text=_('API Tokens'), + permissions=[f'users.view_token'], + staff_only=True, + buttons=get_model_buttons('users', 'token') + ), + MenuItem( + link=f'users:objectpermission_list', + link_text=_('Permissions'), + permissions=[f'users.view_objectpermission'], + staff_only=True, + buttons=get_model_buttons('users', 'objectpermission', actions=['add']) + ), ), ), MenuGroup( label=_('Configuration'), items=( MenuItem( - link='extras:configrevision_list', + link='core:config', + link_text=_('Current Config'), + permissions=['core.view_configrevision'], + staff_only=True + ), + MenuItem( + link='core:configrevision_list', link_text=_('Config Revisions'), - permissions=['extras.view_configrevision'] + permissions=['core.view_configrevision'], + staff_only=True ), ), ), @@ -422,7 +463,7 @@ MENUS = [ CONNECTIONS_MENU, WIRELESS_MENU, IPAM_MENU, - OVERLAY_MENU, + VPN_MENU, VIRTUALIZATION_MENU, CIRCUITS_MENU, POWER_MENU, diff --git a/netbox/netbox/plugins/__init__.py b/netbox/netbox/plugins/__init__.py new file mode 100644 index 000000000..8b6901b7a --- /dev/null +++ b/netbox/netbox/plugins/__init__.py @@ -0,0 +1,156 @@ +import collections +from importlib import import_module + +from django.apps import AppConfig +from django.core.exceptions import ImproperlyConfigured +from django.utils.module_loading import import_string +from packaging import version + +from netbox.registry import registry +from netbox.search import register_search +from netbox.utils import register_data_backend +from .navigation import * +from .registration import * +from .templates import * +from .utils import * + +# Initialize plugin registry +registry['plugins'].update({ + 'graphql_schemas': [], + 'menus': [], + 'menu_items': {}, + 'preferences': {}, + 'template_extensions': collections.defaultdict(list), +}) + +DEFAULT_RESOURCE_PATHS = { + 'search_indexes': 'search.indexes', + 'data_backends': 'data_backends.backends', + 'graphql_schema': 'graphql.schema', + 'menu': 'navigation.menu', + 'menu_items': 'navigation.menu_items', + 'template_extensions': 'template_content.template_extensions', + 'user_preferences': 'preferences.preferences', +} + + +# +# Plugin AppConfig class +# + +class PluginConfig(AppConfig): + """ + Subclass of Django's built-in AppConfig class, to be used for NetBox plugins. + """ + # Plugin metadata + author = '' + author_email = '' + description = '' + version = '' + + # Root URL path under /plugins. If not set, the plugin's label will be used. + base_url = None + + # Minimum/maximum compatible versions of NetBox + min_version = None + max_version = None + + # Default configuration parameters + default_settings = {} + + # Mandatory configuration parameters + required_settings = [] + + # Middleware classes provided by the plugin + middleware = [] + + # Django-rq queues dedicated to the plugin + queues = [] + + # Django apps to append to INSTALLED_APPS when plugin requires them. + django_apps = [] + + # Optional plugin resources + search_indexes = None + data_backends = None + graphql_schema = None + menu = None + menu_items = None + template_extensions = None + user_preferences = None + + def _load_resource(self, name): + # Import from the configured path, if defined. + if path := getattr(self, name, None): + return import_string(f"{self.__module__}.{path}") + + # Fall back to the resource's default path. Return None if the module has not been provided. + default_path = f'{self.__module__}.{DEFAULT_RESOURCE_PATHS[name]}' + default_module, resource_name = default_path.rsplit('.', 1) + try: + module = import_module(default_module) + return getattr(module, resource_name, None) + except ModuleNotFoundError: + pass + + def ready(self): + plugin_name = self.name.rsplit('.', 1)[-1] + + # Register search extensions (if defined) + search_indexes = self._load_resource('search_indexes') or [] + for idx in search_indexes: + register_search(idx) + + # Register data backends (if defined) + data_backends = self._load_resource('data_backends') or [] + for backend in data_backends: + register_data_backend()(backend) + + # Register template content (if defined) + if template_extensions := self._load_resource('template_extensions'): + register_template_extensions(template_extensions) + + # Register navigation menu and/or menu items (if defined) + if menu := self._load_resource('menu'): + register_menu(menu) + if menu_items := self._load_resource('menu_items'): + register_menu_items(self.verbose_name, menu_items) + + # Register GraphQL schema (if defined) + if graphql_schema := self._load_resource('graphql_schema'): + register_graphql_schema(graphql_schema) + + # Register user preferences (if defined) + if user_preferences := self._load_resource('user_preferences'): + register_user_preferences(plugin_name, user_preferences) + + @classmethod + def validate(cls, user_config, netbox_version): + + # Enforce version constraints + current_version = version.parse(netbox_version) + if cls.min_version is not None: + min_version = version.parse(cls.min_version) + if current_version < min_version: + raise ImproperlyConfigured( + f"Plugin {cls.__module__} requires NetBox minimum version {cls.min_version}." + ) + if cls.max_version is not None: + max_version = version.parse(cls.max_version) + if current_version > max_version: + raise ImproperlyConfigured( + f"Plugin {cls.__module__} requires NetBox maximum version {cls.max_version}." + ) + + # Verify required configuration settings + for setting in cls.required_settings: + if setting not in user_config: + raise ImproperlyConfigured( + f"Plugin {cls.__module__} requires '{setting}' to be present in the PLUGINS_CONFIG section of " + f"configuration.py." + ) + + # Apply default configuration values + for setting, value in cls.default_settings.items(): + if setting not in user_config: + user_config[setting] = value diff --git a/netbox/netbox/plugins/navigation.py b/netbox/netbox/plugins/navigation.py new file mode 100644 index 000000000..2075c97b6 --- /dev/null +++ b/netbox/netbox/plugins/navigation.py @@ -0,0 +1,72 @@ +from netbox.navigation import MenuGroup +from utilities.choices import ButtonColorChoices +from django.utils.text import slugify + +__all__ = ( + 'PluginMenu', + 'PluginMenuButton', + 'PluginMenuItem', +) + + +class PluginMenu: + icon_class = 'mdi mdi-puzzle' + + def __init__(self, label, groups, icon_class=None): + self.label = label + self.groups = [ + MenuGroup(label, items) for label, items in groups + ] + if icon_class is not None: + self.icon_class = icon_class + + @property + def name(self): + return slugify(self.label) + + +class PluginMenuItem: + """ + This class represents a navigation menu item. This constitutes primary link and its text, but also allows for + specifying additional link buttons that appear to the right of the item in the van menu. + + Links are specified as Django reverse URL strings. + Buttons are each specified as a list of PluginMenuButton instances. + """ + permissions = [] + buttons = [] + + def __init__(self, link, link_text, staff_only=False, permissions=None, buttons=None): + self.link = link + self.link_text = link_text + self.staff_only = staff_only + if permissions is not None: + if type(permissions) not in (list, tuple): + raise TypeError("Permissions must be passed as a tuple or list.") + self.permissions = permissions + if buttons is not None: + if type(buttons) not in (list, tuple): + raise TypeError("Buttons must be passed as a tuple or list.") + self.buttons = buttons + + +class PluginMenuButton: + """ + This class represents a button within a PluginMenuItem. Note that button colors should come from + ButtonColorChoices. + """ + color = ButtonColorChoices.DEFAULT + permissions = [] + + def __init__(self, link, title, icon_class, color=None, permissions=None): + self.link = link + self.title = title + self.icon_class = icon_class + if permissions is not None: + if type(permissions) not in (list, tuple): + raise TypeError("Permissions must be passed as a tuple or list.") + self.permissions = permissions + if color is not None: + if color not in ButtonColorChoices.values(): + raise ValueError("Button color must be a choice within ButtonColorChoices.") + self.color = color diff --git a/netbox/netbox/plugins/registration.py b/netbox/netbox/plugins/registration.py new file mode 100644 index 000000000..3be538441 --- /dev/null +++ b/netbox/netbox/plugins/registration.py @@ -0,0 +1,64 @@ +import inspect + +from netbox.registry import registry +from .navigation import PluginMenu, PluginMenuButton, PluginMenuItem +from .templates import PluginTemplateExtension + +__all__ = ( + 'register_graphql_schema', + 'register_menu', + 'register_menu_items', + 'register_template_extensions', + 'register_user_preferences', +) + + +def register_template_extensions(class_list): + """ + Register a list of PluginTemplateExtension classes + """ + # Validation + for template_extension in class_list: + if not inspect.isclass(template_extension): + raise TypeError(f"PluginTemplateExtension class {template_extension} was passed as an instance!") + if not issubclass(template_extension, PluginTemplateExtension): + raise TypeError(f"{template_extension} is not a subclass of netbox.plugins.PluginTemplateExtension!") + if template_extension.model is None: + raise TypeError(f"PluginTemplateExtension class {template_extension} does not define a valid model!") + + registry['plugins']['template_extensions'][template_extension.model].append(template_extension) + + +def register_menu(menu): + if not isinstance(menu, PluginMenu): + raise TypeError(f"{menu} must be an instance of netbox.plugins.PluginMenu") + registry['plugins']['menus'].append(menu) + + +def register_menu_items(section_name, class_list): + """ + Register a list of PluginMenuItem instances for a given menu section (e.g. plugin name) + """ + # Validation + for menu_link in class_list: + if not isinstance(menu_link, PluginMenuItem): + raise TypeError(f"{menu_link} must be an instance of netbox.plugins.PluginMenuItem") + for button in menu_link.buttons: + if not isinstance(button, PluginMenuButton): + raise TypeError(f"{button} must be an instance of netbox.plugins.PluginMenuButton") + + registry['plugins']['menu_items'][section_name] = class_list + + +def register_graphql_schema(graphql_schema): + """ + Register a GraphQL schema class for inclusion in NetBox's GraphQL API. + """ + registry['plugins']['graphql_schemas'].append(graphql_schema) + + +def register_user_preferences(plugin_name, preferences): + """ + Register a list of user preferences defined by a plugin. + """ + registry['plugins']['preferences'][plugin_name] = preferences diff --git a/netbox/netbox/plugins/templates.py b/netbox/netbox/plugins/templates.py new file mode 100644 index 000000000..e9b9a9dca --- /dev/null +++ b/netbox/netbox/plugins/templates.py @@ -0,0 +1,73 @@ +from django.template.loader import get_template + +__all__ = ( + 'PluginTemplateExtension', +) + + +class PluginTemplateExtension: + """ + This class is used to register plugin content to be injected into core NetBox templates. It contains methods + that are overridden by plugin authors to return template content. + + The `model` attribute on the class defines the which model detail page this class renders content for. It + should be set as a string in the form '.'. render() provides the following context data: + + * object - The object being viewed + * request - The current request + * settings - Global NetBox settings + * config - Plugin-specific configuration parameters + """ + model = None + + def __init__(self, context): + self.context = context + + def render(self, template_name, extra_context=None): + """ + Convenience method for rendering the specified Django template using the default context data. An additional + context dictionary may be passed as `extra_context`. + """ + if extra_context is None: + extra_context = {} + elif not isinstance(extra_context, dict): + raise TypeError("extra_context must be a dictionary") + + return get_template(template_name).render({**self.context, **extra_context}) + + def left_page(self): + """ + Content that will be rendered on the left of the detail page view. Content should be returned as an + HTML string. Note that content does not need to be marked as safe because this is automatically handled. + """ + raise NotImplementedError + + def right_page(self): + """ + Content that will be rendered on the right of the detail page view. Content should be returned as an + HTML string. Note that content does not need to be marked as safe because this is automatically handled. + """ + raise NotImplementedError + + def full_width_page(self): + """ + Content that will be rendered within the full width of the detail page view. Content should be returned as an + HTML string. Note that content does not need to be marked as safe because this is automatically handled. + """ + raise NotImplementedError + + def buttons(self): + """ + Buttons that will be rendered and added to the existing list of buttons on the detail page view. Content + should be returned as an HTML string. Note that content does not need to be marked as safe because this is + automatically handled. + """ + raise NotImplementedError + + def list_buttons(self): + """ + Buttons that will be rendered and added to the existing list of buttons on the list view. Content + should be returned as an HTML string. Note that content does not need to be marked as safe because this is + automatically handled. + """ + raise NotImplementedError diff --git a/netbox/netbox/plugins/urls.py b/netbox/netbox/plugins/urls.py new file mode 100644 index 000000000..2f237f56a --- /dev/null +++ b/netbox/netbox/plugins/urls.py @@ -0,0 +1,41 @@ +from importlib import import_module + +from django.apps import apps +from django.conf import settings +from django.conf.urls import include +from django.contrib.admin.views.decorators import staff_member_required +from django.urls import path +from django.utils.module_loading import import_string, module_has_submodule + +from . import views + +# Initialize URL base, API, and admin URL patterns for plugins +plugin_patterns = [] +plugin_api_patterns = [ + path('', views.PluginsAPIRootView.as_view(), name='api-root'), + path('installed-plugins/', views.InstalledPluginsAPIView.as_view(), name='plugins-list') +] +plugin_admin_patterns = [ + path('installed-plugins/', staff_member_required(views.InstalledPluginsAdminView.as_view()), name='plugins_list') +] + +# Register base/API URL patterns for each plugin +for plugin_path in settings.PLUGINS: + plugin = import_module(plugin_path) + plugin_name = plugin_path.split('.')[-1] + app = apps.get_app_config(plugin_name) + base_url = getattr(app, 'base_url') or app.label + + # Check if the plugin specifies any base URLs + if module_has_submodule(plugin, 'urls'): + urlpatterns = import_string(f"{plugin_path}.urls.urlpatterns") + plugin_patterns.append( + path(f"{base_url}/", include((urlpatterns, app.label))) + ) + + # Check if the plugin specifies any API URLs + if module_has_submodule(plugin, 'api.urls'): + urlpatterns = import_string(f"{plugin_path}.api.urls.urlpatterns") + plugin_api_patterns.append( + path(f"{base_url}/", include((urlpatterns, f"{app.label}-api"))) + ) diff --git a/netbox/netbox/plugins/utils.py b/netbox/netbox/plugins/utils.py new file mode 100644 index 000000000..c260f156d --- /dev/null +++ b/netbox/netbox/plugins/utils.py @@ -0,0 +1,37 @@ +from django.apps import apps +from django.conf import settings +from django.core.exceptions import ImproperlyConfigured + +__all__ = ( + 'get_installed_plugins', + 'get_plugin_config', +) + + +def get_installed_plugins(): + """ + Return a dictionary mapping the names of installed plugins to their versions. + """ + plugins = {} + for plugin_name in settings.PLUGINS: + plugin_name = plugin_name.rsplit('.', 1)[-1] + plugin_config = apps.get_app_config(plugin_name) + plugins[plugin_name] = getattr(plugin_config, 'version', None) + + return dict(sorted(plugins.items())) + + +def get_plugin_config(plugin_name, parameter, default=None): + """ + Return the value of the specified plugin configuration parameter. + + Args: + plugin_name: The name of the plugin + parameter: The name of the configuration parameter + default: The value to return if the parameter is not defined (default: None) + """ + try: + plugin_config = settings.PLUGINS_CONFIG[plugin_name] + return plugin_config.get(parameter, default) + except KeyError: + raise ImproperlyConfigured(f"Plugin {plugin_name} is not registered.") diff --git a/netbox/netbox/plugins/views.py b/netbox/netbox/plugins/views.py new file mode 100644 index 000000000..5971f78ef --- /dev/null +++ b/netbox/netbox/plugins/views.py @@ -0,0 +1,89 @@ +from collections import OrderedDict + +from django.apps import apps +from django.conf import settings +from django.shortcuts import render +from django.urls.exceptions import NoReverseMatch +from django.views.generic import View +from drf_spectacular.utils import extend_schema +from rest_framework import permissions +from rest_framework.response import Response +from rest_framework.reverse import reverse +from rest_framework.views import APIView + + +class InstalledPluginsAdminView(View): + """ + Admin view for listing all installed plugins + """ + def get(self, request): + plugins = [apps.get_app_config(plugin) for plugin in settings.PLUGINS] + return render(request, 'extras/admin/plugins_list.html', { + 'plugins': plugins, + }) + + +@extend_schema(exclude=True) +class InstalledPluginsAPIView(APIView): + """ + API view for listing all installed plugins + """ + permission_classes = [permissions.IsAdminUser] + _ignore_model_permissions = True + schema = None + + def get_view_name(self): + return "Installed Plugins" + + @staticmethod + def _get_plugin_data(plugin_app_config): + return { + 'name': plugin_app_config.verbose_name, + 'package': plugin_app_config.name, + 'author': plugin_app_config.author, + 'author_email': plugin_app_config.author_email, + 'description': plugin_app_config.description, + 'version': plugin_app_config.version + } + + def get(self, request, format=None): + return Response([self._get_plugin_data(apps.get_app_config(plugin)) for plugin in settings.PLUGINS]) + + +@extend_schema(exclude=True) +class PluginsAPIRootView(APIView): + _ignore_model_permissions = True + schema = None + + def get_view_name(self): + return "Plugins" + + @staticmethod + def _get_plugin_entry(plugin, app_config, request, format): + # Check if the plugin specifies any API URLs + api_app_name = f'{app_config.name}-api' + try: + entry = (getattr(app_config, 'base_url', app_config.label), reverse( + f"plugins-api:{api_app_name}:api-root", + request=request, + format=format + )) + except NoReverseMatch: + # The plugin does not include an api-root url + entry = None + + return entry + + def get(self, request, format=None): + + entries = [] + for plugin in settings.PLUGINS: + app_config = apps.get_app_config(plugin) + entry = self._get_plugin_entry(plugin, app_config, request, format) + if entry is not None: + entries.append(entry) + + return Response(OrderedDict(( + ('installed-plugins', reverse('plugins-api:plugins-list', request=request, format=format)), + *entries + ))) diff --git a/netbox/netbox/preferences.py b/netbox/netbox/preferences.py index 5ef216259..9a6fe490c 100644 --- a/netbox/netbox/preferences.py +++ b/netbox/netbox/preferences.py @@ -1,4 +1,6 @@ +from django.conf import settings from django.utils.translation import gettext as _ + from netbox.registry import registry from users.preferences import UserPreference from utilities.paginator import EnhancedPaginator @@ -16,11 +18,18 @@ PREFERENCES = { 'ui.colormode': UserPreference( label=_('Color mode'), choices=( - ('light', 'Light'), - ('dark', 'Dark'), + ('light', _('Light')), + ('dark', _('Dark')), ), default='light', ), + 'locale.language': UserPreference( + label=_('Language'), + choices=( + ('', _('Auto')), + *settings.LANGUAGES, + ) + ), 'pagination.per_page': UserPreference( label=_('Page length'), choices=get_page_lengths(), @@ -30,9 +39,9 @@ PREFERENCES = { 'pagination.placement': UserPreference( label=_('Paginator placement'), choices=( - ('bottom', 'Bottom'), - ('top', 'Top'), - ('both', 'Both'), + ('bottom', _('Bottom')), + ('top', _('Top')), + ('both', _('Both')), ), description=_('Where the paginator controls will be displayed relative to a table'), default='bottom' diff --git a/netbox/netbox/registry.py b/netbox/netbox/registry.py index 21a869001..ad8c18dcf 100644 --- a/netbox/netbox/registry.py +++ b/netbox/netbox/registry.py @@ -25,8 +25,10 @@ registry = Registry({ 'data_backends': dict(), 'denormalized_fields': collections.defaultdict(list), 'model_features': dict(), + 'models': collections.defaultdict(set), 'plugins': dict(), 'search': dict(), + 'tables': collections.defaultdict(dict), 'views': collections.defaultdict(dict), 'widgets': dict(), }) diff --git a/netbox/netbox/search/__init__.py b/netbox/netbox/search/__init__.py index 6d53e9a97..590188f21 100644 --- a/netbox/netbox/search/__init__.py +++ b/netbox/netbox/search/__init__.py @@ -33,10 +33,12 @@ class SearchIndex: category: The label of the group under which this indexer is categorized (for form field display). If none, the name of the model's app will be used. fields: An iterable of two-tuples defining the model fields to be indexed and the weight associated with each. + display_attrs: An iterable of additional object attributes to include when displaying search results. """ model = None category = None fields = () + display_attrs = () @staticmethod def get_field_type(instance, field_name): diff --git a/netbox/netbox/search/backends.py b/netbox/netbox/search/backends.py index 4487b6bb8..1fb23a37c 100644 --- a/netbox/netbox/search/backends.py +++ b/netbox/netbox/search/backends.py @@ -3,7 +3,8 @@ from collections import defaultdict from django.conf import settings from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ImproperlyConfigured -from django.db.models import F, Window, Q +from django.db.models import F, Window, Q, prefetch_related_objects +from django.db.models.fields.related import ForeignKey from django.db.models.functions import window from django.db.models.signals import post_delete, post_save from django.utils.module_loading import import_string @@ -13,7 +14,7 @@ from netaddr.core import AddrFormatError from extras.models import CachedValue, CustomField from netbox.registry import registry from utilities.querysets import RestrictedPrefetch -from utilities.utils import title +from utilities.utils import content_type_identifier, title from . import FieldTypes, LookupTypes, get_indexer DEFAULT_LOOKUP_TYPE = LookupTypes.PARTIAL @@ -103,17 +104,17 @@ class CachedValueSearchBackend(SearchBackend): def search(self, value, user=None, object_types=None, lookup=DEFAULT_LOOKUP_TYPE): + # Build the filter used to find relevant CachedValue records query_filter = Q(**{f'value__{lookup}': value}) - if object_types: + # Limit results by object type query_filter &= Q(object_type__in=object_types) - if lookup in (LookupTypes.STARTSWITH, LookupTypes.ENDSWITH): - # Partial string matches are valid only on string values + # "Starts/ends with" matches are valid only on string values query_filter &= Q(type=FieldTypes.STRING) - - if lookup == LookupTypes.PARTIAL: + elif lookup == LookupTypes.PARTIAL: try: + # If the value looks like an IP address, add an extra match for CIDR values address = str(netaddr.IPNetwork(value.strip()).cidr) query_filter |= Q(type=FieldTypes.CIDR) & Q(value__net_contains_or_equals=address) except (AddrFormatError, ValueError): @@ -129,6 +130,12 @@ class CachedValueSearchBackend(SearchBackend): ) )[:MAX_RESULTS] + # Gather all ContentTypes present in the search results (used for prefetching related + # objects). This must be done before generating the final results list, which returns + # a RawQuerySet. + content_type_ids = set(queryset.values_list('object_type', flat=True)) + content_types = ContentType.objects.filter(pk__in=content_type_ids) + # Construct a Prefetch to pre-fetch only those related objects for which the # user has permission to view. if user: @@ -144,12 +151,34 @@ class CachedValueSearchBackend(SearchBackend): params ) + # Iterate through each ContentType represented in the search results and prefetch any + # related objects necessary to render the prescribed display attributes (display_attrs). + for ct in content_types: + model = ct.model_class() + indexer = registry['search'].get(content_type_identifier(ct)) + if not (display_attrs := getattr(indexer, 'display_attrs', None)): + continue + + # Add ForeignKey fields to prefetch list + prefetch_fields = [] + for attr in display_attrs: + field = model._meta.get_field(attr) + if type(field) is ForeignKey: + prefetch_fields.append(f'object__{attr}') + + # Compile a list of all CachedValues referencing this object type, and prefetch + # any related objects + if prefetch_fields: + objects = [r for r in results if r.object_type == ct] + prefetch_related_objects(objects, *prefetch_fields) + # Omit any results pertaining to an object the user does not have permission to view ret = [] for r in results: if r.object is not None: r.name = str(r.object) ret.append(r) + return ret def cache(self, instances, indexer=None, remove_existing=True): diff --git a/netbox/netbox/search/utils.py b/netbox/netbox/search/utils.py new file mode 100644 index 000000000..824fbfb3d --- /dev/null +++ b/netbox/netbox/search/utils.py @@ -0,0 +1,14 @@ +from netbox.registry import registry +from utilities.utils import content_type_identifier + +__all__ = ( + 'get_indexer', +) + + +def get_indexer(content_type): + """ + Return the registered search indexer for the given ContentType. + """ + ct_identifier = content_type_identifier(content_type) + return registry['search'].get(ct_identifier) diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index f28449b12..33a75b8eb 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -9,23 +9,26 @@ import warnings from urllib.parse import urlencode, urlsplit import django -import sentry_sdk from django.contrib.messages import constants as messages from django.core.exceptions import ImproperlyConfigured, ValidationError from django.core.validators import URLValidator from django.utils.encoding import force_str -from extras.plugins import PluginConfig -from sentry_sdk.integrations.django import DjangoIntegration +from django.utils.translation import gettext_lazy as _ +try: + import sentry_sdk +except ModuleNotFoundError: + pass from netbox.config import PARAMS from netbox.constants import RQ_QUEUE_DEFAULT, RQ_QUEUE_HIGH, RQ_QUEUE_LOW +from netbox.plugins import PluginConfig # # Environment setup # -VERSION = '3.6-beta2' +VERSION = '3.7-beta1' # Hostname HOSTNAME = platform.node() @@ -39,8 +42,6 @@ if sys.version_info < (3, 8): f"NetBox requires Python 3.8 or later. (Currently installed: Python {platform.python_version()})" ) -DEFAULT_SENTRY_DSN = 'https://198cf560b29d4054ab8e583a1d10ea58@o1242133.ingest.sentry.io/6396485' - # # Configuration import # @@ -95,6 +96,7 @@ CORS_ORIGIN_WHITELIST = getattr(configuration, 'CORS_ORIGIN_WHITELIST', []) CSRF_COOKIE_NAME = getattr(configuration, 'CSRF_COOKIE_NAME', 'csrftoken') CSRF_COOKIE_SECURE = getattr(configuration, 'CSRF_COOKIE_SECURE', False) CSRF_TRUSTED_ORIGINS = getattr(configuration, 'CSRF_TRUSTED_ORIGINS', []) +DATA_UPLOAD_MAX_MEMORY_SIZE = getattr(configuration, 'DATA_UPLOAD_MAX_MEMORY_SIZE', 2621440) DATE_FORMAT = getattr(configuration, 'DATE_FORMAT', 'N j, Y') DATETIME_FORMAT = getattr(configuration, 'DATETIME_FORMAT', 'N j, Y g:i a') DEBUG = getattr(configuration, 'DEBUG', False) @@ -114,6 +116,9 @@ DEFAULT_PERMISSIONS = getattr(configuration, 'DEFAULT_PERMISSIONS', { DEVELOPER = getattr(configuration, 'DEVELOPER', False) DOCS_ROOT = getattr(configuration, 'DOCS_ROOT', os.path.join(os.path.dirname(BASE_DIR), 'docs')) EMAIL = getattr(configuration, 'EMAIL', {}) +EVENTS_PIPELINE = getattr(configuration, 'EVENTS_PIPELINE', ( + 'extras.events.process_event_queue', +)) EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', []) FIELD_CHOICES = getattr(configuration, 'FIELD_CHOICES', {}) FILE_UPLOAD_MAX_MEMORY_SIZE = getattr(configuration, 'FILE_UPLOAD_MAX_MEMORY_SIZE', 2621440) @@ -157,7 +162,7 @@ RQ_RETRY_MAX = getattr(configuration, 'RQ_RETRY_MAX', 0) SCRIPTS_ROOT = getattr(configuration, 'SCRIPTS_ROOT', os.path.join(BASE_DIR, 'scripts')).rstrip('/') SEARCH_BACKEND = getattr(configuration, 'SEARCH_BACKEND', 'netbox.search.backends.CachedValueSearchBackend') SECURE_SSL_REDIRECT = getattr(configuration, 'SECURE_SSL_REDIRECT', False) -SENTRY_DSN = getattr(configuration, 'SENTRY_DSN', DEFAULT_SENTRY_DSN) +SENTRY_DSN = getattr(configuration, 'SENTRY_DSN', None) SENTRY_ENABLED = getattr(configuration, 'SENTRY_ENABLED', False) SENTRY_SAMPLE_RATE = getattr(configuration, 'SENTRY_SAMPLE_RATE', 1.0) SENTRY_TRACES_SAMPLE_RATE = getattr(configuration, 'SENTRY_TRACES_SAMPLE_RATE', 0) @@ -173,6 +178,7 @@ STORAGE_CONFIG = getattr(configuration, 'STORAGE_CONFIG', {}) TIME_FORMAT = getattr(configuration, 'TIME_FORMAT', 'g:i a') TIME_ZONE = getattr(configuration, 'TIME_ZONE', 'UTC') ENABLE_LOCALIZATION = getattr(configuration, 'ENABLE_LOCALIZATION', False) +CHANGELOG_SKIP_EMPTY_CHANGES = getattr(configuration, 'CHANGELOG_SKIP_EMPTY_CHANGES', True) # Check for hard-coded dynamic config parameters for param in PARAMS: @@ -355,6 +361,7 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', + 'django.forms', 'corsheaders', 'debug_toolbar', 'graphiql_debug_toolbar', @@ -377,6 +384,7 @@ INSTALLED_APPS = [ 'users', 'utilities', 'virtualization', + 'vpn', 'wireless', 'django_rq', # Must come after extras to allow overriding management commands 'drf_spectacular', @@ -430,6 +438,9 @@ TEMPLATES = [ }, ] +# This allows us to override Django's stock form widget templates +FORM_RENDERER = 'django.forms.renderers.TemplatesSetting' + # Set up authentication backends if type(REMOTE_AUTH_BACKEND) not in (list, tuple): REMOTE_AUTH_BACKEND = [REMOTE_AUTH_BACKEND] @@ -496,6 +507,10 @@ AUTH_EXEMPT_PATHS = ( # All URLs starting with a string listed here are exempt from maintenance mode enforcement MAINTENANCE_EXEMPT_PATHS = ( f'/{BASE_PATH}admin/', + f'/{BASE_PATH}extras/config-revisions/', # Allow modifying the configuration + LOGIN_URL, + LOGIN_REDIRECT_URL, + LOGOUT_REDIRECT_URL ) SERIALIZATION_MODULES = { @@ -508,12 +523,12 @@ SERIALIZATION_MODULES = { # if SENTRY_ENABLED: + try: + from sentry_sdk.integrations.django import DjangoIntegration + except ModuleNotFoundError: + raise ImproperlyConfigured("SENTRY_ENABLED is True but the sentry-sdk package is not installed.") if not SENTRY_DSN: raise ImproperlyConfigured("SENTRY_ENABLED is True but SENTRY_DSN has not been defined.") - # If using the default DSN, force sampling rates - if SENTRY_DSN == DEFAULT_SENTRY_DSN: - SENTRY_SAMPLE_RATE = 1.0 - SENTRY_TRACES_SAMPLE_RATE = 0 # Initialize the SDK sentry_sdk.init( dsn=SENTRY_DSN, @@ -528,9 +543,6 @@ if SENTRY_ENABLED: # Assign any configured tags for k, v in SENTRY_TAGS.items(): sentry_sdk.set_tag(k, v) - # If using the default DSN, append a unique deployment ID tag for error correlation - if SENTRY_DSN == DEFAULT_SENTRY_DSN: - sentry_sdk.set_tag('netbox.deployment_id', DEPLOYMENT_ID) # @@ -665,7 +677,7 @@ GRAPHENE = { # -# Django RQ (Webhooks backend) +# Django RQ (events backend) # if TASKS_REDIS_USING_SENTINEL: @@ -710,6 +722,14 @@ RQ_QUEUES.update({ # Localization # +LANGUAGES = ( + ('en', _('English')), + ('es', _('Spanish')), + ('fr', _('French')), + ('pt', _('Portuguese')), + ('ru', _('Russian')), +) + LOCALE_PATHS = ( BASE_DIR + '/translations', ) diff --git a/netbox/netbox/tables/columns.py b/netbox/netbox/tables/columns.py index 6d6eeb97e..d2cd0a0d4 100644 --- a/netbox/netbox/tables/columns.py +++ b/netbox/netbox/tables/columns.py @@ -4,6 +4,7 @@ from urllib.parse import quote import django_tables2 as tables from django.conf import settings +from django.contrib.auth.context_processors import auth from django.contrib.auth.models import AnonymousUser from django.db.models import DateField, DateTimeField from django.template import Context, Template @@ -482,8 +483,10 @@ class CustomFieldColumn(tables.Column): return mark_safe('') if self.customfield.type == CustomFieldTypeChoices.TYPE_URL: return mark_safe(f'{escape(value)}') + if self.customfield.type == CustomFieldTypeChoices.TYPE_SELECT: + return self.customfield.get_choice_label(value) if self.customfield.type == CustomFieldTypeChoices.TYPE_MULTISELECT: - return ', '.join(v for v in value) + return ', '.join(self.customfield.get_choice_label(v) for v in value) if self.customfield.type == CustomFieldTypeChoices.TYPE_MULTIOBJECT: return mark_safe(', '.join( self._linkify_item(obj) for obj in self.customfield.deserialize(value) @@ -517,24 +520,32 @@ class CustomLinkColumn(tables.Column): super().__init__(*args, **kwargs) - def render(self, record): - try: - rendered = self.customlink.render({ - 'object': record, + def _render_customlink(self, record, table): + context = { + 'object': record, + 'debug': settings.DEBUG, + } + if request := getattr(table, 'context', {}).get('request'): + # If the request is available, include it as context + context.update({ + 'request': request, + **auth(request), }) - if rendered: + + return self.customlink.render(context) + + def render(self, record, table, **kwargs): + try: + if rendered := self._render_customlink(record, table): return mark_safe(f'{rendered["text"]}') except Exception as e: error_text = _('Error') return mark_safe(f' {error_text}') return '' - def value(self, record): + def value(self, record, table, **kwargs): try: - rendered = self.customlink.render({ - 'object': record, - }) - if rendered: + if rendered := self._render_customlink(record, table): return rendered['link'] except Exception: pass diff --git a/netbox/netbox/tables/tables.py b/netbox/netbox/tables/tables.py index 52ff69aa9..495e56991 100644 --- a/netbox/netbox/tables/tables.py +++ b/netbox/netbox/tables/tables.py @@ -1,3 +1,5 @@ +from copy import deepcopy + import django_tables2 as tables from django.contrib.auth.models import AnonymousUser from django.contrib.contenttypes.fields import GenericForeignKey @@ -10,11 +12,13 @@ from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ from django_tables2.data import TableQuerysetData +from extras.choices import * from extras.models import CustomField, CustomLink -from extras.choices import CustomFieldVisibilityChoices +from netbox.registry import registry from netbox.tables import columns from utilities.paginator import EnhancedPaginator, get_paginate_count from utilities.utils import get_viewname, highlight_string, title +from .template_code import * __all__ = ( 'BaseTable', @@ -119,7 +123,7 @@ class BaseTable(tables.Table): @property def available_columns(self): - return self._get_columns(visible=False) + return sorted(self._get_columns(visible=False)) @property def selected_columns(self): @@ -190,12 +194,17 @@ class NetBoxTable(BaseTable): if extra_columns is None: extra_columns = [] + if registered_columns := registry['tables'].get(self.__class__): + extra_columns.extend([ + # Create a copy to avoid modifying the original Column + (name, deepcopy(column)) for name, column in registered_columns.items() + ]) + # Add custom field & custom link columns content_type = ContentType.objects.get_for_model(self._meta.model) custom_fields = CustomField.objects.filter( content_types=content_type - ).exclude(ui_visibility=CustomFieldVisibilityChoices.VISIBILITY_HIDDEN) - + ).exclude(ui_visible=CustomFieldUIVisibleChoices.HIDDEN) extra_columns.extend([ (f'cf_{cf.name}', columns.CustomFieldColumn(cf)) for cf in custom_fields ]) @@ -236,6 +245,10 @@ class SearchTable(tables.Table): value = tables.Column( verbose_name=_('Value'), ) + attrs = columns.TemplateColumn( + template_code=SEARCH_RESULT_ATTRS, + verbose_name=_('Attributes') + ) trim_length = 30 diff --git a/netbox/netbox/tables/template_code.py b/netbox/netbox/tables/template_code.py new file mode 100644 index 000000000..60bfda0c9 --- /dev/null +++ b/netbox/netbox/tables/template_code.py @@ -0,0 +1,18 @@ +SEARCH_RESULT_ATTRS = """ +{% for name, value in record.display_attrs.items %} + 40 %} data-bs-toggle="tooltip" data-bs-placement="bottom" title="{{ value }}"{% endif %} + > + {{ name|bettertitle }}: + {% with url=value.get_absolute_url %} + {% if url %}{% endif %} + {% if value|length > 40 %} + {{ value|truncatechars:"40" }} + {% else %} + {{ value }} + {% endif %} + {% if url %}{% endif %} + {% endwith %} + +{% endfor %} +""" diff --git a/netbox/extras/tests/dummy_plugin/__init__.py b/netbox/netbox/tests/dummy_plugin/__init__.py similarity index 72% rename from netbox/extras/tests/dummy_plugin/__init__.py rename to netbox/netbox/tests/dummy_plugin/__init__.py index 83baf064f..3ade8f9df 100644 --- a/netbox/extras/tests/dummy_plugin/__init__.py +++ b/netbox/netbox/tests/dummy_plugin/__init__.py @@ -1,8 +1,8 @@ -from extras.plugins import PluginConfig +from netbox.plugins import PluginConfig class DummyPluginConfig(PluginConfig): - name = 'extras.tests.dummy_plugin' + name = 'netbox.tests.dummy_plugin' verbose_name = 'Dummy plugin' version = '0.0' description = 'For testing purposes only' @@ -10,7 +10,7 @@ class DummyPluginConfig(PluginConfig): min_version = '1.0' max_version = '9.0' middleware = [ - 'extras.tests.dummy_plugin.middleware.DummyMiddleware' + 'netbox.tests.dummy_plugin.middleware.DummyMiddleware' ] queues = [ 'testing-low', diff --git a/netbox/extras/tests/dummy_plugin/admin.py b/netbox/netbox/tests/dummy_plugin/admin.py similarity index 100% rename from netbox/extras/tests/dummy_plugin/admin.py rename to netbox/netbox/tests/dummy_plugin/admin.py diff --git a/netbox/extras/tests/dummy_plugin/api/serializers.py b/netbox/netbox/tests/dummy_plugin/api/serializers.py similarity index 76% rename from netbox/extras/tests/dummy_plugin/api/serializers.py rename to netbox/netbox/tests/dummy_plugin/api/serializers.py index 101786168..239d7d998 100644 --- a/netbox/extras/tests/dummy_plugin/api/serializers.py +++ b/netbox/netbox/tests/dummy_plugin/api/serializers.py @@ -1,5 +1,5 @@ from rest_framework.serializers import ModelSerializer -from extras.tests.dummy_plugin.models import DummyModel +from netbox.tests.dummy_plugin.models import DummyModel class DummySerializer(ModelSerializer): diff --git a/netbox/extras/tests/dummy_plugin/api/urls.py b/netbox/netbox/tests/dummy_plugin/api/urls.py similarity index 100% rename from netbox/extras/tests/dummy_plugin/api/urls.py rename to netbox/netbox/tests/dummy_plugin/api/urls.py diff --git a/netbox/extras/tests/dummy_plugin/api/views.py b/netbox/netbox/tests/dummy_plugin/api/views.py similarity index 78% rename from netbox/extras/tests/dummy_plugin/api/views.py rename to netbox/netbox/tests/dummy_plugin/api/views.py index 1977ec2af..58f221285 100644 --- a/netbox/extras/tests/dummy_plugin/api/views.py +++ b/netbox/netbox/tests/dummy_plugin/api/views.py @@ -1,5 +1,5 @@ from rest_framework.viewsets import ModelViewSet -from extras.tests.dummy_plugin.models import DummyModel +from netbox.tests.dummy_plugin.models import DummyModel from .serializers import DummySerializer diff --git a/netbox/netbox/tests/dummy_plugin/data_backends.py b/netbox/netbox/tests/dummy_plugin/data_backends.py new file mode 100644 index 000000000..9b63e51c6 --- /dev/null +++ b/netbox/netbox/tests/dummy_plugin/data_backends.py @@ -0,0 +1,18 @@ +from contextlib import contextmanager + +from netbox.data_backends import DataBackend + + +class DummyBackend(DataBackend): + name = 'dummy' + label = 'Dummy' + is_local = True + + @contextmanager + def fetch(self): + yield '/tmp' + + +backends = ( + DummyBackend, +) diff --git a/netbox/extras/tests/dummy_plugin/graphql.py b/netbox/netbox/tests/dummy_plugin/graphql.py similarity index 100% rename from netbox/extras/tests/dummy_plugin/graphql.py rename to netbox/netbox/tests/dummy_plugin/graphql.py diff --git a/netbox/extras/tests/dummy_plugin/middleware.py b/netbox/netbox/tests/dummy_plugin/middleware.py similarity index 100% rename from netbox/extras/tests/dummy_plugin/middleware.py rename to netbox/netbox/tests/dummy_plugin/middleware.py diff --git a/netbox/extras/tests/dummy_plugin/migrations/0001_initial.py b/netbox/netbox/tests/dummy_plugin/migrations/0001_initial.py similarity index 100% rename from netbox/extras/tests/dummy_plugin/migrations/0001_initial.py rename to netbox/netbox/tests/dummy_plugin/migrations/0001_initial.py diff --git a/netbox/extras/tests/dummy_plugin/migrations/__init__.py b/netbox/netbox/tests/dummy_plugin/migrations/__init__.py similarity index 100% rename from netbox/extras/tests/dummy_plugin/migrations/__init__.py rename to netbox/netbox/tests/dummy_plugin/migrations/__init__.py diff --git a/netbox/extras/tests/dummy_plugin/models.py b/netbox/netbox/tests/dummy_plugin/models.py similarity index 100% rename from netbox/extras/tests/dummy_plugin/models.py rename to netbox/netbox/tests/dummy_plugin/models.py diff --git a/netbox/extras/tests/dummy_plugin/navigation.py b/netbox/netbox/tests/dummy_plugin/navigation.py similarity index 90% rename from netbox/extras/tests/dummy_plugin/navigation.py rename to netbox/netbox/tests/dummy_plugin/navigation.py index a9157b368..4e7bb4be8 100644 --- a/netbox/extras/tests/dummy_plugin/navigation.py +++ b/netbox/netbox/tests/dummy_plugin/navigation.py @@ -1,5 +1,5 @@ from django.utils.translation import gettext as _ -from extras.plugins import PluginMenu, PluginMenuButton, PluginMenuItem +from netbox.plugins.navigation import PluginMenu, PluginMenuButton, PluginMenuItem items = ( diff --git a/netbox/extras/tests/dummy_plugin/preferences.py b/netbox/netbox/tests/dummy_plugin/preferences.py similarity index 100% rename from netbox/extras/tests/dummy_plugin/preferences.py rename to netbox/netbox/tests/dummy_plugin/preferences.py diff --git a/netbox/extras/tests/dummy_plugin/search.py b/netbox/netbox/tests/dummy_plugin/search.py similarity index 100% rename from netbox/extras/tests/dummy_plugin/search.py rename to netbox/netbox/tests/dummy_plugin/search.py diff --git a/netbox/netbox/tests/dummy_plugin/tables.py b/netbox/netbox/tests/dummy_plugin/tables.py new file mode 100644 index 000000000..0f1e823d7 --- /dev/null +++ b/netbox/netbox/tests/dummy_plugin/tables.py @@ -0,0 +1,11 @@ +import django_tables2 as tables + +from dcim.tables import SiteTable +from utilities.tables import register_table_column + +mycol = tables.Column( + verbose_name='My column', + accessor=tables.A('description') +) + +register_table_column(mycol, 'foo', SiteTable) diff --git a/netbox/extras/tests/dummy_plugin/template_content.py b/netbox/netbox/tests/dummy_plugin/template_content.py similarity index 88% rename from netbox/extras/tests/dummy_plugin/template_content.py rename to netbox/netbox/tests/dummy_plugin/template_content.py index 364768a22..b63338f2f 100644 --- a/netbox/extras/tests/dummy_plugin/template_content.py +++ b/netbox/netbox/tests/dummy_plugin/template_content.py @@ -1,4 +1,4 @@ -from extras.plugins import PluginTemplateExtension +from netbox.plugins.templates import PluginTemplateExtension class SiteContent(PluginTemplateExtension): diff --git a/netbox/extras/tests/dummy_plugin/urls.py b/netbox/netbox/tests/dummy_plugin/urls.py similarity index 100% rename from netbox/extras/tests/dummy_plugin/urls.py rename to netbox/netbox/tests/dummy_plugin/urls.py diff --git a/netbox/extras/tests/dummy_plugin/views.py b/netbox/netbox/tests/dummy_plugin/views.py similarity index 88% rename from netbox/extras/tests/dummy_plugin/views.py rename to netbox/netbox/tests/dummy_plugin/views.py index 8713102c5..03a83b585 100644 --- a/netbox/extras/tests/dummy_plugin/views.py +++ b/netbox/netbox/tests/dummy_plugin/views.py @@ -4,6 +4,8 @@ from django.views.generic import View from dcim.models import Site from utilities.views import register_model_view from .models import DummyModel +# Trigger registration of custom column +from .tables import mycol class DummyModelsView(View): diff --git a/netbox/netbox/tests/test_config.py b/netbox/netbox/tests/test_config.py index db401cf0c..f8c892363 100644 --- a/netbox/netbox/tests/test_config.py +++ b/netbox/netbox/tests/test_config.py @@ -2,7 +2,7 @@ from django.conf import settings from django.core.cache import cache from django.test import override_settings, TestCase -from extras.models import ConfigRevision +from core.models import ConfigRevision from netbox.config import clear_config, get_config diff --git a/netbox/netbox/tests/test_import.py b/netbox/netbox/tests/test_import.py index 73f775bd7..bd07886e8 100644 --- a/netbox/netbox/tests/test_import.py +++ b/netbox/netbox/tests/test_import.py @@ -3,7 +3,7 @@ from django.test import override_settings from dcim.models import * from users.models import ObjectPermission -from utilities.choices import ImportFormatChoices +from utilities.choices import CSVDelimiterChoices, ImportFormatChoices from utilities.testing import ModelViewTestCase, create_tags @@ -17,6 +17,36 @@ class CSVImportTestCase(ModelViewTestCase): def _get_csv_data(self, csv_data): return '\n'.join(csv_data) + def test_invalid_headers(self): + """ + Test that import form validation fails when an unknown CSV header is present. + """ + self.add_permissions('dcim.add_region') + + csv_data = [ + 'name,slug,INVALIDHEADER', + 'Region 1,region-1,abc', + 'Region 2,region-2,def', + 'Region 3,region-3,ghi', + ] + data = { + 'format': ImportFormatChoices.CSV, + 'data': self._get_csv_data(csv_data), + 'csv_delimiter': CSVDelimiterChoices.AUTO, + } + + # Form validation should fail with invalid header present + self.assertHttpStatus(self.client.post(self._get_url('import'), data), 200) + self.assertEqual(Region.objects.count(), 0) + + # Correct the CSV header name + csv_data[0] = 'name,slug,description' + data['data'] = self._get_csv_data(csv_data) + + # Validation should succeed + self.assertHttpStatus(self.client.post(self._get_url('import'), data), 302) + self.assertEqual(Region.objects.count(), 3) + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) def test_valid_tags(self): csv_data = ( @@ -30,6 +60,7 @@ class CSVImportTestCase(ModelViewTestCase): data = { 'format': ImportFormatChoices.CSV, 'data': self._get_csv_data(csv_data), + 'csv_delimiter': CSVDelimiterChoices.AUTO, } # Assign model-level permission diff --git a/netbox/extras/tests/test_plugins.py b/netbox/netbox/tests/test_plugins.py similarity index 79% rename from netbox/extras/tests/test_plugins.py rename to netbox/netbox/tests/test_plugins.py index 42dde43fd..40bf8b0ea 100644 --- a/netbox/extras/tests/test_plugins.py +++ b/netbox/netbox/tests/test_plugins.py @@ -5,22 +5,23 @@ from django.core.exceptions import ImproperlyConfigured from django.test import Client, TestCase, override_settings from django.urls import reverse -from extras.plugins import PluginMenu -from extras.tests.dummy_plugin import config as dummy_config -from extras.plugins.utils import get_plugin_config +from netbox.tests.dummy_plugin import config as dummy_config +from netbox.tests.dummy_plugin.data_backends import DummyBackend +from netbox.plugins.navigation import PluginMenu +from netbox.plugins.utils import get_plugin_config from netbox.graphql.schema import Query from netbox.registry import registry -@skipIf('extras.tests.dummy_plugin' not in settings.PLUGINS, "dummy_plugin not in settings.PLUGINS") +@skipIf('netbox.tests.dummy_plugin' not in settings.PLUGINS, "dummy_plugin not in settings.PLUGINS") class PluginTest(TestCase): def test_config(self): - self.assertIn('extras.tests.dummy_plugin.DummyPluginConfig', settings.INSTALLED_APPS) + self.assertIn('netbox.tests.dummy_plugin.DummyPluginConfig', settings.INSTALLED_APPS) def test_models(self): - from extras.tests.dummy_plugin.models import DummyModel + from netbox.tests.dummy_plugin.models import DummyModel # Test saving an instance instance = DummyModel(name='Instance 1', number=100) @@ -92,10 +93,20 @@ class PluginTest(TestCase): """ Check that plugin TemplateExtensions are registered. """ - from extras.tests.dummy_plugin.template_content import SiteContent + from netbox.tests.dummy_plugin.template_content import SiteContent self.assertIn(SiteContent, registry['plugins']['template_extensions']['dcim.site']) + def test_registered_columns(self): + """ + Check that a plugin can register a custom column on a core model table. + """ + from dcim.models import Site + from dcim.tables import SiteTable + + table = SiteTable(Site.objects.all()) + self.assertIn('foo', table.columns.names()) + def test_user_preferences(self): """ Check that plugin UserPreferences are registered. @@ -109,15 +120,22 @@ class PluginTest(TestCase): """ Check that plugin middleware is registered. """ - self.assertIn('extras.tests.dummy_plugin.middleware.DummyMiddleware', settings.MIDDLEWARE) + self.assertIn('netbox.tests.dummy_plugin.middleware.DummyMiddleware', settings.MIDDLEWARE) + + def test_data_backends(self): + """ + Check registered data backends. + """ + self.assertIn('dummy', registry['data_backends']) + self.assertIs(registry['data_backends']['dummy'], DummyBackend) def test_queues(self): """ Check that plugin queues are registered with the accurate name. """ - self.assertIn('extras.tests.dummy_plugin.testing-low', settings.RQ_QUEUES) - self.assertIn('extras.tests.dummy_plugin.testing-medium', settings.RQ_QUEUES) - self.assertIn('extras.tests.dummy_plugin.testing-high', settings.RQ_QUEUES) + self.assertIn('netbox.tests.dummy_plugin.testing-low', settings.RQ_QUEUES) + self.assertIn('netbox.tests.dummy_plugin.testing-medium', settings.RQ_QUEUES) + self.assertIn('netbox.tests.dummy_plugin.testing-high', settings.RQ_QUEUES) def test_min_version(self): """ @@ -170,17 +188,17 @@ class PluginTest(TestCase): """ Validate the registration and operation of plugin-provided GraphQL schemas. """ - from extras.tests.dummy_plugin.graphql import DummyQuery + from netbox.tests.dummy_plugin.graphql import DummyQuery self.assertIn(DummyQuery, registry['plugins']['graphql_schemas']) self.assertTrue(issubclass(Query, DummyQuery)) - @override_settings(PLUGINS_CONFIG={'extras.tests.dummy_plugin': {'foo': 123}}) + @override_settings(PLUGINS_CONFIG={'netbox.tests.dummy_plugin': {'foo': 123}}) def test_get_plugin_config(self): """ Validate that get_plugin_config() returns config parameters correctly. """ - plugin = 'extras.tests.dummy_plugin' + plugin = 'netbox.tests.dummy_plugin' self.assertEqual(get_plugin_config(plugin, 'foo'), 123) self.assertEqual(get_plugin_config(plugin, 'bar'), None) self.assertEqual(get_plugin_config(plugin, 'bar', default=456), 456) diff --git a/netbox/netbox/urls.py b/netbox/netbox/urls.py index 4ed180535..6776f6dde 100644 --- a/netbox/netbox/urls.py +++ b/netbox/netbox/urls.py @@ -6,9 +6,10 @@ from django.views.static import serve from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView from account.views import LoginView, LogoutView -from extras.plugins.urls import plugin_admin_patterns, plugin_patterns, plugin_api_patterns from netbox.api.views import APIRootView, StatusView from netbox.graphql.schema import schema +from netbox.graphql.views import GraphQLView +from netbox.plugins.urls import plugin_admin_patterns, plugin_patterns, plugin_api_patterns from netbox.views import HomeView, StaticMediaFailureView, SearchView, htmx from strawberry.django.views import GraphQLView from .admin import admin_site @@ -33,6 +34,7 @@ _patterns = [ path('tenancy/', include('tenancy.urls')), path('users/', include('users.urls')), path('virtualization/', include('virtualization.urls')), + path('vpn/', include('vpn.urls')), path('wireless/', include('wireless.urls')), # Current user views @@ -51,6 +53,7 @@ _patterns = [ path('api/tenancy/', include('tenancy.api.urls')), path('api/users/', include('users.api.urls')), path('api/virtualization/', include('virtualization.api.urls')), + path('api/vpn/', include('vpn.api.urls')), path('api/wireless/', include('wireless.api.urls')), path('api/status/', StatusView.as_view(), name='api-status'), diff --git a/netbox/netbox/utils.py b/netbox/netbox/utils.py new file mode 100644 index 000000000..f27d1b5f7 --- /dev/null +++ b/netbox/netbox/utils.py @@ -0,0 +1,26 @@ +from netbox.registry import registry + +__all__ = ( + 'get_data_backend_choices', + 'register_data_backend', +) + + +def get_data_backend_choices(): + return [ + (None, '---------'), + *[ + (name, cls.label) for name, cls in registry['data_backends'].items() + ] + ] + + +def register_data_backend(): + """ + Decorator for registering a DataBackend class. + """ + def _wrapper(cls): + registry['data_backends'][cls.name] = cls + return cls + + return _wrapper diff --git a/netbox/netbox/views/errors.py b/netbox/netbox/views/errors.py index a81d45cb5..a0f783ed6 100644 --- a/netbox/netbox/views/errors.py +++ b/netbox/netbox/views/errors.py @@ -9,9 +9,8 @@ from django.template.exceptions import TemplateDoesNotExist from django.views.decorators.csrf import requires_csrf_token from django.views.defaults import ERROR_500_TEMPLATE_NAME, page_not_found from django.views.generic import View -from sentry_sdk import capture_message -from extras.plugins.utils import get_installed_plugins +from netbox.plugins.utils import get_installed_plugins __all__ = ( 'handler_404', @@ -34,7 +33,9 @@ def handler_404(request, exception): """ Wrap Django's default 404 handler to enable Sentry reporting. """ - capture_message("Page not found", level="error") + if settings.SENTRY_ENABLED: + from sentry_sdk import capture_message + capture_message("Page not found", level="error") return page_not_found(request, exception) diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index 43a55e453..615db6181 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/netbox/netbox/views/generic/bulk_views.py @@ -3,10 +3,11 @@ import re from copy import deepcopy from django.contrib import messages +from django.contrib.contenttypes.fields import GenericRel from django.contrib.contenttypes.models import ContentType from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist, ValidationError from django.db import transaction, IntegrityError -from django.db.models import ManyToManyField, ProtectedError +from django.db.models import ManyToManyField, ProtectedError, RestrictedError from django.db.models.fields.reverse_related import ManyToManyRel from django.forms import HiddenInput, ModelMultipleChoiceField, MultipleHiddenInput from django.http import HttpResponse @@ -16,7 +17,7 @@ from django.utils.safestring import mark_safe from django_tables2.export import TableExport from extras.models import ExportTemplate -from extras.signals import clear_webhooks +from extras.signals import clear_events from utilities.error_handlers import handle_protectederror from utilities.exceptions import AbortRequest, AbortTransaction, PermissionsViolation from utilities.forms import BulkRenameForm, ConfirmationForm, restrict_form_fields @@ -47,9 +48,8 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin): Attributes: filterset: A django-filter FilterSet that is applied to the queryset filterset_form: The form class used to render filter options - actions: Supported actions for the model. When adding custom actions, bulk action names must - be prefixed with `bulk_`. Default actions: add, import, export, bulk_edit, bulk_delete - action_perms: A dictionary mapping supported actions to a set of permissions required for each + actions: A mapping of supported actions to their required permissions. When adding custom actions, bulk + action names must be prefixed with `bulk_`. (See ActionsMixin.) """ template_name = 'generic/object_list.html' filterset = None @@ -278,7 +278,7 @@ class BulkCreateView(GetReturnURLMixin, BaseMultiObjectView): except (AbortRequest, PermissionsViolation) as e: logger.debug(e.message) form.add_error(None, e.message) - clear_webhooks.send(sender=self) + clear_events.send(sender=self) else: logger.debug("Form validation failed") @@ -393,6 +393,10 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): form.add_error('data', f"Row {i}: Object with ID {object_id} does not exist") raise ValidationError('') + # Take a snapshot for change logging + if instance.pk and hasattr(instance, 'snapshot'): + instance.snapshot() + # Instantiate the model form for the object model_form_kwargs = { 'data': record, @@ -465,16 +469,16 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView): messages.success(request, msg) view_name = get_viewname(model, action='list') - results_url = f"{reverse(view_name)}?created_by_request={request.id}" + results_url = f"{reverse(view_name)}?modified_by_request={request.id}" return redirect(results_url) except (AbortTransaction, ValidationError): - clear_webhooks.send(sender=self) + clear_events.send(sender=self) except (AbortRequest, PermissionsViolation) as e: logger.debug(e.message) form.add_error(None, e.message) - clear_webhooks.send(sender=self) + clear_events.send(sender=self) else: logger.debug("Form validation failed") @@ -519,9 +523,11 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView): model_field = self.queryset.model._meta.get_field(name) if isinstance(model_field, (ManyToManyField, ManyToManyRel)): m2m_fields[name] = model_field + elif isinstance(model_field, GenericRel): + # Ignore generic relations (these may be used for other purposes in the form) + continue else: model_fields[name] = model_field - except FieldDoesNotExist: # This form field is used to modify a field rather than set its value directly model_fields[name] = None @@ -550,6 +556,14 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView): elif name in form.changed_data: obj.custom_field_data[cf_name] = customfield.serialize(form.cleaned_data[name]) + # Store M2M values for validation + obj._m2m_values = {} + for field in obj._meta.local_many_to_many: + if value := form.cleaned_data.get(field.name): + obj._m2m_values[field.name] = list(value) + elif field.name in nullified_fields: + obj._m2m_values[field.name] = [] + obj.full_clean() obj.save() updated_objects.append(obj) @@ -625,12 +639,12 @@ class BulkEditView(GetReturnURLMixin, BaseMultiObjectView): except ValidationError as e: messages.error(self.request, ", ".join(e.messages)) - clear_webhooks.send(sender=self) + clear_events.send(sender=self) except (AbortRequest, PermissionsViolation) as e: logger.debug(e.message) form.add_error(None, e.message) - clear_webhooks.send(sender=self) + clear_events.send(sender=self) else: logger.debug("Form validation failed") @@ -726,7 +740,7 @@ class BulkRenameView(GetReturnURLMixin, BaseMultiObjectView): except (AbortRequest, PermissionsViolation) as e: logger.debug(e.message) form.add_error(None, e.message) - clear_webhooks.send(sender=self) + clear_events.send(sender=self) else: form = self.form(initial={'pk': request.POST.getlist('pk')}) @@ -795,14 +809,15 @@ class BulkDeleteView(GetReturnURLMixin, BaseMultiObjectView): queryset = self.queryset.filter(pk__in=pk_list) deleted_count = queryset.count() try: - for obj in queryset: - # Take a snapshot of change-logged models - if hasattr(obj, 'snapshot'): - obj.snapshot() - obj.delete() + with transaction.atomic(): + for obj in queryset: + # Take a snapshot of change-logged models + if hasattr(obj, 'snapshot'): + obj.snapshot() + obj.delete() - except ProtectedError as e: - logger.info("Caught ProtectedError while attempting to delete objects") + except (ProtectedError, RestrictedError) as e: + logger.info(f"Caught {type(e)} while attempting to delete objects") handle_protectederror(queryset, request, e) return redirect(self.get_return_url(request)) @@ -919,12 +934,12 @@ class BulkComponentCreateView(GetReturnURLMixin, BaseMultiObjectView): raise PermissionsViolation except IntegrityError: - clear_webhooks.send(sender=self) + clear_events.send(sender=self) except (AbortRequest, PermissionsViolation) as e: logger.debug(e.message) form.add_error(None, e.message) - clear_webhooks.send(sender=self) + clear_events.send(sender=self) if not form.errors: msg = "Added {} {} to {} {}.".format( diff --git a/netbox/netbox/views/generic/mixins.py b/netbox/netbox/views/generic/mixins.py index a55f01509..d01c534bb 100644 --- a/netbox/netbox/views/generic/mixins.py +++ b/netbox/netbox/views/generic/mixins.py @@ -1,5 +1,6 @@ -from collections import defaultdict +import warnings +from netbox.constants import DEFAULT_ACTION_PERMISSIONS from utilities.permissions import get_permission_for_model __all__ = ( @@ -9,13 +10,15 @@ __all__ = ( class ActionsMixin: - actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete') - action_perms = defaultdict(set, **{ - 'add': {'add'}, - 'import': {'add'}, - 'bulk_edit': {'change'}, - 'bulk_delete': {'delete'}, - }) + """ + Maps action names to the set of required permissions for each. Object list views reference this mapping to + determine whether to render the applicable button for each action: The button will be rendered only if the user + possesses the specified permission(s). + + Standard actions include: add, import, export, bulk_edit, and bulk_delete. Some views extend this default map + with custom actions, such as bulk_sync. + """ + actions = DEFAULT_ACTION_PERMISSIONS def get_permitted_actions(self, user, model=None): """ @@ -23,11 +26,43 @@ class ActionsMixin: """ model = model or self.queryset.model - return [ - action for action in self.actions if user.has_perms([ - get_permission_for_model(model, name) for name in self.action_perms[action] - ]) - ] + # TODO: Remove backward compatibility in Netbox v4.0 + # Determine how permissions are being mapped to actions for the view + if hasattr(self, 'action_perms'): + # Backward compatibility for <3.7 + permissions_map = self.action_perms + warnings.warn( + "Setting action_perms on views is deprecated and will be removed in NetBox v4.0. Use actions instead.", + DeprecationWarning + ) + elif type(self.actions) is dict: + # New actions format (3.7+) + permissions_map = self.actions + else: + # actions is still defined as a list or tuple (<3.7) but no custom mapping is defined; use the old + # default mapping + permissions_map = { + 'add': {'add'}, + 'import': {'add'}, + 'bulk_edit': {'change'}, + 'bulk_delete': {'delete'}, + } + warnings.warn( + "View actions should be defined as a dictionary mapping. Support for the legacy list format will be " + "removed in NetBox v4.0.", + DeprecationWarning + ) + + # Resolve required permissions for each action + permitted_actions = [] + for action in self.actions: + required_permissions = [ + get_permission_for_model(model, name) for name in permissions_map.get(action, set()) + ] + if not required_permissions or user.has_perms(required_permissions): + permitted_actions.append(action) + + return permitted_actions class TableMixin: diff --git a/netbox/netbox/views/generic/object_views.py b/netbox/netbox/views/generic/object_views.py index 99d8ff540..90b6e9495 100644 --- a/netbox/netbox/views/generic/object_views.py +++ b/netbox/netbox/views/generic/object_views.py @@ -1,15 +1,18 @@ import logging +from collections import defaultdict from copy import deepcopy from django.contrib import messages -from django.db import transaction -from django.db.models import ProtectedError +from django.db import router, transaction +from django.db.models import ProtectedError, RestrictedError +from django.db.models.deletion import Collector +from django.http import HttpResponse from django.shortcuts import redirect, render from django.urls import reverse from django.utils.html import escape from django.utils.safestring import mark_safe -from extras.signals import clear_webhooks +from extras.signals import clear_events from utilities.error_handlers import handle_protectederror from utilities.exceptions import AbortRequest, PermissionsViolation from utilities.forms import ConfirmationForm, restrict_form_fields @@ -83,9 +86,8 @@ class ObjectChildrenView(ObjectView, ActionsMixin, TableMixin): child_model: The model class which represents the child objects table: The django-tables2 Table class used to render the child objects list filterset: A django-filter FilterSet that is applied to the queryset - actions: Supported actions for the model. When adding custom actions, bulk action names must - be prefixed with `bulk_`. Default actions: add, import, export, bulk_edit, bulk_delete - action_perms: A dictionary mapping supported actions to a set of permissions required for each + actions: A mapping of supported actions to their required permissions. When adding custom actions, bulk + action names must be prefixed with `bulk_`. (See ActionsMixin.) """ child_model = None table = None @@ -298,7 +300,7 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView): except (AbortRequest, PermissionsViolation) as e: logger.debug(e.message) form.add_error(None, e.message) - clear_webhooks.send(sender=self) + clear_events.send(sender=self) else: logger.debug("Form validation failed") @@ -320,6 +322,40 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView): def get_required_permission(self): return get_permission_for_model(self.queryset.model, 'delete') + def _get_dependent_objects(self, obj): + """ + Returns a dictionary mapping of dependent objects (organized by model) which will be deleted as a result of + deleting the requested object. + + Args: + obj: The object to return dependent objects for + """ + using = router.db_for_write(obj._meta.model) + collector = Collector(using=using) + collector.collect([obj]) + + # Compile a mapping of models to instances + dependent_objects = defaultdict(list) + for model, instance in collector.instances_with_model(): + # Omit the root object + if instance != obj: + dependent_objects[model].append(instance) + + return dict(dependent_objects) + + def _handle_protected_objects(self, obj, protected_objects, request, exc): + """ + Handle a ProtectedError or RestrictedError exception raised while attempt to resolve dependent objects. + """ + handle_protectederror(protected_objects, request, exc) + + if is_htmx(request): + return HttpResponse(headers={ + 'HX-Redirect': obj.get_absolute_url(), + }) + else: + return redirect(obj.get_absolute_url()) + # # Request handlers # @@ -334,6 +370,13 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView): obj = self.get_object(**kwargs) form = ConfirmationForm(initial=request.GET) + try: + dependent_objects = self._get_dependent_objects(obj) + except ProtectedError as e: + return self._handle_protected_objects(obj, e.protected_objects, request, e) + except RestrictedError as e: + return self._handle_protected_objects(obj, e.restricted_objects, request, e) + # If this is an HTMX request, return only the rendered deletion form as modal content if is_htmx(request): viewname = get_viewname(self.queryset.model, action='delete') @@ -343,6 +386,7 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView): 'object_type': self.queryset.model._meta.verbose_name, 'form': form, 'form_url': form_url, + 'dependent_objects': dependent_objects, **self.get_extra_context(request, obj), }) @@ -350,6 +394,7 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView): 'object': obj, 'form': form, 'return_url': self.get_return_url(request, obj), + 'dependent_objects': dependent_objects, **self.get_extra_context(request, obj), }) @@ -374,8 +419,8 @@ class ObjectDeleteView(GetReturnURLMixin, BaseObjectView): try: obj.delete() - except ProtectedError as e: - logger.info("Caught ProtectedError while attempting to delete object") + except (ProtectedError, RestrictedError) as e: + logger.info(f"Caught {type(e)} while attempting to delete objects") handle_protectederror([obj], request, e) return redirect(obj.get_absolute_url()) @@ -502,7 +547,7 @@ class ComponentCreateView(GetReturnURLMixin, BaseObjectView): except (AbortRequest, PermissionsViolation) as e: logger.debug(e.message) form.add_error(None, e.message) - clear_webhooks.send(sender=self) + clear_events.send(sender=self) return render(request, self.template_name, { 'object': instance, diff --git a/netbox/project-static/dist/graphiql.css b/netbox/project-static/dist/graphiql.css index a20e480d3..267856f34 100644 --- a/netbox/project-static/dist/graphiql.css +++ b/netbox/project-static/dist/graphiql.css @@ -1 +1 @@ -.graphiql-container,.graphiql-container button,.graphiql-container input{color:#141823;font-family:system,-apple-system,San Francisco,".SFNSDisplay-Regular",Segoe UI,Segoe,Segoe WP,Helvetica Neue,helvetica,Lucida Grande,arial,sans-serif;font-size:14px}.graphiql-container{display:flex;flex-direction:row;height:100%;margin:0;overflow:hidden;width:100%}.graphiql-container .editorWrap{display:flex;flex-direction:column;flex:1;overflow-x:hidden}.graphiql-container .title{font-size:18px}.graphiql-container .title em{font-family:georgia;font-size:19px}.graphiql-container .topBarWrap{display:flex;flex-direction:row}.graphiql-container .topBar{align-items:center;background:linear-gradient(#f7f7f7,#e2e2e2);border-bottom:1px solid #d0d0d0;cursor:default;display:flex;flex-direction:row;flex:1;height:34px;overflow-y:visible;padding:7px 14px 6px;user-select:none}.graphiql-container .toolbar{overflow-x:visible;display:flex}.graphiql-container .docExplorerShow,.graphiql-container .historyShow{background:linear-gradient(#f7f7f7,#e2e2e2);border-radius:0;border-bottom:1px solid #d0d0d0;border-right:none;border-top:none;color:#3b5998;cursor:pointer;font-size:14px;margin:0;padding:2px 20px 0 18px}.graphiql-container .docExplorerShow{border-left:1px solid rgba(0,0,0,.2)}.graphiql-container .historyShow{border-right:1px solid rgba(0,0,0,.2);border-left:0}.graphiql-container .docExplorerShow:before{border-left:2px solid #3B5998;border-top:2px solid #3B5998;content:"";display:inline-block;height:9px;margin:0 3px -1px 0;position:relative;transform:rotate(-45deg);width:9px}.graphiql-container .editorBar{display:flex;flex-direction:row;flex:1}.graphiql-container .queryWrap{display:flex;flex-direction:column;flex:1}.graphiql-container .resultWrap{border-left:solid 1px #e0e0e0;display:flex;flex-direction:column;flex:1;flex-basis:1em;position:relative}.graphiql-container .docExplorerWrap,.graphiql-container .historyPaneWrap{background:white;box-shadow:0 0 8px #00000026;position:relative;z-index:3}.graphiql-container .historyPaneWrap{min-width:230px;z-index:5}.graphiql-container .docExplorerResizer{cursor:col-resize;height:100%;left:-5px;position:absolute;top:0;width:10px;z-index:10}.graphiql-container .docExplorerHide{cursor:pointer;font-size:18px;margin:-7px -8px -6px 0;padding:18px 16px 15px 12px;background:0;border:0;line-height:14px}.graphiql-container div .query-editor{flex:1;position:relative}.graphiql-container .secondary-editor{display:flex;flex-direction:column;height:30px;position:relative}.graphiql-container .secondary-editor-title{background:#eeeeee;border-bottom:1px solid #d6d6d6;border-top:1px solid #e0e0e0;color:#777;font-variant:small-caps;font-weight:700;letter-spacing:1px;line-height:14px;padding:6px 0 8px 43px;text-transform:lowercase;user-select:none}.graphiql-container .codemirrorWrap,.graphiql-container .result-window{flex:1;height:100%;position:relative}.graphiql-container .footer{background:#f6f7f8;border-left:1px solid #e0e0e0;border-top:1px solid #e0e0e0;margin-left:12px;position:relative}.graphiql-container .footer:before{background:#eeeeee;bottom:0;content:" ";left:-13px;position:absolute;top:-1px;width:12px}.result-window .CodeMirror{background:#f6f7f8}.graphiql-container .result-window .CodeMirror-gutters{background-color:#eee;border-color:#e0e0e0;cursor:col-resize}.graphiql-container .result-window .CodeMirror-foldgutter,.graphiql-container .result-window .CodeMirror-foldgutter-open:after,.graphiql-container .result-window .CodeMirror-foldgutter-folded:after{padding-left:3px}.graphiql-container .toolbar-button{background:#fdfdfd;background:linear-gradient(#f9f9f9,#ececec);border:0;border-radius:3px;box-shadow:inset 0 0 0 1px #0003,0 1px #ffffffb3,inset 0 1px #fff;color:#555;cursor:pointer;display:inline-block;margin:0 5px;padding:3px 11px 5px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;max-width:150px}.graphiql-container .toolbar-button:active{background:linear-gradient(#ececec,#d5d5d5);box-shadow:0 1px #ffffffb3,inset 0 0 0 1px #0000001a,inset 0 1px 1px 1px #0000001f,inset 0 0 5px #0000001a}.graphiql-container .toolbar-button.error{background:linear-gradient(#fdf3f3,#e6d6d7);color:#b00}.graphiql-container .toolbar-button-group{margin:0 5px;white-space:nowrap}.graphiql-container .toolbar-button-group>*{margin:0}.graphiql-container .toolbar-button-group>*:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.graphiql-container .toolbar-button-group>*:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.graphiql-container .execute-button-wrap{height:34px;margin:0 14px 0 28px;position:relative}.graphiql-container .execute-button{background:linear-gradient(#fdfdfd,#d2d3d6);border-radius:17px;border:1px solid rgba(0,0,0,.25);box-shadow:0 1px #fff;cursor:pointer;fill:#444;height:34px;margin:0;padding:0;width:34px}.graphiql-container .execute-button svg{pointer-events:none}.graphiql-container .execute-button:active{background:linear-gradient(#e6e6e6,#c3c3c3);box-shadow:0 1px #fff,inset 0 0 2px #0003,inset 0 0 6px #0000001a}.graphiql-container .toolbar-menu,.graphiql-container .toolbar-select{position:relative}.graphiql-container .execute-options,.graphiql-container .toolbar-menu-items,.graphiql-container .toolbar-select-options{background:#fff;box-shadow:0 0 0 1px #0000001a,0 2px 4px #00000040;margin:0;padding:6px 0;position:absolute;z-index:100}.graphiql-container .execute-options{min-width:100px;top:37px;left:-1px}.graphiql-container .toolbar-menu-items{left:1px;margin-top:-1px;min-width:110%;top:100%;visibility:hidden}.graphiql-container .toolbar-menu-items.open{visibility:visible}.graphiql-container .toolbar-select-options{left:0;min-width:100%;top:-5px;visibility:hidden}.graphiql-container .toolbar-select-options.open{visibility:visible}.graphiql-container .execute-options>li,.graphiql-container .toolbar-menu-items>li,.graphiql-container .toolbar-select-options>li{cursor:pointer;display:block;margin:none;max-width:300px;overflow:hidden;padding:2px 20px 4px 11px;white-space:nowrap}.graphiql-container .execute-options>li.selected,.graphiql-container .toolbar-menu-items>li.hover,.graphiql-container .toolbar-menu-items>li:active,.graphiql-container .toolbar-menu-items>li:hover,.graphiql-container .toolbar-select-options>li.hover,.graphiql-container .toolbar-select-options>li:active,.graphiql-container .toolbar-select-options>li:hover,.graphiql-container .history-contents>li:hover,.graphiql-container .history-contents>li:active{background:#e10098;color:#fff}.graphiql-container .toolbar-select-options>li>svg{display:inline;fill:#666;margin:0 -6px 0 6px;pointer-events:none;vertical-align:middle}.graphiql-container .toolbar-select-options>li.hover>svg,.graphiql-container .toolbar-select-options>li:active>svg,.graphiql-container .toolbar-select-options>li:hover>svg{fill:#fff}.graphiql-container .CodeMirror-scroll{overflow-scrolling:touch}.graphiql-container .CodeMirror{color:#141823;font-family:Consolas,Inconsolata,Droid Sans Mono,Monaco,monospace;font-size:13px;height:100%;left:0;position:absolute;top:0;width:100%}.graphiql-container .CodeMirror-lines{padding:20px 0}.CodeMirror-hint-information .content{box-orient:vertical;color:#141823;display:flex;font-family:system,-apple-system,San Francisco,".SFNSDisplay-Regular",Segoe UI,Segoe,Segoe WP,Helvetica Neue,helvetica,Lucida Grande,arial,sans-serif;font-size:13px;line-clamp:3;line-height:16px;max-height:48px;overflow:hidden;text-overflow:-o-ellipsis-lastline}.CodeMirror-hint-information .content p:first-child{margin-top:0}.CodeMirror-hint-information .content p:last-child{margin-bottom:0}.CodeMirror-hint-information .infoType{color:#ca9800;cursor:pointer;display:inline;margin-right:.5em}.autoInsertedLeaf.cm-property{animation-duration:6s;animation-name:insertionFade;border-bottom:2px solid rgba(255,255,255,0);border-radius:2px;margin:-2px -4px -1px;padding:2px 4px 1px}@keyframes insertionFade{0%,to{background:rgba(255,255,255,0);border-color:#fff0}15%,85%{background:#fbffc9;border-color:#f0f3c0}}div.CodeMirror-lint-tooltip{background-color:#fff;border-radius:2px;border:0;color:#141823;box-shadow:0 1px 3px #00000073;font-size:13px;line-height:16px;max-width:430px;opacity:0;padding:8px 10px;transition:opacity .15s;white-space:pre-wrap}div.CodeMirror-lint-tooltip>*{padding-left:23px}div.CodeMirror-lint-tooltip>*+*{margin-top:12px}.graphiql-container .CodeMirror-foldmarker{border-radius:4px;background:#08f;background:linear-gradient(#43A8FF,#0F83E8);box-shadow:0 1px 1px #0003,inset 0 0 0 1px #0000001a;color:#fff;font-family:arial;font-size:12px;line-height:0;margin:0 3px;padding:0 4px 1px;text-shadow:0 -1px rgba(0,0,0,.1)}.graphiql-container div.CodeMirror span.CodeMirror-matchingbracket{color:#555;text-decoration:underline}.graphiql-container div.CodeMirror span.CodeMirror-nonmatchingbracket{color:red}.cm-comment{color:#999}.cm-punctuation{color:#555}.cm-keyword{color:#b11a04}.cm-def{color:#d2054e}.cm-property{color:#1f61a0}.cm-qualifier{color:#1c92a9}.cm-attribute{color:#8b2bb9}.cm-number{color:#2882f9}.cm-string{color:#d64292}.cm-builtin{color:#d47509}.cm-string-2{color:#0b7fc7}.cm-variable{color:#397d13}.cm-meta{color:#b33086}.cm-atom{color:#ca9800}.CodeMirror{color:#000;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror .CodeMirror-cursor{border-left:1px solid black}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.CodeMirror.cm-fat-cursor div.CodeMirror-cursor{background:#7e7;border:0;width:auto}.CodeMirror.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{animation:blink 1.06s steps(1) infinite;border:0;width:auto}@keyframes blink{0%{background:#7e7}50%{background:none}to{background:#7e7}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-ruler{border-left:1px solid #ccc;position:absolute}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:white;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-30px;margin-right:-30px;outline:none;overflow:scroll!important;padding-bottom:30px;position:relative}.CodeMirror-sizer{border-right:30px solid transparent;position:relative}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{display:none;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{min-height:100%;position:absolute;left:0;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-30px;vertical-align:top;white-space:normal;*zoom:1;*display:inline}.CodeMirror-gutter-wrapper{background:none!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper{user-select:none}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-webkit-tap-highlight-color:transparent;background:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:none;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;word-wrap:normal;z-index:2}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;inset:0;z-index:0}.CodeMirror-linewidget{overflow:auto;position:relative;z-index:2}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.CodeMirror span{*vertical-align: text-bottom}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.CodeMirror-dialog{background:inherit;color:inherit;left:0;right:0;overflow:hidden;padding:.1em .8em;position:absolute;z-index:15}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{background:transparent;border:1px solid #d3d6db;color:inherit;font-family:monospace;outline:none;width:20em}.CodeMirror-dialog button{font-size:70%}.CodeMirror-foldmarker{color:#00f;cursor:pointer;font-family:arial;line-height:.3;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25be"}.CodeMirror-foldgutter-folded:after{content:"\25b8"}.CodeMirror-info{background:white;border-radius:2px;box-shadow:0 1px 3px #00000073;box-sizing:border-box;color:#555;font-family:system,-apple-system,San Francisco,".SFNSDisplay-Regular",Segoe UI,Segoe,Segoe WP,Helvetica Neue,helvetica,Lucida Grande,arial,sans-serif;font-size:13px;line-height:16px;margin:8px -8px;max-width:400px;opacity:0;overflow:hidden;padding:8px;position:fixed;transition:opacity .15s;z-index:50}.CodeMirror-info :first-child{margin-top:0}.CodeMirror-info :last-child{margin-bottom:0}.CodeMirror-info p{margin:1em 0}.CodeMirror-info .info-description{color:#777;line-height:16px;margin-top:1em;max-height:80px;overflow:hidden}.CodeMirror-info .info-deprecation{background:#fffae8;box-shadow:inset 0 1px 1px -1px #bfb063;color:#867f70;line-height:16px;margin:8px -8px -8px;max-height:80px;overflow:hidden;padding:8px}.CodeMirror-info .info-deprecation-label{color:#c79b2e;cursor:default;display:block;font-size:9px;font-weight:700;letter-spacing:1px;line-height:1;padding-bottom:5px;text-transform:uppercase;user-select:none}.CodeMirror-info .info-deprecation-label+*{margin-top:0}.CodeMirror-info a{text-decoration:none}.CodeMirror-info a:hover{text-decoration:underline}.CodeMirror-info .type-name{color:#ca9800}.CodeMirror-info .field-name{color:#1f61a0}.CodeMirror-info .enum-value{color:#0b7fc7}.CodeMirror-info .arg-name{color:#8b2bb9}.CodeMirror-info .directive-name{color:#b33086}.CodeMirror-jump-token{text-decoration:underline;cursor:pointer}.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:infobackground;border-radius:4px;border:1px solid black;color:infotext;font-family:monospace;font-size:10pt;max-width:600px;opacity:0;overflow:hidden;padding:2px 5px;position:fixed;transition:opacity .4s;white-space:pre-wrap;z-index:100}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-position:left bottom;background-repeat:repeat-x}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-marker-warning{background-position:center center;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:16px}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{background-position:top left;background-repeat:no-repeat;padding-left:18px}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-position:right bottom;background-repeat:no-repeat;width:100%;height:100%}.graphiql-container .spinner-container{height:36px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:36px;z-index:10}.graphiql-container .spinner{animation:rotation .6s infinite linear;border-bottom:6px solid rgba(150,150,150,.15);border-left:6px solid rgba(150,150,150,.15);border-radius:100%;border-right:6px solid rgba(150,150,150,.15);border-top:6px solid rgba(150,150,150,.8);display:inline-block;height:24px;position:absolute;vertical-align:middle;width:24px}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.CodeMirror-hints{background:white;box-shadow:0 1px 3px #00000073;font-family:Consolas,Inconsolata,Droid Sans Mono,Monaco,monospace;font-size:13px;list-style:none;margin:0;max-height:14.5em;overflow:hidden;overflow-y:auto;padding:0;position:absolute;z-index:10}.CodeMirror-hint{border-top:solid 1px #f7f7f7;color:#141823;cursor:pointer;margin:0;max-width:300px;overflow:hidden;padding:2px 6px;white-space:pre}li.CodeMirror-hint-active{background-color:#08f;border-top-color:#fff;color:#fff}.CodeMirror-hint-information{border-top:solid 1px #c0c0c0;max-width:300px;padding:4px 6px;position:relative;z-index:1}.CodeMirror-hint-information:first-child{border-bottom:solid 1px #c0c0c0;border-top:none;margin-bottom:-1px}.CodeMirror-hint-deprecation{background:#fffae8;box-shadow:inset 0 1px 1px -1px #bfb063;color:#867f70;font-family:system,-apple-system,San Francisco,".SFNSDisplay-Regular",Segoe UI,Segoe,Segoe WP,Helvetica Neue,helvetica,Lucida Grande,arial,sans-serif;font-size:13px;line-height:16px;margin-top:4px;max-height:80px;overflow:hidden;padding:6px}.CodeMirror-hint-deprecation .deprecation-label{color:#c79b2e;cursor:default;display:block;font-size:9px;font-weight:700;letter-spacing:1px;line-height:1;padding-bottom:5px;text-transform:uppercase;user-select:none}.CodeMirror-hint-deprecation .deprecation-label+*{margin-top:0}.CodeMirror-hint-deprecation :last-child{margin-bottom:0}.graphiql-container .doc-explorer{background:white}.graphiql-container .doc-explorer-title-bar,.graphiql-container .history-title-bar{cursor:default;display:flex;height:34px;line-height:14px;padding:8px 8px 5px;position:relative;user-select:none}.graphiql-container .doc-explorer-title,.graphiql-container .history-title{flex:1;font-weight:700;overflow-x:hidden;padding:10px 0 10px 10px;text-align:center;text-overflow:ellipsis;user-select:text;white-space:nowrap}.graphiql-container .doc-explorer-back{color:#3b5998;cursor:pointer;margin:-7px 0 -6px -8px;overflow-x:hidden;padding:17px 12px 16px 16px;text-overflow:ellipsis;white-space:nowrap;background:0;border:0;line-height:14px}.doc-explorer-narrow .doc-explorer-back{width:0}.graphiql-container .doc-explorer-back:before{border-left:2px solid #3B5998;border-top:2px solid #3B5998;content:"";display:inline-block;height:9px;margin:0 3px -1px 0;position:relative;transform:rotate(-45deg);width:9px}.graphiql-container .doc-explorer-rhs{position:relative}.graphiql-container .doc-explorer-contents,.graphiql-container .history-contents{background-color:#fff;border-top:1px solid #d6d6d6;inset:47px 0 0;overflow-y:auto;padding:20px 15px;position:absolute}.graphiql-container .doc-explorer-contents{min-width:300px}.graphiql-container .doc-type-description p:first-child,.graphiql-container .doc-type-description blockquote:first-child{margin-top:0}.graphiql-container .doc-explorer-contents a{cursor:pointer;text-decoration:none}.graphiql-container .doc-explorer-contents a:hover{text-decoration:underline}.graphiql-container .doc-value-description>:first-child{margin-top:4px}.graphiql-container .doc-value-description>:last-child{margin-bottom:4px}.graphiql-container .doc-type-description code,.graphiql-container .doc-type-description pre,.graphiql-container .doc-category code,.graphiql-container .doc-category pre{--saf-0: rgba(var(--sk_foreground_low,29,28,29),.13);font-size:12px;line-height:1.50001;font-variant-ligatures:none;white-space:pre;white-space:pre-wrap;word-wrap:break-word;word-break:normal;-webkit-tab-size:4;-moz-tab-size:4;tab-size:4}.graphiql-container .doc-type-description code,.graphiql-container .doc-category code{padding:2px 3px 1px;border:1px solid var(--saf-0);border-radius:3px;background-color:rgba(var(--sk_foreground_min,29,28,29),.04);color:#e01e5a;background-color:#fff}.graphiql-container .doc-category{margin:20px 0}.graphiql-container .doc-category-title{border-bottom:1px solid #e0e0e0;color:#777;cursor:default;font-size:14px;font-variant:small-caps;font-weight:700;letter-spacing:1px;margin:0 -15px 10px 0;padding:10px 0;user-select:none}.graphiql-container .doc-category-item{margin:12px 0;color:#555}.graphiql-container .keyword{color:#b11a04}.graphiql-container .type-name{color:#ca9800}.graphiql-container .field-name{color:#1f61a0}.graphiql-container .field-short-description{color:#999;margin-left:5px;overflow:hidden;text-overflow:ellipsis}.graphiql-container .enum-value{color:#0b7fc7}.graphiql-container .arg-name{color:#8b2bb9}.graphiql-container .arg{display:block;margin-left:1em}.graphiql-container .arg:first-child:last-child,.graphiql-container .arg:first-child:nth-last-child(2),.graphiql-container .arg:first-child:nth-last-child(2)~.arg{display:inherit;margin:inherit}.graphiql-container .arg:first-child:nth-last-child(2):after{content:", "}.graphiql-container .arg-default-value{color:#43a047}.graphiql-container .doc-deprecation{background:#fffae8;box-shadow:inset 0 0 1px #bfb063;color:#867f70;line-height:16px;margin:8px -8px;max-height:80px;overflow:hidden;padding:8px;border-radius:3px}.graphiql-container .doc-deprecation:before{content:"Deprecated:";color:#c79b2e;cursor:default;display:block;font-size:9px;font-weight:700;letter-spacing:1px;line-height:1;padding-bottom:5px;text-transform:uppercase;user-select:none}.graphiql-container .doc-deprecation>:first-child{margin-top:0}.graphiql-container .doc-deprecation>:last-child{margin-bottom:0}.graphiql-container .show-btn{-webkit-appearance:initial;display:block;border-radius:3px;border:solid 1px #ccc;text-align:center;padding:8px 12px 10px;width:100%;box-sizing:border-box;background:#fbfcfc;color:#555;cursor:pointer}.graphiql-container .search-box{border-bottom:1px solid #d3d6db;display:flex;align-items:center;font-size:14px;margin:-15px -15px 12px 0;position:relative}.graphiql-container .search-box-icon{cursor:pointer;display:block;font-size:24px;transform:rotate(-45deg);user-select:none}.graphiql-container .search-box .search-box-clear{background-color:#d0d0d0;border-radius:12px;color:#fff;cursor:pointer;font-size:11px;padding:1px 5px 2px;position:absolute;right:3px;user-select:none;border:0}.graphiql-container .search-box .search-box-clear:hover{background-color:#b9b9b9}.graphiql-container .search-box>input{border:none;box-sizing:border-box;font-size:14px;outline:none;padding:6px 24px 8px 20px;width:100%}.graphiql-container .error-container{font-weight:700;left:0;letter-spacing:1px;opacity:.5;position:absolute;right:0;text-align:center;text-transform:uppercase;top:50%;transform:translateY(-50%)}.graphiql-container .history-contents{font-family:Consolas,Inconsolata,Droid Sans Mono,Monaco,monospace}.graphiql-container .history-contents{margin:0;padding:0}.graphiql-container .history-contents li{align-items:center;display:flex;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0;padding:8px;border-bottom:1px solid #e0e0e0}.graphiql-container .history-contents li button:not(.history-label){display:none;margin-left:10px}.graphiql-container .history-contents li:hover button:not(.history-label),.graphiql-container .history-contents li:focus-within button:not(.history-label){display:inline-block}.graphiql-container .history-contents input,.graphiql-container .history-contents button{padding:0;background:0;border:0;font-size:inherit;font-family:inherit;line-height:14px;color:inherit}.graphiql-container .history-contents input{flex-grow:1}.graphiql-container .history-contents input::placeholder{color:inherit}.graphiql-container .history-contents button{cursor:pointer;text-align:left}.graphiql-container .history-contents .history-label{flex-grow:1;overflow:hidden;text-overflow:ellipsis} +.graphiql-container,.graphiql-container button,.graphiql-container input{color:#141823;font-family:system,-apple-system,San Francisco,".SFNSDisplay-Regular",Segoe UI,Segoe,Segoe WP,Helvetica Neue,helvetica,Lucida Grande,arial,sans-serif;font-size:14px}.graphiql-container{display:flex;flex-direction:row;height:100%;margin:0;overflow:hidden;width:100%}.graphiql-container .editorWrap{display:flex;flex-direction:column;flex:1;overflow-x:hidden}.graphiql-container .title{font-size:18px}.graphiql-container .title em{font-family:georgia;font-size:19px}.graphiql-container .topBarWrap{display:flex;flex-direction:row}.graphiql-container .topBar{align-items:center;background:linear-gradient(#f7f7f7,#e2e2e2);border-bottom:1px solid #d0d0d0;cursor:default;display:flex;flex-direction:row;flex:1;height:34px;overflow-y:visible;padding:7px 14px 6px;user-select:none}.graphiql-container .toolbar{overflow-x:visible;display:flex}.graphiql-container .docExplorerShow,.graphiql-container .historyShow{background:linear-gradient(#f7f7f7,#e2e2e2);border-radius:0;border-bottom:1px solid #d0d0d0;border-right:none;border-top:none;color:#3b5998;cursor:pointer;font-size:14px;margin:0;padding:2px 20px 0 18px}.graphiql-container .docExplorerShow{border-left:1px solid rgba(0,0,0,.2)}.graphiql-container .historyShow{border-right:1px solid rgba(0,0,0,.2);border-left:0}.graphiql-container .docExplorerShow:before{border-left:2px solid #3b5998;border-top:2px solid #3b5998;content:"";display:inline-block;height:9px;margin:0 3px -1px 0;position:relative;transform:rotate(-45deg);width:9px}.graphiql-container .editorBar{display:flex;flex-direction:row;flex:1;max-height:100%}.graphiql-container .queryWrap{display:flex;flex-direction:column;flex:1}.graphiql-container .resultWrap{border-left:solid 1px #e0e0e0;display:flex;flex-direction:column;flex:1;flex-basis:1em;position:relative}.graphiql-container .docExplorerWrap,.graphiql-container .historyPaneWrap{background:white;box-shadow:0 0 8px #00000026;position:relative;z-index:3}.graphiql-container .historyPaneWrap{min-width:230px;z-index:5}.graphiql-container .docExplorerResizer{cursor:col-resize;height:100%;left:-5px;position:absolute;top:0;width:10px;z-index:10}.graphiql-container .docExplorerHide{cursor:pointer;font-size:18px;margin:-7px -8px -6px 0;padding:18px 16px 15px 12px;background:0;border:0;line-height:14px}.graphiql-container div .query-editor{flex:1;position:relative}.graphiql-container .secondary-editor{display:flex;flex-direction:column;height:30px;position:relative}.graphiql-container .secondary-editor-title{background:#eeeeee;border-bottom:1px solid #d6d6d6;border-top:1px solid #e0e0e0;color:#777;font-variant:small-caps;font-weight:700;letter-spacing:1px;line-height:14px;padding:6px 0 8px 43px;text-transform:lowercase;user-select:none}.graphiql-container .codemirrorWrap,.graphiql-container .result-window{flex:1;height:100%;position:relative}.graphiql-container .footer{background:#f6f7f8;border-left:1px solid #e0e0e0;border-top:1px solid #e0e0e0;margin-left:12px;position:relative}.graphiql-container .footer:before{background:#eeeeee;bottom:0;content:" ";left:-13px;position:absolute;top:-1px;width:12px}.result-window .CodeMirror.cm-s-graphiql{background:#f6f7f8}.graphiql-container .result-window .CodeMirror-gutters{background-color:#eee;border-color:#e0e0e0;cursor:col-resize}.graphiql-container .result-window .CodeMirror-foldgutter,.graphiql-container .result-window .CodeMirror-foldgutter-open:after,.graphiql-container .result-window .CodeMirror-foldgutter-folded:after{padding-left:3px}.graphiql-container .toolbar-button{background:#fdfdfd;background:linear-gradient(#f9f9f9,#ececec);border:0;border-radius:3px;box-shadow:inset 0 0 0 1px #0003,0 1px #ffffffb3,inset 0 1px #fff;color:#555;cursor:pointer;display:inline-block;margin:0 5px;padding:3px 11px 5px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;max-width:150px}.graphiql-container .toolbar-button:active{background:linear-gradient(#ececec,#d5d5d5);box-shadow:0 1px #ffffffb3,inset 0 0 0 1px #0000001a,inset 0 1px 1px 1px #0000001f,inset 0 0 5px #0000001a}.graphiql-container .toolbar-button.error{background:linear-gradient(#fdf3f3,#e6d6d7);color:#b00}.graphiql-container .toolbar-button-group{margin:0 5px;white-space:nowrap}.graphiql-container .toolbar-button-group>*{margin:0}.graphiql-container .toolbar-button-group>*:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.graphiql-container .toolbar-button-group>*:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.graphiql-container .execute-button-wrap{height:34px;margin:0 14px 0 28px;position:relative}.graphiql-container .execute-button{background:linear-gradient(#fdfdfd,#d2d3d6);border-radius:17px;border:1px solid rgba(0,0,0,.25);box-shadow:0 1px #fff;cursor:pointer;fill:#444;height:34px;margin:0;padding:0;width:34px}.graphiql-container .toolbar-button>svg,.graphiql-container .execute-button svg{pointer-events:none}.graphiql-container .execute-button:active{background:linear-gradient(#e6e6e6,#c3c3c3);box-shadow:0 1px #fff,inset 0 0 2px #0003,inset 0 0 6px #0000001a}.graphiql-container .toolbar-menu,.graphiql-container .toolbar-select{position:relative}.graphiql-container .execute-options,.graphiql-container .toolbar-menu-items,.graphiql-container .toolbar-select-options{background:#fff;box-shadow:0 0 0 1px #0000001a,0 2px 4px #00000040;margin:0;padding:6px 0;position:absolute;z-index:100}.graphiql-container .execute-options{min-width:100px;top:37px;left:-1px}.graphiql-container .toolbar-menu-items{left:1px;margin-top:-1px;min-width:110%;top:100%;visibility:hidden}.graphiql-container .toolbar-menu-items.open{visibility:visible}.graphiql-container .toolbar-select-options{left:0;min-width:100%;top:-5px;visibility:hidden}.graphiql-container .toolbar-select-options.open{visibility:visible}.graphiql-container .execute-options>li,.graphiql-container .toolbar-menu-items>li,.graphiql-container .toolbar-select-options>li{cursor:pointer;display:block;margin:none;max-width:300px;overflow:hidden;padding:2px 20px 4px 11px;white-space:nowrap}.graphiql-container .execute-options>li.selected,.graphiql-container .toolbar-menu-items>li.hover,.graphiql-container .toolbar-menu-items>li:active,.graphiql-container .toolbar-menu-items>li:hover,.graphiql-container .toolbar-select-options>li.hover,.graphiql-container .toolbar-select-options>li:active,.graphiql-container .toolbar-select-options>li:hover,.graphiql-container .history-contents>li:hover,.graphiql-container .history-contents>li:active{background:#e10098;color:#fff}.graphiql-container .toolbar-select-options>li>svg{display:inline;fill:#666;margin:0 -6px 0 6px;pointer-events:none;vertical-align:middle}.graphiql-container .toolbar-select-options>li.hover>svg,.graphiql-container .toolbar-select-options>li:active>svg,.graphiql-container .toolbar-select-options>li:hover>svg{fill:#fff}.graphiql-container .CodeMirror-scroll{overflow-scrolling:touch}.graphiql-container .CodeMirror{color:#141823;font-family:Consolas,Inconsolata,Droid Sans Mono,Monaco,monospace;font-size:13px;height:100%;left:0;position:absolute;top:0;width:100%}.graphiql-container .CodeMirror-lines{padding:20px 0}.CodeMirror-hint-information .content{box-orient:vertical;color:#141823;display:flex;font-family:system,-apple-system,San Francisco,".SFNSDisplay-Regular",Segoe UI,Segoe,Segoe WP,Helvetica Neue,helvetica,Lucida Grande,arial,sans-serif;font-size:13px;line-clamp:3;line-height:16px;max-height:48px;overflow:hidden;text-overflow:-o-ellipsis-lastline}.CodeMirror-hint-information .content p:first-child{margin-top:0}.CodeMirror-hint-information .content p:last-child{margin-bottom:0}.CodeMirror-hint-information .infoType{color:#ca9800;cursor:pointer;display:inline;margin-right:.5em}.autoInsertedLeaf.cm-property{animation-duration:6s;animation-name:insertionFade;border-bottom:2px solid rgba(255,255,255,0);border-radius:2px;margin:-2px -4px -1px;padding:2px 4px 1px}@keyframes insertionFade{0%,to{background:rgba(255,255,255,0);border-color:#fff0}15%,85%{background:#fbffc9;border-color:#f0f3c0}}div.CodeMirror-lint-tooltip{background-color:#fff;border-radius:2px;border:0;color:#141823;box-shadow:0 1px 3px #00000073;font-size:13px;line-height:16px;max-width:430px;opacity:0;padding:8px 10px;transition:opacity .15s;white-space:pre-wrap}div.CodeMirror-lint-tooltip>*{padding-left:23px}div.CodeMirror-lint-tooltip>*+*{margin-top:12px}.graphiql-container .variable-editor-title-text{cursor:pointer;display:inline-block;color:gray}.graphiql-container .variable-editor-title-text.active{color:#000}.graphiql-container .tabs{height:42px;background-image:linear-gradient(#f7f7f7,#e2e2e2);display:flex;align-items:center}.graphiql-container .tab{position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center;padding-top:0;padding-right:6px;padding-left:14px;height:100%;color:#0009;border-left:1px solid lightgray;border-top-style:none;border-bottom-style:none;border-right-style:none}.graphiql-container .tab:first-child:nth-last-child(2){padding-right:14px}.graphiql-container .tab:hover{background-image:linear-gradient(rgba(245,245,245,.7),rgba(215,215,215,1));color:#000c}.graphiql-container .tab.active{background-image:linear-gradient(rgba(233,233,233,.7),rgba(205,205,205,1));color:#000}.graphiql-container .tab .close{display:inline-block;cursor:pointer;border:none;background:transparent;margin-left:6px;padding:3px 6px;border-radius:4px}.graphiql-container .tab:hover .close,.graphiql-container .tab.active .close{opacity:1}.graphiql-container .tab .close:before{content:"\2715";display:inline-block;font-weight:700;font-size:12px;color:#000000b3;height:14px}.graphiql-container .tab .close:hover{background:rgba(0,0,0,.08)}.graphiql-container .tab .close:active{background:rgba(0,0,0,.12)}.graphiql-container .tab-add{display:flex;align-items:center;justify-content:center;border:none;background:transparent;line-height:1;font-size:26px;padding:0 8px 3px;height:30px;border-radius:4px;color:#00000080;margin-left:6px;cursor:pointer}.graphiql-container .tab-add:hover{background:rgba(0,0,0,.06)}.graphiql-container .tab-add:active{background:rgba(0,0,0,.1)}.graphiql-container .CodeMirror-foldmarker{border-radius:4px;background:#08f;background:linear-gradient(#43a8ff,#0f83e8);box-shadow:0 1px 1px #0003,inset 0 0 0 1px #0000001a;color:#fff;font-family:arial;font-size:12px;line-height:0;margin:0 3px;padding:0 4px 1px;text-shadow:0 -1px rgba(0,0,0,.1)}.graphiql-container div.CodeMirror span.CodeMirror-matchingbracket{color:#555;text-decoration:underline}.graphiql-container div.CodeMirror span.CodeMirror-nonmatchingbracket{color:red}.cm-comment{color:#666}.cm-punctuation{color:#555}.cm-keyword{color:#b11a04}.cm-def{color:#d2054e}.cm-property{color:#1f61a0}.cm-qualifier{color:#1c92a9}.cm-attribute{color:#8b2bb9}.cm-number{color:#2882f9}.cm-string{color:#d64292}.cm-builtin{color:#d47509}.cm-string-2{color:#0b7fc7}.cm-variable{color:#397d13}.cm-meta{color:#b33086}.cm-atom{color:#ca9800}.CodeMirror{color:#000;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{color:#666;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#666}.CodeMirror .CodeMirror-cursor{border-left:1px solid black}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.CodeMirror.cm-fat-cursor div.CodeMirror-cursor{background:#7e7;border:0;width:auto}.CodeMirror.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{animation:blink 1.06s steps(1) infinite;border:0;width:auto}@keyframes blink{0%{background:#7e7}50%{background:none}to{background:#7e7}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-ruler{border-left:1px solid #ccc;position:absolute}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#666}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-s-default .cm-hr{color:#666}.cm-s-default .cm-link{color:#00c}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:white;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-30px;margin-right:-30px;outline:none;overflow:scroll!important;padding-bottom:30px;position:relative}.CodeMirror-sizer{border-right:30px solid transparent;position:relative}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{display:none;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{min-height:100%;position:absolute;left:0;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-30px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:none!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper{user-select:none}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-webkit-tap-highlight-color:transparent;background:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:none;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;word-wrap:normal;z-index:2}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;inset:0;z-index:0}.CodeMirror-linewidget{overflow:auto;position:relative;z-index:2}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.CodeMirror-dialog{background:inherit;color:inherit;left:0;right:0;overflow:hidden;padding:.1em .8em;position:absolute;z-index:15}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{background:transparent;border:1px solid #d3d6db;color:inherit;font-family:monospace;outline:none;width:20em}.CodeMirror-dialog button{font-size:70%}.CodeMirror-foldmarker{color:#00f;cursor:pointer;font-family:arial;line-height:.3;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25be"}.CodeMirror-foldgutter-folded:after{content:"\25b8"}.CodeMirror-info{background:white;border-radius:2px;box-shadow:0 1px 3px #00000073;box-sizing:border-box;color:#555;font-family:system,-apple-system,San Francisco,".SFNSDisplay-Regular",Segoe UI,Segoe,Segoe WP,Helvetica Neue,helvetica,Lucida Grande,arial,sans-serif;font-size:13px;line-height:16px;margin:8px -8px;max-width:400px;opacity:0;overflow:hidden;padding:8px;position:fixed;transition:opacity .15s;z-index:50}.CodeMirror-info :first-child{margin-top:0}.CodeMirror-info :last-child{margin-bottom:0}.CodeMirror-info p{margin:1em 0}.CodeMirror-info .info-description{color:#777;line-height:16px;margin-top:1em;max-height:80px;overflow:hidden}.CodeMirror-info .info-deprecation{background:#fffae8;box-shadow:inset 0 1px 1px -1px #bfb063;color:#867f70;line-height:16px;margin:8px -8px -8px;max-height:80px;overflow:hidden;padding:8px}.CodeMirror-info .info-deprecation-label{color:#c79b2e;cursor:default;display:block;font-size:9px;font-weight:700;letter-spacing:1px;line-height:1;padding-bottom:5px;text-transform:uppercase;user-select:none}.CodeMirror-info .info-deprecation-label+*{margin-top:0}.CodeMirror-info a{text-decoration:none}.CodeMirror-info a:hover{text-decoration:underline}.CodeMirror-info .type-name{color:#ca9800}.CodeMirror-info .field-name{color:#1f61a0}.CodeMirror-info .enum-value{color:#0b7fc7}.CodeMirror-info .arg-name{color:#8b2bb9}.CodeMirror-info .directive-name{color:#b33086}.CodeMirror-jump-token{text-decoration:underline;cursor:pointer}.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:infobackground;border-radius:4px;border:1px solid black;color:infotext;font-family:monospace;font-size:10pt;max-width:600px;opacity:0;overflow:hidden;padding:2px 5px;position:fixed;transition:opacity .4s;white-space:pre-wrap;z-index:100}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-position:left bottom;background-repeat:repeat-x}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-marker-warning{background-position:center center;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:16px}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{background-position:top left;background-repeat:no-repeat;padding-left:18px}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-position:right bottom;background-repeat:no-repeat;width:100%;height:100%}.graphiql-container .spinner-container{height:36px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:36px;z-index:10}.graphiql-container .spinner{animation:rotation .6s infinite linear;border-bottom:6px solid rgba(150,150,150,.15);border-left:6px solid rgba(150,150,150,.15);border-radius:100%;border-right:6px solid rgba(150,150,150,.15);border-top:6px solid rgba(150,150,150,.8);display:inline-block;height:24px;position:absolute;vertical-align:middle;width:24px}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.CodeMirror-hints{background:white;box-shadow:0 1px 3px #00000073;font-family:Consolas,Inconsolata,Droid Sans Mono,Monaco,monospace;font-size:13px;list-style:none;margin:0;max-height:14.5em;overflow:hidden;overflow-y:auto;padding:0;position:absolute;z-index:10}.CodeMirror-hint{border-top:solid 1px #f7f7f7;color:#141823;cursor:pointer;margin:0;max-width:300px;overflow:hidden;padding:2px 6px;white-space:pre}li.CodeMirror-hint-active{background-color:#08f;border-top-color:#fff;color:#fff}.CodeMirror-hint-information{border-top:solid 1px #c0c0c0;max-width:300px;padding:4px 6px;position:relative;z-index:1}.CodeMirror-hint-information:first-child{border-bottom:solid 1px #c0c0c0;border-top:none;margin-bottom:-1px}.CodeMirror-hint-deprecation{background:#fffae8;box-shadow:inset 0 1px 1px -1px #bfb063;color:#867f70;font-family:system,-apple-system,San Francisco,".SFNSDisplay-Regular",Segoe UI,Segoe,Segoe WP,Helvetica Neue,helvetica,Lucida Grande,arial,sans-serif;font-size:13px;line-height:16px;margin-top:4px;max-height:80px;overflow:hidden;padding:6px}.CodeMirror-hint-deprecation .deprecation-label{color:#c79b2e;cursor:default;display:block;font-size:9px;font-weight:700;letter-spacing:1px;line-height:1;padding-bottom:5px;text-transform:uppercase;user-select:none}.CodeMirror-hint-deprecation .deprecation-label+*{margin-top:0}.CodeMirror-hint-deprecation :last-child{margin-bottom:0}.graphiql-container .doc-explorer{background:white}.graphiql-container .doc-explorer-title-bar,.graphiql-container .history-title-bar{cursor:default;display:flex;height:34px;line-height:14px;padding:8px 8px 5px;position:relative;user-select:none}.graphiql-container .doc-explorer-title,.graphiql-container .history-title{flex:1;font-weight:700;overflow-x:hidden;padding:10px 0 10px 10px;text-align:center;text-overflow:ellipsis;user-select:text;white-space:nowrap}.graphiql-container .doc-explorer-back{color:#3b5998;cursor:pointer;margin:-7px 0 -6px -8px;overflow-x:hidden;padding:17px 12px 16px 16px;text-overflow:ellipsis;white-space:nowrap;background:0;border:0;line-height:14px}.doc-explorer-narrow .doc-explorer-back{width:0}.graphiql-container .doc-explorer-back:before{border-left:2px solid #3b5998;border-top:2px solid #3b5998;content:"";display:inline-block;height:9px;margin:0 3px -1px 0;position:relative;transform:rotate(-45deg);width:9px}.graphiql-container .doc-explorer-rhs{position:relative}.graphiql-container .doc-explorer-contents,.graphiql-container .history-contents{background-color:#fff;border-top:1px solid #d6d6d6;inset:47px 0 0;overflow-y:auto;padding:20px 15px;position:absolute}.graphiql-container .doc-explorer-contents{min-width:300px}.graphiql-container .doc-type-description p:first-child,.graphiql-container .doc-type-description blockquote:first-child{margin-top:0}.graphiql-container .doc-explorer-contents a{cursor:pointer;text-decoration:none}.graphiql-container .doc-explorer-contents a:hover{text-decoration:underline}.graphiql-container .doc-value-description>:first-child{margin-top:4px}.graphiql-container .doc-value-description>:last-child{margin-bottom:4px}.graphiql-container .doc-type-description code,.graphiql-container .doc-type-description pre,.graphiql-container .doc-category code,.graphiql-container .doc-category pre{--saf-0: rgba(var(--sk_foreground_low, 29, 28, 29), .13);font-size:12px;line-height:1.50001;font-variant-ligatures:none;white-space:pre;white-space:pre-wrap;word-wrap:break-word;word-break:normal;-webkit-tab-size:4;-moz-tab-size:4;tab-size:4}.graphiql-container .doc-type-description code,.graphiql-container .doc-category code{padding:2px 3px 1px;border:1px solid var(--saf-0);border-radius:3px;background-color:rgba(var(--sk_foreground_min, 29, 28, 29),.04);color:#e01e5a;background-color:#fff}.graphiql-container .doc-category{margin:20px 0}.graphiql-container .doc-category-title{border-bottom:1px solid #e0e0e0;color:#777;cursor:default;font-size:14px;font-variant:small-caps;font-weight:700;letter-spacing:1px;margin:0 -15px 10px 0;padding:10px 0;user-select:none}.graphiql-container .doc-category-item{margin:12px 0;color:#555}.graphiql-container .keyword{color:#b11a04}.graphiql-container .type-name{color:#ca9800}.graphiql-container .field-name{color:#1f61a0}.graphiql-container .field-short-description{color:#666;margin-left:5px;overflow:hidden;text-overflow:ellipsis}.graphiql-container .enum-value{color:#0b7fc7}.graphiql-container .arg-name{color:#8b2bb9}.graphiql-container .arg{display:block;margin-left:1em}.graphiql-container .arg:first-child:last-child,.graphiql-container .arg:first-child:nth-last-child(2),.graphiql-container .arg:first-child:nth-last-child(2)~.arg{display:inherit;margin:inherit}.graphiql-container .arg:first-child:nth-last-child(2):after{content:", "}.graphiql-container .arg-default-value{color:#43a047}.graphiql-container .doc-deprecation{background:#fffae8;box-shadow:inset 0 0 1px #bfb063;color:#867f70;line-height:16px;margin:8px -8px;max-height:80px;overflow:hidden;padding:8px;border-radius:3px}.graphiql-container .doc-deprecation:before{content:"Deprecated:";color:#c79b2e;cursor:default;display:block;font-size:9px;font-weight:700;letter-spacing:1px;line-height:1;padding-bottom:5px;text-transform:uppercase;user-select:none}.graphiql-container .doc-deprecation>:first-child{margin-top:0}.graphiql-container .doc-deprecation>:last-child{margin-bottom:0}.graphiql-container .show-btn{-webkit-appearance:initial;display:block;border-radius:3px;border:solid 1px #ccc;text-align:center;padding:8px 12px 10px;width:100%;box-sizing:border-box;background:#fbfcfc;color:#555;cursor:pointer}.graphiql-container .search-box{border-bottom:1px solid #d3d6db;display:flex;align-items:center;font-size:14px;margin:-15px -15px 12px 0;position:relative}.graphiql-container .search-box-icon{cursor:pointer;display:block;font-size:24px;transform:rotate(-45deg);user-select:none}.graphiql-container .search-box .search-box-clear{background-color:#d0d0d0;border-radius:12px;color:#fff;cursor:pointer;font-size:11px;padding:1px 5px 2px;position:absolute;right:3px;user-select:none;border:0}.graphiql-container .search-box .search-box-clear:hover{background-color:#b9b9b9}.graphiql-container .search-box>input{border:none;box-sizing:border-box;font-size:14px;outline:none;padding:6px 24px 8px 20px;width:100%}.graphiql-container .error-container{font-weight:700;left:0;letter-spacing:1px;opacity:.5;position:absolute;right:0;text-align:center;text-transform:uppercase;top:50%;transform:translateY(-50%)}.graphiql-container .history-contents{font-family:Consolas,Inconsolata,Droid Sans Mono,Monaco,monospace}.graphiql-container .history-contents{margin:0;padding:0}.graphiql-container .history-contents li{align-items:center;display:flex;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0;padding:8px;border-bottom:1px solid #e0e0e0}.graphiql-container .history-contents li button:not(.history-label){display:none;margin-left:10px}.graphiql-container .history-contents li:hover button:not(.history-label),.graphiql-container .history-contents li:focus-within button:not(.history-label){display:inline-block}.graphiql-container .history-contents input,.graphiql-container .history-contents button{padding:0;background:0;border:0;font-size:inherit;font-family:inherit;line-height:14px;color:inherit}.graphiql-container .history-contents input{flex-grow:1}.graphiql-container .history-contents input::placeholder{color:inherit}.graphiql-container .history-contents button{cursor:pointer;text-align:left}.graphiql-container .history-contents .history-label{flex-grow:1;overflow:hidden;text-overflow:ellipsis} diff --git a/netbox/project-static/dist/graphiql.js b/netbox/project-static/dist/graphiql.js index 0d4b3288b..1b6949d02 100644 --- a/netbox/project-static/dist/graphiql.js +++ b/netbox/project-static/dist/graphiql.js @@ -1,50 +1,50 @@ -(()=>{var _V=Object.create;var a0=Object.defineProperty;var SV=Object.getOwnPropertyDescriptor;var DV=Object.getOwnPropertyNames;var kV=Object.getPrototypeOf,OV=Object.prototype.hasOwnProperty;var CV=e=>a0(e,"__esModule",{value:!0});var eC=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(t,r)=>(typeof require!="undefined"?require:t)[r]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var U=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var wV=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of DV(t))!OV.call(e,n)&&n!=="default"&&a0(e,n,{get:()=>t[n],enumerable:!(r=SV(t,n))||r.enumerable});return e},Ye=e=>wV(CV(a0(e!=null?_V(kV(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var o0=U((ste,rC)=>{"use strict";var tC=Object.getOwnPropertySymbols,AV=Object.prototype.hasOwnProperty,NV=Object.prototype.propertyIsEnumerable;function LV(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function xV(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(t).map(function(o){return t[o]});if(n.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(o){a[o]=o}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch(o){return!1}}rC.exports=xV()?Object.assign:function(e,t){for(var r,n=LV(e),a,o=1;o{"use strict";var u0=o0(),$s=60103,nC=60106;vt.Fragment=60107;vt.StrictMode=60108;vt.Profiler=60114;var iC=60109,aC=60110,oC=60112;vt.Suspense=60113;var uC=60115,sC=60116;typeof Symbol=="function"&&Symbol.for&&(Ti=Symbol.for,$s=Ti("react.element"),nC=Ti("react.portal"),vt.Fragment=Ti("react.fragment"),vt.StrictMode=Ti("react.strict_mode"),vt.Profiler=Ti("react.profiler"),iC=Ti("react.provider"),aC=Ti("react.context"),oC=Ti("react.forward_ref"),vt.Suspense=Ti("react.suspense"),uC=Ti("react.memo"),sC=Ti("react.lazy"));var Ti,lC=typeof Symbol=="function"&&Symbol.iterator;function IV(e){return e===null||typeof e!="object"?null:(e=lC&&e[lC]||e["@@iterator"],typeof e=="function"?e:null)}function pf(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r{"use strict";bC.exports=yC()});var kC=U(Lt=>{"use strict";var tl,hf,kh,p0;typeof performance=="object"&&typeof performance.now=="function"?(TC=performance,Lt.unstable_now=function(){return TC.now()}):(h0=Date,EC=h0.now(),Lt.unstable_now=function(){return h0.now()-EC});var TC,h0,EC;typeof window=="undefined"||typeof MessageChannel!="function"?(rl=null,v0=null,g0=function(){if(rl!==null)try{var e=Lt.unstable_now();rl(!0,e),rl=null}catch(t){throw setTimeout(g0,0),t}},tl=function(e){rl!==null?setTimeout(tl,0,e):(rl=e,setTimeout(g0,0))},hf=function(e,t){v0=setTimeout(e,t)},kh=function(){clearTimeout(v0)},Lt.unstable_shouldYield=function(){return!1},p0=Lt.unstable_forceFrameRate=function(){}):(_C=window.setTimeout,SC=window.clearTimeout,typeof console!="undefined"&&(DC=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof DC!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),vf=!1,gf=null,Oh=-1,m0=5,y0=0,Lt.unstable_shouldYield=function(){return Lt.unstable_now()>=y0},p0=function(){},Lt.unstable_forceFrameRate=function(e){0>e||125>>1,a=e[n];if(a!==void 0&&0Ah(s,r))d!==void 0&&0>Ah(d,s)?(e[n]=d,e[l]=r,n=l):(e[n]=s,e[o]=r,n=o);else if(d!==void 0&&0>Ah(d,r))e[n]=d,e[l]=r,n=l;else break e}}return t}return null}function Ah(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}var ga=[],xo=[],MV=1,Ei=null,hn=3,Nh=!1,ju=!1,mf=!1;function E0(e){for(var t=Xi(xo);t!==null;){if(t.callback===null)wh(xo);else if(t.startTime<=e)wh(xo),t.sortIndex=t.expirationTime,T0(ga,t);else break;t=Xi(xo)}}function _0(e){if(mf=!1,E0(e),!ju)if(Xi(ga)!==null)ju=!0,tl(S0);else{var t=Xi(xo);t!==null&&hf(_0,t.startTime-e)}}function S0(e,t){ju=!1,mf&&(mf=!1,kh()),Nh=!0;var r=hn;try{for(E0(t),Ei=Xi(ga);Ei!==null&&(!(Ei.expirationTime>t)||e&&!Lt.unstable_shouldYield());){var n=Ei.callback;if(typeof n=="function"){Ei.callback=null,hn=Ei.priorityLevel;var a=n(Ei.expirationTime<=t);t=Lt.unstable_now(),typeof a=="function"?Ei.callback=a:Ei===Xi(ga)&&wh(ga),E0(t)}else wh(ga);Ei=Xi(ga)}if(Ei!==null)var o=!0;else{var s=Xi(xo);s!==null&&hf(_0,s.startTime-t),o=!1}return o}finally{Ei=null,hn=r,Nh=!1}}var qV=p0;Lt.unstable_IdlePriority=5;Lt.unstable_ImmediatePriority=1;Lt.unstable_LowPriority=4;Lt.unstable_NormalPriority=3;Lt.unstable_Profiling=null;Lt.unstable_UserBlockingPriority=2;Lt.unstable_cancelCallback=function(e){e.callback=null};Lt.unstable_continueExecution=function(){ju||Nh||(ju=!0,tl(S0))};Lt.unstable_getCurrentPriorityLevel=function(){return hn};Lt.unstable_getFirstCallbackNode=function(){return Xi(ga)};Lt.unstable_next=function(e){switch(hn){case 1:case 2:case 3:var t=3;break;default:t=hn}var r=hn;hn=t;try{return e()}finally{hn=r}};Lt.unstable_pauseExecution=function(){};Lt.unstable_requestPaint=qV;Lt.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=hn;hn=e;try{return t()}finally{hn=r}};Lt.unstable_scheduleCallback=function(e,t,r){var n=Lt.unstable_now();switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0n?(e.sortIndex=r,T0(xo,e),Xi(ga)===null&&e===Xi(xo)&&(mf?kh():mf=!0,hf(_0,r-n))):(e.sortIndex=a,T0(ga,e),ju||Nh||(ju=!0,tl(S0))),e};Lt.unstable_wrapCallback=function(e){var t=hn;return function(){var r=hn;hn=t;try{return e.apply(this,arguments)}finally{hn=r}}}});var CC=U((dte,OC)=>{"use strict";OC.exports=kC()});var pA=U(Ci=>{"use strict";var Lh=Bt(),er=o0(),Yr=CC();function pe(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;rt}return!1}function xn(e,t,r,n,a,o,s){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=n,this.attributeNamespace=a,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=s}var nn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){nn[e]=new xn(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];nn[t]=new xn(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){nn[e]=new xn(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){nn[e]=new xn(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){nn[e]=new xn(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){nn[e]=new xn(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){nn[e]=new xn(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){nn[e]=new xn(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){nn[e]=new xn(e,5,!1,e.toLowerCase(),null,!1,!1)});var D0=/[\-:]([a-z])/g;function k0(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(D0,k0);nn[t]=new xn(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(D0,k0);nn[t]=new xn(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(D0,k0);nn[t]=new xn(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){nn[e]=new xn(e,1,!1,e.toLowerCase(),null,!1,!1)});nn.xlinkHref=new xn("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){nn[e]=new xn(e,1,!1,e.toLowerCase(),null,!0,!0)});function O0(e,t,r,n){var a=nn.hasOwnProperty(t)?nn[t]:null,o=a!==null?a.type===0:n?!1:!(!(2{var HB=Object.create;var U0=Object.defineProperty;var zB=Object.getOwnPropertyDescriptor;var WB=Object.getOwnPropertyNames;var YB=Object.getPrototypeOf,JB=Object.prototype.hasOwnProperty;var XB=e=>U0(e,"__esModule",{value:!0});var tx=(e=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(e,{get:(t,r)=>(typeof require!="undefined"?require:t)[r]}):e)(function(e){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var G=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ZB=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of WB(t))!JB.call(e,n)&&n!=="default"&&U0(e,n,{get:()=>t[n],enumerable:!(r=zB(t,n))||r.enumerable});return e},Ee=e=>ZB(XB(U0(e!=null?HB(YB(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var G0=G((Oie,nx)=>{"use strict";var rx=Object.getOwnPropertySymbols,$B=Object.prototype.hasOwnProperty,eK=Object.prototype.propertyIsEnumerable;function tK(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function rK(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(t).map(function(o){return t[o]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(o){i[o]=o}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(o){return!1}}nx.exports=rK()?Object.assign:function(e,t){for(var r,n=tK(e),i,o=1;o{"use strict";var Q0=G0(),ml=60103,ix=60106;Et.Fragment=60107;Et.StrictMode=60108;Et.Profiler=60114;var ax=60109,ox=60110,ux=60112;Et.Suspense=60113;var sx=60115,lx=60116;typeof Symbol=="function"&&Symbol.for&&(Mi=Symbol.for,ml=Mi("react.element"),ix=Mi("react.portal"),Et.Fragment=Mi("react.fragment"),Et.StrictMode=Mi("react.strict_mode"),Et.Profiler=Mi("react.profiler"),ax=Mi("react.provider"),ox=Mi("react.context"),ux=Mi("react.forward_ref"),Et.Suspense=Mi("react.suspense"),sx=Mi("react.memo"),lx=Mi("react.lazy"));var Mi,cx=typeof Symbol=="function"&&Symbol.iterator;function nK(e){return e===null||typeof e!="object"?null:(e=cx&&e[cx]||e["@@iterator"],typeof e=="function"?e:null)}function If(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r{"use strict";Tx.exports=bx()});var wx=G(qt=>{"use strict";var bl,Af,Bh,Y0;typeof performance=="object"&&typeof performance.now=="function"?(_x=performance,qt.unstable_now=function(){return _x.now()}):(J0=Date,Ex=J0.now(),qt.unstable_now=function(){return J0.now()-Ex});var _x,J0,Ex;typeof window=="undefined"||typeof MessageChannel!="function"?(Tl=null,X0=null,Z0=function(){if(Tl!==null)try{var e=qt.unstable_now();Tl(!0,e),Tl=null}catch(t){throw setTimeout(Z0,0),t}},bl=function(e){Tl!==null?setTimeout(bl,0,e):(Tl=e,setTimeout(Z0,0))},Af=function(e,t){X0=setTimeout(e,t)},Bh=function(){clearTimeout(X0)},qt.unstable_shouldYield=function(){return!1},Y0=qt.unstable_forceFrameRate=function(){}):(Sx=window.setTimeout,kx=window.clearTimeout,typeof console!="undefined"&&(Ox=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),typeof Ox!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")),Rf=!1,jf=null,Kh=-1,$0=5,eb=0,qt.unstable_shouldYield=function(){return qt.unstable_now()>=eb},Y0=function(){},qt.unstable_forceFrameRate=function(e){0>e||125>>1,i=e[n];if(i!==void 0&&0Wh(s,r))d!==void 0&&0>Wh(d,s)?(e[n]=d,e[l]=r,n=l):(e[n]=s,e[o]=r,n=o);else if(d!==void 0&&0>Wh(d,r))e[n]=d,e[l]=r,n=l;else break e}}return t}return null}function Wh(e,t){var r=e.sortIndex-t.sortIndex;return r!==0?r:e.id-t.id}var La=[],Ho=[],sK=1,qi=null,An=3,Yh=!1,$u=!1,Pf=!1;function nb(e){for(var t=ha(Ho);t!==null;){if(t.callback===null)zh(Ho);else if(t.startTime<=e)zh(Ho),t.sortIndex=t.expirationTime,rb(La,t);else break;t=ha(Ho)}}function ib(e){if(Pf=!1,nb(e),!$u)if(ha(La)!==null)$u=!0,bl(ab);else{var t=ha(Ho);t!==null&&Af(ib,t.startTime-e)}}function ab(e,t){$u=!1,Pf&&(Pf=!1,Bh()),Yh=!0;var r=An;try{for(nb(t),qi=ha(La);qi!==null&&(!(qi.expirationTime>t)||e&&!qt.unstable_shouldYield());){var n=qi.callback;if(typeof n=="function"){qi.callback=null,An=qi.priorityLevel;var i=n(qi.expirationTime<=t);t=qt.unstable_now(),typeof i=="function"?qi.callback=i:qi===ha(La)&&zh(La),nb(t)}else zh(La);qi=ha(La)}if(qi!==null)var o=!0;else{var s=ha(Ho);s!==null&&Af(ib,s.startTime-t),o=!1}return o}finally{qi=null,An=r,Yh=!1}}var lK=Y0;qt.unstable_IdlePriority=5;qt.unstable_ImmediatePriority=1;qt.unstable_LowPriority=4;qt.unstable_NormalPriority=3;qt.unstable_Profiling=null;qt.unstable_UserBlockingPriority=2;qt.unstable_cancelCallback=function(e){e.callback=null};qt.unstable_continueExecution=function(){$u||Yh||($u=!0,bl(ab))};qt.unstable_getCurrentPriorityLevel=function(){return An};qt.unstable_getFirstCallbackNode=function(){return ha(La)};qt.unstable_next=function(e){switch(An){case 1:case 2:case 3:var t=3;break;default:t=An}var r=An;An=t;try{return e()}finally{An=r}};qt.unstable_pauseExecution=function(){};qt.unstable_requestPaint=lK;qt.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=An;An=e;try{return t()}finally{An=r}};qt.unstable_scheduleCallback=function(e,t,r){var n=qt.unstable_now();switch(typeof r=="object"&&r!==null?(r=r.delay,r=typeof r=="number"&&0n?(e.sortIndex=r,rb(Ho,e),ha(La)===null&&e===ha(Ho)&&(Pf?Bh():Pf=!0,Af(ib,r-n))):(e.sortIndex=i,rb(La,e),$u||Yh||($u=!0,bl(ab))),e};qt.unstable_wrapCallback=function(e){var t=An;return function(){var r=An;An=t;try{return e.apply(this,arguments)}finally{An=r}}}});var Dx=G((xie,Nx)=>{"use strict";Nx.exports=wx()});var h1=G(Ki=>{"use strict";var Jh=zt(),cr=G0(),ln=Dx();function ye(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;rt}return!1}function $n(e,t,r,n,i,o,s){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=n,this.attributeNamespace=i,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=s}var yn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){yn[e]=new $n(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];yn[t]=new $n(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){yn[e]=new $n(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){yn[e]=new $n(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){yn[e]=new $n(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){yn[e]=new $n(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){yn[e]=new $n(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){yn[e]=new $n(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){yn[e]=new $n(e,5,!1,e.toLowerCase(),null,!1,!1)});var ob=/[\-:]([a-z])/g;function ub(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(ob,ub);yn[t]=new $n(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(ob,ub);yn[t]=new $n(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(ob,ub);yn[t]=new $n(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){yn[e]=new $n(e,1,!1,e.toLowerCase(),null,!1,!1)});yn.xlinkHref=new $n("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){yn[e]=new $n(e,1,!1,e.toLowerCase(),null,!0,!0)});function sb(e,t,r,n){var i=yn.hasOwnProperty(t)?yn[t]:null,o=i!==null?i.type===0:n?!1:!(!(2l||a[s]!==o[l])return` -`+a[s].replace(" at new "," at ");while(1<=s&&0<=l);break}}}finally{j0=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Sf(e):""}function QV(e){switch(e.tag){case 5:return Sf(e.type);case 16:return Sf("Lazy");case 13:return Sf("Suspense");case 19:return Sf("SuspenseList");case 0:case 2:case 15:return e=Fh(e.type,!1),e;case 11:return e=Fh(e.type.render,!1),e;case 22:return e=Fh(e.type._render,!1),e;case 1:return e=Fh(e.type,!0),e;default:return""}}function il(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Io:return"Fragment";case qu:return"Portal";case Tf:return"Profiler";case C0:return"StrictMode";case Ef:return"Suspense";case Ih:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case A0:return(e.displayName||"Context")+".Consumer";case w0:return(e._context.displayName||"Context")+".Provider";case xh:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case Rh:return il(e.type);case L0:return il(e._render);case N0:t=e._payload,e=e._init;try{return il(e(t))}catch(r){}}return null}function Ro(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function RC(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function KV(e){var t=RC(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof r!="undefined"&&typeof r.get=="function"&&typeof r.set=="function"){var a=r.get,o=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(s){n=""+s,o.call(this,s)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(s){n=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function jh(e){e._valueTracker||(e._valueTracker=KV(e))}function FC(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),n="";return e&&(n=RC(e)?e.checked?"true":"false":e.value),e=n,e!==r?(t.setValue(e),!0):!1}function Ph(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(t){return e.body}}function P0(e,t){var r=t.checked;return er({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r!=null?r:e._wrapperState.initialChecked})}function jC(e,t){var r=t.defaultValue==null?"":t.defaultValue,n=t.checked!=null?t.checked:t.defaultChecked;r=Ro(t.value!=null?t.value:r),e._wrapperState={initialChecked:n,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function PC(e,t){t=t.checked,t!=null&&O0(e,"checked",t,!1)}function M0(e,t){PC(e,t);var r=Ro(t.value),n=t.type;if(r!=null)n==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?q0(e,t.type,r):t.hasOwnProperty("defaultValue")&&q0(e,t.type,Ro(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function MC(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var n=t.type;if(!(n!=="submit"&&n!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function q0(e,t,r){(t!=="number"||Ph(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}function HV(e){var t="";return Lh.Children.forEach(e,function(r){r!=null&&(t+=r)}),t}function B0(e,t){return e=er({children:void 0},t),(t=HV(t.children))&&(e.children=t),e}function al(e,t,r,n){if(e=e.options,t){t={};for(var a=0;a=r.length))throw Error(pe(93));r=r[0]}t=r}t==null&&(t=""),r=t}e._wrapperState={initialValue:Ro(r)}}function BC(e,t){var r=Ro(t.value),n=Ro(t.defaultValue);r!=null&&(r=""+r,r!==e.value&&(e.value=r),t.defaultValue==null&&e.defaultValue!==r&&(e.defaultValue=r)),n!=null&&(e.defaultValue=""+n)}function VC(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}var U0={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function UC(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function G0(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?UC(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var Mh,GC=function(e){return typeof MSApp!="undefined"&&MSApp.execUnsafeLocalFunction?function(t,r,n,a){MSApp.execUnsafeLocalFunction(function(){return e(t,r,n,a)})}:e}(function(e,t){if(e.namespaceURI!==U0.svg||"innerHTML"in e)e.innerHTML=t;else{for(Mh=Mh||document.createElement("div"),Mh.innerHTML=""+t.valueOf().toString()+"",t=Mh.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Df(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var kf={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},zV=["Webkit","ms","Moz","O"];Object.keys(kf).forEach(function(e){zV.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),kf[t]=kf[e]})});function QC(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||kf.hasOwnProperty(e)&&kf[e]?(""+t).trim():t+"px"}function KC(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var n=r.indexOf("--")===0,a=QC(r,t[r],n);r==="float"&&(r="cssFloat"),n?e.setProperty(r,a):e[r]=a}}var WV=er({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Q0(e,t){if(t){if(WV[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(pe(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(pe(60));if(!(typeof t.dangerouslySetInnerHTML=="object"&&"__html"in t.dangerouslySetInnerHTML))throw Error(pe(61))}if(t.style!=null&&typeof t.style!="object")throw Error(pe(62))}}function K0(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function H0(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var z0=null,ol=null,ul=null;function HC(e){if(e=Gf(e)){if(typeof z0!="function")throw Error(pe(280));var t=e.stateNode;t&&(t=av(t),z0(e.stateNode,e.type,t))}}function zC(e){ol?ul?ul.push(e):ul=[e]:ol=e}function WC(){if(ol){var e=ol,t=ul;if(ul=ol=null,HC(e),t)for(e=0;en?0:1<r;r++)t.push(e);return t}function Kh(e,t,r){e.pendingLanes|=t;var n=t-1;e.suspendedLanes&=n,e.pingedLanes&=n,e=e.eventTimes,t=31-Mo(t),e[t]=r}var Mo=Math.clz32?Math.clz32:cU,sU=Math.log,lU=Math.LN2;function cU(e){return e===0?32:31-(sU(e)/lU|0)|0}var fU=Yr.unstable_UserBlockingPriority,dU=Yr.unstable_runWithPriority,Hh=!0;function pU(e,t,r,n){Bu||Y0();var a=ub,o=Bu;Bu=!0;try{YC(a,e,t,r,n)}finally{(Bu=o)||X0()}}function hU(e,t,r,n){dU(fU,ub.bind(null,e,t,r,n))}function ub(e,t,r,n){if(Hh){var a;if((a=(t&4)==0)&&0=jf),E2=String.fromCharCode(32),_2=!1;function S2(e,t){switch(e){case"keyup":return PU.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function D2(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var pl=!1;function qU(e,t){switch(e){case"compositionend":return D2(t);case"keypress":return t.which!==32?null:(_2=!0,E2);case"textInput":return e=t.data,e===E2&&_2?null:e;default:return null}}function BU(e,t){if(pl)return e==="compositionend"||!vb&&S2(e,t)?(e=v2(),zh=lb=qo=null,pl=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=N2(r)}}function x2(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?x2(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function I2(){for(var e=window,t=Ph();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch(n){r=!1}if(r)e=t.contentWindow;else break;t=Ph(e.document)}return t}function mb(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var JU=ro&&"documentMode"in document&&11>=document.documentMode,hl=null,yb=null,Bf=null,bb=!1;function R2(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;bb||hl==null||hl!==Ph(n)||(n=hl,"selectionStart"in n&&mb(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),Bf&&qf(Bf,n)||(Bf=n,n=tv(yb,"onSelect"),0bl||(e.current=Ob[bl],Ob[bl]=null,bl--)}function lr(e,t){bl++,Ob[bl]=e.current,e.current=t}var Uo={},vn=Vo(Uo),Qn=Vo(!1),Gu=Uo;function Tl(e,t){var r=e.type.contextTypes;if(!r)return Uo;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var a={},o;for(o in r)a[o]=t[o];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Kn(e){return e=e.childContextTypes,e!=null}function ov(){Jt(Qn),Jt(vn)}function Y2(e,t,r){if(vn.current!==Uo)throw Error(pe(168));lr(vn,t),lr(Qn,r)}function J2(e,t,r){var n=e.stateNode;if(e=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var a in n)if(!(a in e))throw Error(pe(108,il(t)||"Unknown",a));return er({},r,n)}function uv(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Uo,Gu=vn.current,lr(vn,e),lr(Qn,Qn.current),!0}function X2(e,t,r){var n=e.stateNode;if(!n)throw Error(pe(169));r?(e=J2(e,t,Gu),n.__reactInternalMemoizedMergedChildContext=e,Jt(Qn),Jt(vn),lr(vn,e)):Jt(Qn),lr(Qn,r)}var Cb=null,Qu=null,$U=Yr.unstable_runWithPriority,wb=Yr.unstable_scheduleCallback,Ab=Yr.unstable_cancelCallback,eG=Yr.unstable_shouldYield,Z2=Yr.unstable_requestPaint,Nb=Yr.unstable_now,tG=Yr.unstable_getCurrentPriorityLevel,sv=Yr.unstable_ImmediatePriority,$2=Yr.unstable_UserBlockingPriority,ew=Yr.unstable_NormalPriority,tw=Yr.unstable_LowPriority,rw=Yr.unstable_IdlePriority,Lb={},rG=Z2!==void 0?Z2:function(){},no=null,lv=null,xb=!1,nw=Nb(),gn=1e4>nw?Nb:function(){return Nb()-nw};function El(){switch(tG()){case sv:return 99;case $2:return 98;case ew:return 97;case tw:return 96;case rw:return 95;default:throw Error(pe(332))}}function iw(e){switch(e){case 99:return sv;case 98:return $2;case 97:return ew;case 96:return tw;case 95:return rw;default:throw Error(pe(332))}}function Ku(e,t){return e=iw(e),$U(e,t)}function Qf(e,t,r){return e=iw(e),wb(e,t,r)}function ya(){if(lv!==null){var e=lv;lv=null,Ab(e)}aw()}function aw(){if(!xb&&no!==null){xb=!0;var e=0;try{var t=no;Ku(99,function(){for(;eR?(M=D,D=null):M=D.sibling;var q=T(y,D,m[R],k);if(q===null){D===null&&(D=M);break}e&&D&&q.alternate===null&&t(y,D),_=o(q,_,R),C===null?w=q:C.sibling=q,C=q,D=M}if(R===m.length)return r(y,D),w;if(D===null){for(;RR?(M=D,D=null):M=D.sibling;var z=T(y,D,q.value,k);if(z===null){D===null&&(D=M);break}e&&D&&z.alternate===null&&t(y,D),_=o(z,_,R),C===null?w=z:C.sibling=z,C=z,D=M}if(q.done)return r(y,D),w;if(D===null){for(;!q.done;R++,q=m.next())q=b(y,q.value,k),q!==null&&(_=o(q,_,R),C===null?w=q:C.sibling=q,C=q);return w}for(D=n(y,D);!q.done;R++,q=m.next())q=A(D,y,R,q.value,k),q!==null&&(e&&q.alternate!==null&&D.delete(q.key===null?R:q.key),_=o(q,_,R),C===null?w=q:C.sibling=q,C=q);return e&&D.forEach(function(Q){return t(y,Q)}),w}return function(y,_,m,k){var w=typeof m=="object"&&m!==null&&m.type===Io&&m.key===null;w&&(m=m.props.children);var C=typeof m=="object"&&m!==null;if(C)switch(m.$$typeof){case bf:e:{for(C=m.key,w=_;w!==null;){if(w.key===C){switch(w.tag){case 7:if(m.type===Io){r(y,w.sibling),_=a(w,m.props.children),_.return=y,y=_;break e}break;default:if(w.elementType===m.type){r(y,w.sibling),_=a(w,m.props),_.ref=Hf(y,w,m),_.return=y,y=_;break e}}r(y,w);break}else t(y,w);w=w.sibling}m.type===Io?(_=Ll(m.props.children,y.mode,k,m.key),_.return=y,y=_):(k=Rv(m.type,m.key,m.props,null,y.mode,k),k.ref=Hf(y,_,m),k.return=y,y=k)}return s(y);case qu:e:{for(w=m.key;_!==null;){if(_.key===w)if(_.tag===4&&_.stateNode.containerInfo===m.containerInfo&&_.stateNode.implementation===m.implementation){r(y,_.sibling),_=a(_,m.children||[]),_.return=y,y=_;break e}else{r(y,_);break}else t(y,_);_=_.sibling}_=bT(m,y.mode,k),_.return=y,y=_}return s(y)}if(typeof m=="string"||typeof m=="number")return m=""+m,_!==null&&_.tag===6?(r(y,_.sibling),_=a(_,m),_.return=y,y=_):(r(y,_),_=yT(m,y.mode,k),_.return=y,y=_),s(y);if(vv(m))return L(y,_,m,k);if(_f(m))return S(y,_,m,k);if(C&&gv(y,m),typeof m=="undefined"&&!w)switch(y.tag){case 1:case 22:case 0:case 11:case 15:throw Error(pe(152,il(y.type)||"Component"))}return r(y,_)}}var mv=hw(!0),vw=hw(!1),zf={},ba=Vo(zf),Wf=Vo(zf),Yf=Vo(zf);function Hu(e){if(e===zf)throw Error(pe(174));return e}function Pb(e,t){switch(lr(Yf,t),lr(Wf,e),lr(ba,zf),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:G0(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=G0(t,e)}Jt(ba),lr(ba,t)}function Dl(){Jt(ba),Jt(Wf),Jt(Yf)}function gw(e){Hu(Yf.current);var t=Hu(ba.current),r=G0(t,e.type);t!==r&&(lr(Wf,e),lr(ba,r))}function Mb(e){Wf.current===e&&(Jt(ba),Jt(Wf))}var cr=Vo(0);function yv(e){for(var t=e;t!==null;){if(t.tag===13){var r=t.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data==="$?"||r.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&64)!=0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var io=null,Ho=null,Ta=!1;function mw(e,t){var r=Oi(5,null,null,0);r.elementType="DELETED",r.type="DELETED",r.stateNode=t,r.return=e,r.flags=8,e.lastEffect!==null?(e.lastEffect.nextEffect=r,e.lastEffect=r):e.firstEffect=e.lastEffect=r}function yw(e,t){switch(e.tag){case 5:var r=e.type;return t=t.nodeType!==1||r.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,!0):!1;case 13:return!1;default:return!1}}function qb(e){if(Ta){var t=Ho;if(t){var r=t;if(!yw(e,t)){if(t=gl(r.nextSibling),!t||!yw(e,t)){e.flags=e.flags&-1025|2,Ta=!1,io=e;return}mw(io,r)}io=e,Ho=gl(t.firstChild)}else e.flags=e.flags&-1025|2,Ta=!1,io=e}}function bw(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;io=e}function bv(e){if(e!==io)return!1;if(!Ta)return bw(e),Ta=!0,!1;var t=e.type;if(e.tag!==5||t!=="head"&&t!=="body"&&!Sb(t,e.memoizedProps))for(t=Ho;t;)mw(e,t),t=gl(t.nextSibling);if(bw(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(pe(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var r=e.data;if(r==="/$"){if(t===0){Ho=gl(e.nextSibling);break e}t--}else r!=="$"&&r!=="$!"&&r!=="$?"||t++}e=e.nextSibling}Ho=null}}else Ho=io?gl(e.stateNode.nextSibling):null;return!0}function Bb(){Ho=io=null,Ta=!1}var kl=[];function Vb(){for(var e=0;eo))throw Error(pe(301));o+=1,an=mn=null,t.updateQueue=null,Jf.current=uG,e=r(n,a)}while(Zf)}if(Jf.current=Dv,t=mn!==null&&mn.next!==null,Xf=0,an=mn=gr=null,Tv=!1,t)throw Error(pe(300));return e}function zu(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return an===null?gr.memoizedState=an=e:an=an.next=e,an}function Wu(){if(mn===null){var e=gr.alternate;e=e!==null?e.memoizedState:null}else e=mn.next;var t=an===null?gr.memoizedState:an.next;if(t!==null)an=t,mn=e;else{if(e===null)throw Error(pe(310));mn=e,e={memoizedState:mn.memoizedState,baseState:mn.baseState,baseQueue:mn.baseQueue,queue:mn.queue,next:null},an===null?gr.memoizedState=an=e:an=an.next=e}return an}function Ea(e,t){return typeof t=="function"?t(e):t}function $f(e){var t=Wu(),r=t.queue;if(r===null)throw Error(pe(311));r.lastRenderedReducer=e;var n=mn,a=n.baseQueue,o=r.pending;if(o!==null){if(a!==null){var s=a.next;a.next=o.next,o.next=s}n.baseQueue=a=o,r.pending=null}if(a!==null){a=a.next,n=n.baseState;var l=s=o=null,d=a;do{var h=d.lane;if((Xf&h)===h)l!==null&&(l=l.next={lane:0,action:d.action,eagerReducer:d.eagerReducer,eagerState:d.eagerState,next:null}),n=d.eagerReducer===e?d.eagerState:e(n,d.action);else{var v={lane:h,action:d.action,eagerReducer:d.eagerReducer,eagerState:d.eagerState,next:null};l===null?(s=l=v,o=n):l=l.next=v,gr.lanes|=h,nd|=h}d=d.next}while(d!==null&&d!==a);l===null?o=n:l.next=s,_i(n,t.memoizedState)||($i=!0),t.memoizedState=n,t.baseState=o,t.baseQueue=l,r.lastRenderedState=n}return[t.memoizedState,r.dispatch]}function ed(e){var t=Wu(),r=t.queue;if(r===null)throw Error(pe(311));r.lastRenderedReducer=e;var n=r.dispatch,a=r.pending,o=t.memoizedState;if(a!==null){r.pending=null;var s=a=a.next;do o=e(o,s.action),s=s.next;while(s!==a);_i(o,t.memoizedState)||($i=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),r.lastRenderedState=o}return[o,n]}function Tw(e,t,r){var n=t._getVersion;n=n(t._source);var a=t._workInProgressVersionPrimary;if(a!==null?e=a===n:(e=e.mutableReadLanes,(e=(Xf&e)===e)&&(t._workInProgressVersionPrimary=n,kl.push(t))),e)return r(t._source);throw kl.push(t),Error(pe(350))}function Ew(e,t,r,n){var a=In;if(a===null)throw Error(pe(349));var o=t._getVersion,s=o(t._source),l=Jf.current,d=l.useState(function(){return Tw(a,t,r)}),h=d[1],v=d[0];d=an;var b=e.memoizedState,T=b.refs,A=T.getSnapshot,L=b.source;b=b.subscribe;var S=gr;return e.memoizedState={refs:T,source:t,subscribe:n},l.useEffect(function(){T.getSnapshot=r,T.setSnapshot=h;var y=o(t._source);if(!_i(s,y)){y=r(t._source),_i(v,y)||(h(y),y=Wo(S),a.mutableReadLanes|=y&a.pendingLanes),y=a.mutableReadLanes,a.entangledLanes|=y;for(var _=a.entanglements,m=y;0r?98:r,function(){e(!0)}),Ku(97<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=s.createElement(r,{is:n.is}):(e=s.createElement(r),r==="select"&&(s=e,n.multiple?s.multiple=!0:n.size&&(s.size=n.size))):e=s.createElementNS(e,r),e[Bo]=t,e[iv]=n,Uw(e,t,!1,!1),t.stateNode=e,s=K0(r,n),r){case"dialog":Yt("cancel",e),Yt("close",e),a=n;break;case"iframe":case"object":case"embed":Yt("load",e),a=n;break;case"video":case"audio":for(a=0;alT&&(t.flags|=64,o=!0,rd(n,!1),t.lanes=33554432)}else{if(!o)if(e=yv(s),e!==null){if(t.flags|=64,o=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),rd(n,!0),n.tail===null&&n.tailMode==="hidden"&&!s.alternate&&!Ta)return t=t.lastEffect=n.lastEffect,t!==null&&(t.nextEffect=null),null}else 2*gn()-n.renderingStartTime>lT&&r!==1073741824&&(t.flags|=64,o=!0,rd(n,!1),t.lanes=33554432);n.isBackwards?(s.sibling=t.child,t.child=s):(r=n.last,r!==null?r.sibling=s:t.child=s,n.last=s)}return n.tail!==null?(r=n.tail,n.rendering=r,n.tail=r.sibling,n.lastEffect=t.lastEffect,n.renderingStartTime=gn(),r.sibling=null,t=cr.current,lr(cr,o?t&1|2:t&1),r):null;case 23:case 24:return vT(),e!==null&&e.memoizedState!==null!=(t.memoizedState!==null)&&n.mode!=="unstable-defer-without-hiding"&&(t.flags|=4),null}throw Error(pe(156,t.tag))}function cG(e){switch(e.tag){case 1:Kn(e.type)&&ov();var t=e.flags;return t&4096?(e.flags=t&-4097|64,e):null;case 3:if(Dl(),Jt(Qn),Jt(vn),Vb(),t=e.flags,(t&64)!=0)throw Error(pe(285));return e.flags=t&-4097|64,e;case 5:return Mb(e),null;case 13:return Jt(cr),t=e.flags,t&4096?(e.flags=t&-4097|64,e):null;case 19:return Jt(cr),null;case 4:return Dl(),null;case 10:return Rb(e),null;case 23:case 24:return vT(),null;default:return null}}function $b(e,t){try{var r="",n=t;do r+=QV(n),n=n.return;while(n);var a=r}catch(o){a=` +`),s=i.length-1,l=o.length-1;1<=s&&0<=l&&i[s]!==o[l];)l--;for(;1<=s&&0<=l;s--,l--)if(i[s]!==o[l]){if(s!==1||l!==1)do if(s--,l--,0>l||i[s]!==o[l])return` +`+i[s].replace(" at new "," at ");while(1<=s&&0<=l);break}}}finally{yb=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Gf(e):""}function hK(e){switch(e.tag){case 5:return Gf(e.type);case 16:return Gf("Lazy");case 13:return Gf("Suspense");case 19:return Gf("SuspenseList");case 0:case 2:case 15:return e=ev(e.type,!1),e;case 11:return e=ev(e.type.render,!1),e;case 22:return e=ev(e.type._render,!1),e;case 1:return e=ev(e.type,!0),e;default:return""}}function El(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case zo:return"Fragment";case rs:return"Portal";case qf:return"Profiler";case lb:return"StrictMode";case Vf:return"Suspense";case Zh:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case fb:return(e.displayName||"Context")+".Consumer";case cb:return(e._context.displayName||"Context")+".Provider";case Xh:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(t!==""?"ForwardRef("+t+")":"ForwardRef");case $h:return El(e.type);case pb:return El(e._render);case db:t=e._payload,e=e._init;try{return El(e(t))}catch(r){}}return null}function Wo(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function jx(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function vK(e){var t=jx(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),n=""+e[t];if(!e.hasOwnProperty(t)&&typeof r!="undefined"&&typeof r.get=="function"&&typeof r.set=="function"){var i=r.get,o=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(s){n=""+s,o.call(this,s)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return n},setValue:function(s){n=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function tv(e){e._valueTracker||(e._valueTracker=vK(e))}function Px(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),n="";return e&&(n=jx(e)?e.checked?"true":"false":e.value),e=n,e!==r?(t.setValue(e),!0):!1}function rv(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(t){return e.body}}function bb(e,t){var r=t.checked;return cr({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r!=null?r:e._wrapperState.initialChecked})}function Fx(e,t){var r=t.defaultValue==null?"":t.defaultValue,n=t.checked!=null?t.checked:t.defaultChecked;r=Wo(t.value!=null?t.value:r),e._wrapperState={initialChecked:n,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Mx(e,t){t=t.checked,t!=null&&sb(e,"checked",t,!1)}function Tb(e,t){Mx(e,t);var r=Wo(t.value),n=t.type;if(r!=null)n==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?_b(e,t.type,r):t.hasOwnProperty("defaultValue")&&_b(e,t.type,Wo(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function qx(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var n=t.type;if(!(n!=="submit"&&n!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,r||t===e.value||(e.value=t),e.defaultValue=t}r=e.name,r!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,r!==""&&(e.name=r)}function _b(e,t,r){(t!=="number"||rv(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}function gK(e){var t="";return Jh.Children.forEach(e,function(r){r!=null&&(t+=r)}),t}function Eb(e,t){return e=cr({children:void 0},t),(t=gK(t.children))&&(e.children=t),e}function Sl(e,t,r,n){if(e=e.options,t){t={};for(var i=0;i=r.length))throw Error(ye(93));r=r[0]}t=r}t==null&&(t=""),r=t}e._wrapperState={initialValue:Wo(r)}}function Ux(e,t){var r=Wo(t.value),n=Wo(t.defaultValue);r!=null&&(r=""+r,r!==e.value&&(e.value=r),t.defaultValue==null&&e.defaultValue!==r&&(e.defaultValue=r)),n!=null&&(e.defaultValue=""+n)}function Gx(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==""&&t!==null&&(e.value=t)}var kb={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function Qx(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Ob(e,t){return e==null||e==="http://www.w3.org/1999/xhtml"?Qx(t):e==="http://www.w3.org/2000/svg"&&t==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var nv,Bx=function(e){return typeof MSApp!="undefined"&&MSApp.execUnsafeLocalFunction?function(t,r,n,i){MSApp.execUnsafeLocalFunction(function(){return e(t,r,n,i)})}:e}(function(e,t){if(e.namespaceURI!==kb.svg||"innerHTML"in e)e.innerHTML=t;else{for(nv=nv||document.createElement("div"),nv.innerHTML=""+t.valueOf().toString()+"",t=nv.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Qf(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var Bf={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},mK=["Webkit","ms","Moz","O"];Object.keys(Bf).forEach(function(e){mK.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Bf[t]=Bf[e]})});function Kx(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||Bf.hasOwnProperty(e)&&Bf[e]?(""+t).trim():t+"px"}function Hx(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var n=r.indexOf("--")===0,i=Kx(r,t[r],n);r==="float"&&(r="cssFloat"),n?e.setProperty(r,i):e[r]=i}}var yK=cr({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function wb(e,t){if(t){if(yK[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(ye(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(ye(60));if(!(typeof t.dangerouslySetInnerHTML=="object"&&"__html"in t.dangerouslySetInnerHTML))throw Error(ye(61))}if(t.style!=null&&typeof t.style!="object")throw Error(ye(62))}}function Nb(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Db(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var xb=null,kl=null,Ol=null;function zx(e){if(e=sd(e)){if(typeof xb!="function")throw Error(ye(280));var t=e.stateNode;t&&(t=kv(t),xb(e.stateNode,e.type,t))}}function Wx(e){kl?Ol?Ol.push(e):Ol=[e]:kl=e}function Yx(){if(kl){var e=kl,t=Ol;if(Ol=kl=null,zx(e),t)for(e=0;en?0:1<r;r++)t.push(e);return t}function cv(e,t,r){e.pendingLanes|=t;var n=t-1;e.suspendedLanes&=n,e.pingedLanes&=n,e=e.eventTimes,t=31-Zo(t),e[t]=r}var Zo=Math.clz32?Math.clz32:RK,IK=Math.log,AK=Math.LN2;function RK(e){return e===0?32:31-(IK(e)/AK|0)|0}var jK=ln.unstable_UserBlockingPriority,PK=ln.unstable_runWithPriority,fv=!0;function FK(e,t,r,n){ns||Lb();var i=Qb,o=ns;ns=!0;try{Jx(i,e,t,r,n)}finally{(ns=o)||Ab()}}function MK(e,t,r,n){PK(jK,Qb.bind(null,e,t,r,n))}function Qb(e,t,r,n){if(fv){var i;if((i=(t&4)==0)&&0=td),EC=String.fromCharCode(32),SC=!1;function kC(e,t){switch(e){case"keyup":return u3.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function OC(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ll=!1;function l3(e,t){switch(e){case"compositionend":return OC(t);case"keypress":return t.which!==32?null:(SC=!0,EC);case"textInput":return e=t.data,e===EC&&SC?null:e;default:return null}}function c3(e,t){if(Ll)return e==="compositionend"||!Xb&&kC(e,t)?(e=gC(),dv=Kb=$o=null,Ll=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=LC(r)}}function AC(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?AC(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function RC(){for(var e=window,t=rv();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch(n){r=!1}if(r)e=t.contentWindow;else break;t=rv(e.document)}return t}function $b(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var T3=vo&&"documentMode"in document&&11>=document.documentMode,Il=null,eT=null,ad=null,tT=!1;function jC(e,t,r){var n=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;tT||Il==null||Il!==rv(n)||(n=Il,"selectionStart"in n&&$b(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),ad&&id(ad,n)||(ad=n,n=Tv(eT,"onSelect"),0Fl||(e.current=sT[Fl],sT[Fl]=null,Fl--)}function _r(e,t){Fl++,sT[Fl]=e.current,e.current=t}var ru={},Rn=tu(ru),ci=tu(!1),os=ru;function Ml(e,t){var r=e.type.contextTypes;if(!r)return ru;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===t)return n.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in r)i[o]=t[o];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function fi(e){return e=e.childContextTypes,e!=null}function Ov(){or(ci),or(Rn)}function JC(e,t,r){if(Rn.current!==ru)throw Error(ye(168));_r(Rn,t),_r(ci,r)}function XC(e,t,r){var n=e.stateNode;if(e=t.childContextTypes,typeof n.getChildContext!="function")return r;n=n.getChildContext();for(var i in n)if(!(i in e))throw Error(ye(108,El(t)||"Unknown",i));return cr({},r,n)}function wv(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ru,os=Rn.current,_r(Rn,e),_r(ci,ci.current),!0}function ZC(e,t,r){var n=e.stateNode;if(!n)throw Error(ye(169));r?(e=XC(e,t,os),n.__reactInternalMemoizedMergedChildContext=e,or(ci),or(Rn),_r(Rn,e)):or(ci),_r(ci,r)}var lT=null,us=null,S3=ln.unstable_runWithPriority,cT=ln.unstable_scheduleCallback,fT=ln.unstable_cancelCallback,k3=ln.unstable_shouldYield,$C=ln.unstable_requestPaint,dT=ln.unstable_now,O3=ln.unstable_getCurrentPriorityLevel,Nv=ln.unstable_ImmediatePriority,eL=ln.unstable_UserBlockingPriority,tL=ln.unstable_NormalPriority,rL=ln.unstable_LowPriority,nL=ln.unstable_IdlePriority,pT={},w3=$C!==void 0?$C:function(){},go=null,Dv=null,hT=!1,iL=dT(),jn=1e4>iL?dT:function(){return dT()-iL};function ql(){switch(O3()){case Nv:return 99;case eL:return 98;case tL:return 97;case rL:return 96;case nL:return 95;default:throw Error(ye(332))}}function aL(e){switch(e){case 99:return Nv;case 98:return eL;case 97:return tL;case 96:return rL;case 95:return nL;default:throw Error(ye(332))}}function ss(e,t){return e=aL(e),S3(e,t)}function ld(e,t,r){return e=aL(e),cT(e,t,r)}function Aa(){if(Dv!==null){var e=Dv;Dv=null,fT(e)}oL()}function oL(){if(!hT&&go!==null){hT=!0;var e=0;try{var t=go;ss(99,function(){for(;eR?(M=O,O=null):M=O.sibling;var q=b(T,O,m[R],w);if(q===null){O===null&&(O=M);break}e&&O&&q.alternate===null&&t(T,O),S=o(q,S,R),L===null?x=q:L.sibling=q,L=q,O=M}if(R===m.length)return r(T,O),x;if(O===null){for(;RR?(M=O,O=null):M=O.sibling;var z=b(T,O,q.value,w);if(z===null){O===null&&(O=M);break}e&&O&&z.alternate===null&&t(T,O),S=o(z,S,R),L===null?x=z:L.sibling=z,L=z,O=M}if(q.done)return r(T,O),x;if(O===null){for(;!q.done;R++,q=m.next())q=y(T,q.value,w),q!==null&&(S=o(q,S,R),L===null?x=q:L.sibling=q,L=q);return x}for(O=n(T,O);!q.done;R++,q=m.next())q=D(O,T,R,q.value,w),q!==null&&(e&&q.alternate!==null&&O.delete(q.key===null?R:q.key),S=o(q,S,R),L===null?x=q:L.sibling=q,L=q);return e&&O.forEach(function(B){return t(T,B)}),x}return function(T,S,m,w){var x=typeof m=="object"&&m!==null&&m.type===zo&&m.key===null;x&&(m=m.props.children);var L=typeof m=="object"&&m!==null;if(L)switch(m.$$typeof){case Mf:e:{for(L=m.key,x=S;x!==null;){if(x.key===L){switch(x.tag){case 7:if(m.type===zo){r(T,x.sibling),S=i(x,m.props.children),S.return=T,T=S;break e}break;default:if(x.elementType===m.type){r(T,x.sibling),S=i(x,m.props),S.ref=fd(T,x,m),S.return=T,T=S;break e}}r(T,x);break}else t(T,x);x=x.sibling}m.type===zo?(S=Yl(m.props.children,T.mode,w,m.key),S.return=T,T=S):(w=$v(m.type,m.key,m.props,null,T.mode,w),w.ref=fd(T,S,m),w.return=T,T=w)}return s(T);case rs:e:{for(x=m.key;S!==null;){if(S.key===x)if(S.tag===4&&S.stateNode.containerInfo===m.containerInfo&&S.stateNode.implementation===m.implementation){r(T,S.sibling),S=i(S,m.children||[]),S.return=T,T=S;break e}else{r(T,S);break}else t(T,S);S=S.sibling}S=t_(m,T.mode,w),S.return=T,T=S}return s(T)}if(typeof m=="string"||typeof m=="number")return m=""+m,S!==null&&S.tag===6?(r(T,S.sibling),S=i(S,m),S.return=T,T=S):(r(T,S),S=e_(m,T.mode,w),S.return=T,T=S),s(T);if(Rv(m))return _(T,S,m,w);if(Uf(m))return k(T,S,m,w);if(L&&jv(T,m),typeof m=="undefined"&&!x)switch(T.tag){case 1:case 22:case 0:case 11:case 15:throw Error(ye(152,El(T.type)||"Component"))}return r(T,S)}}var Pv=vL(!0),gL=vL(!1),dd={},Ra=tu(dd),pd=tu(dd),hd=tu(dd);function ls(e){if(e===dd)throw Error(ye(174));return e}function bT(e,t){switch(_r(hd,t),_r(pd,e),_r(Ra,dd),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Ob(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Ob(t,e)}or(Ra),_r(Ra,t)}function Gl(){or(Ra),or(pd),or(hd)}function mL(e){ls(hd.current);var t=ls(Ra.current),r=Ob(t,e.type);t!==r&&(_r(pd,e),_r(Ra,r))}function TT(e){pd.current===e&&(or(Ra),or(pd))}var Er=tu(0);function Fv(e){for(var t=e;t!==null;){if(t.tag===13){var r=t.memoizedState;if(r!==null&&(r=r.dehydrated,r===null||r.data==="$?"||r.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&64)!=0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var mo=null,ou=null,ja=!1;function yL(e,t){var r=Bi(5,null,null,0);r.elementType="DELETED",r.type="DELETED",r.stateNode=t,r.return=e,r.flags=8,e.lastEffect!==null?(e.lastEffect.nextEffect=r,e.lastEffect=r):e.firstEffect=e.lastEffect=r}function bL(e,t){switch(e.tag){case 5:var r=e.type;return t=t.nodeType!==1||r.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null?(e.stateNode=t,!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,!0):!1;case 13:return!1;default:return!1}}function _T(e){if(ja){var t=ou;if(t){var r=t;if(!bL(e,t)){if(t=Rl(r.nextSibling),!t||!bL(e,t)){e.flags=e.flags&-1025|2,ja=!1,mo=e;return}yL(mo,r)}mo=e,ou=Rl(t.firstChild)}else e.flags=e.flags&-1025|2,ja=!1,mo=e}}function TL(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;mo=e}function Mv(e){if(e!==mo)return!1;if(!ja)return TL(e),ja=!0,!1;var t=e.type;if(e.tag!==5||t!=="head"&&t!=="body"&&!aT(t,e.memoizedProps))for(t=ou;t;)yL(e,t),t=Rl(t.nextSibling);if(TL(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(ye(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var r=e.data;if(r==="/$"){if(t===0){ou=Rl(e.nextSibling);break e}t--}else r!=="$"&&r!=="$!"&&r!=="$?"||t++}e=e.nextSibling}ou=null}}else ou=mo?Rl(e.stateNode.nextSibling):null;return!0}function ET(){ou=mo=null,ja=!1}var Ql=[];function ST(){for(var e=0;eo))throw Error(ye(301));o+=1,bn=Pn=null,t.updateQueue=null,vd.current=L3,e=r(n,i)}while(md)}if(vd.current=Qv,t=Pn!==null&&Pn.next!==null,gd=0,bn=Pn=Dr=null,qv=!1,t)throw Error(ye(300));return e}function cs(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return bn===null?Dr.memoizedState=bn=e:bn=bn.next=e,bn}function fs(){if(Pn===null){var e=Dr.alternate;e=e!==null?e.memoizedState:null}else e=Pn.next;var t=bn===null?Dr.memoizedState:bn.next;if(t!==null)bn=t,Pn=e;else{if(e===null)throw Error(ye(310));Pn=e,e={memoizedState:Pn.memoizedState,baseState:Pn.baseState,baseQueue:Pn.baseQueue,queue:Pn.queue,next:null},bn===null?Dr.memoizedState=bn=e:bn=bn.next=e}return bn}function Pa(e,t){return typeof t=="function"?t(e):t}function yd(e){var t=fs(),r=t.queue;if(r===null)throw Error(ye(311));r.lastRenderedReducer=e;var n=Pn,i=n.baseQueue,o=r.pending;if(o!==null){if(i!==null){var s=i.next;i.next=o.next,o.next=s}n.baseQueue=i=o,r.pending=null}if(i!==null){i=i.next,n=n.baseState;var l=s=o=null,d=i;do{var h=d.lane;if((gd&h)===h)l!==null&&(l=l.next={lane:0,action:d.action,eagerReducer:d.eagerReducer,eagerState:d.eagerState,next:null}),n=d.eagerReducer===e?d.eagerState:e(n,d.action);else{var v={lane:h,action:d.action,eagerReducer:d.eagerReducer,eagerState:d.eagerState,next:null};l===null?(s=l=v,o=n):l=l.next=v,Dr.lanes|=h,Ed|=h}d=d.next}while(d!==null&&d!==i);l===null?o=n:l.next=s,Vi(n,t.memoizedState)||(ga=!0),t.memoizedState=n,t.baseState=o,t.baseQueue=l,r.lastRenderedState=n}return[t.memoizedState,r.dispatch]}function bd(e){var t=fs(),r=t.queue;if(r===null)throw Error(ye(311));r.lastRenderedReducer=e;var n=r.dispatch,i=r.pending,o=t.memoizedState;if(i!==null){r.pending=null;var s=i=i.next;do o=e(o,s.action),s=s.next;while(s!==i);Vi(o,t.memoizedState)||(ga=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),r.lastRenderedState=o}return[o,n]}function _L(e,t,r){var n=t._getVersion;n=n(t._source);var i=t._workInProgressVersionPrimary;if(i!==null?e=i===n:(e=e.mutableReadLanes,(e=(gd&e)===e)&&(t._workInProgressVersionPrimary=n,Ql.push(t))),e)return r(t._source);throw Ql.push(t),Error(ye(350))}function EL(e,t,r,n){var i=ei;if(i===null)throw Error(ye(349));var o=t._getVersion,s=o(t._source),l=vd.current,d=l.useState(function(){return _L(i,t,r)}),h=d[1],v=d[0];d=bn;var y=e.memoizedState,b=y.refs,D=b.getSnapshot,_=y.source;y=y.subscribe;var k=Dr;return e.memoizedState={refs:b,source:t,subscribe:n},l.useEffect(function(){b.getSnapshot=r,b.setSnapshot=h;var T=o(t._source);if(!Vi(s,T)){T=r(t._source),Vi(v,T)||(h(T),T=su(k),i.mutableReadLanes|=T&i.pendingLanes),T=i.mutableReadLanes,i.entangledLanes|=T;for(var S=i.entanglements,m=T;0r?98:r,function(){e(!0)}),ss(97<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=s.createElement(r,{is:n.is}):(e=s.createElement(r),r==="select"&&(s=e,n.multiple?s.multiple=!0:n.size&&(s.size=n.size))):e=s.createElementNS(e,r),e[eu]=t,e[Sv]=n,QL(e,t,!1,!1),t.stateNode=e,s=Nb(r,n),r){case"dialog":ar("cancel",e),ar("close",e),i=n;break;case"iframe":case"object":case"embed":ar("load",e),i=n;break;case"video":case"audio":for(i=0;iKT&&(t.flags|=64,o=!0,_d(n,!1),t.lanes=33554432)}else{if(!o)if(e=Fv(s),e!==null){if(t.flags|=64,o=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),_d(n,!0),n.tail===null&&n.tailMode==="hidden"&&!s.alternate&&!ja)return t=t.lastEffect=n.lastEffect,t!==null&&(t.nextEffect=null),null}else 2*jn()-n.renderingStartTime>KT&&r!==1073741824&&(t.flags|=64,o=!0,_d(n,!1),t.lanes=33554432);n.isBackwards?(s.sibling=t.child,t.child=s):(r=n.last,r!==null?r.sibling=s:t.child=s,n.last=s)}return n.tail!==null?(r=n.tail,n.rendering=r,n.tail=r.sibling,n.lastEffect=t.lastEffect,n.renderingStartTime=jn(),r.sibling=null,t=Er.current,_r(Er,o?t&1|2:t&1),r):null;case 23:case 24:return XT(),e!==null&&e.memoizedState!==null!=(t.memoizedState!==null)&&n.mode!=="unstable-defer-without-hiding"&&(t.flags|=4),null}throw Error(ye(156,t.tag))}function R3(e){switch(e.tag){case 1:fi(e.type)&&Ov();var t=e.flags;return t&4096?(e.flags=t&-4097|64,e):null;case 3:if(Gl(),or(ci),or(Rn),ST(),t=e.flags,(t&64)!=0)throw Error(ye(285));return e.flags=t&-4097|64,e;case 5:return TT(e),null;case 13:return or(Er),t=e.flags,t&4096?(e.flags=t&-4097|64,e):null;case 19:return or(Er),null;case 4:return Gl(),null;case 10:return gT(e),null;case 23:case 24:return XT(),null;default:return null}}function jT(e,t){try{var r="",n=t;do r+=hK(n),n=n.return;while(n);var i=r}catch(o){i=` Error generating stack: `+o.message+` -`+o.stack}return{value:e,source:t,stack:a}}function eT(e,t){try{console.error(t.value)}catch(r){setTimeout(function(){throw r})}}var fG=typeof WeakMap=="function"?WeakMap:Map;function Kw(e,t,r){r=Qo(-1,r),r.tag=3,r.payload={element:null};var n=t.value;return r.callback=function(){wv||(wv=!0,cT=n),eT(e,t)},r}function Hw(e,t,r){r=Qo(-1,r),r.tag=3;var n=e.type.getDerivedStateFromError;if(typeof n=="function"){var a=t.value;r.payload=function(){return eT(e,t),n(a)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch=="function"&&(r.callback=function(){typeof n!="function"&&(_a===null?_a=new Set([this]):_a.add(this),eT(e,t));var s=t.stack;this.componentDidCatch(t.value,{componentStack:s!==null?s:""})}),r}var dG=typeof WeakSet=="function"?WeakSet:Set;function zw(e){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(r){Xo(e,r)}else t.current=null}function pG(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(t.flags&256&&e!==null){var r=e.memoizedProps,n=e.memoizedState;e=t.stateNode,t=e.getSnapshotBeforeUpdate(t.elementType===t.type?r:Zi(t.type,r),n),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:t.flags&256&&Db(t.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(pe(163))}function hG(e,t,r){switch(r.tag){case 0:case 11:case 15:case 22:if(t=r.updateQueue,t=t!==null?t.lastEffect:null,t!==null){e=t=t.next;do{if((e.tag&3)==3){var n=e.create;e.destroy=n()}e=e.next}while(e!==t)}if(t=r.updateQueue,t=t!==null?t.lastEffect:null,t!==null){e=t=t.next;do{var a=e;n=a.next,a=a.tag,(a&4)!=0&&(a&1)!=0&&(sA(r,e),_G(r,e)),e=n}while(e!==t)}return;case 1:e=r.stateNode,r.flags&4&&(t===null?e.componentDidMount():(n=r.elementType===r.type?t.memoizedProps:Zi(r.type,t.memoizedProps),e.componentDidUpdate(n,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),t=r.updateQueue,t!==null&&lw(r,t,e);return;case 3:if(t=r.updateQueue,t!==null){if(e=null,r.child!==null)switch(r.child.tag){case 5:e=r.child.stateNode;break;case 1:e=r.child.stateNode}lw(r,t,e)}return;case 5:e=r.stateNode,t===null&&r.flags&4&&Q2(r.type,r.memoizedProps)&&e.focus();return;case 6:return;case 4:return;case 12:return;case 13:r.memoizedState===null&&(r=r.alternate,r!==null&&(r=r.memoizedState,r!==null&&(r=r.dehydrated,r!==null&&u2(r))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(pe(163))}function Ww(e,t){for(var r=e;;){if(r.tag===5){var n=r.stateNode;if(t)n=n.style,typeof n.setProperty=="function"?n.setProperty("display","none","important"):n.display="none";else{n=r.stateNode;var a=r.memoizedProps.style;a=a!=null&&a.hasOwnProperty("display")?a.display:null,n.style.display=QC("display",a)}}else if(r.tag===6)r.stateNode.nodeValue=t?"":r.memoizedProps;else if((r.tag!==23&&r.tag!==24||r.memoizedState===null||r===e)&&r.child!==null){r.child.return=r,r=r.child;continue}if(r===e)break;for(;r.sibling===null;){if(r.return===null||r.return===e)return;r=r.return}r.sibling.return=r.return,r=r.sibling}}function Yw(e,t){if(Qu&&typeof Qu.onCommitFiberUnmount=="function")try{Qu.onCommitFiberUnmount(Cb,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(e=t.updateQueue,e!==null&&(e=e.lastEffect,e!==null)){var r=e=e.next;do{var n=r,a=n.destroy;if(n=n.tag,a!==void 0)if((n&4)!=0)sA(t,r);else{n=t;try{a()}catch(o){Xo(n,o)}}r=r.next}while(r!==e)}break;case 1:if(zw(t),e=t.stateNode,typeof e.componentWillUnmount=="function")try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){Xo(t,o)}break;case 5:zw(t);break;case 4:$w(e,t)}}function Jw(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function Xw(e){return e.tag===5||e.tag===3||e.tag===4}function Zw(e){e:{for(var t=e.return;t!==null;){if(Xw(t))break e;t=t.return}throw Error(pe(160))}var r=t;switch(t=r.stateNode,r.tag){case 5:var n=!1;break;case 3:t=t.containerInfo,n=!0;break;case 4:t=t.containerInfo,n=!0;break;default:throw Error(pe(161))}r.flags&16&&(Df(t,""),r.flags&=-17);e:t:for(r=e;;){for(;r.sibling===null;){if(r.return===null||Xw(r.return)){r=null;break e}r=r.return}for(r.sibling.return=r.return,r=r.sibling;r.tag!==5&&r.tag!==6&&r.tag!==18;){if(r.flags&2||r.child===null||r.tag===4)continue t;r.child.return=r,r=r.child}if(!(r.flags&2)){r=r.stateNode;break e}}n?tT(e,r,t):rT(e,r,t)}function tT(e,t,r){var n=e.tag,a=n===5||n===6;if(a)e=a?e.stateNode:e.stateNode.instance,t?r.nodeType===8?r.parentNode.insertBefore(e,t):r.insertBefore(e,t):(r.nodeType===8?(t=r.parentNode,t.insertBefore(e,r)):(t=r,t.appendChild(e)),r=r._reactRootContainer,r!=null||t.onclick!==null||(t.onclick=rv));else if(n!==4&&(e=e.child,e!==null))for(tT(e,t,r),e=e.sibling;e!==null;)tT(e,t,r),e=e.sibling}function rT(e,t,r){var n=e.tag,a=n===5||n===6;if(a)e=a?e.stateNode:e.stateNode.instance,t?r.insertBefore(e,t):r.appendChild(e);else if(n!==4&&(e=e.child,e!==null))for(rT(e,t,r),e=e.sibling;e!==null;)rT(e,t,r),e=e.sibling}function $w(e,t){for(var r=t,n=!1,a,o;;){if(!n){n=r.return;e:for(;;){if(n===null)throw Error(pe(160));switch(a=n.stateNode,n.tag){case 5:o=!1;break e;case 3:a=a.containerInfo,o=!0;break e;case 4:a=a.containerInfo,o=!0;break e}n=n.return}n=!0}if(r.tag===5||r.tag===6){e:for(var s=e,l=r,d=l;;)if(Yw(s,d),d.child!==null&&d.tag!==4)d.child.return=d,d=d.child;else{if(d===l)break e;for(;d.sibling===null;){if(d.return===null||d.return===l)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}o?(s=a,l=r.stateNode,s.nodeType===8?s.parentNode.removeChild(l):s.removeChild(l)):a.removeChild(r.stateNode)}else if(r.tag===4){if(r.child!==null){a=r.stateNode.containerInfo,o=!0,r.child.return=r,r=r.child;continue}}else if(Yw(e,r),r.child!==null){r.child.return=r,r=r.child;continue}if(r===t)break;for(;r.sibling===null;){if(r.return===null||r.return===t)return;r=r.return,r.tag===4&&(n=!1)}r.sibling.return=r.return,r=r.sibling}}function nT(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var n=r=r.next;do(n.tag&3)==3&&(e=n.destroy,n.destroy=void 0,e!==void 0&&e()),n=n.next;while(n!==r)}return;case 1:return;case 5:if(r=t.stateNode,r!=null){n=t.memoizedProps;var a=e!==null?e.memoizedProps:n;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,o!==null){for(r[iv]=n,e==="input"&&n.type==="radio"&&n.name!=null&&PC(r,n),K0(e,a),t=K0(e,n),a=0;aa&&(a=s),r&=~o}if(r=a,r=gn()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*gG(r/1960))-r,10i&&(i=s),r&=~o}if(r=i,r=jn()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*V3(r/1960))-r,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}on!==5&&(on=2),d=$b(d,l),T=s;do{switch(T.tag){case 3:o=d,T.flags|=4096,t&=-t,T.lanes|=t;var C=Kw(T,o,t);sw(T,C);break e;case 1:o=d;var D=T.type,R=T.stateNode;if((T.flags&64)==0&&(typeof D.getDerivedStateFromError=="function"||R!==null&&typeof R.componentDidCatch=="function"&&(_a===null||!_a.has(R)))){T.flags|=4096,t&=-t,T.lanes|=t;var M=Hw(T,o,t);sw(T,M);break e}}T=T.return}while(T!==null)}uA(r)}catch(q){t=q,Pr===r&&r!==null&&(Pr=r=r.return);continue}break}while(1)}function aA(){var e=Ov.current;return Ov.current=Dv,e===null?Dv:e}function sd(e,t){var r=ze;ze|=16;var n=aA();In===e&&yn===t||Nl(e,t);do try{yG();break}catch(a){iA(e,a)}while(1);if(Ib(),ze=r,Ov.current=n,Pr!==null)throw Error(pe(261));return In=null,yn=0,on}function yG(){for(;Pr!==null;)oA(Pr)}function bG(){for(;Pr!==null&&!eG();)oA(Pr)}function oA(e){var t=cA(e.alternate,e,Yu);e.memoizedProps=e.pendingProps,t===null?uA(e):Pr=t,iT.current=null}function uA(e){var t=e;do{var r=t.alternate;if(e=t.return,(t.flags&2048)==0){if(r=lG(r,t,Yu),r!==null){Pr=r;return}if(r=t,r.tag!==24&&r.tag!==23||r.memoizedState===null||(Yu&1073741824)!=0||(r.mode&4)==0){for(var n=0,a=r.child;a!==null;)n|=a.lanes|a.childLanes,a=a.sibling;r.childLanes=n}e!==null&&(e.flags&2048)==0&&(e.firstEffect===null&&(e.firstEffect=t.firstEffect),t.lastEffect!==null&&(e.lastEffect!==null&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1s&&(l=s,s=C,C=l),l=L2(m,C),o=L2(m,s),l&&o&&(w.rangeCount!==1||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==o.node||w.focusOffset!==o.offset)&&(k=k.createRange(),k.setStart(l.node,l.offset),w.removeAllRanges(),C>s?(w.addRange(k),w.extend(o.node,o.offset)):(k.setEnd(o.node,o.offset),w.addRange(k)))))),k=[],w=m;w=w.parentNode;)w.nodeType===1&&k.push({element:w,left:w.scrollLeft,top:w.scrollTop});for(typeof m.focus=="function"&&m.focus(),m=0;mgn()-sT?Nl(e,0):oT|=r),ki(e,t)}function kG(e,t){var r=e.stateNode;r!==null&&r.delete(t),t=0,t===0&&(t=e.mode,(t&2)==0?t=1:(t&4)==0?t=El()===99?1:2:(uo===0&&(uo=Ol),t=fl(62914560&~uo),t===0&&(t=4194304))),r=ai(),e=xv(e,t),e!==null&&(Kh(e,t,r),ki(e,r))}var cA;cA=function(e,t,r){var n=t.lanes;if(e!==null)if(e.memoizedProps!==t.pendingProps||Qn.current)$i=!0;else if((r&n)!=0)$i=(e.flags&16384)!=0;else{switch($i=!1,t.tag){case 3:Fw(t),Bb();break;case 5:gw(t);break;case 1:Kn(t.type)&&uv(t);break;case 4:Pb(t,t.stateNode.containerInfo);break;case 10:n=t.memoizedProps.value;var a=t.type._context;lr(cv,a._currentValue),a._currentValue=n;break;case 13:if(t.memoizedState!==null)return(r&t.child.childLanes)!=0?jw(e,t,r):(lr(cr,cr.current&1),t=ao(e,t,r),t!==null?t.sibling:null);lr(cr,cr.current&1);break;case 19:if(n=(r&t.childLanes)!=0,(e.flags&64)!=0){if(n)return Vw(e,t,r);t.flags|=64}if(a=t.memoizedState,a!==null&&(a.rendering=null,a.tail=null,a.lastEffect=null),lr(cr,cr.current),n)break;return null;case 23:case 24:return t.lanes=0,Wb(e,t,r)}return ao(e,t,r)}else $i=!1;switch(t.lanes=0,t.tag){case 2:if(n=t.type,e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=Tl(t,vn.current),Sl(t,r),a=Gb(null,t,n,e,a,r),t.flags|=1,typeof a=="object"&&a!==null&&typeof a.render=="function"&&a.$$typeof===void 0){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,Kn(n)){var o=!0;uv(t)}else o=!1;t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,Fb(t);var s=n.getDerivedStateFromProps;typeof s=="function"&&pv(t,n,s,e),a.updater=hv,t.stateNode=a,a._reactInternals=t,jb(t,n,e,r),t=Jb(null,t,n,!0,o,r)}else t.tag=0,zn(null,t,a,r),t=t.child;return t;case 16:a=t.elementType;e:{switch(e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=a._init,a=o(a._payload),t.type=a,o=t.tag=CG(a),e=Zi(a,e),o){case 0:t=Yb(null,t,a,e,r);break e;case 1:t=Rw(null,t,a,e,r);break e;case 11:t=Nw(null,t,a,e,r);break e;case 14:t=Lw(null,t,a,Zi(a.type,e),n,r);break e}throw Error(pe(306,a,""))}return t;case 0:return n=t.type,a=t.pendingProps,a=t.elementType===n?a:Zi(n,a),Yb(e,t,n,a,r);case 1:return n=t.type,a=t.pendingProps,a=t.elementType===n?a:Zi(n,a),Rw(e,t,n,a,r);case 3:if(Fw(t),n=t.updateQueue,e===null||n===null)throw Error(pe(282));if(n=t.pendingProps,a=t.memoizedState,a=a!==null?a.element:null,uw(e,t),Kf(t,n,null,r),n=t.memoizedState.element,n===a)Bb(),t=ao(e,t,r);else{if(a=t.stateNode,(o=a.hydrate)&&(Ho=gl(t.stateNode.containerInfo.firstChild),io=t,o=Ta=!0),o){if(e=a.mutableSourceEagerHydrationData,e!=null)for(a=0;a{"use strict";function hA(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__=="undefined"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(hA)}catch(e){console.error(e)}}hA(),vA.exports=pA()});var gA=U(xl=>{"use strict";Object.defineProperty(xl,"__esModule",{value:!0});xl.versionInfo=xl.version=void 0;var RG="15.5.0";xl.version=RG;var FG=Object.freeze({major:15,minor:5,patch:0,preReleaseTag:null});xl.versionInfo=FG});var Pv=U(DT=>{"use strict";Object.defineProperty(DT,"__esModule",{value:!0});DT.default=jG;function jG(e){return typeof(e==null?void 0:e.then)=="function"}});var Sa=U(kT=>{"use strict";Object.defineProperty(kT,"__esModule",{value:!0});kT.default=PG;function Mv(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Mv=function(r){return typeof r}:Mv=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Mv(e)}function PG(e){return Mv(e)=="object"&&e!==null}});var Da=U($o=>{"use strict";Object.defineProperty($o,"__esModule",{value:!0});$o.SYMBOL_TO_STRING_TAG=$o.SYMBOL_ASYNC_ITERATOR=$o.SYMBOL_ITERATOR=void 0;var MG=typeof Symbol=="function"&&Symbol.iterator!=null?Symbol.iterator:"@@iterator";$o.SYMBOL_ITERATOR=MG;var qG=typeof Symbol=="function"&&Symbol.asyncIterator!=null?Symbol.asyncIterator:"@@asyncIterator";$o.SYMBOL_ASYNC_ITERATOR=qG;var BG=typeof Symbol=="function"&&Symbol.toStringTag!=null?Symbol.toStringTag:"@@toStringTag";$o.SYMBOL_TO_STRING_TAG=BG});var qv=U(OT=>{"use strict";Object.defineProperty(OT,"__esModule",{value:!0});OT.getLocation=VG;function VG(e,t){for(var r=/\r\n|[\n\r]/g,n=1,a=t+1,o;(o=r.exec(e.body))&&o.index{"use strict";Object.defineProperty(Vv,"__esModule",{value:!0});Vv.printLocation=GG;Vv.printSourceLocation=mA;var UG=qv();function GG(e){return mA(e.source,(0,UG.getLocation)(e.source,e.start))}function mA(e,t){var r=e.locationOffset.column-1,n=Bv(r)+e.body,a=t.line-1,o=e.locationOffset.line-1,s=t.line+o,l=t.line===1?r:0,d=t.column+l,h="".concat(e.name,":").concat(s,":").concat(d,` -`),v=n.split(/\r\n|[\n\r]/g),b=v[a];if(b.length>120){for(var T=Math.floor(d/80),A=d%80,L=[],S=0;S{"use strict";function Uv(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Uv=function(r){return typeof r}:Uv=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Uv(e)}Object.defineProperty(vd,"__esModule",{value:!0});vd.printError=DA;vd.GraphQLError=void 0;var KG=zG(Sa()),HG=Da(),bA=qv(),TA=CT();function zG(e){return e&&e.__esModule?e:{default:e}}function WG(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function EA(e,t){for(var r=0;r component higher in the tree to provide a loading indicator or placeholder to display.`)}Tn!==5&&(Tn=2),d=jT(d,l),b=s;do{switch(b.tag){case 3:o=d,b.flags|=4096,t&=-t,b.lanes|=t;var L=HL(b,o,t);lL(b,L);break e;case 1:o=d;var O=b.type,R=b.stateNode;if((b.flags&64)==0&&(typeof O.getDerivedStateFromError=="function"||R!==null&&typeof R.componentDidCatch=="function"&&(Fa===null||!Fa.has(R)))){b.flags|=4096,t&=-t,b.lanes|=t;var M=zL(b,o,t);lL(b,M);break e}}b=b.return}while(b!==null)}s1(r)}catch(q){t=q,Jr===r&&r!==null&&(Jr=r=r.return);continue}break}while(1)}function o1(){var e=Kv.current;return Kv.current=Qv,e===null?Qv:e}function Nd(e,t){var r=tt;tt|=16;var n=o1();ei===e&&Fn===t||Wl(e,t);do try{G3();break}catch(i){a1(e,i)}while(1);if(vT(),tt=r,Kv.current=n,Jr!==null)throw Error(ye(261));return ei=null,Fn=0,Tn}function G3(){for(;Jr!==null;)u1(Jr)}function Q3(){for(;Jr!==null&&!k3();)u1(Jr)}function u1(e){var t=f1(e.alternate,e,ds);e.memoizedProps=e.pendingProps,t===null?s1(e):Jr=t,VT.current=null}function s1(e){var t=e;do{var r=t.alternate;if(e=t.return,(t.flags&2048)==0){if(r=A3(r,t,ds),r!==null){Jr=r;return}if(r=t,r.tag!==24&&r.tag!==23||r.memoizedState===null||(ds&1073741824)!=0||(r.mode&4)==0){for(var n=0,i=r.child;i!==null;)n|=i.lanes|i.childLanes,i=i.sibling;r.childLanes=n}e!==null&&(e.flags&2048)==0&&(e.firstEffect===null&&(e.firstEffect=t.firstEffect),t.lastEffect!==null&&(e.lastEffect!==null&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1s&&(l=s,s=L,L=l),l=IC(m,L),o=IC(m,s),l&&o&&(x.rangeCount!==1||x.anchorNode!==l.node||x.anchorOffset!==l.offset||x.focusNode!==o.node||x.focusOffset!==o.offset)&&(w=w.createRange(),w.setStart(l.node,l.offset),x.removeAllRanges(),L>s?(x.addRange(w),x.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),x.addRange(w)))))),w=[],x=m;x=x.parentNode;)x.nodeType===1&&w.push({element:x,left:x.scrollLeft,top:x.scrollTop});for(typeof m.focus=="function"&&m.focus(),m=0;mjn()-BT?Wl(e,0):GT|=r),Qi(e,t)}function Y3(e,t){var r=e.stateNode;r!==null&&r.delete(t),t=0,t===0&&(t=e.mode,(t&2)==0?t=1:(t&4)==0?t=ql()===99?1:2:(To===0&&(To=Bl),t=xl(62914560&~To),t===0&&(t=4194304))),r=wi(),e=Xv(e,t),e!==null&&(cv(e,t,r),Qi(e,r))}var f1;f1=function(e,t,r){var n=t.lanes;if(e!==null)if(e.memoizedProps!==t.pendingProps||ci.current)ga=!0;else if((r&n)!=0)ga=(e.flags&16384)!=0;else{switch(ga=!1,t.tag){case 3:PL(t),ET();break;case 5:mL(t);break;case 1:fi(t.type)&&wv(t);break;case 4:bT(t,t.stateNode.containerInfo);break;case 10:n=t.memoizedProps.value;var i=t.type._context;_r(xv,i._currentValue),i._currentValue=n;break;case 13:if(t.memoizedState!==null)return(r&t.child.childLanes)!=0?FL(e,t,r):(_r(Er,Er.current&1),t=yo(e,t,r),t!==null?t.sibling:null);_r(Er,Er.current&1);break;case 19:if(n=(r&t.childLanes)!=0,(e.flags&64)!=0){if(n)return GL(e,t,r);t.flags|=64}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),_r(Er,Er.current),n)break;return null;case 23:case 24:return t.lanes=0,CT(e,t,r)}return yo(e,t,r)}else ga=!1;switch(t.lanes=0,t.tag){case 2:if(n=t.type,e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,i=Ml(t,Rn.current),Ul(t,r),i=OT(null,t,n,e,i,r),t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,fi(n)){var o=!0;wv(t)}else o=!1;t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,mT(t);var s=n.getDerivedStateFromProps;typeof s=="function"&&Iv(t,n,s,e),i.updater=Av,t.stateNode=i,i._reactInternals=t,yT(t,n,e,r),t=IT(null,t,n,!0,o,r)}else t.tag=0,pi(null,t,i,r),t=t.child;return t;case 16:i=t.elementType;e:{switch(e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=i._init,i=o(i._payload),t.type=i,o=t.tag=X3(i),e=va(i,e),o){case 0:t=LT(null,t,i,e,r);break e;case 1:t=jL(null,t,i,e,r);break e;case 11:t=LL(null,t,i,e,r);break e;case 14:t=IL(null,t,i,va(i.type,e),n,r);break e}throw Error(ye(306,i,""))}return t;case 0:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:va(n,i),LT(e,t,n,i,r);case 1:return n=t.type,i=t.pendingProps,i=t.elementType===n?i:va(n,i),jL(e,t,n,i,r);case 3:if(PL(t),n=t.updateQueue,e===null||n===null)throw Error(ye(282));if(n=t.pendingProps,i=t.memoizedState,i=i!==null?i.element:null,sL(e,t),cd(t,n,null,r),n=t.memoizedState.element,n===i)ET(),t=yo(e,t,r);else{if(i=t.stateNode,(o=i.hydrate)&&(ou=Rl(t.stateNode.containerInfo.firstChild),mo=t,o=ja=!0),o){if(e=i.mutableSourceEagerHydrationData,e!=null)for(i=0;i{"use strict";function v1(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__=="undefined"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(v1)}catch(e){console.error(e)}}v1(),g1.exports=h1()});var m1=G(Jl=>{"use strict";Object.defineProperty(Jl,"__esModule",{value:!0});Jl.versionInfo=Jl.version=void 0;var iH="15.5.0";Jl.version=iH;var aH=Object.freeze({major:15,minor:5,patch:0,preReleaseTag:null});Jl.versionInfo=aH});var rg=G(o_=>{"use strict";Object.defineProperty(o_,"__esModule",{value:!0});o_.default=oH;function oH(e){return typeof(e==null?void 0:e.then)=="function"}});var Ma=G(u_=>{"use strict";Object.defineProperty(u_,"__esModule",{value:!0});u_.default=uH;function ng(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ng=function(r){return typeof r}:ng=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ng(e)}function uH(e){return ng(e)=="object"&&e!==null}});var qa=G(pu=>{"use strict";Object.defineProperty(pu,"__esModule",{value:!0});pu.SYMBOL_TO_STRING_TAG=pu.SYMBOL_ASYNC_ITERATOR=pu.SYMBOL_ITERATOR=void 0;var sH=typeof Symbol=="function"&&Symbol.iterator!=null?Symbol.iterator:"@@iterator";pu.SYMBOL_ITERATOR=sH;var lH=typeof Symbol=="function"&&Symbol.asyncIterator!=null?Symbol.asyncIterator:"@@asyncIterator";pu.SYMBOL_ASYNC_ITERATOR=lH;var cH=typeof Symbol=="function"&&Symbol.toStringTag!=null?Symbol.toStringTag:"@@toStringTag";pu.SYMBOL_TO_STRING_TAG=cH});var ig=G(s_=>{"use strict";Object.defineProperty(s_,"__esModule",{value:!0});s_.getLocation=fH;function fH(e,t){for(var r=/\r\n|[\n\r]/g,n=1,i=t+1,o;(o=r.exec(e.body))&&o.index{"use strict";Object.defineProperty(og,"__esModule",{value:!0});og.printLocation=pH;og.printSourceLocation=y1;var dH=ig();function pH(e){return y1(e.source,(0,dH.getLocation)(e.source,e.start))}function y1(e,t){var r=e.locationOffset.column-1,n=ag(r)+e.body,i=t.line-1,o=e.locationOffset.line-1,s=t.line+o,l=t.line===1?r:0,d=t.column+l,h="".concat(e.name,":").concat(s,":").concat(d,` +`),v=n.split(/\r\n|[\n\r]/g),y=v[i];if(y.length>120){for(var b=Math.floor(d/80),D=d%80,_=[],k=0;k{"use strict";function ug(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ug=function(r){return typeof r}:ug=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ug(e)}Object.defineProperty(Rd,"__esModule",{value:!0});Rd.printError=O1;Rd.GraphQLError=void 0;var vH=mH(Ma()),gH=qa(),T1=ig(),_1=l_();function mH(e){return e&&e.__esModule?e:{default:e}}function yH(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function E1(e,t){for(var r=0;r{"use strict";Object.defineProperty(AT,"__esModule",{value:!0});AT.syntaxError=tQ;var eQ=Be();function tQ(e,t,r){return new eQ.GraphQLError("Syntax Error: ".concat(r),void 0,e,[t])}});var Vt=U(Kv=>{"use strict";Object.defineProperty(Kv,"__esModule",{value:!0});Kv.Kind=void 0;var rQ=Object.freeze({NAME:"Name",DOCUMENT:"Document",OPERATION_DEFINITION:"OperationDefinition",VARIABLE_DEFINITION:"VariableDefinition",SELECTION_SET:"SelectionSet",FIELD:"Field",ARGUMENT:"Argument",FRAGMENT_SPREAD:"FragmentSpread",INLINE_FRAGMENT:"InlineFragment",FRAGMENT_DEFINITION:"FragmentDefinition",VARIABLE:"Variable",INT:"IntValue",FLOAT:"FloatValue",STRING:"StringValue",BOOLEAN:"BooleanValue",NULL:"NullValue",ENUM:"EnumValue",LIST:"ListValue",OBJECT:"ObjectValue",OBJECT_FIELD:"ObjectField",DIRECTIVE:"Directive",NAMED_TYPE:"NamedType",LIST_TYPE:"ListType",NON_NULL_TYPE:"NonNullType",SCHEMA_DEFINITION:"SchemaDefinition",OPERATION_TYPE_DEFINITION:"OperationTypeDefinition",SCALAR_TYPE_DEFINITION:"ScalarTypeDefinition",OBJECT_TYPE_DEFINITION:"ObjectTypeDefinition",FIELD_DEFINITION:"FieldDefinition",INPUT_VALUE_DEFINITION:"InputValueDefinition",INTERFACE_TYPE_DEFINITION:"InterfaceTypeDefinition",UNION_TYPE_DEFINITION:"UnionTypeDefinition",ENUM_TYPE_DEFINITION:"EnumTypeDefinition",ENUM_VALUE_DEFINITION:"EnumValueDefinition",INPUT_OBJECT_TYPE_DEFINITION:"InputObjectTypeDefinition",DIRECTIVE_DEFINITION:"DirectiveDefinition",SCHEMA_EXTENSION:"SchemaExtension",SCALAR_TYPE_EXTENSION:"ScalarTypeExtension",OBJECT_TYPE_EXTENSION:"ObjectTypeExtension",INTERFACE_TYPE_EXTENSION:"InterfaceTypeExtension",UNION_TYPE_EXTENSION:"UnionTypeExtension",ENUM_TYPE_EXTENSION:"EnumTypeExtension",INPUT_OBJECT_TYPE_EXTENSION:"InputObjectTypeExtension"});Kv.Kind=rQ});var un=U(NT=>{"use strict";Object.defineProperty(NT,"__esModule",{value:!0});NT.default=nQ;function nQ(e,t){var r=Boolean(e);if(!r)throw new Error(t!=null?t:"Unexpected invariant triggered.")}});var LT=U(Hv=>{"use strict";Object.defineProperty(Hv,"__esModule",{value:!0});Hv.default=void 0;var iQ=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):void 0,aQ=iQ;Hv.default=aQ});var zv=U(xT=>{"use strict";Object.defineProperty(xT,"__esModule",{value:!0});xT.default=uQ;var oQ=OA(un()),kA=OA(LT());function OA(e){return e&&e.__esModule?e:{default:e}}function uQ(e){var t=e.prototype.toJSON;typeof t=="function"||(0,oQ.default)(0),e.prototype.inspect=t,kA.default&&(e.prototype[kA.default]=t)}});var Il=U(Xu=>{"use strict";Object.defineProperty(Xu,"__esModule",{value:!0});Xu.isNode=lQ;Xu.Token=Xu.Location=void 0;var CA=sQ(zv());function sQ(e){return e&&e.__esModule?e:{default:e}}var wA=function(){function e(r,n,a){this.start=r.start,this.end=n.end,this.startToken=r,this.endToken=n,this.source=a}var t=e.prototype;return t.toJSON=function(){return{start:this.start,end:this.end}},e}();Xu.Location=wA;(0,CA.default)(wA);var AA=function(){function e(r,n,a,o,s,l,d){this.kind=r,this.start=n,this.end=a,this.line=o,this.column=s,this.value=d,this.prev=l,this.next=null}var t=e.prototype;return t.toJSON=function(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}},e}();Xu.Token=AA;(0,CA.default)(AA);function lQ(e){return e!=null&&typeof e.kind=="string"}});var Rl=U(Wv=>{"use strict";Object.defineProperty(Wv,"__esModule",{value:!0});Wv.TokenKind=void 0;var cQ=Object.freeze({SOF:"",EOF:"",BANG:"!",DOLLAR:"$",AMP:"&",PAREN_L:"(",PAREN_R:")",SPREAD:"...",COLON:":",EQUALS:"=",AT:"@",BRACKET_L:"[",BRACKET_R:"]",BRACE_L:"{",PIPE:"|",BRACE_R:"}",NAME:"Name",INT:"Int",FLOAT:"Float",STRING:"String",BLOCK_STRING:"BlockString",COMMENT:"Comment"});Wv.TokenKind=cQ});var Ot=U(IT=>{"use strict";Object.defineProperty(IT,"__esModule",{value:!0});IT.default=hQ;var fQ=dQ(LT());function dQ(e){return e&&e.__esModule?e:{default:e}}function Yv(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Yv=function(r){return typeof r}:Yv=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Yv(e)}var pQ=10,NA=2;function hQ(e){return Jv(e,[])}function Jv(e,t){switch(Yv(e)){case"string":return JSON.stringify(e);case"function":return e.name?"[function ".concat(e.name,"]"):"[function]";case"object":return e===null?"null":vQ(e,t);default:return String(e)}}function vQ(e,t){if(t.indexOf(e)!==-1)return"[Circular]";var r=[].concat(t,[e]),n=yQ(e);if(n!==void 0){var a=n.call(e);if(a!==e)return typeof a=="string"?a:Jv(a,r)}else if(Array.isArray(e))return mQ(e,r);return gQ(e,r)}function gQ(e,t){var r=Object.keys(e);if(r.length===0)return"{}";if(t.length>NA)return"["+bQ(e)+"]";var n=r.map(function(a){var o=Jv(e[a],t);return a+": "+o});return"{ "+n.join(", ")+" }"}function mQ(e,t){if(e.length===0)return"[]";if(t.length>NA)return"[Array]";for(var r=Math.min(pQ,e.length),n=e.length-r,a=[],o=0;o1&&a.push("... ".concat(n," more items")),"["+a.join(", ")+"]"}function yQ(e){var t=e[String(fQ.default)];if(typeof t=="function")return t;if(typeof e.inspect=="function")return e.inspect}function bQ(e){var t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if(t==="Object"&&typeof e.constructor=="function"){var r=e.constructor.name;if(typeof r=="string"&&r!=="")return r}return t}});var wi=U(RT=>{"use strict";Object.defineProperty(RT,"__esModule",{value:!0});RT.default=TQ;function TQ(e,t){var r=Boolean(e);if(!r)throw new Error(t)}});var gd=U(Xv=>{"use strict";Object.defineProperty(Xv,"__esModule",{value:!0});Xv.default=void 0;var EQ=function(t,r){return t instanceof r};Xv.default=EQ});var Zv=U(md=>{"use strict";Object.defineProperty(md,"__esModule",{value:!0});md.isSource=OQ;md.Source=void 0;var _Q=Da(),SQ=jT(Ot()),FT=jT(wi()),DQ=jT(gd());function jT(e){return e&&e.__esModule?e:{default:e}}function LA(e,t){for(var r=0;r1&&arguments[1]!==void 0?arguments[1]:"GraphQL request",n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{line:1,column:1};typeof t=="string"||(0,FT.default)(0,"Body must be a string. Received: ".concat((0,SQ.default)(t),".")),this.body=t,this.name=r,this.locationOffset=n,this.locationOffset.line>0||(0,FT.default)(0,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||(0,FT.default)(0,"column in locationOffset is 1-indexed and must be positive.")}return kQ(e,[{key:_Q.SYMBOL_TO_STRING_TAG,get:function(){return"Source"}}]),e}();md.Source=xA;function OQ(e){return(0,DQ.default)(e,xA)}});var Fl=U($v=>{"use strict";Object.defineProperty($v,"__esModule",{value:!0});$v.DirectiveLocation=void 0;var CQ=Object.freeze({QUERY:"QUERY",MUTATION:"MUTATION",SUBSCRIPTION:"SUBSCRIPTION",FIELD:"FIELD",FRAGMENT_DEFINITION:"FRAGMENT_DEFINITION",FRAGMENT_SPREAD:"FRAGMENT_SPREAD",INLINE_FRAGMENT:"INLINE_FRAGMENT",VARIABLE_DEFINITION:"VARIABLE_DEFINITION",SCHEMA:"SCHEMA",SCALAR:"SCALAR",OBJECT:"OBJECT",FIELD_DEFINITION:"FIELD_DEFINITION",ARGUMENT_DEFINITION:"ARGUMENT_DEFINITION",INTERFACE:"INTERFACE",UNION:"UNION",ENUM:"ENUM",ENUM_VALUE:"ENUM_VALUE",INPUT_OBJECT:"INPUT_OBJECT",INPUT_FIELD_DEFINITION:"INPUT_FIELD_DEFINITION"});$v.DirectiveLocation=CQ});var jl=U(yd=>{"use strict";Object.defineProperty(yd,"__esModule",{value:!0});yd.dedentBlockStringValue=wQ;yd.getBlockStringIndentation=RA;yd.printBlockString=AQ;function wQ(e){var t=e.split(/\r\n|[\n\r]/g),r=RA(e);if(r!==0)for(var n=1;na&&IA(t[o-1]);)--o;return t.slice(a,o).join(` -`)}function IA(e){for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:"",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=e.indexOf(` -`)===-1,a=e[0]===" "||e[0]===" ",o=e[e.length-1]==='"',s=e[e.length-1]==="\\",l=!n||o||s||r,d="";return l&&!(n&&a)&&(d+=` +`+(0,_1.printSourceLocation)(e.source,l)}return t}});var lg=G(f_=>{"use strict";Object.defineProperty(f_,"__esModule",{value:!0});f_.syntaxError=OH;var kH=Je();function OH(e,t,r){return new kH.GraphQLError("Syntax Error: ".concat(r),void 0,e,[t])}});var Jt=G(cg=>{"use strict";Object.defineProperty(cg,"__esModule",{value:!0});cg.Kind=void 0;var wH=Object.freeze({NAME:"Name",DOCUMENT:"Document",OPERATION_DEFINITION:"OperationDefinition",VARIABLE_DEFINITION:"VariableDefinition",SELECTION_SET:"SelectionSet",FIELD:"Field",ARGUMENT:"Argument",FRAGMENT_SPREAD:"FragmentSpread",INLINE_FRAGMENT:"InlineFragment",FRAGMENT_DEFINITION:"FragmentDefinition",VARIABLE:"Variable",INT:"IntValue",FLOAT:"FloatValue",STRING:"StringValue",BOOLEAN:"BooleanValue",NULL:"NullValue",ENUM:"EnumValue",LIST:"ListValue",OBJECT:"ObjectValue",OBJECT_FIELD:"ObjectField",DIRECTIVE:"Directive",NAMED_TYPE:"NamedType",LIST_TYPE:"ListType",NON_NULL_TYPE:"NonNullType",SCHEMA_DEFINITION:"SchemaDefinition",OPERATION_TYPE_DEFINITION:"OperationTypeDefinition",SCALAR_TYPE_DEFINITION:"ScalarTypeDefinition",OBJECT_TYPE_DEFINITION:"ObjectTypeDefinition",FIELD_DEFINITION:"FieldDefinition",INPUT_VALUE_DEFINITION:"InputValueDefinition",INTERFACE_TYPE_DEFINITION:"InterfaceTypeDefinition",UNION_TYPE_DEFINITION:"UnionTypeDefinition",ENUM_TYPE_DEFINITION:"EnumTypeDefinition",ENUM_VALUE_DEFINITION:"EnumValueDefinition",INPUT_OBJECT_TYPE_DEFINITION:"InputObjectTypeDefinition",DIRECTIVE_DEFINITION:"DirectiveDefinition",SCHEMA_EXTENSION:"SchemaExtension",SCALAR_TYPE_EXTENSION:"ScalarTypeExtension",OBJECT_TYPE_EXTENSION:"ObjectTypeExtension",INTERFACE_TYPE_EXTENSION:"InterfaceTypeExtension",UNION_TYPE_EXTENSION:"UnionTypeExtension",ENUM_TYPE_EXTENSION:"EnumTypeExtension",INPUT_OBJECT_TYPE_EXTENSION:"InputObjectTypeExtension"});cg.Kind=wH});var _n=G(d_=>{"use strict";Object.defineProperty(d_,"__esModule",{value:!0});d_.default=NH;function NH(e,t){var r=Boolean(e);if(!r)throw new Error(t!=null?t:"Unexpected invariant triggered.")}});var p_=G(fg=>{"use strict";Object.defineProperty(fg,"__esModule",{value:!0});fg.default=void 0;var DH=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):void 0,xH=DH;fg.default=xH});var dg=G(h_=>{"use strict";Object.defineProperty(h_,"__esModule",{value:!0});h_.default=LH;var CH=N1(_n()),w1=N1(p_());function N1(e){return e&&e.__esModule?e:{default:e}}function LH(e){var t=e.prototype.toJSON;typeof t=="function"||(0,CH.default)(0),e.prototype.inspect=t,w1.default&&(e.prototype[w1.default]=t)}});var Xl=G(hs=>{"use strict";Object.defineProperty(hs,"__esModule",{value:!0});hs.isNode=AH;hs.Token=hs.Location=void 0;var D1=IH(dg());function IH(e){return e&&e.__esModule?e:{default:e}}var x1=function(){function e(r,n,i){this.start=r.start,this.end=n.end,this.startToken=r,this.endToken=n,this.source=i}var t=e.prototype;return t.toJSON=function(){return{start:this.start,end:this.end}},e}();hs.Location=x1;(0,D1.default)(x1);var C1=function(){function e(r,n,i,o,s,l,d){this.kind=r,this.start=n,this.end=i,this.line=o,this.column=s,this.value=d,this.prev=l,this.next=null}var t=e.prototype;return t.toJSON=function(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}},e}();hs.Token=C1;(0,D1.default)(C1);function AH(e){return e!=null&&typeof e.kind=="string"}});var Zl=G(pg=>{"use strict";Object.defineProperty(pg,"__esModule",{value:!0});pg.TokenKind=void 0;var RH=Object.freeze({SOF:"",EOF:"",BANG:"!",DOLLAR:"$",AMP:"&",PAREN_L:"(",PAREN_R:")",SPREAD:"...",COLON:":",EQUALS:"=",AT:"@",BRACKET_L:"[",BRACKET_R:"]",BRACE_L:"{",PIPE:"|",BRACE_R:"}",NAME:"Name",INT:"Int",FLOAT:"Float",STRING:"String",BLOCK_STRING:"BlockString",COMMENT:"Comment"});pg.TokenKind=RH});var jt=G(v_=>{"use strict";Object.defineProperty(v_,"__esModule",{value:!0});v_.default=MH;var jH=PH(p_());function PH(e){return e&&e.__esModule?e:{default:e}}function hg(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?hg=function(r){return typeof r}:hg=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},hg(e)}var FH=10,L1=2;function MH(e){return vg(e,[])}function vg(e,t){switch(hg(e)){case"string":return JSON.stringify(e);case"function":return e.name?"[function ".concat(e.name,"]"):"[function]";case"object":return e===null?"null":qH(e,t);default:return String(e)}}function qH(e,t){if(t.indexOf(e)!==-1)return"[Circular]";var r=[].concat(t,[e]),n=GH(e);if(n!==void 0){var i=n.call(e);if(i!==e)return typeof i=="string"?i:vg(i,r)}else if(Array.isArray(e))return UH(e,r);return VH(e,r)}function VH(e,t){var r=Object.keys(e);if(r.length===0)return"{}";if(t.length>L1)return"["+QH(e)+"]";var n=r.map(function(i){var o=vg(e[i],t);return i+": "+o});return"{ "+n.join(", ")+" }"}function UH(e,t){if(e.length===0)return"[]";if(t.length>L1)return"[Array]";for(var r=Math.min(FH,e.length),n=e.length-r,i=[],o=0;o1&&i.push("... ".concat(n," more items")),"["+i.join(", ")+"]"}function GH(e){var t=e[String(jH.default)];if(typeof t=="function")return t;if(typeof e.inspect=="function")return e.inspect}function QH(e){var t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if(t==="Object"&&typeof e.constructor=="function"){var r=e.constructor.name;if(typeof r=="string"&&r!=="")return r}return t}});var Hi=G(g_=>{"use strict";Object.defineProperty(g_,"__esModule",{value:!0});g_.default=BH;function BH(e,t){var r=Boolean(e);if(!r)throw new Error(t)}});var jd=G(gg=>{"use strict";Object.defineProperty(gg,"__esModule",{value:!0});gg.default=void 0;var KH=function(t,r){return t instanceof r};gg.default=KH});var mg=G(Pd=>{"use strict";Object.defineProperty(Pd,"__esModule",{value:!0});Pd.isSource=JH;Pd.Source=void 0;var HH=qa(),zH=y_(jt()),m_=y_(Hi()),WH=y_(jd());function y_(e){return e&&e.__esModule?e:{default:e}}function I1(e,t){for(var r=0;r1&&arguments[1]!==void 0?arguments[1]:"GraphQL request",n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{line:1,column:1};typeof t=="string"||(0,m_.default)(0,"Body must be a string. Received: ".concat((0,zH.default)(t),".")),this.body=t,this.name=r,this.locationOffset=n,this.locationOffset.line>0||(0,m_.default)(0,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||(0,m_.default)(0,"column in locationOffset is 1-indexed and must be positive.")}return YH(e,[{key:HH.SYMBOL_TO_STRING_TAG,get:function(){return"Source"}}]),e}();Pd.Source=A1;function JH(e){return(0,WH.default)(e,A1)}});var $l=G(yg=>{"use strict";Object.defineProperty(yg,"__esModule",{value:!0});yg.DirectiveLocation=void 0;var XH=Object.freeze({QUERY:"QUERY",MUTATION:"MUTATION",SUBSCRIPTION:"SUBSCRIPTION",FIELD:"FIELD",FRAGMENT_DEFINITION:"FRAGMENT_DEFINITION",FRAGMENT_SPREAD:"FRAGMENT_SPREAD",INLINE_FRAGMENT:"INLINE_FRAGMENT",VARIABLE_DEFINITION:"VARIABLE_DEFINITION",SCHEMA:"SCHEMA",SCALAR:"SCALAR",OBJECT:"OBJECT",FIELD_DEFINITION:"FIELD_DEFINITION",ARGUMENT_DEFINITION:"ARGUMENT_DEFINITION",INTERFACE:"INTERFACE",UNION:"UNION",ENUM:"ENUM",ENUM_VALUE:"ENUM_VALUE",INPUT_OBJECT:"INPUT_OBJECT",INPUT_FIELD_DEFINITION:"INPUT_FIELD_DEFINITION"});yg.DirectiveLocation=XH});var ec=G(Fd=>{"use strict";Object.defineProperty(Fd,"__esModule",{value:!0});Fd.dedentBlockStringValue=ZH;Fd.getBlockStringIndentation=j1;Fd.printBlockString=$H;function ZH(e){var t=e.split(/\r\n|[\n\r]/g),r=j1(e);if(r!==0)for(var n=1;ni&&R1(t[o-1]);)--o;return t.slice(i,o).join(` +`)}function R1(e){for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:"",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=e.indexOf(` +`)===-1,i=e[0]===" "||e[0]===" ",o=e[e.length-1]==='"',s=e[e.length-1]==="\\",l=!n||o||s||r,d="";return l&&!(n&&i)&&(d+=` `+t),d+=t?e.replace(/\n/g,` `+t):e,l&&(d+=` -`),'"""'+d.replace(/"""/g,'\\"""')+'"""'}});var tg=U(bd=>{"use strict";Object.defineProperty(bd,"__esModule",{value:!0});bd.isPunctuatorTokenKind=xQ;bd.Lexer=void 0;var ka=Qv(),mr=Il(),tt=Rl(),NQ=jl(),LQ=function(){function e(r){var n=new mr.Token(tt.TokenKind.SOF,0,0,0,0,null);this.source=r,this.lastToken=n,this.token=n,this.line=1,this.lineStart=0}var t=e.prototype;return t.advance=function(){this.lastToken=this.token;var n=this.token=this.lookahead();return n},t.lookahead=function(){var n=this.token;if(n.kind!==tt.TokenKind.EOF)do{var a;n=(a=n.next)!==null&&a!==void 0?a:n.next=IQ(this,n)}while(n.kind===tt.TokenKind.COMMENT);return n},e}();bd.Lexer=LQ;function xQ(e){return e===tt.TokenKind.BANG||e===tt.TokenKind.DOLLAR||e===tt.TokenKind.AMP||e===tt.TokenKind.PAREN_L||e===tt.TokenKind.PAREN_R||e===tt.TokenKind.SPREAD||e===tt.TokenKind.COLON||e===tt.TokenKind.EQUALS||e===tt.TokenKind.AT||e===tt.TokenKind.BRACKET_L||e===tt.TokenKind.BRACKET_R||e===tt.TokenKind.BRACE_L||e===tt.TokenKind.PIPE||e===tt.TokenKind.BRACE_R}function Zu(e){return isNaN(e)?tt.TokenKind.EOF:e<127?JSON.stringify(String.fromCharCode(e)):'"\\u'.concat(("00"+e.toString(16).toUpperCase()).slice(-4),'"')}function IQ(e,t){for(var r=e.source,n=r.body,a=n.length,o=t.end;o31||s===9));return new mr.Token(tt.TokenKind.COMMENT,t,l,r,n,a,o.slice(t+1,l))}function jQ(e,t,r,n,a,o){var s=e.body,l=r,d=t,h=!1;if(l===45&&(l=s.charCodeAt(++d)),l===48){if(l=s.charCodeAt(++d),l>=48&&l<=57)throw(0,ka.syntaxError)(e,d,"Invalid number, unexpected digit after 0: ".concat(Zu(l),"."))}else d=PT(e,d,l),l=s.charCodeAt(d);if(l===46&&(h=!0,l=s.charCodeAt(++d),d=PT(e,d,l),l=s.charCodeAt(d)),(l===69||l===101)&&(h=!0,l=s.charCodeAt(++d),(l===43||l===45)&&(l=s.charCodeAt(++d)),d=PT(e,d,l),l=s.charCodeAt(d)),l===46||VQ(l))throw(0,ka.syntaxError)(e,d,"Invalid number, expected digit but got: ".concat(Zu(l),"."));return new mr.Token(h?tt.TokenKind.FLOAT:tt.TokenKind.INT,t,d,n,a,o,s.slice(t,d))}function PT(e,t,r){var n=e.body,a=t,o=r;if(o>=48&&o<=57){do o=n.charCodeAt(++a);while(o>=48&&o<=57);return a}throw(0,ka.syntaxError)(e,a,"Invalid number, expected digit but got: ".concat(Zu(o),"."))}function PQ(e,t,r,n,a){for(var o=e.body,s=t+1,l=s,d=0,h="";s=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function BQ(e,t,r,n,a){for(var o=e.body,s=o.length,l=t+1,d=0;l!==s&&!isNaN(d=o.charCodeAt(l))&&(d===95||d>=48&&d<=57||d>=65&&d<=90||d>=97&&d<=122);)++l;return new mr.Token(tt.TokenKind.NAME,t,l,r,n,a,o.slice(t,l))}function VQ(e){return e===95||e>=65&&e<=90||e>=97&&e<=122}});var Pl=U($u=>{"use strict";Object.defineProperty($u,"__esModule",{value:!0});$u.parse=QQ;$u.parseValue=KQ;$u.parseType=HQ;$u.Parser=void 0;var MT=Qv(),Ke=Vt(),UQ=Il(),_e=Rl(),FA=Zv(),GQ=Fl(),jA=tg();function QQ(e,t){var r=new rg(e,t);return r.parseDocument()}function KQ(e,t){var r=new rg(e,t);r.expectToken(_e.TokenKind.SOF);var n=r.parseValueLiteral(!1);return r.expectToken(_e.TokenKind.EOF),n}function HQ(e,t){var r=new rg(e,t);r.expectToken(_e.TokenKind.SOF);var n=r.parseTypeReference();return r.expectToken(_e.TokenKind.EOF),n}var rg=function(){function e(r,n){var a=(0,FA.isSource)(r)?r:new FA.Source(r);this._lexer=new jA.Lexer(a),this._options=n}var t=e.prototype;return t.parseName=function(){var n=this.expectToken(_e.TokenKind.NAME);return{kind:Ke.Kind.NAME,value:n.value,loc:this.loc(n)}},t.parseDocument=function(){var n=this._lexer.token;return{kind:Ke.Kind.DOCUMENT,definitions:this.many(_e.TokenKind.SOF,this.parseDefinition,_e.TokenKind.EOF),loc:this.loc(n)}},t.parseDefinition=function(){if(this.peek(_e.TokenKind.NAME))switch(this._lexer.token.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"schema":case"scalar":case"type":case"interface":case"union":case"enum":case"input":case"directive":return this.parseTypeSystemDefinition();case"extend":return this.parseTypeSystemExtension()}else{if(this.peek(_e.TokenKind.BRACE_L))return this.parseOperationDefinition();if(this.peekDescription())return this.parseTypeSystemDefinition()}throw this.unexpected()},t.parseOperationDefinition=function(){var n=this._lexer.token;if(this.peek(_e.TokenKind.BRACE_L))return{kind:Ke.Kind.OPERATION_DEFINITION,operation:"query",name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet(),loc:this.loc(n)};var a=this.parseOperationType(),o;return this.peek(_e.TokenKind.NAME)&&(o=this.parseName()),{kind:Ke.Kind.OPERATION_DEFINITION,operation:a,name:o,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(n)}},t.parseOperationType=function(){var n=this.expectToken(_e.TokenKind.NAME);switch(n.value){case"query":return"query";case"mutation":return"mutation";case"subscription":return"subscription"}throw this.unexpected(n)},t.parseVariableDefinitions=function(){return this.optionalMany(_e.TokenKind.PAREN_L,this.parseVariableDefinition,_e.TokenKind.PAREN_R)},t.parseVariableDefinition=function(){var n=this._lexer.token;return{kind:Ke.Kind.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(_e.TokenKind.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(_e.TokenKind.EQUALS)?this.parseValueLiteral(!0):void 0,directives:this.parseDirectives(!0),loc:this.loc(n)}},t.parseVariable=function(){var n=this._lexer.token;return this.expectToken(_e.TokenKind.DOLLAR),{kind:Ke.Kind.VARIABLE,name:this.parseName(),loc:this.loc(n)}},t.parseSelectionSet=function(){var n=this._lexer.token;return{kind:Ke.Kind.SELECTION_SET,selections:this.many(_e.TokenKind.BRACE_L,this.parseSelection,_e.TokenKind.BRACE_R),loc:this.loc(n)}},t.parseSelection=function(){return this.peek(_e.TokenKind.SPREAD)?this.parseFragment():this.parseField()},t.parseField=function(){var n=this._lexer.token,a=this.parseName(),o,s;return this.expectOptionalToken(_e.TokenKind.COLON)?(o=a,s=this.parseName()):s=a,{kind:Ke.Kind.FIELD,alias:o,name:s,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(_e.TokenKind.BRACE_L)?this.parseSelectionSet():void 0,loc:this.loc(n)}},t.parseArguments=function(n){var a=n?this.parseConstArgument:this.parseArgument;return this.optionalMany(_e.TokenKind.PAREN_L,a,_e.TokenKind.PAREN_R)},t.parseArgument=function(){var n=this._lexer.token,a=this.parseName();return this.expectToken(_e.TokenKind.COLON),{kind:Ke.Kind.ARGUMENT,name:a,value:this.parseValueLiteral(!1),loc:this.loc(n)}},t.parseConstArgument=function(){var n=this._lexer.token;return{kind:Ke.Kind.ARGUMENT,name:this.parseName(),value:(this.expectToken(_e.TokenKind.COLON),this.parseValueLiteral(!0)),loc:this.loc(n)}},t.parseFragment=function(){var n=this._lexer.token;this.expectToken(_e.TokenKind.SPREAD);var a=this.expectOptionalKeyword("on");return!a&&this.peek(_e.TokenKind.NAME)?{kind:Ke.Kind.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1),loc:this.loc(n)}:{kind:Ke.Kind.INLINE_FRAGMENT,typeCondition:a?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(n)}},t.parseFragmentDefinition=function(){var n,a=this._lexer.token;return this.expectKeyword("fragment"),((n=this._options)===null||n===void 0?void 0:n.experimentalFragmentVariables)===!0?{kind:Ke.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(a)}:{kind:Ke.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(a)}},t.parseFragmentName=function(){if(this._lexer.token.value==="on")throw this.unexpected();return this.parseName()},t.parseValueLiteral=function(n){var a=this._lexer.token;switch(a.kind){case _e.TokenKind.BRACKET_L:return this.parseList(n);case _e.TokenKind.BRACE_L:return this.parseObject(n);case _e.TokenKind.INT:return this._lexer.advance(),{kind:Ke.Kind.INT,value:a.value,loc:this.loc(a)};case _e.TokenKind.FLOAT:return this._lexer.advance(),{kind:Ke.Kind.FLOAT,value:a.value,loc:this.loc(a)};case _e.TokenKind.STRING:case _e.TokenKind.BLOCK_STRING:return this.parseStringLiteral();case _e.TokenKind.NAME:switch(this._lexer.advance(),a.value){case"true":return{kind:Ke.Kind.BOOLEAN,value:!0,loc:this.loc(a)};case"false":return{kind:Ke.Kind.BOOLEAN,value:!1,loc:this.loc(a)};case"null":return{kind:Ke.Kind.NULL,loc:this.loc(a)};default:return{kind:Ke.Kind.ENUM,value:a.value,loc:this.loc(a)}}case _e.TokenKind.DOLLAR:if(!n)return this.parseVariable();break}throw this.unexpected()},t.parseStringLiteral=function(){var n=this._lexer.token;return this._lexer.advance(),{kind:Ke.Kind.STRING,value:n.value,block:n.kind===_e.TokenKind.BLOCK_STRING,loc:this.loc(n)}},t.parseList=function(n){var a=this,o=this._lexer.token,s=function(){return a.parseValueLiteral(n)};return{kind:Ke.Kind.LIST,values:this.any(_e.TokenKind.BRACKET_L,s,_e.TokenKind.BRACKET_R),loc:this.loc(o)}},t.parseObject=function(n){var a=this,o=this._lexer.token,s=function(){return a.parseObjectField(n)};return{kind:Ke.Kind.OBJECT,fields:this.any(_e.TokenKind.BRACE_L,s,_e.TokenKind.BRACE_R),loc:this.loc(o)}},t.parseObjectField=function(n){var a=this._lexer.token,o=this.parseName();return this.expectToken(_e.TokenKind.COLON),{kind:Ke.Kind.OBJECT_FIELD,name:o,value:this.parseValueLiteral(n),loc:this.loc(a)}},t.parseDirectives=function(n){for(var a=[];this.peek(_e.TokenKind.AT);)a.push(this.parseDirective(n));return a},t.parseDirective=function(n){var a=this._lexer.token;return this.expectToken(_e.TokenKind.AT),{kind:Ke.Kind.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(n),loc:this.loc(a)}},t.parseTypeReference=function(){var n=this._lexer.token,a;return this.expectOptionalToken(_e.TokenKind.BRACKET_L)?(a=this.parseTypeReference(),this.expectToken(_e.TokenKind.BRACKET_R),a={kind:Ke.Kind.LIST_TYPE,type:a,loc:this.loc(n)}):a=this.parseNamedType(),this.expectOptionalToken(_e.TokenKind.BANG)?{kind:Ke.Kind.NON_NULL_TYPE,type:a,loc:this.loc(n)}:a},t.parseNamedType=function(){var n=this._lexer.token;return{kind:Ke.Kind.NAMED_TYPE,name:this.parseName(),loc:this.loc(n)}},t.parseTypeSystemDefinition=function(){var n=this.peekDescription()?this._lexer.lookahead():this._lexer.token;if(n.kind===_e.TokenKind.NAME)switch(n.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}throw this.unexpected(n)},t.peekDescription=function(){return this.peek(_e.TokenKind.STRING)||this.peek(_e.TokenKind.BLOCK_STRING)},t.parseDescription=function(){if(this.peekDescription())return this.parseStringLiteral()},t.parseSchemaDefinition=function(){var n=this._lexer.token,a=this.parseDescription();this.expectKeyword("schema");var o=this.parseDirectives(!0),s=this.many(_e.TokenKind.BRACE_L,this.parseOperationTypeDefinition,_e.TokenKind.BRACE_R);return{kind:Ke.Kind.SCHEMA_DEFINITION,description:a,directives:o,operationTypes:s,loc:this.loc(n)}},t.parseOperationTypeDefinition=function(){var n=this._lexer.token,a=this.parseOperationType();this.expectToken(_e.TokenKind.COLON);var o=this.parseNamedType();return{kind:Ke.Kind.OPERATION_TYPE_DEFINITION,operation:a,type:o,loc:this.loc(n)}},t.parseScalarTypeDefinition=function(){var n=this._lexer.token,a=this.parseDescription();this.expectKeyword("scalar");var o=this.parseName(),s=this.parseDirectives(!0);return{kind:Ke.Kind.SCALAR_TYPE_DEFINITION,description:a,name:o,directives:s,loc:this.loc(n)}},t.parseObjectTypeDefinition=function(){var n=this._lexer.token,a=this.parseDescription();this.expectKeyword("type");var o=this.parseName(),s=this.parseImplementsInterfaces(),l=this.parseDirectives(!0),d=this.parseFieldsDefinition();return{kind:Ke.Kind.OBJECT_TYPE_DEFINITION,description:a,name:o,interfaces:s,directives:l,fields:d,loc:this.loc(n)}},t.parseImplementsInterfaces=function(){var n;if(!this.expectOptionalKeyword("implements"))return[];if(((n=this._options)===null||n===void 0?void 0:n.allowLegacySDLImplementsInterfaces)===!0){var a=[];this.expectOptionalToken(_e.TokenKind.AMP);do a.push(this.parseNamedType());while(this.expectOptionalToken(_e.TokenKind.AMP)||this.peek(_e.TokenKind.NAME));return a}return this.delimitedMany(_e.TokenKind.AMP,this.parseNamedType)},t.parseFieldsDefinition=function(){var n;return((n=this._options)===null||n===void 0?void 0:n.allowLegacySDLEmptyFields)===!0&&this.peek(_e.TokenKind.BRACE_L)&&this._lexer.lookahead().kind===_e.TokenKind.BRACE_R?(this._lexer.advance(),this._lexer.advance(),[]):this.optionalMany(_e.TokenKind.BRACE_L,this.parseFieldDefinition,_e.TokenKind.BRACE_R)},t.parseFieldDefinition=function(){var n=this._lexer.token,a=this.parseDescription(),o=this.parseName(),s=this.parseArgumentDefs();this.expectToken(_e.TokenKind.COLON);var l=this.parseTypeReference(),d=this.parseDirectives(!0);return{kind:Ke.Kind.FIELD_DEFINITION,description:a,name:o,arguments:s,type:l,directives:d,loc:this.loc(n)}},t.parseArgumentDefs=function(){return this.optionalMany(_e.TokenKind.PAREN_L,this.parseInputValueDef,_e.TokenKind.PAREN_R)},t.parseInputValueDef=function(){var n=this._lexer.token,a=this.parseDescription(),o=this.parseName();this.expectToken(_e.TokenKind.COLON);var s=this.parseTypeReference(),l;this.expectOptionalToken(_e.TokenKind.EQUALS)&&(l=this.parseValueLiteral(!0));var d=this.parseDirectives(!0);return{kind:Ke.Kind.INPUT_VALUE_DEFINITION,description:a,name:o,type:s,defaultValue:l,directives:d,loc:this.loc(n)}},t.parseInterfaceTypeDefinition=function(){var n=this._lexer.token,a=this.parseDescription();this.expectKeyword("interface");var o=this.parseName(),s=this.parseImplementsInterfaces(),l=this.parseDirectives(!0),d=this.parseFieldsDefinition();return{kind:Ke.Kind.INTERFACE_TYPE_DEFINITION,description:a,name:o,interfaces:s,directives:l,fields:d,loc:this.loc(n)}},t.parseUnionTypeDefinition=function(){var n=this._lexer.token,a=this.parseDescription();this.expectKeyword("union");var o=this.parseName(),s=this.parseDirectives(!0),l=this.parseUnionMemberTypes();return{kind:Ke.Kind.UNION_TYPE_DEFINITION,description:a,name:o,directives:s,types:l,loc:this.loc(n)}},t.parseUnionMemberTypes=function(){return this.expectOptionalToken(_e.TokenKind.EQUALS)?this.delimitedMany(_e.TokenKind.PIPE,this.parseNamedType):[]},t.parseEnumTypeDefinition=function(){var n=this._lexer.token,a=this.parseDescription();this.expectKeyword("enum");var o=this.parseName(),s=this.parseDirectives(!0),l=this.parseEnumValuesDefinition();return{kind:Ke.Kind.ENUM_TYPE_DEFINITION,description:a,name:o,directives:s,values:l,loc:this.loc(n)}},t.parseEnumValuesDefinition=function(){return this.optionalMany(_e.TokenKind.BRACE_L,this.parseEnumValueDefinition,_e.TokenKind.BRACE_R)},t.parseEnumValueDefinition=function(){var n=this._lexer.token,a=this.parseDescription(),o=this.parseName(),s=this.parseDirectives(!0);return{kind:Ke.Kind.ENUM_VALUE_DEFINITION,description:a,name:o,directives:s,loc:this.loc(n)}},t.parseInputObjectTypeDefinition=function(){var n=this._lexer.token,a=this.parseDescription();this.expectKeyword("input");var o=this.parseName(),s=this.parseDirectives(!0),l=this.parseInputFieldsDefinition();return{kind:Ke.Kind.INPUT_OBJECT_TYPE_DEFINITION,description:a,name:o,directives:s,fields:l,loc:this.loc(n)}},t.parseInputFieldsDefinition=function(){return this.optionalMany(_e.TokenKind.BRACE_L,this.parseInputValueDef,_e.TokenKind.BRACE_R)},t.parseTypeSystemExtension=function(){var n=this._lexer.lookahead();if(n.kind===_e.TokenKind.NAME)switch(n.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(n)},t.parseSchemaExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");var a=this.parseDirectives(!0),o=this.optionalMany(_e.TokenKind.BRACE_L,this.parseOperationTypeDefinition,_e.TokenKind.BRACE_R);if(a.length===0&&o.length===0)throw this.unexpected();return{kind:Ke.Kind.SCHEMA_EXTENSION,directives:a,operationTypes:o,loc:this.loc(n)}},t.parseScalarTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");var a=this.parseName(),o=this.parseDirectives(!0);if(o.length===0)throw this.unexpected();return{kind:Ke.Kind.SCALAR_TYPE_EXTENSION,name:a,directives:o,loc:this.loc(n)}},t.parseObjectTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");var a=this.parseName(),o=this.parseImplementsInterfaces(),s=this.parseDirectives(!0),l=this.parseFieldsDefinition();if(o.length===0&&s.length===0&&l.length===0)throw this.unexpected();return{kind:Ke.Kind.OBJECT_TYPE_EXTENSION,name:a,interfaces:o,directives:s,fields:l,loc:this.loc(n)}},t.parseInterfaceTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");var a=this.parseName(),o=this.parseImplementsInterfaces(),s=this.parseDirectives(!0),l=this.parseFieldsDefinition();if(o.length===0&&s.length===0&&l.length===0)throw this.unexpected();return{kind:Ke.Kind.INTERFACE_TYPE_EXTENSION,name:a,interfaces:o,directives:s,fields:l,loc:this.loc(n)}},t.parseUnionTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");var a=this.parseName(),o=this.parseDirectives(!0),s=this.parseUnionMemberTypes();if(o.length===0&&s.length===0)throw this.unexpected();return{kind:Ke.Kind.UNION_TYPE_EXTENSION,name:a,directives:o,types:s,loc:this.loc(n)}},t.parseEnumTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");var a=this.parseName(),o=this.parseDirectives(!0),s=this.parseEnumValuesDefinition();if(o.length===0&&s.length===0)throw this.unexpected();return{kind:Ke.Kind.ENUM_TYPE_EXTENSION,name:a,directives:o,values:s,loc:this.loc(n)}},t.parseInputObjectTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");var a=this.parseName(),o=this.parseDirectives(!0),s=this.parseInputFieldsDefinition();if(o.length===0&&s.length===0)throw this.unexpected();return{kind:Ke.Kind.INPUT_OBJECT_TYPE_EXTENSION,name:a,directives:o,fields:s,loc:this.loc(n)}},t.parseDirectiveDefinition=function(){var n=this._lexer.token,a=this.parseDescription();this.expectKeyword("directive"),this.expectToken(_e.TokenKind.AT);var o=this.parseName(),s=this.parseArgumentDefs(),l=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");var d=this.parseDirectiveLocations();return{kind:Ke.Kind.DIRECTIVE_DEFINITION,description:a,name:o,arguments:s,repeatable:l,locations:d,loc:this.loc(n)}},t.parseDirectiveLocations=function(){return this.delimitedMany(_e.TokenKind.PIPE,this.parseDirectiveLocation)},t.parseDirectiveLocation=function(){var n=this._lexer.token,a=this.parseName();if(GQ.DirectiveLocation[a.value]!==void 0)return a;throw this.unexpected(n)},t.loc=function(n){var a;if(((a=this._options)===null||a===void 0?void 0:a.noLocation)!==!0)return new UQ.Location(n,this._lexer.lastToken,this._lexer.source)},t.peek=function(n){return this._lexer.token.kind===n},t.expectToken=function(n){var a=this._lexer.token;if(a.kind===n)return this._lexer.advance(),a;throw(0,MT.syntaxError)(this._lexer.source,a.start,"Expected ".concat(PA(n),", found ").concat(qT(a),"."))},t.expectOptionalToken=function(n){var a=this._lexer.token;if(a.kind===n)return this._lexer.advance(),a},t.expectKeyword=function(n){var a=this._lexer.token;if(a.kind===_e.TokenKind.NAME&&a.value===n)this._lexer.advance();else throw(0,MT.syntaxError)(this._lexer.source,a.start,'Expected "'.concat(n,'", found ').concat(qT(a),"."))},t.expectOptionalKeyword=function(n){var a=this._lexer.token;return a.kind===_e.TokenKind.NAME&&a.value===n?(this._lexer.advance(),!0):!1},t.unexpected=function(n){var a=n!=null?n:this._lexer.token;return(0,MT.syntaxError)(this._lexer.source,a.start,"Unexpected ".concat(qT(a),"."))},t.any=function(n,a,o){this.expectToken(n);for(var s=[];!this.expectOptionalToken(o);)s.push(a.call(this));return s},t.optionalMany=function(n,a,o){if(this.expectOptionalToken(n)){var s=[];do s.push(a.call(this));while(!this.expectOptionalToken(o));return s}return[]},t.many=function(n,a,o){this.expectToken(n);var s=[];do s.push(a.call(this));while(!this.expectOptionalToken(o));return s},t.delimitedMany=function(n,a){this.expectOptionalToken(n);var o=[];do o.push(a.call(this));while(this.expectOptionalToken(n));return o},e}();$u.Parser=rg;function qT(e){var t=e.value;return PA(e.kind)+(t!=null?' "'.concat(t,'"'):"")}function PA(e){return(0,jA.isPunctuatorTokenKind)(e)?'"'.concat(e,'"'):e}});var eu=U(so=>{"use strict";Object.defineProperty(so,"__esModule",{value:!0});so.visit=YQ;so.visitInParallel=JQ;so.getVisitFn=ng;so.BREAK=so.QueryDocumentKeys=void 0;var zQ=WQ(Ot()),MA=Il();function WQ(e){return e&&e.__esModule?e:{default:e}}var qA={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]};so.QueryDocumentKeys=qA;var Ml=Object.freeze({});so.BREAK=Ml;function YQ(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:qA,n=void 0,a=Array.isArray(e),o=[e],s=-1,l=[],d=void 0,h=void 0,v=void 0,b=[],T=[],A=e;do{s++;var L=s===o.length,S=L&&l.length!==0;if(L){if(h=T.length===0?void 0:b[b.length-1],d=v,v=T.pop(),S){if(a)d=d.slice();else{for(var y={},_=0,m=Object.keys(d);_{"use strict";Object.defineProperty(ig,"__esModule",{value:!0});ig.default=void 0;var XQ=Array.prototype.find?function(e,t){return Array.prototype.find.call(e,t)}:function(e,t){for(var r=0;r{"use strict";Object.defineProperty(ag,"__esModule",{value:!0});ag.default=void 0;var $Q=Object.values||function(e){return Object.keys(e).map(function(t){return e[t]})},e5=$Q;ag.default=e5});var Td=U(BT=>{"use strict";Object.defineProperty(BT,"__esModule",{value:!0});BT.locatedError=i5;var t5=n5(Ot()),r5=Be();function n5(e){return e&&e.__esModule?e:{default:e}}function i5(e,t,r){var n,a=e instanceof Error?e:new Error("Unexpected error value: "+(0,t5.default)(e));return Array.isArray(a.path)?a:new r5.GraphQLError(a.message,(n=a.nodes)!==null&&n!==void 0?n:t,a.source,a.positions,r,a)}});var VT=U(og=>{"use strict";Object.defineProperty(og,"__esModule",{value:!0});og.assertValidName=s5;og.isValidNameError=VA;var a5=o5(wi()),BA=Be();function o5(e){return e&&e.__esModule?e:{default:e}}var u5=/^[_a-zA-Z][_a-zA-Z0-9]*$/;function s5(e){var t=VA(e);if(t)throw t;return e}function VA(e){if(typeof e=="string"||(0,a5.default)(0,"Expected name to be a string."),e.length>1&&e[0]==="_"&&e[1]==="_")return new BA.GraphQLError('Name "'.concat(e,'" must not begin with "__", which is reserved by GraphQL introspection.'));if(!u5.test(e))return new BA.GraphQLError('Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "'.concat(e,'" does not.'))}});var Bl=U(ug=>{"use strict";Object.defineProperty(ug,"__esModule",{value:!0});ug.default=void 0;var l5=Object.entries||function(e){return Object.keys(e).map(function(t){return[t,e[t]]})},c5=l5;ug.default=c5});var tu=U(UT=>{"use strict";Object.defineProperty(UT,"__esModule",{value:!0});UT.default=f5;function f5(e,t){return e.reduce(function(r,n){return r[t(n)]=n,r},Object.create(null))}});var QT=U(GT=>{"use strict";Object.defineProperty(GT,"__esModule",{value:!0});GT.default=h5;var d5=p5(Bl());function p5(e){return e&&e.__esModule?e:{default:e}}function h5(e,t){for(var r=Object.create(null),n=0,a=(0,d5.default)(e);n{"use strict";Object.defineProperty(KT,"__esModule",{value:!0});KT.default=m5;var v5=g5(Bl());function g5(e){return e&&e.__esModule?e:{default:e}}function m5(e){if(Object.getPrototypeOf(e)===null)return e;for(var t=Object.create(null),r=0,n=(0,v5.default)(e);r{"use strict";Object.defineProperty(HT,"__esModule",{value:!0});HT.default=y5;function y5(e,t,r){return e.reduce(function(n,a){return n[t(a)]=r(a),n},Object.create(null))}});var ru=U(zT=>{"use strict";Object.defineProperty(zT,"__esModule",{value:!0});zT.default=T5;var b5=5;function T5(e,t){var r=typeof e=="string"?[e,t]:[void 0,e],n=r[0],a=r[1],o=" Did you mean ";n&&(o+=n+" ");var s=a.map(function(h){return'"'.concat(h,'"')});switch(s.length){case 0:return"";case 1:return o+s[0]+"?";case 2:return o+s[0]+" or "+s[1]+"?"}var l=s.slice(0,b5),d=l.pop();return o+l.join(", ")+", or "+d+"?"}});var UA=U(WT=>{"use strict";Object.defineProperty(WT,"__esModule",{value:!0});WT.default=E5;function E5(e){return e}});var _d=U(JT=>{"use strict";Object.defineProperty(JT,"__esModule",{value:!0});JT.default=_5;function _5(e,t){for(var r=0,n=0;r0);var l=0;do++n,l=l*10+o-YT,o=t.charCodeAt(n);while(lg(o)&&l>0);if(sl)return 1}else{if(ao)return 1;++r,++n}}return e.length-t.length}var YT=48,S5=57;function lg(e){return!isNaN(e)&&YT<=e&&e<=S5}});var nu=U(XT=>{"use strict";Object.defineProperty(XT,"__esModule",{value:!0});XT.default=O5;var D5=k5(_d());function k5(e){return e&&e.__esModule?e:{default:e}}function O5(e,t){for(var r=Object.create(null),n=new C5(e),a=Math.floor(e.length*.4)+1,o=0;oa)){for(var b=this._rows,T=0;T<=v;T++)b[0][T]=T;for(var A=1;A<=h;A++){for(var L=b[(A-1)%3],S=b[A%3],y=S[0]=A,_=1;_<=v;_++){var m=s[A-1]===l[_-1]?0:1,k=Math.min(L[_]+1,S[_-1]+1,L[_-1]+m);if(A>1&&_>1&&s[A-1]===l[_-2]&&s[A-2]===l[_-1]){var w=b[(A-2)%3][_-2];k=Math.min(k,w+1)}ka)return}var C=b[h%3][v];return C<=a?C:void 0}},e}();function GA(e){for(var t=e.length,r=new Array(t),n=0;n{"use strict";Object.defineProperty(ZT,"__esModule",{value:!0});ZT.print=N5;var w5=eu(),A5=jl();function N5(e){return(0,w5.visit)(e,{leave:x5})}var L5=80,x5={Name:function(t){return t.value},Variable:function(t){return"$"+t.name},Document:function(t){return Le(t.definitions,` +`),'"""'+d.replace(/"""/g,'\\"""')+'"""'}});var Tg=G(Md=>{"use strict";Object.defineProperty(Md,"__esModule",{value:!0});Md.isPunctuatorTokenKind=rz;Md.Lexer=void 0;var Va=lg(),xr=Xl(),dt=Zl(),ez=ec(),tz=function(){function e(r){var n=new xr.Token(dt.TokenKind.SOF,0,0,0,0,null);this.source=r,this.lastToken=n,this.token=n,this.line=1,this.lineStart=0}var t=e.prototype;return t.advance=function(){this.lastToken=this.token;var n=this.token=this.lookahead();return n},t.lookahead=function(){var n=this.token;if(n.kind!==dt.TokenKind.EOF)do{var i;n=(i=n.next)!==null&&i!==void 0?i:n.next=nz(this,n)}while(n.kind===dt.TokenKind.COMMENT);return n},e}();Md.Lexer=tz;function rz(e){return e===dt.TokenKind.BANG||e===dt.TokenKind.DOLLAR||e===dt.TokenKind.AMP||e===dt.TokenKind.PAREN_L||e===dt.TokenKind.PAREN_R||e===dt.TokenKind.SPREAD||e===dt.TokenKind.COLON||e===dt.TokenKind.EQUALS||e===dt.TokenKind.AT||e===dt.TokenKind.BRACKET_L||e===dt.TokenKind.BRACKET_R||e===dt.TokenKind.BRACE_L||e===dt.TokenKind.PIPE||e===dt.TokenKind.BRACE_R}function vs(e){return isNaN(e)?dt.TokenKind.EOF:e<127?JSON.stringify(String.fromCharCode(e)):'"\\u'.concat(("00"+e.toString(16).toUpperCase()).slice(-4),'"')}function nz(e,t){for(var r=e.source,n=r.body,i=n.length,o=t.end;o31||s===9));return new xr.Token(dt.TokenKind.COMMENT,t,l,r,n,i,o.slice(t+1,l))}function oz(e,t,r,n,i,o){var s=e.body,l=r,d=t,h=!1;if(l===45&&(l=s.charCodeAt(++d)),l===48){if(l=s.charCodeAt(++d),l>=48&&l<=57)throw(0,Va.syntaxError)(e,d,"Invalid number, unexpected digit after 0: ".concat(vs(l),"."))}else d=b_(e,d,l),l=s.charCodeAt(d);if(l===46&&(h=!0,l=s.charCodeAt(++d),d=b_(e,d,l),l=s.charCodeAt(d)),(l===69||l===101)&&(h=!0,l=s.charCodeAt(++d),(l===43||l===45)&&(l=s.charCodeAt(++d)),d=b_(e,d,l),l=s.charCodeAt(d)),l===46||fz(l))throw(0,Va.syntaxError)(e,d,"Invalid number, expected digit but got: ".concat(vs(l),"."));return new xr.Token(h?dt.TokenKind.FLOAT:dt.TokenKind.INT,t,d,n,i,o,s.slice(t,d))}function b_(e,t,r){var n=e.body,i=t,o=r;if(o>=48&&o<=57){do o=n.charCodeAt(++i);while(o>=48&&o<=57);return i}throw(0,Va.syntaxError)(e,i,"Invalid number, expected digit but got: ".concat(vs(o),"."))}function uz(e,t,r,n,i){for(var o=e.body,s=t+1,l=s,d=0,h="";s=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function cz(e,t,r,n,i){for(var o=e.body,s=o.length,l=t+1,d=0;l!==s&&!isNaN(d=o.charCodeAt(l))&&(d===95||d>=48&&d<=57||d>=65&&d<=90||d>=97&&d<=122);)++l;return new xr.Token(dt.TokenKind.NAME,t,l,r,n,i,o.slice(t,l))}function fz(e){return e===95||e>=65&&e<=90||e>=97&&e<=122}});var tc=G(gs=>{"use strict";Object.defineProperty(gs,"__esModule",{value:!0});gs.parse=hz;gs.parseValue=vz;gs.parseType=gz;gs.Parser=void 0;var T_=lg(),$e=Jt(),dz=Xl(),De=Zl(),P1=mg(),pz=$l(),F1=Tg();function hz(e,t){var r=new _g(e,t);return r.parseDocument()}function vz(e,t){var r=new _g(e,t);r.expectToken(De.TokenKind.SOF);var n=r.parseValueLiteral(!1);return r.expectToken(De.TokenKind.EOF),n}function gz(e,t){var r=new _g(e,t);r.expectToken(De.TokenKind.SOF);var n=r.parseTypeReference();return r.expectToken(De.TokenKind.EOF),n}var _g=function(){function e(r,n){var i=(0,P1.isSource)(r)?r:new P1.Source(r);this._lexer=new F1.Lexer(i),this._options=n}var t=e.prototype;return t.parseName=function(){var n=this.expectToken(De.TokenKind.NAME);return{kind:$e.Kind.NAME,value:n.value,loc:this.loc(n)}},t.parseDocument=function(){var n=this._lexer.token;return{kind:$e.Kind.DOCUMENT,definitions:this.many(De.TokenKind.SOF,this.parseDefinition,De.TokenKind.EOF),loc:this.loc(n)}},t.parseDefinition=function(){if(this.peek(De.TokenKind.NAME))switch(this._lexer.token.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"schema":case"scalar":case"type":case"interface":case"union":case"enum":case"input":case"directive":return this.parseTypeSystemDefinition();case"extend":return this.parseTypeSystemExtension()}else{if(this.peek(De.TokenKind.BRACE_L))return this.parseOperationDefinition();if(this.peekDescription())return this.parseTypeSystemDefinition()}throw this.unexpected()},t.parseOperationDefinition=function(){var n=this._lexer.token;if(this.peek(De.TokenKind.BRACE_L))return{kind:$e.Kind.OPERATION_DEFINITION,operation:"query",name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet(),loc:this.loc(n)};var i=this.parseOperationType(),o;return this.peek(De.TokenKind.NAME)&&(o=this.parseName()),{kind:$e.Kind.OPERATION_DEFINITION,operation:i,name:o,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(n)}},t.parseOperationType=function(){var n=this.expectToken(De.TokenKind.NAME);switch(n.value){case"query":return"query";case"mutation":return"mutation";case"subscription":return"subscription"}throw this.unexpected(n)},t.parseVariableDefinitions=function(){return this.optionalMany(De.TokenKind.PAREN_L,this.parseVariableDefinition,De.TokenKind.PAREN_R)},t.parseVariableDefinition=function(){var n=this._lexer.token;return{kind:$e.Kind.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(De.TokenKind.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(De.TokenKind.EQUALS)?this.parseValueLiteral(!0):void 0,directives:this.parseDirectives(!0),loc:this.loc(n)}},t.parseVariable=function(){var n=this._lexer.token;return this.expectToken(De.TokenKind.DOLLAR),{kind:$e.Kind.VARIABLE,name:this.parseName(),loc:this.loc(n)}},t.parseSelectionSet=function(){var n=this._lexer.token;return{kind:$e.Kind.SELECTION_SET,selections:this.many(De.TokenKind.BRACE_L,this.parseSelection,De.TokenKind.BRACE_R),loc:this.loc(n)}},t.parseSelection=function(){return this.peek(De.TokenKind.SPREAD)?this.parseFragment():this.parseField()},t.parseField=function(){var n=this._lexer.token,i=this.parseName(),o,s;return this.expectOptionalToken(De.TokenKind.COLON)?(o=i,s=this.parseName()):s=i,{kind:$e.Kind.FIELD,alias:o,name:s,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(De.TokenKind.BRACE_L)?this.parseSelectionSet():void 0,loc:this.loc(n)}},t.parseArguments=function(n){var i=n?this.parseConstArgument:this.parseArgument;return this.optionalMany(De.TokenKind.PAREN_L,i,De.TokenKind.PAREN_R)},t.parseArgument=function(){var n=this._lexer.token,i=this.parseName();return this.expectToken(De.TokenKind.COLON),{kind:$e.Kind.ARGUMENT,name:i,value:this.parseValueLiteral(!1),loc:this.loc(n)}},t.parseConstArgument=function(){var n=this._lexer.token;return{kind:$e.Kind.ARGUMENT,name:this.parseName(),value:(this.expectToken(De.TokenKind.COLON),this.parseValueLiteral(!0)),loc:this.loc(n)}},t.parseFragment=function(){var n=this._lexer.token;this.expectToken(De.TokenKind.SPREAD);var i=this.expectOptionalKeyword("on");return!i&&this.peek(De.TokenKind.NAME)?{kind:$e.Kind.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1),loc:this.loc(n)}:{kind:$e.Kind.INLINE_FRAGMENT,typeCondition:i?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(n)}},t.parseFragmentDefinition=function(){var n,i=this._lexer.token;return this.expectKeyword("fragment"),((n=this._options)===null||n===void 0?void 0:n.experimentalFragmentVariables)===!0?{kind:$e.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(i)}:{kind:$e.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(i)}},t.parseFragmentName=function(){if(this._lexer.token.value==="on")throw this.unexpected();return this.parseName()},t.parseValueLiteral=function(n){var i=this._lexer.token;switch(i.kind){case De.TokenKind.BRACKET_L:return this.parseList(n);case De.TokenKind.BRACE_L:return this.parseObject(n);case De.TokenKind.INT:return this._lexer.advance(),{kind:$e.Kind.INT,value:i.value,loc:this.loc(i)};case De.TokenKind.FLOAT:return this._lexer.advance(),{kind:$e.Kind.FLOAT,value:i.value,loc:this.loc(i)};case De.TokenKind.STRING:case De.TokenKind.BLOCK_STRING:return this.parseStringLiteral();case De.TokenKind.NAME:switch(this._lexer.advance(),i.value){case"true":return{kind:$e.Kind.BOOLEAN,value:!0,loc:this.loc(i)};case"false":return{kind:$e.Kind.BOOLEAN,value:!1,loc:this.loc(i)};case"null":return{kind:$e.Kind.NULL,loc:this.loc(i)};default:return{kind:$e.Kind.ENUM,value:i.value,loc:this.loc(i)}}case De.TokenKind.DOLLAR:if(!n)return this.parseVariable();break}throw this.unexpected()},t.parseStringLiteral=function(){var n=this._lexer.token;return this._lexer.advance(),{kind:$e.Kind.STRING,value:n.value,block:n.kind===De.TokenKind.BLOCK_STRING,loc:this.loc(n)}},t.parseList=function(n){var i=this,o=this._lexer.token,s=function(){return i.parseValueLiteral(n)};return{kind:$e.Kind.LIST,values:this.any(De.TokenKind.BRACKET_L,s,De.TokenKind.BRACKET_R),loc:this.loc(o)}},t.parseObject=function(n){var i=this,o=this._lexer.token,s=function(){return i.parseObjectField(n)};return{kind:$e.Kind.OBJECT,fields:this.any(De.TokenKind.BRACE_L,s,De.TokenKind.BRACE_R),loc:this.loc(o)}},t.parseObjectField=function(n){var i=this._lexer.token,o=this.parseName();return this.expectToken(De.TokenKind.COLON),{kind:$e.Kind.OBJECT_FIELD,name:o,value:this.parseValueLiteral(n),loc:this.loc(i)}},t.parseDirectives=function(n){for(var i=[];this.peek(De.TokenKind.AT);)i.push(this.parseDirective(n));return i},t.parseDirective=function(n){var i=this._lexer.token;return this.expectToken(De.TokenKind.AT),{kind:$e.Kind.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(n),loc:this.loc(i)}},t.parseTypeReference=function(){var n=this._lexer.token,i;return this.expectOptionalToken(De.TokenKind.BRACKET_L)?(i=this.parseTypeReference(),this.expectToken(De.TokenKind.BRACKET_R),i={kind:$e.Kind.LIST_TYPE,type:i,loc:this.loc(n)}):i=this.parseNamedType(),this.expectOptionalToken(De.TokenKind.BANG)?{kind:$e.Kind.NON_NULL_TYPE,type:i,loc:this.loc(n)}:i},t.parseNamedType=function(){var n=this._lexer.token;return{kind:$e.Kind.NAMED_TYPE,name:this.parseName(),loc:this.loc(n)}},t.parseTypeSystemDefinition=function(){var n=this.peekDescription()?this._lexer.lookahead():this._lexer.token;if(n.kind===De.TokenKind.NAME)switch(n.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}throw this.unexpected(n)},t.peekDescription=function(){return this.peek(De.TokenKind.STRING)||this.peek(De.TokenKind.BLOCK_STRING)},t.parseDescription=function(){if(this.peekDescription())return this.parseStringLiteral()},t.parseSchemaDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("schema");var o=this.parseDirectives(!0),s=this.many(De.TokenKind.BRACE_L,this.parseOperationTypeDefinition,De.TokenKind.BRACE_R);return{kind:$e.Kind.SCHEMA_DEFINITION,description:i,directives:o,operationTypes:s,loc:this.loc(n)}},t.parseOperationTypeDefinition=function(){var n=this._lexer.token,i=this.parseOperationType();this.expectToken(De.TokenKind.COLON);var o=this.parseNamedType();return{kind:$e.Kind.OPERATION_TYPE_DEFINITION,operation:i,type:o,loc:this.loc(n)}},t.parseScalarTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("scalar");var o=this.parseName(),s=this.parseDirectives(!0);return{kind:$e.Kind.SCALAR_TYPE_DEFINITION,description:i,name:o,directives:s,loc:this.loc(n)}},t.parseObjectTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("type");var o=this.parseName(),s=this.parseImplementsInterfaces(),l=this.parseDirectives(!0),d=this.parseFieldsDefinition();return{kind:$e.Kind.OBJECT_TYPE_DEFINITION,description:i,name:o,interfaces:s,directives:l,fields:d,loc:this.loc(n)}},t.parseImplementsInterfaces=function(){var n;if(!this.expectOptionalKeyword("implements"))return[];if(((n=this._options)===null||n===void 0?void 0:n.allowLegacySDLImplementsInterfaces)===!0){var i=[];this.expectOptionalToken(De.TokenKind.AMP);do i.push(this.parseNamedType());while(this.expectOptionalToken(De.TokenKind.AMP)||this.peek(De.TokenKind.NAME));return i}return this.delimitedMany(De.TokenKind.AMP,this.parseNamedType)},t.parseFieldsDefinition=function(){var n;return((n=this._options)===null||n===void 0?void 0:n.allowLegacySDLEmptyFields)===!0&&this.peek(De.TokenKind.BRACE_L)&&this._lexer.lookahead().kind===De.TokenKind.BRACE_R?(this._lexer.advance(),this._lexer.advance(),[]):this.optionalMany(De.TokenKind.BRACE_L,this.parseFieldDefinition,De.TokenKind.BRACE_R)},t.parseFieldDefinition=function(){var n=this._lexer.token,i=this.parseDescription(),o=this.parseName(),s=this.parseArgumentDefs();this.expectToken(De.TokenKind.COLON);var l=this.parseTypeReference(),d=this.parseDirectives(!0);return{kind:$e.Kind.FIELD_DEFINITION,description:i,name:o,arguments:s,type:l,directives:d,loc:this.loc(n)}},t.parseArgumentDefs=function(){return this.optionalMany(De.TokenKind.PAREN_L,this.parseInputValueDef,De.TokenKind.PAREN_R)},t.parseInputValueDef=function(){var n=this._lexer.token,i=this.parseDescription(),o=this.parseName();this.expectToken(De.TokenKind.COLON);var s=this.parseTypeReference(),l;this.expectOptionalToken(De.TokenKind.EQUALS)&&(l=this.parseValueLiteral(!0));var d=this.parseDirectives(!0);return{kind:$e.Kind.INPUT_VALUE_DEFINITION,description:i,name:o,type:s,defaultValue:l,directives:d,loc:this.loc(n)}},t.parseInterfaceTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("interface");var o=this.parseName(),s=this.parseImplementsInterfaces(),l=this.parseDirectives(!0),d=this.parseFieldsDefinition();return{kind:$e.Kind.INTERFACE_TYPE_DEFINITION,description:i,name:o,interfaces:s,directives:l,fields:d,loc:this.loc(n)}},t.parseUnionTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("union");var o=this.parseName(),s=this.parseDirectives(!0),l=this.parseUnionMemberTypes();return{kind:$e.Kind.UNION_TYPE_DEFINITION,description:i,name:o,directives:s,types:l,loc:this.loc(n)}},t.parseUnionMemberTypes=function(){return this.expectOptionalToken(De.TokenKind.EQUALS)?this.delimitedMany(De.TokenKind.PIPE,this.parseNamedType):[]},t.parseEnumTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("enum");var o=this.parseName(),s=this.parseDirectives(!0),l=this.parseEnumValuesDefinition();return{kind:$e.Kind.ENUM_TYPE_DEFINITION,description:i,name:o,directives:s,values:l,loc:this.loc(n)}},t.parseEnumValuesDefinition=function(){return this.optionalMany(De.TokenKind.BRACE_L,this.parseEnumValueDefinition,De.TokenKind.BRACE_R)},t.parseEnumValueDefinition=function(){var n=this._lexer.token,i=this.parseDescription(),o=this.parseName(),s=this.parseDirectives(!0);return{kind:$e.Kind.ENUM_VALUE_DEFINITION,description:i,name:o,directives:s,loc:this.loc(n)}},t.parseInputObjectTypeDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("input");var o=this.parseName(),s=this.parseDirectives(!0),l=this.parseInputFieldsDefinition();return{kind:$e.Kind.INPUT_OBJECT_TYPE_DEFINITION,description:i,name:o,directives:s,fields:l,loc:this.loc(n)}},t.parseInputFieldsDefinition=function(){return this.optionalMany(De.TokenKind.BRACE_L,this.parseInputValueDef,De.TokenKind.BRACE_R)},t.parseTypeSystemExtension=function(){var n=this._lexer.lookahead();if(n.kind===De.TokenKind.NAME)switch(n.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(n)},t.parseSchemaExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");var i=this.parseDirectives(!0),o=this.optionalMany(De.TokenKind.BRACE_L,this.parseOperationTypeDefinition,De.TokenKind.BRACE_R);if(i.length===0&&o.length===0)throw this.unexpected();return{kind:$e.Kind.SCHEMA_EXTENSION,directives:i,operationTypes:o,loc:this.loc(n)}},t.parseScalarTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");var i=this.parseName(),o=this.parseDirectives(!0);if(o.length===0)throw this.unexpected();return{kind:$e.Kind.SCALAR_TYPE_EXTENSION,name:i,directives:o,loc:this.loc(n)}},t.parseObjectTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");var i=this.parseName(),o=this.parseImplementsInterfaces(),s=this.parseDirectives(!0),l=this.parseFieldsDefinition();if(o.length===0&&s.length===0&&l.length===0)throw this.unexpected();return{kind:$e.Kind.OBJECT_TYPE_EXTENSION,name:i,interfaces:o,directives:s,fields:l,loc:this.loc(n)}},t.parseInterfaceTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");var i=this.parseName(),o=this.parseImplementsInterfaces(),s=this.parseDirectives(!0),l=this.parseFieldsDefinition();if(o.length===0&&s.length===0&&l.length===0)throw this.unexpected();return{kind:$e.Kind.INTERFACE_TYPE_EXTENSION,name:i,interfaces:o,directives:s,fields:l,loc:this.loc(n)}},t.parseUnionTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");var i=this.parseName(),o=this.parseDirectives(!0),s=this.parseUnionMemberTypes();if(o.length===0&&s.length===0)throw this.unexpected();return{kind:$e.Kind.UNION_TYPE_EXTENSION,name:i,directives:o,types:s,loc:this.loc(n)}},t.parseEnumTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");var i=this.parseName(),o=this.parseDirectives(!0),s=this.parseEnumValuesDefinition();if(o.length===0&&s.length===0)throw this.unexpected();return{kind:$e.Kind.ENUM_TYPE_EXTENSION,name:i,directives:o,values:s,loc:this.loc(n)}},t.parseInputObjectTypeExtension=function(){var n=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");var i=this.parseName(),o=this.parseDirectives(!0),s=this.parseInputFieldsDefinition();if(o.length===0&&s.length===0)throw this.unexpected();return{kind:$e.Kind.INPUT_OBJECT_TYPE_EXTENSION,name:i,directives:o,fields:s,loc:this.loc(n)}},t.parseDirectiveDefinition=function(){var n=this._lexer.token,i=this.parseDescription();this.expectKeyword("directive"),this.expectToken(De.TokenKind.AT);var o=this.parseName(),s=this.parseArgumentDefs(),l=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");var d=this.parseDirectiveLocations();return{kind:$e.Kind.DIRECTIVE_DEFINITION,description:i,name:o,arguments:s,repeatable:l,locations:d,loc:this.loc(n)}},t.parseDirectiveLocations=function(){return this.delimitedMany(De.TokenKind.PIPE,this.parseDirectiveLocation)},t.parseDirectiveLocation=function(){var n=this._lexer.token,i=this.parseName();if(pz.DirectiveLocation[i.value]!==void 0)return i;throw this.unexpected(n)},t.loc=function(n){var i;if(((i=this._options)===null||i===void 0?void 0:i.noLocation)!==!0)return new dz.Location(n,this._lexer.lastToken,this._lexer.source)},t.peek=function(n){return this._lexer.token.kind===n},t.expectToken=function(n){var i=this._lexer.token;if(i.kind===n)return this._lexer.advance(),i;throw(0,T_.syntaxError)(this._lexer.source,i.start,"Expected ".concat(M1(n),", found ").concat(__(i),"."))},t.expectOptionalToken=function(n){var i=this._lexer.token;if(i.kind===n)return this._lexer.advance(),i},t.expectKeyword=function(n){var i=this._lexer.token;if(i.kind===De.TokenKind.NAME&&i.value===n)this._lexer.advance();else throw(0,T_.syntaxError)(this._lexer.source,i.start,'Expected "'.concat(n,'", found ').concat(__(i),"."))},t.expectOptionalKeyword=function(n){var i=this._lexer.token;return i.kind===De.TokenKind.NAME&&i.value===n?(this._lexer.advance(),!0):!1},t.unexpected=function(n){var i=n!=null?n:this._lexer.token;return(0,T_.syntaxError)(this._lexer.source,i.start,"Unexpected ".concat(__(i),"."))},t.any=function(n,i,o){this.expectToken(n);for(var s=[];!this.expectOptionalToken(o);)s.push(i.call(this));return s},t.optionalMany=function(n,i,o){if(this.expectOptionalToken(n)){var s=[];do s.push(i.call(this));while(!this.expectOptionalToken(o));return s}return[]},t.many=function(n,i,o){this.expectToken(n);var s=[];do s.push(i.call(this));while(!this.expectOptionalToken(o));return s},t.delimitedMany=function(n,i){this.expectOptionalToken(n);var o=[];do o.push(i.call(this));while(this.expectOptionalToken(n));return o},e}();gs.Parser=_g;function __(e){var t=e.value;return M1(e.kind)+(t!=null?' "'.concat(t,'"'):"")}function M1(e){return(0,F1.isPunctuatorTokenKind)(e)?'"'.concat(e,'"'):e}});var hu=G(_o=>{"use strict";Object.defineProperty(_o,"__esModule",{value:!0});_o.visit=bz;_o.visitInParallel=Tz;_o.getVisitFn=Eg;_o.BREAK=_o.QueryDocumentKeys=void 0;var mz=yz(jt()),q1=Xl();function yz(e){return e&&e.__esModule?e:{default:e}}var V1={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]};_o.QueryDocumentKeys=V1;var rc=Object.freeze({});_o.BREAK=rc;function bz(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:V1,n=void 0,i=Array.isArray(e),o=[e],s=-1,l=[],d=void 0,h=void 0,v=void 0,y=[],b=[],D=e;do{s++;var _=s===o.length,k=_&&l.length!==0;if(_){if(h=b.length===0?void 0:y[y.length-1],d=v,v=b.pop(),k){if(i)d=d.slice();else{for(var T={},S=0,m=Object.keys(d);S{"use strict";Object.defineProperty(Sg,"__esModule",{value:!0});Sg.default=void 0;var _z=Array.prototype.find?function(e,t){return Array.prototype.find.call(e,t)}:function(e,t){for(var r=0;r{"use strict";Object.defineProperty(kg,"__esModule",{value:!0});kg.default=void 0;var Sz=Object.values||function(e){return Object.keys(e).map(function(t){return e[t]})},kz=Sz;kg.default=kz});var qd=G(E_=>{"use strict";Object.defineProperty(E_,"__esModule",{value:!0});E_.locatedError=Dz;var Oz=Nz(jt()),wz=Je();function Nz(e){return e&&e.__esModule?e:{default:e}}function Dz(e,t,r){var n,i=e instanceof Error?e:new Error("Unexpected error value: "+(0,Oz.default)(e));return Array.isArray(i.path)?i:new wz.GraphQLError(i.message,(n=i.nodes)!==null&&n!==void 0?n:t,i.source,i.positions,r,i)}});var S_=G(Og=>{"use strict";Object.defineProperty(Og,"__esModule",{value:!0});Og.assertValidName=Iz;Og.isValidNameError=G1;var xz=Cz(Hi()),U1=Je();function Cz(e){return e&&e.__esModule?e:{default:e}}var Lz=/^[_a-zA-Z][_a-zA-Z0-9]*$/;function Iz(e){var t=G1(e);if(t)throw t;return e}function G1(e){if(typeof e=="string"||(0,xz.default)(0,"Expected name to be a string."),e.length>1&&e[0]==="_"&&e[1]==="_")return new U1.GraphQLError('Name "'.concat(e,'" must not begin with "__", which is reserved by GraphQL introspection.'));if(!Lz.test(e))return new U1.GraphQLError('Names must match /^[_a-zA-Z][_a-zA-Z0-9]*$/ but "'.concat(e,'" does not.'))}});var ic=G(wg=>{"use strict";Object.defineProperty(wg,"__esModule",{value:!0});wg.default=void 0;var Az=Object.entries||function(e){return Object.keys(e).map(function(t){return[t,e[t]]})},Rz=Az;wg.default=Rz});var vu=G(k_=>{"use strict";Object.defineProperty(k_,"__esModule",{value:!0});k_.default=jz;function jz(e,t){return e.reduce(function(r,n){return r[t(n)]=n,r},Object.create(null))}});var w_=G(O_=>{"use strict";Object.defineProperty(O_,"__esModule",{value:!0});O_.default=Mz;var Pz=Fz(ic());function Fz(e){return e&&e.__esModule?e:{default:e}}function Mz(e,t){for(var r=Object.create(null),n=0,i=(0,Pz.default)(e);n{"use strict";Object.defineProperty(N_,"__esModule",{value:!0});N_.default=Uz;var qz=Vz(ic());function Vz(e){return e&&e.__esModule?e:{default:e}}function Uz(e){if(Object.getPrototypeOf(e)===null)return e;for(var t=Object.create(null),r=0,n=(0,qz.default)(e);r{"use strict";Object.defineProperty(D_,"__esModule",{value:!0});D_.default=Gz;function Gz(e,t,r){return e.reduce(function(n,i){return n[t(i)]=r(i),n},Object.create(null))}});var gu=G(x_=>{"use strict";Object.defineProperty(x_,"__esModule",{value:!0});x_.default=Bz;var Qz=5;function Bz(e,t){var r=typeof e=="string"?[e,t]:[void 0,e],n=r[0],i=r[1],o=" Did you mean ";n&&(o+=n+" ");var s=i.map(function(h){return'"'.concat(h,'"')});switch(s.length){case 0:return"";case 1:return o+s[0]+"?";case 2:return o+s[0]+" or "+s[1]+"?"}var l=s.slice(0,Qz),d=l.pop();return o+l.join(", ")+", or "+d+"?"}});var Q1=G(C_=>{"use strict";Object.defineProperty(C_,"__esModule",{value:!0});C_.default=Kz;function Kz(e){return e}});var Ud=G(I_=>{"use strict";Object.defineProperty(I_,"__esModule",{value:!0});I_.default=Hz;function Hz(e,t){for(var r=0,n=0;r0);var l=0;do++n,l=l*10+o-L_,o=t.charCodeAt(n);while(Dg(o)&&l>0);if(sl)return 1}else{if(io)return 1;++r,++n}}return e.length-t.length}var L_=48,zz=57;function Dg(e){return!isNaN(e)&&L_<=e&&e<=zz}});var mu=G(A_=>{"use strict";Object.defineProperty(A_,"__esModule",{value:!0});A_.default=Jz;var Wz=Yz(Ud());function Yz(e){return e&&e.__esModule?e:{default:e}}function Jz(e,t){for(var r=Object.create(null),n=new Xz(e),i=Math.floor(e.length*.4)+1,o=0;oi)){for(var y=this._rows,b=0;b<=v;b++)y[0][b]=b;for(var D=1;D<=h;D++){for(var _=y[(D-1)%3],k=y[D%3],T=k[0]=D,S=1;S<=v;S++){var m=s[D-1]===l[S-1]?0:1,w=Math.min(_[S]+1,k[S-1]+1,_[S-1]+m);if(D>1&&S>1&&s[D-1]===l[S-2]&&s[D-2]===l[S-1]){var x=y[(D-2)%3][S-2];w=Math.min(w,x+1)}wi)return}var L=y[h%3][v];return L<=i?L:void 0}},e}();function B1(e){for(var t=e.length,r=new Array(t),n=0;n{"use strict";Object.defineProperty(R_,"__esModule",{value:!0});R_.print=eW;var Zz=hu(),$z=ec();function eW(e){return(0,Zz.visit)(e,{leave:rW})}var tW=80,rW={Name:function(t){return t.value},Variable:function(t){return"$"+t.name},Document:function(t){return je(t.definitions,` `)+` -`},OperationDefinition:function(t){var r=t.operation,n=t.name,a=or("(",Le(t.variableDefinitions,", "),")"),o=Le(t.directives," "),s=t.selectionSet;return!n&&!o&&!a&&r==="query"?s:Le([r,Le([n,a]),o,s]," ")},VariableDefinition:function(t){var r=t.variable,n=t.type,a=t.defaultValue,o=t.directives;return r+": "+n+or(" = ",a)+or(" ",Le(o," "))},SelectionSet:function(t){var r=t.selections;return ta(r)},Field:function(t){var r=t.alias,n=t.name,a=t.arguments,o=t.directives,s=t.selectionSet,l=or("",r,": ")+n,d=l+or("(",Le(a,", "),")");return d.length>L5&&(d=l+or(`( -`,cg(Le(a,` +`},OperationDefinition:function(t){var r=t.operation,n=t.name,i=yr("(",je(t.variableDefinitions,", "),")"),o=je(t.directives," "),s=t.selectionSet;return!n&&!o&&!i&&r==="query"?s:je([r,je([n,i]),o,s]," ")},VariableDefinition:function(t){var r=t.variable,n=t.type,i=t.defaultValue,o=t.directives;return r+": "+n+yr(" = ",i)+yr(" ",je(o," "))},SelectionSet:function(t){var r=t.selections;return ya(r)},Field:function(t){var r=t.alias,n=t.name,i=t.arguments,o=t.directives,s=t.selectionSet,l=yr("",r,": ")+n,d=l+yr("(",je(i,", "),")");return d.length>tW&&(d=l+yr(`( +`,xg(je(i,` `)),` -)`)),Le([d,Le(o," "),s]," ")},Argument:function(t){var r=t.name,n=t.value;return r+": "+n},FragmentSpread:function(t){var r=t.name,n=t.directives;return"..."+r+or(" ",Le(n," "))},InlineFragment:function(t){var r=t.typeCondition,n=t.directives,a=t.selectionSet;return Le(["...",or("on ",r),Le(n," "),a]," ")},FragmentDefinition:function(t){var r=t.name,n=t.typeCondition,a=t.variableDefinitions,o=t.directives,s=t.selectionSet;return"fragment ".concat(r).concat(or("(",Le(a,", "),")")," ")+"on ".concat(n," ").concat(or("",Le(o," ")," "))+s},IntValue:function(t){var r=t.value;return r},FloatValue:function(t){var r=t.value;return r},StringValue:function(t,r){var n=t.value,a=t.block;return a?(0,A5.printBlockString)(n,r==="description"?"":" "):JSON.stringify(n)},BooleanValue:function(t){var r=t.value;return r?"true":"false"},NullValue:function(){return"null"},EnumValue:function(t){var r=t.value;return r},ListValue:function(t){var r=t.values;return"["+Le(r,", ")+"]"},ObjectValue:function(t){var r=t.fields;return"{"+Le(r,", ")+"}"},ObjectField:function(t){var r=t.name,n=t.value;return r+": "+n},Directive:function(t){var r=t.name,n=t.arguments;return"@"+r+or("(",Le(n,", "),")")},NamedType:function(t){var r=t.name;return r},ListType:function(t){var r=t.type;return"["+r+"]"},NonNullType:function(t){var r=t.type;return r+"!"},SchemaDefinition:ea(function(e){var t=e.directives,r=e.operationTypes;return Le(["schema",Le(t," "),ta(r)]," ")}),OperationTypeDefinition:function(t){var r=t.operation,n=t.type;return r+": "+n},ScalarTypeDefinition:ea(function(e){var t=e.name,r=e.directives;return Le(["scalar",t,Le(r," ")]," ")}),ObjectTypeDefinition:ea(function(e){var t=e.name,r=e.interfaces,n=e.directives,a=e.fields;return Le(["type",t,or("implements ",Le(r," & ")),Le(n," "),ta(a)]," ")}),FieldDefinition:ea(function(e){var t=e.name,r=e.arguments,n=e.type,a=e.directives;return t+(QA(r)?or(`( -`,cg(Le(r,` +)`)),je([d,je(o," "),s]," ")},Argument:function(t){var r=t.name,n=t.value;return r+": "+n},FragmentSpread:function(t){var r=t.name,n=t.directives;return"..."+r+yr(" ",je(n," "))},InlineFragment:function(t){var r=t.typeCondition,n=t.directives,i=t.selectionSet;return je(["...",yr("on ",r),je(n," "),i]," ")},FragmentDefinition:function(t){var r=t.name,n=t.typeCondition,i=t.variableDefinitions,o=t.directives,s=t.selectionSet;return"fragment ".concat(r).concat(yr("(",je(i,", "),")")," ")+"on ".concat(n," ").concat(yr("",je(o," ")," "))+s},IntValue:function(t){var r=t.value;return r},FloatValue:function(t){var r=t.value;return r},StringValue:function(t,r){var n=t.value,i=t.block;return i?(0,$z.printBlockString)(n,r==="description"?"":" "):JSON.stringify(n)},BooleanValue:function(t){var r=t.value;return r?"true":"false"},NullValue:function(){return"null"},EnumValue:function(t){var r=t.value;return r},ListValue:function(t){var r=t.values;return"["+je(r,", ")+"]"},ObjectValue:function(t){var r=t.fields;return"{"+je(r,", ")+"}"},ObjectField:function(t){var r=t.name,n=t.value;return r+": "+n},Directive:function(t){var r=t.name,n=t.arguments;return"@"+r+yr("(",je(n,", "),")")},NamedType:function(t){var r=t.name;return r},ListType:function(t){var r=t.type;return"["+r+"]"},NonNullType:function(t){var r=t.type;return r+"!"},SchemaDefinition:ma(function(e){var t=e.directives,r=e.operationTypes;return je(["schema",je(t," "),ya(r)]," ")}),OperationTypeDefinition:function(t){var r=t.operation,n=t.type;return r+": "+n},ScalarTypeDefinition:ma(function(e){var t=e.name,r=e.directives;return je(["scalar",t,je(r," ")]," ")}),ObjectTypeDefinition:ma(function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return je(["type",t,yr("implements ",je(r," & ")),je(n," "),ya(i)]," ")}),FieldDefinition:ma(function(e){var t=e.name,r=e.arguments,n=e.type,i=e.directives;return t+(K1(r)?yr(`( +`,xg(je(r,` `)),` -)`):or("(",Le(r,", "),")"))+": "+n+or(" ",Le(a," "))}),InputValueDefinition:ea(function(e){var t=e.name,r=e.type,n=e.defaultValue,a=e.directives;return Le([t+": "+r,or("= ",n),Le(a," ")]," ")}),InterfaceTypeDefinition:ea(function(e){var t=e.name,r=e.interfaces,n=e.directives,a=e.fields;return Le(["interface",t,or("implements ",Le(r," & ")),Le(n," "),ta(a)]," ")}),UnionTypeDefinition:ea(function(e){var t=e.name,r=e.directives,n=e.types;return Le(["union",t,Le(r," "),n&&n.length!==0?"= "+Le(n," | "):""]," ")}),EnumTypeDefinition:ea(function(e){var t=e.name,r=e.directives,n=e.values;return Le(["enum",t,Le(r," "),ta(n)]," ")}),EnumValueDefinition:ea(function(e){var t=e.name,r=e.directives;return Le([t,Le(r," ")]," ")}),InputObjectTypeDefinition:ea(function(e){var t=e.name,r=e.directives,n=e.fields;return Le(["input",t,Le(r," "),ta(n)]," ")}),DirectiveDefinition:ea(function(e){var t=e.name,r=e.arguments,n=e.repeatable,a=e.locations;return"directive @"+t+(QA(r)?or(`( -`,cg(Le(r,` +)`):yr("(",je(r,", "),")"))+": "+n+yr(" ",je(i," "))}),InputValueDefinition:ma(function(e){var t=e.name,r=e.type,n=e.defaultValue,i=e.directives;return je([t+": "+r,yr("= ",n),je(i," ")]," ")}),InterfaceTypeDefinition:ma(function(e){var t=e.name,r=e.interfaces,n=e.directives,i=e.fields;return je(["interface",t,yr("implements ",je(r," & ")),je(n," "),ya(i)]," ")}),UnionTypeDefinition:ma(function(e){var t=e.name,r=e.directives,n=e.types;return je(["union",t,je(r," "),n&&n.length!==0?"= "+je(n," | "):""]," ")}),EnumTypeDefinition:ma(function(e){var t=e.name,r=e.directives,n=e.values;return je(["enum",t,je(r," "),ya(n)]," ")}),EnumValueDefinition:ma(function(e){var t=e.name,r=e.directives;return je([t,je(r," ")]," ")}),InputObjectTypeDefinition:ma(function(e){var t=e.name,r=e.directives,n=e.fields;return je(["input",t,je(r," "),ya(n)]," ")}),DirectiveDefinition:ma(function(e){var t=e.name,r=e.arguments,n=e.repeatable,i=e.locations;return"directive @"+t+(K1(r)?yr(`( +`,xg(je(r,` `)),` -)`):or("(",Le(r,", "),")"))+(n?" repeatable":"")+" on "+Le(a," | ")}),SchemaExtension:function(t){var r=t.directives,n=t.operationTypes;return Le(["extend schema",Le(r," "),ta(n)]," ")},ScalarTypeExtension:function(t){var r=t.name,n=t.directives;return Le(["extend scalar",r,Le(n," ")]," ")},ObjectTypeExtension:function(t){var r=t.name,n=t.interfaces,a=t.directives,o=t.fields;return Le(["extend type",r,or("implements ",Le(n," & ")),Le(a," "),ta(o)]," ")},InterfaceTypeExtension:function(t){var r=t.name,n=t.interfaces,a=t.directives,o=t.fields;return Le(["extend interface",r,or("implements ",Le(n," & ")),Le(a," "),ta(o)]," ")},UnionTypeExtension:function(t){var r=t.name,n=t.directives,a=t.types;return Le(["extend union",r,Le(n," "),a&&a.length!==0?"= "+Le(a," | "):""]," ")},EnumTypeExtension:function(t){var r=t.name,n=t.directives,a=t.values;return Le(["extend enum",r,Le(n," "),ta(a)]," ")},InputObjectTypeExtension:function(t){var r=t.name,n=t.directives,a=t.fields;return Le(["extend input",r,Le(n," "),ta(a)]," ")}};function ea(e){return function(t){return Le([t.description,e(t)],` -`)}}function Le(e){var t,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return(t=e==null?void 0:e.filter(function(n){return n}).join(r))!==null&&t!==void 0?t:""}function ta(e){return or(`{ -`,cg(Le(e,` +)`):yr("(",je(r,", "),")"))+(n?" repeatable":"")+" on "+je(i," | ")}),SchemaExtension:function(t){var r=t.directives,n=t.operationTypes;return je(["extend schema",je(r," "),ya(n)]," ")},ScalarTypeExtension:function(t){var r=t.name,n=t.directives;return je(["extend scalar",r,je(n," ")]," ")},ObjectTypeExtension:function(t){var r=t.name,n=t.interfaces,i=t.directives,o=t.fields;return je(["extend type",r,yr("implements ",je(n," & ")),je(i," "),ya(o)]," ")},InterfaceTypeExtension:function(t){var r=t.name,n=t.interfaces,i=t.directives,o=t.fields;return je(["extend interface",r,yr("implements ",je(n," & ")),je(i," "),ya(o)]," ")},UnionTypeExtension:function(t){var r=t.name,n=t.directives,i=t.types;return je(["extend union",r,je(n," "),i&&i.length!==0?"= "+je(i," | "):""]," ")},EnumTypeExtension:function(t){var r=t.name,n=t.directives,i=t.values;return je(["extend enum",r,je(n," "),ya(i)]," ")},InputObjectTypeExtension:function(t){var r=t.name,n=t.directives,i=t.fields;return je(["extend input",r,je(n," "),ya(i)]," ")}};function ma(e){return function(t){return je([t.description,e(t)],` +`)}}function je(e){var t,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return(t=e==null?void 0:e.filter(function(n){return n}).join(r))!==null&&t!==void 0?t:""}function ya(e){return yr(`{ +`,xg(je(e,` `)),` -}`)}function or(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";return t!=null&&t!==""?e+t+r:""}function cg(e){return or(" ",e.replace(/\n/g,` - `))}function I5(e){return e.indexOf(` -`)!==-1}function QA(e){return e!=null&&e.some(I5)}});var rE=U(tE=>{"use strict";Object.defineProperty(tE,"__esModule",{value:!0});tE.valueFromASTUntyped=eE;var R5=$T(Ot()),F5=$T(un()),j5=$T(Ed()),lo=Vt();function $T(e){return e&&e.__esModule?e:{default:e}}function eE(e,t){switch(e.kind){case lo.Kind.NULL:return null;case lo.Kind.INT:return parseInt(e.value,10);case lo.Kind.FLOAT:return parseFloat(e.value);case lo.Kind.STRING:case lo.Kind.ENUM:case lo.Kind.BOOLEAN:return e.value;case lo.Kind.LIST:return e.values.map(function(r){return eE(r,t)});case lo.Kind.OBJECT:return(0,j5.default)(e.fields,function(r){return r.name.value},function(r){return eE(r.value,t)});case lo.Kind.VARIABLE:return t==null?void 0:t[e.name.value]}(0,F5.default)(0,"Unexpected value node: "+(0,R5.default)(e))}});var lt=U(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.isType=nE;je.assertType=JA;je.isScalarType=es;je.assertScalarType=G5;je.isObjectType=Ul;je.assertObjectType=Q5;je.isInterfaceType=ts;je.assertInterfaceType=K5;je.isUnionType=rs;je.assertUnionType=H5;je.isEnumType=ns;je.assertEnumType=z5;je.isInputObjectType=Dd;je.assertInputObjectType=W5;je.isListType=dg;je.assertListType=Y5;je.isNonNullType=uu;je.assertNonNullType=J5;je.isInputType=iE;je.assertInputType=X5;je.isOutputType=aE;je.assertOutputType=Z5;je.isLeafType=XA;je.assertLeafType=$5;je.isCompositeType=ZA;je.assertCompositeType=e9;je.isAbstractType=$A;je.assertAbstractType=t9;je.GraphQLList=su;je.GraphQLNonNull=lu;je.isWrappingType=kd;je.assertWrappingType=r9;je.isNullableType=eN;je.assertNullableType=tN;je.getNullableType=n9;je.isNamedType=rN;je.assertNamedType=i9;je.getNamedType=a9;je.argsToArgsConfig=oN;je.isRequiredArgument=o9;je.isRequiredInputField=c9;je.GraphQLInputObjectType=je.GraphQLEnumType=je.GraphQLUnionType=je.GraphQLInterfaceType=je.GraphQLObjectType=je.GraphQLScalarType=void 0;var KA=ui(Bl()),iu=Da(),Xt=ui(Ot()),P5=ui(tu()),fg=ui(QT()),Oa=ui(sg()),tr=ui(wi()),HA=ui(Ed()),au=ui(gd()),M5=ui(ru()),q5=ui(Sa()),zA=ui(UA()),ou=ui(zv()),B5=ui(nu()),Sd=Be(),V5=Vt(),WA=Wn(),U5=rE();function ui(e){return e&&e.__esModule?e:{default:e}}function YA(e,t){for(var r=0;r0?e:void 0}var oE=function(){function e(r){var n,a,o,s=(n=r.parseValue)!==null&&n!==void 0?n:zA.default;this.name=r.name,this.description=r.description,this.specifiedByUrl=r.specifiedByUrl,this.serialize=(a=r.serialize)!==null&&a!==void 0?a:zA.default,this.parseValue=s,this.parseLiteral=(o=r.parseLiteral)!==null&&o!==void 0?o:function(l,d){return s((0,U5.valueFromASTUntyped)(l,d))},this.extensions=r.extensions&&(0,Oa.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=Gl(r.extensionASTNodes),typeof r.name=="string"||(0,tr.default)(0,"Must provide name."),r.specifiedByUrl==null||typeof r.specifiedByUrl=="string"||(0,tr.default)(0,"".concat(this.name,' must provide "specifiedByUrl" as a string, ')+"but got: ".concat((0,Xt.default)(r.specifiedByUrl),".")),r.serialize==null||typeof r.serialize=="function"||(0,tr.default)(0,"".concat(this.name,' must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.')),r.parseLiteral&&(typeof r.parseValue=="function"&&typeof r.parseLiteral=="function"||(0,tr.default)(0,"".concat(this.name,' must provide both "parseValue" and "parseLiteral" functions.')))}var t=e.prototype;return t.toConfig=function(){var n;return{name:this.name,description:this.description,specifiedByUrl:this.specifiedByUrl,serialize:this.serialize,parseValue:this.parseValue,parseLiteral:this.parseLiteral,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},Vl(e,[{key:iu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLScalarType"}}]),e}();je.GraphQLScalarType=oE;(0,ou.default)(oE);var uE=function(){function e(r){this.name=r.name,this.description=r.description,this.isTypeOf=r.isTypeOf,this.extensions=r.extensions&&(0,Oa.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=Gl(r.extensionASTNodes),this._fields=iN.bind(void 0,r),this._interfaces=nN.bind(void 0,r),typeof r.name=="string"||(0,tr.default)(0,"Must provide name."),r.isTypeOf==null||typeof r.isTypeOf=="function"||(0,tr.default)(0,"".concat(this.name,' must provide "isTypeOf" as a function, ')+"but got: ".concat((0,Xt.default)(r.isTypeOf),"."))}var t=e.prototype;return t.getFields=function(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields},t.getInterfaces=function(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces},t.toConfig=function(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:aN(this.getFields()),isTypeOf:this.isTypeOf,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes||[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},Vl(e,[{key:iu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLObjectType"}}]),e}();je.GraphQLObjectType=uE;(0,ou.default)(uE);function nN(e){var t,r=(t=pg(e.interfaces))!==null&&t!==void 0?t:[];return Array.isArray(r)||(0,tr.default)(0,"".concat(e.name," interfaces must be an Array or a function which returns an Array.")),r}function iN(e){var t=pg(e.fields);return Ql(t)||(0,tr.default)(0,"".concat(e.name," fields must be an object with field names as keys or a function which returns such an object.")),(0,fg.default)(t,function(r,n){var a;Ql(r)||(0,tr.default)(0,"".concat(e.name,".").concat(n," field config must be an object.")),!("isDeprecated"in r)||(0,tr.default)(0,"".concat(e.name,".").concat(n,' should provide "deprecationReason" instead of "isDeprecated".')),r.resolve==null||typeof r.resolve=="function"||(0,tr.default)(0,"".concat(e.name,".").concat(n," field resolver must be a function if ")+"provided, but got: ".concat((0,Xt.default)(r.resolve),"."));var o=(a=r.args)!==null&&a!==void 0?a:{};Ql(o)||(0,tr.default)(0,"".concat(e.name,".").concat(n," args must be an object with argument names as keys."));var s=(0,KA.default)(o).map(function(l){var d=l[0],h=l[1];return{name:d,description:h.description,type:h.type,defaultValue:h.defaultValue,deprecationReason:h.deprecationReason,extensions:h.extensions&&(0,Oa.default)(h.extensions),astNode:h.astNode}});return{name:n,description:r.description,type:r.type,args:s,resolve:r.resolve,subscribe:r.subscribe,isDeprecated:r.deprecationReason!=null,deprecationReason:r.deprecationReason,extensions:r.extensions&&(0,Oa.default)(r.extensions),astNode:r.astNode}})}function Ql(e){return(0,q5.default)(e)&&!Array.isArray(e)}function aN(e){return(0,fg.default)(e,function(t){return{description:t.description,type:t.type,args:oN(t.args),resolve:t.resolve,subscribe:t.subscribe,deprecationReason:t.deprecationReason,extensions:t.extensions,astNode:t.astNode}})}function oN(e){return(0,HA.default)(e,function(t){return t.name},function(t){return{description:t.description,type:t.type,defaultValue:t.defaultValue,deprecationReason:t.deprecationReason,extensions:t.extensions,astNode:t.astNode}})}function o9(e){return uu(e.type)&&e.defaultValue===void 0}var sE=function(){function e(r){this.name=r.name,this.description=r.description,this.resolveType=r.resolveType,this.extensions=r.extensions&&(0,Oa.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=Gl(r.extensionASTNodes),this._fields=iN.bind(void 0,r),this._interfaces=nN.bind(void 0,r),typeof r.name=="string"||(0,tr.default)(0,"Must provide name."),r.resolveType==null||typeof r.resolveType=="function"||(0,tr.default)(0,"".concat(this.name,' must provide "resolveType" as a function, ')+"but got: ".concat((0,Xt.default)(r.resolveType),"."))}var t=e.prototype;return t.getFields=function(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields},t.getInterfaces=function(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces},t.toConfig=function(){var n;return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:aN(this.getFields()),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},Vl(e,[{key:iu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLInterfaceType"}}]),e}();je.GraphQLInterfaceType=sE;(0,ou.default)(sE);var lE=function(){function e(r){this.name=r.name,this.description=r.description,this.resolveType=r.resolveType,this.extensions=r.extensions&&(0,Oa.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=Gl(r.extensionASTNodes),this._types=u9.bind(void 0,r),typeof r.name=="string"||(0,tr.default)(0,"Must provide name."),r.resolveType==null||typeof r.resolveType=="function"||(0,tr.default)(0,"".concat(this.name,' must provide "resolveType" as a function, ')+"but got: ".concat((0,Xt.default)(r.resolveType),"."))}var t=e.prototype;return t.getTypes=function(){return typeof this._types=="function"&&(this._types=this._types()),this._types},t.toConfig=function(){var n;return{name:this.name,description:this.description,types:this.getTypes(),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},Vl(e,[{key:iu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLUnionType"}}]),e}();je.GraphQLUnionType=lE;(0,ou.default)(lE);function u9(e){var t=pg(e.types);return Array.isArray(t)||(0,tr.default)(0,"Must provide Array of types or a function which returns such an array for Union ".concat(e.name,".")),t}var cE=function(){function e(r){this.name=r.name,this.description=r.description,this.extensions=r.extensions&&(0,Oa.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=Gl(r.extensionASTNodes),this._values=s9(this.name,r.values),this._valueLookup=new Map(this._values.map(function(n){return[n.value,n]})),this._nameLookup=(0,P5.default)(this._values,function(n){return n.name}),typeof r.name=="string"||(0,tr.default)(0,"Must provide name.")}var t=e.prototype;return t.getValues=function(){return this._values},t.getValue=function(n){return this._nameLookup[n]},t.serialize=function(n){var a=this._valueLookup.get(n);if(a===void 0)throw new Sd.GraphQLError('Enum "'.concat(this.name,'" cannot represent value: ').concat((0,Xt.default)(n)));return a.name},t.parseValue=function(n){if(typeof n!="string"){var a=(0,Xt.default)(n);throw new Sd.GraphQLError('Enum "'.concat(this.name,'" cannot represent non-string value: ').concat(a,".")+hg(this,a))}var o=this.getValue(n);if(o==null)throw new Sd.GraphQLError('Value "'.concat(n,'" does not exist in "').concat(this.name,'" enum.')+hg(this,n));return o.value},t.parseLiteral=function(n,a){if(n.kind!==V5.Kind.ENUM){var o=(0,WA.print)(n);throw new Sd.GraphQLError('Enum "'.concat(this.name,'" cannot represent non-enum value: ').concat(o,".")+hg(this,o),n)}var s=this.getValue(n.value);if(s==null){var l=(0,WA.print)(n);throw new Sd.GraphQLError('Value "'.concat(l,'" does not exist in "').concat(this.name,'" enum.')+hg(this,l),n)}return s.value},t.toConfig=function(){var n,a=(0,HA.default)(this.getValues(),function(o){return o.name},function(o){return{description:o.description,value:o.value,deprecationReason:o.deprecationReason,extensions:o.extensions,astNode:o.astNode}});return{name:this.name,description:this.description,values:a,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},Vl(e,[{key:iu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLEnumType"}}]),e}();je.GraphQLEnumType=cE;(0,ou.default)(cE);function hg(e,t){var r=e.getValues().map(function(a){return a.name}),n=(0,B5.default)(t,r);return(0,M5.default)("the enum value",n)}function s9(e,t){return Ql(t)||(0,tr.default)(0,"".concat(e," values must be an object with value names as keys.")),(0,KA.default)(t).map(function(r){var n=r[0],a=r[1];return Ql(a)||(0,tr.default)(0,"".concat(e,".").concat(n,' must refer to an object with a "value" key ')+"representing an internal value but got: ".concat((0,Xt.default)(a),".")),!("isDeprecated"in a)||(0,tr.default)(0,"".concat(e,".").concat(n,' should provide "deprecationReason" instead of "isDeprecated".')),{name:n,description:a.description,value:a.value!==void 0?a.value:n,isDeprecated:a.deprecationReason!=null,deprecationReason:a.deprecationReason,extensions:a.extensions&&(0,Oa.default)(a.extensions),astNode:a.astNode}})}var fE=function(){function e(r){this.name=r.name,this.description=r.description,this.extensions=r.extensions&&(0,Oa.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=Gl(r.extensionASTNodes),this._fields=l9.bind(void 0,r),typeof r.name=="string"||(0,tr.default)(0,"Must provide name.")}var t=e.prototype;return t.getFields=function(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields},t.toConfig=function(){var n,a=(0,fg.default)(this.getFields(),function(o){return{description:o.description,type:o.type,defaultValue:o.defaultValue,extensions:o.extensions,astNode:o.astNode}});return{name:this.name,description:this.description,fields:a,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},Vl(e,[{key:iu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLInputObjectType"}}]),e}();je.GraphQLInputObjectType=fE;(0,ou.default)(fE);function l9(e){var t=pg(e.fields);return Ql(t)||(0,tr.default)(0,"".concat(e.name," fields must be an object with field names as keys or a function which returns such an object.")),(0,fg.default)(t,function(r,n){return!("resolve"in r)||(0,tr.default)(0,"".concat(e.name,".").concat(n," field has a resolve property, but Input Types cannot define resolvers.")),{name:n,description:r.description,type:r.type,defaultValue:r.defaultValue,deprecationReason:r.deprecationReason,extensions:r.extensions&&(0,Oa.default)(r.extensions),astNode:r.astNode}})}function c9(e){return uu(e.type)&&e.defaultValue===void 0}});var Cd=U(Od=>{"use strict";Object.defineProperty(Od,"__esModule",{value:!0});Od.isEqualType=dE;Od.isTypeSubTypeOf=vg;Od.doTypesOverlap=f9;var bn=lt();function dE(e,t){return e===t?!0:(0,bn.isNonNullType)(e)&&(0,bn.isNonNullType)(t)||(0,bn.isListType)(e)&&(0,bn.isListType)(t)?dE(e.ofType,t.ofType):!1}function vg(e,t,r){return t===r?!0:(0,bn.isNonNullType)(r)?(0,bn.isNonNullType)(t)?vg(e,t.ofType,r.ofType):!1:(0,bn.isNonNullType)(t)?vg(e,t.ofType,r):(0,bn.isListType)(r)?(0,bn.isListType)(t)?vg(e,t.ofType,r.ofType):!1:(0,bn.isListType)(t)?!1:(0,bn.isAbstractType)(r)&&((0,bn.isInterfaceType)(t)||(0,bn.isObjectType)(t))&&e.isSubType(r,t)}function f9(e,t,r){return t===r?!0:(0,bn.isAbstractType)(t)?(0,bn.isAbstractType)(r)?e.getPossibleTypes(t).some(function(n){return e.isSubType(r,n)}):e.isSubType(t,r):(0,bn.isAbstractType)(r)?e.isSubType(r,t):!1}});var pE=U(gg=>{"use strict";Object.defineProperty(gg,"__esModule",{value:!0});gg.default=void 0;var d9=Da(),p9=Array.from||function(e,t,r){if(e==null)throw new TypeError("Array.from requires an array-like object - not null or undefined");var n=e[d9.SYMBOL_ITERATOR];if(typeof n=="function"){for(var a=n.call(e),o=[],s,l=0;!(s=a.next()).done;++l)if(o.push(t.call(r,s.value,l)),l>9999999)throw new TypeError("Near-infinite iteration.");return o}var d=e.length;if(typeof d=="number"&&d>=0&&d%1==0){for(var h=[],v=0;v{"use strict";Object.defineProperty(mg,"__esModule",{value:!0});mg.default=void 0;var v9=Number.isFinite||function(e){return typeof e=="number"&&isFinite(e)},g9=v9;mg.default=g9});var bg=U(vE=>{"use strict";Object.defineProperty(vE,"__esModule",{value:!0});vE.default=y9;var m9=Da();function yg(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?yg=function(r){return typeof r}:yg=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},yg(e)}function y9(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(v){return v};if(e==null||yg(e)!=="object")return null;if(Array.isArray(e))return e.map(t);var r=e[m9.SYMBOL_ITERATOR];if(typeof r=="function"){for(var n=r.call(e),a=[],o,s=0;!(o=n.next()).done;++s)a.push(t(o.value,s));return a}var l=e.length;if(typeof l=="number"&&l>=0&&l%1==0){for(var d=[],h=0;h{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.default=void 0;var b9=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e},T9=b9;Tg.default=T9});var Ca=U(Rn=>{"use strict";Object.defineProperty(Rn,"__esModule",{value:!0});Rn.isSpecifiedScalarType=L9;Rn.specifiedScalarTypes=Rn.GraphQLID=Rn.GraphQLBoolean=Rn.GraphQLString=Rn.GraphQLFloat=Rn.GraphQLInt=void 0;var Eg=Sg(hE()),_g=Sg(uN()),ra=Sg(Ot()),sN=Sg(Sa()),is=Vt(),wd=Wn(),Jr=Be(),Ad=lt();function Sg(e){return e&&e.__esModule?e:{default:e}}var gE=2147483647,mE=-2147483648;function E9(e){var t=Nd(e);if(typeof t=="boolean")return t?1:0;var r=t;if(typeof t=="string"&&t!==""&&(r=Number(t)),!(0,_g.default)(r))throw new Jr.GraphQLError("Int cannot represent non-integer value: ".concat((0,ra.default)(t)));if(r>gE||rgE||egE||r{"use strict";Object.defineProperty(yE,"__esModule",{value:!0});yE.astFromValue=xd;var x9=Kl(hE()),I9=Kl(oi()),vN=Kl(Ot()),R9=Kl(un()),F9=Kl(Sa()),j9=Kl(bg()),Ai=Vt(),P9=Ca(),Ld=lt();function Kl(e){return e&&e.__esModule?e:{default:e}}function xd(e,t){if((0,Ld.isNonNullType)(t)){var r=xd(e,t.ofType);return(r==null?void 0:r.kind)===Ai.Kind.NULL?null:r}if(e===null)return{kind:Ai.Kind.NULL};if(e===void 0)return null;if((0,Ld.isListType)(t)){var n=t.ofType,a=(0,j9.default)(e);if(a!=null){for(var o=[],s=0;s{"use strict";Object.defineProperty(Rt,"__esModule",{value:!0});Rt.isIntrospectionType=K9;Rt.introspectionTypes=Rt.TypeNameMetaFieldDef=Rt.TypeMetaFieldDef=Rt.SchemaMetaFieldDef=Rt.__TypeKind=Rt.TypeKind=Rt.__EnumValue=Rt.__InputValue=Rt.__Field=Rt.__Type=Rt.__DirectiveLocation=Rt.__Directive=Rt.__Schema=void 0;var bE=TE(oi()),M9=TE(Ot()),q9=TE(un()),B9=Wn(),Mr=Fl(),V9=Id(),Qt=Ca(),xe=lt();function TE(e){return e&&e.__esModule?e:{default:e}}var EE=new xe.GraphQLObjectType({name:"__Schema",description:"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.",fields:function(){return{description:{type:Qt.GraphQLString,resolve:function(r){return r.description}},types:{description:"A list of all types supported by this server.",type:new xe.GraphQLNonNull(new xe.GraphQLList(new xe.GraphQLNonNull(Ni))),resolve:function(r){return(0,bE.default)(r.getTypeMap())}},queryType:{description:"The type that query operations will be rooted at.",type:new xe.GraphQLNonNull(Ni),resolve:function(r){return r.getQueryType()}},mutationType:{description:"If this server supports mutation, the type that mutation operations will be rooted at.",type:Ni,resolve:function(r){return r.getMutationType()}},subscriptionType:{description:"If this server support subscription, the type that subscription operations will be rooted at.",type:Ni,resolve:function(r){return r.getSubscriptionType()}},directives:{description:"A list of all directives supported by this server.",type:new xe.GraphQLNonNull(new xe.GraphQLList(new xe.GraphQLNonNull(_E))),resolve:function(r){return r.getDirectives()}}}}});Rt.__Schema=EE;var _E=new xe.GraphQLObjectType({name:"__Directive",description:`A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document. +}`)}function yr(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";return t!=null&&t!==""?e+t+r:""}function xg(e){return yr(" ",e.replace(/\n/g,` + `))}function nW(e){return e.indexOf(` +`)!==-1}function K1(e){return e!=null&&e.some(nW)}});var M_=G(F_=>{"use strict";Object.defineProperty(F_,"__esModule",{value:!0});F_.valueFromASTUntyped=P_;var iW=j_(jt()),aW=j_(_n()),oW=j_(Vd()),Eo=Jt();function j_(e){return e&&e.__esModule?e:{default:e}}function P_(e,t){switch(e.kind){case Eo.Kind.NULL:return null;case Eo.Kind.INT:return parseInt(e.value,10);case Eo.Kind.FLOAT:return parseFloat(e.value);case Eo.Kind.STRING:case Eo.Kind.ENUM:case Eo.Kind.BOOLEAN:return e.value;case Eo.Kind.LIST:return e.values.map(function(r){return P_(r,t)});case Eo.Kind.OBJECT:return(0,oW.default)(e.fields,function(r){return r.name.value},function(r){return P_(r.value,t)});case Eo.Kind.VARIABLE:return t==null?void 0:t[e.name.value]}(0,aW.default)(0,"Unexpected value node: "+(0,iW.default)(e))}});var bt=G(Be=>{"use strict";Object.defineProperty(Be,"__esModule",{value:!0});Be.isType=q_;Be.assertType=X1;Be.isScalarType=ms;Be.assertScalarType=pW;Be.isObjectType=oc;Be.assertObjectType=hW;Be.isInterfaceType=ys;Be.assertInterfaceType=vW;Be.isUnionType=bs;Be.assertUnionType=gW;Be.isEnumType=Ts;Be.assertEnumType=mW;Be.isInputObjectType=Qd;Be.assertInputObjectType=yW;Be.isListType=Lg;Be.assertListType=bW;Be.isNonNullType=_u;Be.assertNonNullType=TW;Be.isInputType=V_;Be.assertInputType=_W;Be.isOutputType=U_;Be.assertOutputType=EW;Be.isLeafType=Z1;Be.assertLeafType=SW;Be.isCompositeType=$1;Be.assertCompositeType=kW;Be.isAbstractType=eI;Be.assertAbstractType=OW;Be.GraphQLList=Eu;Be.GraphQLNonNull=Su;Be.isWrappingType=Bd;Be.assertWrappingType=wW;Be.isNullableType=tI;Be.assertNullableType=rI;Be.getNullableType=NW;Be.isNamedType=nI;Be.assertNamedType=DW;Be.getNamedType=xW;Be.argsToArgsConfig=uI;Be.isRequiredArgument=CW;Be.isRequiredInputField=RW;Be.GraphQLInputObjectType=Be.GraphQLEnumType=Be.GraphQLUnionType=Be.GraphQLInterfaceType=Be.GraphQLObjectType=Be.GraphQLScalarType=void 0;var H1=Di(ic()),yu=qa(),ur=Di(jt()),uW=Di(vu()),Cg=Di(w_()),Ua=Di(Ng()),fr=Di(Hi()),z1=Di(Vd()),bu=Di(jd()),sW=Di(gu()),lW=Di(Ma()),W1=Di(Q1()),Tu=Di(dg()),cW=Di(mu()),Gd=Je(),fW=Jt(),Y1=hi(),dW=M_();function Di(e){return e&&e.__esModule?e:{default:e}}function J1(e,t){for(var r=0;r0?e:void 0}var G_=function(){function e(r){var n,i,o,s=(n=r.parseValue)!==null&&n!==void 0?n:W1.default;this.name=r.name,this.description=r.description,this.specifiedByUrl=r.specifiedByUrl,this.serialize=(i=r.serialize)!==null&&i!==void 0?i:W1.default,this.parseValue=s,this.parseLiteral=(o=r.parseLiteral)!==null&&o!==void 0?o:function(l,d){return s((0,dW.valueFromASTUntyped)(l,d))},this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),typeof r.name=="string"||(0,fr.default)(0,"Must provide name."),r.specifiedByUrl==null||typeof r.specifiedByUrl=="string"||(0,fr.default)(0,"".concat(this.name,' must provide "specifiedByUrl" as a string, ')+"but got: ".concat((0,ur.default)(r.specifiedByUrl),".")),r.serialize==null||typeof r.serialize=="function"||(0,fr.default)(0,"".concat(this.name,' must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.')),r.parseLiteral&&(typeof r.parseValue=="function"&&typeof r.parseLiteral=="function"||(0,fr.default)(0,"".concat(this.name,' must provide both "parseValue" and "parseLiteral" functions.')))}var t=e.prototype;return t.toConfig=function(){var n;return{name:this.name,description:this.description,specifiedByUrl:this.specifiedByUrl,serialize:this.serialize,parseValue:this.parseValue,parseLiteral:this.parseLiteral,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLScalarType"}}]),e}();Be.GraphQLScalarType=G_;(0,Tu.default)(G_);var Q_=function(){function e(r){this.name=r.name,this.description=r.description,this.isTypeOf=r.isTypeOf,this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),this._fields=aI.bind(void 0,r),this._interfaces=iI.bind(void 0,r),typeof r.name=="string"||(0,fr.default)(0,"Must provide name."),r.isTypeOf==null||typeof r.isTypeOf=="function"||(0,fr.default)(0,"".concat(this.name,' must provide "isTypeOf" as a function, ')+"but got: ".concat((0,ur.default)(r.isTypeOf),"."))}var t=e.prototype;return t.getFields=function(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields},t.getInterfaces=function(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces},t.toConfig=function(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:oI(this.getFields()),isTypeOf:this.isTypeOf,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes||[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLObjectType"}}]),e}();Be.GraphQLObjectType=Q_;(0,Tu.default)(Q_);function iI(e){var t,r=(t=Ig(e.interfaces))!==null&&t!==void 0?t:[];return Array.isArray(r)||(0,fr.default)(0,"".concat(e.name," interfaces must be an Array or a function which returns an Array.")),r}function aI(e){var t=Ig(e.fields);return sc(t)||(0,fr.default)(0,"".concat(e.name," fields must be an object with field names as keys or a function which returns such an object.")),(0,Cg.default)(t,function(r,n){var i;sc(r)||(0,fr.default)(0,"".concat(e.name,".").concat(n," field config must be an object.")),!("isDeprecated"in r)||(0,fr.default)(0,"".concat(e.name,".").concat(n,' should provide "deprecationReason" instead of "isDeprecated".')),r.resolve==null||typeof r.resolve=="function"||(0,fr.default)(0,"".concat(e.name,".").concat(n," field resolver must be a function if ")+"provided, but got: ".concat((0,ur.default)(r.resolve),"."));var o=(i=r.args)!==null&&i!==void 0?i:{};sc(o)||(0,fr.default)(0,"".concat(e.name,".").concat(n," args must be an object with argument names as keys."));var s=(0,H1.default)(o).map(function(l){var d=l[0],h=l[1];return{name:d,description:h.description,type:h.type,defaultValue:h.defaultValue,deprecationReason:h.deprecationReason,extensions:h.extensions&&(0,Ua.default)(h.extensions),astNode:h.astNode}});return{name:n,description:r.description,type:r.type,args:s,resolve:r.resolve,subscribe:r.subscribe,isDeprecated:r.deprecationReason!=null,deprecationReason:r.deprecationReason,extensions:r.extensions&&(0,Ua.default)(r.extensions),astNode:r.astNode}})}function sc(e){return(0,lW.default)(e)&&!Array.isArray(e)}function oI(e){return(0,Cg.default)(e,function(t){return{description:t.description,type:t.type,args:uI(t.args),resolve:t.resolve,subscribe:t.subscribe,deprecationReason:t.deprecationReason,extensions:t.extensions,astNode:t.astNode}})}function uI(e){return(0,z1.default)(e,function(t){return t.name},function(t){return{description:t.description,type:t.type,defaultValue:t.defaultValue,deprecationReason:t.deprecationReason,extensions:t.extensions,astNode:t.astNode}})}function CW(e){return _u(e.type)&&e.defaultValue===void 0}var B_=function(){function e(r){this.name=r.name,this.description=r.description,this.resolveType=r.resolveType,this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),this._fields=aI.bind(void 0,r),this._interfaces=iI.bind(void 0,r),typeof r.name=="string"||(0,fr.default)(0,"Must provide name."),r.resolveType==null||typeof r.resolveType=="function"||(0,fr.default)(0,"".concat(this.name,' must provide "resolveType" as a function, ')+"but got: ".concat((0,ur.default)(r.resolveType),"."))}var t=e.prototype;return t.getFields=function(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields},t.getInterfaces=function(){return typeof this._interfaces=="function"&&(this._interfaces=this._interfaces()),this._interfaces},t.toConfig=function(){var n;return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:oI(this.getFields()),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLInterfaceType"}}]),e}();Be.GraphQLInterfaceType=B_;(0,Tu.default)(B_);var K_=function(){function e(r){this.name=r.name,this.description=r.description,this.resolveType=r.resolveType,this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),this._types=LW.bind(void 0,r),typeof r.name=="string"||(0,fr.default)(0,"Must provide name."),r.resolveType==null||typeof r.resolveType=="function"||(0,fr.default)(0,"".concat(this.name,' must provide "resolveType" as a function, ')+"but got: ".concat((0,ur.default)(r.resolveType),"."))}var t=e.prototype;return t.getTypes=function(){return typeof this._types=="function"&&(this._types=this._types()),this._types},t.toConfig=function(){var n;return{name:this.name,description:this.description,types:this.getTypes(),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLUnionType"}}]),e}();Be.GraphQLUnionType=K_;(0,Tu.default)(K_);function LW(e){var t=Ig(e.types);return Array.isArray(t)||(0,fr.default)(0,"Must provide Array of types or a function which returns such an array for Union ".concat(e.name,".")),t}var H_=function(){function e(r){this.name=r.name,this.description=r.description,this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),this._values=IW(this.name,r.values),this._valueLookup=new Map(this._values.map(function(n){return[n.value,n]})),this._nameLookup=(0,uW.default)(this._values,function(n){return n.name}),typeof r.name=="string"||(0,fr.default)(0,"Must provide name.")}var t=e.prototype;return t.getValues=function(){return this._values},t.getValue=function(n){return this._nameLookup[n]},t.serialize=function(n){var i=this._valueLookup.get(n);if(i===void 0)throw new Gd.GraphQLError('Enum "'.concat(this.name,'" cannot represent value: ').concat((0,ur.default)(n)));return i.name},t.parseValue=function(n){if(typeof n!="string"){var i=(0,ur.default)(n);throw new Gd.GraphQLError('Enum "'.concat(this.name,'" cannot represent non-string value: ').concat(i,".")+Ag(this,i))}var o=this.getValue(n);if(o==null)throw new Gd.GraphQLError('Value "'.concat(n,'" does not exist in "').concat(this.name,'" enum.')+Ag(this,n));return o.value},t.parseLiteral=function(n,i){if(n.kind!==fW.Kind.ENUM){var o=(0,Y1.print)(n);throw new Gd.GraphQLError('Enum "'.concat(this.name,'" cannot represent non-enum value: ').concat(o,".")+Ag(this,o),n)}var s=this.getValue(n.value);if(s==null){var l=(0,Y1.print)(n);throw new Gd.GraphQLError('Value "'.concat(l,'" does not exist in "').concat(this.name,'" enum.')+Ag(this,l),n)}return s.value},t.toConfig=function(){var n,i=(0,z1.default)(this.getValues(),function(o){return o.name},function(o){return{description:o.description,value:o.value,deprecationReason:o.deprecationReason,extensions:o.extensions,astNode:o.astNode}});return{name:this.name,description:this.description,values:i,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLEnumType"}}]),e}();Be.GraphQLEnumType=H_;(0,Tu.default)(H_);function Ag(e,t){var r=e.getValues().map(function(i){return i.name}),n=(0,cW.default)(t,r);return(0,sW.default)("the enum value",n)}function IW(e,t){return sc(t)||(0,fr.default)(0,"".concat(e," values must be an object with value names as keys.")),(0,H1.default)(t).map(function(r){var n=r[0],i=r[1];return sc(i)||(0,fr.default)(0,"".concat(e,".").concat(n,' must refer to an object with a "value" key ')+"representing an internal value but got: ".concat((0,ur.default)(i),".")),!("isDeprecated"in i)||(0,fr.default)(0,"".concat(e,".").concat(n,' should provide "deprecationReason" instead of "isDeprecated".')),{name:n,description:i.description,value:i.value!==void 0?i.value:n,isDeprecated:i.deprecationReason!=null,deprecationReason:i.deprecationReason,extensions:i.extensions&&(0,Ua.default)(i.extensions),astNode:i.astNode}})}var z_=function(){function e(r){this.name=r.name,this.description=r.description,this.extensions=r.extensions&&(0,Ua.default)(r.extensions),this.astNode=r.astNode,this.extensionASTNodes=uc(r.extensionASTNodes),this._fields=AW.bind(void 0,r),typeof r.name=="string"||(0,fr.default)(0,"Must provide name.")}var t=e.prototype;return t.getFields=function(){return typeof this._fields=="function"&&(this._fields=this._fields()),this._fields},t.toConfig=function(){var n,i=(0,Cg.default)(this.getFields(),function(o){return{description:o.description,type:o.type,defaultValue:o.defaultValue,extensions:o.extensions,astNode:o.astNode}});return{name:this.name,description:this.description,fields:i,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:(n=this.extensionASTNodes)!==null&&n!==void 0?n:[]}},t.toString=function(){return this.name},t.toJSON=function(){return this.toString()},ac(e,[{key:yu.SYMBOL_TO_STRING_TAG,get:function(){return"GraphQLInputObjectType"}}]),e}();Be.GraphQLInputObjectType=z_;(0,Tu.default)(z_);function AW(e){var t=Ig(e.fields);return sc(t)||(0,fr.default)(0,"".concat(e.name," fields must be an object with field names as keys or a function which returns such an object.")),(0,Cg.default)(t,function(r,n){return!("resolve"in r)||(0,fr.default)(0,"".concat(e.name,".").concat(n," field has a resolve property, but Input Types cannot define resolvers.")),{name:n,description:r.description,type:r.type,defaultValue:r.defaultValue,deprecationReason:r.deprecationReason,extensions:r.extensions&&(0,Ua.default)(r.extensions),astNode:r.astNode}})}function RW(e){return _u(e.type)&&e.defaultValue===void 0}});var Hd=G(Kd=>{"use strict";Object.defineProperty(Kd,"__esModule",{value:!0});Kd.isEqualType=W_;Kd.isTypeSubTypeOf=Rg;Kd.doTypesOverlap=jW;var Mn=bt();function W_(e,t){return e===t?!0:(0,Mn.isNonNullType)(e)&&(0,Mn.isNonNullType)(t)||(0,Mn.isListType)(e)&&(0,Mn.isListType)(t)?W_(e.ofType,t.ofType):!1}function Rg(e,t,r){return t===r?!0:(0,Mn.isNonNullType)(r)?(0,Mn.isNonNullType)(t)?Rg(e,t.ofType,r.ofType):!1:(0,Mn.isNonNullType)(t)?Rg(e,t.ofType,r):(0,Mn.isListType)(r)?(0,Mn.isListType)(t)?Rg(e,t.ofType,r.ofType):!1:(0,Mn.isListType)(t)?!1:(0,Mn.isAbstractType)(r)&&((0,Mn.isInterfaceType)(t)||(0,Mn.isObjectType)(t))&&e.isSubType(r,t)}function jW(e,t,r){return t===r?!0:(0,Mn.isAbstractType)(t)?(0,Mn.isAbstractType)(r)?e.getPossibleTypes(t).some(function(n){return e.isSubType(r,n)}):e.isSubType(t,r):(0,Mn.isAbstractType)(r)?e.isSubType(r,t):!1}});var Y_=G(jg=>{"use strict";Object.defineProperty(jg,"__esModule",{value:!0});jg.default=void 0;var PW=qa(),FW=Array.from||function(e,t,r){if(e==null)throw new TypeError("Array.from requires an array-like object - not null or undefined");var n=e[PW.SYMBOL_ITERATOR];if(typeof n=="function"){for(var i=n.call(e),o=[],s,l=0;!(s=i.next()).done;++l)if(o.push(t.call(r,s.value,l)),l>9999999)throw new TypeError("Near-infinite iteration.");return o}var d=e.length;if(typeof d=="number"&&d>=0&&d%1==0){for(var h=[],v=0;v{"use strict";Object.defineProperty(Pg,"__esModule",{value:!0});Pg.default=void 0;var qW=Number.isFinite||function(e){return typeof e=="number"&&isFinite(e)},VW=qW;Pg.default=VW});var Mg=G(X_=>{"use strict";Object.defineProperty(X_,"__esModule",{value:!0});X_.default=GW;var UW=qa();function Fg(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fg=function(r){return typeof r}:Fg=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Fg(e)}function GW(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(v){return v};if(e==null||Fg(e)!=="object")return null;if(Array.isArray(e))return e.map(t);var r=e[UW.SYMBOL_ITERATOR];if(typeof r=="function"){for(var n=r.call(e),i=[],o,s=0;!(o=n.next()).done;++s)i.push(t(o.value,s));return i}var l=e.length;if(typeof l=="number"&&l>=0&&l%1==0){for(var d=[],h=0;h{"use strict";Object.defineProperty(qg,"__esModule",{value:!0});qg.default=void 0;var QW=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e},BW=QW;qg.default=BW});var Ga=G(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.isSpecifiedScalarType=t4;ti.specifiedScalarTypes=ti.GraphQLID=ti.GraphQLBoolean=ti.GraphQLString=ti.GraphQLFloat=ti.GraphQLInt=void 0;var Vg=Gg(J_()),Ug=Gg(sI()),ba=Gg(jt()),lI=Gg(Ma()),_s=Jt(),zd=hi(),cn=Je(),Wd=bt();function Gg(e){return e&&e.__esModule?e:{default:e}}var Z_=2147483647,$_=-2147483648;function KW(e){var t=Yd(e);if(typeof t=="boolean")return t?1:0;var r=t;if(typeof t=="string"&&t!==""&&(r=Number(t)),!(0,Ug.default)(r))throw new cn.GraphQLError("Int cannot represent non-integer value: ".concat((0,ba.default)(t)));if(r>Z_||r<$_)throw new cn.GraphQLError("Int cannot represent non 32-bit signed integer value: "+(0,ba.default)(t));return r}function HW(e){if(!(0,Ug.default)(e))throw new cn.GraphQLError("Int cannot represent non-integer value: ".concat((0,ba.default)(e)));if(e>Z_||e<$_)throw new cn.GraphQLError("Int cannot represent non 32-bit signed integer value: ".concat(e));return e}var cI=new Wd.GraphQLScalarType({name:"Int",description:"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.",serialize:KW,parseValue:HW,parseLiteral:function(t){if(t.kind!==_s.Kind.INT)throw new cn.GraphQLError("Int cannot represent non-integer value: ".concat((0,zd.print)(t)),t);var r=parseInt(t.value,10);if(r>Z_||r<$_)throw new cn.GraphQLError("Int cannot represent non 32-bit signed integer value: ".concat(t.value),t);return r}});ti.GraphQLInt=cI;function zW(e){var t=Yd(e);if(typeof t=="boolean")return t?1:0;var r=t;if(typeof t=="string"&&t!==""&&(r=Number(t)),!(0,Vg.default)(r))throw new cn.GraphQLError("Float cannot represent non numeric value: ".concat((0,ba.default)(t)));return r}function WW(e){if(!(0,Vg.default)(e))throw new cn.GraphQLError("Float cannot represent non numeric value: ".concat((0,ba.default)(e)));return e}var fI=new Wd.GraphQLScalarType({name:"Float",description:"The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).",serialize:zW,parseValue:WW,parseLiteral:function(t){if(t.kind!==_s.Kind.FLOAT&&t.kind!==_s.Kind.INT)throw new cn.GraphQLError("Float cannot represent non numeric value: ".concat((0,zd.print)(t)),t);return parseFloat(t.value)}});ti.GraphQLFloat=fI;function Yd(e){if((0,lI.default)(e)){if(typeof e.valueOf=="function"){var t=e.valueOf();if(!(0,lI.default)(t))return t}if(typeof e.toJSON=="function")return e.toJSON()}return e}function YW(e){var t=Yd(e);if(typeof t=="string")return t;if(typeof t=="boolean")return t?"true":"false";if((0,Vg.default)(t))return t.toString();throw new cn.GraphQLError("String cannot represent value: ".concat((0,ba.default)(e)))}function JW(e){if(typeof e!="string")throw new cn.GraphQLError("String cannot represent a non string value: ".concat((0,ba.default)(e)));return e}var dI=new Wd.GraphQLScalarType({name:"String",description:"The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.",serialize:YW,parseValue:JW,parseLiteral:function(t){if(t.kind!==_s.Kind.STRING)throw new cn.GraphQLError("String cannot represent a non string value: ".concat((0,zd.print)(t)),t);return t.value}});ti.GraphQLString=dI;function XW(e){var t=Yd(e);if(typeof t=="boolean")return t;if((0,Vg.default)(t))return t!==0;throw new cn.GraphQLError("Boolean cannot represent a non boolean value: ".concat((0,ba.default)(t)))}function ZW(e){if(typeof e!="boolean")throw new cn.GraphQLError("Boolean cannot represent a non boolean value: ".concat((0,ba.default)(e)));return e}var pI=new Wd.GraphQLScalarType({name:"Boolean",description:"The `Boolean` scalar type represents `true` or `false`.",serialize:XW,parseValue:ZW,parseLiteral:function(t){if(t.kind!==_s.Kind.BOOLEAN)throw new cn.GraphQLError("Boolean cannot represent a non boolean value: ".concat((0,zd.print)(t)),t);return t.value}});ti.GraphQLBoolean=pI;function $W(e){var t=Yd(e);if(typeof t=="string")return t;if((0,Ug.default)(t))return String(t);throw new cn.GraphQLError("ID cannot represent value: ".concat((0,ba.default)(e)))}function e4(e){if(typeof e=="string")return e;if((0,Ug.default)(e))return e.toString();throw new cn.GraphQLError("ID cannot represent value: ".concat((0,ba.default)(e)))}var hI=new Wd.GraphQLScalarType({name:"ID",description:'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID.',serialize:$W,parseValue:e4,parseLiteral:function(t){if(t.kind!==_s.Kind.STRING&&t.kind!==_s.Kind.INT)throw new cn.GraphQLError("ID cannot represent a non-string and non-integer value: "+(0,zd.print)(t),t);return t.value}});ti.GraphQLID=hI;var vI=Object.freeze([dI,cI,fI,pI,hI]);ti.specifiedScalarTypes=vI;function t4(e){return vI.some(function(t){var r=t.name;return e.name===r})}});var Zd=G(eE=>{"use strict";Object.defineProperty(eE,"__esModule",{value:!0});eE.astFromValue=Xd;var r4=lc(J_()),n4=lc(Ni()),gI=lc(jt()),i4=lc(_n()),a4=lc(Ma()),o4=lc(Mg()),zi=Jt(),u4=Ga(),Jd=bt();function lc(e){return e&&e.__esModule?e:{default:e}}function Xd(e,t){if((0,Jd.isNonNullType)(t)){var r=Xd(e,t.ofType);return(r==null?void 0:r.kind)===zi.Kind.NULL?null:r}if(e===null)return{kind:zi.Kind.NULL};if(e===void 0)return null;if((0,Jd.isListType)(t)){var n=t.ofType,i=(0,o4.default)(e);if(i!=null){for(var o=[],s=0;s{"use strict";Object.defineProperty(Gt,"__esModule",{value:!0});Gt.isIntrospectionType=v4;Gt.introspectionTypes=Gt.TypeNameMetaFieldDef=Gt.TypeMetaFieldDef=Gt.SchemaMetaFieldDef=Gt.__TypeKind=Gt.TypeKind=Gt.__EnumValue=Gt.__InputValue=Gt.__Field=Gt.__Type=Gt.__DirectiveLocation=Gt.__Directive=Gt.__Schema=void 0;var tE=rE(Ni()),s4=rE(jt()),l4=rE(_n()),c4=hi(),Xr=$l(),f4=Zd(),$t=Ga(),Pe=bt();function rE(e){return e&&e.__esModule?e:{default:e}}var nE=new Pe.GraphQLObjectType({name:"__Schema",description:"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.",fields:function(){return{description:{type:$t.GraphQLString,resolve:function(r){return r.description}},types:{description:"A list of all types supported by this server.",type:new Pe.GraphQLNonNull(new Pe.GraphQLList(new Pe.GraphQLNonNull(Wi))),resolve:function(r){return(0,tE.default)(r.getTypeMap())}},queryType:{description:"The type that query operations will be rooted at.",type:new Pe.GraphQLNonNull(Wi),resolve:function(r){return r.getQueryType()}},mutationType:{description:"If this server supports mutation, the type that mutation operations will be rooted at.",type:Wi,resolve:function(r){return r.getMutationType()}},subscriptionType:{description:"If this server support subscription, the type that subscription operations will be rooted at.",type:Wi,resolve:function(r){return r.getSubscriptionType()}},directives:{description:"A list of all directives supported by this server.",type:new Pe.GraphQLNonNull(new Pe.GraphQLList(new Pe.GraphQLNonNull(iE))),resolve:function(r){return r.getDirectives()}}}}});Gt.__Schema=nE;var iE=new Pe.GraphQLObjectType({name:"__Directive",description:`A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document. -In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.`,fields:function(){return{name:{type:new xe.GraphQLNonNull(Qt.GraphQLString),resolve:function(r){return r.name}},description:{type:Qt.GraphQLString,resolve:function(r){return r.description}},isRepeatable:{type:new xe.GraphQLNonNull(Qt.GraphQLBoolean),resolve:function(r){return r.isRepeatable}},locations:{type:new xe.GraphQLNonNull(new xe.GraphQLList(new xe.GraphQLNonNull(SE))),resolve:function(r){return r.locations}},args:{type:new xe.GraphQLNonNull(new xe.GraphQLList(new xe.GraphQLNonNull(Rd))),resolve:function(r){return r.args}}}}});Rt.__Directive=_E;var SE=new xe.GraphQLEnumType({name:"__DirectiveLocation",description:"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.",values:{QUERY:{value:Mr.DirectiveLocation.QUERY,description:"Location adjacent to a query operation."},MUTATION:{value:Mr.DirectiveLocation.MUTATION,description:"Location adjacent to a mutation operation."},SUBSCRIPTION:{value:Mr.DirectiveLocation.SUBSCRIPTION,description:"Location adjacent to a subscription operation."},FIELD:{value:Mr.DirectiveLocation.FIELD,description:"Location adjacent to a field."},FRAGMENT_DEFINITION:{value:Mr.DirectiveLocation.FRAGMENT_DEFINITION,description:"Location adjacent to a fragment definition."},FRAGMENT_SPREAD:{value:Mr.DirectiveLocation.FRAGMENT_SPREAD,description:"Location adjacent to a fragment spread."},INLINE_FRAGMENT:{value:Mr.DirectiveLocation.INLINE_FRAGMENT,description:"Location adjacent to an inline fragment."},VARIABLE_DEFINITION:{value:Mr.DirectiveLocation.VARIABLE_DEFINITION,description:"Location adjacent to a variable definition."},SCHEMA:{value:Mr.DirectiveLocation.SCHEMA,description:"Location adjacent to a schema definition."},SCALAR:{value:Mr.DirectiveLocation.SCALAR,description:"Location adjacent to a scalar definition."},OBJECT:{value:Mr.DirectiveLocation.OBJECT,description:"Location adjacent to an object type definition."},FIELD_DEFINITION:{value:Mr.DirectiveLocation.FIELD_DEFINITION,description:"Location adjacent to a field definition."},ARGUMENT_DEFINITION:{value:Mr.DirectiveLocation.ARGUMENT_DEFINITION,description:"Location adjacent to an argument definition."},INTERFACE:{value:Mr.DirectiveLocation.INTERFACE,description:"Location adjacent to an interface definition."},UNION:{value:Mr.DirectiveLocation.UNION,description:"Location adjacent to a union definition."},ENUM:{value:Mr.DirectiveLocation.ENUM,description:"Location adjacent to an enum definition."},ENUM_VALUE:{value:Mr.DirectiveLocation.ENUM_VALUE,description:"Location adjacent to an enum value definition."},INPUT_OBJECT:{value:Mr.DirectiveLocation.INPUT_OBJECT,description:"Location adjacent to an input object type definition."},INPUT_FIELD_DEFINITION:{value:Mr.DirectiveLocation.INPUT_FIELD_DEFINITION,description:"Location adjacent to an input object field definition."}}});Rt.__DirectiveLocation=SE;var Ni=new xe.GraphQLObjectType({name:"__Type",description:"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByUrl`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.",fields:function(){return{kind:{type:new xe.GraphQLNonNull(OE),resolve:function(r){if((0,xe.isScalarType)(r))return sn.SCALAR;if((0,xe.isObjectType)(r))return sn.OBJECT;if((0,xe.isInterfaceType)(r))return sn.INTERFACE;if((0,xe.isUnionType)(r))return sn.UNION;if((0,xe.isEnumType)(r))return sn.ENUM;if((0,xe.isInputObjectType)(r))return sn.INPUT_OBJECT;if((0,xe.isListType)(r))return sn.LIST;if((0,xe.isNonNullType)(r))return sn.NON_NULL;(0,q9.default)(0,'Unexpected type: "'.concat((0,M9.default)(r),'".'))}},name:{type:Qt.GraphQLString,resolve:function(r){return r.name!==void 0?r.name:void 0}},description:{type:Qt.GraphQLString,resolve:function(r){return r.description!==void 0?r.description:void 0}},specifiedByUrl:{type:Qt.GraphQLString,resolve:function(r){return r.specifiedByUrl!==void 0?r.specifiedByUrl:void 0}},fields:{type:new xe.GraphQLList(new xe.GraphQLNonNull(DE)),args:{includeDeprecated:{type:Qt.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var a=n.includeDeprecated;if((0,xe.isObjectType)(r)||(0,xe.isInterfaceType)(r)){var o=(0,bE.default)(r.getFields());return a?o:o.filter(function(s){return s.deprecationReason==null})}}},interfaces:{type:new xe.GraphQLList(new xe.GraphQLNonNull(Ni)),resolve:function(r){if((0,xe.isObjectType)(r)||(0,xe.isInterfaceType)(r))return r.getInterfaces()}},possibleTypes:{type:new xe.GraphQLList(new xe.GraphQLNonNull(Ni)),resolve:function(r,n,a,o){var s=o.schema;if((0,xe.isAbstractType)(r))return s.getPossibleTypes(r)}},enumValues:{type:new xe.GraphQLList(new xe.GraphQLNonNull(kE)),args:{includeDeprecated:{type:Qt.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var a=n.includeDeprecated;if((0,xe.isEnumType)(r)){var o=r.getValues();return a?o:o.filter(function(s){return s.deprecationReason==null})}}},inputFields:{type:new xe.GraphQLList(new xe.GraphQLNonNull(Rd)),args:{includeDeprecated:{type:Qt.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var a=n.includeDeprecated;if((0,xe.isInputObjectType)(r)){var o=(0,bE.default)(r.getFields());return a?o:o.filter(function(s){return s.deprecationReason==null})}}},ofType:{type:Ni,resolve:function(r){return r.ofType!==void 0?r.ofType:void 0}}}}});Rt.__Type=Ni;var DE=new xe.GraphQLObjectType({name:"__Field",description:"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.",fields:function(){return{name:{type:new xe.GraphQLNonNull(Qt.GraphQLString),resolve:function(r){return r.name}},description:{type:Qt.GraphQLString,resolve:function(r){return r.description}},args:{type:new xe.GraphQLNonNull(new xe.GraphQLList(new xe.GraphQLNonNull(Rd))),args:{includeDeprecated:{type:Qt.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var a=n.includeDeprecated;return a?r.args:r.args.filter(function(o){return o.deprecationReason==null})}},type:{type:new xe.GraphQLNonNull(Ni),resolve:function(r){return r.type}},isDeprecated:{type:new xe.GraphQLNonNull(Qt.GraphQLBoolean),resolve:function(r){return r.deprecationReason!=null}},deprecationReason:{type:Qt.GraphQLString,resolve:function(r){return r.deprecationReason}}}}});Rt.__Field=DE;var Rd=new xe.GraphQLObjectType({name:"__InputValue",description:"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.",fields:function(){return{name:{type:new xe.GraphQLNonNull(Qt.GraphQLString),resolve:function(r){return r.name}},description:{type:Qt.GraphQLString,resolve:function(r){return r.description}},type:{type:new xe.GraphQLNonNull(Ni),resolve:function(r){return r.type}},defaultValue:{type:Qt.GraphQLString,description:"A GraphQL-formatted string representing the default value for this input value.",resolve:function(r){var n=r.type,a=r.defaultValue,o=(0,V9.astFromValue)(a,n);return o?(0,B9.print)(o):null}},isDeprecated:{type:new xe.GraphQLNonNull(Qt.GraphQLBoolean),resolve:function(r){return r.deprecationReason!=null}},deprecationReason:{type:Qt.GraphQLString,resolve:function(r){return r.deprecationReason}}}}});Rt.__InputValue=Rd;var kE=new xe.GraphQLObjectType({name:"__EnumValue",description:"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.",fields:function(){return{name:{type:new xe.GraphQLNonNull(Qt.GraphQLString),resolve:function(r){return r.name}},description:{type:Qt.GraphQLString,resolve:function(r){return r.description}},isDeprecated:{type:new xe.GraphQLNonNull(Qt.GraphQLBoolean),resolve:function(r){return r.deprecationReason!=null}},deprecationReason:{type:Qt.GraphQLString,resolve:function(r){return r.deprecationReason}}}}});Rt.__EnumValue=kE;var sn=Object.freeze({SCALAR:"SCALAR",OBJECT:"OBJECT",INTERFACE:"INTERFACE",UNION:"UNION",ENUM:"ENUM",INPUT_OBJECT:"INPUT_OBJECT",LIST:"LIST",NON_NULL:"NON_NULL"});Rt.TypeKind=sn;var OE=new xe.GraphQLEnumType({name:"__TypeKind",description:"An enum describing what kind of type a given `__Type` is.",values:{SCALAR:{value:sn.SCALAR,description:"Indicates this type is a scalar."},OBJECT:{value:sn.OBJECT,description:"Indicates this type is an object. `fields` and `interfaces` are valid fields."},INTERFACE:{value:sn.INTERFACE,description:"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields."},UNION:{value:sn.UNION,description:"Indicates this type is a union. `possibleTypes` is a valid field."},ENUM:{value:sn.ENUM,description:"Indicates this type is an enum. `enumValues` is a valid field."},INPUT_OBJECT:{value:sn.INPUT_OBJECT,description:"Indicates this type is an input object. `inputFields` is a valid field."},LIST:{value:sn.LIST,description:"Indicates this type is a list. `ofType` is a valid field."},NON_NULL:{value:sn.NON_NULL,description:"Indicates this type is a non-null. `ofType` is a valid field."}}});Rt.__TypeKind=OE;var U9={name:"__schema",type:new xe.GraphQLNonNull(EE),description:"Access the current type schema of this server.",args:[],resolve:function(t,r,n,a){var o=a.schema;return o},isDeprecated:!1,deprecationReason:void 0,extensions:void 0,astNode:void 0};Rt.SchemaMetaFieldDef=U9;var G9={name:"__type",type:Ni,description:"Request the type information of a single type.",args:[{name:"name",description:void 0,type:new xe.GraphQLNonNull(Qt.GraphQLString),defaultValue:void 0,deprecationReason:void 0,extensions:void 0,astNode:void 0}],resolve:function(t,r,n,a){var o=r.name,s=a.schema;return s.getType(o)},isDeprecated:!1,deprecationReason:void 0,extensions:void 0,astNode:void 0};Rt.TypeMetaFieldDef=G9;var Q9={name:"__typename",type:new xe.GraphQLNonNull(Qt.GraphQLString),description:"The name of the current Object type at runtime.",args:[],resolve:function(t,r,n,a){var o=a.parentType;return o.name},isDeprecated:!1,deprecationReason:void 0,extensions:void 0,astNode:void 0};Rt.TypeNameMetaFieldDef=Q9;var mN=Object.freeze([EE,_E,SE,Ni,DE,Rd,kE,OE]);Rt.introspectionTypes=mN;function K9(e){return mN.some(function(t){var r=t.name;return e.name===r})}});var Jn=U(qr=>{"use strict";Object.defineProperty(qr,"__esModule",{value:!0});qr.isDirective=TN;qr.assertDirective=$9;qr.isSpecifiedDirective=e4;qr.specifiedDirectives=qr.GraphQLSpecifiedByDirective=qr.GraphQLDeprecatedDirective=qr.DEFAULT_DEPRECATION_REASON=qr.GraphQLSkipDirective=qr.GraphQLIncludeDirective=qr.GraphQLDirective=void 0;var H9=as(Bl()),z9=Da(),W9=as(Ot()),yN=as(sg()),CE=as(wi()),Y9=as(gd()),J9=as(Sa()),X9=as(zv()),na=Fl(),Dg=Ca(),kg=lt();function as(e){return e&&e.__esModule?e:{default:e}}function bN(e,t){for(var r=0;r{"use strict";Object.defineProperty(Hl,"__esModule",{value:!0});Hl.isSchema=AN;Hl.assertSchema=l4;Hl.GraphQLSchema=void 0;var t4=cu(ql()),r4=cu(pE()),wE=cu(oi()),n4=Da(),AE=cu(Ot()),i4=cu(sg()),Og=cu(wi()),a4=cu(gd()),o4=cu(Sa()),u4=Yn(),CN=Jn(),ia=lt();function cu(e){return e&&e.__esModule?e:{default:e}}function wN(e,t){for(var r=0;r{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});Cg.validateSchema=RN;Cg.assertValidSchema=v4;var LN=NE(ql()),Fd=NE(oi()),Tn=NE(Ot()),c4=Be(),f4=Td(),d4=VT(),xN=Cd(),p4=us(),h4=Yn(),IN=Jn(),yr=lt();function NE(e){return e&&e.__esModule?e:{default:e}}function RN(e){if((0,p4.assertSchema)(e),e.__validationErrors)return e.__validationErrors;var t=new g4(e);m4(t),y4(t),b4(t);var r=t.getErrors();return e.__validationErrors=r,r}function v4(e){var t=RN(e);if(t.length!==0)throw new Error(t.map(function(r){return r.message}).join(` +In some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.`,fields:function(){return{name:{type:new Pe.GraphQLNonNull($t.GraphQLString),resolve:function(r){return r.name}},description:{type:$t.GraphQLString,resolve:function(r){return r.description}},isRepeatable:{type:new Pe.GraphQLNonNull($t.GraphQLBoolean),resolve:function(r){return r.isRepeatable}},locations:{type:new Pe.GraphQLNonNull(new Pe.GraphQLList(new Pe.GraphQLNonNull(aE))),resolve:function(r){return r.locations}},args:{type:new Pe.GraphQLNonNull(new Pe.GraphQLList(new Pe.GraphQLNonNull($d))),resolve:function(r){return r.args}}}}});Gt.__Directive=iE;var aE=new Pe.GraphQLEnumType({name:"__DirectiveLocation",description:"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.",values:{QUERY:{value:Xr.DirectiveLocation.QUERY,description:"Location adjacent to a query operation."},MUTATION:{value:Xr.DirectiveLocation.MUTATION,description:"Location adjacent to a mutation operation."},SUBSCRIPTION:{value:Xr.DirectiveLocation.SUBSCRIPTION,description:"Location adjacent to a subscription operation."},FIELD:{value:Xr.DirectiveLocation.FIELD,description:"Location adjacent to a field."},FRAGMENT_DEFINITION:{value:Xr.DirectiveLocation.FRAGMENT_DEFINITION,description:"Location adjacent to a fragment definition."},FRAGMENT_SPREAD:{value:Xr.DirectiveLocation.FRAGMENT_SPREAD,description:"Location adjacent to a fragment spread."},INLINE_FRAGMENT:{value:Xr.DirectiveLocation.INLINE_FRAGMENT,description:"Location adjacent to an inline fragment."},VARIABLE_DEFINITION:{value:Xr.DirectiveLocation.VARIABLE_DEFINITION,description:"Location adjacent to a variable definition."},SCHEMA:{value:Xr.DirectiveLocation.SCHEMA,description:"Location adjacent to a schema definition."},SCALAR:{value:Xr.DirectiveLocation.SCALAR,description:"Location adjacent to a scalar definition."},OBJECT:{value:Xr.DirectiveLocation.OBJECT,description:"Location adjacent to an object type definition."},FIELD_DEFINITION:{value:Xr.DirectiveLocation.FIELD_DEFINITION,description:"Location adjacent to a field definition."},ARGUMENT_DEFINITION:{value:Xr.DirectiveLocation.ARGUMENT_DEFINITION,description:"Location adjacent to an argument definition."},INTERFACE:{value:Xr.DirectiveLocation.INTERFACE,description:"Location adjacent to an interface definition."},UNION:{value:Xr.DirectiveLocation.UNION,description:"Location adjacent to a union definition."},ENUM:{value:Xr.DirectiveLocation.ENUM,description:"Location adjacent to an enum definition."},ENUM_VALUE:{value:Xr.DirectiveLocation.ENUM_VALUE,description:"Location adjacent to an enum value definition."},INPUT_OBJECT:{value:Xr.DirectiveLocation.INPUT_OBJECT,description:"Location adjacent to an input object type definition."},INPUT_FIELD_DEFINITION:{value:Xr.DirectiveLocation.INPUT_FIELD_DEFINITION,description:"Location adjacent to an input object field definition."}}});Gt.__DirectiveLocation=aE;var Wi=new Pe.GraphQLObjectType({name:"__Type",description:"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByUrl`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.",fields:function(){return{kind:{type:new Pe.GraphQLNonNull(sE),resolve:function(r){if((0,Pe.isScalarType)(r))return En.SCALAR;if((0,Pe.isObjectType)(r))return En.OBJECT;if((0,Pe.isInterfaceType)(r))return En.INTERFACE;if((0,Pe.isUnionType)(r))return En.UNION;if((0,Pe.isEnumType)(r))return En.ENUM;if((0,Pe.isInputObjectType)(r))return En.INPUT_OBJECT;if((0,Pe.isListType)(r))return En.LIST;if((0,Pe.isNonNullType)(r))return En.NON_NULL;(0,l4.default)(0,'Unexpected type: "'.concat((0,s4.default)(r),'".'))}},name:{type:$t.GraphQLString,resolve:function(r){return r.name!==void 0?r.name:void 0}},description:{type:$t.GraphQLString,resolve:function(r){return r.description!==void 0?r.description:void 0}},specifiedByUrl:{type:$t.GraphQLString,resolve:function(r){return r.specifiedByUrl!==void 0?r.specifiedByUrl:void 0}},fields:{type:new Pe.GraphQLList(new Pe.GraphQLNonNull(oE)),args:{includeDeprecated:{type:$t.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var i=n.includeDeprecated;if((0,Pe.isObjectType)(r)||(0,Pe.isInterfaceType)(r)){var o=(0,tE.default)(r.getFields());return i?o:o.filter(function(s){return s.deprecationReason==null})}}},interfaces:{type:new Pe.GraphQLList(new Pe.GraphQLNonNull(Wi)),resolve:function(r){if((0,Pe.isObjectType)(r)||(0,Pe.isInterfaceType)(r))return r.getInterfaces()}},possibleTypes:{type:new Pe.GraphQLList(new Pe.GraphQLNonNull(Wi)),resolve:function(r,n,i,o){var s=o.schema;if((0,Pe.isAbstractType)(r))return s.getPossibleTypes(r)}},enumValues:{type:new Pe.GraphQLList(new Pe.GraphQLNonNull(uE)),args:{includeDeprecated:{type:$t.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var i=n.includeDeprecated;if((0,Pe.isEnumType)(r)){var o=r.getValues();return i?o:o.filter(function(s){return s.deprecationReason==null})}}},inputFields:{type:new Pe.GraphQLList(new Pe.GraphQLNonNull($d)),args:{includeDeprecated:{type:$t.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var i=n.includeDeprecated;if((0,Pe.isInputObjectType)(r)){var o=(0,tE.default)(r.getFields());return i?o:o.filter(function(s){return s.deprecationReason==null})}}},ofType:{type:Wi,resolve:function(r){return r.ofType!==void 0?r.ofType:void 0}}}}});Gt.__Type=Wi;var oE=new Pe.GraphQLObjectType({name:"__Field",description:"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.",fields:function(){return{name:{type:new Pe.GraphQLNonNull($t.GraphQLString),resolve:function(r){return r.name}},description:{type:$t.GraphQLString,resolve:function(r){return r.description}},args:{type:new Pe.GraphQLNonNull(new Pe.GraphQLList(new Pe.GraphQLNonNull($d))),args:{includeDeprecated:{type:$t.GraphQLBoolean,defaultValue:!1}},resolve:function(r,n){var i=n.includeDeprecated;return i?r.args:r.args.filter(function(o){return o.deprecationReason==null})}},type:{type:new Pe.GraphQLNonNull(Wi),resolve:function(r){return r.type}},isDeprecated:{type:new Pe.GraphQLNonNull($t.GraphQLBoolean),resolve:function(r){return r.deprecationReason!=null}},deprecationReason:{type:$t.GraphQLString,resolve:function(r){return r.deprecationReason}}}}});Gt.__Field=oE;var $d=new Pe.GraphQLObjectType({name:"__InputValue",description:"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.",fields:function(){return{name:{type:new Pe.GraphQLNonNull($t.GraphQLString),resolve:function(r){return r.name}},description:{type:$t.GraphQLString,resolve:function(r){return r.description}},type:{type:new Pe.GraphQLNonNull(Wi),resolve:function(r){return r.type}},defaultValue:{type:$t.GraphQLString,description:"A GraphQL-formatted string representing the default value for this input value.",resolve:function(r){var n=r.type,i=r.defaultValue,o=(0,f4.astFromValue)(i,n);return o?(0,c4.print)(o):null}},isDeprecated:{type:new Pe.GraphQLNonNull($t.GraphQLBoolean),resolve:function(r){return r.deprecationReason!=null}},deprecationReason:{type:$t.GraphQLString,resolve:function(r){return r.deprecationReason}}}}});Gt.__InputValue=$d;var uE=new Pe.GraphQLObjectType({name:"__EnumValue",description:"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.",fields:function(){return{name:{type:new Pe.GraphQLNonNull($t.GraphQLString),resolve:function(r){return r.name}},description:{type:$t.GraphQLString,resolve:function(r){return r.description}},isDeprecated:{type:new Pe.GraphQLNonNull($t.GraphQLBoolean),resolve:function(r){return r.deprecationReason!=null}},deprecationReason:{type:$t.GraphQLString,resolve:function(r){return r.deprecationReason}}}}});Gt.__EnumValue=uE;var En=Object.freeze({SCALAR:"SCALAR",OBJECT:"OBJECT",INTERFACE:"INTERFACE",UNION:"UNION",ENUM:"ENUM",INPUT_OBJECT:"INPUT_OBJECT",LIST:"LIST",NON_NULL:"NON_NULL"});Gt.TypeKind=En;var sE=new Pe.GraphQLEnumType({name:"__TypeKind",description:"An enum describing what kind of type a given `__Type` is.",values:{SCALAR:{value:En.SCALAR,description:"Indicates this type is a scalar."},OBJECT:{value:En.OBJECT,description:"Indicates this type is an object. `fields` and `interfaces` are valid fields."},INTERFACE:{value:En.INTERFACE,description:"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields."},UNION:{value:En.UNION,description:"Indicates this type is a union. `possibleTypes` is a valid field."},ENUM:{value:En.ENUM,description:"Indicates this type is an enum. `enumValues` is a valid field."},INPUT_OBJECT:{value:En.INPUT_OBJECT,description:"Indicates this type is an input object. `inputFields` is a valid field."},LIST:{value:En.LIST,description:"Indicates this type is a list. `ofType` is a valid field."},NON_NULL:{value:En.NON_NULL,description:"Indicates this type is a non-null. `ofType` is a valid field."}}});Gt.__TypeKind=sE;var d4={name:"__schema",type:new Pe.GraphQLNonNull(nE),description:"Access the current type schema of this server.",args:[],resolve:function(t,r,n,i){var o=i.schema;return o},isDeprecated:!1,deprecationReason:void 0,extensions:void 0,astNode:void 0};Gt.SchemaMetaFieldDef=d4;var p4={name:"__type",type:Wi,description:"Request the type information of a single type.",args:[{name:"name",description:void 0,type:new Pe.GraphQLNonNull($t.GraphQLString),defaultValue:void 0,deprecationReason:void 0,extensions:void 0,astNode:void 0}],resolve:function(t,r,n,i){var o=r.name,s=i.schema;return s.getType(o)},isDeprecated:!1,deprecationReason:void 0,extensions:void 0,astNode:void 0};Gt.TypeMetaFieldDef=p4;var h4={name:"__typename",type:new Pe.GraphQLNonNull($t.GraphQLString),description:"The name of the current Object type at runtime.",args:[],resolve:function(t,r,n,i){var o=i.parentType;return o.name},isDeprecated:!1,deprecationReason:void 0,extensions:void 0,astNode:void 0};Gt.TypeNameMetaFieldDef=h4;var yI=Object.freeze([nE,iE,aE,Wi,oE,$d,uE,sE]);Gt.introspectionTypes=yI;function v4(e){return yI.some(function(t){var r=t.name;return e.name===r})}});var gi=G(Zr=>{"use strict";Object.defineProperty(Zr,"__esModule",{value:!0});Zr.isDirective=_I;Zr.assertDirective=S4;Zr.isSpecifiedDirective=k4;Zr.specifiedDirectives=Zr.GraphQLSpecifiedByDirective=Zr.GraphQLDeprecatedDirective=Zr.DEFAULT_DEPRECATION_REASON=Zr.GraphQLSkipDirective=Zr.GraphQLIncludeDirective=Zr.GraphQLDirective=void 0;var g4=Es(ic()),m4=qa(),y4=Es(jt()),bI=Es(Ng()),lE=Es(Hi()),b4=Es(jd()),T4=Es(Ma()),_4=Es(dg()),Ta=$l(),Qg=Ga(),Bg=bt();function Es(e){return e&&e.__esModule?e:{default:e}}function TI(e,t){for(var r=0;r{"use strict";Object.defineProperty(cc,"__esModule",{value:!0});cc.isSchema=CI;cc.assertSchema=A4;cc.GraphQLSchema=void 0;var O4=ku(nc()),w4=ku(Y_()),cE=ku(Ni()),N4=qa(),fE=ku(jt()),D4=ku(Ng()),Kg=ku(Hi()),x4=ku(jd()),C4=ku(Ma()),L4=vi(),DI=gi(),_a=bt();function ku(e){return e&&e.__esModule?e:{default:e}}function xI(e,t){for(var r=0;r{"use strict";Object.defineProperty(Hg,"__esModule",{value:!0});Hg.validateSchema=jI;Hg.assertValidSchema=q4;var II=dE(nc()),ep=dE(Ni()),qn=dE(jt()),R4=Je(),j4=qd(),P4=S_(),AI=Hd(),F4=ks(),M4=vi(),RI=gi(),Cr=bt();function dE(e){return e&&e.__esModule?e:{default:e}}function jI(e){if((0,F4.assertSchema)(e),e.__validationErrors)return e.__validationErrors;var t=new V4(e);U4(t),G4(t),Q4(t);var r=t.getErrors();return e.__validationErrors=r,r}function q4(e){var t=jI(e);if(t.length!==0)throw new Error(t.map(function(r){return r.message}).join(` -`))}var g4=function(){function e(r){this._errors=[],this.schema=r}var t=e.prototype;return t.reportError=function(n,a){var o=Array.isArray(a)?a.filter(Boolean):a;this.addError(new c4.GraphQLError(n,o))},t.addError=function(n){this._errors.push(n)},t.getErrors=function(){return this._errors},e}();function m4(e){var t=e.schema,r=t.getQueryType();if(!r)e.reportError("Query root type must be provided.",t.astNode);else if(!(0,yr.isObjectType)(r)){var n;e.reportError("Query root type must be Object type, it cannot be ".concat((0,Tn.default)(r),"."),(n=LE(t,"query"))!==null&&n!==void 0?n:r.astNode)}var a=t.getMutationType();if(a&&!(0,yr.isObjectType)(a)){var o;e.reportError("Mutation root type must be Object type if provided, it cannot be "+"".concat((0,Tn.default)(a),"."),(o=LE(t,"mutation"))!==null&&o!==void 0?o:a.astNode)}var s=t.getSubscriptionType();if(s&&!(0,yr.isObjectType)(s)){var l;e.reportError("Subscription root type must be Object type if provided, it cannot be "+"".concat((0,Tn.default)(s),"."),(l=LE(t,"subscription"))!==null&&l!==void 0?l:s.astNode)}}function LE(e,t){for(var r=xE(e,function(o){return o.operationTypes}),n=0;n{"use strict";Object.defineProperty(jE,"__esModule",{value:!0});jE.typeFromAST=FE;var O4=qN(Ot()),C4=qN(un()),RE=Vt(),MN=lt();function qN(e){return e&&e.__esModule?e:{default:e}}function FE(e,t){var r;if(t.kind===RE.Kind.LIST_TYPE)return r=FE(e,t.type),r&&new MN.GraphQLList(r);if(t.kind===RE.Kind.NON_NULL_TYPE)return r=FE(e,t.type),r&&new MN.GraphQLNonNull(r);if(t.kind===RE.Kind.NAMED_TYPE)return e.getType(t.name.value);(0,C4.default)(0,"Unexpected type node: "+(0,O4.default)(t))}});var wg=U(Md=>{"use strict";Object.defineProperty(Md,"__esModule",{value:!0});Md.visitWithTypeInfo=I4;Md.TypeInfo=void 0;var w4=N4(ql()),fr=Vt(),A4=Il(),BN=eu(),dr=lt(),Wl=Yn(),VN=wa();function N4(e){return e&&e.__esModule?e:{default:e}}var L4=function(){function e(r,n,a){this._schema=r,this._typeStack=[],this._parentTypeStack=[],this._inputTypeStack=[],this._fieldDefStack=[],this._defaultValueStack=[],this._directive=null,this._argument=null,this._enumValue=null,this._getFieldDef=n!=null?n:x4,a&&((0,dr.isInputType)(a)&&this._inputTypeStack.push(a),(0,dr.isCompositeType)(a)&&this._parentTypeStack.push(a),(0,dr.isOutputType)(a)&&this._typeStack.push(a))}var t=e.prototype;return t.getType=function(){if(this._typeStack.length>0)return this._typeStack[this._typeStack.length-1]},t.getParentType=function(){if(this._parentTypeStack.length>0)return this._parentTypeStack[this._parentTypeStack.length-1]},t.getInputType=function(){if(this._inputTypeStack.length>0)return this._inputTypeStack[this._inputTypeStack.length-1]},t.getParentInputType=function(){if(this._inputTypeStack.length>1)return this._inputTypeStack[this._inputTypeStack.length-2]},t.getFieldDef=function(){if(this._fieldDefStack.length>0)return this._fieldDefStack[this._fieldDefStack.length-1]},t.getDefaultValue=function(){if(this._defaultValueStack.length>0)return this._defaultValueStack[this._defaultValueStack.length-1]},t.getDirective=function(){return this._directive},t.getArgument=function(){return this._argument},t.getEnumValue=function(){return this._enumValue},t.enter=function(n){var a=this._schema;switch(n.kind){case fr.Kind.SELECTION_SET:{var o=(0,dr.getNamedType)(this.getType());this._parentTypeStack.push((0,dr.isCompositeType)(o)?o:void 0);break}case fr.Kind.FIELD:{var s=this.getParentType(),l,d;s&&(l=this._getFieldDef(a,s,n),l&&(d=l.type)),this._fieldDefStack.push(l),this._typeStack.push((0,dr.isOutputType)(d)?d:void 0);break}case fr.Kind.DIRECTIVE:this._directive=a.getDirective(n.name.value);break;case fr.Kind.OPERATION_DEFINITION:{var h;switch(n.operation){case"query":h=a.getQueryType();break;case"mutation":h=a.getMutationType();break;case"subscription":h=a.getSubscriptionType();break}this._typeStack.push((0,dr.isObjectType)(h)?h:void 0);break}case fr.Kind.INLINE_FRAGMENT:case fr.Kind.FRAGMENT_DEFINITION:{var v=n.typeCondition,b=v?(0,VN.typeFromAST)(a,v):(0,dr.getNamedType)(this.getType());this._typeStack.push((0,dr.isOutputType)(b)?b:void 0);break}case fr.Kind.VARIABLE_DEFINITION:{var T=(0,VN.typeFromAST)(a,n.type);this._inputTypeStack.push((0,dr.isInputType)(T)?T:void 0);break}case fr.Kind.ARGUMENT:{var A,L,S,y=(A=this.getDirective())!==null&&A!==void 0?A:this.getFieldDef();y&&(L=(0,w4.default)(y.args,function(M){return M.name===n.name.value}),L&&(S=L.type)),this._argument=L,this._defaultValueStack.push(L?L.defaultValue:void 0),this._inputTypeStack.push((0,dr.isInputType)(S)?S:void 0);break}case fr.Kind.LIST:{var _=(0,dr.getNullableType)(this.getInputType()),m=(0,dr.isListType)(_)?_.ofType:_;this._defaultValueStack.push(void 0),this._inputTypeStack.push((0,dr.isInputType)(m)?m:void 0);break}case fr.Kind.OBJECT_FIELD:{var k=(0,dr.getNamedType)(this.getInputType()),w,C;(0,dr.isInputObjectType)(k)&&(C=k.getFields()[n.name.value],C&&(w=C.type)),this._defaultValueStack.push(C?C.defaultValue:void 0),this._inputTypeStack.push((0,dr.isInputType)(w)?w:void 0);break}case fr.Kind.ENUM:{var D=(0,dr.getNamedType)(this.getInputType()),R;(0,dr.isEnumType)(D)&&(R=D.getValue(n.value)),this._enumValue=R;break}}},t.leave=function(n){switch(n.kind){case fr.Kind.SELECTION_SET:this._parentTypeStack.pop();break;case fr.Kind.FIELD:this._fieldDefStack.pop(),this._typeStack.pop();break;case fr.Kind.DIRECTIVE:this._directive=null;break;case fr.Kind.OPERATION_DEFINITION:case fr.Kind.INLINE_FRAGMENT:case fr.Kind.FRAGMENT_DEFINITION:this._typeStack.pop();break;case fr.Kind.VARIABLE_DEFINITION:this._inputTypeStack.pop();break;case fr.Kind.ARGUMENT:this._argument=null,this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case fr.Kind.LIST:case fr.Kind.OBJECT_FIELD:this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case fr.Kind.ENUM:this._enumValue=null;break}},e}();Md.TypeInfo=L4;function x4(e,t,r){var n=r.name.value;if(n===Wl.SchemaMetaFieldDef.name&&e.getQueryType()===t)return Wl.SchemaMetaFieldDef;if(n===Wl.TypeMetaFieldDef.name&&e.getQueryType()===t)return Wl.TypeMetaFieldDef;if(n===Wl.TypeNameMetaFieldDef.name&&(0,dr.isCompositeType)(t))return Wl.TypeNameMetaFieldDef;if((0,dr.isObjectType)(t)||(0,dr.isInterfaceType)(t))return t.getFields()[n]}function I4(e,t){return{enter:function(n){e.enter(n);var a=(0,BN.getVisitFn)(t,n.kind,!1);if(a){var o=a.apply(t,arguments);return o!==void 0&&(e.leave(n),(0,A4.isNode)(o)&&e.enter(o)),o}},leave:function(n){var a=(0,BN.getVisitFn)(t,n.kind,!0),o;return a&&(o=a.apply(t,arguments)),e.leave(n),o}}}});var ls=U(oa=>{"use strict";Object.defineProperty(oa,"__esModule",{value:!0});oa.isDefinitionNode=R4;oa.isExecutableDefinitionNode=UN;oa.isSelectionNode=F4;oa.isValueNode=j4;oa.isTypeNode=P4;oa.isTypeSystemDefinitionNode=GN;oa.isTypeDefinitionNode=QN;oa.isTypeSystemExtensionNode=KN;oa.isTypeExtensionNode=HN;var Tt=Vt();function R4(e){return UN(e)||GN(e)||KN(e)}function UN(e){return e.kind===Tt.Kind.OPERATION_DEFINITION||e.kind===Tt.Kind.FRAGMENT_DEFINITION}function F4(e){return e.kind===Tt.Kind.FIELD||e.kind===Tt.Kind.FRAGMENT_SPREAD||e.kind===Tt.Kind.INLINE_FRAGMENT}function j4(e){return e.kind===Tt.Kind.VARIABLE||e.kind===Tt.Kind.INT||e.kind===Tt.Kind.FLOAT||e.kind===Tt.Kind.STRING||e.kind===Tt.Kind.BOOLEAN||e.kind===Tt.Kind.NULL||e.kind===Tt.Kind.ENUM||e.kind===Tt.Kind.LIST||e.kind===Tt.Kind.OBJECT}function P4(e){return e.kind===Tt.Kind.NAMED_TYPE||e.kind===Tt.Kind.LIST_TYPE||e.kind===Tt.Kind.NON_NULL_TYPE}function GN(e){return e.kind===Tt.Kind.SCHEMA_DEFINITION||QN(e)||e.kind===Tt.Kind.DIRECTIVE_DEFINITION}function QN(e){return e.kind===Tt.Kind.SCALAR_TYPE_DEFINITION||e.kind===Tt.Kind.OBJECT_TYPE_DEFINITION||e.kind===Tt.Kind.INTERFACE_TYPE_DEFINITION||e.kind===Tt.Kind.UNION_TYPE_DEFINITION||e.kind===Tt.Kind.ENUM_TYPE_DEFINITION||e.kind===Tt.Kind.INPUT_OBJECT_TYPE_DEFINITION}function KN(e){return e.kind===Tt.Kind.SCHEMA_EXTENSION||HN(e)}function HN(e){return e.kind===Tt.Kind.SCALAR_TYPE_EXTENSION||e.kind===Tt.Kind.OBJECT_TYPE_EXTENSION||e.kind===Tt.Kind.INTERFACE_TYPE_EXTENSION||e.kind===Tt.Kind.UNION_TYPE_EXTENSION||e.kind===Tt.Kind.ENUM_TYPE_EXTENSION||e.kind===Tt.Kind.INPUT_OBJECT_TYPE_EXTENSION}});var ME=U(PE=>{"use strict";Object.defineProperty(PE,"__esModule",{value:!0});PE.ExecutableDefinitionsRule=B4;var M4=Be(),zN=Vt(),q4=ls();function B4(e){return{Document:function(r){for(var n=0,a=r.definitions;n{"use strict";Object.defineProperty(qE,"__esModule",{value:!0});qE.UniqueOperationNamesRule=U4;var V4=Be();function U4(e){var t=Object.create(null);return{OperationDefinition:function(n){var a=n.name;return a&&(t[a.value]?e.reportError(new V4.GraphQLError('There can be only one operation named "'.concat(a.value,'".'),[t[a.value],a])):t[a.value]=a),!1},FragmentDefinition:function(){return!1}}}});var UE=U(VE=>{"use strict";Object.defineProperty(VE,"__esModule",{value:!0});VE.LoneAnonymousOperationRule=K4;var G4=Be(),Q4=Vt();function K4(e){var t=0;return{Document:function(n){t=n.definitions.filter(function(a){return a.kind===Q4.Kind.OPERATION_DEFINITION}).length},OperationDefinition:function(n){!n.name&&t>1&&e.reportError(new G4.GraphQLError("This anonymous operation must be the only defined operation.",n))}}}});var QE=U(GE=>{"use strict";Object.defineProperty(GE,"__esModule",{value:!0});GE.SingleFieldSubscriptionsRule=z4;var H4=Be();function z4(e){return{OperationDefinition:function(r){r.operation==="subscription"&&r.selectionSet.selections.length!==1&&e.reportError(new H4.GraphQLError(r.name?'Subscription "'.concat(r.name.value,'" must select only one top level field.'):"Anonymous Subscription must select only one top level field.",r.selectionSet.selections.slice(1)))}}}});var zE=U(HE=>{"use strict";Object.defineProperty(HE,"__esModule",{value:!0});HE.KnownTypeNamesRule=$4;var W4=WN(ru()),Y4=WN(nu()),J4=Be(),KE=ls(),X4=Ca(),Z4=Yn();function WN(e){return e&&e.__esModule?e:{default:e}}function $4(e){for(var t=e.getSchema(),r=t?t.getTypeMap():Object.create(null),n=Object.create(null),a=0,o=e.getDocument().definitions;a{"use strict";Object.defineProperty(WE,"__esModule",{value:!0});WE.FragmentsOnCompositeTypesRule=rK;var JN=Be(),XN=Wn(),ZN=lt(),$N=wa();function rK(e){return{InlineFragment:function(r){var n=r.typeCondition;if(n){var a=(0,$N.typeFromAST)(e.getSchema(),n);if(a&&!(0,ZN.isCompositeType)(a)){var o=(0,XN.print)(n);e.reportError(new JN.GraphQLError('Fragment cannot condition on non composite type "'.concat(o,'".'),n))}}},FragmentDefinition:function(r){var n=(0,$N.typeFromAST)(e.getSchema(),r.typeCondition);if(n&&!(0,ZN.isCompositeType)(n)){var a=(0,XN.print)(r.typeCondition);e.reportError(new JN.GraphQLError('Fragment "'.concat(r.name.value,'" cannot condition on non composite type "').concat(a,'".'),r.typeCondition))}}}}});var XE=U(JE=>{"use strict";Object.defineProperty(JE,"__esModule",{value:!0});JE.VariablesAreInputTypesRule=uK;var nK=Be(),iK=Wn(),aK=lt(),oK=wa();function uK(e){return{VariableDefinition:function(r){var n=(0,oK.typeFromAST)(e.getSchema(),r.type);if(n&&!(0,aK.isInputType)(n)){var a=r.variable.name.value,o=(0,iK.print)(r.type);e.reportError(new nK.GraphQLError('Variable "$'.concat(a,'" cannot be non-input type "').concat(o,'".'),r.type))}}}}});var $E=U(ZE=>{"use strict";Object.defineProperty(ZE,"__esModule",{value:!0});ZE.ScalarLeafsRule=lK;var eL=sK(Ot()),tL=Be(),rL=lt();function sK(e){return e&&e.__esModule?e:{default:e}}function lK(e){return{Field:function(r){var n=e.getType(),a=r.selectionSet;if(n){if((0,rL.isLeafType)((0,rL.getNamedType)(n))){if(a){var o=r.name.value,s=(0,eL.default)(n);e.reportError(new tL.GraphQLError('Field "'.concat(o,'" must not have a selection since type "').concat(s,'" has no subfields.'),a))}}else if(!a){var l=r.name.value,d=(0,eL.default)(n);e.reportError(new tL.GraphQLError('Field "'.concat(l,'" of type "').concat(d,'" must have a selection of subfields. Did you mean "').concat(l,' { ... }"?'),r))}}}}}});var t_=U(e_=>{"use strict";Object.defineProperty(e_,"__esModule",{value:!0});e_.FieldsOnCorrectTypeRule=hK;var cK=Ag(pE()),nL=Ag(ru()),fK=Ag(nu()),dK=Ag(_d()),pK=Be(),qd=lt();function Ag(e){return e&&e.__esModule?e:{default:e}}function hK(e){return{Field:function(r){var n=e.getParentType();if(n){var a=e.getFieldDef();if(!a){var o=e.getSchema(),s=r.name.value,l=(0,nL.default)("to use an inline fragment on",vK(o,n,s));l===""&&(l=(0,nL.default)(gK(n,s))),e.reportError(new pK.GraphQLError('Cannot query field "'.concat(s,'" on type "').concat(n.name,'".')+l,r))}}}}}function vK(e,t,r){if(!(0,qd.isAbstractType)(t))return[];for(var n=new Set,a=Object.create(null),o=0,s=e.getPossibleTypes(t);o{"use strict";Object.defineProperty(r_,"__esModule",{value:!0});r_.UniqueFragmentNamesRule=yK;var mK=Be();function yK(e){var t=Object.create(null);return{OperationDefinition:function(){return!1},FragmentDefinition:function(n){var a=n.name.value;return t[a]?e.reportError(new mK.GraphQLError('There can be only one fragment named "'.concat(a,'".'),[t[a],n.name])):t[a]=n.name,!1}}}});var a_=U(i_=>{"use strict";Object.defineProperty(i_,"__esModule",{value:!0});i_.KnownFragmentNamesRule=TK;var bK=Be();function TK(e){return{FragmentSpread:function(r){var n=r.name.value,a=e.getFragment(n);a||e.reportError(new bK.GraphQLError('Unknown fragment "'.concat(n,'".'),r.name))}}}});var u_=U(o_=>{"use strict";Object.defineProperty(o_,"__esModule",{value:!0});o_.NoUnusedFragmentsRule=_K;var EK=Be();function _K(e){var t=[],r=[];return{OperationDefinition:function(a){return t.push(a),!1},FragmentDefinition:function(a){return r.push(a),!1},Document:{leave:function(){for(var a=Object.create(null),o=0;o{"use strict";Object.defineProperty(l_,"__esModule",{value:!0});l_.PossibleFragmentSpreadsRule=kK;var Ng=DK(Ot()),iL=Be(),s_=lt(),SK=wa(),aL=Cd();function DK(e){return e&&e.__esModule?e:{default:e}}function kK(e){return{InlineFragment:function(r){var n=e.getType(),a=e.getParentType();if((0,s_.isCompositeType)(n)&&(0,s_.isCompositeType)(a)&&!(0,aL.doTypesOverlap)(e.getSchema(),n,a)){var o=(0,Ng.default)(a),s=(0,Ng.default)(n);e.reportError(new iL.GraphQLError('Fragment cannot be spread here as objects of type "'.concat(o,'" can never be of type "').concat(s,'".'),r))}},FragmentSpread:function(r){var n=r.name.value,a=OK(e,n),o=e.getParentType();if(a&&o&&!(0,aL.doTypesOverlap)(e.getSchema(),a,o)){var s=(0,Ng.default)(o),l=(0,Ng.default)(a);e.reportError(new iL.GraphQLError('Fragment "'.concat(n,'" cannot be spread here as objects of type "').concat(s,'" can never be of type "').concat(l,'".'),r))}}}}function OK(e,t){var r=e.getFragment(t);if(r){var n=(0,SK.typeFromAST)(e.getSchema(),r.typeCondition);if((0,s_.isCompositeType)(n))return n}}});var d_=U(f_=>{"use strict";Object.defineProperty(f_,"__esModule",{value:!0});f_.NoFragmentCyclesRule=wK;var CK=Be();function wK(e){var t=Object.create(null),r=[],n=Object.create(null);return{OperationDefinition:function(){return!1},FragmentDefinition:function(s){return a(s),!1}};function a(o){if(!t[o.name.value]){var s=o.name.value;t[s]=!0;var l=e.getFragmentSpreads(o.selectionSet);if(l.length!==0){n[s]=r.length;for(var d=0;d{"use strict";Object.defineProperty(p_,"__esModule",{value:!0});p_.UniqueVariableNamesRule=NK;var AK=Be();function NK(e){var t=Object.create(null);return{OperationDefinition:function(){t=Object.create(null)},VariableDefinition:function(n){var a=n.variable.name.value;t[a]?e.reportError(new AK.GraphQLError('There can be only one variable named "$'.concat(a,'".'),[t[a],n.variable.name])):t[a]=n.variable.name}}}});var g_=U(v_=>{"use strict";Object.defineProperty(v_,"__esModule",{value:!0});v_.NoUndefinedVariablesRule=xK;var LK=Be();function xK(e){var t=Object.create(null);return{OperationDefinition:{enter:function(){t=Object.create(null)},leave:function(n){for(var a=e.getRecursiveVariableUsages(n),o=0;o{"use strict";Object.defineProperty(m_,"__esModule",{value:!0});m_.NoUnusedVariablesRule=RK;var IK=Be();function RK(e){var t=[];return{OperationDefinition:{enter:function(){t=[]},leave:function(n){for(var a=Object.create(null),o=e.getRecursiveVariableUsages(n),s=0;s{"use strict";Object.defineProperty(b_,"__esModule",{value:!0});b_.KnownDirectivesRule=PK;var FK=sL(Ot()),oL=sL(un()),uL=Be(),Zt=Vt(),Br=Fl(),jK=Jn();function sL(e){return e&&e.__esModule?e:{default:e}}function PK(e){for(var t=Object.create(null),r=e.getSchema(),n=r?r.getDirectives():jK.specifiedDirectives,a=0;a{"use strict";Object.defineProperty(__,"__esModule",{value:!0});__.UniqueDirectivesPerLocationRule=UK;var BK=Be(),E_=Vt(),lL=ls(),VK=Jn();function UK(e){for(var t=Object.create(null),r=e.getSchema(),n=r?r.getDirectives():VK.specifiedDirectives,a=0;a{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});Lg.KnownArgumentNamesRule=HK;Lg.KnownArgumentNamesOnDirectivesRule=gL;var cL=pL(ru()),fL=pL(nu()),dL=Be(),GK=Vt(),QK=Jn();function pL(e){return e&&e.__esModule?e:{default:e}}function hL(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function vL(e){for(var t=1;t{"use strict";Object.defineProperty(k_,"__esModule",{value:!0});k_.UniqueArgumentNamesRule=WK;var zK=Be();function WK(e){var t=Object.create(null);return{Field:function(){t=Object.create(null)},Directive:function(){t=Object.create(null)},Argument:function(n){var a=n.name.value;return t[a]?e.reportError(new zK.GraphQLError('There can be only one argument named "'.concat(a,'".'),[t[a],n.name])):t[a]=n.name,!1}}}});var w_=U(C_=>{"use strict";Object.defineProperty(C_,"__esModule",{value:!0});C_.ValuesOfCorrectTypeRule=$K;var YK=Vd(oi()),JK=Vd(tu()),Bd=Vd(Ot()),XK=Vd(ru()),ZK=Vd(nu()),cs=Be(),xg=Wn(),Aa=lt();function Vd(e){return e&&e.__esModule?e:{default:e}}function $K(e){return{ListValue:function(r){var n=(0,Aa.getNullableType)(e.getParentInputType());if(!(0,Aa.isListType)(n))return fs(e,r),!1},ObjectValue:function(r){var n=(0,Aa.getNamedType)(e.getInputType());if(!(0,Aa.isInputObjectType)(n))return fs(e,r),!1;for(var a=(0,JK.default)(r.fields,function(v){return v.name.value}),o=0,s=(0,YK.default)(n.getFields());o{"use strict";Object.defineProperty(Rg,"__esModule",{value:!0});Rg.ProvidedRequiredArgumentsRule=n8;Rg.ProvidedRequiredArgumentsOnDirectivesRule=SL;var mL=TL(Ot()),Ig=TL(tu()),yL=Be(),bL=Vt(),e8=Wn(),t8=Jn(),A_=lt();function TL(e){return e&&e.__esModule?e:{default:e}}function EL(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function _L(e){for(var t=1;t{"use strict";Object.defineProperty(L_,"__esModule",{value:!0});L_.VariablesInAllowedPositionRule=l8;var DL=s8(Ot()),a8=Be(),o8=Vt(),kL=lt(),u8=wa(),OL=Cd();function s8(e){return e&&e.__esModule?e:{default:e}}function l8(e){var t=Object.create(null);return{OperationDefinition:{enter:function(){t=Object.create(null)},leave:function(n){for(var a=e.getRecursiveVariableUsages(n),o=0;o{"use strict";Object.defineProperty(M_,"__esModule",{value:!0});M_.OverlappingFieldsCanBeMergedRule=h8;var f8=R_(ql()),d8=R_(Bl()),CL=R_(Ot()),p8=Be(),I_=Vt(),wL=Wn(),Xn=lt(),AL=wa();function R_(e){return e&&e.__esModule?e:{default:e}}function NL(e){return Array.isArray(e)?e.map(function(t){var r=t[0],n=t[1];return'subfields "'.concat(r,'" conflict because ')+NL(n)}).join(" and "):e}function h8(e){var t=new E8,r=new Map;return{SelectionSet:function(a){for(var o=v8(e,r,t,e.getParentType(),a),s=0;s1)for(var v=0;v0)return[[t,e.map(function(a){var o=a[0];return o})],e.reduce(function(a,o){var s=o[1];return a.concat(s)},[r]),e.reduce(function(a,o){var s=o[2];return a.concat(s)},[n])]}var E8=function(){function e(){this._data=Object.create(null)}var t=e.prototype;return t.has=function(n,a,o){var s=this._data[n],l=s&&s[a];return l===void 0?!1:o===!1?l===!1:!0},t.add=function(n,a,o){this._pairSetAdd(n,a,o),this._pairSetAdd(a,n,o)},t._pairSetAdd=function(n,a,o){var s=this._data[n];s||(s=Object.create(null),this._data[n]=s),s[a]=o},e}()});var V_=U(B_=>{"use strict";Object.defineProperty(B_,"__esModule",{value:!0});B_.UniqueInputFieldNamesRule=S8;var _8=Be();function S8(e){var t=[],r=Object.create(null);return{ObjectValue:{enter:function(){t.push(r),r=Object.create(null)},leave:function(){r=t.pop()}},ObjectField:function(a){var o=a.name.value;r[o]?e.reportError(new _8.GraphQLError('There can be only one input field named "'.concat(o,'".'),[r[o],a.name])):r[o]=a.name}}}});var G_=U(U_=>{"use strict";Object.defineProperty(U_,"__esModule",{value:!0});U_.LoneSchemaDefinitionRule=D8;var IL=Be();function D8(e){var t,r,n,a=e.getSchema(),o=(t=(r=(n=a==null?void 0:a.astNode)!==null&&n!==void 0?n:a==null?void 0:a.getQueryType())!==null&&r!==void 0?r:a==null?void 0:a.getMutationType())!==null&&t!==void 0?t:a==null?void 0:a.getSubscriptionType(),s=0;return{SchemaDefinition:function(d){if(o){e.reportError(new IL.GraphQLError("Cannot define a new schema within a schema extension.",d));return}s>0&&e.reportError(new IL.GraphQLError("Must provide only one schema definition.",d)),++s}}}});var K_=U(Q_=>{"use strict";Object.defineProperty(Q_,"__esModule",{value:!0});Q_.UniqueOperationTypesRule=k8;var RL=Be();function k8(e){var t=e.getSchema(),r=Object.create(null),n=t?{query:t.getQueryType(),mutation:t.getMutationType(),subscription:t.getSubscriptionType()}:{};return{SchemaDefinition:a,SchemaExtension:a};function a(o){for(var s,l=(s=o.operationTypes)!==null&&s!==void 0?s:[],d=0;d{"use strict";Object.defineProperty(H_,"__esModule",{value:!0});H_.UniqueTypeNamesRule=O8;var FL=Be();function O8(e){var t=Object.create(null),r=e.getSchema();return{ScalarTypeDefinition:n,ObjectTypeDefinition:n,InterfaceTypeDefinition:n,UnionTypeDefinition:n,EnumTypeDefinition:n,InputObjectTypeDefinition:n};function n(a){var o=a.name.value;if(r!=null&&r.getType(o)){e.reportError(new FL.GraphQLError('Type "'.concat(o,'" already exists in the schema. It cannot also be defined in this type definition.'),a.name));return}return t[o]?e.reportError(new FL.GraphQLError('There can be only one type named "'.concat(o,'".'),[t[o],a.name])):t[o]=a.name,!1}}});var Y_=U(W_=>{"use strict";Object.defineProperty(W_,"__esModule",{value:!0});W_.UniqueEnumValueNamesRule=w8;var jL=Be(),C8=lt();function w8(e){var t=e.getSchema(),r=t?t.getTypeMap():Object.create(null),n=Object.create(null);return{EnumTypeDefinition:a,EnumTypeExtension:a};function a(o){var s,l=o.name.value;n[l]||(n[l]=Object.create(null));for(var d=(s=o.values)!==null&&s!==void 0?s:[],h=n[l],v=0;v{"use strict";Object.defineProperty(X_,"__esModule",{value:!0});X_.UniqueFieldDefinitionNamesRule=A8;var PL=Be(),J_=lt();function A8(e){var t=e.getSchema(),r=t?t.getTypeMap():Object.create(null),n=Object.create(null);return{InputObjectTypeDefinition:a,InputObjectTypeExtension:a,InterfaceTypeDefinition:a,InterfaceTypeExtension:a,ObjectTypeDefinition:a,ObjectTypeExtension:a};function a(o){var s,l=o.name.value;n[l]||(n[l]=Object.create(null));for(var d=(s=o.fields)!==null&&s!==void 0?s:[],h=n[l],v=0;v{"use strict";Object.defineProperty($_,"__esModule",{value:!0});$_.UniqueDirectiveNamesRule=L8;var ML=Be();function L8(e){var t=Object.create(null),r=e.getSchema();return{DirectiveDefinition:function(a){var o=a.name.value;if(r!=null&&r.getDirective(o)){e.reportError(new ML.GraphQLError('Directive "@'.concat(o,'" already exists in the schema. It cannot be redefined.'),a.name));return}return t[o]?e.reportError(new ML.GraphQLError('There can be only one directive named "@'.concat(o,'".'),[t[o],a.name])):t[o]=a.name,!1}}}});var rS=U(tS=>{"use strict";Object.defineProperty(tS,"__esModule",{value:!0});tS.PossibleTypeExtensionsRule=F8;var qL=Mg(Ot()),BL=Mg(un()),x8=Mg(ru()),I8=Mg(nu()),VL=Be(),rr=Vt(),R8=ls(),Yl=lt(),fu;function Mg(e){return e&&e.__esModule?e:{default:e}}function Jl(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function F8(e){for(var t=e.getSchema(),r=Object.create(null),n=0,a=e.getDocument().definitions;n{"use strict";Object.defineProperty(Xl,"__esModule",{value:!0});Xl.specifiedSDLRules=Xl.specifiedRules=void 0;var q8=ME(),B8=BE(),V8=UE(),U8=QE(),UL=zE(),G8=YE(),Q8=XE(),K8=$E(),H8=t_(),z8=n_(),W8=a_(),Y8=u_(),J8=c_(),X8=d_(),Z8=h_(),$8=g_(),e6=y_(),GL=T_(),QL=S_(),KL=D_(),HL=O_(),t6=w_(),zL=N_(),r6=x_(),n6=q_(),WL=V_(),i6=G_(),a6=K_(),o6=z_(),u6=Y_(),s6=Z_(),l6=eS(),c6=rS(),f6=Object.freeze([q8.ExecutableDefinitionsRule,B8.UniqueOperationNamesRule,V8.LoneAnonymousOperationRule,U8.SingleFieldSubscriptionsRule,UL.KnownTypeNamesRule,G8.FragmentsOnCompositeTypesRule,Q8.VariablesAreInputTypesRule,K8.ScalarLeafsRule,H8.FieldsOnCorrectTypeRule,z8.UniqueFragmentNamesRule,W8.KnownFragmentNamesRule,Y8.NoUnusedFragmentsRule,J8.PossibleFragmentSpreadsRule,X8.NoFragmentCyclesRule,Z8.UniqueVariableNamesRule,$8.NoUndefinedVariablesRule,e6.NoUnusedVariablesRule,GL.KnownDirectivesRule,QL.UniqueDirectivesPerLocationRule,KL.KnownArgumentNamesRule,HL.UniqueArgumentNamesRule,t6.ValuesOfCorrectTypeRule,zL.ProvidedRequiredArgumentsRule,r6.VariablesInAllowedPositionRule,n6.OverlappingFieldsCanBeMergedRule,WL.UniqueInputFieldNamesRule]);Xl.specifiedRules=f6;var d6=Object.freeze([i6.LoneSchemaDefinitionRule,a6.UniqueOperationTypesRule,o6.UniqueTypeNamesRule,u6.UniqueEnumValueNamesRule,s6.UniqueFieldDefinitionNamesRule,l6.UniqueDirectiveNamesRule,UL.KnownTypeNamesRule,GL.KnownDirectivesRule,QL.UniqueDirectivesPerLocationRule,c6.PossibleTypeExtensionsRule,KL.KnownArgumentNamesOnDirectivesRule,HL.UniqueArgumentNamesRule,WL.UniqueInputFieldNamesRule,zL.ProvidedRequiredArgumentsOnDirectivesRule]);Xl.specifiedSDLRules=d6});var aS=U(du=>{"use strict";Object.defineProperty(du,"__esModule",{value:!0});du.ValidationContext=du.SDLValidationContext=du.ASTValidationContext=void 0;var YL=Vt(),p6=eu(),JL=wg();function XL(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var iS=function(){function e(r,n){this._ast=r,this._fragments=void 0,this._fragmentSpreads=new Map,this._recursivelyReferencedFragments=new Map,this._onError=n}var t=e.prototype;return t.reportError=function(n){this._onError(n)},t.getDocument=function(){return this._ast},t.getFragment=function(n){var a=this._fragments;return a||(this._fragments=a=this.getDocument().definitions.reduce(function(o,s){return s.kind===YL.Kind.FRAGMENT_DEFINITION&&(o[s.name.value]=s),o},Object.create(null))),a[n]},t.getFragmentSpreads=function(n){var a=this._fragmentSpreads.get(n);if(!a){a=[];for(var o=[n];o.length!==0;)for(var s=o.pop(),l=0,d=s.selections;l{"use strict";Object.defineProperty(Zl,"__esModule",{value:!0});Zl.validate=T6;Zl.validateSDL=oS;Zl.assertValidSDL=E6;Zl.assertValidSDLExtension=_6;var g6=b6(wi()),m6=Be(),qg=eu(),y6=Pd(),ZL=wg(),$L=nS(),ex=aS();function b6(e){return e&&e.__esModule?e:{default:e}}function T6(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:$L.specifiedRules,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:new ZL.TypeInfo(e),a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{maxErrors:void 0};t||(0,g6.default)(0,"Must provide document."),(0,y6.assertValidSchema)(e);var o=Object.freeze({}),s=[],l=new ex.ValidationContext(e,t,n,function(h){if(a.maxErrors!=null&&s.length>=a.maxErrors)throw s.push(new m6.GraphQLError("Too many validation errors, error limit reached. Validation aborted.")),o;s.push(h)}),d=(0,qg.visitInParallel)(r.map(function(h){return h(l)}));try{(0,qg.visit)(t,(0,ZL.visitWithTypeInfo)(n,d))}catch(h){if(h!==o)throw h}return s}function oS(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:$L.specifiedSDLRules,n=[],a=new ex.SDLValidationContext(e,t,function(s){n.push(s)}),o=r.map(function(s){return s(a)});return(0,qg.visit)(e,(0,qg.visitInParallel)(o)),n}function E6(e){var t=oS(e);if(t.length!==0)throw new Error(t.map(function(r){return r.message}).join(` +`))}var V4=function(){function e(r){this._errors=[],this.schema=r}var t=e.prototype;return t.reportError=function(n,i){var o=Array.isArray(i)?i.filter(Boolean):i;this.addError(new R4.GraphQLError(n,o))},t.addError=function(n){this._errors.push(n)},t.getErrors=function(){return this._errors},e}();function U4(e){var t=e.schema,r=t.getQueryType();if(!r)e.reportError("Query root type must be provided.",t.astNode);else if(!(0,Cr.isObjectType)(r)){var n;e.reportError("Query root type must be Object type, it cannot be ".concat((0,qn.default)(r),"."),(n=pE(t,"query"))!==null&&n!==void 0?n:r.astNode)}var i=t.getMutationType();if(i&&!(0,Cr.isObjectType)(i)){var o;e.reportError("Mutation root type must be Object type if provided, it cannot be "+"".concat((0,qn.default)(i),"."),(o=pE(t,"mutation"))!==null&&o!==void 0?o:i.astNode)}var s=t.getSubscriptionType();if(s&&!(0,Cr.isObjectType)(s)){var l;e.reportError("Subscription root type must be Object type if provided, it cannot be "+"".concat((0,qn.default)(s),"."),(l=pE(t,"subscription"))!==null&&l!==void 0?l:s.astNode)}}function pE(e,t){for(var r=hE(e,function(o){return o.operationTypes}),n=0;n{"use strict";Object.defineProperty(yE,"__esModule",{value:!0});yE.typeFromAST=mE;var J4=VI(jt()),X4=VI(_n()),gE=Jt(),qI=bt();function VI(e){return e&&e.__esModule?e:{default:e}}function mE(e,t){var r;if(t.kind===gE.Kind.LIST_TYPE)return r=mE(e,t.type),r&&new qI.GraphQLList(r);if(t.kind===gE.Kind.NON_NULL_TYPE)return r=mE(e,t.type),r&&new qI.GraphQLNonNull(r);if(t.kind===gE.Kind.NAMED_TYPE)return e.getType(t.name.value);(0,X4.default)(0,"Unexpected type node: "+(0,J4.default)(t))}});var zg=G(np=>{"use strict";Object.defineProperty(np,"__esModule",{value:!0});np.visitWithTypeInfo=n5;np.TypeInfo=void 0;var Z4=e5(nc()),Sr=Jt(),$4=Xl(),UI=hu(),kr=bt(),dc=vi(),GI=Qa();function e5(e){return e&&e.__esModule?e:{default:e}}var t5=function(){function e(r,n,i){this._schema=r,this._typeStack=[],this._parentTypeStack=[],this._inputTypeStack=[],this._fieldDefStack=[],this._defaultValueStack=[],this._directive=null,this._argument=null,this._enumValue=null,this._getFieldDef=n!=null?n:r5,i&&((0,kr.isInputType)(i)&&this._inputTypeStack.push(i),(0,kr.isCompositeType)(i)&&this._parentTypeStack.push(i),(0,kr.isOutputType)(i)&&this._typeStack.push(i))}var t=e.prototype;return t.getType=function(){if(this._typeStack.length>0)return this._typeStack[this._typeStack.length-1]},t.getParentType=function(){if(this._parentTypeStack.length>0)return this._parentTypeStack[this._parentTypeStack.length-1]},t.getInputType=function(){if(this._inputTypeStack.length>0)return this._inputTypeStack[this._inputTypeStack.length-1]},t.getParentInputType=function(){if(this._inputTypeStack.length>1)return this._inputTypeStack[this._inputTypeStack.length-2]},t.getFieldDef=function(){if(this._fieldDefStack.length>0)return this._fieldDefStack[this._fieldDefStack.length-1]},t.getDefaultValue=function(){if(this._defaultValueStack.length>0)return this._defaultValueStack[this._defaultValueStack.length-1]},t.getDirective=function(){return this._directive},t.getArgument=function(){return this._argument},t.getEnumValue=function(){return this._enumValue},t.enter=function(n){var i=this._schema;switch(n.kind){case Sr.Kind.SELECTION_SET:{var o=(0,kr.getNamedType)(this.getType());this._parentTypeStack.push((0,kr.isCompositeType)(o)?o:void 0);break}case Sr.Kind.FIELD:{var s=this.getParentType(),l,d;s&&(l=this._getFieldDef(i,s,n),l&&(d=l.type)),this._fieldDefStack.push(l),this._typeStack.push((0,kr.isOutputType)(d)?d:void 0);break}case Sr.Kind.DIRECTIVE:this._directive=i.getDirective(n.name.value);break;case Sr.Kind.OPERATION_DEFINITION:{var h;switch(n.operation){case"query":h=i.getQueryType();break;case"mutation":h=i.getMutationType();break;case"subscription":h=i.getSubscriptionType();break}this._typeStack.push((0,kr.isObjectType)(h)?h:void 0);break}case Sr.Kind.INLINE_FRAGMENT:case Sr.Kind.FRAGMENT_DEFINITION:{var v=n.typeCondition,y=v?(0,GI.typeFromAST)(i,v):(0,kr.getNamedType)(this.getType());this._typeStack.push((0,kr.isOutputType)(y)?y:void 0);break}case Sr.Kind.VARIABLE_DEFINITION:{var b=(0,GI.typeFromAST)(i,n.type);this._inputTypeStack.push((0,kr.isInputType)(b)?b:void 0);break}case Sr.Kind.ARGUMENT:{var D,_,k,T=(D=this.getDirective())!==null&&D!==void 0?D:this.getFieldDef();T&&(_=(0,Z4.default)(T.args,function(M){return M.name===n.name.value}),_&&(k=_.type)),this._argument=_,this._defaultValueStack.push(_?_.defaultValue:void 0),this._inputTypeStack.push((0,kr.isInputType)(k)?k:void 0);break}case Sr.Kind.LIST:{var S=(0,kr.getNullableType)(this.getInputType()),m=(0,kr.isListType)(S)?S.ofType:S;this._defaultValueStack.push(void 0),this._inputTypeStack.push((0,kr.isInputType)(m)?m:void 0);break}case Sr.Kind.OBJECT_FIELD:{var w=(0,kr.getNamedType)(this.getInputType()),x,L;(0,kr.isInputObjectType)(w)&&(L=w.getFields()[n.name.value],L&&(x=L.type)),this._defaultValueStack.push(L?L.defaultValue:void 0),this._inputTypeStack.push((0,kr.isInputType)(x)?x:void 0);break}case Sr.Kind.ENUM:{var O=(0,kr.getNamedType)(this.getInputType()),R;(0,kr.isEnumType)(O)&&(R=O.getValue(n.value)),this._enumValue=R;break}}},t.leave=function(n){switch(n.kind){case Sr.Kind.SELECTION_SET:this._parentTypeStack.pop();break;case Sr.Kind.FIELD:this._fieldDefStack.pop(),this._typeStack.pop();break;case Sr.Kind.DIRECTIVE:this._directive=null;break;case Sr.Kind.OPERATION_DEFINITION:case Sr.Kind.INLINE_FRAGMENT:case Sr.Kind.FRAGMENT_DEFINITION:this._typeStack.pop();break;case Sr.Kind.VARIABLE_DEFINITION:this._inputTypeStack.pop();break;case Sr.Kind.ARGUMENT:this._argument=null,this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case Sr.Kind.LIST:case Sr.Kind.OBJECT_FIELD:this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case Sr.Kind.ENUM:this._enumValue=null;break}},e}();np.TypeInfo=t5;function r5(e,t,r){var n=r.name.value;if(n===dc.SchemaMetaFieldDef.name&&e.getQueryType()===t)return dc.SchemaMetaFieldDef;if(n===dc.TypeMetaFieldDef.name&&e.getQueryType()===t)return dc.TypeMetaFieldDef;if(n===dc.TypeNameMetaFieldDef.name&&(0,kr.isCompositeType)(t))return dc.TypeNameMetaFieldDef;if((0,kr.isObjectType)(t)||(0,kr.isInterfaceType)(t))return t.getFields()[n]}function n5(e,t){return{enter:function(n){e.enter(n);var i=(0,UI.getVisitFn)(t,n.kind,!1);if(i){var o=i.apply(t,arguments);return o!==void 0&&(e.leave(n),(0,$4.isNode)(o)&&e.enter(o)),o}},leave:function(n){var i=(0,UI.getVisitFn)(t,n.kind,!0),o;return i&&(o=i.apply(t,arguments)),e.leave(n),o}}}});var ws=G(Sa=>{"use strict";Object.defineProperty(Sa,"__esModule",{value:!0});Sa.isDefinitionNode=i5;Sa.isExecutableDefinitionNode=QI;Sa.isSelectionNode=a5;Sa.isValueNode=o5;Sa.isTypeNode=u5;Sa.isTypeSystemDefinitionNode=BI;Sa.isTypeDefinitionNode=KI;Sa.isTypeSystemExtensionNode=HI;Sa.isTypeExtensionNode=zI;var Dt=Jt();function i5(e){return QI(e)||BI(e)||HI(e)}function QI(e){return e.kind===Dt.Kind.OPERATION_DEFINITION||e.kind===Dt.Kind.FRAGMENT_DEFINITION}function a5(e){return e.kind===Dt.Kind.FIELD||e.kind===Dt.Kind.FRAGMENT_SPREAD||e.kind===Dt.Kind.INLINE_FRAGMENT}function o5(e){return e.kind===Dt.Kind.VARIABLE||e.kind===Dt.Kind.INT||e.kind===Dt.Kind.FLOAT||e.kind===Dt.Kind.STRING||e.kind===Dt.Kind.BOOLEAN||e.kind===Dt.Kind.NULL||e.kind===Dt.Kind.ENUM||e.kind===Dt.Kind.LIST||e.kind===Dt.Kind.OBJECT}function u5(e){return e.kind===Dt.Kind.NAMED_TYPE||e.kind===Dt.Kind.LIST_TYPE||e.kind===Dt.Kind.NON_NULL_TYPE}function BI(e){return e.kind===Dt.Kind.SCHEMA_DEFINITION||KI(e)||e.kind===Dt.Kind.DIRECTIVE_DEFINITION}function KI(e){return e.kind===Dt.Kind.SCALAR_TYPE_DEFINITION||e.kind===Dt.Kind.OBJECT_TYPE_DEFINITION||e.kind===Dt.Kind.INTERFACE_TYPE_DEFINITION||e.kind===Dt.Kind.UNION_TYPE_DEFINITION||e.kind===Dt.Kind.ENUM_TYPE_DEFINITION||e.kind===Dt.Kind.INPUT_OBJECT_TYPE_DEFINITION}function HI(e){return e.kind===Dt.Kind.SCHEMA_EXTENSION||zI(e)}function zI(e){return e.kind===Dt.Kind.SCALAR_TYPE_EXTENSION||e.kind===Dt.Kind.OBJECT_TYPE_EXTENSION||e.kind===Dt.Kind.INTERFACE_TYPE_EXTENSION||e.kind===Dt.Kind.UNION_TYPE_EXTENSION||e.kind===Dt.Kind.ENUM_TYPE_EXTENSION||e.kind===Dt.Kind.INPUT_OBJECT_TYPE_EXTENSION}});var TE=G(bE=>{"use strict";Object.defineProperty(bE,"__esModule",{value:!0});bE.ExecutableDefinitionsRule=c5;var s5=Je(),WI=Jt(),l5=ws();function c5(e){return{Document:function(r){for(var n=0,i=r.definitions;n{"use strict";Object.defineProperty(_E,"__esModule",{value:!0});_E.UniqueOperationNamesRule=d5;var f5=Je();function d5(e){var t=Object.create(null);return{OperationDefinition:function(n){var i=n.name;return i&&(t[i.value]?e.reportError(new f5.GraphQLError('There can be only one operation named "'.concat(i.value,'".'),[t[i.value],i])):t[i.value]=i),!1},FragmentDefinition:function(){return!1}}}});var kE=G(SE=>{"use strict";Object.defineProperty(SE,"__esModule",{value:!0});SE.LoneAnonymousOperationRule=v5;var p5=Je(),h5=Jt();function v5(e){var t=0;return{Document:function(n){t=n.definitions.filter(function(i){return i.kind===h5.Kind.OPERATION_DEFINITION}).length},OperationDefinition:function(n){!n.name&&t>1&&e.reportError(new p5.GraphQLError("This anonymous operation must be the only defined operation.",n))}}}});var wE=G(OE=>{"use strict";Object.defineProperty(OE,"__esModule",{value:!0});OE.SingleFieldSubscriptionsRule=m5;var g5=Je();function m5(e){return{OperationDefinition:function(r){r.operation==="subscription"&&r.selectionSet.selections.length!==1&&e.reportError(new g5.GraphQLError(r.name?'Subscription "'.concat(r.name.value,'" must select only one top level field.'):"Anonymous Subscription must select only one top level field.",r.selectionSet.selections.slice(1)))}}}});var xE=G(DE=>{"use strict";Object.defineProperty(DE,"__esModule",{value:!0});DE.KnownTypeNamesRule=S5;var y5=YI(gu()),b5=YI(mu()),T5=Je(),NE=ws(),_5=Ga(),E5=vi();function YI(e){return e&&e.__esModule?e:{default:e}}function S5(e){for(var t=e.getSchema(),r=t?t.getTypeMap():Object.create(null),n=Object.create(null),i=0,o=e.getDocument().definitions;i{"use strict";Object.defineProperty(CE,"__esModule",{value:!0});CE.FragmentsOnCompositeTypesRule=w5;var XI=Je(),ZI=hi(),$I=bt(),eA=Qa();function w5(e){return{InlineFragment:function(r){var n=r.typeCondition;if(n){var i=(0,eA.typeFromAST)(e.getSchema(),n);if(i&&!(0,$I.isCompositeType)(i)){var o=(0,ZI.print)(n);e.reportError(new XI.GraphQLError('Fragment cannot condition on non composite type "'.concat(o,'".'),n))}}},FragmentDefinition:function(r){var n=(0,eA.typeFromAST)(e.getSchema(),r.typeCondition);if(n&&!(0,$I.isCompositeType)(n)){var i=(0,ZI.print)(r.typeCondition);e.reportError(new XI.GraphQLError('Fragment "'.concat(r.name.value,'" cannot condition on non composite type "').concat(i,'".'),r.typeCondition))}}}}});var AE=G(IE=>{"use strict";Object.defineProperty(IE,"__esModule",{value:!0});IE.VariablesAreInputTypesRule=L5;var N5=Je(),D5=hi(),x5=bt(),C5=Qa();function L5(e){return{VariableDefinition:function(r){var n=(0,C5.typeFromAST)(e.getSchema(),r.type);if(n&&!(0,x5.isInputType)(n)){var i=r.variable.name.value,o=(0,D5.print)(r.type);e.reportError(new N5.GraphQLError('Variable "$'.concat(i,'" cannot be non-input type "').concat(o,'".'),r.type))}}}}});var jE=G(RE=>{"use strict";Object.defineProperty(RE,"__esModule",{value:!0});RE.ScalarLeafsRule=A5;var tA=I5(jt()),rA=Je(),nA=bt();function I5(e){return e&&e.__esModule?e:{default:e}}function A5(e){return{Field:function(r){var n=e.getType(),i=r.selectionSet;if(n){if((0,nA.isLeafType)((0,nA.getNamedType)(n))){if(i){var o=r.name.value,s=(0,tA.default)(n);e.reportError(new rA.GraphQLError('Field "'.concat(o,'" must not have a selection since type "').concat(s,'" has no subfields.'),i))}}else if(!i){var l=r.name.value,d=(0,tA.default)(n);e.reportError(new rA.GraphQLError('Field "'.concat(l,'" of type "').concat(d,'" must have a selection of subfields. Did you mean "').concat(l,' { ... }"?'),r))}}}}}});var FE=G(PE=>{"use strict";Object.defineProperty(PE,"__esModule",{value:!0});PE.FieldsOnCorrectTypeRule=M5;var R5=Wg(Y_()),iA=Wg(gu()),j5=Wg(mu()),P5=Wg(Ud()),F5=Je(),ip=bt();function Wg(e){return e&&e.__esModule?e:{default:e}}function M5(e){return{Field:function(r){var n=e.getParentType();if(n){var i=e.getFieldDef();if(!i){var o=e.getSchema(),s=r.name.value,l=(0,iA.default)("to use an inline fragment on",q5(o,n,s));l===""&&(l=(0,iA.default)(V5(n,s))),e.reportError(new F5.GraphQLError('Cannot query field "'.concat(s,'" on type "').concat(n.name,'".')+l,r))}}}}}function q5(e,t,r){if(!(0,ip.isAbstractType)(t))return[];for(var n=new Set,i=Object.create(null),o=0,s=e.getPossibleTypes(t);o{"use strict";Object.defineProperty(ME,"__esModule",{value:!0});ME.UniqueFragmentNamesRule=G5;var U5=Je();function G5(e){var t=Object.create(null);return{OperationDefinition:function(){return!1},FragmentDefinition:function(n){var i=n.name.value;return t[i]?e.reportError(new U5.GraphQLError('There can be only one fragment named "'.concat(i,'".'),[t[i],n.name])):t[i]=n.name,!1}}}});var UE=G(VE=>{"use strict";Object.defineProperty(VE,"__esModule",{value:!0});VE.KnownFragmentNamesRule=B5;var Q5=Je();function B5(e){return{FragmentSpread:function(r){var n=r.name.value,i=e.getFragment(n);i||e.reportError(new Q5.GraphQLError('Unknown fragment "'.concat(n,'".'),r.name))}}}});var QE=G(GE=>{"use strict";Object.defineProperty(GE,"__esModule",{value:!0});GE.NoUnusedFragmentsRule=H5;var K5=Je();function H5(e){var t=[],r=[];return{OperationDefinition:function(i){return t.push(i),!1},FragmentDefinition:function(i){return r.push(i),!1},Document:{leave:function(){for(var i=Object.create(null),o=0;o{"use strict";Object.defineProperty(KE,"__esModule",{value:!0});KE.PossibleFragmentSpreadsRule=Y5;var Yg=W5(jt()),aA=Je(),BE=bt(),z5=Qa(),oA=Hd();function W5(e){return e&&e.__esModule?e:{default:e}}function Y5(e){return{InlineFragment:function(r){var n=e.getType(),i=e.getParentType();if((0,BE.isCompositeType)(n)&&(0,BE.isCompositeType)(i)&&!(0,oA.doTypesOverlap)(e.getSchema(),n,i)){var o=(0,Yg.default)(i),s=(0,Yg.default)(n);e.reportError(new aA.GraphQLError('Fragment cannot be spread here as objects of type "'.concat(o,'" can never be of type "').concat(s,'".'),r))}},FragmentSpread:function(r){var n=r.name.value,i=J5(e,n),o=e.getParentType();if(i&&o&&!(0,oA.doTypesOverlap)(e.getSchema(),i,o)){var s=(0,Yg.default)(o),l=(0,Yg.default)(i);e.reportError(new aA.GraphQLError('Fragment "'.concat(n,'" cannot be spread here as objects of type "').concat(s,'" can never be of type "').concat(l,'".'),r))}}}}function J5(e,t){var r=e.getFragment(t);if(r){var n=(0,z5.typeFromAST)(e.getSchema(),r.typeCondition);if((0,BE.isCompositeType)(n))return n}}});var WE=G(zE=>{"use strict";Object.defineProperty(zE,"__esModule",{value:!0});zE.NoFragmentCyclesRule=Z5;var X5=Je();function Z5(e){var t=Object.create(null),r=[],n=Object.create(null);return{OperationDefinition:function(){return!1},FragmentDefinition:function(s){return i(s),!1}};function i(o){if(!t[o.name.value]){var s=o.name.value;t[s]=!0;var l=e.getFragmentSpreads(o.selectionSet);if(l.length!==0){n[s]=r.length;for(var d=0;d{"use strict";Object.defineProperty(YE,"__esModule",{value:!0});YE.UniqueVariableNamesRule=e6;var $5=Je();function e6(e){var t=Object.create(null);return{OperationDefinition:function(){t=Object.create(null)},VariableDefinition:function(n){var i=n.variable.name.value;t[i]?e.reportError(new $5.GraphQLError('There can be only one variable named "$'.concat(i,'".'),[t[i],n.variable.name])):t[i]=n.variable.name}}}});var ZE=G(XE=>{"use strict";Object.defineProperty(XE,"__esModule",{value:!0});XE.NoUndefinedVariablesRule=r6;var t6=Je();function r6(e){var t=Object.create(null);return{OperationDefinition:{enter:function(){t=Object.create(null)},leave:function(n){for(var i=e.getRecursiveVariableUsages(n),o=0;o{"use strict";Object.defineProperty($E,"__esModule",{value:!0});$E.NoUnusedVariablesRule=i6;var n6=Je();function i6(e){var t=[];return{OperationDefinition:{enter:function(){t=[]},leave:function(n){for(var i=Object.create(null),o=e.getRecursiveVariableUsages(n),s=0;s{"use strict";Object.defineProperty(tS,"__esModule",{value:!0});tS.KnownDirectivesRule=u6;var a6=lA(jt()),uA=lA(_n()),sA=Je(),sr=Jt(),$r=$l(),o6=gi();function lA(e){return e&&e.__esModule?e:{default:e}}function u6(e){for(var t=Object.create(null),r=e.getSchema(),n=r?r.getDirectives():o6.specifiedDirectives,i=0;i{"use strict";Object.defineProperty(iS,"__esModule",{value:!0});iS.UniqueDirectivesPerLocationRule=d6;var c6=Je(),nS=Jt(),cA=ws(),f6=gi();function d6(e){for(var t=Object.create(null),r=e.getSchema(),n=r?r.getDirectives():f6.specifiedDirectives,i=0;i{"use strict";Object.defineProperty(Jg,"__esModule",{value:!0});Jg.KnownArgumentNamesRule=g6;Jg.KnownArgumentNamesOnDirectivesRule=mA;var fA=hA(gu()),dA=hA(mu()),pA=Je(),p6=Jt(),h6=gi();function hA(e){return e&&e.__esModule?e:{default:e}}function vA(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function gA(e){for(var t=1;t{"use strict";Object.defineProperty(uS,"__esModule",{value:!0});uS.UniqueArgumentNamesRule=y6;var m6=Je();function y6(e){var t=Object.create(null);return{Field:function(){t=Object.create(null)},Directive:function(){t=Object.create(null)},Argument:function(n){var i=n.name.value;return t[i]?e.reportError(new m6.GraphQLError('There can be only one argument named "'.concat(i,'".'),[t[i],n.name])):t[i]=n.name,!1}}}});var cS=G(lS=>{"use strict";Object.defineProperty(lS,"__esModule",{value:!0});lS.ValuesOfCorrectTypeRule=S6;var b6=op(Ni()),T6=op(vu()),ap=op(jt()),_6=op(gu()),E6=op(mu()),Ns=Je(),Xg=hi(),Ba=bt();function op(e){return e&&e.__esModule?e:{default:e}}function S6(e){return{ListValue:function(r){var n=(0,Ba.getNullableType)(e.getParentInputType());if(!(0,Ba.isListType)(n))return Ds(e,r),!1},ObjectValue:function(r){var n=(0,Ba.getNamedType)(e.getInputType());if(!(0,Ba.isInputObjectType)(n))return Ds(e,r),!1;for(var i=(0,T6.default)(r.fields,function(v){return v.name.value}),o=0,s=(0,b6.default)(n.getFields());o{"use strict";Object.defineProperty($g,"__esModule",{value:!0});$g.ProvidedRequiredArgumentsRule=N6;$g.ProvidedRequiredArgumentsOnDirectivesRule=kA;var yA=_A(jt()),Zg=_A(vu()),bA=Je(),TA=Jt(),k6=hi(),O6=gi(),fS=bt();function _A(e){return e&&e.__esModule?e:{default:e}}function EA(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function SA(e){for(var t=1;t{"use strict";Object.defineProperty(pS,"__esModule",{value:!0});pS.VariablesInAllowedPositionRule=A6;var OA=I6(jt()),x6=Je(),C6=Jt(),wA=bt(),L6=Qa(),NA=Hd();function I6(e){return e&&e.__esModule?e:{default:e}}function A6(e){var t=Object.create(null);return{OperationDefinition:{enter:function(){t=Object.create(null)},leave:function(n){for(var i=e.getRecursiveVariableUsages(n),o=0;o{"use strict";Object.defineProperty(TS,"__esModule",{value:!0});TS.OverlappingFieldsCanBeMergedRule=M6;var j6=gS(nc()),P6=gS(ic()),DA=gS(jt()),F6=Je(),vS=Jt(),xA=hi(),mi=bt(),CA=Qa();function gS(e){return e&&e.__esModule?e:{default:e}}function LA(e){return Array.isArray(e)?e.map(function(t){var r=t[0],n=t[1];return'subfields "'.concat(r,'" conflict because ')+LA(n)}).join(" and "):e}function M6(e){var t=new K6,r=new Map;return{SelectionSet:function(i){for(var o=q6(e,r,t,e.getParentType(),i),s=0;s1)for(var v=0;v0)return[[t,e.map(function(i){var o=i[0];return o})],e.reduce(function(i,o){var s=o[1];return i.concat(s)},[r]),e.reduce(function(i,o){var s=o[2];return i.concat(s)},[n])]}var K6=function(){function e(){this._data=Object.create(null)}var t=e.prototype;return t.has=function(n,i,o){var s=this._data[n],l=s&&s[i];return l===void 0?!1:o===!1?l===!1:!0},t.add=function(n,i,o){this._pairSetAdd(n,i,o),this._pairSetAdd(i,n,o)},t._pairSetAdd=function(n,i,o){var s=this._data[n];s||(s=Object.create(null),this._data[n]=s),s[i]=o},e}()});var SS=G(ES=>{"use strict";Object.defineProperty(ES,"__esModule",{value:!0});ES.UniqueInputFieldNamesRule=z6;var H6=Je();function z6(e){var t=[],r=Object.create(null);return{ObjectValue:{enter:function(){t.push(r),r=Object.create(null)},leave:function(){r=t.pop()}},ObjectField:function(i){var o=i.name.value;r[o]?e.reportError(new H6.GraphQLError('There can be only one input field named "'.concat(o,'".'),[r[o],i.name])):r[o]=i.name}}}});var OS=G(kS=>{"use strict";Object.defineProperty(kS,"__esModule",{value:!0});kS.LoneSchemaDefinitionRule=W6;var RA=Je();function W6(e){var t,r,n,i=e.getSchema(),o=(t=(r=(n=i==null?void 0:i.astNode)!==null&&n!==void 0?n:i==null?void 0:i.getQueryType())!==null&&r!==void 0?r:i==null?void 0:i.getMutationType())!==null&&t!==void 0?t:i==null?void 0:i.getSubscriptionType(),s=0;return{SchemaDefinition:function(d){if(o){e.reportError(new RA.GraphQLError("Cannot define a new schema within a schema extension.",d));return}s>0&&e.reportError(new RA.GraphQLError("Must provide only one schema definition.",d)),++s}}}});var NS=G(wS=>{"use strict";Object.defineProperty(wS,"__esModule",{value:!0});wS.UniqueOperationTypesRule=Y6;var jA=Je();function Y6(e){var t=e.getSchema(),r=Object.create(null),n=t?{query:t.getQueryType(),mutation:t.getMutationType(),subscription:t.getSubscriptionType()}:{};return{SchemaDefinition:i,SchemaExtension:i};function i(o){for(var s,l=(s=o.operationTypes)!==null&&s!==void 0?s:[],d=0;d{"use strict";Object.defineProperty(DS,"__esModule",{value:!0});DS.UniqueTypeNamesRule=J6;var PA=Je();function J6(e){var t=Object.create(null),r=e.getSchema();return{ScalarTypeDefinition:n,ObjectTypeDefinition:n,InterfaceTypeDefinition:n,UnionTypeDefinition:n,EnumTypeDefinition:n,InputObjectTypeDefinition:n};function n(i){var o=i.name.value;if(r!=null&&r.getType(o)){e.reportError(new PA.GraphQLError('Type "'.concat(o,'" already exists in the schema. It cannot also be defined in this type definition.'),i.name));return}return t[o]?e.reportError(new PA.GraphQLError('There can be only one type named "'.concat(o,'".'),[t[o],i.name])):t[o]=i.name,!1}}});var LS=G(CS=>{"use strict";Object.defineProperty(CS,"__esModule",{value:!0});CS.UniqueEnumValueNamesRule=Z6;var FA=Je(),X6=bt();function Z6(e){var t=e.getSchema(),r=t?t.getTypeMap():Object.create(null),n=Object.create(null);return{EnumTypeDefinition:i,EnumTypeExtension:i};function i(o){var s,l=o.name.value;n[l]||(n[l]=Object.create(null));for(var d=(s=o.values)!==null&&s!==void 0?s:[],h=n[l],v=0;v{"use strict";Object.defineProperty(AS,"__esModule",{value:!0});AS.UniqueFieldDefinitionNamesRule=$6;var MA=Je(),IS=bt();function $6(e){var t=e.getSchema(),r=t?t.getTypeMap():Object.create(null),n=Object.create(null);return{InputObjectTypeDefinition:i,InputObjectTypeExtension:i,InterfaceTypeDefinition:i,InterfaceTypeExtension:i,ObjectTypeDefinition:i,ObjectTypeExtension:i};function i(o){var s,l=o.name.value;n[l]||(n[l]=Object.create(null));for(var d=(s=o.fields)!==null&&s!==void 0?s:[],h=n[l],v=0;v{"use strict";Object.defineProperty(jS,"__esModule",{value:!0});jS.UniqueDirectiveNamesRule=t9;var qA=Je();function t9(e){var t=Object.create(null),r=e.getSchema();return{DirectiveDefinition:function(i){var o=i.name.value;if(r!=null&&r.getDirective(o)){e.reportError(new qA.GraphQLError('Directive "@'.concat(o,'" already exists in the schema. It cannot be redefined.'),i.name));return}return t[o]?e.reportError(new qA.GraphQLError('There can be only one directive named "@'.concat(o,'".'),[t[o],i.name])):t[o]=i.name,!1}}}});var MS=G(FS=>{"use strict";Object.defineProperty(FS,"__esModule",{value:!0});FS.PossibleTypeExtensionsRule=a9;var VA=nm(jt()),UA=nm(_n()),r9=nm(gu()),n9=nm(mu()),GA=Je(),dr=Jt(),i9=ws(),pc=bt(),Ou;function nm(e){return e&&e.__esModule?e:{default:e}}function hc(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a9(e){for(var t=e.getSchema(),r=Object.create(null),n=0,i=e.getDocument().definitions;n{"use strict";Object.defineProperty(vc,"__esModule",{value:!0});vc.specifiedSDLRules=vc.specifiedRules=void 0;var l9=TE(),c9=EE(),f9=kE(),d9=wE(),QA=xE(),p9=LE(),h9=AE(),v9=jE(),g9=FE(),m9=qE(),y9=UE(),b9=QE(),T9=HE(),_9=WE(),E9=JE(),S9=ZE(),k9=eS(),BA=rS(),KA=aS(),HA=oS(),zA=sS(),O9=cS(),WA=dS(),w9=hS(),N9=_S(),YA=SS(),D9=OS(),x9=NS(),C9=xS(),L9=LS(),I9=RS(),A9=PS(),R9=MS(),j9=Object.freeze([l9.ExecutableDefinitionsRule,c9.UniqueOperationNamesRule,f9.LoneAnonymousOperationRule,d9.SingleFieldSubscriptionsRule,QA.KnownTypeNamesRule,p9.FragmentsOnCompositeTypesRule,h9.VariablesAreInputTypesRule,v9.ScalarLeafsRule,g9.FieldsOnCorrectTypeRule,m9.UniqueFragmentNamesRule,y9.KnownFragmentNamesRule,b9.NoUnusedFragmentsRule,T9.PossibleFragmentSpreadsRule,_9.NoFragmentCyclesRule,E9.UniqueVariableNamesRule,S9.NoUndefinedVariablesRule,k9.NoUnusedVariablesRule,BA.KnownDirectivesRule,KA.UniqueDirectivesPerLocationRule,HA.KnownArgumentNamesRule,zA.UniqueArgumentNamesRule,O9.ValuesOfCorrectTypeRule,WA.ProvidedRequiredArgumentsRule,w9.VariablesInAllowedPositionRule,N9.OverlappingFieldsCanBeMergedRule,YA.UniqueInputFieldNamesRule]);vc.specifiedRules=j9;var P9=Object.freeze([D9.LoneSchemaDefinitionRule,x9.UniqueOperationTypesRule,C9.UniqueTypeNamesRule,L9.UniqueEnumValueNamesRule,I9.UniqueFieldDefinitionNamesRule,A9.UniqueDirectiveNamesRule,QA.KnownTypeNamesRule,BA.KnownDirectivesRule,KA.UniqueDirectivesPerLocationRule,R9.PossibleTypeExtensionsRule,HA.KnownArgumentNamesOnDirectivesRule,zA.UniqueArgumentNamesRule,YA.UniqueInputFieldNamesRule,WA.ProvidedRequiredArgumentsOnDirectivesRule]);vc.specifiedSDLRules=P9});var US=G(wu=>{"use strict";Object.defineProperty(wu,"__esModule",{value:!0});wu.ValidationContext=wu.SDLValidationContext=wu.ASTValidationContext=void 0;var JA=Jt(),F9=hu(),XA=zg();function ZA(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var VS=function(){function e(r,n){this._ast=r,this._fragments=void 0,this._fragmentSpreads=new Map,this._recursivelyReferencedFragments=new Map,this._onError=n}var t=e.prototype;return t.reportError=function(n){this._onError(n)},t.getDocument=function(){return this._ast},t.getFragment=function(n){var i=this._fragments;return i||(this._fragments=i=this.getDocument().definitions.reduce(function(o,s){return s.kind===JA.Kind.FRAGMENT_DEFINITION&&(o[s.name.value]=s),o},Object.create(null))),i[n]},t.getFragmentSpreads=function(n){var i=this._fragmentSpreads.get(n);if(!i){i=[];for(var o=[n];o.length!==0;)for(var s=o.pop(),l=0,d=s.selections;l{"use strict";Object.defineProperty(gc,"__esModule",{value:!0});gc.validate=B9;gc.validateSDL=GS;gc.assertValidSDL=K9;gc.assertValidSDLExtension=H9;var V9=Q9(Hi()),U9=Je(),im=hu(),G9=rp(),$A=zg(),eR=qS(),tR=US();function Q9(e){return e&&e.__esModule?e:{default:e}}function B9(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:eR.specifiedRules,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:new $A.TypeInfo(e),i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{maxErrors:void 0};t||(0,V9.default)(0,"Must provide document."),(0,G9.assertValidSchema)(e);var o=Object.freeze({}),s=[],l=new tR.ValidationContext(e,t,n,function(h){if(i.maxErrors!=null&&s.length>=i.maxErrors)throw s.push(new U9.GraphQLError("Too many validation errors, error limit reached. Validation aborted.")),o;s.push(h)}),d=(0,im.visitInParallel)(r.map(function(h){return h(l)}));try{(0,im.visit)(t,(0,$A.visitWithTypeInfo)(n,d))}catch(h){if(h!==o)throw h}return s}function GS(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:eR.specifiedSDLRules,n=[],i=new tR.SDLValidationContext(e,t,function(s){n.push(s)}),o=r.map(function(s){return s(i)});return(0,im.visit)(e,(0,im.visitInParallel)(o)),n}function K9(e){var t=GS(e);if(t.length!==0)throw new Error(t.map(function(r){return r.message}).join(` -`))}function _6(e,t){var r=oS(e,t);if(r.length!==0)throw new Error(r.map(function(n){return n.message}).join(` +`))}function H9(e,t){var r=GS(e,t);if(r.length!==0)throw new Error(r.map(function(n){return n.message}).join(` -`))}});var tx=U(uS=>{"use strict";Object.defineProperty(uS,"__esModule",{value:!0});uS.default=S6;function S6(e){var t;return function(n,a,o){t||(t=new WeakMap);var s=t.get(n),l;if(s){if(l=s.get(a),l){var d=l.get(o);if(d!==void 0)return d}}else s=new WeakMap,t.set(n,s);l||(l=new WeakMap,s.set(a,l));var h=e(n,a,o);return l.set(o,h),h}}});var rx=U(sS=>{"use strict";Object.defineProperty(sS,"__esModule",{value:!0});sS.default=O6;var D6=k6(Pv());function k6(e){return e&&e.__esModule?e:{default:e}}function O6(e,t,r){return e.reduce(function(n,a){return(0,D6.default)(n)?n.then(function(o){return t(o,a)}):t(n,a)},r)}});var nx=U(lS=>{"use strict";Object.defineProperty(lS,"__esModule",{value:!0});lS.default=C6;function C6(e){var t=Object.keys(e),r=t.map(function(n){return e[n]});return Promise.all(r).then(function(n){return n.reduce(function(a,o,s){return a[t[s]]=o,a},Object.create(null))})}});var Ud=U(Bg=>{"use strict";Object.defineProperty(Bg,"__esModule",{value:!0});Bg.addPath=w6;Bg.pathToArray=A6;function w6(e,t,r){return{prev:e,key:t,typename:r}}function A6(e){for(var t=[],r=e;r;)t.push(r.key),r=r.prev;return t.reverse()}});var Ug=U(cS=>{"use strict";Object.defineProperty(cS,"__esModule",{value:!0});cS.getOperationRootType=N6;var Vg=Be();function N6(e,t){if(t.operation==="query"){var r=e.getQueryType();if(!r)throw new Vg.GraphQLError("Schema does not define the required query root type.",t);return r}if(t.operation==="mutation"){var n=e.getMutationType();if(!n)throw new Vg.GraphQLError("Schema is not configured for mutations.",t);return n}if(t.operation==="subscription"){var a=e.getSubscriptionType();if(!a)throw new Vg.GraphQLError("Schema is not configured for subscriptions.",t);return a}throw new Vg.GraphQLError("Can only have query, mutation and subscription operations.",t)}});var dS=U(fS=>{"use strict";Object.defineProperty(fS,"__esModule",{value:!0});fS.default=L6;function L6(e){return e.map(function(t){return typeof t=="number"?"["+t.toString()+"]":"."+t}).join("")}});var Qd=U(pS=>{"use strict";Object.defineProperty(pS,"__esModule",{value:!0});pS.valueFromAST=Gd;var x6=Gg(oi()),I6=Gg(tu()),R6=Gg(Ot()),F6=Gg(un()),ec=Vt(),ds=lt();function Gg(e){return e&&e.__esModule?e:{default:e}}function Gd(e,t,r){if(!!e){if(e.kind===ec.Kind.VARIABLE){var n=e.name.value;if(r==null||r[n]===void 0)return;var a=r[n];return a===null&&(0,ds.isNonNullType)(t)?void 0:a}if((0,ds.isNonNullType)(t))return e.kind===ec.Kind.NULL?void 0:Gd(e,t.ofType,r);if(e.kind===ec.Kind.NULL)return null;if((0,ds.isListType)(t)){var o=t.ofType;if(e.kind===ec.Kind.LIST){for(var s=[],l=0,d=e.values;l{"use strict";Object.defineProperty(hS,"__esModule",{value:!0});hS.coerceInputValue=G6;var j6=pu(oi()),Qg=pu(Ot()),P6=pu(un()),M6=pu(ru()),q6=pu(Sa()),B6=pu(bg()),V6=pu(nu()),U6=pu(dS()),co=Ud(),ps=Be(),Kd=lt();function pu(e){return e&&e.__esModule?e:{default:e}}function G6(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Q6;return Hd(e,t,r)}function Q6(e,t,r){var n="Invalid value "+(0,Qg.default)(t);throw e.length>0&&(n+=' at "value'.concat((0,U6.default)(e),'"')),r.message=n+": "+r.message,r}function Hd(e,t,r,n){if((0,Kd.isNonNullType)(t)){if(e!=null)return Hd(e,t.ofType,r,n);r((0,co.pathToArray)(n),e,new ps.GraphQLError('Expected non-nullable type "'.concat((0,Qg.default)(t),'" not to be null.')));return}if(e==null)return null;if((0,Kd.isListType)(t)){var a=t.ofType,o=(0,B6.default)(e,function(m,k){var w=(0,co.addPath)(n,k,void 0);return Hd(m,a,r,w)});return o!=null?o:[Hd(e,a,r,n)]}if((0,Kd.isInputObjectType)(t)){if(!(0,q6.default)(e)){r((0,co.pathToArray)(n),e,new ps.GraphQLError('Expected type "'.concat(t.name,'" to be an object.')));return}for(var s={},l=t.getFields(),d=0,h=(0,j6.default)(l);d{"use strict";Object.defineProperty(zd,"__esModule",{value:!0});zd.getVariableValues=J6;zd.getArgumentValues=sx;zd.getDirectiveValues=Z6;var K6=Kg(ql()),H6=Kg(tu()),tc=Kg(Ot()),z6=Kg(dS()),fo=Be(),ax=Vt(),ox=Wn(),rc=lt(),W6=wa(),ux=Qd(),Y6=vS();function Kg(e){return e&&e.__esModule?e:{default:e}}function J6(e,t,r,n){var a=[],o=n==null?void 0:n.maxErrors;try{var s=X6(e,t,r,function(l){if(o!=null&&a.length>=o)throw new fo.GraphQLError("Too many errors processing variables, error limit reached. Execution aborted.");a.push(l)});if(a.length===0)return{coerced:s}}catch(l){a.push(l)}return{errors:a}}function X6(e,t,r,n){for(var a={},o=function(h){var v=t[h],b=v.variable.name.value,T=(0,W6.typeFromAST)(e,v.type);if(!(0,rc.isInputType)(T)){var A=(0,ox.print)(v.type);return n(new fo.GraphQLError('Variable "$'.concat(b,'" expected value of type "').concat(A,'" which cannot be used as an input type.'),v.type)),"continue"}if(!lx(r,b)){if(v.defaultValue)a[b]=(0,ux.valueFromAST)(v.defaultValue,T);else if((0,rc.isNonNullType)(T)){var L=(0,tc.default)(T);n(new fo.GraphQLError('Variable "$'.concat(b,'" of required type "').concat(L,'" was not provided.'),v))}return"continue"}var S=r[b];if(S===null&&(0,rc.isNonNullType)(T)){var y=(0,tc.default)(T);return n(new fo.GraphQLError('Variable "$'.concat(b,'" of non-null type "').concat(y,'" must not be null.'),v)),"continue"}a[b]=(0,Y6.coerceInputValue)(S,T,function(_,m,k){var w='Variable "$'.concat(b,'" got invalid value ')+(0,tc.default)(m);_.length>0&&(w+=' at "'.concat(b).concat((0,z6.default)(_),'"')),n(new fo.GraphQLError(w+"; "+k.message,v,void 0,void 0,void 0,k.originalError))})},s=0;s{"use strict";Object.defineProperty(si,"__esModule",{value:!0});si.execute=uH;si.executeSync=sH;si.assertValidExecutionArguments=px;si.buildExecutionContext=hx;si.collectFields=Jd;si.buildResolveInfo=yx;si.getFieldDef=Dx;si.defaultFieldResolver=si.defaultTypeResolver=void 0;var nc=ho(Ot()),$6=ho(tx()),eH=ho(un()),cx=ho(wi()),Li=ho(Pv()),gS=ho(Sa()),tH=ho(bg()),rH=ho(rx()),nH=ho(nx()),hs=Ud(),Na=Be(),Hg=Td(),Yd=Vt(),iH=Pd(),ic=Yn(),fx=Jn(),po=lt(),aH=wa(),oH=Ug(),zg=Wd();function ho(e){return e&&e.__esModule?e:{default:e}}function uH(e,t,r,n,a,o,s,l){return arguments.length===1?mS(e):mS({schema:e,document:t,rootValue:r,contextValue:n,variableValues:a,operationName:o,fieldResolver:s,typeResolver:l})}function sH(e){var t=mS(e);if((0,Li.default)(t))throw new Error("GraphQL execution failed to complete synchronously.");return t}function mS(e){var t=e.schema,r=e.document,n=e.rootValue,a=e.contextValue,o=e.variableValues,s=e.operationName,l=e.fieldResolver,d=e.typeResolver;px(t,r,o);var h=hx(t,r,n,a,o,s,l,d);if(Array.isArray(h))return{errors:h};var v=lH(h,h.operation,n);return dx(h,v)}function dx(e,t){return(0,Li.default)(t)?t.then(function(r){return dx(e,r)}):e.errors.length===0?{data:t}:{errors:e.errors,data:t}}function px(e,t,r){t||(0,cx.default)(0,"Must provide document."),(0,iH.assertValidSchema)(e),r==null||(0,gS.default)(r)||(0,cx.default)(0,"Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.")}function hx(e,t,r,n,a,o,s,l){for(var d,h,v,b=Object.create(null),T=0,A=t.definitions;T{"use strict";Object.defineProperty(Jg,"__esModule",{value:!0});Jg.graphql=SH;Jg.graphqlSync=DH;var mH=_H(Pv()),yH=Pl(),bH=$l(),TH=Pd(),EH=Zd();function _H(e){return e&&e.__esModule?e:{default:e}}function SH(e,t,r,n,a,o,s,l){var d=arguments;return new Promise(function(h){return h(d.length===1?Yg(e):Yg({schema:e,source:t,rootValue:r,contextValue:n,variableValues:a,operationName:o,fieldResolver:s,typeResolver:l}))})}function DH(e,t,r,n,a,o,s,l){var d=arguments.length===1?Yg(e):Yg({schema:e,source:t,rootValue:r,contextValue:n,variableValues:a,operationName:o,fieldResolver:s,typeResolver:l});if((0,mH.default)(d))throw new Error("GraphQL execution failed to complete synchronously.");return d}function Yg(e){var t=e.schema,r=e.source,n=e.rootValue,a=e.contextValue,o=e.variableValues,s=e.operationName,l=e.fieldResolver,d=e.typeResolver,h=(0,TH.validateSchema)(t);if(h.length>0)return{errors:h};var v;try{v=(0,yH.parse)(r)}catch(T){return{errors:[T]}}var b=(0,bH.validate)(t,v);return b.length>0?{errors:b}:(0,EH.execute)({schema:t,document:v,rootValue:n,contextValue:a,variableValues:o,operationName:s,fieldResolver:l,typeResolver:d})}});var Cx=U(me=>{"use strict";Object.defineProperty(me,"__esModule",{value:!0});Object.defineProperty(me,"isSchema",{enumerable:!0,get:function(){return TS.isSchema}});Object.defineProperty(me,"assertSchema",{enumerable:!0,get:function(){return TS.assertSchema}});Object.defineProperty(me,"GraphQLSchema",{enumerable:!0,get:function(){return TS.GraphQLSchema}});Object.defineProperty(me,"isType",{enumerable:!0,get:function(){return We.isType}});Object.defineProperty(me,"isScalarType",{enumerable:!0,get:function(){return We.isScalarType}});Object.defineProperty(me,"isObjectType",{enumerable:!0,get:function(){return We.isObjectType}});Object.defineProperty(me,"isInterfaceType",{enumerable:!0,get:function(){return We.isInterfaceType}});Object.defineProperty(me,"isUnionType",{enumerable:!0,get:function(){return We.isUnionType}});Object.defineProperty(me,"isEnumType",{enumerable:!0,get:function(){return We.isEnumType}});Object.defineProperty(me,"isInputObjectType",{enumerable:!0,get:function(){return We.isInputObjectType}});Object.defineProperty(me,"isListType",{enumerable:!0,get:function(){return We.isListType}});Object.defineProperty(me,"isNonNullType",{enumerable:!0,get:function(){return We.isNonNullType}});Object.defineProperty(me,"isInputType",{enumerable:!0,get:function(){return We.isInputType}});Object.defineProperty(me,"isOutputType",{enumerable:!0,get:function(){return We.isOutputType}});Object.defineProperty(me,"isLeafType",{enumerable:!0,get:function(){return We.isLeafType}});Object.defineProperty(me,"isCompositeType",{enumerable:!0,get:function(){return We.isCompositeType}});Object.defineProperty(me,"isAbstractType",{enumerable:!0,get:function(){return We.isAbstractType}});Object.defineProperty(me,"isWrappingType",{enumerable:!0,get:function(){return We.isWrappingType}});Object.defineProperty(me,"isNullableType",{enumerable:!0,get:function(){return We.isNullableType}});Object.defineProperty(me,"isNamedType",{enumerable:!0,get:function(){return We.isNamedType}});Object.defineProperty(me,"isRequiredArgument",{enumerable:!0,get:function(){return We.isRequiredArgument}});Object.defineProperty(me,"isRequiredInputField",{enumerable:!0,get:function(){return We.isRequiredInputField}});Object.defineProperty(me,"assertType",{enumerable:!0,get:function(){return We.assertType}});Object.defineProperty(me,"assertScalarType",{enumerable:!0,get:function(){return We.assertScalarType}});Object.defineProperty(me,"assertObjectType",{enumerable:!0,get:function(){return We.assertObjectType}});Object.defineProperty(me,"assertInterfaceType",{enumerable:!0,get:function(){return We.assertInterfaceType}});Object.defineProperty(me,"assertUnionType",{enumerable:!0,get:function(){return We.assertUnionType}});Object.defineProperty(me,"assertEnumType",{enumerable:!0,get:function(){return We.assertEnumType}});Object.defineProperty(me,"assertInputObjectType",{enumerable:!0,get:function(){return We.assertInputObjectType}});Object.defineProperty(me,"assertListType",{enumerable:!0,get:function(){return We.assertListType}});Object.defineProperty(me,"assertNonNullType",{enumerable:!0,get:function(){return We.assertNonNullType}});Object.defineProperty(me,"assertInputType",{enumerable:!0,get:function(){return We.assertInputType}});Object.defineProperty(me,"assertOutputType",{enumerable:!0,get:function(){return We.assertOutputType}});Object.defineProperty(me,"assertLeafType",{enumerable:!0,get:function(){return We.assertLeafType}});Object.defineProperty(me,"assertCompositeType",{enumerable:!0,get:function(){return We.assertCompositeType}});Object.defineProperty(me,"assertAbstractType",{enumerable:!0,get:function(){return We.assertAbstractType}});Object.defineProperty(me,"assertWrappingType",{enumerable:!0,get:function(){return We.assertWrappingType}});Object.defineProperty(me,"assertNullableType",{enumerable:!0,get:function(){return We.assertNullableType}});Object.defineProperty(me,"assertNamedType",{enumerable:!0,get:function(){return We.assertNamedType}});Object.defineProperty(me,"getNullableType",{enumerable:!0,get:function(){return We.getNullableType}});Object.defineProperty(me,"getNamedType",{enumerable:!0,get:function(){return We.getNamedType}});Object.defineProperty(me,"GraphQLScalarType",{enumerable:!0,get:function(){return We.GraphQLScalarType}});Object.defineProperty(me,"GraphQLObjectType",{enumerable:!0,get:function(){return We.GraphQLObjectType}});Object.defineProperty(me,"GraphQLInterfaceType",{enumerable:!0,get:function(){return We.GraphQLInterfaceType}});Object.defineProperty(me,"GraphQLUnionType",{enumerable:!0,get:function(){return We.GraphQLUnionType}});Object.defineProperty(me,"GraphQLEnumType",{enumerable:!0,get:function(){return We.GraphQLEnumType}});Object.defineProperty(me,"GraphQLInputObjectType",{enumerable:!0,get:function(){return We.GraphQLInputObjectType}});Object.defineProperty(me,"GraphQLList",{enumerable:!0,get:function(){return We.GraphQLList}});Object.defineProperty(me,"GraphQLNonNull",{enumerable:!0,get:function(){return We.GraphQLNonNull}});Object.defineProperty(me,"isDirective",{enumerable:!0,get:function(){return La.isDirective}});Object.defineProperty(me,"assertDirective",{enumerable:!0,get:function(){return La.assertDirective}});Object.defineProperty(me,"GraphQLDirective",{enumerable:!0,get:function(){return La.GraphQLDirective}});Object.defineProperty(me,"isSpecifiedDirective",{enumerable:!0,get:function(){return La.isSpecifiedDirective}});Object.defineProperty(me,"specifiedDirectives",{enumerable:!0,get:function(){return La.specifiedDirectives}});Object.defineProperty(me,"GraphQLIncludeDirective",{enumerable:!0,get:function(){return La.GraphQLIncludeDirective}});Object.defineProperty(me,"GraphQLSkipDirective",{enumerable:!0,get:function(){return La.GraphQLSkipDirective}});Object.defineProperty(me,"GraphQLDeprecatedDirective",{enumerable:!0,get:function(){return La.GraphQLDeprecatedDirective}});Object.defineProperty(me,"GraphQLSpecifiedByDirective",{enumerable:!0,get:function(){return La.GraphQLSpecifiedByDirective}});Object.defineProperty(me,"DEFAULT_DEPRECATION_REASON",{enumerable:!0,get:function(){return La.DEFAULT_DEPRECATION_REASON}});Object.defineProperty(me,"isSpecifiedScalarType",{enumerable:!0,get:function(){return vs.isSpecifiedScalarType}});Object.defineProperty(me,"specifiedScalarTypes",{enumerable:!0,get:function(){return vs.specifiedScalarTypes}});Object.defineProperty(me,"GraphQLInt",{enumerable:!0,get:function(){return vs.GraphQLInt}});Object.defineProperty(me,"GraphQLFloat",{enumerable:!0,get:function(){return vs.GraphQLFloat}});Object.defineProperty(me,"GraphQLString",{enumerable:!0,get:function(){return vs.GraphQLString}});Object.defineProperty(me,"GraphQLBoolean",{enumerable:!0,get:function(){return vs.GraphQLBoolean}});Object.defineProperty(me,"GraphQLID",{enumerable:!0,get:function(){return vs.GraphQLID}});Object.defineProperty(me,"isIntrospectionType",{enumerable:!0,get:function(){return Zn.isIntrospectionType}});Object.defineProperty(me,"introspectionTypes",{enumerable:!0,get:function(){return Zn.introspectionTypes}});Object.defineProperty(me,"__Schema",{enumerable:!0,get:function(){return Zn.__Schema}});Object.defineProperty(me,"__Directive",{enumerable:!0,get:function(){return Zn.__Directive}});Object.defineProperty(me,"__DirectiveLocation",{enumerable:!0,get:function(){return Zn.__DirectiveLocation}});Object.defineProperty(me,"__Type",{enumerable:!0,get:function(){return Zn.__Type}});Object.defineProperty(me,"__Field",{enumerable:!0,get:function(){return Zn.__Field}});Object.defineProperty(me,"__InputValue",{enumerable:!0,get:function(){return Zn.__InputValue}});Object.defineProperty(me,"__EnumValue",{enumerable:!0,get:function(){return Zn.__EnumValue}});Object.defineProperty(me,"__TypeKind",{enumerable:!0,get:function(){return Zn.__TypeKind}});Object.defineProperty(me,"TypeKind",{enumerable:!0,get:function(){return Zn.TypeKind}});Object.defineProperty(me,"SchemaMetaFieldDef",{enumerable:!0,get:function(){return Zn.SchemaMetaFieldDef}});Object.defineProperty(me,"TypeMetaFieldDef",{enumerable:!0,get:function(){return Zn.TypeMetaFieldDef}});Object.defineProperty(me,"TypeNameMetaFieldDef",{enumerable:!0,get:function(){return Zn.TypeNameMetaFieldDef}});Object.defineProperty(me,"validateSchema",{enumerable:!0,get:function(){return Ox.validateSchema}});Object.defineProperty(me,"assertValidSchema",{enumerable:!0,get:function(){return Ox.assertValidSchema}});var TS=us(),We=lt(),La=Jn(),vs=Ca(),Zn=Yn(),Ox=Pd()});var Nx=U(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});Object.defineProperty(Ft,"Source",{enumerable:!0,get:function(){return kH.Source}});Object.defineProperty(Ft,"getLocation",{enumerable:!0,get:function(){return OH.getLocation}});Object.defineProperty(Ft,"printLocation",{enumerable:!0,get:function(){return wx.printLocation}});Object.defineProperty(Ft,"printSourceLocation",{enumerable:!0,get:function(){return wx.printSourceLocation}});Object.defineProperty(Ft,"Kind",{enumerable:!0,get:function(){return CH.Kind}});Object.defineProperty(Ft,"TokenKind",{enumerable:!0,get:function(){return wH.TokenKind}});Object.defineProperty(Ft,"Lexer",{enumerable:!0,get:function(){return AH.Lexer}});Object.defineProperty(Ft,"parse",{enumerable:!0,get:function(){return ES.parse}});Object.defineProperty(Ft,"parseValue",{enumerable:!0,get:function(){return ES.parseValue}});Object.defineProperty(Ft,"parseType",{enumerable:!0,get:function(){return ES.parseType}});Object.defineProperty(Ft,"print",{enumerable:!0,get:function(){return NH.print}});Object.defineProperty(Ft,"visit",{enumerable:!0,get:function(){return Xg.visit}});Object.defineProperty(Ft,"visitInParallel",{enumerable:!0,get:function(){return Xg.visitInParallel}});Object.defineProperty(Ft,"getVisitFn",{enumerable:!0,get:function(){return Xg.getVisitFn}});Object.defineProperty(Ft,"BREAK",{enumerable:!0,get:function(){return Xg.BREAK}});Object.defineProperty(Ft,"Location",{enumerable:!0,get:function(){return Ax.Location}});Object.defineProperty(Ft,"Token",{enumerable:!0,get:function(){return Ax.Token}});Object.defineProperty(Ft,"isDefinitionNode",{enumerable:!0,get:function(){return vo.isDefinitionNode}});Object.defineProperty(Ft,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return vo.isExecutableDefinitionNode}});Object.defineProperty(Ft,"isSelectionNode",{enumerable:!0,get:function(){return vo.isSelectionNode}});Object.defineProperty(Ft,"isValueNode",{enumerable:!0,get:function(){return vo.isValueNode}});Object.defineProperty(Ft,"isTypeNode",{enumerable:!0,get:function(){return vo.isTypeNode}});Object.defineProperty(Ft,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return vo.isTypeSystemDefinitionNode}});Object.defineProperty(Ft,"isTypeDefinitionNode",{enumerable:!0,get:function(){return vo.isTypeDefinitionNode}});Object.defineProperty(Ft,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return vo.isTypeSystemExtensionNode}});Object.defineProperty(Ft,"isTypeExtensionNode",{enumerable:!0,get:function(){return vo.isTypeExtensionNode}});Object.defineProperty(Ft,"DirectiveLocation",{enumerable:!0,get:function(){return LH.DirectiveLocation}});var kH=Zv(),OH=qv(),wx=CT(),CH=Vt(),wH=Rl(),AH=tg(),ES=Pl(),NH=Wn(),Xg=eu(),Ax=Il(),vo=ls(),LH=Fl()});var Lx=U(hu=>{"use strict";Object.defineProperty(hu,"__esModule",{value:!0});Object.defineProperty(hu,"responsePathAsArray",{enumerable:!0,get:function(){return xH.pathToArray}});Object.defineProperty(hu,"execute",{enumerable:!0,get:function(){return Zg.execute}});Object.defineProperty(hu,"executeSync",{enumerable:!0,get:function(){return Zg.executeSync}});Object.defineProperty(hu,"defaultFieldResolver",{enumerable:!0,get:function(){return Zg.defaultFieldResolver}});Object.defineProperty(hu,"defaultTypeResolver",{enumerable:!0,get:function(){return Zg.defaultTypeResolver}});Object.defineProperty(hu,"getDirectiveValues",{enumerable:!0,get:function(){return IH.getDirectiveValues}});var xH=Ud(),Zg=Zd(),IH=Wd()});var xx=U(_S=>{"use strict";Object.defineProperty(_S,"__esModule",{value:!0});_S.default=FH;var RH=Da();function FH(e){return typeof(e==null?void 0:e[RH.SYMBOL_ASYNC_ITERATOR])=="function"}});var jx=U(SS=>{"use strict";Object.defineProperty(SS,"__esModule",{value:!0});SS.default=PH;var Ix=Da();function jH(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function PH(e,t,r){var n=e[Ix.SYMBOL_ASYNC_ITERATOR],a=n.call(e),o,s;typeof a.return=="function"&&(o=a.return,s=function(b){var T=function(){return Promise.reject(b)};return o.call(a).then(T,T)});function l(v){return v.done?v:Rx(v.value,t).then(Fx,s)}var d;if(r){var h=r;d=function(b){return Rx(b,h).then(Fx,s)}}return jH({next:function(){return a.next().then(l,d)},return:function(){return o?o.call(a).then(l,d):Promise.resolve({value:void 0,done:!0})},throw:function(b){return typeof a.throw=="function"?a.throw(b).then(l,d):Promise.reject(b).catch(s)}},Ix.SYMBOL_ASYNC_ITERATOR,function(){return this})}function Rx(e,t){return new Promise(function(r){return r(t(e))})}function Fx(e){return{value:e,done:!1}}});var Gx=U($g=>{"use strict";Object.defineProperty($g,"__esModule",{value:!0});$g.subscribe=UH;$g.createSourceEventStream=Ux;var MH=kS(Ot()),Px=kS(xx()),DS=Ud(),Mx=Be(),qx=Td(),qH=Wd(),ac=Zd(),BH=Ug(),VH=kS(jx());function kS(e){return e&&e.__esModule?e:{default:e}}function UH(e,t,r,n,a,o,s,l){return arguments.length===1?Vx(e):Vx({schema:e,document:t,rootValue:r,contextValue:n,variableValues:a,operationName:o,fieldResolver:s,subscribeFieldResolver:l})}function Bx(e){if(e instanceof Mx.GraphQLError)return{errors:[e]};throw e}function Vx(e){var t=e.schema,r=e.document,n=e.rootValue,a=e.contextValue,o=e.variableValues,s=e.operationName,l=e.fieldResolver,d=e.subscribeFieldResolver,h=Ux(t,r,n,a,o,s,d),v=function(T){return(0,ac.execute)({schema:t,document:r,rootValue:T,contextValue:a,variableValues:o,operationName:s,fieldResolver:l})};return h.then(function(b){return(0,Px.default)(b)?(0,VH.default)(b,v,Bx):b})}function Ux(e,t,r,n,a,o,s){return(0,ac.assertValidExecutionArguments)(e,t,a),new Promise(function(l){var d=(0,ac.buildExecutionContext)(e,t,r,n,a,o,s);l(Array.isArray(d)?{errors:d}:GH(d))}).catch(Bx)}function GH(e){var t=e.schema,r=e.operation,n=e.variableValues,a=e.rootValue,o=(0,BH.getOperationRootType)(t,r),s=(0,ac.collectFields)(e,o,r.selectionSet,Object.create(null),Object.create(null)),l=Object.keys(s),d=l[0],h=s[d],v=h[0],b=v.name.value,T=(0,ac.getFieldDef)(t,o,b);if(!T)throw new Mx.GraphQLError('The subscription field "'.concat(b,'" is not defined.'),h);var A=(0,DS.addPath)(void 0,d,o.name),L=(0,ac.buildResolveInfo)(e,T,h,o,A);return new Promise(function(S){var y,_=(0,qH.getArgumentValues)(T,h[0],n),m=e.contextValue,k=(y=T.subscribe)!==null&&y!==void 0?y:e.fieldResolver;S(k(a,_,m,L))}).then(function(S){if(S instanceof Error)throw(0,qx.locatedError)(S,h,(0,DS.pathToArray)(A));if(!(0,Px.default)(S))throw new Error("Subscription field must return Async Iterable. "+"Received: ".concat((0,MH.default)(S),"."));return S},function(S){throw(0,qx.locatedError)(S,h,(0,DS.pathToArray)(A))})}});var Kx=U(em=>{"use strict";Object.defineProperty(em,"__esModule",{value:!0});Object.defineProperty(em,"subscribe",{enumerable:!0,get:function(){return Qx.subscribe}});Object.defineProperty(em,"createSourceEventStream",{enumerable:!0,get:function(){return Qx.createSourceEventStream}});var Qx=Gx()});var AS=U(wS=>{"use strict";Object.defineProperty(wS,"__esModule",{value:!0});wS.NoDeprecatedCustomRule=KH;var OS=QH(un()),$d=Be(),CS=lt();function QH(e){return e&&e.__esModule?e:{default:e}}function KH(e){return{Field:function(r){var n=e.getFieldDef(),a=n==null?void 0:n.deprecationReason;if(n&&a!=null){var o=e.getParentType();o!=null||(0,OS.default)(0),e.reportError(new $d.GraphQLError("The field ".concat(o.name,".").concat(n.name," is deprecated. ").concat(a),r))}},Argument:function(r){var n=e.getArgument(),a=n==null?void 0:n.deprecationReason;if(n&&a!=null){var o=e.getDirective();if(o!=null)e.reportError(new $d.GraphQLError('Directive "@'.concat(o.name,'" argument "').concat(n.name,'" is deprecated. ').concat(a),r));else{var s=e.getParentType(),l=e.getFieldDef();s!=null&&l!=null||(0,OS.default)(0),e.reportError(new $d.GraphQLError('Field "'.concat(s.name,".").concat(l.name,'" argument "').concat(n.name,'" is deprecated. ').concat(a),r))}}},ObjectField:function(r){var n=(0,CS.getNamedType)(e.getParentInputType());if((0,CS.isInputObjectType)(n)){var a=n.getFields()[r.name.value],o=a==null?void 0:a.deprecationReason;o!=null&&e.reportError(new $d.GraphQLError("The input field ".concat(n.name,".").concat(a.name," is deprecated. ").concat(o),r))}},EnumValue:function(r){var n=e.getEnumValue(),a=n==null?void 0:n.deprecationReason;if(n&&a!=null){var o=(0,CS.getNamedType)(e.getInputType());o!=null||(0,OS.default)(0),e.reportError(new $d.GraphQLError('The enum value "'.concat(o.name,".").concat(n.name,'" is deprecated. ').concat(a),r))}}}}});var Hx=U(NS=>{"use strict";Object.defineProperty(NS,"__esModule",{value:!0});NS.NoSchemaIntrospectionCustomRule=YH;var HH=Be(),zH=lt(),WH=Yn();function YH(e){return{Field:function(r){var n=(0,zH.getNamedType)(e.getType());n&&(0,WH.isIntrospectionType)(n)&&e.reportError(new HH.GraphQLError('GraphQL introspection has been disabled, but the requested query contained the field "'.concat(r.name.value,'".'),r))}}}});var zx=U(et=>{"use strict";Object.defineProperty(et,"__esModule",{value:!0});Object.defineProperty(et,"validate",{enumerable:!0,get:function(){return JH.validate}});Object.defineProperty(et,"ValidationContext",{enumerable:!0,get:function(){return XH.ValidationContext}});Object.defineProperty(et,"specifiedRules",{enumerable:!0,get:function(){return ZH.specifiedRules}});Object.defineProperty(et,"ExecutableDefinitionsRule",{enumerable:!0,get:function(){return $H.ExecutableDefinitionsRule}});Object.defineProperty(et,"FieldsOnCorrectTypeRule",{enumerable:!0,get:function(){return ez.FieldsOnCorrectTypeRule}});Object.defineProperty(et,"FragmentsOnCompositeTypesRule",{enumerable:!0,get:function(){return tz.FragmentsOnCompositeTypesRule}});Object.defineProperty(et,"KnownArgumentNamesRule",{enumerable:!0,get:function(){return rz.KnownArgumentNamesRule}});Object.defineProperty(et,"KnownDirectivesRule",{enumerable:!0,get:function(){return nz.KnownDirectivesRule}});Object.defineProperty(et,"KnownFragmentNamesRule",{enumerable:!0,get:function(){return iz.KnownFragmentNamesRule}});Object.defineProperty(et,"KnownTypeNamesRule",{enumerable:!0,get:function(){return az.KnownTypeNamesRule}});Object.defineProperty(et,"LoneAnonymousOperationRule",{enumerable:!0,get:function(){return oz.LoneAnonymousOperationRule}});Object.defineProperty(et,"NoFragmentCyclesRule",{enumerable:!0,get:function(){return uz.NoFragmentCyclesRule}});Object.defineProperty(et,"NoUndefinedVariablesRule",{enumerable:!0,get:function(){return sz.NoUndefinedVariablesRule}});Object.defineProperty(et,"NoUnusedFragmentsRule",{enumerable:!0,get:function(){return lz.NoUnusedFragmentsRule}});Object.defineProperty(et,"NoUnusedVariablesRule",{enumerable:!0,get:function(){return cz.NoUnusedVariablesRule}});Object.defineProperty(et,"OverlappingFieldsCanBeMergedRule",{enumerable:!0,get:function(){return fz.OverlappingFieldsCanBeMergedRule}});Object.defineProperty(et,"PossibleFragmentSpreadsRule",{enumerable:!0,get:function(){return dz.PossibleFragmentSpreadsRule}});Object.defineProperty(et,"ProvidedRequiredArgumentsRule",{enumerable:!0,get:function(){return pz.ProvidedRequiredArgumentsRule}});Object.defineProperty(et,"ScalarLeafsRule",{enumerable:!0,get:function(){return hz.ScalarLeafsRule}});Object.defineProperty(et,"SingleFieldSubscriptionsRule",{enumerable:!0,get:function(){return vz.SingleFieldSubscriptionsRule}});Object.defineProperty(et,"UniqueArgumentNamesRule",{enumerable:!0,get:function(){return gz.UniqueArgumentNamesRule}});Object.defineProperty(et,"UniqueDirectivesPerLocationRule",{enumerable:!0,get:function(){return mz.UniqueDirectivesPerLocationRule}});Object.defineProperty(et,"UniqueFragmentNamesRule",{enumerable:!0,get:function(){return yz.UniqueFragmentNamesRule}});Object.defineProperty(et,"UniqueInputFieldNamesRule",{enumerable:!0,get:function(){return bz.UniqueInputFieldNamesRule}});Object.defineProperty(et,"UniqueOperationNamesRule",{enumerable:!0,get:function(){return Tz.UniqueOperationNamesRule}});Object.defineProperty(et,"UniqueVariableNamesRule",{enumerable:!0,get:function(){return Ez.UniqueVariableNamesRule}});Object.defineProperty(et,"ValuesOfCorrectTypeRule",{enumerable:!0,get:function(){return _z.ValuesOfCorrectTypeRule}});Object.defineProperty(et,"VariablesAreInputTypesRule",{enumerable:!0,get:function(){return Sz.VariablesAreInputTypesRule}});Object.defineProperty(et,"VariablesInAllowedPositionRule",{enumerable:!0,get:function(){return Dz.VariablesInAllowedPositionRule}});Object.defineProperty(et,"LoneSchemaDefinitionRule",{enumerable:!0,get:function(){return kz.LoneSchemaDefinitionRule}});Object.defineProperty(et,"UniqueOperationTypesRule",{enumerable:!0,get:function(){return Oz.UniqueOperationTypesRule}});Object.defineProperty(et,"UniqueTypeNamesRule",{enumerable:!0,get:function(){return Cz.UniqueTypeNamesRule}});Object.defineProperty(et,"UniqueEnumValueNamesRule",{enumerable:!0,get:function(){return wz.UniqueEnumValueNamesRule}});Object.defineProperty(et,"UniqueFieldDefinitionNamesRule",{enumerable:!0,get:function(){return Az.UniqueFieldDefinitionNamesRule}});Object.defineProperty(et,"UniqueDirectiveNamesRule",{enumerable:!0,get:function(){return Nz.UniqueDirectiveNamesRule}});Object.defineProperty(et,"PossibleTypeExtensionsRule",{enumerable:!0,get:function(){return Lz.PossibleTypeExtensionsRule}});Object.defineProperty(et,"NoDeprecatedCustomRule",{enumerable:!0,get:function(){return xz.NoDeprecatedCustomRule}});Object.defineProperty(et,"NoSchemaIntrospectionCustomRule",{enumerable:!0,get:function(){return Iz.NoSchemaIntrospectionCustomRule}});var JH=$l(),XH=aS(),ZH=nS(),$H=ME(),ez=t_(),tz=YE(),rz=D_(),nz=T_(),iz=a_(),az=zE(),oz=UE(),uz=d_(),sz=g_(),lz=u_(),cz=y_(),fz=q_(),dz=c_(),pz=N_(),hz=$E(),vz=QE(),gz=O_(),mz=S_(),yz=n_(),bz=V_(),Tz=BE(),Ez=h_(),_z=w_(),Sz=XE(),Dz=x_(),kz=G_(),Oz=K_(),Cz=z_(),wz=Y_(),Az=Z_(),Nz=eS(),Lz=rS(),xz=AS(),Iz=Hx()});var Wx=U(LS=>{"use strict";Object.defineProperty(LS,"__esModule",{value:!0});LS.formatError=jz;var Rz=Fz(wi());function Fz(e){return e&&e.__esModule?e:{default:e}}function jz(e){var t;e||(0,Rz.default)(0,"Received null or undefined error.");var r=(t=e.message)!==null&&t!==void 0?t:"An unknown error occurred.",n=e.locations,a=e.path,o=e.extensions;return o?{message:r,locations:n,path:a,extensions:o}:{message:r,locations:n,path:a}}});var Jx=U(gs=>{"use strict";Object.defineProperty(gs,"__esModule",{value:!0});Object.defineProperty(gs,"GraphQLError",{enumerable:!0,get:function(){return Yx.GraphQLError}});Object.defineProperty(gs,"printError",{enumerable:!0,get:function(){return Yx.printError}});Object.defineProperty(gs,"syntaxError",{enumerable:!0,get:function(){return Pz.syntaxError}});Object.defineProperty(gs,"locatedError",{enumerable:!0,get:function(){return Mz.locatedError}});Object.defineProperty(gs,"formatError",{enumerable:!0,get:function(){return qz.formatError}});var Yx=Be(),Pz=Qv(),Mz=Td(),qz=Wx()});var IS=U(xS=>{"use strict";Object.defineProperty(xS,"__esModule",{value:!0});xS.getIntrospectionQuery=Uz;function Xx(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function Bz(e){for(var t=1;t{"use strict";Object.defineProperty(QS,"__esModule",{value:!0});QS.default=z9;function z9(e){var t;return function(n,i,o){t||(t=new WeakMap);var s=t.get(n),l;if(s){if(l=s.get(i),l){var d=l.get(o);if(d!==void 0)return d}}else s=new WeakMap,t.set(n,s);l||(l=new WeakMap,s.set(i,l));var h=e(n,i,o);return l.set(o,h),h}}});var nR=G(BS=>{"use strict";Object.defineProperty(BS,"__esModule",{value:!0});BS.default=J9;var W9=Y9(rg());function Y9(e){return e&&e.__esModule?e:{default:e}}function J9(e,t,r){return e.reduce(function(n,i){return(0,W9.default)(n)?n.then(function(o){return t(o,i)}):t(n,i)},r)}});var iR=G(KS=>{"use strict";Object.defineProperty(KS,"__esModule",{value:!0});KS.default=X9;function X9(e){var t=Object.keys(e),r=t.map(function(n){return e[n]});return Promise.all(r).then(function(n){return n.reduce(function(i,o,s){return i[t[s]]=o,i},Object.create(null))})}});var up=G(am=>{"use strict";Object.defineProperty(am,"__esModule",{value:!0});am.addPath=Z9;am.pathToArray=$9;function Z9(e,t,r){return{prev:e,key:t,typename:r}}function $9(e){for(var t=[],r=e;r;)t.push(r.key),r=r.prev;return t.reverse()}});var um=G(HS=>{"use strict";Object.defineProperty(HS,"__esModule",{value:!0});HS.getOperationRootType=e8;var om=Je();function e8(e,t){if(t.operation==="query"){var r=e.getQueryType();if(!r)throw new om.GraphQLError("Schema does not define the required query root type.",t);return r}if(t.operation==="mutation"){var n=e.getMutationType();if(!n)throw new om.GraphQLError("Schema is not configured for mutations.",t);return n}if(t.operation==="subscription"){var i=e.getSubscriptionType();if(!i)throw new om.GraphQLError("Schema is not configured for subscriptions.",t);return i}throw new om.GraphQLError("Can only have query, mutation and subscription operations.",t)}});var WS=G(zS=>{"use strict";Object.defineProperty(zS,"__esModule",{value:!0});zS.default=t8;function t8(e){return e.map(function(t){return typeof t=="number"?"["+t.toString()+"]":"."+t}).join("")}});var lp=G(YS=>{"use strict";Object.defineProperty(YS,"__esModule",{value:!0});YS.valueFromAST=sp;var r8=sm(Ni()),n8=sm(vu()),i8=sm(jt()),a8=sm(_n()),yc=Jt(),xs=bt();function sm(e){return e&&e.__esModule?e:{default:e}}function sp(e,t,r){if(!!e){if(e.kind===yc.Kind.VARIABLE){var n=e.name.value;if(r==null||r[n]===void 0)return;var i=r[n];return i===null&&(0,xs.isNonNullType)(t)?void 0:i}if((0,xs.isNonNullType)(t))return e.kind===yc.Kind.NULL?void 0:sp(e,t.ofType,r);if(e.kind===yc.Kind.NULL)return null;if((0,xs.isListType)(t)){var o=t.ofType;if(e.kind===yc.Kind.LIST){for(var s=[],l=0,d=e.values;l{"use strict";Object.defineProperty(JS,"__esModule",{value:!0});JS.coerceInputValue=p8;var o8=Nu(Ni()),lm=Nu(jt()),u8=Nu(_n()),s8=Nu(gu()),l8=Nu(Ma()),c8=Nu(Mg()),f8=Nu(mu()),d8=Nu(WS()),So=up(),Cs=Je(),cp=bt();function Nu(e){return e&&e.__esModule?e:{default:e}}function p8(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:h8;return fp(e,t,r)}function h8(e,t,r){var n="Invalid value "+(0,lm.default)(t);throw e.length>0&&(n+=' at "value'.concat((0,d8.default)(e),'"')),r.message=n+": "+r.message,r}function fp(e,t,r,n){if((0,cp.isNonNullType)(t)){if(e!=null)return fp(e,t.ofType,r,n);r((0,So.pathToArray)(n),e,new Cs.GraphQLError('Expected non-nullable type "'.concat((0,lm.default)(t),'" not to be null.')));return}if(e==null)return null;if((0,cp.isListType)(t)){var i=t.ofType,o=(0,c8.default)(e,function(m,w){var x=(0,So.addPath)(n,w,void 0);return fp(m,i,r,x)});return o!=null?o:[fp(e,i,r,n)]}if((0,cp.isInputObjectType)(t)){if(!(0,l8.default)(e)){r((0,So.pathToArray)(n),e,new Cs.GraphQLError('Expected type "'.concat(t.name,'" to be an object.')));return}for(var s={},l=t.getFields(),d=0,h=(0,o8.default)(l);d{"use strict";Object.defineProperty(dp,"__esModule",{value:!0});dp.getVariableValues=T8;dp.getArgumentValues=lR;dp.getDirectiveValues=E8;var v8=cm(nc()),g8=cm(vu()),bc=cm(jt()),m8=cm(WS()),ko=Je(),oR=Jt(),uR=hi(),Tc=bt(),y8=Qa(),sR=lp(),b8=XS();function cm(e){return e&&e.__esModule?e:{default:e}}function T8(e,t,r,n){var i=[],o=n==null?void 0:n.maxErrors;try{var s=_8(e,t,r,function(l){if(o!=null&&i.length>=o)throw new ko.GraphQLError("Too many errors processing variables, error limit reached. Execution aborted.");i.push(l)});if(i.length===0)return{coerced:s}}catch(l){i.push(l)}return{errors:i}}function _8(e,t,r,n){for(var i={},o=function(h){var v=t[h],y=v.variable.name.value,b=(0,y8.typeFromAST)(e,v.type);if(!(0,Tc.isInputType)(b)){var D=(0,uR.print)(v.type);return n(new ko.GraphQLError('Variable "$'.concat(y,'" expected value of type "').concat(D,'" which cannot be used as an input type.'),v.type)),"continue"}if(!cR(r,y)){if(v.defaultValue)i[y]=(0,sR.valueFromAST)(v.defaultValue,b);else if((0,Tc.isNonNullType)(b)){var _=(0,bc.default)(b);n(new ko.GraphQLError('Variable "$'.concat(y,'" of required type "').concat(_,'" was not provided.'),v))}return"continue"}var k=r[y];if(k===null&&(0,Tc.isNonNullType)(b)){var T=(0,bc.default)(b);return n(new ko.GraphQLError('Variable "$'.concat(y,'" of non-null type "').concat(T,'" must not be null.'),v)),"continue"}i[y]=(0,b8.coerceInputValue)(k,b,function(S,m,w){var x='Variable "$'.concat(y,'" got invalid value ')+(0,bc.default)(m);S.length>0&&(x+=' at "'.concat(y).concat((0,m8.default)(S),'"')),n(new ko.GraphQLError(x+"; "+w.message,v,void 0,void 0,void 0,w.originalError))})},s=0;s{"use strict";Object.defineProperty(xi,"__esModule",{value:!0});xi.execute=L8;xi.executeSync=I8;xi.assertValidExecutionArguments=hR;xi.buildExecutionContext=vR;xi.collectFields=vp;xi.buildResolveInfo=bR;xi.getFieldDef=OR;xi.defaultFieldResolver=xi.defaultTypeResolver=void 0;var _c=wo(jt()),S8=wo(rR()),k8=wo(_n()),fR=wo(Hi()),Yi=wo(rg()),ZS=wo(Ma()),O8=wo(Mg()),w8=wo(nR()),N8=wo(iR()),Ls=up(),Ka=Je(),fm=qd(),hp=Jt(),D8=rp(),Ec=vi(),dR=gi(),Oo=bt(),x8=Qa(),C8=um(),dm=pp();function wo(e){return e&&e.__esModule?e:{default:e}}function L8(e,t,r,n,i,o,s,l){return arguments.length===1?$S(e):$S({schema:e,document:t,rootValue:r,contextValue:n,variableValues:i,operationName:o,fieldResolver:s,typeResolver:l})}function I8(e){var t=$S(e);if((0,Yi.default)(t))throw new Error("GraphQL execution failed to complete synchronously.");return t}function $S(e){var t=e.schema,r=e.document,n=e.rootValue,i=e.contextValue,o=e.variableValues,s=e.operationName,l=e.fieldResolver,d=e.typeResolver;hR(t,r,o);var h=vR(t,r,n,i,o,s,l,d);if(Array.isArray(h))return{errors:h};var v=A8(h,h.operation,n);return pR(h,v)}function pR(e,t){return(0,Yi.default)(t)?t.then(function(r){return pR(e,r)}):e.errors.length===0?{data:t}:{errors:e.errors,data:t}}function hR(e,t,r){t||(0,fR.default)(0,"Must provide document."),(0,D8.assertValidSchema)(e),r==null||(0,ZS.default)(r)||(0,fR.default)(0,"Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.")}function vR(e,t,r,n,i,o,s,l){for(var d,h,v,y=Object.create(null),b=0,D=t.definitions;b{"use strict";Object.defineProperty(vm,"__esModule",{value:!0});vm.graphql=z8;vm.graphqlSync=W8;var U8=H8(rg()),G8=tc(),Q8=mc(),B8=rp(),K8=mp();function H8(e){return e&&e.__esModule?e:{default:e}}function z8(e,t,r,n,i,o,s,l){var d=arguments;return new Promise(function(h){return h(d.length===1?hm(e):hm({schema:e,source:t,rootValue:r,contextValue:n,variableValues:i,operationName:o,fieldResolver:s,typeResolver:l}))})}function W8(e,t,r,n,i,o,s,l){var d=arguments.length===1?hm(e):hm({schema:e,source:t,rootValue:r,contextValue:n,variableValues:i,operationName:o,fieldResolver:s,typeResolver:l});if((0,U8.default)(d))throw new Error("GraphQL execution failed to complete synchronously.");return d}function hm(e){var t=e.schema,r=e.source,n=e.rootValue,i=e.contextValue,o=e.variableValues,s=e.operationName,l=e.fieldResolver,d=e.typeResolver,h=(0,B8.validateSchema)(t);if(h.length>0)return{errors:h};var v;try{v=(0,G8.parse)(r)}catch(b){return{errors:[b]}}var y=(0,Q8.validate)(t,v);return y.length>0?{errors:y}:(0,K8.execute)({schema:t,document:v,rootValue:n,contextValue:i,variableValues:o,operationName:s,fieldResolver:l,typeResolver:d})}});var DR=G(Se=>{"use strict";Object.defineProperty(Se,"__esModule",{value:!0});Object.defineProperty(Se,"isSchema",{enumerable:!0,get:function(){return rk.isSchema}});Object.defineProperty(Se,"assertSchema",{enumerable:!0,get:function(){return rk.assertSchema}});Object.defineProperty(Se,"GraphQLSchema",{enumerable:!0,get:function(){return rk.GraphQLSchema}});Object.defineProperty(Se,"isType",{enumerable:!0,get:function(){return rt.isType}});Object.defineProperty(Se,"isScalarType",{enumerable:!0,get:function(){return rt.isScalarType}});Object.defineProperty(Se,"isObjectType",{enumerable:!0,get:function(){return rt.isObjectType}});Object.defineProperty(Se,"isInterfaceType",{enumerable:!0,get:function(){return rt.isInterfaceType}});Object.defineProperty(Se,"isUnionType",{enumerable:!0,get:function(){return rt.isUnionType}});Object.defineProperty(Se,"isEnumType",{enumerable:!0,get:function(){return rt.isEnumType}});Object.defineProperty(Se,"isInputObjectType",{enumerable:!0,get:function(){return rt.isInputObjectType}});Object.defineProperty(Se,"isListType",{enumerable:!0,get:function(){return rt.isListType}});Object.defineProperty(Se,"isNonNullType",{enumerable:!0,get:function(){return rt.isNonNullType}});Object.defineProperty(Se,"isInputType",{enumerable:!0,get:function(){return rt.isInputType}});Object.defineProperty(Se,"isOutputType",{enumerable:!0,get:function(){return rt.isOutputType}});Object.defineProperty(Se,"isLeafType",{enumerable:!0,get:function(){return rt.isLeafType}});Object.defineProperty(Se,"isCompositeType",{enumerable:!0,get:function(){return rt.isCompositeType}});Object.defineProperty(Se,"isAbstractType",{enumerable:!0,get:function(){return rt.isAbstractType}});Object.defineProperty(Se,"isWrappingType",{enumerable:!0,get:function(){return rt.isWrappingType}});Object.defineProperty(Se,"isNullableType",{enumerable:!0,get:function(){return rt.isNullableType}});Object.defineProperty(Se,"isNamedType",{enumerable:!0,get:function(){return rt.isNamedType}});Object.defineProperty(Se,"isRequiredArgument",{enumerable:!0,get:function(){return rt.isRequiredArgument}});Object.defineProperty(Se,"isRequiredInputField",{enumerable:!0,get:function(){return rt.isRequiredInputField}});Object.defineProperty(Se,"assertType",{enumerable:!0,get:function(){return rt.assertType}});Object.defineProperty(Se,"assertScalarType",{enumerable:!0,get:function(){return rt.assertScalarType}});Object.defineProperty(Se,"assertObjectType",{enumerable:!0,get:function(){return rt.assertObjectType}});Object.defineProperty(Se,"assertInterfaceType",{enumerable:!0,get:function(){return rt.assertInterfaceType}});Object.defineProperty(Se,"assertUnionType",{enumerable:!0,get:function(){return rt.assertUnionType}});Object.defineProperty(Se,"assertEnumType",{enumerable:!0,get:function(){return rt.assertEnumType}});Object.defineProperty(Se,"assertInputObjectType",{enumerable:!0,get:function(){return rt.assertInputObjectType}});Object.defineProperty(Se,"assertListType",{enumerable:!0,get:function(){return rt.assertListType}});Object.defineProperty(Se,"assertNonNullType",{enumerable:!0,get:function(){return rt.assertNonNullType}});Object.defineProperty(Se,"assertInputType",{enumerable:!0,get:function(){return rt.assertInputType}});Object.defineProperty(Se,"assertOutputType",{enumerable:!0,get:function(){return rt.assertOutputType}});Object.defineProperty(Se,"assertLeafType",{enumerable:!0,get:function(){return rt.assertLeafType}});Object.defineProperty(Se,"assertCompositeType",{enumerable:!0,get:function(){return rt.assertCompositeType}});Object.defineProperty(Se,"assertAbstractType",{enumerable:!0,get:function(){return rt.assertAbstractType}});Object.defineProperty(Se,"assertWrappingType",{enumerable:!0,get:function(){return rt.assertWrappingType}});Object.defineProperty(Se,"assertNullableType",{enumerable:!0,get:function(){return rt.assertNullableType}});Object.defineProperty(Se,"assertNamedType",{enumerable:!0,get:function(){return rt.assertNamedType}});Object.defineProperty(Se,"getNullableType",{enumerable:!0,get:function(){return rt.getNullableType}});Object.defineProperty(Se,"getNamedType",{enumerable:!0,get:function(){return rt.getNamedType}});Object.defineProperty(Se,"GraphQLScalarType",{enumerable:!0,get:function(){return rt.GraphQLScalarType}});Object.defineProperty(Se,"GraphQLObjectType",{enumerable:!0,get:function(){return rt.GraphQLObjectType}});Object.defineProperty(Se,"GraphQLInterfaceType",{enumerable:!0,get:function(){return rt.GraphQLInterfaceType}});Object.defineProperty(Se,"GraphQLUnionType",{enumerable:!0,get:function(){return rt.GraphQLUnionType}});Object.defineProperty(Se,"GraphQLEnumType",{enumerable:!0,get:function(){return rt.GraphQLEnumType}});Object.defineProperty(Se,"GraphQLInputObjectType",{enumerable:!0,get:function(){return rt.GraphQLInputObjectType}});Object.defineProperty(Se,"GraphQLList",{enumerable:!0,get:function(){return rt.GraphQLList}});Object.defineProperty(Se,"GraphQLNonNull",{enumerable:!0,get:function(){return rt.GraphQLNonNull}});Object.defineProperty(Se,"isDirective",{enumerable:!0,get:function(){return Ha.isDirective}});Object.defineProperty(Se,"assertDirective",{enumerable:!0,get:function(){return Ha.assertDirective}});Object.defineProperty(Se,"GraphQLDirective",{enumerable:!0,get:function(){return Ha.GraphQLDirective}});Object.defineProperty(Se,"isSpecifiedDirective",{enumerable:!0,get:function(){return Ha.isSpecifiedDirective}});Object.defineProperty(Se,"specifiedDirectives",{enumerable:!0,get:function(){return Ha.specifiedDirectives}});Object.defineProperty(Se,"GraphQLIncludeDirective",{enumerable:!0,get:function(){return Ha.GraphQLIncludeDirective}});Object.defineProperty(Se,"GraphQLSkipDirective",{enumerable:!0,get:function(){return Ha.GraphQLSkipDirective}});Object.defineProperty(Se,"GraphQLDeprecatedDirective",{enumerable:!0,get:function(){return Ha.GraphQLDeprecatedDirective}});Object.defineProperty(Se,"GraphQLSpecifiedByDirective",{enumerable:!0,get:function(){return Ha.GraphQLSpecifiedByDirective}});Object.defineProperty(Se,"DEFAULT_DEPRECATION_REASON",{enumerable:!0,get:function(){return Ha.DEFAULT_DEPRECATION_REASON}});Object.defineProperty(Se,"isSpecifiedScalarType",{enumerable:!0,get:function(){return Is.isSpecifiedScalarType}});Object.defineProperty(Se,"specifiedScalarTypes",{enumerable:!0,get:function(){return Is.specifiedScalarTypes}});Object.defineProperty(Se,"GraphQLInt",{enumerable:!0,get:function(){return Is.GraphQLInt}});Object.defineProperty(Se,"GraphQLFloat",{enumerable:!0,get:function(){return Is.GraphQLFloat}});Object.defineProperty(Se,"GraphQLString",{enumerable:!0,get:function(){return Is.GraphQLString}});Object.defineProperty(Se,"GraphQLBoolean",{enumerable:!0,get:function(){return Is.GraphQLBoolean}});Object.defineProperty(Se,"GraphQLID",{enumerable:!0,get:function(){return Is.GraphQLID}});Object.defineProperty(Se,"isIntrospectionType",{enumerable:!0,get:function(){return yi.isIntrospectionType}});Object.defineProperty(Se,"introspectionTypes",{enumerable:!0,get:function(){return yi.introspectionTypes}});Object.defineProperty(Se,"__Schema",{enumerable:!0,get:function(){return yi.__Schema}});Object.defineProperty(Se,"__Directive",{enumerable:!0,get:function(){return yi.__Directive}});Object.defineProperty(Se,"__DirectiveLocation",{enumerable:!0,get:function(){return yi.__DirectiveLocation}});Object.defineProperty(Se,"__Type",{enumerable:!0,get:function(){return yi.__Type}});Object.defineProperty(Se,"__Field",{enumerable:!0,get:function(){return yi.__Field}});Object.defineProperty(Se,"__InputValue",{enumerable:!0,get:function(){return yi.__InputValue}});Object.defineProperty(Se,"__EnumValue",{enumerable:!0,get:function(){return yi.__EnumValue}});Object.defineProperty(Se,"__TypeKind",{enumerable:!0,get:function(){return yi.__TypeKind}});Object.defineProperty(Se,"TypeKind",{enumerable:!0,get:function(){return yi.TypeKind}});Object.defineProperty(Se,"SchemaMetaFieldDef",{enumerable:!0,get:function(){return yi.SchemaMetaFieldDef}});Object.defineProperty(Se,"TypeMetaFieldDef",{enumerable:!0,get:function(){return yi.TypeMetaFieldDef}});Object.defineProperty(Se,"TypeNameMetaFieldDef",{enumerable:!0,get:function(){return yi.TypeNameMetaFieldDef}});Object.defineProperty(Se,"validateSchema",{enumerable:!0,get:function(){return NR.validateSchema}});Object.defineProperty(Se,"assertValidSchema",{enumerable:!0,get:function(){return NR.assertValidSchema}});var rk=ks(),rt=bt(),Ha=gi(),Is=Ga(),yi=vi(),NR=rp()});var LR=G(Qt=>{"use strict";Object.defineProperty(Qt,"__esModule",{value:!0});Object.defineProperty(Qt,"Source",{enumerable:!0,get:function(){return Y8.Source}});Object.defineProperty(Qt,"getLocation",{enumerable:!0,get:function(){return J8.getLocation}});Object.defineProperty(Qt,"printLocation",{enumerable:!0,get:function(){return xR.printLocation}});Object.defineProperty(Qt,"printSourceLocation",{enumerable:!0,get:function(){return xR.printSourceLocation}});Object.defineProperty(Qt,"Kind",{enumerable:!0,get:function(){return X8.Kind}});Object.defineProperty(Qt,"TokenKind",{enumerable:!0,get:function(){return Z8.TokenKind}});Object.defineProperty(Qt,"Lexer",{enumerable:!0,get:function(){return $8.Lexer}});Object.defineProperty(Qt,"parse",{enumerable:!0,get:function(){return nk.parse}});Object.defineProperty(Qt,"parseValue",{enumerable:!0,get:function(){return nk.parseValue}});Object.defineProperty(Qt,"parseType",{enumerable:!0,get:function(){return nk.parseType}});Object.defineProperty(Qt,"print",{enumerable:!0,get:function(){return eY.print}});Object.defineProperty(Qt,"visit",{enumerable:!0,get:function(){return gm.visit}});Object.defineProperty(Qt,"visitInParallel",{enumerable:!0,get:function(){return gm.visitInParallel}});Object.defineProperty(Qt,"getVisitFn",{enumerable:!0,get:function(){return gm.getVisitFn}});Object.defineProperty(Qt,"BREAK",{enumerable:!0,get:function(){return gm.BREAK}});Object.defineProperty(Qt,"Location",{enumerable:!0,get:function(){return CR.Location}});Object.defineProperty(Qt,"Token",{enumerable:!0,get:function(){return CR.Token}});Object.defineProperty(Qt,"isDefinitionNode",{enumerable:!0,get:function(){return No.isDefinitionNode}});Object.defineProperty(Qt,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return No.isExecutableDefinitionNode}});Object.defineProperty(Qt,"isSelectionNode",{enumerable:!0,get:function(){return No.isSelectionNode}});Object.defineProperty(Qt,"isValueNode",{enumerable:!0,get:function(){return No.isValueNode}});Object.defineProperty(Qt,"isTypeNode",{enumerable:!0,get:function(){return No.isTypeNode}});Object.defineProperty(Qt,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return No.isTypeSystemDefinitionNode}});Object.defineProperty(Qt,"isTypeDefinitionNode",{enumerable:!0,get:function(){return No.isTypeDefinitionNode}});Object.defineProperty(Qt,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return No.isTypeSystemExtensionNode}});Object.defineProperty(Qt,"isTypeExtensionNode",{enumerable:!0,get:function(){return No.isTypeExtensionNode}});Object.defineProperty(Qt,"DirectiveLocation",{enumerable:!0,get:function(){return tY.DirectiveLocation}});var Y8=mg(),J8=ig(),xR=l_(),X8=Jt(),Z8=Zl(),$8=Tg(),nk=tc(),eY=hi(),gm=hu(),CR=Xl(),No=ws(),tY=$l()});var IR=G(Du=>{"use strict";Object.defineProperty(Du,"__esModule",{value:!0});Object.defineProperty(Du,"responsePathAsArray",{enumerable:!0,get:function(){return rY.pathToArray}});Object.defineProperty(Du,"execute",{enumerable:!0,get:function(){return mm.execute}});Object.defineProperty(Du,"executeSync",{enumerable:!0,get:function(){return mm.executeSync}});Object.defineProperty(Du,"defaultFieldResolver",{enumerable:!0,get:function(){return mm.defaultFieldResolver}});Object.defineProperty(Du,"defaultTypeResolver",{enumerable:!0,get:function(){return mm.defaultTypeResolver}});Object.defineProperty(Du,"getDirectiveValues",{enumerable:!0,get:function(){return nY.getDirectiveValues}});var rY=up(),mm=mp(),nY=pp()});var AR=G(ik=>{"use strict";Object.defineProperty(ik,"__esModule",{value:!0});ik.default=aY;var iY=qa();function aY(e){return typeof(e==null?void 0:e[iY.SYMBOL_ASYNC_ITERATOR])=="function"}});var FR=G(ak=>{"use strict";Object.defineProperty(ak,"__esModule",{value:!0});ak.default=uY;var RR=qa();function oY(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function uY(e,t,r){var n=e[RR.SYMBOL_ASYNC_ITERATOR],i=n.call(e),o,s;typeof i.return=="function"&&(o=i.return,s=function(y){var b=function(){return Promise.reject(y)};return o.call(i).then(b,b)});function l(v){return v.done?v:jR(v.value,t).then(PR,s)}var d;if(r){var h=r;d=function(y){return jR(y,h).then(PR,s)}}return oY({next:function(){return i.next().then(l,d)},return:function(){return o?o.call(i).then(l,d):Promise.resolve({value:void 0,done:!0})},throw:function(y){return typeof i.throw=="function"?i.throw(y).then(l,d):Promise.reject(y).catch(s)}},RR.SYMBOL_ASYNC_ITERATOR,function(){return this})}function jR(e,t){return new Promise(function(r){return r(t(e))})}function PR(e){return{value:e,done:!1}}});var BR=G(ym=>{"use strict";Object.defineProperty(ym,"__esModule",{value:!0});ym.subscribe=dY;ym.createSourceEventStream=QR;var sY=uk(jt()),MR=uk(AR()),ok=up(),qR=Je(),VR=qd(),lY=pp(),Sc=mp(),cY=um(),fY=uk(FR());function uk(e){return e&&e.__esModule?e:{default:e}}function dY(e,t,r,n,i,o,s,l){return arguments.length===1?GR(e):GR({schema:e,document:t,rootValue:r,contextValue:n,variableValues:i,operationName:o,fieldResolver:s,subscribeFieldResolver:l})}function UR(e){if(e instanceof qR.GraphQLError)return{errors:[e]};throw e}function GR(e){var t=e.schema,r=e.document,n=e.rootValue,i=e.contextValue,o=e.variableValues,s=e.operationName,l=e.fieldResolver,d=e.subscribeFieldResolver,h=QR(t,r,n,i,o,s,d),v=function(b){return(0,Sc.execute)({schema:t,document:r,rootValue:b,contextValue:i,variableValues:o,operationName:s,fieldResolver:l})};return h.then(function(y){return(0,MR.default)(y)?(0,fY.default)(y,v,UR):y})}function QR(e,t,r,n,i,o,s){return(0,Sc.assertValidExecutionArguments)(e,t,i),new Promise(function(l){var d=(0,Sc.buildExecutionContext)(e,t,r,n,i,o,s);l(Array.isArray(d)?{errors:d}:pY(d))}).catch(UR)}function pY(e){var t=e.schema,r=e.operation,n=e.variableValues,i=e.rootValue,o=(0,cY.getOperationRootType)(t,r),s=(0,Sc.collectFields)(e,o,r.selectionSet,Object.create(null),Object.create(null)),l=Object.keys(s),d=l[0],h=s[d],v=h[0],y=v.name.value,b=(0,Sc.getFieldDef)(t,o,y);if(!b)throw new qR.GraphQLError('The subscription field "'.concat(y,'" is not defined.'),h);var D=(0,ok.addPath)(void 0,d,o.name),_=(0,Sc.buildResolveInfo)(e,b,h,o,D);return new Promise(function(k){var T,S=(0,lY.getArgumentValues)(b,h[0],n),m=e.contextValue,w=(T=b.subscribe)!==null&&T!==void 0?T:e.fieldResolver;k(w(i,S,m,_))}).then(function(k){if(k instanceof Error)throw(0,VR.locatedError)(k,h,(0,ok.pathToArray)(D));if(!(0,MR.default)(k))throw new Error("Subscription field must return Async Iterable. "+"Received: ".concat((0,sY.default)(k),"."));return k},function(k){throw(0,VR.locatedError)(k,h,(0,ok.pathToArray)(D))})}});var HR=G(bm=>{"use strict";Object.defineProperty(bm,"__esModule",{value:!0});Object.defineProperty(bm,"subscribe",{enumerable:!0,get:function(){return KR.subscribe}});Object.defineProperty(bm,"createSourceEventStream",{enumerable:!0,get:function(){return KR.createSourceEventStream}});var KR=BR()});var fk=G(ck=>{"use strict";Object.defineProperty(ck,"__esModule",{value:!0});ck.NoDeprecatedCustomRule=vY;var sk=hY(_n()),yp=Je(),lk=bt();function hY(e){return e&&e.__esModule?e:{default:e}}function vY(e){return{Field:function(r){var n=e.getFieldDef(),i=n==null?void 0:n.deprecationReason;if(n&&i!=null){var o=e.getParentType();o!=null||(0,sk.default)(0),e.reportError(new yp.GraphQLError("The field ".concat(o.name,".").concat(n.name," is deprecated. ").concat(i),r))}},Argument:function(r){var n=e.getArgument(),i=n==null?void 0:n.deprecationReason;if(n&&i!=null){var o=e.getDirective();if(o!=null)e.reportError(new yp.GraphQLError('Directive "@'.concat(o.name,'" argument "').concat(n.name,'" is deprecated. ').concat(i),r));else{var s=e.getParentType(),l=e.getFieldDef();s!=null&&l!=null||(0,sk.default)(0),e.reportError(new yp.GraphQLError('Field "'.concat(s.name,".").concat(l.name,'" argument "').concat(n.name,'" is deprecated. ').concat(i),r))}}},ObjectField:function(r){var n=(0,lk.getNamedType)(e.getParentInputType());if((0,lk.isInputObjectType)(n)){var i=n.getFields()[r.name.value],o=i==null?void 0:i.deprecationReason;o!=null&&e.reportError(new yp.GraphQLError("The input field ".concat(n.name,".").concat(i.name," is deprecated. ").concat(o),r))}},EnumValue:function(r){var n=e.getEnumValue(),i=n==null?void 0:n.deprecationReason;if(n&&i!=null){var o=(0,lk.getNamedType)(e.getInputType());o!=null||(0,sk.default)(0),e.reportError(new yp.GraphQLError('The enum value "'.concat(o.name,".").concat(n.name,'" is deprecated. ').concat(i),r))}}}}});var zR=G(dk=>{"use strict";Object.defineProperty(dk,"__esModule",{value:!0});dk.NoSchemaIntrospectionCustomRule=bY;var gY=Je(),mY=bt(),yY=vi();function bY(e){return{Field:function(r){var n=(0,mY.getNamedType)(e.getType());n&&(0,yY.isIntrospectionType)(n)&&e.reportError(new gY.GraphQLError('GraphQL introspection has been disabled, but the requested query contained the field "'.concat(r.name.value,'".'),r))}}}});var WR=G(ft=>{"use strict";Object.defineProperty(ft,"__esModule",{value:!0});Object.defineProperty(ft,"validate",{enumerable:!0,get:function(){return TY.validate}});Object.defineProperty(ft,"ValidationContext",{enumerable:!0,get:function(){return _Y.ValidationContext}});Object.defineProperty(ft,"specifiedRules",{enumerable:!0,get:function(){return EY.specifiedRules}});Object.defineProperty(ft,"ExecutableDefinitionsRule",{enumerable:!0,get:function(){return SY.ExecutableDefinitionsRule}});Object.defineProperty(ft,"FieldsOnCorrectTypeRule",{enumerable:!0,get:function(){return kY.FieldsOnCorrectTypeRule}});Object.defineProperty(ft,"FragmentsOnCompositeTypesRule",{enumerable:!0,get:function(){return OY.FragmentsOnCompositeTypesRule}});Object.defineProperty(ft,"KnownArgumentNamesRule",{enumerable:!0,get:function(){return wY.KnownArgumentNamesRule}});Object.defineProperty(ft,"KnownDirectivesRule",{enumerable:!0,get:function(){return NY.KnownDirectivesRule}});Object.defineProperty(ft,"KnownFragmentNamesRule",{enumerable:!0,get:function(){return DY.KnownFragmentNamesRule}});Object.defineProperty(ft,"KnownTypeNamesRule",{enumerable:!0,get:function(){return xY.KnownTypeNamesRule}});Object.defineProperty(ft,"LoneAnonymousOperationRule",{enumerable:!0,get:function(){return CY.LoneAnonymousOperationRule}});Object.defineProperty(ft,"NoFragmentCyclesRule",{enumerable:!0,get:function(){return LY.NoFragmentCyclesRule}});Object.defineProperty(ft,"NoUndefinedVariablesRule",{enumerable:!0,get:function(){return IY.NoUndefinedVariablesRule}});Object.defineProperty(ft,"NoUnusedFragmentsRule",{enumerable:!0,get:function(){return AY.NoUnusedFragmentsRule}});Object.defineProperty(ft,"NoUnusedVariablesRule",{enumerable:!0,get:function(){return RY.NoUnusedVariablesRule}});Object.defineProperty(ft,"OverlappingFieldsCanBeMergedRule",{enumerable:!0,get:function(){return jY.OverlappingFieldsCanBeMergedRule}});Object.defineProperty(ft,"PossibleFragmentSpreadsRule",{enumerable:!0,get:function(){return PY.PossibleFragmentSpreadsRule}});Object.defineProperty(ft,"ProvidedRequiredArgumentsRule",{enumerable:!0,get:function(){return FY.ProvidedRequiredArgumentsRule}});Object.defineProperty(ft,"ScalarLeafsRule",{enumerable:!0,get:function(){return MY.ScalarLeafsRule}});Object.defineProperty(ft,"SingleFieldSubscriptionsRule",{enumerable:!0,get:function(){return qY.SingleFieldSubscriptionsRule}});Object.defineProperty(ft,"UniqueArgumentNamesRule",{enumerable:!0,get:function(){return VY.UniqueArgumentNamesRule}});Object.defineProperty(ft,"UniqueDirectivesPerLocationRule",{enumerable:!0,get:function(){return UY.UniqueDirectivesPerLocationRule}});Object.defineProperty(ft,"UniqueFragmentNamesRule",{enumerable:!0,get:function(){return GY.UniqueFragmentNamesRule}});Object.defineProperty(ft,"UniqueInputFieldNamesRule",{enumerable:!0,get:function(){return QY.UniqueInputFieldNamesRule}});Object.defineProperty(ft,"UniqueOperationNamesRule",{enumerable:!0,get:function(){return BY.UniqueOperationNamesRule}});Object.defineProperty(ft,"UniqueVariableNamesRule",{enumerable:!0,get:function(){return KY.UniqueVariableNamesRule}});Object.defineProperty(ft,"ValuesOfCorrectTypeRule",{enumerable:!0,get:function(){return HY.ValuesOfCorrectTypeRule}});Object.defineProperty(ft,"VariablesAreInputTypesRule",{enumerable:!0,get:function(){return zY.VariablesAreInputTypesRule}});Object.defineProperty(ft,"VariablesInAllowedPositionRule",{enumerable:!0,get:function(){return WY.VariablesInAllowedPositionRule}});Object.defineProperty(ft,"LoneSchemaDefinitionRule",{enumerable:!0,get:function(){return YY.LoneSchemaDefinitionRule}});Object.defineProperty(ft,"UniqueOperationTypesRule",{enumerable:!0,get:function(){return JY.UniqueOperationTypesRule}});Object.defineProperty(ft,"UniqueTypeNamesRule",{enumerable:!0,get:function(){return XY.UniqueTypeNamesRule}});Object.defineProperty(ft,"UniqueEnumValueNamesRule",{enumerable:!0,get:function(){return ZY.UniqueEnumValueNamesRule}});Object.defineProperty(ft,"UniqueFieldDefinitionNamesRule",{enumerable:!0,get:function(){return $Y.UniqueFieldDefinitionNamesRule}});Object.defineProperty(ft,"UniqueDirectiveNamesRule",{enumerable:!0,get:function(){return e7.UniqueDirectiveNamesRule}});Object.defineProperty(ft,"PossibleTypeExtensionsRule",{enumerable:!0,get:function(){return t7.PossibleTypeExtensionsRule}});Object.defineProperty(ft,"NoDeprecatedCustomRule",{enumerable:!0,get:function(){return r7.NoDeprecatedCustomRule}});Object.defineProperty(ft,"NoSchemaIntrospectionCustomRule",{enumerable:!0,get:function(){return n7.NoSchemaIntrospectionCustomRule}});var TY=mc(),_Y=US(),EY=qS(),SY=TE(),kY=FE(),OY=LE(),wY=oS(),NY=rS(),DY=UE(),xY=xE(),CY=kE(),LY=WE(),IY=ZE(),AY=QE(),RY=eS(),jY=_S(),PY=HE(),FY=dS(),MY=jE(),qY=wE(),VY=sS(),UY=aS(),GY=qE(),QY=SS(),BY=EE(),KY=JE(),HY=cS(),zY=AE(),WY=hS(),YY=OS(),JY=NS(),XY=xS(),ZY=LS(),$Y=RS(),e7=PS(),t7=MS(),r7=fk(),n7=zR()});var YR=G(pk=>{"use strict";Object.defineProperty(pk,"__esModule",{value:!0});pk.formatError=o7;var i7=a7(Hi());function a7(e){return e&&e.__esModule?e:{default:e}}function o7(e){var t;e||(0,i7.default)(0,"Received null or undefined error.");var r=(t=e.message)!==null&&t!==void 0?t:"An unknown error occurred.",n=e.locations,i=e.path,o=e.extensions;return o?{message:r,locations:n,path:i,extensions:o}:{message:r,locations:n,path:i}}});var XR=G(As=>{"use strict";Object.defineProperty(As,"__esModule",{value:!0});Object.defineProperty(As,"GraphQLError",{enumerable:!0,get:function(){return JR.GraphQLError}});Object.defineProperty(As,"printError",{enumerable:!0,get:function(){return JR.printError}});Object.defineProperty(As,"syntaxError",{enumerable:!0,get:function(){return u7.syntaxError}});Object.defineProperty(As,"locatedError",{enumerable:!0,get:function(){return s7.locatedError}});Object.defineProperty(As,"formatError",{enumerable:!0,get:function(){return l7.formatError}});var JR=Je(),u7=lg(),s7=qd(),l7=YR()});var vk=G(hk=>{"use strict";Object.defineProperty(hk,"__esModule",{value:!0});hk.getIntrospectionQuery=d7;function ZR(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function c7(e){for(var t=1;t{"use strict";Object.defineProperty(RS,"__esModule",{value:!0});RS.getOperationAST=Qz;var Gz=Vt();function Qz(e,t){for(var r=null,n=0,a=e.definitions;n{"use strict";Object.defineProperty(jS,"__esModule",{value:!0});jS.introspectionFromSchema=Zz;var Kz=Yz(un()),Hz=Pl(),zz=Zd(),Wz=IS();function Yz(e){return e&&e.__esModule?e:{default:e}}function Zx(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function Jz(e){for(var t=1;t{"use strict";Object.defineProperty(PS,"__esModule",{value:!0});PS.buildClientSchema=o7;var $z=ep(oi()),li=ep(Ot()),e7=ep(wi()),tm=ep(Ed()),eI=ep(Sa()),t7=Pl(),r7=us(),n7=Jn(),i7=Ca(),xa=Yn(),ci=lt(),a7=Qd();function ep(e){return e&&e.__esModule?e:{default:e}}function o7(e,t){(0,eI.default)(e)&&(0,eI.default)(e.__schema)||(0,e7.default)(0,'Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: '.concat((0,li.default)(e),"."));for(var r=e.__schema,n=(0,tm.default)(r.types,function(G){return G.name},function(G){return S(G)}),a=0,o=[].concat(i7.specifiedScalarTypes,xa.introspectionTypes);a{"use strict";Object.defineProperty(rp,"__esModule",{value:!0});rp.extendSchema=h7;rp.extendSchemaImpl=fI;rp.getDescription=ms;var u7=oc(oi()),s7=oc(tu()),rI=oc(Ot()),tp=oc(QT()),nI=oc(un()),l7=oc(wi()),xi=Vt(),c7=Rl(),f7=jl(),iI=ls(),d7=$l(),aI=Wd(),oI=us(),uI=Ca(),sI=Yn(),rm=Jn(),nr=lt(),lI=Qd();function oc(e){return e&&e.__esModule?e:{default:e}}function cI(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function Et(e){for(var t=1;t0?r.reverse().join(` -`):void 0}}});var gI=U(im=>{"use strict";Object.defineProperty(im,"__esModule",{value:!0});im.buildASTSchema=vI;im.buildSchema=S7;var g7=_7(wi()),m7=Vt(),y7=Pl(),b7=$l(),T7=us(),hI=Jn(),E7=MS();function _7(e){return e&&e.__esModule?e:{default:e}}function vI(e,t){e!=null&&e.kind===m7.Kind.DOCUMENT||(0,g7.default)(0,"Must provide valid Document AST."),(t==null?void 0:t.assumeValid)!==!0&&(t==null?void 0:t.assumeValidSDL)!==!0&&(0,b7.assertValidSDL)(e);var r={description:void 0,types:[],directives:[],extensions:void 0,extensionASTNodes:[],assumeValid:!1},n=(0,E7.extendSchemaImpl)(r,e,t);if(n.astNode==null)for(var a=0,o=n.types;a{"use strict";Object.defineProperty(VS,"__esModule",{value:!0});VS.lexicographicSortSchema=I7;var D7=np(oi()),k7=np(Ot()),O7=np(un()),C7=np(Ed()),w7=np(_d()),A7=us(),N7=Jn(),L7=Yn(),Fn=lt();function np(e){return e&&e.__esModule?e:{default:e}}function mI(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function kr(e){for(var t=1;t{"use strict";Object.defineProperty(ip,"__esModule",{value:!0});ip.printSchema=j7;ip.printIntrospectionSchema=P7;ip.printType=_I;var US=zS(oi()),R7=zS(Ot()),bI=zS(un()),GS=Wn(),F7=jl(),TI=Yn(),QS=Ca(),KS=Jn(),uc=lt(),HS=Id();function zS(e){return e&&e.__esModule?e:{default:e}}function j7(e,t){return EI(e,function(r){return!(0,KS.isSpecifiedDirective)(r)},M7,t)}function P7(e,t){return EI(e,KS.isSpecifiedDirective,TI.isIntrospectionType,t)}function M7(e){return!(0,QS.isSpecifiedScalarType)(e)&&!(0,TI.isIntrospectionType)(e)}function EI(e,t,r,n){var a=e.getDirectives().filter(t),o=(0,US.default)(e.getTypeMap()).filter(r);return[q7(e)].concat(a.map(function(s){return z7(s,n)}),o.map(function(s){return _I(s,n)})).filter(Boolean).join(` + `)}});var mk=G(gk=>{"use strict";Object.defineProperty(gk,"__esModule",{value:!0});gk.getOperationAST=h7;var p7=Jt();function h7(e,t){for(var r=null,n=0,i=e.definitions;n{"use strict";Object.defineProperty(yk,"__esModule",{value:!0});yk.introspectionFromSchema=E7;var v7=b7(_n()),g7=tc(),m7=mp(),y7=vk();function b7(e){return e&&e.__esModule?e:{default:e}}function $R(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function T7(e){for(var t=1;t{"use strict";Object.defineProperty(bk,"__esModule",{value:!0});bk.buildClientSchema=C7;var S7=bp(Ni()),Ci=bp(jt()),k7=bp(Hi()),Tm=bp(Vd()),tj=bp(Ma()),O7=tc(),w7=ks(),N7=gi(),D7=Ga(),za=vi(),Li=bt(),x7=lp();function bp(e){return e&&e.__esModule?e:{default:e}}function C7(e,t){(0,tj.default)(e)&&(0,tj.default)(e.__schema)||(0,k7.default)(0,'Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: '.concat((0,Ci.default)(e),"."));for(var r=e.__schema,n=(0,Tm.default)(r.types,function(Q){return Q.name},function(Q){return k(Q)}),i=0,o=[].concat(D7.specifiedScalarTypes,za.introspectionTypes);i{"use strict";Object.defineProperty(_p,"__esModule",{value:!0});_p.extendSchema=M7;_p.extendSchemaImpl=dj;_p.getDescription=Rs;var L7=kc(Ni()),I7=kc(vu()),nj=kc(jt()),Tp=kc(w_()),ij=kc(_n()),A7=kc(Hi()),Ji=Jt(),R7=Zl(),j7=ec(),aj=ws(),P7=mc(),oj=pp(),uj=ks(),sj=Ga(),lj=vi(),_m=gi(),pr=bt(),cj=lp();function kc(e){return e&&e.__esModule?e:{default:e}}function fj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function xt(e){for(var t=1;t0?r.reverse().join(` +`):void 0}}});var mj=G(Sm=>{"use strict";Object.defineProperty(Sm,"__esModule",{value:!0});Sm.buildASTSchema=gj;Sm.buildSchema=z7;var V7=H7(Hi()),U7=Jt(),G7=tc(),Q7=mc(),B7=ks(),vj=gi(),K7=Tk();function H7(e){return e&&e.__esModule?e:{default:e}}function gj(e,t){e!=null&&e.kind===U7.Kind.DOCUMENT||(0,V7.default)(0,"Must provide valid Document AST."),(t==null?void 0:t.assumeValid)!==!0&&(t==null?void 0:t.assumeValidSDL)!==!0&&(0,Q7.assertValidSDL)(e);var r={description:void 0,types:[],directives:[],extensions:void 0,extensionASTNodes:[],assumeValid:!1},n=(0,K7.extendSchemaImpl)(r,e,t);if(n.astNode==null)for(var i=0,o=n.types;i{"use strict";Object.defineProperty(Sk,"__esModule",{value:!0});Sk.lexicographicSortSchema=nJ;var W7=Ep(Ni()),Y7=Ep(jt()),J7=Ep(_n()),X7=Ep(Vd()),Z7=Ep(Ud()),$7=ks(),eJ=gi(),tJ=vi(),ri=bt();function Ep(e){return e&&e.__esModule?e:{default:e}}function yj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Mr(e){for(var t=1;t{"use strict";Object.defineProperty(Sp,"__esModule",{value:!0});Sp.printSchema=oJ;Sp.printIntrospectionSchema=uJ;Sp.printType=Sj;var kk=xk(Ni()),iJ=xk(jt()),Tj=xk(_n()),Ok=hi(),aJ=ec(),_j=vi(),wk=Ga(),Nk=gi(),Oc=bt(),Dk=Zd();function xk(e){return e&&e.__esModule?e:{default:e}}function oJ(e,t){return Ej(e,function(r){return!(0,Nk.isSpecifiedDirective)(r)},sJ,t)}function uJ(e,t){return Ej(e,Nk.isSpecifiedDirective,_j.isIntrospectionType,t)}function sJ(e){return!(0,wk.isSpecifiedScalarType)(e)&&!(0,_j.isIntrospectionType)(e)}function Ej(e,t,r,n){var i=e.getDirectives().filter(t),o=(0,kk.default)(e.getTypeMap()).filter(r);return[lJ(e)].concat(i.map(function(s){return mJ(s,n)}),o.map(function(s){return Sj(s,n)})).filter(Boolean).join(` `)+` -`}function q7(e){if(!(e.description==null&&B7(e))){var t=[],r=e.getQueryType();r&&t.push(" query: ".concat(r.name));var n=e.getMutationType();n&&t.push(" mutation: ".concat(n.name));var a=e.getSubscriptionType();return a&&t.push(" subscription: ".concat(a.name)),Ii({},e)+`schema { +`}function lJ(e){if(!(e.description==null&&cJ(e))){var t=[],r=e.getQueryType();r&&t.push(" query: ".concat(r.name));var n=e.getMutationType();n&&t.push(" mutation: ".concat(n.name));var i=e.getSubscriptionType();return i&&t.push(" subscription: ".concat(i.name)),Xi({},e)+`schema { `.concat(t.join(` `),` -}`)}}function B7(e){var t=e.getQueryType();if(t&&t.name!=="Query")return!1;var r=e.getMutationType();if(r&&r.name!=="Mutation")return!1;var n=e.getSubscriptionType();return!(n&&n.name!=="Subscription")}function _I(e,t){if((0,uc.isScalarType)(e))return V7(e,t);if((0,uc.isObjectType)(e))return U7(e,t);if((0,uc.isInterfaceType)(e))return G7(e,t);if((0,uc.isUnionType)(e))return Q7(e,t);if((0,uc.isEnumType)(e))return K7(e,t);if((0,uc.isInputObjectType)(e))return H7(e,t);(0,bI.default)(0,"Unexpected type: "+(0,R7.default)(e))}function V7(e,t){return Ii(t,e)+"scalar ".concat(e.name)+W7(e)}function SI(e){var t=e.getInterfaces();return t.length?" implements "+t.map(function(r){return r.name}).join(" & "):""}function U7(e,t){return Ii(t,e)+"type ".concat(e.name)+SI(e)+DI(t,e)}function G7(e,t){return Ii(t,e)+"interface ".concat(e.name)+SI(e)+DI(t,e)}function Q7(e,t){var r=e.getTypes(),n=r.length?" = "+r.join(" | "):"";return Ii(t,e)+"union "+e.name+n}function K7(e,t){var r=e.getValues().map(function(n,a){return Ii(t,n," ",!a)+" "+n.name+JS(n.deprecationReason)});return Ii(t,e)+"enum ".concat(e.name)+WS(r)}function H7(e,t){var r=(0,US.default)(e.getFields()).map(function(n,a){return Ii(t,n," ",!a)+" "+YS(n)});return Ii(t,e)+"input ".concat(e.name)+WS(r)}function DI(e,t){var r=(0,US.default)(t.getFields()).map(function(n,a){return Ii(e,n," ",!a)+" "+n.name+kI(e,n.args," ")+": "+String(n.type)+JS(n.deprecationReason)});return WS(r)}function WS(e){return e.length!==0?` { +}`)}}function cJ(e){var t=e.getQueryType();if(t&&t.name!=="Query")return!1;var r=e.getMutationType();if(r&&r.name!=="Mutation")return!1;var n=e.getSubscriptionType();return!(n&&n.name!=="Subscription")}function Sj(e,t){if((0,Oc.isScalarType)(e))return fJ(e,t);if((0,Oc.isObjectType)(e))return dJ(e,t);if((0,Oc.isInterfaceType)(e))return pJ(e,t);if((0,Oc.isUnionType)(e))return hJ(e,t);if((0,Oc.isEnumType)(e))return vJ(e,t);if((0,Oc.isInputObjectType)(e))return gJ(e,t);(0,Tj.default)(0,"Unexpected type: "+(0,iJ.default)(e))}function fJ(e,t){return Xi(t,e)+"scalar ".concat(e.name)+yJ(e)}function kj(e){var t=e.getInterfaces();return t.length?" implements "+t.map(function(r){return r.name}).join(" & "):""}function dJ(e,t){return Xi(t,e)+"type ".concat(e.name)+kj(e)+Oj(t,e)}function pJ(e,t){return Xi(t,e)+"interface ".concat(e.name)+kj(e)+Oj(t,e)}function hJ(e,t){var r=e.getTypes(),n=r.length?" = "+r.join(" | "):"";return Xi(t,e)+"union "+e.name+n}function vJ(e,t){var r=e.getValues().map(function(n,i){return Xi(t,n," ",!i)+" "+n.name+Ik(n.deprecationReason)});return Xi(t,e)+"enum ".concat(e.name)+Ck(r)}function gJ(e,t){var r=(0,kk.default)(e.getFields()).map(function(n,i){return Xi(t,n," ",!i)+" "+Lk(n)});return Xi(t,e)+"input ".concat(e.name)+Ck(r)}function Oj(e,t){var r=(0,kk.default)(t.getFields()).map(function(n,i){return Xi(e,n," ",!i)+" "+n.name+wj(e,n.args," ")+": "+String(n.type)+Ik(n.deprecationReason)});return Ck(r)}function Ck(e){return e.length!==0?` { `+e.join(` `)+` -}`:""}function kI(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";return t.length===0?"":t.every(function(n){return!n.description})?"("+t.map(YS).join(", ")+")":`( -`+t.map(function(n,a){return Ii(e,n," "+r,!a)+" "+r+YS(n)}).join(` +}`:""}function wj(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"";return t.length===0?"":t.every(function(n){return!n.description})?"("+t.map(Lk).join(", ")+")":`( +`+t.map(function(n,i){return Xi(e,n," "+r,!i)+" "+r+Lk(n)}).join(` `)+` -`+r+")"}function YS(e){var t=(0,HS.astFromValue)(e.defaultValue,e.type),r=e.name+": "+String(e.type);return t&&(r+=" = ".concat((0,GS.print)(t))),r+JS(e.deprecationReason)}function z7(e,t){return Ii(t,e)+"directive @"+e.name+kI(t,e.args)+(e.isRepeatable?" repeatable":"")+" on "+e.locations.join(" | ")}function JS(e){if(e==null)return"";var t=(0,HS.astFromValue)(e,QS.GraphQLString);return t&&e!==KS.DEFAULT_DEPRECATION_REASON?" @deprecated(reason: "+(0,GS.print)(t)+")":" @deprecated"}function W7(e){if(e.specifiedByUrl==null)return"";var t=e.specifiedByUrl,r=(0,HS.astFromValue)(t,QS.GraphQLString);return r||(0,bI.default)(0,"Unexpected null value returned from `astFromValue` for specifiedByUrl")," @specifiedBy(url: "+(0,GS.print)(r)+")"}function Ii(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"",n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=t.description;if(a==null)return"";if((e==null?void 0:e.commentDescriptions)===!0)return Y7(a,r,n);var o=a.length>70,s=(0,F7.printBlockString)(a,"",o),l=r&&!n?` +`+r+")"}function Lk(e){var t=(0,Dk.astFromValue)(e.defaultValue,e.type),r=e.name+": "+String(e.type);return t&&(r+=" = ".concat((0,Ok.print)(t))),r+Ik(e.deprecationReason)}function mJ(e,t){return Xi(t,e)+"directive @"+e.name+wj(t,e.args)+(e.isRepeatable?" repeatable":"")+" on "+e.locations.join(" | ")}function Ik(e){if(e==null)return"";var t=(0,Dk.astFromValue)(e,wk.GraphQLString);return t&&e!==Nk.DEFAULT_DEPRECATION_REASON?" @deprecated(reason: "+(0,Ok.print)(t)+")":" @deprecated"}function yJ(e){if(e.specifiedByUrl==null)return"";var t=e.specifiedByUrl,r=(0,Dk.astFromValue)(t,wk.GraphQLString);return r||(0,Tj.default)(0,"Unexpected null value returned from `astFromValue` for specifiedByUrl")," @specifiedBy(url: "+(0,Ok.print)(r)+")"}function Xi(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"",n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=t.description;if(i==null)return"";if((e==null?void 0:e.commentDescriptions)===!0)return bJ(i,r,n);var o=i.length>70,s=(0,aJ.printBlockString)(i,"",o),l=r&&!n?` `+r:r;return l+s.replace(/\n/g,` `+r)+` -`}function Y7(e,t,r){var n=t&&!r?` -`:"",a=e.split(` +`}function bJ(e,t,r){var n=t&&!r?` +`:"",i=e.split(` `).map(function(o){return t+(o!==""?"# "+o:"#")}).join(` -`);return n+a+` -`}});var CI=U(XS=>{"use strict";Object.defineProperty(XS,"__esModule",{value:!0});XS.concatAST=J7;function J7(e){for(var t=[],r=0;r{"use strict";Object.defineProperty(ZS,"__esModule",{value:!0});ZS.separateOperations=Z7;var om=Vt(),X7=eu();function Z7(e){for(var t=[],r=Object.create(null),n=0,a=e.definitions;n{"use strict";Object.defineProperty(eD,"__esModule",{value:!0});eD.stripIgnoredCharacters=$7;var LI=Zv(),$S=Rl(),xI=tg(),II=jl();function $7(e){for(var t=(0,LI.isSource)(e)?e:new LI.Source(e),r=t.body,n=new xI.Lexer(t),a="",o=!1;n.advance().kind!==$S.TokenKind.EOF;){var s=n.token,l=s.kind,d=!(0,xI.isPunctuatorTokenKind)(s.kind);o&&(d||s.kind===$S.TokenKind.SPREAD)&&(a+=" ");var h=r.slice(s.start,s.end);l===$S.TokenKind.BLOCK_STRING?a+=eW(h):a+=h,o=d}return a}function eW(e){var t=e.slice(3,-3),r=(0,II.dedentBlockStringValue)(t);(0,II.getBlockStringIndentation)(r)>0&&(r=` -`+r);var n=r[r.length-1],a=n==='"'&&r.slice(-4)!=='\\"""';return(a||n==="\\")&&(r+=` -`),'"""'+r+'"""'}});var QI=U(vu=>{"use strict";Object.defineProperty(vu,"__esModule",{value:!0});vu.findBreakingChanges=sW;vu.findDangerousChanges=lW;vu.DangerousChangeType=vu.BreakingChangeType=void 0;var sc=ap(oi()),FI=ap(tu()),tW=ap(Ot()),jI=ap(un()),rW=ap(_d()),nW=Wn(),iW=eu(),aW=Ca(),_t=lt(),oW=Id();function ap(e){return e&&e.__esModule?e:{default:e}}function PI(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function MI(e){for(var t=1;t{"use strict";Object.defineProperty(tD,"__esModule",{value:!0});tD.findDeprecatedUsages=yW;var gW=$l(),mW=AS();function yW(e,t){return(0,gW.validate)(e,t,[mW.NoDeprecatedCustomRule])}});var JI=U(st=>{"use strict";Object.defineProperty(st,"__esModule",{value:!0});Object.defineProperty(st,"getIntrospectionQuery",{enumerable:!0,get:function(){return bW.getIntrospectionQuery}});Object.defineProperty(st,"getOperationAST",{enumerable:!0,get:function(){return TW.getOperationAST}});Object.defineProperty(st,"getOperationRootType",{enumerable:!0,get:function(){return EW.getOperationRootType}});Object.defineProperty(st,"introspectionFromSchema",{enumerable:!0,get:function(){return _W.introspectionFromSchema}});Object.defineProperty(st,"buildClientSchema",{enumerable:!0,get:function(){return SW.buildClientSchema}});Object.defineProperty(st,"buildASTSchema",{enumerable:!0,get:function(){return HI.buildASTSchema}});Object.defineProperty(st,"buildSchema",{enumerable:!0,get:function(){return HI.buildSchema}});Object.defineProperty(st,"extendSchema",{enumerable:!0,get:function(){return zI.extendSchema}});Object.defineProperty(st,"getDescription",{enumerable:!0,get:function(){return zI.getDescription}});Object.defineProperty(st,"lexicographicSortSchema",{enumerable:!0,get:function(){return DW.lexicographicSortSchema}});Object.defineProperty(st,"printSchema",{enumerable:!0,get:function(){return rD.printSchema}});Object.defineProperty(st,"printType",{enumerable:!0,get:function(){return rD.printType}});Object.defineProperty(st,"printIntrospectionSchema",{enumerable:!0,get:function(){return rD.printIntrospectionSchema}});Object.defineProperty(st,"typeFromAST",{enumerable:!0,get:function(){return kW.typeFromAST}});Object.defineProperty(st,"valueFromAST",{enumerable:!0,get:function(){return OW.valueFromAST}});Object.defineProperty(st,"valueFromASTUntyped",{enumerable:!0,get:function(){return CW.valueFromASTUntyped}});Object.defineProperty(st,"astFromValue",{enumerable:!0,get:function(){return wW.astFromValue}});Object.defineProperty(st,"TypeInfo",{enumerable:!0,get:function(){return WI.TypeInfo}});Object.defineProperty(st,"visitWithTypeInfo",{enumerable:!0,get:function(){return WI.visitWithTypeInfo}});Object.defineProperty(st,"coerceInputValue",{enumerable:!0,get:function(){return AW.coerceInputValue}});Object.defineProperty(st,"concatAST",{enumerable:!0,get:function(){return NW.concatAST}});Object.defineProperty(st,"separateOperations",{enumerable:!0,get:function(){return LW.separateOperations}});Object.defineProperty(st,"stripIgnoredCharacters",{enumerable:!0,get:function(){return xW.stripIgnoredCharacters}});Object.defineProperty(st,"isEqualType",{enumerable:!0,get:function(){return nD.isEqualType}});Object.defineProperty(st,"isTypeSubTypeOf",{enumerable:!0,get:function(){return nD.isTypeSubTypeOf}});Object.defineProperty(st,"doTypesOverlap",{enumerable:!0,get:function(){return nD.doTypesOverlap}});Object.defineProperty(st,"assertValidName",{enumerable:!0,get:function(){return YI.assertValidName}});Object.defineProperty(st,"isValidNameError",{enumerable:!0,get:function(){return YI.isValidNameError}});Object.defineProperty(st,"BreakingChangeType",{enumerable:!0,get:function(){return um.BreakingChangeType}});Object.defineProperty(st,"DangerousChangeType",{enumerable:!0,get:function(){return um.DangerousChangeType}});Object.defineProperty(st,"findBreakingChanges",{enumerable:!0,get:function(){return um.findBreakingChanges}});Object.defineProperty(st,"findDangerousChanges",{enumerable:!0,get:function(){return um.findDangerousChanges}});Object.defineProperty(st,"findDeprecatedUsages",{enumerable:!0,get:function(){return IW.findDeprecatedUsages}});var bW=IS(),TW=FS(),EW=Ug(),_W=$x(),SW=tI(),HI=gI(),zI=MS(),DW=yI(),rD=OI(),kW=wa(),OW=Qd(),CW=rE(),wW=Id(),WI=wg(),AW=vS(),NW=CI(),LW=NI(),xW=RI(),nD=Cd(),YI=VT(),um=QI(),IW=KI()});var ct=U(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Object.defineProperty(Z,"version",{enumerable:!0,get:function(){return XI.version}});Object.defineProperty(Z,"versionInfo",{enumerable:!0,get:function(){return XI.versionInfo}});Object.defineProperty(Z,"graphql",{enumerable:!0,get:function(){return ZI.graphql}});Object.defineProperty(Z,"graphqlSync",{enumerable:!0,get:function(){return ZI.graphqlSync}});Object.defineProperty(Z,"GraphQLSchema",{enumerable:!0,get:function(){return Te.GraphQLSchema}});Object.defineProperty(Z,"GraphQLDirective",{enumerable:!0,get:function(){return Te.GraphQLDirective}});Object.defineProperty(Z,"GraphQLScalarType",{enumerable:!0,get:function(){return Te.GraphQLScalarType}});Object.defineProperty(Z,"GraphQLObjectType",{enumerable:!0,get:function(){return Te.GraphQLObjectType}});Object.defineProperty(Z,"GraphQLInterfaceType",{enumerable:!0,get:function(){return Te.GraphQLInterfaceType}});Object.defineProperty(Z,"GraphQLUnionType",{enumerable:!0,get:function(){return Te.GraphQLUnionType}});Object.defineProperty(Z,"GraphQLEnumType",{enumerable:!0,get:function(){return Te.GraphQLEnumType}});Object.defineProperty(Z,"GraphQLInputObjectType",{enumerable:!0,get:function(){return Te.GraphQLInputObjectType}});Object.defineProperty(Z,"GraphQLList",{enumerable:!0,get:function(){return Te.GraphQLList}});Object.defineProperty(Z,"GraphQLNonNull",{enumerable:!0,get:function(){return Te.GraphQLNonNull}});Object.defineProperty(Z,"specifiedScalarTypes",{enumerable:!0,get:function(){return Te.specifiedScalarTypes}});Object.defineProperty(Z,"GraphQLInt",{enumerable:!0,get:function(){return Te.GraphQLInt}});Object.defineProperty(Z,"GraphQLFloat",{enumerable:!0,get:function(){return Te.GraphQLFloat}});Object.defineProperty(Z,"GraphQLString",{enumerable:!0,get:function(){return Te.GraphQLString}});Object.defineProperty(Z,"GraphQLBoolean",{enumerable:!0,get:function(){return Te.GraphQLBoolean}});Object.defineProperty(Z,"GraphQLID",{enumerable:!0,get:function(){return Te.GraphQLID}});Object.defineProperty(Z,"specifiedDirectives",{enumerable:!0,get:function(){return Te.specifiedDirectives}});Object.defineProperty(Z,"GraphQLIncludeDirective",{enumerable:!0,get:function(){return Te.GraphQLIncludeDirective}});Object.defineProperty(Z,"GraphQLSkipDirective",{enumerable:!0,get:function(){return Te.GraphQLSkipDirective}});Object.defineProperty(Z,"GraphQLDeprecatedDirective",{enumerable:!0,get:function(){return Te.GraphQLDeprecatedDirective}});Object.defineProperty(Z,"GraphQLSpecifiedByDirective",{enumerable:!0,get:function(){return Te.GraphQLSpecifiedByDirective}});Object.defineProperty(Z,"TypeKind",{enumerable:!0,get:function(){return Te.TypeKind}});Object.defineProperty(Z,"DEFAULT_DEPRECATION_REASON",{enumerable:!0,get:function(){return Te.DEFAULT_DEPRECATION_REASON}});Object.defineProperty(Z,"introspectionTypes",{enumerable:!0,get:function(){return Te.introspectionTypes}});Object.defineProperty(Z,"__Schema",{enumerable:!0,get:function(){return Te.__Schema}});Object.defineProperty(Z,"__Directive",{enumerable:!0,get:function(){return Te.__Directive}});Object.defineProperty(Z,"__DirectiveLocation",{enumerable:!0,get:function(){return Te.__DirectiveLocation}});Object.defineProperty(Z,"__Type",{enumerable:!0,get:function(){return Te.__Type}});Object.defineProperty(Z,"__Field",{enumerable:!0,get:function(){return Te.__Field}});Object.defineProperty(Z,"__InputValue",{enumerable:!0,get:function(){return Te.__InputValue}});Object.defineProperty(Z,"__EnumValue",{enumerable:!0,get:function(){return Te.__EnumValue}});Object.defineProperty(Z,"__TypeKind",{enumerable:!0,get:function(){return Te.__TypeKind}});Object.defineProperty(Z,"SchemaMetaFieldDef",{enumerable:!0,get:function(){return Te.SchemaMetaFieldDef}});Object.defineProperty(Z,"TypeMetaFieldDef",{enumerable:!0,get:function(){return Te.TypeMetaFieldDef}});Object.defineProperty(Z,"TypeNameMetaFieldDef",{enumerable:!0,get:function(){return Te.TypeNameMetaFieldDef}});Object.defineProperty(Z,"isSchema",{enumerable:!0,get:function(){return Te.isSchema}});Object.defineProperty(Z,"isDirective",{enumerable:!0,get:function(){return Te.isDirective}});Object.defineProperty(Z,"isType",{enumerable:!0,get:function(){return Te.isType}});Object.defineProperty(Z,"isScalarType",{enumerable:!0,get:function(){return Te.isScalarType}});Object.defineProperty(Z,"isObjectType",{enumerable:!0,get:function(){return Te.isObjectType}});Object.defineProperty(Z,"isInterfaceType",{enumerable:!0,get:function(){return Te.isInterfaceType}});Object.defineProperty(Z,"isUnionType",{enumerable:!0,get:function(){return Te.isUnionType}});Object.defineProperty(Z,"isEnumType",{enumerable:!0,get:function(){return Te.isEnumType}});Object.defineProperty(Z,"isInputObjectType",{enumerable:!0,get:function(){return Te.isInputObjectType}});Object.defineProperty(Z,"isListType",{enumerable:!0,get:function(){return Te.isListType}});Object.defineProperty(Z,"isNonNullType",{enumerable:!0,get:function(){return Te.isNonNullType}});Object.defineProperty(Z,"isInputType",{enumerable:!0,get:function(){return Te.isInputType}});Object.defineProperty(Z,"isOutputType",{enumerable:!0,get:function(){return Te.isOutputType}});Object.defineProperty(Z,"isLeafType",{enumerable:!0,get:function(){return Te.isLeafType}});Object.defineProperty(Z,"isCompositeType",{enumerable:!0,get:function(){return Te.isCompositeType}});Object.defineProperty(Z,"isAbstractType",{enumerable:!0,get:function(){return Te.isAbstractType}});Object.defineProperty(Z,"isWrappingType",{enumerable:!0,get:function(){return Te.isWrappingType}});Object.defineProperty(Z,"isNullableType",{enumerable:!0,get:function(){return Te.isNullableType}});Object.defineProperty(Z,"isNamedType",{enumerable:!0,get:function(){return Te.isNamedType}});Object.defineProperty(Z,"isRequiredArgument",{enumerable:!0,get:function(){return Te.isRequiredArgument}});Object.defineProperty(Z,"isRequiredInputField",{enumerable:!0,get:function(){return Te.isRequiredInputField}});Object.defineProperty(Z,"isSpecifiedScalarType",{enumerable:!0,get:function(){return Te.isSpecifiedScalarType}});Object.defineProperty(Z,"isIntrospectionType",{enumerable:!0,get:function(){return Te.isIntrospectionType}});Object.defineProperty(Z,"isSpecifiedDirective",{enumerable:!0,get:function(){return Te.isSpecifiedDirective}});Object.defineProperty(Z,"assertSchema",{enumerable:!0,get:function(){return Te.assertSchema}});Object.defineProperty(Z,"assertDirective",{enumerable:!0,get:function(){return Te.assertDirective}});Object.defineProperty(Z,"assertType",{enumerable:!0,get:function(){return Te.assertType}});Object.defineProperty(Z,"assertScalarType",{enumerable:!0,get:function(){return Te.assertScalarType}});Object.defineProperty(Z,"assertObjectType",{enumerable:!0,get:function(){return Te.assertObjectType}});Object.defineProperty(Z,"assertInterfaceType",{enumerable:!0,get:function(){return Te.assertInterfaceType}});Object.defineProperty(Z,"assertUnionType",{enumerable:!0,get:function(){return Te.assertUnionType}});Object.defineProperty(Z,"assertEnumType",{enumerable:!0,get:function(){return Te.assertEnumType}});Object.defineProperty(Z,"assertInputObjectType",{enumerable:!0,get:function(){return Te.assertInputObjectType}});Object.defineProperty(Z,"assertListType",{enumerable:!0,get:function(){return Te.assertListType}});Object.defineProperty(Z,"assertNonNullType",{enumerable:!0,get:function(){return Te.assertNonNullType}});Object.defineProperty(Z,"assertInputType",{enumerable:!0,get:function(){return Te.assertInputType}});Object.defineProperty(Z,"assertOutputType",{enumerable:!0,get:function(){return Te.assertOutputType}});Object.defineProperty(Z,"assertLeafType",{enumerable:!0,get:function(){return Te.assertLeafType}});Object.defineProperty(Z,"assertCompositeType",{enumerable:!0,get:function(){return Te.assertCompositeType}});Object.defineProperty(Z,"assertAbstractType",{enumerable:!0,get:function(){return Te.assertAbstractType}});Object.defineProperty(Z,"assertWrappingType",{enumerable:!0,get:function(){return Te.assertWrappingType}});Object.defineProperty(Z,"assertNullableType",{enumerable:!0,get:function(){return Te.assertNullableType}});Object.defineProperty(Z,"assertNamedType",{enumerable:!0,get:function(){return Te.assertNamedType}});Object.defineProperty(Z,"getNullableType",{enumerable:!0,get:function(){return Te.getNullableType}});Object.defineProperty(Z,"getNamedType",{enumerable:!0,get:function(){return Te.getNamedType}});Object.defineProperty(Z,"validateSchema",{enumerable:!0,get:function(){return Te.validateSchema}});Object.defineProperty(Z,"assertValidSchema",{enumerable:!0,get:function(){return Te.assertValidSchema}});Object.defineProperty(Z,"Token",{enumerable:!0,get:function(){return Ut.Token}});Object.defineProperty(Z,"Source",{enumerable:!0,get:function(){return Ut.Source}});Object.defineProperty(Z,"Location",{enumerable:!0,get:function(){return Ut.Location}});Object.defineProperty(Z,"getLocation",{enumerable:!0,get:function(){return Ut.getLocation}});Object.defineProperty(Z,"printLocation",{enumerable:!0,get:function(){return Ut.printLocation}});Object.defineProperty(Z,"printSourceLocation",{enumerable:!0,get:function(){return Ut.printSourceLocation}});Object.defineProperty(Z,"Lexer",{enumerable:!0,get:function(){return Ut.Lexer}});Object.defineProperty(Z,"TokenKind",{enumerable:!0,get:function(){return Ut.TokenKind}});Object.defineProperty(Z,"parse",{enumerable:!0,get:function(){return Ut.parse}});Object.defineProperty(Z,"parseValue",{enumerable:!0,get:function(){return Ut.parseValue}});Object.defineProperty(Z,"parseType",{enumerable:!0,get:function(){return Ut.parseType}});Object.defineProperty(Z,"print",{enumerable:!0,get:function(){return Ut.print}});Object.defineProperty(Z,"visit",{enumerable:!0,get:function(){return Ut.visit}});Object.defineProperty(Z,"visitInParallel",{enumerable:!0,get:function(){return Ut.visitInParallel}});Object.defineProperty(Z,"getVisitFn",{enumerable:!0,get:function(){return Ut.getVisitFn}});Object.defineProperty(Z,"BREAK",{enumerable:!0,get:function(){return Ut.BREAK}});Object.defineProperty(Z,"Kind",{enumerable:!0,get:function(){return Ut.Kind}});Object.defineProperty(Z,"DirectiveLocation",{enumerable:!0,get:function(){return Ut.DirectiveLocation}});Object.defineProperty(Z,"isDefinitionNode",{enumerable:!0,get:function(){return Ut.isDefinitionNode}});Object.defineProperty(Z,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return Ut.isExecutableDefinitionNode}});Object.defineProperty(Z,"isSelectionNode",{enumerable:!0,get:function(){return Ut.isSelectionNode}});Object.defineProperty(Z,"isValueNode",{enumerable:!0,get:function(){return Ut.isValueNode}});Object.defineProperty(Z,"isTypeNode",{enumerable:!0,get:function(){return Ut.isTypeNode}});Object.defineProperty(Z,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return Ut.isTypeSystemDefinitionNode}});Object.defineProperty(Z,"isTypeDefinitionNode",{enumerable:!0,get:function(){return Ut.isTypeDefinitionNode}});Object.defineProperty(Z,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return Ut.isTypeSystemExtensionNode}});Object.defineProperty(Z,"isTypeExtensionNode",{enumerable:!0,get:function(){return Ut.isTypeExtensionNode}});Object.defineProperty(Z,"execute",{enumerable:!0,get:function(){return lc.execute}});Object.defineProperty(Z,"executeSync",{enumerable:!0,get:function(){return lc.executeSync}});Object.defineProperty(Z,"defaultFieldResolver",{enumerable:!0,get:function(){return lc.defaultFieldResolver}});Object.defineProperty(Z,"defaultTypeResolver",{enumerable:!0,get:function(){return lc.defaultTypeResolver}});Object.defineProperty(Z,"responsePathAsArray",{enumerable:!0,get:function(){return lc.responsePathAsArray}});Object.defineProperty(Z,"getDirectiveValues",{enumerable:!0,get:function(){return lc.getDirectiveValues}});Object.defineProperty(Z,"subscribe",{enumerable:!0,get:function(){return $I.subscribe}});Object.defineProperty(Z,"createSourceEventStream",{enumerable:!0,get:function(){return $I.createSourceEventStream}});Object.defineProperty(Z,"validate",{enumerable:!0,get:function(){return it.validate}});Object.defineProperty(Z,"ValidationContext",{enumerable:!0,get:function(){return it.ValidationContext}});Object.defineProperty(Z,"specifiedRules",{enumerable:!0,get:function(){return it.specifiedRules}});Object.defineProperty(Z,"ExecutableDefinitionsRule",{enumerable:!0,get:function(){return it.ExecutableDefinitionsRule}});Object.defineProperty(Z,"FieldsOnCorrectTypeRule",{enumerable:!0,get:function(){return it.FieldsOnCorrectTypeRule}});Object.defineProperty(Z,"FragmentsOnCompositeTypesRule",{enumerable:!0,get:function(){return it.FragmentsOnCompositeTypesRule}});Object.defineProperty(Z,"KnownArgumentNamesRule",{enumerable:!0,get:function(){return it.KnownArgumentNamesRule}});Object.defineProperty(Z,"KnownDirectivesRule",{enumerable:!0,get:function(){return it.KnownDirectivesRule}});Object.defineProperty(Z,"KnownFragmentNamesRule",{enumerable:!0,get:function(){return it.KnownFragmentNamesRule}});Object.defineProperty(Z,"KnownTypeNamesRule",{enumerable:!0,get:function(){return it.KnownTypeNamesRule}});Object.defineProperty(Z,"LoneAnonymousOperationRule",{enumerable:!0,get:function(){return it.LoneAnonymousOperationRule}});Object.defineProperty(Z,"NoFragmentCyclesRule",{enumerable:!0,get:function(){return it.NoFragmentCyclesRule}});Object.defineProperty(Z,"NoUndefinedVariablesRule",{enumerable:!0,get:function(){return it.NoUndefinedVariablesRule}});Object.defineProperty(Z,"NoUnusedFragmentsRule",{enumerable:!0,get:function(){return it.NoUnusedFragmentsRule}});Object.defineProperty(Z,"NoUnusedVariablesRule",{enumerable:!0,get:function(){return it.NoUnusedVariablesRule}});Object.defineProperty(Z,"OverlappingFieldsCanBeMergedRule",{enumerable:!0,get:function(){return it.OverlappingFieldsCanBeMergedRule}});Object.defineProperty(Z,"PossibleFragmentSpreadsRule",{enumerable:!0,get:function(){return it.PossibleFragmentSpreadsRule}});Object.defineProperty(Z,"ProvidedRequiredArgumentsRule",{enumerable:!0,get:function(){return it.ProvidedRequiredArgumentsRule}});Object.defineProperty(Z,"ScalarLeafsRule",{enumerable:!0,get:function(){return it.ScalarLeafsRule}});Object.defineProperty(Z,"SingleFieldSubscriptionsRule",{enumerable:!0,get:function(){return it.SingleFieldSubscriptionsRule}});Object.defineProperty(Z,"UniqueArgumentNamesRule",{enumerable:!0,get:function(){return it.UniqueArgumentNamesRule}});Object.defineProperty(Z,"UniqueDirectivesPerLocationRule",{enumerable:!0,get:function(){return it.UniqueDirectivesPerLocationRule}});Object.defineProperty(Z,"UniqueFragmentNamesRule",{enumerable:!0,get:function(){return it.UniqueFragmentNamesRule}});Object.defineProperty(Z,"UniqueInputFieldNamesRule",{enumerable:!0,get:function(){return it.UniqueInputFieldNamesRule}});Object.defineProperty(Z,"UniqueOperationNamesRule",{enumerable:!0,get:function(){return it.UniqueOperationNamesRule}});Object.defineProperty(Z,"UniqueVariableNamesRule",{enumerable:!0,get:function(){return it.UniqueVariableNamesRule}});Object.defineProperty(Z,"ValuesOfCorrectTypeRule",{enumerable:!0,get:function(){return it.ValuesOfCorrectTypeRule}});Object.defineProperty(Z,"VariablesAreInputTypesRule",{enumerable:!0,get:function(){return it.VariablesAreInputTypesRule}});Object.defineProperty(Z,"VariablesInAllowedPositionRule",{enumerable:!0,get:function(){return it.VariablesInAllowedPositionRule}});Object.defineProperty(Z,"LoneSchemaDefinitionRule",{enumerable:!0,get:function(){return it.LoneSchemaDefinitionRule}});Object.defineProperty(Z,"UniqueOperationTypesRule",{enumerable:!0,get:function(){return it.UniqueOperationTypesRule}});Object.defineProperty(Z,"UniqueTypeNamesRule",{enumerable:!0,get:function(){return it.UniqueTypeNamesRule}});Object.defineProperty(Z,"UniqueEnumValueNamesRule",{enumerable:!0,get:function(){return it.UniqueEnumValueNamesRule}});Object.defineProperty(Z,"UniqueFieldDefinitionNamesRule",{enumerable:!0,get:function(){return it.UniqueFieldDefinitionNamesRule}});Object.defineProperty(Z,"UniqueDirectiveNamesRule",{enumerable:!0,get:function(){return it.UniqueDirectiveNamesRule}});Object.defineProperty(Z,"PossibleTypeExtensionsRule",{enumerable:!0,get:function(){return it.PossibleTypeExtensionsRule}});Object.defineProperty(Z,"NoDeprecatedCustomRule",{enumerable:!0,get:function(){return it.NoDeprecatedCustomRule}});Object.defineProperty(Z,"NoSchemaIntrospectionCustomRule",{enumerable:!0,get:function(){return it.NoSchemaIntrospectionCustomRule}});Object.defineProperty(Z,"GraphQLError",{enumerable:!0,get:function(){return sp.GraphQLError}});Object.defineProperty(Z,"syntaxError",{enumerable:!0,get:function(){return sp.syntaxError}});Object.defineProperty(Z,"locatedError",{enumerable:!0,get:function(){return sp.locatedError}});Object.defineProperty(Z,"printError",{enumerable:!0,get:function(){return sp.printError}});Object.defineProperty(Z,"formatError",{enumerable:!0,get:function(){return sp.formatError}});Object.defineProperty(Z,"getIntrospectionQuery",{enumerable:!0,get:function(){return gt.getIntrospectionQuery}});Object.defineProperty(Z,"getOperationAST",{enumerable:!0,get:function(){return gt.getOperationAST}});Object.defineProperty(Z,"getOperationRootType",{enumerable:!0,get:function(){return gt.getOperationRootType}});Object.defineProperty(Z,"introspectionFromSchema",{enumerable:!0,get:function(){return gt.introspectionFromSchema}});Object.defineProperty(Z,"buildClientSchema",{enumerable:!0,get:function(){return gt.buildClientSchema}});Object.defineProperty(Z,"buildASTSchema",{enumerable:!0,get:function(){return gt.buildASTSchema}});Object.defineProperty(Z,"buildSchema",{enumerable:!0,get:function(){return gt.buildSchema}});Object.defineProperty(Z,"getDescription",{enumerable:!0,get:function(){return gt.getDescription}});Object.defineProperty(Z,"extendSchema",{enumerable:!0,get:function(){return gt.extendSchema}});Object.defineProperty(Z,"lexicographicSortSchema",{enumerable:!0,get:function(){return gt.lexicographicSortSchema}});Object.defineProperty(Z,"printSchema",{enumerable:!0,get:function(){return gt.printSchema}});Object.defineProperty(Z,"printType",{enumerable:!0,get:function(){return gt.printType}});Object.defineProperty(Z,"printIntrospectionSchema",{enumerable:!0,get:function(){return gt.printIntrospectionSchema}});Object.defineProperty(Z,"typeFromAST",{enumerable:!0,get:function(){return gt.typeFromAST}});Object.defineProperty(Z,"valueFromAST",{enumerable:!0,get:function(){return gt.valueFromAST}});Object.defineProperty(Z,"valueFromASTUntyped",{enumerable:!0,get:function(){return gt.valueFromASTUntyped}});Object.defineProperty(Z,"astFromValue",{enumerable:!0,get:function(){return gt.astFromValue}});Object.defineProperty(Z,"TypeInfo",{enumerable:!0,get:function(){return gt.TypeInfo}});Object.defineProperty(Z,"visitWithTypeInfo",{enumerable:!0,get:function(){return gt.visitWithTypeInfo}});Object.defineProperty(Z,"coerceInputValue",{enumerable:!0,get:function(){return gt.coerceInputValue}});Object.defineProperty(Z,"concatAST",{enumerable:!0,get:function(){return gt.concatAST}});Object.defineProperty(Z,"separateOperations",{enumerable:!0,get:function(){return gt.separateOperations}});Object.defineProperty(Z,"stripIgnoredCharacters",{enumerable:!0,get:function(){return gt.stripIgnoredCharacters}});Object.defineProperty(Z,"isEqualType",{enumerable:!0,get:function(){return gt.isEqualType}});Object.defineProperty(Z,"isTypeSubTypeOf",{enumerable:!0,get:function(){return gt.isTypeSubTypeOf}});Object.defineProperty(Z,"doTypesOverlap",{enumerable:!0,get:function(){return gt.doTypesOverlap}});Object.defineProperty(Z,"assertValidName",{enumerable:!0,get:function(){return gt.assertValidName}});Object.defineProperty(Z,"isValidNameError",{enumerable:!0,get:function(){return gt.isValidNameError}});Object.defineProperty(Z,"BreakingChangeType",{enumerable:!0,get:function(){return gt.BreakingChangeType}});Object.defineProperty(Z,"DangerousChangeType",{enumerable:!0,get:function(){return gt.DangerousChangeType}});Object.defineProperty(Z,"findBreakingChanges",{enumerable:!0,get:function(){return gt.findBreakingChanges}});Object.defineProperty(Z,"findDangerousChanges",{enumerable:!0,get:function(){return gt.findDangerousChanges}});Object.defineProperty(Z,"findDeprecatedUsages",{enumerable:!0,get:function(){return gt.findDeprecatedUsages}});var XI=gA(),ZI=kx(),Te=Cx(),Ut=Nx(),lc=Lx(),$I=Kx(),it=zx(),sp=Jx(),gt=JI()});var tR=U((Rne,eR)=>{eR.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,r=[],n=0;n{"use strict";var RW=tR(),rR={"text/plain":"Text","text/html":"Url",default:"Text"},FW="Copy to clipboard: #{key}, Enter";function jW(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}function PW(e,t){var r,n,a,o,s,l,d=!1;t||(t={}),r=t.debug||!1;try{a=RW(),o=document.createRange(),s=document.getSelection(),l=document.createElement("span"),l.textContent=e,l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",function(v){if(v.stopPropagation(),t.format)if(v.preventDefault(),typeof v.clipboardData=="undefined"){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var b=rR[t.format]||rR.default;window.clipboardData.setData(b,e)}else v.clipboardData.clearData(),v.clipboardData.setData(t.format,e);t.onCopy&&(v.preventDefault(),t.onCopy(v.clipboardData))}),document.body.appendChild(l),o.selectNodeContents(l),s.addRange(o);var h=document.execCommand("copy");if(!h)throw new Error("copy command was unsuccessful");d=!0}catch(v){r&&console.error("unable to copy using execCommand: ",v),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(b){r&&console.error("unable to copy using clipboardData: ",b),r&&console.error("falling back to prompt"),n=jW("message"in t?t.message:FW),window.prompt(n,e)}}finally{s&&(typeof s.removeRange=="function"?s.removeRange(o):s.removeAllRanges()),l&&document.body.removeChild(l),a()}return d}nR.exports=PW});var iD=U((jne,sm)=>{"use strict";function aR(e,t){if(e!=null)return e;var r=new Error(t!==void 0?t:"Got unexpected "+e);throw r.framesToPop=1,r}sm.exports=aR;sm.exports.default=aR;Object.defineProperty(sm.exports,"__esModule",{value:!0})});var fR=U((gie,QW)=>{QW.exports={Aacute:"\xC1",aacute:"\xE1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223E",acd:"\u223F",acE:"\u223E\u0333",Acirc:"\xC2",acirc:"\xE2",acute:"\xB4",Acy:"\u0410",acy:"\u0430",AElig:"\xC6",aelig:"\xE6",af:"\u2061",Afr:"\u{1D504}",afr:"\u{1D51E}",Agrave:"\xC0",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03B1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2A3F",amp:"&",AMP:"&",andand:"\u2A55",And:"\u2A53",and:"\u2227",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angmsd:"\u2221",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",Aogon:"\u0104",aogon:"\u0105",Aopf:"\u{1D538}",aopf:"\u{1D552}",apacir:"\u2A6F",ap:"\u2248",apE:"\u2A70",ape:"\u224A",apid:"\u224B",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224A",Aring:"\xC5",aring:"\xE5",Ascr:"\u{1D49C}",ascr:"\u{1D4B6}",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224D",Atilde:"\xC3",atilde:"\xE3",Auml:"\xC4",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",Backslash:"\u2216",Barv:"\u2AE7",barvee:"\u22BD",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",Bernoullis:"\u212C",Beta:"\u0392",beta:"\u03B2",beth:"\u2136",between:"\u226C",Bfr:"\u{1D505}",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bNot:"\u2AED",bnot:"\u2310",Bopf:"\u{1D539}",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxbox:"\u29C9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250C",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252C",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxul:"\u2518",boxuL:"\u255B",boxUl:"\u255C",boxUL:"\u255D",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255A",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253C",boxvH:"\u256A",boxVh:"\u256B",boxVH:"\u256C",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251C",boxvR:"\u255E",boxVr:"\u255F",boxVR:"\u2560",bprime:"\u2035",breve:"\u02D8",Breve:"\u02D8",brvbar:"\xA6",bscr:"\u{1D4B7}",Bscr:"\u212C",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsolb:"\u29C5",bsol:"\\",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",Bumpeq:"\u224E",bumpeq:"\u224F",Cacute:"\u0106",cacute:"\u0107",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",cap:"\u2229",Cap:"\u22D2",capcup:"\u2A47",capdot:"\u2A40",CapitalDifferentialD:"\u2145",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",Cayleys:"\u212D",ccaps:"\u2A4D",Ccaron:"\u010C",ccaron:"\u010D",Ccedil:"\xC7",ccedil:"\xE7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2A4C",ccupssm:"\u2A50",Cdot:"\u010A",cdot:"\u010B",cedil:"\xB8",Cedilla:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",CenterDot:"\xB7",cfr:"\u{1D520}",Cfr:"\u212D",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03A7",chi:"\u03C7",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",CircleDot:"\u2299",circledR:"\xAE",circledS:"\u24C8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cir:"\u25CB",cirE:"\u29C3",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2A74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",Congruent:"\u2261",conint:"\u222E",Conint:"\u222F",ContourIntegral:"\u222E",copf:"\u{1D554}",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xA9",COPY:"\xA9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21B5",cross:"\u2717",Cross:"\u2A2F",Cscr:"\u{1D49E}",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cupbrcap:"\u2A48",cupcap:"\u2A46",CupCap:"\u224D",cup:"\u222A",Cup:"\u22D3",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21A1",dArr:"\u21D3",dash:"\u2010",Dashv:"\u2AE4",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",Dcaron:"\u010E",dcaron:"\u010F",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21CA",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2A77",deg:"\xB0",Del:"\u2207",Delta:"\u0394",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",Dfr:"\u{1D507}",dfr:"\u{1D521}",dHar:"\u2965",dharl:"\u21C3",dharr:"\u21C2",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",diam:"\u22C4",diamond:"\u22C4",Diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",DifferentialD:"\u2146",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",Dopf:"\u{1D53B}",dopf:"\u{1D555}",Dot:"\xA8",dot:"\u02D9",DotDot:"\u20DC",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21D3",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21BD",DownRightTeeVector:"\u295F",DownRightVectorBar:"\u2957",DownRightVector:"\u21C1",DownTeeArrow:"\u21A7",DownTee:"\u22A4",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",Dscr:"\u{1D49F}",dscr:"\u{1D4B9}",DScy:"\u0405",dscy:"\u0455",dsol:"\u29F6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",DZcy:"\u040F",dzcy:"\u045F",dzigrarr:"\u27FF",Eacute:"\xC9",eacute:"\xE9",easter:"\u2A6E",Ecaron:"\u011A",ecaron:"\u011B",Ecirc:"\xCA",ecirc:"\xEA",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042D",ecy:"\u044D",eDDot:"\u2A77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\u{1D508}",efr:"\u{1D522}",eg:"\u2A9A",Egrave:"\xC8",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",Element:"\u2208",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25FB",emptyv:"\u2205",EmptyVerySmallSquare:"\u25AB",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",ENG:"\u014A",eng:"\u014B",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\u{1D53C}",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",Epsilon:"\u0395",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",Equal:"\u2A75",equals:"=",EqualTilde:"\u2242",equest:"\u225F",Equilibrium:"\u21CC",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",erDot:"\u2253",escr:"\u212F",Escr:"\u2130",esdot:"\u2250",Esim:"\u2A73",esim:"\u2242",Eta:"\u0397",eta:"\u03B7",ETH:"\xD0",eth:"\xF0",Euml:"\xCB",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",Ffr:"\u{1D509}",ffr:"\u{1D523}",filig:"\uFB01",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",Fopf:"\u{1D53D}",fopf:"\u{1D557}",forall:"\u2200",ForAll:"\u2200",fork:"\u22D4",forkv:"\u2AD9",Fouriertrf:"\u2131",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\u{1D4BB}",Fscr:"\u2131",gacute:"\u01F5",Gamma:"\u0393",gamma:"\u03B3",Gammad:"\u03DC",gammad:"\u03DD",gap:"\u2A86",Gbreve:"\u011E",gbreve:"\u011F",Gcedil:"\u0122",Gcirc:"\u011C",gcirc:"\u011D",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",ge:"\u2265",gE:"\u2267",gEl:"\u2A8C",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",gescc:"\u2AA9",ges:"\u2A7E",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",Gfr:"\u{1D50A}",gfr:"\u{1D524}",gg:"\u226B",Gg:"\u22D9",ggg:"\u22D9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2AA5",gl:"\u2277",glE:"\u2A92",glj:"\u2AA4",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gnE:"\u2269",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",Gopf:"\u{1D53E}",gopf:"\u{1D558}",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gtcc:"\u2AA7",gtcir:"\u2A7A",gt:">",GT:">",Gt:"\u226B",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",Hacek:"\u02C7",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",HARDcy:"\u042A",hardcy:"\u044A",harrcir:"\u2948",harr:"\u2194",hArr:"\u21D4",harrw:"\u21AD",Hat:"^",hbar:"\u210F",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",Hfr:"\u210C",HilbertSpace:"\u210B",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\u{1D559}",Hopf:"\u210D",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\u{1D4BD}",Hscr:"\u210B",hslash:"\u210F",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224E",HumpEqual:"\u224F",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xCD",iacute:"\xED",ic:"\u2063",Icirc:"\xCE",icirc:"\xEE",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",ifr:"\u{1D526}",Ifr:"\u2111",Igrave:"\xCC",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012A",imacr:"\u012B",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22B7",imped:"\u01B5",Implies:"\u21D2",incare:"\u2105",in:"\u2208",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",intcal:"\u22BA",int:"\u222B",Int:"\u222C",integers:"\u2124",Integral:"\u222B",intercal:"\u22BA",Intersection:"\u22C2",intlarhk:"\u2A17",intprod:"\u2A3C",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012E",iogon:"\u012F",Iopf:"\u{1D540}",iopf:"\u{1D55A}",Iota:"\u0399",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",iscr:"\u{1D4BE}",Iscr:"\u2110",isin:"\u2208",isindot:"\u22F5",isinE:"\u22F9",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xCF",iuml:"\xEF",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\u{1D50D}",jfr:"\u{1D527}",jmath:"\u0237",Jopf:"\u{1D541}",jopf:"\u{1D55B}",Jscr:"\u{1D4A5}",jscr:"\u{1D4BF}",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039A",kappa:"\u03BA",kappav:"\u03F0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041A",kcy:"\u043A",Kfr:"\u{1D50E}",kfr:"\u{1D528}",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040C",kjcy:"\u045C",Kopf:"\u{1D542}",kopf:"\u{1D55C}",Kscr:"\u{1D4A6}",kscr:"\u{1D4C0}",lAarr:"\u21DA",Lacute:"\u0139",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",Lambda:"\u039B",lambda:"\u03BB",lang:"\u27E8",Lang:"\u27EA",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",Laplacetrf:"\u2112",laquo:"\xAB",larrb:"\u21E4",larrbfs:"\u291F",larr:"\u2190",Larr:"\u219E",lArr:"\u21D0",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",latail:"\u2919",lAtail:"\u291B",lat:"\u2AAB",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lBarr:"\u290E",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",Lcaron:"\u013D",lcaron:"\u013E",Lcedil:"\u013B",lcedil:"\u013C",lceil:"\u2308",lcub:"{",Lcy:"\u041B",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27E8",LeftArrowBar:"\u21E4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21D0",LeftArrowRightArrow:"\u21C6",leftarrowtail:"\u21A2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21C3",LeftFloor:"\u230A",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21D4",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",LeftRightVector:"\u294E",LeftTeeArrow:"\u21A4",LeftTee:"\u22A3",LeftTeeVector:"\u295A",leftthreetimes:"\u22CB",LeftTriangleBar:"\u29CF",LeftTriangle:"\u22B2",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21BF",LeftVectorBar:"\u2952",LeftVector:"\u21BC",lEg:"\u2A8B",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",lescc:"\u2AA8",les:"\u2A7D",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2AA1",lesssim:"\u2272",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",lfisht:"\u297C",lfloor:"\u230A",Lfr:"\u{1D50F}",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lHar:"\u2962",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21C7",ll:"\u226A",Ll:"\u22D8",llcorner:"\u231E",Lleftarrow:"\u21DA",llhard:"\u296B",lltri:"\u25FA",Lmidot:"\u013F",lmidot:"\u0140",lmoustache:"\u23B0",lmoust:"\u23B0",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lnE:"\u2268",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",LongLeftArrow:"\u27F5",Longleftarrow:"\u27F8",longleftrightarrow:"\u27F7",LongLeftRightArrow:"\u27F7",Longleftrightarrow:"\u27FA",longmapsto:"\u27FC",longrightarrow:"\u27F6",LongRightArrow:"\u27F6",Longrightarrow:"\u27F9",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",Lopf:"\u{1D543}",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",Lscr:"\u2112",lsh:"\u21B0",Lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2AA6",ltcir:"\u2A79",lt:"<",LT:"<",Lt:"\u226A",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",ltrPar:"\u2996",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",Mcy:"\u041C",mcy:"\u043C",mdash:"\u2014",mDDot:"\u223A",measuredangle:"\u2221",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",midast:"*",midcir:"\u2AF0",mid:"\u2223",middot:"\xB7",minusb:"\u229F",minus:"\u2212",minusd:"\u2238",minusdu:"\u2A2A",MinusPlus:"\u2213",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",Mopf:"\u{1D544}",mopf:"\u{1D55E}",mp:"\u2213",mscr:"\u{1D4C2}",Mscr:"\u2133",mstpos:"\u223E",Mu:"\u039C",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natural:"\u266E",naturals:"\u2115",natur:"\u266E",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",Ncy:"\u041D",ncy:"\u043D",ndash:"\u2013",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21D7",nearrow:"\u2197",ne:"\u2260",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` -`,nexist:"\u2204",nexists:"\u2204",Nfr:"\u{1D511}",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",nGg:"\u22D9\u0338",ngsim:"\u2275",nGt:"\u226B\u20D2",ngt:"\u226F",ngtr:"\u226F",nGtv:"\u226B\u0338",nharr:"\u21AE",nhArr:"\u21CE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",NJcy:"\u040A",njcy:"\u045A",nlarr:"\u219A",nlArr:"\u21CD",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219A",nLeftarrow:"\u21CD",nleftrightarrow:"\u21AE",nLeftrightarrow:"\u21CE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nLl:"\u22D8\u0338",nlsim:"\u2274",nLt:"\u226A\u20D2",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nLtv:"\u226A\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xA0",nopf:"\u{1D55F}",Nopf:"\u2115",Not:"\u2AEC",not:"\xAC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",notin:"\u2209",notindot:"\u22F5\u0338",notinE:"\u22F9\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangle:"\u22EA",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangle:"\u22EB",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",nprec:"\u2280",npreceq:"\u2AAF\u0338",npre:"\u2AAF\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219B",nrArr:"\u21CF",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nRightarrow:"\u21CF",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",Nscr:"\u{1D4A9}",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",Ntilde:"\xD1",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",Nu:"\u039D",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvDash:"\u22AD",nVdash:"\u22AE",nVDash:"\u22AF",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvHarr:"\u2904",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21D6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xD3",oacute:"\xF3",oast:"\u229B",Ocirc:"\xD4",ocirc:"\xF4",ocir:"\u229A",Ocy:"\u041E",ocy:"\u043E",odash:"\u229D",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29BF",Ofr:"\u{1D512}",ofr:"\u{1D52C}",ogon:"\u02DB",Ograve:"\xD2",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",Omacr:"\u014C",omacr:"\u014D",Omega:"\u03A9",omega:"\u03C9",Omicron:"\u039F",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",Oopf:"\u{1D546}",oopf:"\u{1D560}",opar:"\u29B7",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",operp:"\u29B9",oplus:"\u2295",orarr:"\u21BB",Or:"\u2A54",or:"\u2228",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oS:"\u24C8",Oscr:"\u{1D4AA}",oscr:"\u2134",Oslash:"\xD8",oslash:"\xF8",osol:"\u2298",Otilde:"\xD5",otilde:"\xF5",otimesas:"\u2A36",Otimes:"\u2A37",otimes:"\u2297",Ouml:"\xD6",ouml:"\xF6",ovbar:"\u233D",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",para:"\xB6",parallel:"\u2225",par:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",PartialD:"\u2202",Pcy:"\u041F",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",Pfr:"\u{1D513}",pfr:"\u{1D52D}",Phi:"\u03A6",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",Pi:"\u03A0",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plus:"+",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",PlusMinus:"\xB1",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",Poincareplane:"\u210C",pointint:"\u2A15",popf:"\u{1D561}",Popf:"\u2119",pound:"\xA3",prap:"\u2AB7",Pr:"\u2ABB",pr:"\u227A",prcue:"\u227C",precapprox:"\u2AB7",prec:"\u227A",preccurlyeq:"\u227C",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",pre:"\u2AAF",prE:"\u2AB3",precsim:"\u227E",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2AB9",prnE:"\u2AB5",prnsim:"\u22E8",prod:"\u220F",Product:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",Proportional:"\u221D",Proportion:"\u2237",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",Pscr:"\u{1D4AB}",pscr:"\u{1D4C5}",Psi:"\u03A8",psi:"\u03C8",puncsp:"\u2008",Qfr:"\u{1D514}",qfr:"\u{1D52E}",qint:"\u2A0C",qopf:"\u{1D562}",Qopf:"\u211A",qprime:"\u2057",Qscr:"\u{1D4AC}",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',QUOT:'"',rAarr:"\u21DB",race:"\u223D\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",Rang:"\u27EB",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21A0",rArr:"\u21D2",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21A3",rarrw:"\u219D",ratail:"\u291A",rAtail:"\u291C",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rBarr:"\u290F",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",Re:"\u211C",rect:"\u25AD",reg:"\xAE",REG:"\xAE",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",rfisht:"\u297D",rfloor:"\u230B",rfr:"\u{1D52F}",Rfr:"\u211C",rHar:"\u2964",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",Rho:"\u03A1",rho:"\u03C1",rhov:"\u03F1",RightAngleBracket:"\u27E9",RightArrowBar:"\u21E5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21D2",RightArrowLeftArrow:"\u21C4",rightarrowtail:"\u21A3",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVectorBar:"\u2955",RightDownVector:"\u21C2",RightFloor:"\u230B",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",RightTeeArrow:"\u21A6",RightTee:"\u22A2",RightTeeVector:"\u295B",rightthreetimes:"\u22CC",RightTriangleBar:"\u29D0",RightTriangle:"\u22B3",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVectorBar:"\u2954",RightUpVector:"\u21BE",RightVectorBar:"\u2953",RightVector:"\u21C0",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoustache:"\u23B1",rmoust:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\u{1D563}",Ropf:"\u211D",roplus:"\u2A2E",rotimes:"\u2A35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",Rrightarrow:"\u21DB",rsaquo:"\u203A",rscr:"\u{1D4C7}",Rscr:"\u211B",rsh:"\u21B1",Rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",RuleDelayed:"\u29F4",ruluhar:"\u2968",rx:"\u211E",Sacute:"\u015A",sacute:"\u015B",sbquo:"\u201A",scap:"\u2AB8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2ABC",sc:"\u227B",sccue:"\u227D",sce:"\u2AB0",scE:"\u2AB4",Scedil:"\u015E",scedil:"\u015F",Scirc:"\u015C",scirc:"\u015D",scnap:"\u2ABA",scnE:"\u2AB6",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",Scy:"\u0421",scy:"\u0441",sdotb:"\u22A1",sdot:"\u22C5",sdote:"\u2A66",searhk:"\u2925",searr:"\u2198",seArr:"\u21D8",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\u{1D516}",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xAD",Sigma:"\u03A3",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",SOFTcy:"\u042C",softcy:"\u044C",solbar:"\u233F",solb:"\u29C4",sol:"/",Sopf:"\u{1D54A}",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",Sqrt:"\u221A",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",square:"\u25A1",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25AA",squ:"\u25A1",squf:"\u25AA",srarr:"\u2192",Sscr:"\u{1D4AE}",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",Star:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",Sub:"\u22D0",subdot:"\u2ABD",subE:"\u2AC5",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",Subset:"\u22D0",subseteq:"\u2286",subseteqq:"\u2AC5",SubsetEqual:"\u2286",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succapprox:"\u2AB8",succ:"\u227B",succcurlyeq:"\u227D",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",SuchThat:"\u220B",sum:"\u2211",Sum:"\u2211",sung:"\u266A",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",sup:"\u2283",Sup:"\u22D1",supdot:"\u2ABE",supdsub:"\u2AD8",supE:"\u2AC6",supe:"\u2287",supedot:"\u2AC4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",supset:"\u2283",Supset:"\u22D1",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21D9",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",Tab:" ",target:"\u2316",Tau:"\u03A4",tau:"\u03C4",tbrk:"\u23B4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",Tfr:"\u{1D517}",tfr:"\u{1D531}",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223C",THORN:"\xDE",thorn:"\xFE",tilde:"\u02DC",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2A31",timesb:"\u22A0",times:"\xD7",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",topbot:"\u2336",topcir:"\u2AF1",top:"\u22A4",Topf:"\u{1D54B}",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",TripleDot:"\u20DB",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",Tscr:"\u{1D4AF}",tscr:"\u{1D4C9}",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040B",tshcy:"\u045B",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",Uacute:"\xDA",uacute:"\xFA",uarr:"\u2191",Uarr:"\u219F",uArr:"\u21D1",Uarrocir:"\u2949",Ubrcy:"\u040E",ubrcy:"\u045E",Ubreve:"\u016C",ubreve:"\u016D",Ucirc:"\xDB",ucirc:"\xFB",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21C5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",Ufr:"\u{1D518}",ufr:"\u{1D532}",Ugrave:"\xD9",ugrave:"\xF9",uHar:"\u2963",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",Umacr:"\u016A",umacr:"\u016B",uml:"\xA8",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",uogon:"\u0173",Uopf:"\u{1D54C}",uopf:"\u{1D566}",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21D1",UpArrowDownArrow:"\u21C5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21D5",UpEquilibrium:"\u296E",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03C5",Upsi:"\u03D2",upsih:"\u03D2",Upsilon:"\u03A5",upsilon:"\u03C5",UpTeeArrow:"\u21A5",UpTee:"\u22A5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",Uring:"\u016E",uring:"\u016F",urtri:"\u25F9",Uscr:"\u{1D4B0}",uscr:"\u{1D4CA}",utdot:"\u22F0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",Uuml:"\xDC",uuml:"\xFC",uwangle:"\u29A7",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",vArr:"\u21D5",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vBar:"\u2AE8",Vbar:"\u2AEB",vBarv:"\u2AE9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22A2",vDash:"\u22A8",Vdash:"\u22A9",VDash:"\u22AB",Vdashl:"\u2AE6",veebar:"\u22BB",vee:"\u2228",Vee:"\u22C1",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",Vopf:"\u{1D54D}",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",Vscr:"\u{1D4B1}",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",Vvdash:"\u22AA",vzigzag:"\u299A",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",Wedge:"\u22C0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\u{1D51A}",wfr:"\u{1D534}",Wopf:"\u{1D54E}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\u{1D4B2}",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",Xfr:"\u{1D51B}",xfr:"\u{1D535}",xharr:"\u27F7",xhArr:"\u27FA",Xi:"\u039E",xi:"\u03BE",xlarr:"\u27F5",xlArr:"\u27F8",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",Xopf:"\u{1D54F}",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrarr:"\u27F6",xrArr:"\u27F9",Xscr:"\u{1D4B3}",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",Yacute:"\xDD",yacute:"\xFD",YAcy:"\u042F",yacy:"\u044F",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042B",ycy:"\u044B",yen:"\xA5",Yfr:"\u{1D51C}",yfr:"\u{1D536}",YIcy:"\u0407",yicy:"\u0457",Yopf:"\u{1D550}",yopf:"\u{1D56A}",Yscr:"\u{1D4B4}",yscr:"\u{1D4CE}",YUcy:"\u042E",yucy:"\u044E",yuml:"\xFF",Yuml:"\u0178",Zacute:"\u0179",zacute:"\u017A",Zcaron:"\u017D",zcaron:"\u017E",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017B",zdot:"\u017C",zeetrf:"\u2128",ZeroWidthSpace:"\u200B",Zeta:"\u0396",zeta:"\u03B6",zfr:"\u{1D537}",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21DD",zopf:"\u{1D56B}",Zopf:"\u2124",Zscr:"\u{1D4B5}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"}});var fD=U((mie,dR)=>{"use strict";dR.exports=fR()});var cm=U((yie,pR)=>{pR.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/});var gR=U((bie,vR)=>{"use strict";var hR={};function KW(e){var t,r,n=hR[e];if(n)return n;for(n=hR[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),/^[0-9a-z]$/i.test(r)?n.push(r):n.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t=55296&&o<=57343){if(o>=55296&&o<=56319&&n+1=56320&&s<=57343)){d+=encodeURIComponent(e[n]+e[n+1]),n++;continue}d+="%EF%BF%BD";continue}d+=encodeURIComponent(e[n])}return d}fm.defaultChars=";/?:@&=+$,-_.!~*'()#";fm.componentChars="-_.!~*'()";vR.exports=fm});var bR=U((Tie,yR)=>{"use strict";var mR={};function HW(e){var t,r,n=mR[e];if(n)return n;for(n=mR[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),n.push(r);for(t=0;t=55296&&v<=57343?b+="\uFFFD\uFFFD\uFFFD":b+=String.fromCharCode(v),a+=6;continue}if((s&248)==240&&a+91114111?b+="\uFFFD\uFFFD\uFFFD\uFFFD":(v-=65536,b+=String.fromCharCode(55296+(v>>10),56320+(v&1023))),a+=9;continue}b+="\uFFFD"}return b})}dm.defaultChars=";/?:@&=+$,#";dm.componentChars="";yR.exports=dm});var ER=U((Eie,TR)=>{"use strict";TR.exports=function(t){var r="";return r+=t.protocol||"",r+=t.slashes?"//":"",r+=t.auth?t.auth+"@":"",t.hostname&&t.hostname.indexOf(":")!==-1?r+="["+t.hostname+"]":r+=t.hostname||"",r+=t.port?":"+t.port:"",r+=t.pathname||"",r+=t.search||"",r+=t.hash||"",r}});var wR=U((_ie,CR)=>{"use strict";function pm(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var zW=/^([a-z0-9.+-]+:)/i,WW=/:[0-9]*$/,YW=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,JW=["<",">",'"',"`"," ","\r",` -`," "],XW=["{","}","|","\\","^","`"].concat(JW),ZW=["'"].concat(XW),_R=["%","/","?",";","#"].concat(ZW),SR=["/","?","#"],$W=255,DR=/^[+a-z0-9A-Z_-]{0,63}$/,eY=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,kR={javascript:!0,"javascript:":!0},OR={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function tY(e,t){if(e&&e instanceof pm)return e;var r=new pm;return r.parse(e,t),r}pm.prototype.parse=function(e,t){var r,n,a,o,s,l=e;if(l=l.trim(),!t&&e.split("#").length===1){var d=YW.exec(l);if(d)return this.pathname=d[1],d[2]&&(this.search=d[2]),this}var h=zW.exec(l);if(h&&(h=h[0],a=h.toLowerCase(),this.protocol=h,l=l.substr(h.length)),(t||h||l.match(/^\/\/[^@\/]+@[^@\/]+/))&&(s=l.substr(0,2)==="//",s&&!(h&&kR[h])&&(l=l.substr(2),this.slashes=!0)),!kR[h]&&(s||h&&!OR[h])){var v=-1;for(r=0;r127?_+="x":_+=y[m];if(!_.match(DR)){var w=S.slice(0,r),C=S.slice(r+1),D=y.match(eY);D&&(w.push(D[1]),C.unshift(D[2])),C.length&&(l=C.join(".")+l),this.hostname=w.join(".");break}}}}this.hostname.length>$W&&(this.hostname=""),L&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var R=l.indexOf("#");R!==-1&&(this.hash=l.substr(R),l=l.slice(0,R));var M=l.indexOf("?");return M!==-1&&(this.search=l.substr(M),l=l.slice(0,M)),l&&(this.pathname=l),OR[a]&&this.hostname&&!this.pathname&&(this.pathname=""),this};pm.prototype.parseHost=function(e){var t=WW.exec(e);t&&(t=t[0],t!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)};CR.exports=tY});var dD=U((Sie,cp)=>{"use strict";cp.exports.encode=gR();cp.exports.decode=bR();cp.exports.format=ER();cp.exports.parse=wR()});var pD=U((Die,AR)=>{AR.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/});var hD=U((kie,NR)=>{NR.exports=/[\0-\x1F\x7F-\x9F]/});var xR=U((Oie,LR)=>{LR.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/});var vD=U((Cie,IR)=>{IR.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/});var RR=U(cc=>{"use strict";cc.Any=pD();cc.Cc=hD();cc.Cf=xR();cc.P=cm();cc.Z=vD()});var Ct=U(Vr=>{"use strict";function rY(e){return Object.prototype.toString.call(e)}function nY(e){return rY(e)==="[object String]"}var iY=Object.prototype.hasOwnProperty;function FR(e,t){return iY.call(e,t)}function aY(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach(function(r){if(!!r){if(typeof r!="object")throw new TypeError(r+"must be object");Object.keys(r).forEach(function(n){e[n]=r[n]})}}),e}function oY(e,t,r){return[].concat(e.slice(0,t),r,e.slice(t+1))}function jR(e){return!(e>=55296&&e<=57343||e>=64976&&e<=65007||(e&65535)==65535||(e&65535)==65534||e>=0&&e<=8||e===11||e>=14&&e<=31||e>=127&&e<=159||e>1114111)}function PR(e){if(e>65535){e-=65536;var t=55296+(e>>10),r=56320+(e&1023);return String.fromCharCode(t,r)}return String.fromCharCode(e)}var MR=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,uY=/&([a-z#][a-z0-9]{1,31});/gi,sY=new RegExp(MR.source+"|"+uY.source,"gi"),lY=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,qR=fD();function cY(e,t){var r=0;return FR(qR,t)?qR[t]:t.charCodeAt(0)===35&&lY.test(t)&&(r=t[1].toLowerCase()==="x"?parseInt(t.slice(2),16):parseInt(t.slice(1),10),jR(r))?PR(r):e}function fY(e){return e.indexOf("\\")<0?e:e.replace(MR,"$1")}function dY(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(sY,function(t,r,n){return r||cY(t,n)})}var pY=/[&<>"]/,hY=/[&<>"]/g,vY={"&":"&","<":"<",">":">",'"':"""};function gY(e){return vY[e]}function mY(e){return pY.test(e)?e.replace(hY,gY):e}var yY=/[.?*+^$[\]\\(){}|-]/g;function bY(e){return e.replace(yY,"\\$&")}function TY(e){switch(e){case 9:case 32:return!0}return!1}function EY(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}var _Y=cm();function SY(e){return _Y.test(e)}function DY(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function kY(e){return e=e.trim().replace(/\s+/g," "),"\u1E9E".toLowerCase()==="\u1E7E"&&(e=e.replace(/ẞ/g,"\xDF")),e.toLowerCase().toUpperCase()}Vr.lib={};Vr.lib.mdurl=dD();Vr.lib.ucmicro=RR();Vr.assign=aY;Vr.isString=nY;Vr.has=FR;Vr.unescapeMd=fY;Vr.unescapeAll=dY;Vr.isValidEntityCode=jR;Vr.fromCodePoint=PR;Vr.escapeHtml=mY;Vr.arrayReplaceAt=oY;Vr.isSpace=TY;Vr.isWhiteSpace=EY;Vr.isMdAsciiPunct=DY;Vr.isPunctChar=SY;Vr.escapeRE=bY;Vr.normalizeReference=kY});var VR=U((Nie,BR)=>{"use strict";BR.exports=function(t,r,n){var a,o,s,l,d=-1,h=t.posMax,v=t.pos;for(t.pos=r+1,a=1;t.pos{"use strict";var UR=Ct().unescapeAll;GR.exports=function(t,r,n){var a,o,s=0,l=r,d={ok:!1,pos:0,lines:0,str:""};if(t.charCodeAt(r)===60){for(r++;r{"use strict";var OY=Ct().unescapeAll;KR.exports=function(t,r,n){var a,o,s=0,l=r,d={ok:!1,pos:0,lines:0,str:""};if(r>=n||(o=t.charCodeAt(r),o!==34&&o!==39&&o!==40))return d;for(r++,o===40&&(o=41);r{"use strict";hm.parseLinkLabel=VR();hm.parseLinkDestination=QR();hm.parseLinkTitle=HR()});var YR=U((Rie,WR)=>{"use strict";var CY=Ct().assign,wY=Ct().unescapeAll,bs=Ct().escapeHtml,Ia={};Ia.code_inline=function(e,t,r,n,a){var o=e[t];return""+bs(e[t].content)+""};Ia.code_block=function(e,t,r,n,a){var o=e[t];return""+bs(e[t].content)+` -`};Ia.fence=function(e,t,r,n,a){var o=e[t],s=o.info?wY(o.info).trim():"",l="",d,h,v,b;return s&&(l=s.split(/\s+/g)[0]),r.highlight?d=r.highlight(o.content,l)||bs(o.content):d=bs(o.content),d.indexOf(""+d+` -`):"
    "+d+`
    -`};Ia.image=function(e,t,r,n,a){var o=e[t];return o.attrs[o.attrIndex("alt")][1]=a.renderInlineAsText(o.children,r,n),a.renderToken(e,t,r)};Ia.hardbreak=function(e,t,r){return r.xhtmlOut?`
    +`);return n+i+` +`}});var Dj=G(Ak=>{"use strict";Object.defineProperty(Ak,"__esModule",{value:!0});Ak.concatAST=TJ;function TJ(e){for(var t=[],r=0;r{"use strict";Object.defineProperty(Rk,"__esModule",{value:!0});Rk.separateOperations=EJ;var Om=Jt(),_J=hu();function EJ(e){for(var t=[],r=Object.create(null),n=0,i=e.definitions;n{"use strict";Object.defineProperty(Pk,"__esModule",{value:!0});Pk.stripIgnoredCharacters=SJ;var Ij=mg(),jk=Zl(),Aj=Tg(),Rj=ec();function SJ(e){for(var t=(0,Ij.isSource)(e)?e:new Ij.Source(e),r=t.body,n=new Aj.Lexer(t),i="",o=!1;n.advance().kind!==jk.TokenKind.EOF;){var s=n.token,l=s.kind,d=!(0,Aj.isPunctuatorTokenKind)(s.kind);o&&(d||s.kind===jk.TokenKind.SPREAD)&&(i+=" ");var h=r.slice(s.start,s.end);l===jk.TokenKind.BLOCK_STRING?i+=kJ(h):i+=h,o=d}return i}function kJ(e){var t=e.slice(3,-3),r=(0,Rj.dedentBlockStringValue)(t);(0,Rj.getBlockStringIndentation)(r)>0&&(r=` +`+r);var n=r[r.length-1],i=n==='"'&&r.slice(-4)!=='\\"""';return(i||n==="\\")&&(r+=` +`),'"""'+r+'"""'}});var Kj=G(xu=>{"use strict";Object.defineProperty(xu,"__esModule",{value:!0});xu.findBreakingChanges=IJ;xu.findDangerousChanges=AJ;xu.DangerousChangeType=xu.BreakingChangeType=void 0;var wc=kp(Ni()),Pj=kp(vu()),OJ=kp(jt()),Fj=kp(_n()),wJ=kp(Ud()),NJ=hi(),DJ=hu(),xJ=Ga(),Ct=bt(),CJ=Zd();function kp(e){return e&&e.__esModule?e:{default:e}}function Mj(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function qj(e){for(var t=1;t{"use strict";Object.defineProperty(Fk,"__esModule",{value:!0});Fk.findDeprecatedUsages=GJ;var VJ=mc(),UJ=fk();function GJ(e,t){return(0,VJ.validate)(e,t,[UJ.NoDeprecatedCustomRule])}});var Xj=G(yt=>{"use strict";Object.defineProperty(yt,"__esModule",{value:!0});Object.defineProperty(yt,"getIntrospectionQuery",{enumerable:!0,get:function(){return QJ.getIntrospectionQuery}});Object.defineProperty(yt,"getOperationAST",{enumerable:!0,get:function(){return BJ.getOperationAST}});Object.defineProperty(yt,"getOperationRootType",{enumerable:!0,get:function(){return KJ.getOperationRootType}});Object.defineProperty(yt,"introspectionFromSchema",{enumerable:!0,get:function(){return HJ.introspectionFromSchema}});Object.defineProperty(yt,"buildClientSchema",{enumerable:!0,get:function(){return zJ.buildClientSchema}});Object.defineProperty(yt,"buildASTSchema",{enumerable:!0,get:function(){return zj.buildASTSchema}});Object.defineProperty(yt,"buildSchema",{enumerable:!0,get:function(){return zj.buildSchema}});Object.defineProperty(yt,"extendSchema",{enumerable:!0,get:function(){return Wj.extendSchema}});Object.defineProperty(yt,"getDescription",{enumerable:!0,get:function(){return Wj.getDescription}});Object.defineProperty(yt,"lexicographicSortSchema",{enumerable:!0,get:function(){return WJ.lexicographicSortSchema}});Object.defineProperty(yt,"printSchema",{enumerable:!0,get:function(){return Mk.printSchema}});Object.defineProperty(yt,"printType",{enumerable:!0,get:function(){return Mk.printType}});Object.defineProperty(yt,"printIntrospectionSchema",{enumerable:!0,get:function(){return Mk.printIntrospectionSchema}});Object.defineProperty(yt,"typeFromAST",{enumerable:!0,get:function(){return YJ.typeFromAST}});Object.defineProperty(yt,"valueFromAST",{enumerable:!0,get:function(){return JJ.valueFromAST}});Object.defineProperty(yt,"valueFromASTUntyped",{enumerable:!0,get:function(){return XJ.valueFromASTUntyped}});Object.defineProperty(yt,"astFromValue",{enumerable:!0,get:function(){return ZJ.astFromValue}});Object.defineProperty(yt,"TypeInfo",{enumerable:!0,get:function(){return Yj.TypeInfo}});Object.defineProperty(yt,"visitWithTypeInfo",{enumerable:!0,get:function(){return Yj.visitWithTypeInfo}});Object.defineProperty(yt,"coerceInputValue",{enumerable:!0,get:function(){return $J.coerceInputValue}});Object.defineProperty(yt,"concatAST",{enumerable:!0,get:function(){return eX.concatAST}});Object.defineProperty(yt,"separateOperations",{enumerable:!0,get:function(){return tX.separateOperations}});Object.defineProperty(yt,"stripIgnoredCharacters",{enumerable:!0,get:function(){return rX.stripIgnoredCharacters}});Object.defineProperty(yt,"isEqualType",{enumerable:!0,get:function(){return qk.isEqualType}});Object.defineProperty(yt,"isTypeSubTypeOf",{enumerable:!0,get:function(){return qk.isTypeSubTypeOf}});Object.defineProperty(yt,"doTypesOverlap",{enumerable:!0,get:function(){return qk.doTypesOverlap}});Object.defineProperty(yt,"assertValidName",{enumerable:!0,get:function(){return Jj.assertValidName}});Object.defineProperty(yt,"isValidNameError",{enumerable:!0,get:function(){return Jj.isValidNameError}});Object.defineProperty(yt,"BreakingChangeType",{enumerable:!0,get:function(){return wm.BreakingChangeType}});Object.defineProperty(yt,"DangerousChangeType",{enumerable:!0,get:function(){return wm.DangerousChangeType}});Object.defineProperty(yt,"findBreakingChanges",{enumerable:!0,get:function(){return wm.findBreakingChanges}});Object.defineProperty(yt,"findDangerousChanges",{enumerable:!0,get:function(){return wm.findDangerousChanges}});Object.defineProperty(yt,"findDeprecatedUsages",{enumerable:!0,get:function(){return nX.findDeprecatedUsages}});var QJ=vk(),BJ=mk(),KJ=um(),HJ=ej(),zJ=rj(),zj=mj(),Wj=Tk(),WJ=bj(),Mk=Nj(),YJ=Qa(),JJ=lp(),XJ=M_(),ZJ=Zd(),Yj=zg(),$J=XS(),eX=Dj(),tX=Lj(),rX=jj(),qk=Hd(),Jj=S_(),wm=Kj(),nX=Hj()});var ht=G(Z=>{"use strict";Object.defineProperty(Z,"__esModule",{value:!0});Object.defineProperty(Z,"version",{enumerable:!0,get:function(){return Zj.version}});Object.defineProperty(Z,"versionInfo",{enumerable:!0,get:function(){return Zj.versionInfo}});Object.defineProperty(Z,"graphql",{enumerable:!0,get:function(){return $j.graphql}});Object.defineProperty(Z,"graphqlSync",{enumerable:!0,get:function(){return $j.graphqlSync}});Object.defineProperty(Z,"GraphQLSchema",{enumerable:!0,get:function(){return Oe.GraphQLSchema}});Object.defineProperty(Z,"GraphQLDirective",{enumerable:!0,get:function(){return Oe.GraphQLDirective}});Object.defineProperty(Z,"GraphQLScalarType",{enumerable:!0,get:function(){return Oe.GraphQLScalarType}});Object.defineProperty(Z,"GraphQLObjectType",{enumerable:!0,get:function(){return Oe.GraphQLObjectType}});Object.defineProperty(Z,"GraphQLInterfaceType",{enumerable:!0,get:function(){return Oe.GraphQLInterfaceType}});Object.defineProperty(Z,"GraphQLUnionType",{enumerable:!0,get:function(){return Oe.GraphQLUnionType}});Object.defineProperty(Z,"GraphQLEnumType",{enumerable:!0,get:function(){return Oe.GraphQLEnumType}});Object.defineProperty(Z,"GraphQLInputObjectType",{enumerable:!0,get:function(){return Oe.GraphQLInputObjectType}});Object.defineProperty(Z,"GraphQLList",{enumerable:!0,get:function(){return Oe.GraphQLList}});Object.defineProperty(Z,"GraphQLNonNull",{enumerable:!0,get:function(){return Oe.GraphQLNonNull}});Object.defineProperty(Z,"specifiedScalarTypes",{enumerable:!0,get:function(){return Oe.specifiedScalarTypes}});Object.defineProperty(Z,"GraphQLInt",{enumerable:!0,get:function(){return Oe.GraphQLInt}});Object.defineProperty(Z,"GraphQLFloat",{enumerable:!0,get:function(){return Oe.GraphQLFloat}});Object.defineProperty(Z,"GraphQLString",{enumerable:!0,get:function(){return Oe.GraphQLString}});Object.defineProperty(Z,"GraphQLBoolean",{enumerable:!0,get:function(){return Oe.GraphQLBoolean}});Object.defineProperty(Z,"GraphQLID",{enumerable:!0,get:function(){return Oe.GraphQLID}});Object.defineProperty(Z,"specifiedDirectives",{enumerable:!0,get:function(){return Oe.specifiedDirectives}});Object.defineProperty(Z,"GraphQLIncludeDirective",{enumerable:!0,get:function(){return Oe.GraphQLIncludeDirective}});Object.defineProperty(Z,"GraphQLSkipDirective",{enumerable:!0,get:function(){return Oe.GraphQLSkipDirective}});Object.defineProperty(Z,"GraphQLDeprecatedDirective",{enumerable:!0,get:function(){return Oe.GraphQLDeprecatedDirective}});Object.defineProperty(Z,"GraphQLSpecifiedByDirective",{enumerable:!0,get:function(){return Oe.GraphQLSpecifiedByDirective}});Object.defineProperty(Z,"TypeKind",{enumerable:!0,get:function(){return Oe.TypeKind}});Object.defineProperty(Z,"DEFAULT_DEPRECATION_REASON",{enumerable:!0,get:function(){return Oe.DEFAULT_DEPRECATION_REASON}});Object.defineProperty(Z,"introspectionTypes",{enumerable:!0,get:function(){return Oe.introspectionTypes}});Object.defineProperty(Z,"__Schema",{enumerable:!0,get:function(){return Oe.__Schema}});Object.defineProperty(Z,"__Directive",{enumerable:!0,get:function(){return Oe.__Directive}});Object.defineProperty(Z,"__DirectiveLocation",{enumerable:!0,get:function(){return Oe.__DirectiveLocation}});Object.defineProperty(Z,"__Type",{enumerable:!0,get:function(){return Oe.__Type}});Object.defineProperty(Z,"__Field",{enumerable:!0,get:function(){return Oe.__Field}});Object.defineProperty(Z,"__InputValue",{enumerable:!0,get:function(){return Oe.__InputValue}});Object.defineProperty(Z,"__EnumValue",{enumerable:!0,get:function(){return Oe.__EnumValue}});Object.defineProperty(Z,"__TypeKind",{enumerable:!0,get:function(){return Oe.__TypeKind}});Object.defineProperty(Z,"SchemaMetaFieldDef",{enumerable:!0,get:function(){return Oe.SchemaMetaFieldDef}});Object.defineProperty(Z,"TypeMetaFieldDef",{enumerable:!0,get:function(){return Oe.TypeMetaFieldDef}});Object.defineProperty(Z,"TypeNameMetaFieldDef",{enumerable:!0,get:function(){return Oe.TypeNameMetaFieldDef}});Object.defineProperty(Z,"isSchema",{enumerable:!0,get:function(){return Oe.isSchema}});Object.defineProperty(Z,"isDirective",{enumerable:!0,get:function(){return Oe.isDirective}});Object.defineProperty(Z,"isType",{enumerable:!0,get:function(){return Oe.isType}});Object.defineProperty(Z,"isScalarType",{enumerable:!0,get:function(){return Oe.isScalarType}});Object.defineProperty(Z,"isObjectType",{enumerable:!0,get:function(){return Oe.isObjectType}});Object.defineProperty(Z,"isInterfaceType",{enumerable:!0,get:function(){return Oe.isInterfaceType}});Object.defineProperty(Z,"isUnionType",{enumerable:!0,get:function(){return Oe.isUnionType}});Object.defineProperty(Z,"isEnumType",{enumerable:!0,get:function(){return Oe.isEnumType}});Object.defineProperty(Z,"isInputObjectType",{enumerable:!0,get:function(){return Oe.isInputObjectType}});Object.defineProperty(Z,"isListType",{enumerable:!0,get:function(){return Oe.isListType}});Object.defineProperty(Z,"isNonNullType",{enumerable:!0,get:function(){return Oe.isNonNullType}});Object.defineProperty(Z,"isInputType",{enumerable:!0,get:function(){return Oe.isInputType}});Object.defineProperty(Z,"isOutputType",{enumerable:!0,get:function(){return Oe.isOutputType}});Object.defineProperty(Z,"isLeafType",{enumerable:!0,get:function(){return Oe.isLeafType}});Object.defineProperty(Z,"isCompositeType",{enumerable:!0,get:function(){return Oe.isCompositeType}});Object.defineProperty(Z,"isAbstractType",{enumerable:!0,get:function(){return Oe.isAbstractType}});Object.defineProperty(Z,"isWrappingType",{enumerable:!0,get:function(){return Oe.isWrappingType}});Object.defineProperty(Z,"isNullableType",{enumerable:!0,get:function(){return Oe.isNullableType}});Object.defineProperty(Z,"isNamedType",{enumerable:!0,get:function(){return Oe.isNamedType}});Object.defineProperty(Z,"isRequiredArgument",{enumerable:!0,get:function(){return Oe.isRequiredArgument}});Object.defineProperty(Z,"isRequiredInputField",{enumerable:!0,get:function(){return Oe.isRequiredInputField}});Object.defineProperty(Z,"isSpecifiedScalarType",{enumerable:!0,get:function(){return Oe.isSpecifiedScalarType}});Object.defineProperty(Z,"isIntrospectionType",{enumerable:!0,get:function(){return Oe.isIntrospectionType}});Object.defineProperty(Z,"isSpecifiedDirective",{enumerable:!0,get:function(){return Oe.isSpecifiedDirective}});Object.defineProperty(Z,"assertSchema",{enumerable:!0,get:function(){return Oe.assertSchema}});Object.defineProperty(Z,"assertDirective",{enumerable:!0,get:function(){return Oe.assertDirective}});Object.defineProperty(Z,"assertType",{enumerable:!0,get:function(){return Oe.assertType}});Object.defineProperty(Z,"assertScalarType",{enumerable:!0,get:function(){return Oe.assertScalarType}});Object.defineProperty(Z,"assertObjectType",{enumerable:!0,get:function(){return Oe.assertObjectType}});Object.defineProperty(Z,"assertInterfaceType",{enumerable:!0,get:function(){return Oe.assertInterfaceType}});Object.defineProperty(Z,"assertUnionType",{enumerable:!0,get:function(){return Oe.assertUnionType}});Object.defineProperty(Z,"assertEnumType",{enumerable:!0,get:function(){return Oe.assertEnumType}});Object.defineProperty(Z,"assertInputObjectType",{enumerable:!0,get:function(){return Oe.assertInputObjectType}});Object.defineProperty(Z,"assertListType",{enumerable:!0,get:function(){return Oe.assertListType}});Object.defineProperty(Z,"assertNonNullType",{enumerable:!0,get:function(){return Oe.assertNonNullType}});Object.defineProperty(Z,"assertInputType",{enumerable:!0,get:function(){return Oe.assertInputType}});Object.defineProperty(Z,"assertOutputType",{enumerable:!0,get:function(){return Oe.assertOutputType}});Object.defineProperty(Z,"assertLeafType",{enumerable:!0,get:function(){return Oe.assertLeafType}});Object.defineProperty(Z,"assertCompositeType",{enumerable:!0,get:function(){return Oe.assertCompositeType}});Object.defineProperty(Z,"assertAbstractType",{enumerable:!0,get:function(){return Oe.assertAbstractType}});Object.defineProperty(Z,"assertWrappingType",{enumerable:!0,get:function(){return Oe.assertWrappingType}});Object.defineProperty(Z,"assertNullableType",{enumerable:!0,get:function(){return Oe.assertNullableType}});Object.defineProperty(Z,"assertNamedType",{enumerable:!0,get:function(){return Oe.assertNamedType}});Object.defineProperty(Z,"getNullableType",{enumerable:!0,get:function(){return Oe.getNullableType}});Object.defineProperty(Z,"getNamedType",{enumerable:!0,get:function(){return Oe.getNamedType}});Object.defineProperty(Z,"validateSchema",{enumerable:!0,get:function(){return Oe.validateSchema}});Object.defineProperty(Z,"assertValidSchema",{enumerable:!0,get:function(){return Oe.assertValidSchema}});Object.defineProperty(Z,"Token",{enumerable:!0,get:function(){return Xt.Token}});Object.defineProperty(Z,"Source",{enumerable:!0,get:function(){return Xt.Source}});Object.defineProperty(Z,"Location",{enumerable:!0,get:function(){return Xt.Location}});Object.defineProperty(Z,"getLocation",{enumerable:!0,get:function(){return Xt.getLocation}});Object.defineProperty(Z,"printLocation",{enumerable:!0,get:function(){return Xt.printLocation}});Object.defineProperty(Z,"printSourceLocation",{enumerable:!0,get:function(){return Xt.printSourceLocation}});Object.defineProperty(Z,"Lexer",{enumerable:!0,get:function(){return Xt.Lexer}});Object.defineProperty(Z,"TokenKind",{enumerable:!0,get:function(){return Xt.TokenKind}});Object.defineProperty(Z,"parse",{enumerable:!0,get:function(){return Xt.parse}});Object.defineProperty(Z,"parseValue",{enumerable:!0,get:function(){return Xt.parseValue}});Object.defineProperty(Z,"parseType",{enumerable:!0,get:function(){return Xt.parseType}});Object.defineProperty(Z,"print",{enumerable:!0,get:function(){return Xt.print}});Object.defineProperty(Z,"visit",{enumerable:!0,get:function(){return Xt.visit}});Object.defineProperty(Z,"visitInParallel",{enumerable:!0,get:function(){return Xt.visitInParallel}});Object.defineProperty(Z,"getVisitFn",{enumerable:!0,get:function(){return Xt.getVisitFn}});Object.defineProperty(Z,"BREAK",{enumerable:!0,get:function(){return Xt.BREAK}});Object.defineProperty(Z,"Kind",{enumerable:!0,get:function(){return Xt.Kind}});Object.defineProperty(Z,"DirectiveLocation",{enumerable:!0,get:function(){return Xt.DirectiveLocation}});Object.defineProperty(Z,"isDefinitionNode",{enumerable:!0,get:function(){return Xt.isDefinitionNode}});Object.defineProperty(Z,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return Xt.isExecutableDefinitionNode}});Object.defineProperty(Z,"isSelectionNode",{enumerable:!0,get:function(){return Xt.isSelectionNode}});Object.defineProperty(Z,"isValueNode",{enumerable:!0,get:function(){return Xt.isValueNode}});Object.defineProperty(Z,"isTypeNode",{enumerable:!0,get:function(){return Xt.isTypeNode}});Object.defineProperty(Z,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return Xt.isTypeSystemDefinitionNode}});Object.defineProperty(Z,"isTypeDefinitionNode",{enumerable:!0,get:function(){return Xt.isTypeDefinitionNode}});Object.defineProperty(Z,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return Xt.isTypeSystemExtensionNode}});Object.defineProperty(Z,"isTypeExtensionNode",{enumerable:!0,get:function(){return Xt.isTypeExtensionNode}});Object.defineProperty(Z,"execute",{enumerable:!0,get:function(){return Nc.execute}});Object.defineProperty(Z,"executeSync",{enumerable:!0,get:function(){return Nc.executeSync}});Object.defineProperty(Z,"defaultFieldResolver",{enumerable:!0,get:function(){return Nc.defaultFieldResolver}});Object.defineProperty(Z,"defaultTypeResolver",{enumerable:!0,get:function(){return Nc.defaultTypeResolver}});Object.defineProperty(Z,"responsePathAsArray",{enumerable:!0,get:function(){return Nc.responsePathAsArray}});Object.defineProperty(Z,"getDirectiveValues",{enumerable:!0,get:function(){return Nc.getDirectiveValues}});Object.defineProperty(Z,"subscribe",{enumerable:!0,get:function(){return eP.subscribe}});Object.defineProperty(Z,"createSourceEventStream",{enumerable:!0,get:function(){return eP.createSourceEventStream}});Object.defineProperty(Z,"validate",{enumerable:!0,get:function(){return pt.validate}});Object.defineProperty(Z,"ValidationContext",{enumerable:!0,get:function(){return pt.ValidationContext}});Object.defineProperty(Z,"specifiedRules",{enumerable:!0,get:function(){return pt.specifiedRules}});Object.defineProperty(Z,"ExecutableDefinitionsRule",{enumerable:!0,get:function(){return pt.ExecutableDefinitionsRule}});Object.defineProperty(Z,"FieldsOnCorrectTypeRule",{enumerable:!0,get:function(){return pt.FieldsOnCorrectTypeRule}});Object.defineProperty(Z,"FragmentsOnCompositeTypesRule",{enumerable:!0,get:function(){return pt.FragmentsOnCompositeTypesRule}});Object.defineProperty(Z,"KnownArgumentNamesRule",{enumerable:!0,get:function(){return pt.KnownArgumentNamesRule}});Object.defineProperty(Z,"KnownDirectivesRule",{enumerable:!0,get:function(){return pt.KnownDirectivesRule}});Object.defineProperty(Z,"KnownFragmentNamesRule",{enumerable:!0,get:function(){return pt.KnownFragmentNamesRule}});Object.defineProperty(Z,"KnownTypeNamesRule",{enumerable:!0,get:function(){return pt.KnownTypeNamesRule}});Object.defineProperty(Z,"LoneAnonymousOperationRule",{enumerable:!0,get:function(){return pt.LoneAnonymousOperationRule}});Object.defineProperty(Z,"NoFragmentCyclesRule",{enumerable:!0,get:function(){return pt.NoFragmentCyclesRule}});Object.defineProperty(Z,"NoUndefinedVariablesRule",{enumerable:!0,get:function(){return pt.NoUndefinedVariablesRule}});Object.defineProperty(Z,"NoUnusedFragmentsRule",{enumerable:!0,get:function(){return pt.NoUnusedFragmentsRule}});Object.defineProperty(Z,"NoUnusedVariablesRule",{enumerable:!0,get:function(){return pt.NoUnusedVariablesRule}});Object.defineProperty(Z,"OverlappingFieldsCanBeMergedRule",{enumerable:!0,get:function(){return pt.OverlappingFieldsCanBeMergedRule}});Object.defineProperty(Z,"PossibleFragmentSpreadsRule",{enumerable:!0,get:function(){return pt.PossibleFragmentSpreadsRule}});Object.defineProperty(Z,"ProvidedRequiredArgumentsRule",{enumerable:!0,get:function(){return pt.ProvidedRequiredArgumentsRule}});Object.defineProperty(Z,"ScalarLeafsRule",{enumerable:!0,get:function(){return pt.ScalarLeafsRule}});Object.defineProperty(Z,"SingleFieldSubscriptionsRule",{enumerable:!0,get:function(){return pt.SingleFieldSubscriptionsRule}});Object.defineProperty(Z,"UniqueArgumentNamesRule",{enumerable:!0,get:function(){return pt.UniqueArgumentNamesRule}});Object.defineProperty(Z,"UniqueDirectivesPerLocationRule",{enumerable:!0,get:function(){return pt.UniqueDirectivesPerLocationRule}});Object.defineProperty(Z,"UniqueFragmentNamesRule",{enumerable:!0,get:function(){return pt.UniqueFragmentNamesRule}});Object.defineProperty(Z,"UniqueInputFieldNamesRule",{enumerable:!0,get:function(){return pt.UniqueInputFieldNamesRule}});Object.defineProperty(Z,"UniqueOperationNamesRule",{enumerable:!0,get:function(){return pt.UniqueOperationNamesRule}});Object.defineProperty(Z,"UniqueVariableNamesRule",{enumerable:!0,get:function(){return pt.UniqueVariableNamesRule}});Object.defineProperty(Z,"ValuesOfCorrectTypeRule",{enumerable:!0,get:function(){return pt.ValuesOfCorrectTypeRule}});Object.defineProperty(Z,"VariablesAreInputTypesRule",{enumerable:!0,get:function(){return pt.VariablesAreInputTypesRule}});Object.defineProperty(Z,"VariablesInAllowedPositionRule",{enumerable:!0,get:function(){return pt.VariablesInAllowedPositionRule}});Object.defineProperty(Z,"LoneSchemaDefinitionRule",{enumerable:!0,get:function(){return pt.LoneSchemaDefinitionRule}});Object.defineProperty(Z,"UniqueOperationTypesRule",{enumerable:!0,get:function(){return pt.UniqueOperationTypesRule}});Object.defineProperty(Z,"UniqueTypeNamesRule",{enumerable:!0,get:function(){return pt.UniqueTypeNamesRule}});Object.defineProperty(Z,"UniqueEnumValueNamesRule",{enumerable:!0,get:function(){return pt.UniqueEnumValueNamesRule}});Object.defineProperty(Z,"UniqueFieldDefinitionNamesRule",{enumerable:!0,get:function(){return pt.UniqueFieldDefinitionNamesRule}});Object.defineProperty(Z,"UniqueDirectiveNamesRule",{enumerable:!0,get:function(){return pt.UniqueDirectiveNamesRule}});Object.defineProperty(Z,"PossibleTypeExtensionsRule",{enumerable:!0,get:function(){return pt.PossibleTypeExtensionsRule}});Object.defineProperty(Z,"NoDeprecatedCustomRule",{enumerable:!0,get:function(){return pt.NoDeprecatedCustomRule}});Object.defineProperty(Z,"NoSchemaIntrospectionCustomRule",{enumerable:!0,get:function(){return pt.NoSchemaIntrospectionCustomRule}});Object.defineProperty(Z,"GraphQLError",{enumerable:!0,get:function(){return Np.GraphQLError}});Object.defineProperty(Z,"syntaxError",{enumerable:!0,get:function(){return Np.syntaxError}});Object.defineProperty(Z,"locatedError",{enumerable:!0,get:function(){return Np.locatedError}});Object.defineProperty(Z,"printError",{enumerable:!0,get:function(){return Np.printError}});Object.defineProperty(Z,"formatError",{enumerable:!0,get:function(){return Np.formatError}});Object.defineProperty(Z,"getIntrospectionQuery",{enumerable:!0,get:function(){return St.getIntrospectionQuery}});Object.defineProperty(Z,"getOperationAST",{enumerable:!0,get:function(){return St.getOperationAST}});Object.defineProperty(Z,"getOperationRootType",{enumerable:!0,get:function(){return St.getOperationRootType}});Object.defineProperty(Z,"introspectionFromSchema",{enumerable:!0,get:function(){return St.introspectionFromSchema}});Object.defineProperty(Z,"buildClientSchema",{enumerable:!0,get:function(){return St.buildClientSchema}});Object.defineProperty(Z,"buildASTSchema",{enumerable:!0,get:function(){return St.buildASTSchema}});Object.defineProperty(Z,"buildSchema",{enumerable:!0,get:function(){return St.buildSchema}});Object.defineProperty(Z,"getDescription",{enumerable:!0,get:function(){return St.getDescription}});Object.defineProperty(Z,"extendSchema",{enumerable:!0,get:function(){return St.extendSchema}});Object.defineProperty(Z,"lexicographicSortSchema",{enumerable:!0,get:function(){return St.lexicographicSortSchema}});Object.defineProperty(Z,"printSchema",{enumerable:!0,get:function(){return St.printSchema}});Object.defineProperty(Z,"printType",{enumerable:!0,get:function(){return St.printType}});Object.defineProperty(Z,"printIntrospectionSchema",{enumerable:!0,get:function(){return St.printIntrospectionSchema}});Object.defineProperty(Z,"typeFromAST",{enumerable:!0,get:function(){return St.typeFromAST}});Object.defineProperty(Z,"valueFromAST",{enumerable:!0,get:function(){return St.valueFromAST}});Object.defineProperty(Z,"valueFromASTUntyped",{enumerable:!0,get:function(){return St.valueFromASTUntyped}});Object.defineProperty(Z,"astFromValue",{enumerable:!0,get:function(){return St.astFromValue}});Object.defineProperty(Z,"TypeInfo",{enumerable:!0,get:function(){return St.TypeInfo}});Object.defineProperty(Z,"visitWithTypeInfo",{enumerable:!0,get:function(){return St.visitWithTypeInfo}});Object.defineProperty(Z,"coerceInputValue",{enumerable:!0,get:function(){return St.coerceInputValue}});Object.defineProperty(Z,"concatAST",{enumerable:!0,get:function(){return St.concatAST}});Object.defineProperty(Z,"separateOperations",{enumerable:!0,get:function(){return St.separateOperations}});Object.defineProperty(Z,"stripIgnoredCharacters",{enumerable:!0,get:function(){return St.stripIgnoredCharacters}});Object.defineProperty(Z,"isEqualType",{enumerable:!0,get:function(){return St.isEqualType}});Object.defineProperty(Z,"isTypeSubTypeOf",{enumerable:!0,get:function(){return St.isTypeSubTypeOf}});Object.defineProperty(Z,"doTypesOverlap",{enumerable:!0,get:function(){return St.doTypesOverlap}});Object.defineProperty(Z,"assertValidName",{enumerable:!0,get:function(){return St.assertValidName}});Object.defineProperty(Z,"isValidNameError",{enumerable:!0,get:function(){return St.isValidNameError}});Object.defineProperty(Z,"BreakingChangeType",{enumerable:!0,get:function(){return St.BreakingChangeType}});Object.defineProperty(Z,"DangerousChangeType",{enumerable:!0,get:function(){return St.DangerousChangeType}});Object.defineProperty(Z,"findBreakingChanges",{enumerable:!0,get:function(){return St.findBreakingChanges}});Object.defineProperty(Z,"findDangerousChanges",{enumerable:!0,get:function(){return St.findDangerousChanges}});Object.defineProperty(Z,"findDeprecatedUsages",{enumerable:!0,get:function(){return St.findDeprecatedUsages}});var Zj=m1(),$j=wR(),Oe=DR(),Xt=LR(),Nc=IR(),eP=HR(),pt=WR(),Np=XR(),St=Xj()});var rP=G((Xoe,tP)=>{tP.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,r=[],n=0;n{"use strict";var iX=rP(),nP={"text/plain":"Text","text/html":"Url",default:"Text"},aX="Copy to clipboard: #{key}, Enter";function oX(e){var t=(/mac os x/i.test(navigator.userAgent)?"\u2318":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}function uX(e,t){var r,n,i,o,s,l,d=!1;t||(t={}),r=t.debug||!1;try{i=iX(),o=document.createRange(),s=document.getSelection(),l=document.createElement("span"),l.textContent=e,l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",function(v){if(v.stopPropagation(),t.format)if(v.preventDefault(),typeof v.clipboardData=="undefined"){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var y=nP[t.format]||nP.default;window.clipboardData.setData(y,e)}else v.clipboardData.clearData(),v.clipboardData.setData(t.format,e);t.onCopy&&(v.preventDefault(),t.onCopy(v.clipboardData))}),document.body.appendChild(l),o.selectNodeContents(l),s.addRange(o);var h=document.execCommand("copy");if(!h)throw new Error("copy command was unsuccessful");d=!0}catch(v){r&&console.error("unable to copy using execCommand: ",v),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),d=!0}catch(y){r&&console.error("unable to copy using clipboardData: ",y),r&&console.error("falling back to prompt"),n=oX("message"in t?t.message:aX),window.prompt(n,e)}}finally{s&&(typeof s.removeRange=="function"?s.removeRange(o):s.removeAllRanges()),l&&document.body.removeChild(l),i()}return d}iP.exports=uX});var Xk=G((Oue,Fm)=>{"use strict";function aF(e,t){if(e!=null)return e;var r=new Error(t!==void 0?t:"Got unexpected "+e);throw r.framesToPop=1,r}Fm.exports=aF;Fm.exports.default=aF;Object.defineProperty(Fm.exports,"__esModule",{value:!0})});var pF=G((Nse,xX)=>{xX.exports={Aacute:"\xC1",aacute:"\xE1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223E",acd:"\u223F",acE:"\u223E\u0333",Acirc:"\xC2",acirc:"\xE2",acute:"\xB4",Acy:"\u0410",acy:"\u0430",AElig:"\xC6",aelig:"\xE6",af:"\u2061",Afr:"\u{1D504}",afr:"\u{1D51E}",Agrave:"\xC0",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03B1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2A3F",amp:"&",AMP:"&",andand:"\u2A55",And:"\u2A53",and:"\u2227",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angmsd:"\u2221",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",Aogon:"\u0104",aogon:"\u0105",Aopf:"\u{1D538}",aopf:"\u{1D552}",apacir:"\u2A6F",ap:"\u2248",apE:"\u2A70",ape:"\u224A",apid:"\u224B",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224A",Aring:"\xC5",aring:"\xE5",Ascr:"\u{1D49C}",ascr:"\u{1D4B6}",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224D",Atilde:"\xC3",atilde:"\xE3",Auml:"\xC4",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",Backslash:"\u2216",Barv:"\u2AE7",barvee:"\u22BD",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",Bernoullis:"\u212C",Beta:"\u0392",beta:"\u03B2",beth:"\u2136",between:"\u226C",Bfr:"\u{1D505}",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bNot:"\u2AED",bnot:"\u2310",Bopf:"\u{1D539}",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxbox:"\u29C9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250C",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252C",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxul:"\u2518",boxuL:"\u255B",boxUl:"\u255C",boxUL:"\u255D",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255A",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253C",boxvH:"\u256A",boxVh:"\u256B",boxVH:"\u256C",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251C",boxvR:"\u255E",boxVr:"\u255F",boxVR:"\u2560",bprime:"\u2035",breve:"\u02D8",Breve:"\u02D8",brvbar:"\xA6",bscr:"\u{1D4B7}",Bscr:"\u212C",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsolb:"\u29C5",bsol:"\\",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",Bumpeq:"\u224E",bumpeq:"\u224F",Cacute:"\u0106",cacute:"\u0107",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",cap:"\u2229",Cap:"\u22D2",capcup:"\u2A47",capdot:"\u2A40",CapitalDifferentialD:"\u2145",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",Cayleys:"\u212D",ccaps:"\u2A4D",Ccaron:"\u010C",ccaron:"\u010D",Ccedil:"\xC7",ccedil:"\xE7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2A4C",ccupssm:"\u2A50",Cdot:"\u010A",cdot:"\u010B",cedil:"\xB8",Cedilla:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",CenterDot:"\xB7",cfr:"\u{1D520}",Cfr:"\u212D",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03A7",chi:"\u03C7",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",CircleDot:"\u2299",circledR:"\xAE",circledS:"\u24C8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cir:"\u25CB",cirE:"\u29C3",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201D",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2A74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",Congruent:"\u2261",conint:"\u222E",Conint:"\u222F",ContourIntegral:"\u222E",copf:"\u{1D554}",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xA9",COPY:"\xA9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21B5",cross:"\u2717",Cross:"\u2A2F",Cscr:"\u{1D49E}",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cupbrcap:"\u2A48",cupcap:"\u2A46",CupCap:"\u224D",cup:"\u222A",Cup:"\u22D3",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21A1",dArr:"\u21D3",dash:"\u2010",Dashv:"\u2AE4",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",Dcaron:"\u010E",dcaron:"\u010F",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21CA",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2A77",deg:"\xB0",Del:"\u2207",Delta:"\u0394",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",Dfr:"\u{1D507}",dfr:"\u{1D521}",dHar:"\u2965",dharl:"\u21C3",dharr:"\u21C2",DiacriticalAcute:"\xB4",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",DiacriticalGrave:"`",DiacriticalTilde:"\u02DC",diam:"\u22C4",diamond:"\u22C4",Diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",DifferentialD:"\u2146",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",Dopf:"\u{1D53B}",dopf:"\u{1D555}",Dot:"\xA8",dot:"\u02D9",DotDot:"\u20DC",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222F",DoubleDot:"\xA8",DoubleDownArrow:"\u21D3",DoubleLeftArrow:"\u21D0",DoubleLeftRightArrow:"\u21D4",DoubleLeftTee:"\u2AE4",DoubleLongLeftArrow:"\u27F8",DoubleLongLeftRightArrow:"\u27FA",DoubleLongRightArrow:"\u27F9",DoubleRightArrow:"\u21D2",DoubleRightTee:"\u22A8",DoubleUpArrow:"\u21D1",DoubleUpDownArrow:"\u21D5",DoubleVerticalBar:"\u2225",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21D3",DownArrowUpArrow:"\u21F5",DownBreve:"\u0311",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295E",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21BD",DownRightTeeVector:"\u295F",DownRightVectorBar:"\u2957",DownRightVector:"\u21C1",DownTeeArrow:"\u21A7",DownTee:"\u22A4",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",Dscr:"\u{1D49F}",dscr:"\u{1D4B9}",DScy:"\u0405",dscy:"\u0455",dsol:"\u29F6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",DZcy:"\u040F",dzcy:"\u045F",dzigrarr:"\u27FF",Eacute:"\xC9",eacute:"\xE9",easter:"\u2A6E",Ecaron:"\u011A",ecaron:"\u011B",Ecirc:"\xCA",ecirc:"\xEA",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042D",ecy:"\u044D",eDDot:"\u2A77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\u{1D508}",efr:"\u{1D522}",eg:"\u2A9A",Egrave:"\xC8",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",Element:"\u2208",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25FB",emptyv:"\u2205",EmptyVerySmallSquare:"\u25AB",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",ENG:"\u014A",eng:"\u014B",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\u{1D53C}",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",Epsilon:"\u0395",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",Equal:"\u2A75",equals:"=",EqualTilde:"\u2242",equest:"\u225F",Equilibrium:"\u21CC",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erarr:"\u2971",erDot:"\u2253",escr:"\u212F",Escr:"\u2130",esdot:"\u2250",Esim:"\u2A73",esim:"\u2242",Eta:"\u0397",eta:"\u03B7",ETH:"\xD0",eth:"\xF0",Euml:"\xCB",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",Ffr:"\u{1D509}",ffr:"\u{1D523}",filig:"\uFB01",FilledSmallSquare:"\u25FC",FilledVerySmallSquare:"\u25AA",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",Fopf:"\u{1D53D}",fopf:"\u{1D557}",forall:"\u2200",ForAll:"\u2200",fork:"\u22D4",forkv:"\u2AD9",Fouriertrf:"\u2131",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\u{1D4BB}",Fscr:"\u2131",gacute:"\u01F5",Gamma:"\u0393",gamma:"\u03B3",Gammad:"\u03DC",gammad:"\u03DD",gap:"\u2A86",Gbreve:"\u011E",gbreve:"\u011F",Gcedil:"\u0122",Gcirc:"\u011C",gcirc:"\u011D",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",ge:"\u2265",gE:"\u2267",gEl:"\u2A8C",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",gescc:"\u2AA9",ges:"\u2A7E",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",Gfr:"\u{1D50A}",gfr:"\u{1D524}",gg:"\u226B",Gg:"\u22D9",ggg:"\u22D9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2AA5",gl:"\u2277",glE:"\u2A92",glj:"\u2AA4",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gnE:"\u2269",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",Gopf:"\u{1D53E}",gopf:"\u{1D558}",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gtcc:"\u2AA7",gtcir:"\u2A7A",gt:">",GT:">",Gt:"\u226B",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",Hacek:"\u02C7",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",HARDcy:"\u042A",hardcy:"\u044A",harrcir:"\u2948",harr:"\u2194",hArr:"\u21D4",harrw:"\u21AD",Hat:"^",hbar:"\u210F",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",Hfr:"\u210C",HilbertSpace:"\u210B",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\u{1D559}",Hopf:"\u210D",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\u{1D4BD}",Hscr:"\u210B",hslash:"\u210F",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224E",HumpEqual:"\u224F",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xCD",iacute:"\xED",ic:"\u2063",Icirc:"\xCE",icirc:"\xEE",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",ifr:"\u{1D526}",Ifr:"\u2111",Igrave:"\xCC",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012A",imacr:"\u012B",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22B7",imped:"\u01B5",Implies:"\u21D2",incare:"\u2105",in:"\u2208",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",intcal:"\u22BA",int:"\u222B",Int:"\u222C",integers:"\u2124",Integral:"\u222B",intercal:"\u22BA",Intersection:"\u22C2",intlarhk:"\u2A17",intprod:"\u2A3C",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012E",iogon:"\u012F",Iopf:"\u{1D540}",iopf:"\u{1D55A}",Iota:"\u0399",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",iscr:"\u{1D4BE}",Iscr:"\u2110",isin:"\u2208",isindot:"\u22F5",isinE:"\u22F9",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xCF",iuml:"\xEF",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\u{1D50D}",jfr:"\u{1D527}",jmath:"\u0237",Jopf:"\u{1D541}",jopf:"\u{1D55B}",Jscr:"\u{1D4A5}",jscr:"\u{1D4BF}",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039A",kappa:"\u03BA",kappav:"\u03F0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041A",kcy:"\u043A",Kfr:"\u{1D50E}",kfr:"\u{1D528}",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040C",kjcy:"\u045C",Kopf:"\u{1D542}",kopf:"\u{1D55C}",Kscr:"\u{1D4A6}",kscr:"\u{1D4C0}",lAarr:"\u21DA",Lacute:"\u0139",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",Lambda:"\u039B",lambda:"\u03BB",lang:"\u27E8",Lang:"\u27EA",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",Laplacetrf:"\u2112",laquo:"\xAB",larrb:"\u21E4",larrbfs:"\u291F",larr:"\u2190",Larr:"\u219E",lArr:"\u21D0",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",latail:"\u2919",lAtail:"\u291B",lat:"\u2AAB",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lBarr:"\u290E",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",Lcaron:"\u013D",lcaron:"\u013E",Lcedil:"\u013B",lcedil:"\u013C",lceil:"\u2308",lcub:"{",Lcy:"\u041B",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27E8",LeftArrowBar:"\u21E4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21D0",LeftArrowRightArrow:"\u21C6",leftarrowtail:"\u21A2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21C3",LeftFloor:"\u230A",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21D4",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",LeftRightVector:"\u294E",LeftTeeArrow:"\u21A4",LeftTee:"\u22A3",LeftTeeVector:"\u295A",leftthreetimes:"\u22CB",LeftTriangleBar:"\u29CF",LeftTriangle:"\u22B2",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21BF",LeftVectorBar:"\u2952",LeftVector:"\u21BC",lEg:"\u2A8B",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",lescc:"\u2AA8",les:"\u2A7D",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2AA1",lesssim:"\u2272",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",lfisht:"\u297C",lfloor:"\u230A",Lfr:"\u{1D50F}",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lHar:"\u2962",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21C7",ll:"\u226A",Ll:"\u22D8",llcorner:"\u231E",Lleftarrow:"\u21DA",llhard:"\u296B",lltri:"\u25FA",Lmidot:"\u013F",lmidot:"\u0140",lmoustache:"\u23B0",lmoust:"\u23B0",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lnE:"\u2268",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",LongLeftArrow:"\u27F5",Longleftarrow:"\u27F8",longleftrightarrow:"\u27F7",LongLeftRightArrow:"\u27F7",Longleftrightarrow:"\u27FA",longmapsto:"\u27FC",longrightarrow:"\u27F6",LongRightArrow:"\u27F6",Longrightarrow:"\u27F9",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",Lopf:"\u{1D543}",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",Lscr:"\u2112",lsh:"\u21B0",Lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2AA6",ltcir:"\u2A79",lt:"<",LT:"<",Lt:"\u226A",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",ltrPar:"\u2996",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",Mcy:"\u041C",mcy:"\u043C",mdash:"\u2014",mDDot:"\u223A",measuredangle:"\u2221",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",midast:"*",midcir:"\u2AF0",mid:"\u2223",middot:"\xB7",minusb:"\u229F",minus:"\u2212",minusd:"\u2238",minusdu:"\u2A2A",MinusPlus:"\u2213",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",Mopf:"\u{1D544}",mopf:"\u{1D55E}",mp:"\u2213",mscr:"\u{1D4C2}",Mscr:"\u2133",mstpos:"\u223E",Mu:"\u039C",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natural:"\u266E",naturals:"\u2115",natur:"\u266E",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",Ncy:"\u041D",ncy:"\u043D",ndash:"\u2013",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21D7",nearrow:"\u2197",ne:"\u2260",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` +`,nexist:"\u2204",nexists:"\u2204",Nfr:"\u{1D511}",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",nGg:"\u22D9\u0338",ngsim:"\u2275",nGt:"\u226B\u20D2",ngt:"\u226F",ngtr:"\u226F",nGtv:"\u226B\u0338",nharr:"\u21AE",nhArr:"\u21CE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",NJcy:"\u040A",njcy:"\u045A",nlarr:"\u219A",nlArr:"\u21CD",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219A",nLeftarrow:"\u21CD",nleftrightarrow:"\u21AE",nLeftrightarrow:"\u21CE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nLl:"\u22D8\u0338",nlsim:"\u2274",nLt:"\u226A\u20D2",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nLtv:"\u226A\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xA0",nopf:"\u{1D55F}",Nopf:"\u2115",Not:"\u2AEC",not:"\xAC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",notin:"\u2209",notindot:"\u22F5\u0338",notinE:"\u22F9\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangle:"\u22EA",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangle:"\u22EB",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",nprec:"\u2280",npreceq:"\u2AAF\u0338",npre:"\u2AAF\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219B",nrArr:"\u21CF",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nRightarrow:"\u21CF",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",Nscr:"\u{1D4A9}",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",Ntilde:"\xD1",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",Nu:"\u039D",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvDash:"\u22AD",nVdash:"\u22AE",nVDash:"\u22AF",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvHarr:"\u2904",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21D6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xD3",oacute:"\xF3",oast:"\u229B",Ocirc:"\xD4",ocirc:"\xF4",ocir:"\u229A",Ocy:"\u041E",ocy:"\u043E",odash:"\u229D",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29BF",Ofr:"\u{1D512}",ofr:"\u{1D52C}",ogon:"\u02DB",Ograve:"\xD2",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",Omacr:"\u014C",omacr:"\u014D",Omega:"\u03A9",omega:"\u03C9",Omicron:"\u039F",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",Oopf:"\u{1D546}",oopf:"\u{1D560}",opar:"\u29B7",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",operp:"\u29B9",oplus:"\u2295",orarr:"\u21BB",Or:"\u2A54",or:"\u2228",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oS:"\u24C8",Oscr:"\u{1D4AA}",oscr:"\u2134",Oslash:"\xD8",oslash:"\xF8",osol:"\u2298",Otilde:"\xD5",otilde:"\xF5",otimesas:"\u2A36",Otimes:"\u2A37",otimes:"\u2297",Ouml:"\xD6",ouml:"\xF6",ovbar:"\u233D",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",para:"\xB6",parallel:"\u2225",par:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",PartialD:"\u2202",Pcy:"\u041F",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",Pfr:"\u{1D513}",pfr:"\u{1D52D}",Phi:"\u03A6",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",Pi:"\u03A0",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plus:"+",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",PlusMinus:"\xB1",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",Poincareplane:"\u210C",pointint:"\u2A15",popf:"\u{1D561}",Popf:"\u2119",pound:"\xA3",prap:"\u2AB7",Pr:"\u2ABB",pr:"\u227A",prcue:"\u227C",precapprox:"\u2AB7",prec:"\u227A",preccurlyeq:"\u227C",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",pre:"\u2AAF",prE:"\u2AB3",precsim:"\u227E",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2AB9",prnE:"\u2AB5",prnsim:"\u22E8",prod:"\u220F",Product:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",Proportional:"\u221D",Proportion:"\u2237",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",Pscr:"\u{1D4AB}",pscr:"\u{1D4C5}",Psi:"\u03A8",psi:"\u03C8",puncsp:"\u2008",Qfr:"\u{1D514}",qfr:"\u{1D52E}",qint:"\u2A0C",qopf:"\u{1D562}",Qopf:"\u211A",qprime:"\u2057",Qscr:"\u{1D4AC}",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',QUOT:'"',rAarr:"\u21DB",race:"\u223D\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",Rang:"\u27EB",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21A0",rArr:"\u21D2",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21A3",rarrw:"\u219D",ratail:"\u291A",rAtail:"\u291C",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rBarr:"\u290F",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",Re:"\u211C",rect:"\u25AD",reg:"\xAE",REG:"\xAE",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",rfisht:"\u297D",rfloor:"\u230B",rfr:"\u{1D52F}",Rfr:"\u211C",rHar:"\u2964",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",Rho:"\u03A1",rho:"\u03C1",rhov:"\u03F1",RightAngleBracket:"\u27E9",RightArrowBar:"\u21E5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21D2",RightArrowLeftArrow:"\u21C4",rightarrowtail:"\u21A3",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVectorBar:"\u2955",RightDownVector:"\u21C2",RightFloor:"\u230B",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",RightTeeArrow:"\u21A6",RightTee:"\u22A2",RightTeeVector:"\u295B",rightthreetimes:"\u22CC",RightTriangleBar:"\u29D0",RightTriangle:"\u22B3",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVectorBar:"\u2954",RightUpVector:"\u21BE",RightVectorBar:"\u2953",RightVector:"\u21C0",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoustache:"\u23B1",rmoust:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\u{1D563}",Ropf:"\u211D",roplus:"\u2A2E",rotimes:"\u2A35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",Rrightarrow:"\u21DB",rsaquo:"\u203A",rscr:"\u{1D4C7}",Rscr:"\u211B",rsh:"\u21B1",Rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",RuleDelayed:"\u29F4",ruluhar:"\u2968",rx:"\u211E",Sacute:"\u015A",sacute:"\u015B",sbquo:"\u201A",scap:"\u2AB8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2ABC",sc:"\u227B",sccue:"\u227D",sce:"\u2AB0",scE:"\u2AB4",Scedil:"\u015E",scedil:"\u015F",Scirc:"\u015C",scirc:"\u015D",scnap:"\u2ABA",scnE:"\u2AB6",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",Scy:"\u0421",scy:"\u0441",sdotb:"\u22A1",sdot:"\u22C5",sdote:"\u2A66",searhk:"\u2925",searr:"\u2198",seArr:"\u21D8",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\u{1D516}",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xAD",Sigma:"\u03A3",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",SOFTcy:"\u042C",softcy:"\u044C",solbar:"\u233F",solb:"\u29C4",sol:"/",Sopf:"\u{1D54A}",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",Sqrt:"\u221A",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",square:"\u25A1",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25AA",squ:"\u25A1",squf:"\u25AA",srarr:"\u2192",Sscr:"\u{1D4AE}",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",Star:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",Sub:"\u22D0",subdot:"\u2ABD",subE:"\u2AC5",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",Subset:"\u22D0",subseteq:"\u2286",subseteqq:"\u2AC5",SubsetEqual:"\u2286",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succapprox:"\u2AB8",succ:"\u227B",succcurlyeq:"\u227D",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",SuchThat:"\u220B",sum:"\u2211",Sum:"\u2211",sung:"\u266A",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",sup:"\u2283",Sup:"\u22D1",supdot:"\u2ABE",supdsub:"\u2AD8",supE:"\u2AC6",supe:"\u2287",supedot:"\u2AC4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",supset:"\u2283",Supset:"\u22D1",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21D9",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",Tab:" ",target:"\u2316",Tau:"\u03A4",tau:"\u03C4",tbrk:"\u23B4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",Tfr:"\u{1D517}",tfr:"\u{1D531}",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223C",THORN:"\xDE",thorn:"\xFE",tilde:"\u02DC",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2A31",timesb:"\u22A0",times:"\xD7",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",topbot:"\u2336",topcir:"\u2AF1",top:"\u22A4",Topf:"\u{1D54B}",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",TripleDot:"\u20DB",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",Tscr:"\u{1D4AF}",tscr:"\u{1D4C9}",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040B",tshcy:"\u045B",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",Uacute:"\xDA",uacute:"\xFA",uarr:"\u2191",Uarr:"\u219F",uArr:"\u21D1",Uarrocir:"\u2949",Ubrcy:"\u040E",ubrcy:"\u045E",Ubreve:"\u016C",ubreve:"\u016D",Ucirc:"\xDB",ucirc:"\xFB",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21C5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",Ufr:"\u{1D518}",ufr:"\u{1D532}",Ugrave:"\xD9",ugrave:"\xF9",uHar:"\u2963",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",Umacr:"\u016A",umacr:"\u016B",uml:"\xA8",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",uogon:"\u0173",Uopf:"\u{1D54C}",uopf:"\u{1D566}",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21D1",UpArrowDownArrow:"\u21C5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21D5",UpEquilibrium:"\u296E",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03C5",Upsi:"\u03D2",upsih:"\u03D2",Upsilon:"\u03A5",upsilon:"\u03C5",UpTeeArrow:"\u21A5",UpTee:"\u22A5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",Uring:"\u016E",uring:"\u016F",urtri:"\u25F9",Uscr:"\u{1D4B0}",uscr:"\u{1D4CA}",utdot:"\u22F0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",Uuml:"\xDC",uuml:"\xFC",uwangle:"\u29A7",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",vArr:"\u21D5",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vBar:"\u2AE8",Vbar:"\u2AEB",vBarv:"\u2AE9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22A2",vDash:"\u22A8",Vdash:"\u22A9",VDash:"\u22AB",Vdashl:"\u2AE6",veebar:"\u22BB",vee:"\u2228",Vee:"\u22C1",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",Vopf:"\u{1D54D}",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",Vscr:"\u{1D4B1}",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",Vvdash:"\u22AA",vzigzag:"\u299A",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",Wedge:"\u22C0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\u{1D51A}",wfr:"\u{1D534}",Wopf:"\u{1D54E}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\u{1D4B2}",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",Xfr:"\u{1D51B}",xfr:"\u{1D535}",xharr:"\u27F7",xhArr:"\u27FA",Xi:"\u039E",xi:"\u03BE",xlarr:"\u27F5",xlArr:"\u27F8",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",Xopf:"\u{1D54F}",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrarr:"\u27F6",xrArr:"\u27F9",Xscr:"\u{1D4B3}",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",Yacute:"\xDD",yacute:"\xFD",YAcy:"\u042F",yacy:"\u044F",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042B",ycy:"\u044B",yen:"\xA5",Yfr:"\u{1D51C}",yfr:"\u{1D536}",YIcy:"\u0407",yicy:"\u0457",Yopf:"\u{1D550}",yopf:"\u{1D56A}",Yscr:"\u{1D4B4}",yscr:"\u{1D4CE}",YUcy:"\u042E",yucy:"\u044E",yuml:"\xFF",Yuml:"\u0178",Zacute:"\u0179",zacute:"\u017A",Zcaron:"\u017D",zcaron:"\u017E",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017B",zdot:"\u017C",zeetrf:"\u2128",ZeroWidthSpace:"\u200B",Zeta:"\u0396",zeta:"\u03B6",zfr:"\u{1D537}",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21DD",zopf:"\u{1D56B}",Zopf:"\u2124",Zscr:"\u{1D4B5}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"}});var oO=G((Dse,hF)=>{"use strict";hF.exports=pF()});var Gm=G((xse,vF)=>{vF.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/});var yF=G((Cse,mF)=>{"use strict";var gF={};function CX(e){var t,r,n=gF[e];if(n)return n;for(n=gF[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),/^[0-9a-z]$/i.test(r)?n.push(r):n.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t=55296&&o<=57343){if(o>=55296&&o<=56319&&n+1=56320&&s<=57343)){d+=encodeURIComponent(e[n]+e[n+1]),n++;continue}d+="%EF%BF%BD";continue}d+=encodeURIComponent(e[n])}return d}Qm.defaultChars=";/?:@&=+$,-_.!~*'()#";Qm.componentChars="-_.!~*'()";mF.exports=Qm});var _F=G((Lse,TF)=>{"use strict";var bF={};function LX(e){var t,r,n=bF[e];if(n)return n;for(n=bF[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),n.push(r);for(t=0;t=55296&&v<=57343?y+="\uFFFD\uFFFD\uFFFD":y+=String.fromCharCode(v),i+=6;continue}if((s&248)==240&&i+91114111?y+="\uFFFD\uFFFD\uFFFD\uFFFD":(v-=65536,y+=String.fromCharCode(55296+(v>>10),56320+(v&1023))),i+=9;continue}y+="\uFFFD"}return y})}Bm.defaultChars=";/?:@&=+$,#";Bm.componentChars="";TF.exports=Bm});var SF=G((Ise,EF)=>{"use strict";EF.exports=function(t){var r="";return r+=t.protocol||"",r+=t.slashes?"//":"",r+=t.auth?t.auth+"@":"",t.hostname&&t.hostname.indexOf(":")!==-1?r+="["+t.hostname+"]":r+=t.hostname||"",r+=t.port?":"+t.port:"",r+=t.pathname||"",r+=t.search||"",r+=t.hash||"",r}});var CF=G((Ase,xF)=>{"use strict";function Km(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var IX=/^([a-z0-9.+-]+:)/i,AX=/:[0-9]*$/,RX=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,jX=["<",">",'"',"`"," ","\r",` +`," "],PX=["{","}","|","\\","^","`"].concat(jX),FX=["'"].concat(PX),kF=["%","/","?",";","#"].concat(FX),OF=["/","?","#"],MX=255,wF=/^[+a-z0-9A-Z_-]{0,63}$/,qX=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,NF={javascript:!0,"javascript:":!0},DF={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function VX(e,t){if(e&&e instanceof Km)return e;var r=new Km;return r.parse(e,t),r}Km.prototype.parse=function(e,t){var r,n,i,o,s,l=e;if(l=l.trim(),!t&&e.split("#").length===1){var d=RX.exec(l);if(d)return this.pathname=d[1],d[2]&&(this.search=d[2]),this}var h=IX.exec(l);if(h&&(h=h[0],i=h.toLowerCase(),this.protocol=h,l=l.substr(h.length)),(t||h||l.match(/^\/\/[^@\/]+@[^@\/]+/))&&(s=l.substr(0,2)==="//",s&&!(h&&NF[h])&&(l=l.substr(2),this.slashes=!0)),!NF[h]&&(s||h&&!DF[h])){var v=-1;for(r=0;r127?S+="x":S+=T[m];if(!S.match(wF)){var x=k.slice(0,r),L=k.slice(r+1),O=T.match(qX);O&&(x.push(O[1]),L.unshift(O[2])),L.length&&(l=L.join(".")+l),this.hostname=x.join(".");break}}}}this.hostname.length>MX&&(this.hostname=""),_&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var R=l.indexOf("#");R!==-1&&(this.hash=l.substr(R),l=l.slice(0,R));var M=l.indexOf("?");return M!==-1&&(this.search=l.substr(M),l=l.slice(0,M)),l&&(this.pathname=l),DF[i]&&this.hostname&&!this.pathname&&(this.pathname=""),this};Km.prototype.parseHost=function(e){var t=AX.exec(e);t&&(t=t[0],t!==":"&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)};xF.exports=VX});var uO=G((Rse,Rp)=>{"use strict";Rp.exports.encode=yF();Rp.exports.decode=_F();Rp.exports.format=SF();Rp.exports.parse=CF()});var sO=G((jse,LF)=>{LF.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/});var lO=G((Pse,IF)=>{IF.exports=/[\0-\x1F\x7F-\x9F]/});var RF=G((Fse,AF)=>{AF.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/});var cO=G((Mse,jF)=>{jF.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/});var PF=G(Ic=>{"use strict";Ic.Any=sO();Ic.Cc=lO();Ic.Cf=RF();Ic.P=Gm();Ic.Z=cO()});var Pt=G(en=>{"use strict";function UX(e){return Object.prototype.toString.call(e)}function GX(e){return UX(e)==="[object String]"}var QX=Object.prototype.hasOwnProperty;function FF(e,t){return QX.call(e,t)}function BX(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach(function(r){if(!!r){if(typeof r!="object")throw new TypeError(r+"must be object");Object.keys(r).forEach(function(n){e[n]=r[n]})}}),e}function KX(e,t,r){return[].concat(e.slice(0,t),r,e.slice(t+1))}function MF(e){return!(e>=55296&&e<=57343||e>=64976&&e<=65007||(e&65535)==65535||(e&65535)==65534||e>=0&&e<=8||e===11||e>=14&&e<=31||e>=127&&e<=159||e>1114111)}function qF(e){if(e>65535){e-=65536;var t=55296+(e>>10),r=56320+(e&1023);return String.fromCharCode(t,r)}return String.fromCharCode(e)}var VF=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,HX=/&([a-z#][a-z0-9]{1,31});/gi,zX=new RegExp(VF.source+"|"+HX.source,"gi"),WX=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,UF=oO();function YX(e,t){var r=0;return FF(UF,t)?UF[t]:t.charCodeAt(0)===35&&WX.test(t)&&(r=t[1].toLowerCase()==="x"?parseInt(t.slice(2),16):parseInt(t.slice(1),10),MF(r))?qF(r):e}function JX(e){return e.indexOf("\\")<0?e:e.replace(VF,"$1")}function XX(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(zX,function(t,r,n){return r||YX(t,n)})}var ZX=/[&<>"]/,$X=/[&<>"]/g,eZ={"&":"&","<":"<",">":">",'"':"""};function tZ(e){return eZ[e]}function rZ(e){return ZX.test(e)?e.replace($X,tZ):e}var nZ=/[.?*+^$[\]\\(){}|-]/g;function iZ(e){return e.replace(nZ,"\\$&")}function aZ(e){switch(e){case 9:case 32:return!0}return!1}function oZ(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}var uZ=Gm();function sZ(e){return uZ.test(e)}function lZ(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function cZ(e){return e=e.trim().replace(/\s+/g," "),"\u1E9E".toLowerCase()==="\u1E7E"&&(e=e.replace(/ẞ/g,"\xDF")),e.toLowerCase().toUpperCase()}en.lib={};en.lib.mdurl=uO();en.lib.ucmicro=PF();en.assign=BX;en.isString=GX;en.has=FF;en.unescapeMd=JX;en.unescapeAll=XX;en.isValidEntityCode=MF;en.fromCodePoint=qF;en.escapeHtml=rZ;en.arrayReplaceAt=KX;en.isSpace=aZ;en.isWhiteSpace=oZ;en.isMdAsciiPunct=lZ;en.isPunctChar=sZ;en.escapeRE=iZ;en.normalizeReference=cZ});var QF=G((Use,GF)=>{"use strict";GF.exports=function(t,r,n){var i,o,s,l,d=-1,h=t.posMax,v=t.pos;for(t.pos=r+1,i=1;t.pos{"use strict";var BF=Pt().unescapeAll;KF.exports=function(t,r,n){var i,o,s=0,l=r,d={ok:!1,pos:0,lines:0,str:""};if(t.charCodeAt(r)===60){for(r++;r32))return d;if(i===41){if(o===0)break;o--}r++}return l===r||o!==0||(d.str=BF(t.slice(l,r)),d.lines=s,d.pos=r,d.ok=!0),d}});var WF=G((Qse,zF)=>{"use strict";var fZ=Pt().unescapeAll;zF.exports=function(t,r,n){var i,o,s=0,l=r,d={ok:!1,pos:0,lines:0,str:""};if(r>=n||(o=t.charCodeAt(r),o!==34&&o!==39&&o!==40))return d;for(r++,o===40&&(o=41);r{"use strict";Hm.parseLinkLabel=QF();Hm.parseLinkDestination=HF();Hm.parseLinkTitle=WF()});var XF=G((Kse,JF)=>{"use strict";var dZ=Pt().assign,pZ=Pt().unescapeAll,Fs=Pt().escapeHtml,Wa={};Wa.code_inline=function(e,t,r,n,i){var o=e[t];return""+Fs(e[t].content)+""};Wa.code_block=function(e,t,r,n,i){var o=e[t];return""+Fs(e[t].content)+` +`};Wa.fence=function(e,t,r,n,i){var o=e[t],s=o.info?pZ(o.info).trim():"",l="",d="",h,v,y,b,D;return s&&(y=s.split(/(\s+)/g),l=y[0],d=y.slice(2).join("")),r.highlight?h=r.highlight(o.content,l,d)||Fs(o.content):h=Fs(o.content),h.indexOf(""+h+` +`):"
    "+h+`
    +`};Wa.image=function(e,t,r,n,i){var o=e[t];return o.attrs[o.attrIndex("alt")][1]=i.renderInlineAsText(o.children,r,n),i.renderToken(e,t,r)};Wa.hardbreak=function(e,t,r){return r.xhtmlOut?`
    `:`
    -`};Ia.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?`
    +`};Wa.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?`
    `:`
    `:` -`};Ia.text=function(e,t){return bs(e[t].content)};Ia.html_block=function(e,t){return e[t].content};Ia.html_inline=function(e,t){return e[t].content};function fc(){this.rules=CY({},Ia)}fc.prototype.renderAttrs=function(t){var r,n,a;if(!t.attrs)return"";for(a="",r=0,n=t.attrs.length;r -`:">",o)};fc.prototype.renderInline=function(e,t,r){for(var n,a="",o=this.rules,s=0,l=e.length;s{"use strict";function ua(){this.__rules__=[],this.__cache__=null}ua.prototype.__find__=function(e){for(var t=0;t{"use strict";var AY=/\r\n?|\n/g,NY=/\0/g;XR.exports=function(t){var r;r=t.src.replace(AY,` -`),r=r.replace(NY,"\uFFFD"),t.src=r}});var eF=U((Pie,$R)=>{"use strict";$R.exports=function(t){var r;t.inlineMode?(r=new t.Token("inline","",0),r.content=t.src,r.map=[0,1],r.children=[],t.tokens.push(r)):t.md.block.parse(t.src,t.md,t.env,t.tokens)}});var rF=U((Mie,tF)=>{"use strict";tF.exports=function(t){var r=t.tokens,n,a,o;for(a=0,o=r.length;a{"use strict";var LY=Ct().arrayReplaceAt;function xY(e){return/^\s]/i.test(e)}function IY(e){return/^<\/a\s*>/i.test(e)}nF.exports=function(t){var r,n,a,o,s,l,d,h,v,b,T,A,L,S,y,_,m=t.tokens,k;if(!!t.md.options.linkify){for(n=0,a=m.length;n=0;r--){if(l=o[r],l.type==="link_close"){for(r--;o[r].level!==l.level&&o[r].type!=="link_open";)r--;continue}if(l.type==="html_inline"&&(xY(l.content)&&L>0&&L--,IY(l.content)&&L++),!(L>0)&&l.type==="text"&&t.md.linkify.test(l.content)){for(v=l.content,k=t.md.linkify.match(v),d=[],A=l.level,T=0,h=0;hT&&(s=new t.Token("text","",0),s.content=v.slice(T,b),s.level=A,d.push(s)),s=new t.Token("link_open","a",1),s.attrs=[["href",y]],s.level=A++,s.markup="linkify",s.info="auto",d.push(s),s=new t.Token("text","",0),s.content=_,s.level=A,d.push(s),s=new t.Token("link_close","a",-1),s.level=--A,s.markup="linkify",s.info="auto",d.push(s),T=k[h].lastIndex);T{"use strict";var aF=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,RY=/\((c|tm|r|p)\)/i,FY=/\((c|tm|r|p)\)/ig,jY={c:"\xA9",r:"\xAE",p:"\xA7",tm:"\u2122"};function PY(e,t){return jY[t.toLowerCase()]}function MY(e){var t,r,n=0;for(t=e.length-1;t>=0;t--)r=e[t],r.type==="text"&&!n&&(r.content=r.content.replace(FY,PY)),r.type==="link_open"&&r.info==="auto"&&n--,r.type==="link_close"&&r.info==="auto"&&n++}function qY(e){var t,r,n=0;for(t=e.length-1;t>=0;t--)r=e[t],r.type==="text"&&!n&&aF.test(r.content)&&(r.content=r.content.replace(/\+-/g,"\xB1").replace(/\.{2,}/g,"\u2026").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/mg,"$1\u2014$2").replace(/(^|\s)--(\s|$)/mg,"$1\u2013$2").replace(/(^|[^-\s])--([^-\s]|$)/mg,"$1\u2013$2")),r.type==="link_open"&&r.info==="auto"&&n--,r.type==="link_close"&&r.info==="auto"&&n++}oF.exports=function(t){var r;if(!!t.md.options.typographer)for(r=t.tokens.length-1;r>=0;r--)t.tokens[r].type==="inline"&&(RY.test(t.tokens[r].content)&&MY(t.tokens[r].children),aF.test(t.tokens[r].content)&&qY(t.tokens[r].children))}});var hF=U((Vie,pF)=>{"use strict";var sF=Ct().isWhiteSpace,lF=Ct().isPunctChar,cF=Ct().isMdAsciiPunct,BY=/['"]/,fF=/['"]/g,dF="\u2019";function gm(e,t,r){return e.substr(0,t)+r+e.substr(t+1)}function VY(e,t){var r,n,a,o,s,l,d,h,v,b,T,A,L,S,y,_,m,k,w,C,D;for(w=[],r=0;r=0&&!(w[m].level<=d);m--);if(w.length=m+1,n.type!=="text")continue;a=n.content,s=0,l=a.length;e:for(;s=0)v=a.charCodeAt(o.index-1);else for(m=r-1;m>=0&&!(e[m].type==="softbreak"||e[m].type==="hardbreak");m--)if(e[m].type==="text"){v=e[m].content.charCodeAt(e[m].content.length-1);break}if(b=32,s=48&&v<=57&&(_=y=!1),y&&_&&(y=!1,_=A),!y&&!_){k&&(n.content=gm(n.content,o.index,dF));continue}if(_){for(m=w.length-1;m>=0&&(h=w[m],!(w[m].level=0;r--)t.tokens[r].type!=="inline"||!BY.test(t.tokens[r].content)||VY(t.tokens[r].children,t)}});var mm=U((Uie,vF)=>{"use strict";function dc(e,t,r){this.type=e,this.tag=t,this.attrs=null,this.map=null,this.nesting=r,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}dc.prototype.attrIndex=function(t){var r,n,a;if(!this.attrs)return-1;for(r=this.attrs,n=0,a=r.length;n=0&&(n=this.attrs[r][1]),n};dc.prototype.attrJoin=function(t,r){var n=this.attrIndex(t);n<0?this.attrPush([t,r]):this.attrs[n][1]=this.attrs[n][1]+" "+r};vF.exports=dc});var yF=U((Gie,mF)=>{"use strict";var UY=mm();function gF(e,t,r){this.src=e,this.env=r,this.tokens=[],this.inlineMode=!1,this.md=t}gF.prototype.Token=UY;mF.exports=gF});var TF=U((Qie,bF)=>{"use strict";var GY=vm(),gD=[["normalize",ZR()],["block",eF()],["inline",rF()],["linkify",iF()],["replacements",uF()],["smartquotes",hF()]];function mD(){this.ruler=new GY;for(var e=0;e{"use strict";var QY=Ct().isSpace;function yD(e,t){var r=e.bMarks[t]+e.blkIndent,n=e.eMarks[t];return e.src.substr(r,n-r)}function EF(e){var t=[],r=0,n=e.length,a,o=0,s=0,l=!1,d=0;for(a=e.charCodeAt(r);rn||(h=r+1,t.sCount[h]=4||(l=t.bMarks[h]+t.tShift[h],l>=t.eMarks[h])||(o=t.src.charCodeAt(l++),o!==124&&o!==45&&o!==58))return!1;for(;l=4||(v=EF(s.replace(/^\||\|$/g,"")),b=v.length,b>A.length))return!1;if(a)return!0;for(T=t.push("table_open","table",1),T.map=S=[r,0],T=t.push("thead_open","thead",1),T.map=[r,r+1],T=t.push("tr_open","tr",1),T.map=[r,r+1],d=0;d=4);h++){for(v=EF(s.replace(/^\||\|$/g,"")),T=t.push("tr_open","tr",1),d=0;d{"use strict";DF.exports=function(t,r,n){var a,o,s;if(t.sCount[r]-t.blkIndent<4)return!1;for(o=a=r+1;a=4){a++,o=a;continue}break}return t.line=o,s=t.push("code_block","code",0),s.content=t.getLines(r,o,4+t.blkIndent,!0),s.map=[r,t.line],!0}});var CF=U((zie,OF)=>{"use strict";OF.exports=function(t,r,n,a){var o,s,l,d,h,v,b,T=!1,A=t.bMarks[r]+t.tShift[r],L=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||A+3>L||(o=t.src.charCodeAt(A),o!==126&&o!==96)||(h=A,A=t.skipChars(A,o),s=A-h,s<3)||(b=t.src.slice(h,A),l=t.src.slice(A,L),o===96&&l.indexOf(String.fromCharCode(o))>=0))return!1;if(a)return!0;for(d=r;d++,!(d>=n||(A=h=t.bMarks[d]+t.tShift[d],L=t.eMarks[d],A=4)&&(A=t.skipChars(A,o),!(A-h{"use strict";var wF=Ct().isSpace;AF.exports=function(t,r,n,a){var o,s,l,d,h,v,b,T,A,L,S,y,_,m,k,w,C,D,R,M,q=t.lineMax,z=t.bMarks[r]+t.tShift[r],Q=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||t.src.charCodeAt(z++)!==62)return!1;if(a)return!0;for(d=A=t.sCount[r]+z-(t.bMarks[r]+t.tShift[r]),t.src.charCodeAt(z)===32?(z++,d++,A++,o=!1,w=!0):t.src.charCodeAt(z)===9?(w=!0,(t.bsCount[r]+A)%4==3?(z++,d++,A++,o=!1):o=!0):w=!1,L=[t.bMarks[r]],t.bMarks[r]=z;z=Q,m=[t.sCount[r]],t.sCount[r]=A-d,k=[t.tShift[r]],t.tShift[r]=z-t.bMarks[r],D=t.md.block.ruler.getRules("blockquote"),_=t.parentType,t.parentType="blockquote",M=!1,T=r+1;T=Q));T++){if(t.src.charCodeAt(z++)===62&&!M){for(d=A=t.sCount[T]+z-(t.bMarks[T]+t.tShift[T]),t.src.charCodeAt(z)===32?(z++,d++,A++,o=!1,w=!0):t.src.charCodeAt(z)===9?(w=!0,(t.bsCount[T]+A)%4==3?(z++,d++,A++,o=!1):o=!0):w=!1,L.push(t.bMarks[T]),t.bMarks[T]=z;z=Q,S.push(t.bsCount[T]),t.bsCount[T]=t.sCount[T]+1+(w?1:0),m.push(t.sCount[T]),t.sCount[T]=A-d,k.push(t.tShift[T]),t.tShift[T]=z-t.bMarks[T];continue}if(v)break;for(C=!1,l=0,h=D.length;l",R.map=b=[r,0],t.md.block.tokenize(t,r,T),R=t.push("blockquote_close","blockquote",-1),R.markup=">",t.lineMax=q,t.parentType=_,b[1]=t.line,l=0;l{"use strict";var KY=Ct().isSpace;LF.exports=function(t,r,n,a){var o,s,l,d,h=t.bMarks[r]+t.tShift[r],v=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||(o=t.src.charCodeAt(h++),o!==42&&o!==45&&o!==95))return!1;for(s=1;h{"use strict";var IF=Ct().isSpace;function RF(e,t){var r,n,a,o;return n=e.bMarks[t]+e.tShift[t],a=e.eMarks[t],r=e.src.charCodeAt(n++),r!==42&&r!==45&&r!==43||n=o||(r=e.src.charCodeAt(a++),r<48||r>57))return-1;for(;;){if(a>=o)return-1;if(r=e.src.charCodeAt(a++),r>=48&&r<=57){if(a-n>=10)return-1;continue}if(r===41||r===46)break;return-1}return a=4||t.listIndent>=0&&t.sCount[r]-t.listIndent>=4&&t.sCount[r]=t.blkIndent&&(Ce=!0),(Q=FF(t,r))>=0){if(b=!0,j=t.bMarks[r]+t.tShift[r],_=Number(t.src.substr(j,Q-j-1)),Ce&&_!==1)return!1}else if((Q=RF(t,r))>=0)b=!1;else return!1;if(Ce&&t.skipSpaces(Q)>=t.eMarks[r])return!1;if(y=t.src.charCodeAt(Q-1),a)return!0;for(S=t.tokens.length,b?(be=t.push("ordered_list_open","ol",1),_!==1&&(be.attrs=[["start",_]])):be=t.push("bullet_list_open","ul",1),be.map=L=[r,0],be.markup=String.fromCharCode(y),k=r,G=!1,ke=t.md.block.ruler.getRules("list"),D=t.parentType,t.parentType="list";k=m?h=1:h=w-v,h>4&&(h=1),d=v+h,be=t.push("list_item_open","li",1),be.markup=String.fromCharCode(y),be.map=T=[r,0],q=t.tight,M=t.tShift[r],R=t.sCount[r],C=t.listIndent,t.listIndent=t.blkIndent,t.blkIndent=d,t.tight=!0,t.tShift[r]=s-t.bMarks[r],t.sCount[r]=w,s>=m&&t.isEmpty(r+1)?t.line=Math.min(t.line+2,n):t.md.block.tokenize(t,r,n,!0),(!t.tight||G)&&(we=!1),G=t.line-r>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=C,t.tShift[r]=M,t.sCount[r]=R,t.tight=q,be=t.push("list_item_close","li",-1),be.markup=String.fromCharCode(y),k=r=t.line,T[1]=k,s=t.bMarks[r],k>=n||t.sCount[k]=4)break;for(ce=!1,l=0,A=ke.length;l{"use strict";var zY=Ct().normalizeReference,ym=Ct().isSpace;MF.exports=function(t,r,n,a){var o,s,l,d,h,v,b,T,A,L,S,y,_,m,k,w,C=0,D=t.bMarks[r]+t.tShift[r],R=t.eMarks[r],M=r+1;if(t.sCount[r]-t.blkIndent>=4||t.src.charCodeAt(D)!==91)return!1;for(;++D3)&&!(t.sCount[M]<0)){for(m=!1,v=0,b=k.length;v{"use strict";var BF=Ct().isSpace;VF.exports=function(t,r,n,a){var o,s,l,d,h=t.bMarks[r]+t.tShift[r],v=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||(o=t.src.charCodeAt(h),o!==35||h>=v))return!1;for(s=1,o=t.src.charCodeAt(++h);o===35&&h6||hh&&BF(t.src.charCodeAt(l-1))&&(v=l),t.line=r+1,d=t.push("heading_open","h"+String(s),1),d.markup="########".slice(0,s),d.map=[r,t.line],d=t.push("inline","",0),d.content=t.src.slice(h,v).trim(),d.map=[r,t.line],d.children=[],d=t.push("heading_close","h"+String(s),-1),d.markup="########".slice(0,s)),!0)}});var QF=U(($ie,GF)=>{"use strict";GF.exports=function(t,r,n){var a,o,s,l,d,h,v,b,T,A=r+1,L,S=t.md.block.ruler.getRules("paragraph");if(t.sCount[r]-t.blkIndent>=4)return!1;for(L=t.parentType,t.parentType="paragraph";A3)){if(t.sCount[A]>=t.blkIndent&&(h=t.bMarks[A]+t.tShift[A],v=t.eMarks[A],h=v)))){b=T===61?1:2;break}if(!(t.sCount[A]<0)){for(o=!1,s=0,l=S.length;s{"use strict";KF.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]});var TD=U((tae,bD)=>{"use strict";var WY="[a-zA-Z_:][a-zA-Z0-9:._-]*",YY="[^\"'=<>`\\x00-\\x20]+",JY="'[^']*'",XY='"[^"]*"',ZY="(?:"+YY+"|"+JY+"|"+XY+")",$Y="(?:\\s+"+WY+"(?:\\s*=\\s*"+ZY+")?)",zF="<[A-Za-z][A-Za-z0-9\\-]*"+$Y+"*\\s*\\/?>",WF="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",eJ="|",tJ="<[?].*?[?]>",rJ="]*>",nJ="",iJ=new RegExp("^(?:"+zF+"|"+WF+"|"+eJ+"|"+tJ+"|"+rJ+"|"+nJ+")"),aJ=new RegExp("^(?:"+zF+"|"+WF+")");bD.exports.HTML_TAG_RE=iJ;bD.exports.HTML_OPEN_CLOSE_TAG_RE=aJ});var JF=U((rae,YF)=>{"use strict";var oJ=HF(),uJ=TD().HTML_OPEN_CLOSE_TAG_RE,pc=[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(uJ.source+"\\s*$"),/^$/,!1]];YF.exports=function(t,r,n,a){var o,s,l,d,h=t.bMarks[r]+t.tShift[r],v=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||!t.md.options.html||t.src.charCodeAt(h)!==60)return!1;for(d=t.src.slice(h,v),o=0;o{"use strict";XF.exports=function(t,r){var n,a,o,s,l,d,h=r+1,v=t.md.block.ruler.getRules("paragraph"),b=t.lineMax;for(d=t.parentType,t.parentType="paragraph";h3)&&!(t.sCount[h]<0)){for(a=!1,o=0,s=v.length;o{"use strict";var $F=mm(),bm=Ct().isSpace;function Ra(e,t,r,n){var a,o,s,l,d,h,v,b;for(this.src=e,this.md=t,this.env=r,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType="root",this.level=0,this.result="",o=this.src,b=!1,s=l=h=v=0,d=o.length;l0&&this.level++,this.tokens.push(n),n};Ra.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]};Ra.prototype.skipEmptyLines=function(t){for(var r=this.lineMax;tr;)if(!bm(this.src.charCodeAt(--t)))return t+1;return t};Ra.prototype.skipChars=function(t,r){for(var n=this.src.length;tn;)if(r!==this.src.charCodeAt(--t))return t+1;return t};Ra.prototype.getLines=function(t,r,n,a){var o,s,l,d,h,v,b,T=t;if(t>=r)return"";for(v=new Array(r-t),o=0;Tn?v[o]=new Array(s-n+1).join(" ")+this.src.slice(d,h):v[o]=this.src.slice(d,h)}return v.join("")};Ra.prototype.Token=$F;ej.exports=Ra});var nj=U((aae,rj)=>{"use strict";var sJ=vm(),Tm=[["table",SF(),["paragraph","reference"]],["code",kF()],["fence",CF(),["paragraph","reference","blockquote","list"]],["blockquote",NF(),["paragraph","reference","blockquote","list"]],["hr",xF(),["paragraph","reference","blockquote","list"]],["list",PF(),["paragraph","reference","blockquote"]],["reference",qF()],["heading",UF(),["paragraph","reference","blockquote"]],["lheading",QF()],["html_block",JF(),["paragraph","reference","blockquote"]],["paragraph",ZF()]];function Em(){this.ruler=new sJ;for(var e=0;e=r||e.sCount[l]=h){e.line=r;break}for(a=0;a{"use strict";function lJ(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}ij.exports=function(t,r){for(var n=t.pos;n{"use strict";var cJ=Ct().isSpace;oj.exports=function(t,r){var n,a,o=t.pos;if(t.src.charCodeAt(o)!==10)return!1;for(n=t.pending.length-1,a=t.posMax,r||(n>=0&&t.pending.charCodeAt(n)===32?n>=1&&t.pending.charCodeAt(n-1)===32?(t.pending=t.pending.replace(/ +$/,""),t.push("hardbreak","br",0)):(t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0)):t.push("softbreak","br",0)),o++;o{"use strict";var fJ=Ct().isSpace,ED=[];for(_D=0;_D<256;_D++)ED.push(0);var _D;"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(e){ED[e.charCodeAt(0)]=1});sj.exports=function(t,r){var n,a=t.pos,o=t.posMax;if(t.src.charCodeAt(a)!==92)return!1;if(a++,a{"use strict";cj.exports=function(t,r){var n,a,o,s,l,d,h=t.pos,v=t.src.charCodeAt(h);if(v!==96)return!1;for(n=h,h++,a=t.posMax;h{"use strict";SD.exports.tokenize=function(t,r){var n,a,o,s,l,d=t.pos,h=t.src.charCodeAt(d);if(r||h!==126||(a=t.scanDelims(t.pos,!0),s=a.length,l=String.fromCharCode(h),s<2))return!1;for(s%2&&(o=t.push("text","",0),o.content=l,s--),n=0;n{"use strict";kD.exports.tokenize=function(t,r){var n,a,o,s=t.pos,l=t.src.charCodeAt(s);if(r||l!==95&&l!==42)return!1;for(a=t.scanDelims(t.pos,l===42),n=0;n=0;r--)n=t[r],!(n.marker!==95&&n.marker!==42)&&n.end!==-1&&(a=t[n.end],l=r>0&&t[r-1].end===n.end+1&&t[r-1].token===n.token-1&&t[n.end+1].token===a.token+1&&t[r-1].marker===n.marker,s=String.fromCharCode(n.marker),o=e.tokens[n.token],o.type=l?"strong_open":"em_open",o.tag=l?"strong":"em",o.nesting=1,o.markup=l?s+s:s,o.content="",o=e.tokens[a.token],o.type=l?"strong_close":"em_close",o.tag=l?"strong":"em",o.nesting=-1,o.markup=l?s+s:s,o.content="",l&&(e.tokens[t[r-1].token].content="",e.tokens[t[n.end+1].token].content="",r--))}kD.exports.postProcess=function(t){var r,n=t.tokens_meta,a=t.tokens_meta.length;for(pj(t,t.delimiters),r=0;r{"use strict";var dJ=Ct().normalizeReference,CD=Ct().isSpace;hj.exports=function(t,r){var n,a,o,s,l,d,h,v,b,T,A="",L=t.pos,S=t.posMax,y=t.pos,_=!0;if(t.src.charCodeAt(t.pos)!==91||(l=t.pos+1,s=t.md.helpers.parseLinkLabel(t,t.pos,!0),s<0))return!1;if(d=s+1,d=S)return!1;for(y=d,h=t.md.helpers.parseLinkDestination(t.src,d,t.posMax),h.ok&&(A=t.md.normalizeLink(h.str),t.md.validateLink(A)?d=h.pos:A=""),y=d;d=S||t.src.charCodeAt(d)!==41)&&(_=!0),d++}if(_){if(typeof t.env.references=="undefined")return!1;if(d=0?o=t.src.slice(y,d++):d=s+1):d=s+1,o||(o=t.src.slice(l,s)),v=t.env.references[dJ(o)],!v)return t.pos=L,!1;A=v.href,b=v.title}return r||(t.pos=l,t.posMax=s,T=t.push("link_open","a",1),T.attrs=n=[["href",A]],b&&n.push(["title",b]),t.md.inline.tokenize(t),T=t.push("link_close","a",-1)),t.pos=d,t.posMax=S,!0}});var mj=U((pae,gj)=>{"use strict";var pJ=Ct().normalizeReference,wD=Ct().isSpace;gj.exports=function(t,r){var n,a,o,s,l,d,h,v,b,T,A,L,S,y="",_=t.pos,m=t.posMax;if(t.src.charCodeAt(t.pos)!==33||t.src.charCodeAt(t.pos+1)!==91||(d=t.pos+2,l=t.md.helpers.parseLinkLabel(t,t.pos+1,!1),l<0))return!1;if(h=l+1,h=m)return!1;for(S=h,b=t.md.helpers.parseLinkDestination(t.src,h,t.posMax),b.ok&&(y=t.md.normalizeLink(b.str),t.md.validateLink(y)?h=b.pos:y=""),S=h;h=m||t.src.charCodeAt(h)!==41)return t.pos=_,!1;h++}else{if(typeof t.env.references=="undefined")return!1;if(h=0?s=t.src.slice(S,h++):h=l+1):h=l+1,s||(s=t.src.slice(d,l)),v=t.env.references[pJ(s)],!v)return t.pos=_,!1;y=v.href,T=v.title}return r||(o=t.src.slice(d,l),t.md.inline.parse(o,t.md,t.env,L=[]),A=t.push("image","img",0),A.attrs=n=[["src",y],["alt",""]],A.children=L,A.content=o,T&&n.push(["title",T])),t.pos=h,t.posMax=m,!0}});var Ej=U((hae,Tj)=>{"use strict";var yj=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,bj=/^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;Tj.exports=function(t,r){var n,a,o,s,l,d,h=t.pos;return t.src.charCodeAt(h)!==60||(n=t.src.slice(h),n.indexOf(">")<0)?!1:bj.test(n)?(a=n.match(bj),s=a[0].slice(1,-1),l=t.md.normalizeLink(s),t.md.validateLink(l)?(r||(d=t.push("link_open","a",1),d.attrs=[["href",l]],d.markup="autolink",d.info="auto",d=t.push("text","",0),d.content=t.md.normalizeLinkText(s),d=t.push("link_close","a",-1),d.markup="autolink",d.info="auto"),t.pos+=a[0].length,!0):!1):yj.test(n)?(o=n.match(yj),s=o[0].slice(1,-1),l=t.md.normalizeLink("mailto:"+s),t.md.validateLink(l)?(r||(d=t.push("link_open","a",1),d.attrs=[["href",l]],d.markup="autolink",d.info="auto",d=t.push("text","",0),d.content=t.md.normalizeLinkText(s),d=t.push("link_close","a",-1),d.markup="autolink",d.info="auto"),t.pos+=o[0].length,!0):!1):!1}});var Sj=U((vae,_j)=>{"use strict";var hJ=TD().HTML_TAG_RE;function vJ(e){var t=e|32;return t>=97&&t<=122}_j.exports=function(t,r){var n,a,o,s,l=t.pos;return!t.md.options.html||(o=t.posMax,t.src.charCodeAt(l)!==60||l+2>=o)||(n=t.src.charCodeAt(l+1),n!==33&&n!==63&&n!==47&&!vJ(n))||(a=t.src.slice(l).match(hJ),!a)?!1:(r||(s=t.push("html_inline","",0),s.content=t.src.slice(l,l+a[0].length)),t.pos+=a[0].length,!0)}});var Cj=U((gae,Oj)=>{"use strict";var Dj=fD(),gJ=Ct().has,mJ=Ct().isValidEntityCode,kj=Ct().fromCodePoint,yJ=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,bJ=/^&([a-z][a-z0-9]{1,31});/i;Oj.exports=function(t,r){var n,a,o,s=t.pos,l=t.posMax;if(t.src.charCodeAt(s)!==38)return!1;if(s+1{"use strict";function wj(e,t){var r,n,a,o,s,l,d,h,v={},b=t.length;for(r=0;rs;n-=o.jump+1)if(o=t[n],o.marker===a.marker&&(l===-1&&(l=n),o.open&&o.end<0&&o.level===a.level&&(d=!1,(o.close||a.open)&&(o.length+a.length)%3==0&&(o.length%3!=0||a.length%3!=0)&&(d=!0),!d))){h=n>0&&!t[n-1].open?t[n-1].jump+1:0,a.jump=r-n+h,a.open=!1,o.end=r,o.jump=h,o.close=!1,l=-1;break}l!==-1&&(v[a.marker][(a.length||0)%3]=l)}}Aj.exports=function(t){var r,n=t.tokens_meta,a=t.tokens_meta.length;for(wj(t,t.delimiters),r=0;r{"use strict";Lj.exports=function(t){var r,n,a=0,o=t.tokens,s=t.tokens.length;for(r=n=0;r0&&a++,o[r].type==="text"&&r+1{"use strict";var AD=mm(),Ij=Ct().isWhiteSpace,Rj=Ct().isPunctChar,Fj=Ct().isMdAsciiPunct;function fp(e,t,r,n){this.src=e,this.env=r,this.md=t,this.tokens=n,this.tokens_meta=Array(n.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[]}fp.prototype.pushPending=function(){var e=new AD("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e};fp.prototype.push=function(e,t,r){this.pending&&this.pushPending();var n=new AD(e,t,r),a=null;return r<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),n.level=this.level,r>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],a={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(n),this.tokens_meta.push(a),n};fp.prototype.scanDelims=function(e,t){var r=e,n,a,o,s,l,d,h,v,b,T=!0,A=!0,L=this.posMax,S=this.src.charCodeAt(e);for(n=e>0?this.src.charCodeAt(e-1):32;r{"use strict";var Mj=vm(),ND=[["text",aj()],["newline",uj()],["escape",lj()],["backticks",fj()],["strikethrough",DD().tokenize],["emphasis",OD().tokenize],["link",vj()],["image",mj()],["autolink",Ej()],["html_inline",Sj()],["entity",Cj()]],LD=[["balance_pairs",Nj()],["strikethrough",DD().postProcess],["emphasis",OD().postProcess],["text_collapse",xj()]];function dp(){var e;for(this.ruler=new Mj,e=0;e=o)break;continue}e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()};dp.prototype.parse=function(e,t,r,n){var a,o,s,l=new this.State(e,t,r,n);for(this.tokenize(l),o=this.ruler2.getRules(""),s=o.length,a=0;a{"use strict";Vj.exports=function(e){var t={};t.src_Any=pD().source,t.src_Cc=hD().source,t.src_Z=vD().source,t.src_P=cm().source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");var r="[><\uFF5C]";return t.src_pseudo_letter="(?:(?!"+r+"|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|"+r+"|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+r+`|[()[\\]{}.,"'?!\\-]).|\\[(?:(?!`+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+`|["]).)+\\"|\\'(?:(?!`+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,4}[a-zA-Z0-9%/]|\\.(?!"+t.src_ZCc+"|[.]).|"+(e&&e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+"\\,(?!"+t.src_ZCc+").|\\!(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy="(^|"+r+'|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|"+t.src_ZPCc+"))((?![$+<=>^`|\uFF5C])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|"+t.src_ZPCc+"))((?![$+<=>^`|\uFF5C])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}});var Wj=U((_ae,zj)=>{"use strict";function xD(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach(function(r){!r||Object.keys(r).forEach(function(n){e[n]=r[n]})}),e}function _m(e){return Object.prototype.toString.call(e)}function TJ(e){return _m(e)==="[object String]"}function EJ(e){return _m(e)==="[object Object]"}function _J(e){return _m(e)==="[object RegExp]"}function Gj(e){return _m(e)==="[object Function]"}function SJ(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var Qj={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};function DJ(e){return Object.keys(e||{}).reduce(function(t,r){return t||Qj.hasOwnProperty(r)},!1)}var kJ={"http:":{validate:function(e,t,r){var n=e.slice(t);return r.re.http||(r.re.http=new RegExp("^\\/\\/"+r.re.src_auth+r.re.src_host_port_strict+r.re.src_path,"i")),r.re.http.test(n)?n.match(r.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,t,r){var n=e.slice(t);return r.re.no_http||(r.re.no_http=new RegExp("^"+r.re.src_auth+"(?:localhost|(?:(?:"+r.re.src_domain+")\\.)+"+r.re.src_domain_root+")"+r.re.src_port+r.re.src_host_terminator+r.re.src_path,"i")),r.re.no_http.test(n)?t>=3&&e[t-3]===":"||t>=3&&e[t-3]==="/"?0:n.match(r.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,r){var n=e.slice(t);return r.re.mailto||(r.re.mailto=new RegExp("^"+r.re.src_email_name+"@"+r.re.src_host_strict,"i")),r.re.mailto.test(n)?n.match(r.re.mailto)[0].length:0}}},OJ="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",CJ="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function wJ(e){e.__index__=-1,e.__text_cache__=""}function AJ(e){return function(t,r){var n=t.slice(r);return e.test(n)?n.match(e)[0].length:0}}function Kj(){return function(e,t){t.normalize(e)}}function Sm(e){var t=e.re=Uj()(e.__opts__),r=e.__tlds__.slice();e.onCompile(),e.__tlds_replaced__||r.push(OJ),r.push(t.src_xn),t.src_tlds=r.join("|");function n(l){return l.replace("%TLDS%",t.src_tlds)}t.email_fuzzy=RegExp(n(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(n(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(n(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(n(t.tpl_host_fuzzy_test),"i");var a=[];e.__compiled__={};function o(l,d){throw new Error('(LinkifyIt) Invalid schema "'+l+'": '+d)}Object.keys(e.__schemas__).forEach(function(l){var d=e.__schemas__[l];if(d!==null){var h={validate:null,link:null};if(e.__compiled__[l]=h,EJ(d)){_J(d.validate)?h.validate=AJ(d.validate):Gj(d.validate)?h.validate=d.validate:o(l,d),Gj(d.normalize)?h.normalize=d.normalize:d.normalize?o(l,d):h.normalize=Kj();return}if(TJ(d)){a.push(l);return}o(l,d)}}),a.forEach(function(l){!e.__compiled__[e.__schemas__[l]]||(e.__compiled__[l].validate=e.__compiled__[e.__schemas__[l]].validate,e.__compiled__[l].normalize=e.__compiled__[e.__schemas__[l]].normalize)}),e.__compiled__[""]={validate:null,normalize:Kj()};var s=Object.keys(e.__compiled__).filter(function(l){return l.length>0&&e.__compiled__[l]}).map(SJ).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><\uFF5C]|"+t.src_ZPCc+"))("+s+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><\uFF5C]|"+t.src_ZPCc+"))("+s+")","ig"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),wJ(e)}function NJ(e,t){var r=e.__index__,n=e.__last_index__,a=e.__text_cache__.slice(r,n);this.schema=e.__schema__.toLowerCase(),this.index=r+t,this.lastIndex=n+t,this.raw=a,this.text=a,this.url=a}function Hj(e,t){var r=new NJ(e,t);return e.__compiled__[r.schema].normalize(r,e),r}function Ri(e,t){if(!(this instanceof Ri))return new Ri(e,t);t||DJ(e)&&(t=e,e={}),this.__opts__=xD({},Qj,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=xD({},kJ,e),this.__compiled__={},this.__tlds__=CJ,this.__tlds_replaced__=!1,this.re={},Sm(this)}Ri.prototype.add=function(t,r){return this.__schemas__[t]=r,Sm(this),this};Ri.prototype.set=function(t){return this.__opts__=xD(this.__opts__,t),this};Ri.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;var r,n,a,o,s,l,d,h,v;if(this.re.schema_test.test(t)){for(d=this.re.schema_search,d.lastIndex=0;(r=d.exec(t))!==null;)if(o=this.testSchemaAt(t,r[2],d.lastIndex),o){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+o;break}}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(h=t.search(this.re.host_fuzzy_test),h>=0&&(this.__index__<0||h=0&&(a=t.match(this.re.email_fuzzy))!==null&&(s=a.index+a[1].length,l=a.index+a[0].length,(this.__index__<0||sthis.__last_index__)&&(this.__schema__="mailto:",this.__index__=s,this.__last_index__=l))),this.__index__>=0};Ri.prototype.pretest=function(t){return this.re.pretest.test(t)};Ri.prototype.testSchemaAt=function(t,r,n){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(t,n,this):0};Ri.prototype.match=function(t){var r=0,n=[];this.__index__>=0&&this.__text_cache__===t&&(n.push(Hj(this,r)),r=this.__last_index__);for(var a=r?t.slice(r):t;this.test(a);)n.push(Hj(this,r)),a=a.slice(this.__last_index__),r+=this.__last_index__;return n.length?n:null};Ri.prototype.tlds=function(t,r){return t=Array.isArray(t)?t:[t],r?(this.__tlds__=this.__tlds__.concat(t).sort().filter(function(n,a,o){return n!==o[a-1]}).reverse(),Sm(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,Sm(this),this)};Ri.prototype.normalize=function(t){t.schema||(t.url="http://"+t.url),t.schema==="mailto:"&&!/^mailto:/i.test(t.url)&&(t.url="mailto:"+t.url)};Ri.prototype.onCompile=function(){};zj.exports=Ri});var aP=U((Sae,iP)=>{"use strict";var hc=2147483647,Fa=36,ID=1,pp=26,LJ=38,xJ=700,Yj=72,Jj=128,Xj="-",IJ=/^xn--/,RJ=/[^\0-\x7E]/,FJ=/[\x2E\u3002\uFF0E\uFF61]/g,jJ={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},RD=Fa-ID,ja=Math.floor,FD=String.fromCharCode;function Ts(e){throw new RangeError(jJ[e])}function PJ(e,t){let r=[],n=e.length;for(;n--;)r[n]=t(e[n]);return r}function Zj(e,t){let r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]),e=e.replace(FJ,".");let a=e.split("."),o=PJ(a,t).join(".");return n+o}function $j(e){let t=[],r=0,n=e.length;for(;r=55296&&a<=56319&&rString.fromCodePoint(...e),qJ=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:Fa},eP=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},tP=function(e,t,r){let n=0;for(e=r?ja(e/xJ):e>>1,e+=ja(e/t);e>RD*pp>>1;n+=Fa)e=ja(e/RD);return ja(n+(RD+1)*e/(e+LJ))},rP=function(e){let t=[],r=e.length,n=0,a=Jj,o=Yj,s=e.lastIndexOf(Xj);s<0&&(s=0);for(let l=0;l=128&&Ts("not-basic"),t.push(e.charCodeAt(l));for(let l=s>0?s+1:0;l=r&&Ts("invalid-input");let T=qJ(e.charCodeAt(l++));(T>=Fa||T>ja((hc-n)/v))&&Ts("overflow"),n+=T*v;let A=b<=o?ID:b>=o+pp?pp:b-o;if(Tja(hc/L)&&Ts("overflow"),v*=L}let h=t.length+1;o=tP(n-d,h,d==0),ja(n/h)>hc-a&&Ts("overflow"),a+=ja(n/h),n%=h,t.splice(n++,0,a)}return String.fromCodePoint(...t)},nP=function(e){let t=[];e=$j(e);let r=e.length,n=Jj,a=0,o=Yj;for(let d of e)d<128&&t.push(FD(d));let s=t.length,l=s;for(s&&t.push(Xj);l=n&&vja((hc-a)/h)&&Ts("overflow"),a+=(d-n)*h,n=d;for(let v of e)if(vhc&&Ts("overflow"),v==n){let b=a;for(let T=Fa;;T+=Fa){let A=T<=o?ID:T>=o+pp?pp:T-o;if(b{"use strict";oP.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}}});var lP=U((kae,sP)=>{"use strict";sP.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","text_collapse"]}}}});var fP=U((Oae,cP)=>{"use strict";cP.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","text_collapse"]}}}});var vP=U((Cae,hP)=>{"use strict";var hp=Ct(),GJ=zR(),QJ=YR(),KJ=TF(),HJ=nj(),zJ=Bj(),WJ=Wj(),vc=dD(),dP=aP(),YJ={default:uP(),zero:lP(),commonmark:fP()},JJ=/^(vbscript|javascript|file|data):/,XJ=/^data:image\/(gif|png|jpeg|webp);/;function ZJ(e){var t=e.trim().toLowerCase();return JJ.test(t)?!!XJ.test(t):!0}var pP=["http:","https:","mailto:"];function $J(e){var t=vc.parse(e,!0);if(t.hostname&&(!t.protocol||pP.indexOf(t.protocol)>=0))try{t.hostname=dP.toASCII(t.hostname)}catch(r){}return vc.encode(vc.format(t))}function eX(e){var t=vc.parse(e,!0);if(t.hostname&&(!t.protocol||pP.indexOf(t.protocol)>=0))try{t.hostname=dP.toUnicode(t.hostname)}catch(r){}return vc.decode(vc.format(t))}function Fi(e,t){if(!(this instanceof Fi))return new Fi(e,t);t||hp.isString(e)||(t=e||{},e="default"),this.inline=new zJ,this.block=new HJ,this.core=new KJ,this.renderer=new QJ,this.linkify=new WJ,this.validateLink=ZJ,this.normalizeLink=$J,this.normalizeLinkText=eX,this.utils=hp,this.helpers=hp.assign({},GJ),this.options={},this.configure(e),t&&this.set(t)}Fi.prototype.set=function(e){return hp.assign(this.options,e),this};Fi.prototype.configure=function(e){var t=this,r;if(hp.isString(e)&&(r=e,e=YJ[r],!e))throw new Error('Wrong `markdown-it` preset "'+r+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach(function(n){e.components[n].rules&&t[n].ruler.enableOnly(e.components[n].rules),e.components[n].rules2&&t[n].ruler2.enableOnly(e.components[n].rules2)}),this};Fi.prototype.enable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(a){r=r.concat(this[a].ruler.enable(e,!0))},this),r=r.concat(this.inline.ruler2.enable(e,!0));var n=e.filter(function(a){return r.indexOf(a)<0});if(n.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this};Fi.prototype.disable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(a){r=r.concat(this[a].ruler.disable(e,!0))},this),r=r.concat(this.inline.ruler2.disable(e,!0));var n=e.filter(function(a){return r.indexOf(a)<0});if(n.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this};Fi.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this};Fi.prototype.parse=function(e,t){if(typeof e!="string")throw new Error("Input data should be a String");var r=new this.core.State(e,this,t);return this.core.process(r),r.tokens};Fi.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)};Fi.prototype.parseInline=function(e,t){var r=new this.core.State(e,this,t);return r.inlineMode=!0,this.core.process(r),r.tokens};Fi.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)};hP.exports=Fi});var Dm=U((wae,gP)=>{"use strict";gP.exports=vP()});var ft=U((jD,PD)=>{(function(e,t){typeof jD=="object"&&typeof PD!="undefined"?PD.exports=t():typeof define=="function"&&define.amd?define(t):(e=e||self,e.CodeMirror=t())})(jD,function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),a=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),s=n||a||o,l=s&&(n?document.documentMode||6:+(o||a)[1]),d=!o&&/WebKit\//.test(e),h=d&&/Qt\/\d+\.\d+/.test(e),v=!o&&/Chrome\/(\d+)/.exec(e),b=v&&+v[1],T=/Opera\//.test(e),A=/Apple Computer/.test(navigator.vendor),L=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),S=/PhantomJS/.test(e),y=A&&(/Mobile\/\w+/.test(e)||navigator.maxTouchPoints>2),_=/Android/.test(e),m=y||_||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),k=y||/Mac/.test(t),w=/\bCrOS\b/.test(e),C=/win/i.test(t),D=T&&e.match(/Version\/(\d*\.\d*)/);D&&(D=Number(D[1])),D&&D>=15&&(T=!1,d=!0);var R=k&&(h||T&&(D==null||D<12.11)),M=r||s&&l>=9;function q(i){return new RegExp("(^|\\s)"+i+"(?:$|\\s)\\s*")}var z=function(i,u){var f=i.className,c=q(u).exec(f);if(c){var p=f.slice(c.index+c[0].length);i.className=f.slice(0,c.index)+(p?c[1]+p:"")}};function Q(i){for(var u=i.childNodes.length;u>0;--u)i.removeChild(i.firstChild);return i}function G(i,u){return Q(i).appendChild(u)}function j(i,u,f,c){var p=document.createElement(i);if(f&&(p.className=f),c&&(p.style.cssText=c),typeof u=="string")p.appendChild(document.createTextNode(u));else if(u)for(var g=0;g=u)return E+(u-g);E+=O-g,E+=f-E%f,g=O+1}}var Pe=function(){this.id=null,this.f=null,this.time=0,this.handler=Mt(this.onTimeout,this)};Pe.prototype.onTimeout=function(i){i.id=0,i.time<=+new Date?i.f():setTimeout(i.handler,i.time-+new Date)},Pe.prototype.set=function(i,u){this.f=u;var f=+new Date+i;(!this.id||f=u)return c+Math.min(E,u-p);if(p+=g-c,p+=f-p%f,c=g+1,p>=u)return c}}var Se=[""];function fe(i){for(;Se.length<=i;)Se.push(ue(Se)+" ");return Se[i]}function ue(i){return i[i.length-1]}function Ge(i,u){for(var f=[],c=0;c"\x80"&&(i.toUpperCase()!=i.toLowerCase()||Qi.test(i))}function mi(i,u){return u?u.source.indexOf("\\w")>-1&&la(i)?!0:u.test(i):la(i)}function Qa(i){for(var u in i)if(i.hasOwnProperty(u)&&i[u])return!1;return!0}var ca=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function Ka(i){return i.charCodeAt(0)>=768&&ca.test(i)}function kn(i,u,f){for(;(f<0?u>0:uf?-1:1;;){if(u==f)return u;var p=(u+f)/2,g=c<0?Math.ceil(p):Math.floor(p);if(g==u)return i(g)?u:f;i(g)?f=g:u=g+c}}function On(i,u,f,c){if(!i)return c(u,f,"ltr",0);for(var p=!1,g=0;gu||u==f&&E.to==u)&&(c(Math.max(E.from,u),Math.min(E.to,f),E.level==1?"rtl":"ltr",g),p=!0)}p||c(u,f,"ltr")}var yi=null;function qn(i,u,f){var c;yi=null;for(var p=0;pu)return p;g.to==u&&(g.from!=g.to&&f=="before"?c=p:yi=p),g.from==u&&(g.from!=g.to&&f!="before"?c=p:yi=p)}return c!=null?c:yi}var Pc=function(){var i="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",u="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function f(x){return x<=247?i.charAt(x):1424<=x&&x<=1524?"R":1536<=x&&x<=1785?u.charAt(x-1536):1774<=x&&x<=2220?"r":8192<=x&&x<=8203?"w":x==8204?"b":"L"}var c=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,p=/[stwN]/,g=/[LRr]/,E=/[Lb1n]/,O=/[1n]/;function N(x,V,K){this.level=x,this.from=V,this.to=K}return function(x,V){var K=V=="ltr"?"L":"R";if(x.length==0||V=="ltr"&&!c.test(x))return!1;for(var $=x.length,X=[],ne=0;ne<$;++ne)X.push(f(x.charCodeAt(ne)));for(var ae=0,le=K;ae<$;++ae){var he=X[ae];he=="m"?X[ae]=le:le=he}for(var Ee=0,ve=K;Ee<$;++Ee){var Oe=X[Ee];Oe=="1"&&ve=="r"?X[Ee]="n":g.test(Oe)&&(ve=Oe,Oe=="r"&&(X[Ee]="R"))}for(var Fe=1,Re=X[0];Fe<$-1;++Fe){var Xe=X[Fe];Xe=="+"&&Re=="1"&&X[Fe+1]=="1"?X[Fe]="1":Xe==","&&Re==X[Fe+1]&&(Re=="1"||Re=="n")&&(X[Fe]=Re),Re=Xe}for(var Pt=0;Pt<$;++Pt){var Rr=X[Pt];if(Rr==",")X[Pt]="N";else if(Rr=="%"){var $t=void 0;for($t=Pt+1;$t<$&&X[$t]=="%";++$t);for(var Gn=Pt&&X[Pt-1]=="!"||$t<$&&X[$t]=="1"?"1":"N",An=Pt;An<$t;++An)X[An]=Gn;Pt=$t-1}}for(var hr=0,Nn=K;hr<$;++hr){var Wr=X[hr];Nn=="L"&&Wr=="1"?X[hr]="L":g.test(Wr)&&(Nn=Wr)}for(var Dr=0;Dr<$;++Dr)if(p.test(X[Dr])){var vr=void 0;for(vr=Dr+1;vr<$&&p.test(X[vr]);++vr);for(var ar=(Dr?X[Dr-1]:K)=="L",Ln=(vr<$?X[vr]:K)=="L",Xs=ar==Ln?ar?"L":"R":K,Lo=Dr;Lo-1&&(c[u]=p.slice(0,g).concat(p.slice(g+1)))}}}function At(i,u){var f=ku(i,u);if(!!f.length)for(var c=Array.prototype.slice.call(arguments,2),p=0;p0}function zr(i){i.prototype.on=function(u,f){ge(this,u,f)},i.prototype.off=function(u,f){Tr(this,u,f)}}function ee(i){i.preventDefault?i.preventDefault():i.returnValue=!1}function P(i){i.stopPropagation?i.stopPropagation():i.cancelBubble=!0}function Y(i){return i.defaultPrevented!=null?i.defaultPrevented:i.returnValue==!1}function J(i){ee(i),P(i)}function B(i){return i.target||i.srcElement}function I(i){var u=i.which;return u==null&&(i.button&1?u=1:i.button&2?u=3:i.button&4&&(u=2)),k&&i.ctrlKey&&u==1&&(u=3),u}var te=function(){if(s&&l<9)return!1;var i=j("div");return"draggable"in i||"dragDrop"in i}(),ie;function Qe(i){if(ie==null){var u=j("span","\u200B");G(i,j("span",[u,document.createTextNode("x")])),i.firstChild.offsetHeight!=0&&(ie=u.offsetWidth<=1&&u.offsetHeight>2&&!(s&&l<8))}var f=ie?j("span","\u200B"):j("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return f.setAttribute("cm-text",""),f}var It;function kt(i){if(It!=null)return It;var u=G(i,document.createTextNode("A\u062EA")),f=ke(u,0,1).getBoundingClientRect(),c=ke(u,1,2).getBoundingClientRect();return Q(i),!f||f.left==f.right?!1:It=c.right-f.right<3}var en=` +`};Wa.text=function(e,t){return Fs(e[t].content)};Wa.html_block=function(e,t){return e[t].content};Wa.html_inline=function(e,t){return e[t].content};function Ac(){this.rules=dZ({},Wa)}Ac.prototype.renderAttrs=function(t){var r,n,i;if(!t.attrs)return"";for(i="",r=0,n=t.attrs.length;r +`:">",o)};Ac.prototype.renderInline=function(e,t,r){for(var n,i="",o=this.rules,s=0,l=e.length;s{"use strict";function Oa(){this.__rules__=[],this.__cache__=null}Oa.prototype.__find__=function(e){for(var t=0;t{"use strict";var hZ=/\r\n?|\n/g,vZ=/\0/g;$F.exports=function(t){var r;r=t.src.replace(hZ,` +`),r=r.replace(vZ,"\uFFFD"),t.src=r}});var rM=G((Wse,tM)=>{"use strict";tM.exports=function(t){var r;t.inlineMode?(r=new t.Token("inline","",0),r.content=t.src,r.map=[0,1],r.children=[],t.tokens.push(r)):t.md.block.parse(t.src,t.md,t.env,t.tokens)}});var iM=G((Yse,nM)=>{"use strict";nM.exports=function(t){var r=t.tokens,n,i,o;for(i=0,o=r.length;i{"use strict";var gZ=Pt().arrayReplaceAt;function mZ(e){return/^\s]/i.test(e)}function yZ(e){return/^<\/a\s*>/i.test(e)}aM.exports=function(t){var r,n,i,o,s,l,d,h,v,y,b,D,_,k,T,S,m=t.tokens,w;if(!!t.md.options.linkify){for(n=0,i=m.length;n=0;r--){if(l=o[r],l.type==="link_close"){for(r--;o[r].level!==l.level&&o[r].type!=="link_open";)r--;continue}if(l.type==="html_inline"&&(mZ(l.content)&&_>0&&_--,yZ(l.content)&&_++),!(_>0)&&l.type==="text"&&t.md.linkify.test(l.content)){for(v=l.content,w=t.md.linkify.match(v),d=[],D=l.level,b=0,h=0;hb&&(s=new t.Token("text","",0),s.content=v.slice(b,y),s.level=D,d.push(s)),s=new t.Token("link_open","a",1),s.attrs=[["href",T]],s.level=D++,s.markup="linkify",s.info="auto",d.push(s),s=new t.Token("text","",0),s.content=S,s.level=D,d.push(s),s=new t.Token("link_close","a",-1),s.level=--D,s.markup="linkify",s.info="auto",d.push(s),b=w[h].lastIndex);b{"use strict";var uM=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,bZ=/\((c|tm|r|p)\)/i,TZ=/\((c|tm|r|p)\)/ig,_Z={c:"\xA9",r:"\xAE",p:"\xA7",tm:"\u2122"};function EZ(e,t){return _Z[t.toLowerCase()]}function SZ(e){var t,r,n=0;for(t=e.length-1;t>=0;t--)r=e[t],r.type==="text"&&!n&&(r.content=r.content.replace(TZ,EZ)),r.type==="link_open"&&r.info==="auto"&&n--,r.type==="link_close"&&r.info==="auto"&&n++}function kZ(e){var t,r,n=0;for(t=e.length-1;t>=0;t--)r=e[t],r.type==="text"&&!n&&uM.test(r.content)&&(r.content=r.content.replace(/\+-/g,"\xB1").replace(/\.{2,}/g,"\u2026").replace(/([?!])…/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/mg,"$1\u2014").replace(/(^|\s)--(?=\s|$)/mg,"$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/mg,"$1\u2013")),r.type==="link_open"&&r.info==="auto"&&n--,r.type==="link_close"&&r.info==="auto"&&n++}sM.exports=function(t){var r;if(!!t.md.options.typographer)for(r=t.tokens.length-1;r>=0;r--)t.tokens[r].type==="inline"&&(bZ.test(t.tokens[r].content)&&SZ(t.tokens[r].children),uM.test(t.tokens[r].content)&&kZ(t.tokens[r].children))}});var gM=G((Zse,vM)=>{"use strict";var cM=Pt().isWhiteSpace,fM=Pt().isPunctChar,dM=Pt().isMdAsciiPunct,OZ=/['"]/,pM=/['"]/g,hM="\u2019";function Wm(e,t,r){return e.substr(0,t)+r+e.substr(t+1)}function wZ(e,t){var r,n,i,o,s,l,d,h,v,y,b,D,_,k,T,S,m,w,x,L,O;for(x=[],r=0;r=0&&!(x[m].level<=d);m--);if(x.length=m+1,n.type!=="text")continue;i=n.content,s=0,l=i.length;e:for(;s=0)v=i.charCodeAt(o.index-1);else for(m=r-1;m>=0&&!(e[m].type==="softbreak"||e[m].type==="hardbreak");m--)if(!!e[m].content){v=e[m].content.charCodeAt(e[m].content.length-1);break}if(y=32,s=48&&v<=57&&(S=T=!1),T&&S&&(T=b,S=D),!T&&!S){w&&(n.content=Wm(n.content,o.index,hM));continue}if(S){for(m=x.length-1;m>=0&&(h=x[m],!(x[m].level=0;r--)t.tokens[r].type!=="inline"||!OZ.test(t.tokens[r].content)||wZ(t.tokens[r].children,t)}});var Ym=G(($se,mM)=>{"use strict";function Rc(e,t,r){this.type=e,this.tag=t,this.attrs=null,this.map=null,this.nesting=r,this.level=0,this.children=null,this.content="",this.markup="",this.info="",this.meta=null,this.block=!1,this.hidden=!1}Rc.prototype.attrIndex=function(t){var r,n,i;if(!this.attrs)return-1;for(r=this.attrs,n=0,i=r.length;n=0&&(n=this.attrs[r][1]),n};Rc.prototype.attrJoin=function(t,r){var n=this.attrIndex(t);n<0?this.attrPush([t,r]):this.attrs[n][1]=this.attrs[n][1]+" "+r};mM.exports=Rc});var TM=G((ele,bM)=>{"use strict";var NZ=Ym();function yM(e,t,r){this.src=e,this.env=r,this.tokens=[],this.inlineMode=!1,this.md=t}yM.prototype.Token=NZ;bM.exports=yM});var EM=G((tle,_M)=>{"use strict";var DZ=zm(),fO=[["normalize",eM()],["block",rM()],["inline",iM()],["linkify",oM()],["replacements",lM()],["smartquotes",gM()]];function dO(){this.ruler=new DZ;for(var e=0;e{"use strict";var pO=Pt().isSpace;function hO(e,t){var r=e.bMarks[t]+e.tShift[t],n=e.eMarks[t];return e.src.substr(r,n-r)}function SM(e){var t=[],r=0,n=e.length,i,o=!1,s=0,l="";for(i=e.charCodeAt(r);rn||(v=r+1,t.sCount[v]=4||(l=t.bMarks[v]+t.tShift[v],l>=t.eMarks[v])||(L=t.src.charCodeAt(l++),L!==124&&L!==45&&L!==58)||l>=t.eMarks[v]||(O=t.src.charCodeAt(l++),O!==124&&O!==45&&O!==58&&!pO(O))||L===45&&pO(O))return!1;for(;l=4||(y=SM(s),y.length&&y[0]===""&&y.shift(),y.length&&y[y.length-1]===""&&y.pop(),b=y.length,b===0||b!==_.length))return!1;if(i)return!0;for(m=t.parentType,t.parentType="table",x=t.md.block.ruler.getRules("blockquote"),D=t.push("table_open","table",1),D.map=T=[r,0],D=t.push("thead_open","thead",1),D.map=[r,r+1],D=t.push("tr_open","tr",1),D.map=[r,r+1],d=0;d=4)break;for(y=SM(s),y.length&&y[0]===""&&y.shift(),y.length&&y[y.length-1]===""&&y.pop(),v===r+2&&(D=t.push("tbody_open","tbody",1),D.map=S=[r+2,0]),D=t.push("tr_open","tr",1),D.map=[v,v+1],d=0;d{"use strict";wM.exports=function(t,r,n){var i,o,s;if(t.sCount[r]-t.blkIndent<4)return!1;for(o=i=r+1;i=4){i++,o=i;continue}break}return t.line=o,s=t.push("code_block","code",0),s.content=t.getLines(r,o,4+t.blkIndent,!1)+` +`,s.map=[r,t.line],!0}});var xM=G((ile,DM)=>{"use strict";DM.exports=function(t,r,n,i){var o,s,l,d,h,v,y,b=!1,D=t.bMarks[r]+t.tShift[r],_=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||D+3>_||(o=t.src.charCodeAt(D),o!==126&&o!==96)||(h=D,D=t.skipChars(D,o),s=D-h,s<3)||(y=t.src.slice(h,D),l=t.src.slice(D,_),o===96&&l.indexOf(String.fromCharCode(o))>=0))return!1;if(i)return!0;for(d=r;d++,!(d>=n||(D=h=t.bMarks[d]+t.tShift[d],_=t.eMarks[d],D<_&&t.sCount[d]=4)&&(D=t.skipChars(D,o),!(D-h{"use strict";var CM=Pt().isSpace;LM.exports=function(t,r,n,i){var o,s,l,d,h,v,y,b,D,_,k,T,S,m,w,x,L,O,R,M,q=t.lineMax,z=t.bMarks[r]+t.tShift[r],B=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||t.src.charCodeAt(z++)!==62)return!1;if(i)return!0;for(d=D=t.sCount[r]+1,t.src.charCodeAt(z)===32?(z++,d++,D++,o=!1,x=!0):t.src.charCodeAt(z)===9?(x=!0,(t.bsCount[r]+D)%4==3?(z++,d++,D++,o=!1):o=!0):x=!1,_=[t.bMarks[r]],t.bMarks[r]=z;z=B,m=[t.sCount[r]],t.sCount[r]=D-d,w=[t.tShift[r]],t.tShift[r]=z-t.bMarks[r],O=t.md.block.ruler.getRules("blockquote"),S=t.parentType,t.parentType="blockquote",b=r+1;b=B));b++){if(t.src.charCodeAt(z++)===62&&!M){for(d=D=t.sCount[b]+1,t.src.charCodeAt(z)===32?(z++,d++,D++,o=!1,x=!0):t.src.charCodeAt(z)===9?(x=!0,(t.bsCount[b]+D)%4==3?(z++,d++,D++,o=!1):o=!0):x=!1,_.push(t.bMarks[b]),t.bMarks[b]=z;z=B,k.push(t.bsCount[b]),t.bsCount[b]=t.sCount[b]+1+(x?1:0),m.push(t.sCount[b]),t.sCount[b]=D-d,w.push(t.tShift[b]),t.tShift[b]=z-t.bMarks[b];continue}if(v)break;for(L=!1,l=0,h=O.length;l",R.map=y=[r,0],t.md.block.tokenize(t,r,b),R=t.push("blockquote_close","blockquote",-1),R.markup=">",t.lineMax=q,t.parentType=S,y[1]=t.line,l=0;l{"use strict";var xZ=Pt().isSpace;AM.exports=function(t,r,n,i){var o,s,l,d,h=t.bMarks[r]+t.tShift[r],v=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||(o=t.src.charCodeAt(h++),o!==42&&o!==45&&o!==95))return!1;for(s=1;h{"use strict";var jM=Pt().isSpace;function PM(e,t){var r,n,i,o;return n=e.bMarks[t]+e.tShift[t],i=e.eMarks[t],r=e.src.charCodeAt(n++),r!==42&&r!==45&&r!==43||n=o||(r=e.src.charCodeAt(i++),r<48||r>57))return-1;for(;;){if(i>=o)return-1;if(r=e.src.charCodeAt(i++),r>=48&&r<=57){if(i-n>=10)return-1;continue}if(r===41||r===46)break;return-1}return i=4||t.listIndent>=0&&t.sCount[r]-t.listIndent>=4&&t.sCount[r]=t.blkIndent&&(Fe=!0),(B=FM(t,r))>=0){if(y=!0,P=t.bMarks[r]+t.tShift[r],S=Number(t.src.slice(P,B-1)),Fe&&S!==1)return!1}else if((B=PM(t,r))>=0)y=!1;else return!1;if(Fe&&t.skipSpaces(B)>=t.eMarks[r])return!1;if(T=t.src.charCodeAt(B-1),i)return!0;for(k=t.tokens.length,y?(ge=t.push("ordered_list_open","ol",1),S!==1&&(ge.attrs=[["start",S]])):ge=t.push("bullet_list_open","ul",1),ge.map=_=[r,0],ge.markup=String.fromCharCode(T),w=r,Q=!1,xe=t.md.block.ruler.getRules("list"),O=t.parentType,t.parentType="list";w=m?h=1:h=x-v,h>4&&(h=1),d=v+h,ge=t.push("list_item_open","li",1),ge.markup=String.fromCharCode(T),ge.map=b=[r,0],y&&(ge.info=t.src.slice(P,B-1)),q=t.tight,M=t.tShift[r],R=t.sCount[r],L=t.listIndent,t.listIndent=t.blkIndent,t.blkIndent=d,t.tight=!0,t.tShift[r]=s-t.bMarks[r],t.sCount[r]=x,s>=m&&t.isEmpty(r+1)?t.line=Math.min(t.line+2,n):t.md.block.tokenize(t,r,n,!0),(!t.tight||Q)&&(Le=!1),Q=t.line-r>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=L,t.tShift[r]=M,t.sCount[r]=R,t.tight=q,ge=t.push("list_item_close","li",-1),ge.markup=String.fromCharCode(T),w=r=t.line,b[1]=w,s=t.bMarks[r],w>=n||t.sCount[w]=4)break;for(he=!1,l=0,D=xe.length;l{"use strict";var LZ=Pt().normalizeReference,Jm=Pt().isSpace;VM.exports=function(t,r,n,i){var o,s,l,d,h,v,y,b,D,_,k,T,S,m,w,x,L=0,O=t.bMarks[r]+t.tShift[r],R=t.eMarks[r],M=r+1;if(t.sCount[r]-t.blkIndent>=4||t.src.charCodeAt(O)!==91)return!1;for(;++O3)&&!(t.sCount[M]<0)){for(m=!1,v=0,y=w.length;v{"use strict";GM.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]});var gO=G((cle,vO)=>{"use strict";var IZ="[a-zA-Z_:][a-zA-Z0-9:._-]*",AZ="[^\"'=<>`\\x00-\\x20]+",RZ="'[^']*'",jZ='"[^"]*"',PZ="(?:"+AZ+"|"+RZ+"|"+jZ+")",FZ="(?:\\s+"+IZ+"(?:\\s*=\\s*"+PZ+")?)",BM="<[A-Za-z][A-Za-z0-9\\-]*"+FZ+"*\\s*\\/?>",KM="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",MZ="|",qZ="<[?][\\s\\S]*?[?]>",VZ="]*>",UZ="",GZ=new RegExp("^(?:"+BM+"|"+KM+"|"+MZ+"|"+qZ+"|"+VZ+"|"+UZ+")"),QZ=new RegExp("^(?:"+BM+"|"+KM+")");vO.exports.HTML_TAG_RE=GZ;vO.exports.HTML_OPEN_CLOSE_TAG_RE=QZ});var zM=G((fle,HM)=>{"use strict";var BZ=QM(),KZ=gO().HTML_OPEN_CLOSE_TAG_RE,jc=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(KZ.source+"\\s*$"),/^$/,!1]];HM.exports=function(t,r,n,i){var o,s,l,d,h=t.bMarks[r]+t.tShift[r],v=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||!t.md.options.html||t.src.charCodeAt(h)!==60)return!1;for(d=t.src.slice(h,v),o=0;o{"use strict";var WM=Pt().isSpace;YM.exports=function(t,r,n,i){var o,s,l,d,h=t.bMarks[r]+t.tShift[r],v=t.eMarks[r];if(t.sCount[r]-t.blkIndent>=4||(o=t.src.charCodeAt(h),o!==35||h>=v))return!1;for(s=1,o=t.src.charCodeAt(++h);o===35&&h6||hh&&WM(t.src.charCodeAt(l-1))&&(v=l),t.line=r+1,d=t.push("heading_open","h"+String(s),1),d.markup="########".slice(0,s),d.map=[r,t.line],d=t.push("inline","",0),d.content=t.src.slice(h,v).trim(),d.map=[r,t.line],d.children=[],d=t.push("heading_close","h"+String(s),-1),d.markup="########".slice(0,s)),!0)}});var ZM=G((ple,XM)=>{"use strict";XM.exports=function(t,r,n){var i,o,s,l,d,h,v,y,b,D=r+1,_,k=t.md.block.ruler.getRules("paragraph");if(t.sCount[r]-t.blkIndent>=4)return!1;for(_=t.parentType,t.parentType="paragraph";D3)){if(t.sCount[D]>=t.blkIndent&&(h=t.bMarks[D]+t.tShift[D],v=t.eMarks[D],h=v)))){y=b===61?1:2;break}if(!(t.sCount[D]<0)){for(o=!1,s=0,l=k.length;s{"use strict";$M.exports=function(t,r){var n,i,o,s,l,d,h=r+1,v=t.md.block.ruler.getRules("paragraph"),y=t.lineMax;for(d=t.parentType,t.parentType="paragraph";h3)&&!(t.sCount[h]<0)){for(i=!1,o=0,s=v.length;o{"use strict";var tq=Ym(),Xm=Pt().isSpace;function Ya(e,t,r,n){var i,o,s,l,d,h,v,y;for(this.src=e,this.md=t,this.env=r,this.tokens=n,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType="root",this.level=0,this.result="",o=this.src,y=!1,s=l=h=v=0,d=o.length;l0&&this.level++,this.tokens.push(n),n};Ya.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]};Ya.prototype.skipEmptyLines=function(t){for(var r=this.lineMax;tr;)if(!Xm(this.src.charCodeAt(--t)))return t+1;return t};Ya.prototype.skipChars=function(t,r){for(var n=this.src.length;tn;)if(r!==this.src.charCodeAt(--t))return t+1;return t};Ya.prototype.getLines=function(t,r,n,i){var o,s,l,d,h,v,y,b=t;if(t>=r)return"";for(v=new Array(r-t),o=0;bn?v[o]=new Array(s-n+1).join(" ")+this.src.slice(d,h):v[o]=this.src.slice(d,h)}return v.join("")};Ya.prototype.Token=tq;rq.exports=Ya});var aq=G((gle,iq)=>{"use strict";var HZ=zm(),Zm=[["table",OM(),["paragraph","reference"]],["code",NM()],["fence",xM(),["paragraph","reference","blockquote","list"]],["blockquote",IM(),["paragraph","reference","blockquote","list"]],["hr",RM(),["paragraph","reference","blockquote","list"]],["list",qM(),["paragraph","reference","blockquote"]],["reference",UM()],["html_block",zM(),["paragraph","reference","blockquote"]],["heading",JM(),["paragraph","reference","blockquote"]],["lheading",ZM()],["paragraph",eq()]];function $m(){this.ruler=new HZ;for(var e=0;e=r||e.sCount[l]=h){e.line=r;break}for(i=0;i{"use strict";function zZ(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}oq.exports=function(t,r){for(var n=t.pos;n{"use strict";var WZ=Pt().isSpace;sq.exports=function(t,r){var n,i,o,s=t.pos;if(t.src.charCodeAt(s)!==10)return!1;if(n=t.pending.length-1,i=t.posMax,!r)if(n>=0&&t.pending.charCodeAt(n)===32)if(n>=1&&t.pending.charCodeAt(n-1)===32){for(o=n-1;o>=1&&t.pending.charCodeAt(o-1)===32;)o--;t.pending=t.pending.slice(0,o),t.push("hardbreak","br",0)}else t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0);else t.push("softbreak","br",0);for(s++;s{"use strict";var YZ=Pt().isSpace,mO=[];for(yO=0;yO<256;yO++)mO.push(0);var yO;"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(e){mO[e.charCodeAt(0)]=1});cq.exports=function(t,r){var n,i=t.pos,o=t.posMax;if(t.src.charCodeAt(i)!==92)return!1;if(i++,i{"use strict";dq.exports=function(t,r){var n,i,o,s,l,d,h,v,y=t.pos,b=t.src.charCodeAt(y);if(b!==96)return!1;for(n=y,y++,i=t.posMax;y{"use strict";bO.exports.tokenize=function(t,r){var n,i,o,s,l,d=t.pos,h=t.src.charCodeAt(d);if(r||h!==126||(i=t.scanDelims(t.pos,!0),s=i.length,l=String.fromCharCode(h),s<2))return!1;for(s%2&&(o=t.push("text","",0),o.content=l,s--),n=0;n{"use strict";_O.exports.tokenize=function(t,r){var n,i,o,s=t.pos,l=t.src.charCodeAt(s);if(r||l!==95&&l!==42)return!1;for(i=t.scanDelims(t.pos,l===42),n=0;n=0;r--)n=t[r],!(n.marker!==95&&n.marker!==42)&&n.end!==-1&&(i=t[n.end],l=r>0&&t[r-1].end===n.end+1&&t[r-1].marker===n.marker&&t[r-1].token===n.token-1&&t[n.end+1].token===i.token+1,s=String.fromCharCode(n.marker),o=e.tokens[n.token],o.type=l?"strong_open":"em_open",o.tag=l?"strong":"em",o.nesting=1,o.markup=l?s+s:s,o.content="",o=e.tokens[i.token],o.type=l?"strong_close":"em_close",o.tag=l?"strong":"em",o.nesting=-1,o.markup=l?s+s:s,o.content="",l&&(e.tokens[t[r-1].token].content="",e.tokens[t[n.end+1].token].content="",r--))}_O.exports.postProcess=function(t){var r,n=t.tokens_meta,i=t.tokens_meta.length;for(vq(t,t.delimiters),r=0;r{"use strict";var JZ=Pt().normalizeReference,SO=Pt().isSpace;gq.exports=function(t,r){var n,i,o,s,l,d,h,v,y,b="",D="",_=t.pos,k=t.posMax,T=t.pos,S=!0;if(t.src.charCodeAt(t.pos)!==91||(l=t.pos+1,s=t.md.helpers.parseLinkLabel(t,t.pos,!0),s<0))return!1;if(d=s+1,d=k)return!1;if(T=d,h=t.md.helpers.parseLinkDestination(t.src,d,t.posMax),h.ok){for(b=t.md.normalizeLink(h.str),t.md.validateLink(b)?d=h.pos:b="",T=d;d=k||t.src.charCodeAt(d)!==41)&&(S=!0),d++}if(S){if(typeof t.env.references=="undefined")return!1;if(d=0?o=t.src.slice(T,d++):d=s+1):d=s+1,o||(o=t.src.slice(l,s)),v=t.env.references[JZ(o)],!v)return t.pos=_,!1;b=v.href,D=v.title}return r||(t.pos=l,t.posMax=s,y=t.push("link_open","a",1),y.attrs=n=[["href",b]],D&&n.push(["title",D]),t.md.inline.tokenize(t),y=t.push("link_close","a",-1)),t.pos=d,t.posMax=k,!0}});var bq=G((kle,yq)=>{"use strict";var XZ=Pt().normalizeReference,kO=Pt().isSpace;yq.exports=function(t,r){var n,i,o,s,l,d,h,v,y,b,D,_,k,T="",S=t.pos,m=t.posMax;if(t.src.charCodeAt(t.pos)!==33||t.src.charCodeAt(t.pos+1)!==91||(d=t.pos+2,l=t.md.helpers.parseLinkLabel(t,t.pos+1,!1),l<0))return!1;if(h=l+1,h=m)return!1;for(k=h,y=t.md.helpers.parseLinkDestination(t.src,h,t.posMax),y.ok&&(T=t.md.normalizeLink(y.str),t.md.validateLink(T)?h=y.pos:T=""),k=h;h=m||t.src.charCodeAt(h)!==41)return t.pos=S,!1;h++}else{if(typeof t.env.references=="undefined")return!1;if(h=0?s=t.src.slice(k,h++):h=l+1):h=l+1,s||(s=t.src.slice(d,l)),v=t.env.references[XZ(s)],!v)return t.pos=S,!1;T=v.href,b=v.title}return r||(o=t.src.slice(d,l),t.md.inline.parse(o,t.md,t.env,_=[]),D=t.push("image","img",0),D.attrs=n=[["src",T],["alt",""]],D.children=_,D.content=o,b&&n.push(["title",b])),t.pos=h,t.posMax=m,!0}});var _q=G((Ole,Tq)=>{"use strict";var ZZ=/^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,$Z=/^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/;Tq.exports=function(t,r){var n,i,o,s,l,d,h=t.pos;if(t.src.charCodeAt(h)!==60)return!1;for(l=t.pos,d=t.posMax;;){if(++h>=d||(s=t.src.charCodeAt(h),s===60))return!1;if(s===62)break}return n=t.src.slice(l+1,h),$Z.test(n)?(i=t.md.normalizeLink(n),t.md.validateLink(i)?(r||(o=t.push("link_open","a",1),o.attrs=[["href",i]],o.markup="autolink",o.info="auto",o=t.push("text","",0),o.content=t.md.normalizeLinkText(n),o=t.push("link_close","a",-1),o.markup="autolink",o.info="auto"),t.pos+=n.length+2,!0):!1):ZZ.test(n)?(i=t.md.normalizeLink("mailto:"+n),t.md.validateLink(i)?(r||(o=t.push("link_open","a",1),o.attrs=[["href",i]],o.markup="autolink",o.info="auto",o=t.push("text","",0),o.content=t.md.normalizeLinkText(n),o=t.push("link_close","a",-1),o.markup="autolink",o.info="auto"),t.pos+=n.length+2,!0):!1):!1}});var Sq=G((wle,Eq)=>{"use strict";var e$=gO().HTML_TAG_RE;function t$(e){var t=e|32;return t>=97&&t<=122}Eq.exports=function(t,r){var n,i,o,s,l=t.pos;return!t.md.options.html||(o=t.posMax,t.src.charCodeAt(l)!==60||l+2>=o)||(n=t.src.charCodeAt(l+1),n!==33&&n!==63&&n!==47&&!t$(n))||(i=t.src.slice(l).match(e$),!i)?!1:(r||(s=t.push("html_inline","",0),s.content=t.src.slice(l,l+i[0].length)),t.pos+=i[0].length,!0)}});var Nq=G((Nle,wq)=>{"use strict";var kq=oO(),r$=Pt().has,n$=Pt().isValidEntityCode,Oq=Pt().fromCodePoint,i$=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,a$=/^&([a-z][a-z0-9]{1,31});/i;wq.exports=function(t,r){var n,i,o,s=t.pos,l=t.posMax;if(t.src.charCodeAt(s)!==38)return!1;if(s+1{"use strict";function Dq(e,t){var r,n,i,o,s,l,d,h,v={},y=t.length;if(!!y){var b=0,D=-2,_=[];for(r=0;rs;n-=_[n]+1)if(o=t[n],o.marker===i.marker&&o.open&&o.end<0&&(d=!1,(o.close||i.open)&&(o.length+i.length)%3==0&&(o.length%3!=0||i.length%3!=0)&&(d=!0),!d)){h=n>0&&!t[n-1].open?_[n-1]+1:0,_[r]=r-n+h,_[n]=h,i.open=!1,o.end=r,o.close=!1,l=-1,D=-2;break}l!==-1&&(v[i.marker][(i.open?3:0)+(i.length||0)%3]=l)}}}xq.exports=function(t){var r,n=t.tokens_meta,i=t.tokens_meta.length;for(Dq(t,t.delimiters),r=0;r{"use strict";Lq.exports=function(t){var r,n,i=0,o=t.tokens,s=t.tokens.length;for(r=n=0;r0&&i++,o[r].type==="text"&&r+1{"use strict";var OO=Ym(),Aq=Pt().isWhiteSpace,Rq=Pt().isPunctChar,jq=Pt().isMdAsciiPunct;function jp(e,t,r,n){this.src=e,this.env=r,this.md=t,this.tokens=n,this.tokens_meta=Array(n.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending="",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[],this.backticks={},this.backticksScanned=!1}jp.prototype.pushPending=function(){var e=new OO("text","",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending="",e};jp.prototype.push=function(e,t,r){this.pending&&this.pushPending();var n=new OO(e,t,r),i=null;return r<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),n.level=this.level,r>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(n),this.tokens_meta.push(i),n};jp.prototype.scanDelims=function(e,t){var r=e,n,i,o,s,l,d,h,v,y,b=!0,D=!0,_=this.posMax,k=this.src.charCodeAt(e);for(n=e>0?this.src.charCodeAt(e-1):32;r<_&&this.src.charCodeAt(r)===k;)r++;return o=r-e,i=r<_?this.src.charCodeAt(r):32,h=jq(n)||Rq(String.fromCharCode(n)),y=jq(i)||Rq(String.fromCharCode(i)),d=Aq(n),v=Aq(i),v?b=!1:y&&(d||h||(b=!1)),d?D=!1:h&&(v||y||(D=!1)),t?(s=b,l=D):(s=b&&(!D||h),l=D&&(!b||y)),{can_open:s,can_close:l,length:o}};jp.prototype.Token=OO;Pq.exports=jp});var Vq=G((Lle,qq)=>{"use strict";var Mq=zm(),wO=[["text",uq()],["newline",lq()],["escape",fq()],["backticks",pq()],["strikethrough",TO().tokenize],["emphasis",EO().tokenize],["link",mq()],["image",bq()],["autolink",_q()],["html_inline",Sq()],["entity",Nq()]],NO=[["balance_pairs",Cq()],["strikethrough",TO().postProcess],["emphasis",EO().postProcess],["text_collapse",Iq()]];function Pp(){var e;for(this.ruler=new Mq,e=0;e=o)break;continue}e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()};Pp.prototype.parse=function(e,t,r,n){var i,o,s,l=new this.State(e,t,r,n);for(this.tokenize(l),o=this.ruler2.getRules(""),s=o.length,i=0;i{"use strict";Uq.exports=function(e){var t={};t.src_Any=sO().source,t.src_Cc=lO().source,t.src_Z=cO().source,t.src_P=Gm().source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");var r="[><\uFF5C]";return t.src_pseudo_letter="(?:(?!"+r+"|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|"+r+"|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+r+`|[()[\\]{}.,"'?!\\-;]).|\\[(?:(?!`+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+`|["]).)+\\"|\\'(?:(?!`+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]).|"+(e&&e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+").|;(?!"+t.src_ZCc+").|\\!+(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy="(^|"+r+'|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|"+t.src_ZPCc+"))((?![$+<=>^`|\uFF5C])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uFF5C]|"+t.src_ZPCc+"))((?![$+<=>^`|\uFF5C])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}});var Wq=G((Ale,zq)=>{"use strict";function DO(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach(function(r){!r||Object.keys(r).forEach(function(n){e[n]=r[n]})}),e}function ey(e){return Object.prototype.toString.call(e)}function o$(e){return ey(e)==="[object String]"}function u$(e){return ey(e)==="[object Object]"}function s$(e){return ey(e)==="[object RegExp]"}function Qq(e){return ey(e)==="[object Function]"}function l$(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var Bq={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};function c$(e){return Object.keys(e||{}).reduce(function(t,r){return t||Bq.hasOwnProperty(r)},!1)}var f$={"http:":{validate:function(e,t,r){var n=e.slice(t);return r.re.http||(r.re.http=new RegExp("^\\/\\/"+r.re.src_auth+r.re.src_host_port_strict+r.re.src_path,"i")),r.re.http.test(n)?n.match(r.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,t,r){var n=e.slice(t);return r.re.no_http||(r.re.no_http=new RegExp("^"+r.re.src_auth+"(?:localhost|(?:(?:"+r.re.src_domain+")\\.)+"+r.re.src_domain_root+")"+r.re.src_port+r.re.src_host_terminator+r.re.src_path,"i")),r.re.no_http.test(n)?t>=3&&e[t-3]===":"||t>=3&&e[t-3]==="/"?0:n.match(r.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,r){var n=e.slice(t);return r.re.mailto||(r.re.mailto=new RegExp("^"+r.re.src_email_name+"@"+r.re.src_host_strict,"i")),r.re.mailto.test(n)?n.match(r.re.mailto)[0].length:0}}},d$="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",p$="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function h$(e){e.__index__=-1,e.__text_cache__=""}function v$(e){return function(t,r){var n=t.slice(r);return e.test(n)?n.match(e)[0].length:0}}function Kq(){return function(e,t){t.normalize(e)}}function ty(e){var t=e.re=Gq()(e.__opts__),r=e.__tlds__.slice();e.onCompile(),e.__tlds_replaced__||r.push(d$),r.push(t.src_xn),t.src_tlds=r.join("|");function n(l){return l.replace("%TLDS%",t.src_tlds)}t.email_fuzzy=RegExp(n(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(n(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(n(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(n(t.tpl_host_fuzzy_test),"i");var i=[];e.__compiled__={};function o(l,d){throw new Error('(LinkifyIt) Invalid schema "'+l+'": '+d)}Object.keys(e.__schemas__).forEach(function(l){var d=e.__schemas__[l];if(d!==null){var h={validate:null,link:null};if(e.__compiled__[l]=h,u$(d)){s$(d.validate)?h.validate=v$(d.validate):Qq(d.validate)?h.validate=d.validate:o(l,d),Qq(d.normalize)?h.normalize=d.normalize:d.normalize?o(l,d):h.normalize=Kq();return}if(o$(d)){i.push(l);return}o(l,d)}}),i.forEach(function(l){!e.__compiled__[e.__schemas__[l]]||(e.__compiled__[l].validate=e.__compiled__[e.__schemas__[l]].validate,e.__compiled__[l].normalize=e.__compiled__[e.__schemas__[l]].normalize)}),e.__compiled__[""]={validate:null,normalize:Kq()};var s=Object.keys(e.__compiled__).filter(function(l){return l.length>0&&e.__compiled__[l]}).map(l$).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><\uFF5C]|"+t.src_ZPCc+"))("+s+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><\uFF5C]|"+t.src_ZPCc+"))("+s+")","ig"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),h$(e)}function g$(e,t){var r=e.__index__,n=e.__last_index__,i=e.__text_cache__.slice(r,n);this.schema=e.__schema__.toLowerCase(),this.index=r+t,this.lastIndex=n+t,this.raw=i,this.text=i,this.url=i}function Hq(e,t){var r=new g$(e,t);return e.__compiled__[r.schema].normalize(r,e),r}function Zi(e,t){if(!(this instanceof Zi))return new Zi(e,t);t||c$(e)&&(t=e,e={}),this.__opts__=DO({},Bq,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=DO({},f$,e),this.__compiled__={},this.__tlds__=p$,this.__tlds_replaced__=!1,this.re={},ty(this)}Zi.prototype.add=function(t,r){return this.__schemas__[t]=r,ty(this),this};Zi.prototype.set=function(t){return this.__opts__=DO(this.__opts__,t),this};Zi.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;var r,n,i,o,s,l,d,h,v;if(this.re.schema_test.test(t)){for(d=this.re.schema_search,d.lastIndex=0;(r=d.exec(t))!==null;)if(o=this.testSchemaAt(t,r[2],d.lastIndex),o){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+o;break}}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(h=t.search(this.re.host_fuzzy_test),h>=0&&(this.__index__<0||h=0&&(i=t.match(this.re.email_fuzzy))!==null&&(s=i.index+i[1].length,l=i.index+i[0].length,(this.__index__<0||sthis.__last_index__)&&(this.__schema__="mailto:",this.__index__=s,this.__last_index__=l))),this.__index__>=0};Zi.prototype.pretest=function(t){return this.re.pretest.test(t)};Zi.prototype.testSchemaAt=function(t,r,n){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(t,n,this):0};Zi.prototype.match=function(t){var r=0,n=[];this.__index__>=0&&this.__text_cache__===t&&(n.push(Hq(this,r)),r=this.__last_index__);for(var i=r?t.slice(r):t;this.test(i);)n.push(Hq(this,r)),i=i.slice(this.__last_index__),r+=this.__last_index__;return n.length?n:null};Zi.prototype.tlds=function(t,r){return t=Array.isArray(t)?t:[t],r?(this.__tlds__=this.__tlds__.concat(t).sort().filter(function(n,i,o){return n!==o[i-1]}).reverse(),ty(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,ty(this),this)};Zi.prototype.normalize=function(t){t.schema||(t.url="http://"+t.url),t.schema==="mailto:"&&!/^mailto:/i.test(t.url)&&(t.url="mailto:"+t.url)};Zi.prototype.onCompile=function(){};zq.exports=Zi});var aV=G((Rle,iV)=>{"use strict";var Pc=2147483647,Ja=36,xO=1,Fp=26,m$=38,y$=700,Yq=72,Jq=128,Xq="-",b$=/^xn--/,T$=/[^\0-\x7E]/,_$=/[\x2E\u3002\uFF0E\uFF61]/g,E$={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},CO=Ja-xO,Xa=Math.floor,LO=String.fromCharCode;function Ms(e){throw new RangeError(E$[e])}function S$(e,t){let r=[],n=e.length;for(;n--;)r[n]=t(e[n]);return r}function Zq(e,t){let r=e.split("@"),n="";r.length>1&&(n=r[0]+"@",e=r[1]),e=e.replace(_$,".");let i=e.split("."),o=S$(i,t).join(".");return n+o}function $q(e){let t=[],r=0,n=e.length;for(;r=55296&&i<=56319&&rString.fromCodePoint(...e),O$=function(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:Ja},eV=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},tV=function(e,t,r){let n=0;for(e=r?Xa(e/y$):e>>1,e+=Xa(e/t);e>CO*Fp>>1;n+=Ja)e=Xa(e/CO);return Xa(n+(CO+1)*e/(e+m$))},rV=function(e){let t=[],r=e.length,n=0,i=Jq,o=Yq,s=e.lastIndexOf(Xq);s<0&&(s=0);for(let l=0;l=128&&Ms("not-basic"),t.push(e.charCodeAt(l));for(let l=s>0?s+1:0;l=r&&Ms("invalid-input");let b=O$(e.charCodeAt(l++));(b>=Ja||b>Xa((Pc-n)/v))&&Ms("overflow"),n+=b*v;let D=y<=o?xO:y>=o+Fp?Fp:y-o;if(bXa(Pc/_)&&Ms("overflow"),v*=_}let h=t.length+1;o=tV(n-d,h,d==0),Xa(n/h)>Pc-i&&Ms("overflow"),i+=Xa(n/h),n%=h,t.splice(n++,0,i)}return String.fromCodePoint(...t)},nV=function(e){let t=[];e=$q(e);let r=e.length,n=Jq,i=0,o=Yq;for(let d of e)d<128&&t.push(LO(d));let s=t.length,l=s;for(s&&t.push(Xq);l=n&&vXa((Pc-i)/h)&&Ms("overflow"),i+=(d-n)*h,n=d;for(let v of e)if(vPc&&Ms("overflow"),v==n){let y=i;for(let b=Ja;;b+=Ja){let D=b<=o?xO:b>=o+Fp?Fp:b-o;if(y{"use strict";oV.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}}});var lV=G((Ple,sV)=>{"use strict";sV.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","text_collapse"]}}}});var fV=G((Fle,cV)=>{"use strict";cV.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201C\u201D\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","text_collapse"]}}}});var vV=G((Mle,hV)=>{"use strict";var Mp=Pt(),x$=YF(),C$=XF(),L$=EM(),I$=aq(),A$=Vq(),R$=Wq(),qs=uO(),dV=aV(),j$={default:uV(),zero:lV(),commonmark:fV()},P$=/^(vbscript|javascript|file|data):/,F$=/^data:image\/(gif|png|jpeg|webp);/;function M$(e){var t=e.trim().toLowerCase();return P$.test(t)?!!F$.test(t):!0}var pV=["http:","https:","mailto:"];function q$(e){var t=qs.parse(e,!0);if(t.hostname&&(!t.protocol||pV.indexOf(t.protocol)>=0))try{t.hostname=dV.toASCII(t.hostname)}catch(r){}return qs.encode(qs.format(t))}function V$(e){var t=qs.parse(e,!0);if(t.hostname&&(!t.protocol||pV.indexOf(t.protocol)>=0))try{t.hostname=dV.toUnicode(t.hostname)}catch(r){}return qs.decode(qs.format(t),qs.decode.defaultChars+"%")}function $i(e,t){if(!(this instanceof $i))return new $i(e,t);t||Mp.isString(e)||(t=e||{},e="default"),this.inline=new A$,this.block=new I$,this.core=new L$,this.renderer=new C$,this.linkify=new R$,this.validateLink=M$,this.normalizeLink=q$,this.normalizeLinkText=V$,this.utils=Mp,this.helpers=Mp.assign({},x$),this.options={},this.configure(e),t&&this.set(t)}$i.prototype.set=function(e){return Mp.assign(this.options,e),this};$i.prototype.configure=function(e){var t=this,r;if(Mp.isString(e)&&(r=e,e=j$[r],!e))throw new Error('Wrong `markdown-it` preset "'+r+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach(function(n){e.components[n].rules&&t[n].ruler.enableOnly(e.components[n].rules),e.components[n].rules2&&t[n].ruler2.enableOnly(e.components[n].rules2)}),this};$i.prototype.enable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(i){r=r.concat(this[i].ruler.enable(e,!0))},this),r=r.concat(this.inline.ruler2.enable(e,!0));var n=e.filter(function(i){return r.indexOf(i)<0});if(n.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this};$i.prototype.disable=function(e,t){var r=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach(function(i){r=r.concat(this[i].ruler.disable(e,!0))},this),r=r.concat(this.inline.ruler2.disable(e,!0));var n=e.filter(function(i){return r.indexOf(i)<0});if(n.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this};$i.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this};$i.prototype.parse=function(e,t){if(typeof e!="string")throw new Error("Input data should be a String");var r=new this.core.State(e,this,t);return this.core.process(r),r.tokens};$i.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)};$i.prototype.parseInline=function(e,t){var r=new this.core.State(e,this,t);return r.inlineMode=!0,this.core.process(r),r.tokens};$i.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)};hV.exports=$i});var ry=G((qle,gV)=>{"use strict";gV.exports=vV()});var bV=G((Ule,yV)=>{"use strict";var Q$=/["'&<>]/;yV.exports=B$;function B$(e){var t=""+e,r=Q$.exec(t);if(!r)return t;var n,i="",o=0,s=0;for(o=r.index;o{(function(e,t){typeof IO=="object"&&typeof AO!="undefined"?AO.exports=t():typeof define=="function"&&define.amd?define(t):(e=e||self,e.CodeMirror=t())})(IO,function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),s=n||i||o,l=s&&(n?document.documentMode||6:+(o||i)[1]),d=!o&&/WebKit\//.test(e),h=d&&/Qt\/\d+\.\d+/.test(e),v=!o&&/Chrome\/(\d+)/.exec(e),y=v&&+v[1],b=/Opera\//.test(e),D=/Apple Computer/.test(navigator.vendor),_=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),k=/PhantomJS/.test(e),T=D&&(/Mobile\/\w+/.test(e)||navigator.maxTouchPoints>2),S=/Android/.test(e),m=T||S||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),w=T||/Mac/.test(t),x=/\bCrOS\b/.test(e),L=/win/i.test(t),O=b&&e.match(/Version\/(\d*\.\d*)/);O&&(O=Number(O[1])),O&&O>=15&&(b=!1,d=!0);var R=w&&(h||b&&(O==null||O<12.11)),M=r||s&&l>=9;function q(a){return new RegExp("(^|\\s)"+a+"(?:$|\\s)\\s*")}var z=function(a,u){var f=a.className,c=q(u).exec(f);if(c){var p=f.slice(c.index+c[0].length);a.className=f.slice(0,c.index)+(p?c[1]+p:"")}};function B(a){for(var u=a.childNodes.length;u>0;--u)a.removeChild(a.firstChild);return a}function Q(a,u){return B(a).appendChild(u)}function P(a,u,f,c){var p=document.createElement(a);if(f&&(p.className=f),c&&(p.style.cssText=c),typeof u=="string")p.appendChild(document.createTextNode(u));else if(u)for(var g=0;g=u)return E+(u-g);E+=N-g,E+=f-E%f,g=N+1}}var ce=function(){this.id=null,this.f=null,this.time=0,this.handler=Ot(this.onTimeout,this)};ce.prototype.onTimeout=function(a){a.id=0,a.time<=+new Date?a.f():setTimeout(a.handler,a.time-+new Date)},ce.prototype.set=function(a,u){this.f=u;var f=+new Date+a;(!this.id||f=u)return c+Math.min(E,u-p);if(p+=g-c,p+=f-p%f,c=g+1,p>=u)return c}}var me=[""];function fe(a){for(;me.length<=a;)me.push(se(me)+" ");return me[a]}function se(a){return a[a.length-1]}function Ue(a,u){for(var f=[],c=0;c"\x80"&&(a.toUpperCase()!=a.toLowerCase()||Dn.test(a))}function dn(a,u){return u?u.source.indexOf("\\w")>-1&&Ei(a)?!0:u.test(a):Ei(a)}function Hn(a){for(var u in a)if(a.hasOwnProperty(u)&&a[u])return!1;return!0}var pn=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function Pi(a){return a.charCodeAt(0)>=768&&pn.test(a)}function Qr(a,u,f){for(;(f<0?u>0:uf?-1:1;;){if(u==f)return u;var p=(u+f)/2,g=c<0?Math.ceil(p):Math.floor(p);if(g==u)return a(g)?u:f;a(g)?f=g:u=g+c}}function hn(a,u,f,c){if(!a)return c(u,f,"ltr",0);for(var p=!1,g=0;gu||u==f&&E.to==u)&&(c(Math.max(E.from,u),Math.min(E.to,f),E.level==1?"rtl":"ltr",g),p=!0)}p||c(u,f,"ltr")}var zn=null;function vr(a,u,f){var c;zn=null;for(var p=0;pu)return p;g.to==u&&(g.from!=g.to&&f=="before"?c=p:zn=p),g.from==u&&(g.from!=g.to&&f!="before"?c=p:zn=p)}return c!=null?c:zn}var Ro=function(){var a="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",u="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function f(I){return I<=247?a.charAt(I):1424<=I&&I<=1524?"R":1536<=I&&I<=1785?u.charAt(I-1536):1774<=I&&I<=2220?"r":8192<=I&&I<=8203?"w":I==8204?"b":"L"}var c=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,p=/[stwN]/,g=/[LRr]/,E=/[Lb1n]/,N=/[1n]/;function C(I,U,K){this.level=I,this.from=U,this.to=K}return function(I,U){var K=U=="ltr"?"L":"R";if(I.length==0||U=="ltr"&&!c.test(I))return!1;for(var $=I.length,X=[],ae=0;ae<$;++ae)X.push(f(I.charCodeAt(ae)));for(var le=0,pe=K;le<$;++le){var be=X[le];be=="m"?X[le]=pe:pe=be}for(var Ne=0,Te=K;Ne<$;++Ne){var Ce=X[Ne];Ce=="1"&&Te=="r"?X[Ne]="n":g.test(Ce)&&(Te=Ce,Ce=="r"&&(X[Ne]="R"))}for(var Ge=1,qe=X[0];Ge<$-1;++Ge){var lt=X[Ge];lt=="+"&&qe=="1"&&X[Ge+1]=="1"?X[Ge]="1":lt==","&&qe==X[Ge+1]&&(qe=="1"||qe=="n")&&(X[Ge]=qe),qe=lt}for(var Ht=0;Ht<$;++Ht){var zr=X[Ht];if(zr==",")X[Ht]="N";else if(zr=="%"){var lr=void 0;for(lr=Ht+1;lr<$&&X[lr]=="%";++lr);for(var li=Ht&&X[Ht-1]=="!"||lr<$&&X[lr]=="1"?"1":"N",Jn=Ht;Jn-1&&(c[u]=p.slice(0,g).concat(p.slice(g+1)))}}}function Ft(a,u){var f=Gu(a,u);if(!!f.length)for(var c=Array.prototype.slice.call(arguments,2),p=0;p0}function un(a){a.prototype.on=function(u,f){_e(this,u,f)},a.prototype.off=function(u,f){Ar(this,u,f)}}function ee(a){a.preventDefault?a.preventDefault():a.returnValue=!1}function F(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=!0}function Y(a){return a.defaultPrevented!=null?a.defaultPrevented:a.returnValue==!1}function J(a){ee(a),F(a)}function V(a){return a.target||a.srcElement}function A(a){var u=a.which;return u==null&&(a.button&1?u=1:a.button&2?u=3:a.button&4&&(u=2)),w&&a.ctrlKey&&u==1&&(u=3),u}var re=function(){if(s&&l<9)return!1;var a=P("div");return"draggable"in a||"dragDrop"in a}(),ue;function Ze(a){if(ue==null){var u=P("span","\u200B");Q(a,P("span",[u,document.createTextNode("x")])),a.firstChild.offsetHeight!=0&&(ue=u.offsetWidth<=1&&u.offsetHeight>2&&!(s&&l<8))}var f=ue?P("span","\u200B"):P("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return f.setAttribute("cm-text",""),f}var Ut;function Rt(a){if(Ut!=null)return Ut;var u=Q(a,document.createTextNode("A\u062EA")),f=xe(u,0,1).getBoundingClientRect(),c=xe(u,1,2).getBoundingClientRect();return B(a),!f||f.left==f.right?!1:Ut=c.right-f.right<3}var vn=` -b`.split(/\n/).length!=3?function(i){for(var u=0,f=[],c=i.length;u<=c;){var p=i.indexOf(` -`,u);p==-1&&(p=i.length);var g=i.slice(u,i.charAt(p-1)=="\r"?p-1:p),E=g.indexOf("\r");E!=-1?(f.push(g.slice(0,E)),u+=E+1):(f.push(g),u=p+1)}return f}:function(i){return i.split(/\r\n?|\n/)},Er=window.getSelection?function(i){try{return i.selectionStart!=i.selectionEnd}catch(u){return!1}}:function(i){var u;try{u=i.ownerDocument.selection.createRange()}catch(f){}return!u||u.parentElement()!=i?!1:u.compareEndPoints("StartToEnd",u)!=0},_r=function(){var i=j("div");return"oncopy"in i?!0:(i.setAttribute("oncopy","return;"),typeof i.oncopy=="function")}(),He=null;function Ki(i){if(He!=null)return He;var u=G(i,j("span","x")),f=u.getBoundingClientRect(),c=ke(u,0,1).getBoundingClientRect();return He=Math.abs(f.left-c.left)>1}var fn={},Hi={};function Kp(i,u){arguments.length>2&&(u.dependencies=Array.prototype.slice.call(arguments,2)),fn[i]=u}function xs(i,u){Hi[i]=u}function Vn(i){if(typeof i=="string"&&Hi.hasOwnProperty(i))i=Hi[i];else if(i&&typeof i.name=="string"&&Hi.hasOwnProperty(i.name)){var u=Hi[i.name];typeof u=="string"&&(u={name:u}),i=at(u,i),i.name=u.name}else{if(typeof i=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(i))return Vn("application/xml");if(typeof i=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(i))return Vn("application/json")}return typeof i=="string"?{name:i}:i||{name:"null"}}function Ha(i,u){u=Vn(u);var f=fn[u.name];if(!f)return Ha(i,"text/plain");var c=f(i,u);if(Eo.hasOwnProperty(u.name)){var p=Eo[u.name];for(var g in p)!p.hasOwnProperty(g)||(c.hasOwnProperty(g)&&(c["_"+g]=c[g]),c[g]=p[g])}if(c.name=u.name,u.helperType&&(c.helperType=u.helperType),u.modeProps)for(var E in u.modeProps)c[E]=u.modeProps[E];return c}var Eo={};function Hp(i,u){var f=Eo.hasOwnProperty(i)?Eo[i]:Eo[i]={};Ie(u,f)}function za(i,u){if(u===!0)return u;if(i.copyState)return i.copyState(u);var f={};for(var c in u){var p=u[c];p instanceof Array&&(p=p.concat([])),f[c]=p}return f}function _o(i,u){for(var f;i.innerMode&&(f=i.innerMode(u),!(!f||f.mode==i));)u=f.state,i=f.mode;return f||{mode:i,state:u}}function Mc(i,u,f){return i.startState?i.startState(u,f):!0}var ir=function(i,u,f){this.pos=this.start=0,this.string=i,this.tabSize=u||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=f};ir.prototype.eol=function(){return this.pos>=this.string.length},ir.prototype.sol=function(){return this.pos==this.lineStart},ir.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},ir.prototype.next=function(){if(this.posu},ir.prototype.eatSpace=function(){for(var i=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>i},ir.prototype.skipToEnd=function(){this.pos=this.string.length},ir.prototype.skipTo=function(i){var u=this.string.indexOf(i,this.pos);if(u>-1)return this.pos=u,!0},ir.prototype.backUp=function(i){this.pos-=i},ir.prototype.column=function(){return this.lastColumnPos0?null:(g&&u!==!1&&(this.pos+=g[0].length),g)}},ir.prototype.current=function(){return this.string.slice(this.start,this.pos)},ir.prototype.hideFirstChars=function(i,u){this.lineStart+=i;try{return u()}finally{this.lineStart-=i}},ir.prototype.lookAhead=function(i){var u=this.lineOracle;return u&&u.lookAhead(i)},ir.prototype.baseToken=function(){var i=this.lineOracle;return i&&i.baseToken(this.pos)};function Ae(i,u){if(u-=i.first,u<0||u>=i.size)throw new Error("There is no line "+(u+i.first)+" in the document.");for(var f=i;!f.lines;)for(var c=0;;++c){var p=f.children[c],g=p.chunkSize();if(u=i.first&&uf?W(f,Ae(i,f).text.length):S3(u,Ae(i,u.line).text.length)}function S3(i,u){var f=i.ch;return f==null||f>u?W(i.line,u):f<0?W(i.line,0):i}function tk(i,u){for(var f=[],c=0;cthis.maxLookAhead&&(this.maxLookAhead=i),u},da.prototype.baseToken=function(i){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=i;)this.baseTokenPos+=2;var u=this.baseTokens[this.baseTokenPos+1];return{type:u&&u.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-i}},da.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},da.fromSaved=function(i,u,f){return u instanceof zp?new da(i,za(i.mode,u.state),f,u.lookAhead):new da(i,za(i.mode,u),f)},da.prototype.save=function(i){var u=i!==!1?za(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new zp(u,this.maxLookAhead):u};function rk(i,u,f,c){var p=[i.state.modeGen],g={};sk(i,u.text,i.doc.mode,f,function(x,V){return p.push(x,V)},g,c);for(var E=f.state,O=function(x){f.baseTokens=p;var V=i.state.overlays[x],K=1,$=0;f.state=!0,sk(i,u.text,V.mode,f,function(X,ne){for(var ae=K;$X&&p.splice(K,1,X,p[K+1],le),K+=2,$=Math.min(X,le)}if(!!ne)if(V.opaque)p.splice(ae,K-ae,X,"overlay "+ne),K=ae+2;else for(;aei.options.maxHighlightLength&&za(i.doc.mode,c.state),g=rk(i,u,c);p&&(c.state=p),u.stateAfter=c.save(!p),u.styles=g.styles,g.classes?u.styleClasses=g.classes:u.styleClasses&&(u.styleClasses=null),f===i.doc.highlightFrontier&&(i.doc.modeFrontier=Math.max(i.doc.modeFrontier,++i.doc.highlightFrontier))}return u.styles}function qc(i,u,f){var c=i.doc,p=i.display;if(!c.mode.startState)return new da(c,!0,u);var g=D3(i,u,f),E=g>c.first&&Ae(c,g-1).stateAfter,O=E?da.fromSaved(c,E,g):new da(c,Mc(c.mode),g);return c.iter(g,u,function(N){py(i,N.text,O);var x=O.line;N.stateAfter=x==u-1||x%5==0||x>=p.viewFrom&&xu.start)return g}throw new Error("Mode "+i.name+" failed to advance stream.")}var ak=function(i,u,f){this.start=i.start,this.end=i.pos,this.string=i.current(),this.type=u||null,this.state=f};function ok(i,u,f,c){var p=i.doc,g=p.mode,E;u=qe(p,u);var O=Ae(p,u.line),N=qc(i,u.line,f),x=new ir(O.text,i.options.tabSize,N),V;for(c&&(V=[]);(c||x.posi.options.maxHighlightLength?(O=!1,E&&py(i,u,c,V.pos),V.pos=u.length,K=null):K=uk(hy(f,V,c.state,$),g),$){var X=$[0].name;X&&(K="m-"+(K?X+" "+K:X))}if(!O||x!=K){for(;NE;--O){if(O<=g.first)return g.first;var N=Ae(g,O-1),x=N.stateAfter;if(x&&(!f||O+(x instanceof zp?x.lookAhead:0)<=g.modeFrontier))return O;var V=De(N.text,null,i.options.tabSize);(p==null||c>V)&&(p=O-1,c=V)}return p}function k3(i,u){if(i.modeFrontier=Math.min(i.modeFrontier,u),!(i.highlightFrontierf;c--){var p=Ae(i,c).stateAfter;if(p&&(!(p instanceof zp)||c+p.lookAhead=u:g.to>u);(c||(c=[])).push(new Wp(E,g.from,N?null:g.to))}}return c}function L3(i,u,f){var c;if(i)for(var p=0;p=u:g.to>u);if(O||g.from==u&&E.type=="bookmark"&&(!f||g.marker.insertLeft)){var N=g.from==null||(E.inclusiveLeft?g.from<=u:g.from0&&O)for(var Oe=0;Oe0)){var V=[N,1],K=re(x.from,O.from),$=re(x.to,O.to);(K<0||!E.inclusiveLeft&&!K)&&V.push({from:x.from,to:O.from}),($>0||!E.inclusiveRight&&!$)&&V.push({from:O.to,to:x.to}),p.splice.apply(p,V),N+=V.length-3}}return p}function fk(i){var u=i.markedSpans;if(!!u){for(var f=0;fu)&&(!c||gy(c,g.marker)<0)&&(c=g.marker)}return c}function vk(i,u,f,c,p){var g=Ae(i,u),E=Ya&&g.markedSpans;if(E)for(var O=0;O=0&&K<=0||V<=0&&K>=0)&&(V<=0&&(N.marker.inclusiveRight&&p.inclusiveLeft?re(x.to,f)>=0:re(x.to,f)>0)||V>=0&&(N.marker.inclusiveRight&&p.inclusiveLeft?re(x.from,c)<=0:re(x.from,c)<0)))return!0}}}function zi(i){for(var u;u=hk(i);)i=u.find(-1,!0).line;return i}function R3(i){for(var u;u=Xp(i);)i=u.find(1,!0).line;return i}function F3(i){for(var u,f;u=Xp(i);)i=u.find(1,!0).line,(f||(f=[])).push(i);return f}function my(i,u){var f=Ae(i,u),c=zi(f);return f==c?u:yt(c)}function gk(i,u){if(u>i.lastLine())return u;var f=Ae(i,u),c;if(!So(i,f))return u;for(;c=Xp(f);)f=c.find(1,!0).line;return yt(f)+1}function So(i,u){var f=Ya&&u.markedSpans;if(f){for(var c=void 0,p=0;pu.maxLineLength&&(u.maxLineLength=p,u.maxLine=c)})}var Rs=function(i,u,f){this.text=i,dk(this,u),this.height=f?f(this):1};Rs.prototype.lineNo=function(){return yt(this)},zr(Rs);function j3(i,u,f,c){i.text=u,i.stateAfter&&(i.stateAfter=null),i.styles&&(i.styles=null),i.order!=null&&(i.order=null),fk(i),dk(i,f);var p=c?c(i):1;p!=i.height&&bi(i,p)}function P3(i){i.parent=null,fk(i)}var M3={},q3={};function mk(i,u){if(!i||/^\s*$/.test(i))return null;var f=u.addModeClass?q3:M3;return f[i]||(f[i]=i.replace(/\S+/g,"cm-$&"))}function yk(i,u){var f=ce("span",null,null,d?"padding-right: .1px":null),c={pre:ce("pre",[f],"CodeMirror-line"),content:f,col:0,pos:0,cm:i,trailingSpace:!1,splitSpaces:i.getOption("lineWrapping")};u.measure={};for(var p=0;p<=(u.rest?u.rest.length:0);p++){var g=p?u.rest[p-1]:u.line,E=void 0;c.pos=0,c.addToken=V3,kt(i.display.measure)&&(E=Bn(g,i.doc.direction))&&(c.addToken=G3(c.addToken,E)),c.map=[];var O=u!=i.display.externalMeasured&&yt(g);Q3(g,c,nk(i,g,O)),g.styleClasses&&(g.styleClasses.bgClass&&(c.bgClass=Ve(g.styleClasses.bgClass,c.bgClass||"")),g.styleClasses.textClass&&(c.textClass=Ve(g.styleClasses.textClass,c.textClass||""))),c.map.length==0&&c.map.push(0,0,c.content.appendChild(Qe(i.display.measure))),p==0?(u.measure.map=c.map,u.measure.cache={}):((u.measure.maps||(u.measure.maps=[])).push(c.map),(u.measure.caches||(u.measure.caches=[])).push({}))}if(d){var N=c.content.lastChild;(/\bcm-tab\b/.test(N.className)||N.querySelector&&N.querySelector(".cm-tab"))&&(c.content.className="cm-tab-wrap-hack")}return At(i,"renderLine",i,u.line,c.pre),c.pre.className&&(c.textClass=Ve(c.pre.className,c.textClass||"")),c}function B3(i){var u=j("span","\u2022","cm-invalidchar");return u.title="\\u"+i.charCodeAt(0).toString(16),u.setAttribute("aria-label",u.title),u}function V3(i,u,f,c,p,g,E){if(!!u){var O=i.splitSpaces?U3(u,i.trailingSpace):u,N=i.cm.state.specialChars,x=!1,V;if(!N.test(u))i.col+=u.length,V=document.createTextNode(O),i.map.push(i.pos,i.pos+u.length,V),s&&l<9&&(x=!0),i.pos+=u.length;else{V=document.createDocumentFragment();for(var K=0;;){N.lastIndex=K;var $=N.exec(u),X=$?$.index-K:u.length-K;if(X){var ne=document.createTextNode(O.slice(K,K+X));s&&l<9?V.appendChild(j("span",[ne])):V.appendChild(ne),i.map.push(i.pos,i.pos+X,ne),i.col+=X,i.pos+=X}if(!$)break;K+=X+1;var ae=void 0;if($[0]==" "){var le=i.cm.options.tabSize,he=le-i.col%le;ae=V.appendChild(j("span",fe(he),"cm-tab")),ae.setAttribute("role","presentation"),ae.setAttribute("cm-text"," "),i.col+=he}else $[0]=="\r"||$[0]==` -`?(ae=V.appendChild(j("span",$[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),ae.setAttribute("cm-text",$[0]),i.col+=1):(ae=i.cm.options.specialCharPlaceholder($[0]),ae.setAttribute("cm-text",$[0]),s&&l<9?V.appendChild(j("span",[ae])):V.appendChild(ae),i.col+=1);i.map.push(i.pos,i.pos+1,ae),i.pos++}}if(i.trailingSpace=O.charCodeAt(u.length-1)==32,f||c||p||x||g||E){var Ee=f||"";c&&(Ee+=c),p&&(Ee+=p);var ve=j("span",[V],Ee,g);if(E)for(var Oe in E)E.hasOwnProperty(Oe)&&Oe!="style"&&Oe!="class"&&ve.setAttribute(Oe,E[Oe]);return i.content.appendChild(ve)}i.content.appendChild(V)}}function U3(i,u){if(i.length>1&&!/ /.test(i))return i;for(var f=u,c="",p=0;px&&K.from<=x));$++);if(K.to>=V)return i(f,c,p,g,E,O,N);i(f,c.slice(0,K.to-x),p,g,null,O,N),g=null,c=c.slice(K.to-x),x=K.to}}}function bk(i,u,f,c){var p=!c&&f.widgetNode;p&&i.map.push(i.pos,i.pos+u,p),!c&&i.cm.display.input.needsContentAttribute&&(p||(p=i.content.appendChild(document.createElement("span"))),p.setAttribute("cm-marker",f.id)),p&&(i.cm.display.input.setUneditable(p),i.content.appendChild(p)),i.pos+=u,i.trailingSpace=!1}function Q3(i,u,f){var c=i.markedSpans,p=i.text,g=0;if(!c){for(var E=1;EN||Xe.collapsed&&Re.to==N&&Re.from==N)){if(Re.to!=null&&Re.to!=N&&X>Re.to&&(X=Re.to,ae=""),Xe.className&&(ne+=" "+Xe.className),Xe.css&&($=($?$+";":"")+Xe.css),Xe.startStyle&&Re.from==N&&(le+=" "+Xe.startStyle),Xe.endStyle&&Re.to==X&&(Oe||(Oe=[])).push(Xe.endStyle,Re.to),Xe.title&&((Ee||(Ee={})).title=Xe.title),Xe.attributes)for(var Pt in Xe.attributes)(Ee||(Ee={}))[Pt]=Xe.attributes[Pt];Xe.collapsed&&(!he||gy(he.marker,Xe)<0)&&(he=Re)}else Re.from>N&&X>Re.from&&(X=Re.from)}if(Oe)for(var Rr=0;Rr=O)break;for(var Gn=Math.min(O,X);;){if(V){var An=N+V.length;if(!he){var hr=An>Gn?V.slice(0,Gn-N):V;u.addToken(u,hr,K?K+ne:ne,le,N+hr.length==X?ae:"",$,Ee)}if(An>=Gn){V=V.slice(Gn-N),N=Gn;break}N=An,le=""}V=p.slice(g,g=f[x++]),K=mk(f[x++],u.cm.options)}}}function Tk(i,u,f){this.line=u,this.rest=F3(u),this.size=this.rest?yt(ue(this.rest))-f+1:1,this.node=this.text=null,this.hidden=So(i,u)}function $p(i,u,f){for(var c=[],p,g=u;g2&&g.push((N.bottom+x.top)/2-f.top)}}g.push(f.bottom-f.top)}}function Ck(i,u,f){if(i.line==u)return{map:i.measure.map,cache:i.measure.cache};if(i.rest){for(var c=0;cf)return{map:i.measure.maps[p],cache:i.measure.caches[p],before:!0}}}function tB(i,u){u=zi(u);var f=yt(u),c=i.display.externalMeasured=new Tk(i.doc,u,f);c.lineN=f;var p=c.built=yk(i,c);return c.text=p.pre,G(i.display.lineMeasure,p.pre),c}function wk(i,u,f,c){return ha(i,js(i,u),f,c)}function Sy(i,u){if(u>=i.display.viewFrom&&u=f.lineN&&uu)&&(g=N-O,p=g-1,u>=N&&(E="right")),p!=null){if(c=i[x+2],O==N&&f==(c.insertLeft?"left":"right")&&(E=f),f=="left"&&p==0)for(;x&&i[x-2]==i[x-3]&&i[x-1].insertLeft;)c=i[(x-=3)+2],E="left";if(f=="right"&&p==N-O)for(;x=0&&(f=i[p]).left==f.right;p--);return f}function nB(i,u,f,c){var p=Nk(u.map,f,c),g=p.node,E=p.start,O=p.end,N=p.collapse,x;if(g.nodeType==3){for(var V=0;V<4;V++){for(;E&&Ka(u.line.text.charAt(p.coverStart+E));)--E;for(;p.coverStart+O0&&(N=c="right");var K;i.options.lineWrapping&&(K=g.getClientRects()).length>1?x=K[c=="right"?K.length-1:0]:x=g.getBoundingClientRect()}if(s&&l<9&&!E&&(!x||!x.left&&!x.right)){var $=g.parentNode.getClientRects()[0];$?x={left:$.left,right:$.left+Ms(i.display),top:$.top,bottom:$.bottom}:x=Ak}for(var X=x.top-u.rect.top,ne=x.bottom-u.rect.top,ae=(X+ne)/2,le=u.view.measure.heights,he=0;he=c.text.length?(N=c.text.length,x="before"):N<=0&&(N=0,x="after"),!O)return E(x=="before"?N-1:N,x=="before");function V(ne,ae,le){var he=O[ae],Ee=he.level==1;return E(le?ne-1:ne,Ee!=le)}var K=qn(O,N,x),$=yi,X=V(N,K,x=="before");return $!=null&&(X.other=V(N,$,x!="before")),X}function jk(i,u){var f=0;u=qe(i.doc,u),i.options.lineWrapping||(f=Ms(i.display)*u.ch);var c=Ae(i.doc,u.line),p=Ja(c)+eh(i.display);return{left:f,right:f,top:p,bottom:p+c.height}}function ky(i,u,f,c,p){var g=W(i,u,f);return g.xRel=p,c&&(g.outside=c),g}function Oy(i,u,f){var c=i.doc;if(f+=i.display.viewOffset,f<0)return ky(c.first,0,null,-1,-1);var p=fa(c,f),g=c.first+c.size-1;if(p>g)return ky(c.first+c.size-1,Ae(c,g).text.length,null,1,1);u<0&&(u=0);for(var E=Ae(c,p);;){var O=aB(i,E,p,u,f),N=I3(E,O.ch+(O.xRel>0||O.outside>0?1:0));if(!N)return O;var x=N.find(1);if(x.line==p)return x;E=Ae(c,p=x.line)}}function Pk(i,u,f,c){c-=Dy(u);var p=u.text.length,g=qt(function(E){return ha(i,f,E-1).bottom<=c},p,0);return p=qt(function(E){return ha(i,f,E).top>c},g,p),{begin:g,end:p}}function Mk(i,u,f,c){f||(f=js(i,u));var p=th(i,u,ha(i,f,c),"line").top;return Pk(i,u,f,p)}function Cy(i,u,f,c){return i.bottom<=f?!1:i.top>f?!0:(c?i.left:i.right)>u}function aB(i,u,f,c,p){p-=Ja(u);var g=js(i,u),E=Dy(u),O=0,N=u.text.length,x=!0,V=Bn(u,i.doc.direction);if(V){var K=(i.options.lineWrapping?uB:oB)(i,u,f,g,V,c,p);x=K.level!=1,O=x?K.from:K.to-1,N=x?K.to:K.from-1}var $=null,X=null,ne=qt(function(Fe){var Re=ha(i,g,Fe);return Re.top+=E,Re.bottom+=E,Cy(Re,c,p,!1)?(Re.top<=p&&Re.left<=c&&($=Fe,X=Re),!0):!1},O,N),ae,le,he=!1;if(X){var Ee=c-X.left=Oe.bottom?1:0}return ne=kn(u.text,ne,1),ky(f,ne,le,he,c-ae)}function oB(i,u,f,c,p,g,E){var O=qt(function(K){var $=p[K],X=$.level!=1;return Cy(Wi(i,W(f,X?$.to:$.from,X?"before":"after"),"line",u,c),g,E,!0)},0,p.length-1),N=p[O];if(O>0){var x=N.level!=1,V=Wi(i,W(f,x?N.from:N.to,x?"after":"before"),"line",u,c);Cy(V,g,E,!0)&&V.top>E&&(N=p[O-1])}return N}function uB(i,u,f,c,p,g,E){var O=Pk(i,u,c,E),N=O.begin,x=O.end;/\s/.test(u.text.charAt(x-1))&&x--;for(var V=null,K=null,$=0;$=x||X.to<=N)){var ne=X.level!=1,ae=ha(i,c,ne?Math.min(x,X.to)-1:Math.max(N,X.from)).right,le=aele)&&(V=X,K=le)}}return V||(V=p[p.length-1]),V.fromx&&(V={from:V.from,to:x,level:V.level}),V}var Cu;function Ps(i){if(i.cachedTextHeight!=null)return i.cachedTextHeight;if(Cu==null){Cu=j("pre",null,"CodeMirror-line-like");for(var u=0;u<49;++u)Cu.appendChild(document.createTextNode("x")),Cu.appendChild(j("br"));Cu.appendChild(document.createTextNode("x"))}G(i.measure,Cu);var f=Cu.offsetHeight/50;return f>3&&(i.cachedTextHeight=f),Q(i.measure),f||1}function Ms(i){if(i.cachedCharWidth!=null)return i.cachedCharWidth;var u=j("span","xxxxxxxxxx"),f=j("pre",[u],"CodeMirror-line-like");G(i.measure,f);var c=u.getBoundingClientRect(),p=(c.right-c.left)/10;return p>2&&(i.cachedCharWidth=p),p||10}function wy(i){for(var u=i.display,f={},c={},p=u.gutters.clientLeft,g=u.gutters.firstChild,E=0;g;g=g.nextSibling,++E){var O=i.display.gutterSpecs[E].className;f[O]=g.offsetLeft+g.clientLeft+p,c[O]=g.clientWidth}return{fixedPos:Ay(u),gutterTotalWidth:u.gutters.offsetWidth,gutterLeft:f,gutterWidth:c,wrapperWidth:u.wrapper.clientWidth}}function Ay(i){return i.scroller.getBoundingClientRect().left-i.sizer.getBoundingClientRect().left}function qk(i){var u=Ps(i.display),f=i.options.lineWrapping,c=f&&Math.max(5,i.display.scroller.clientWidth/Ms(i.display)-3);return function(p){if(So(i.doc,p))return 0;var g=0;if(p.widgets)for(var E=0;E0&&(x=Ae(i.doc,N.line).text).length==N.ch){var V=De(x,x.length,i.options.tabSize)-x.length;N=W(N.line,Math.max(0,Math.round((g-Ok(i.display).left)/Ms(i.display))-V))}return N}function Au(i,u){if(u>=i.display.viewTo||(u-=i.display.viewFrom,u<0))return null;for(var f=i.display.view,c=0;cu)&&(p.updateLineNumbers=u),i.curOp.viewChanged=!0,u>=p.viewTo)Ya&&my(i.doc,u)p.viewFrom?ko(i):(p.viewFrom+=c,p.viewTo+=c);else if(u<=p.viewFrom&&f>=p.viewTo)ko(i);else if(u<=p.viewFrom){var g=nh(i,f,f+c,1);g?(p.view=p.view.slice(g.index),p.viewFrom=g.lineN,p.viewTo+=c):ko(i)}else if(f>=p.viewTo){var E=nh(i,u,u,-1);E?(p.view=p.view.slice(0,E.index),p.viewTo=E.lineN):ko(i)}else{var O=nh(i,u,u,-1),N=nh(i,f,f+c,1);O&&N?(p.view=p.view.slice(0,O.index).concat($p(i,O.lineN,N.lineN)).concat(p.view.slice(N.index)),p.viewTo+=c):ko(i)}var x=p.externalMeasured;x&&(f=p.lineN&&u=c.viewTo)){var g=c.view[Au(i,u)];if(g.node!=null){var E=g.changes||(g.changes=[]);Ue(E,f)==-1&&E.push(f)}}}function ko(i){i.display.viewFrom=i.display.viewTo=i.doc.first,i.display.view=[],i.display.viewOffset=0}function nh(i,u,f,c){var p=Au(i,u),g,E=i.display.view;if(!Ya||f==i.doc.first+i.doc.size)return{index:p,lineN:f};for(var O=i.display.viewFrom,N=0;N0){if(p==E.length-1)return null;g=O+E[p].size-u,p++}else g=O-u;u+=g,f+=g}for(;my(i.doc,f)!=f;){if(p==(c<0?0:E.length-1))return null;f+=c*E[p-(c<0?1:0)].size,p+=c}return{index:p,lineN:f}}function sB(i,u,f){var c=i.display,p=c.view;p.length==0||u>=c.viewTo||f<=c.viewFrom?(c.view=$p(i,u,f),c.viewFrom=u):(c.viewFrom>u?c.view=$p(i,u,c.viewFrom).concat(c.view):c.viewFromf&&(c.view=c.view.slice(0,Au(i,f)))),c.viewTo=f}function Bk(i){for(var u=i.display.view,f=0,c=0;c=i.display.viewTo||N.to().line0?E:i.defaultCharWidth())+"px"}if(c.other){var O=f.appendChild(j("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));O.style.display="",O.style.left=c.other.left+"px",O.style.top=c.other.top+"px",O.style.height=(c.other.bottom-c.other.top)*.85+"px"}}function ih(i,u){return i.top-u.top||i.left-u.left}function lB(i,u,f){var c=i.display,p=i.doc,g=document.createDocumentFragment(),E=Ok(i.display),O=E.left,N=Math.max(c.sizerWidth,Ou(i)-c.sizer.offsetLeft)-E.right,x=p.direction=="ltr";function V(ve,Oe,Fe,Re){Oe<0&&(Oe=0),Oe=Math.round(Oe),Re=Math.round(Re),g.appendChild(j("div",null,"CodeMirror-selected","position: absolute; left: "+ve+`px; - top: `+Oe+"px; width: "+(Fe==null?N-ve:Fe)+`px; - height: `+(Re-Oe)+"px"))}function K(ve,Oe,Fe){var Re=Ae(p,ve),Xe=Re.text.length,Pt,Rr;function $t(hr,Nn){return rh(i,W(ve,hr),"div",Re,Nn)}function Gn(hr,Nn,Wr){var Dr=Mk(i,Re,null,hr),vr=Nn=="ltr"==(Wr=="after")?"left":"right",ar=Wr=="after"?Dr.begin:Dr.end-(/\s/.test(Re.text.charAt(Dr.end-1))?2:1);return $t(ar,vr)[vr]}var An=Bn(Re,p.direction);return On(An,Oe||0,Fe==null?Xe:Fe,function(hr,Nn,Wr,Dr){var vr=Wr=="ltr",ar=$t(hr,vr?"left":"right"),Ln=$t(Nn-1,vr?"right":"left"),Xs=Oe==null&&hr==0,Lo=Fe==null&&Nn==Xe,rn=Dr==0,va=!An||Dr==An.length-1;if(Ln.top-ar.top<=3){var Fr=(x?Xs:Lo)&&rn,n0=(x?Lo:Xs)&&va,eo=Fr?O:(vr?ar:Ln).left,Ru=n0?N:(vr?Ln:ar).right;V(eo,ar.top,Ru-eo,ar.bottom)}else{var Fu,pn,Zs,i0;vr?(Fu=x&&Xs&&rn?O:ar.left,pn=x?N:Gn(hr,Wr,"before"),Zs=x?O:Gn(Nn,Wr,"after"),i0=x&&Lo&&va?N:Ln.right):(Fu=x?Gn(hr,Wr,"before"):O,pn=!x&&Xs&&rn?N:ar.right,Zs=!x&&Lo&&va?O:Ln.left,i0=x?Gn(Nn,Wr,"after"):N),V(Fu,ar.top,pn-Fu,ar.bottom),ar.bottom0?u.blinker=setInterval(function(){i.hasFocus()||qs(i),u.cursorDiv.style.visibility=(f=!f)?"":"hidden"},i.options.cursorBlinkRate):i.options.cursorBlinkRate<0&&(u.cursorDiv.style.visibility="hidden")}}function Uk(i){i.hasFocus()||(i.display.input.focus(),i.state.focused||Ry(i))}function Iy(i){i.state.delayingBlurEvent=!0,setTimeout(function(){i.state.delayingBlurEvent&&(i.state.delayingBlurEvent=!1,i.state.focused&&qs(i))},100)}function Ry(i,u){i.state.delayingBlurEvent&&!i.state.draggingText&&(i.state.delayingBlurEvent=!1),i.options.readOnly!="nocursor"&&(i.state.focused||(At(i,"focus",i,u),i.state.focused=!0,we(i.display.wrapper,"CodeMirror-focused"),!i.curOp&&i.display.selForContextMenu!=i.doc.sel&&(i.display.input.reset(),d&&setTimeout(function(){return i.display.input.reset(!0)},20)),i.display.input.receivedFocus()),xy(i))}function qs(i,u){i.state.delayingBlurEvent||(i.state.focused&&(At(i,"blur",i,u),i.state.focused=!1,z(i.display.wrapper,"CodeMirror-focused")),clearInterval(i.display.blinker),setTimeout(function(){i.state.focused||(i.display.shift=!1)},150))}function ah(i){for(var u=i.display,f=u.lineDiv.offsetTop,c=Math.max(0,u.scroller.getBoundingClientRect().top),p=u.lineDiv.getBoundingClientRect().top,g=0,E=0;E.005||X<-.005)&&(pi.display.sizerWidth){var ae=Math.ceil(V/Ms(i.display));ae>i.display.maxLineLength&&(i.display.maxLineLength=ae,i.display.maxLine=O.line,i.display.maxLineChanged=!0)}}}Math.abs(g)>2&&(u.scroller.scrollTop+=g)}function Gk(i){if(i.widgets)for(var u=0;u=E&&(g=fa(u,Ja(Ae(u,N))-i.wrapper.clientHeight),E=N)}return{from:g,to:Math.max(E,g+1)}}function cB(i,u){if(!zt(i,"scrollCursorIntoView")){var f=i.display,c=f.sizer.getBoundingClientRect(),p=null,g=f.wrapper.ownerDocument;if(u.top+c.top<0?p=!0:u.bottom+c.top>(g.defaultView.innerHeight||g.documentElement.clientHeight)&&(p=!1),p!=null&&!S){var E=j("div","\u200B",null,`position: absolute; - top: `+(u.top-f.viewOffset-eh(i.display))+`px; - height: `+(u.bottom-u.top+pa(i)+f.barHeight)+`px; - left: `+u.left+"px; width: "+Math.max(2,u.right-u.left)+"px;");i.display.lineSpace.appendChild(E),E.scrollIntoView(p),i.display.lineSpace.removeChild(E)}}}function fB(i,u,f,c){c==null&&(c=0);var p;!i.options.lineWrapping&&u==f&&(f=u.sticky=="before"?W(u.line,u.ch+1,"before"):u,u=u.ch?W(u.line,u.sticky=="before"?u.ch-1:u.ch,"after"):u);for(var g=0;g<5;g++){var E=!1,O=Wi(i,u),N=!f||f==u?O:Wi(i,f);p={left:Math.min(O.left,N.left),top:Math.min(O.top,N.top)-c,right:Math.max(O.left,N.left),bottom:Math.max(O.bottom,N.bottom)+c};var x=Fy(i,p),V=i.doc.scrollTop,K=i.doc.scrollLeft;if(x.scrollTop!=null&&(zc(i,x.scrollTop),Math.abs(i.doc.scrollTop-V)>1&&(E=!0)),x.scrollLeft!=null&&(Nu(i,x.scrollLeft),Math.abs(i.doc.scrollLeft-K)>1&&(E=!0)),!E)break}return p}function dB(i,u){var f=Fy(i,u);f.scrollTop!=null&&zc(i,f.scrollTop),f.scrollLeft!=null&&Nu(i,f.scrollLeft)}function Fy(i,u){var f=i.display,c=Ps(i.display);u.top<0&&(u.top=0);var p=i.curOp&&i.curOp.scrollTop!=null?i.curOp.scrollTop:f.scroller.scrollTop,g=_y(i),E={};u.bottom-u.top>g&&(u.bottom=u.top+g);var O=i.doc.height+Ey(f),N=u.topO-c;if(u.topp+g){var V=Math.min(u.top,(x?O:u.bottom)-g);V!=p&&(E.scrollTop=V)}var K=i.options.fixedGutter?0:f.gutters.offsetWidth,$=i.curOp&&i.curOp.scrollLeft!=null?i.curOp.scrollLeft:f.scroller.scrollLeft-K,X=Ou(i)-f.gutters.offsetWidth,ne=u.right-u.left>X;return ne&&(u.right=u.left+X),u.left<10?E.scrollLeft=0:u.left<$?E.scrollLeft=Math.max(0,u.left+K-(ne?0:10)):u.right>X+$-3&&(E.scrollLeft=u.right+(ne?0:10)-X),E}function jy(i,u){u!=null&&(uh(i),i.curOp.scrollTop=(i.curOp.scrollTop==null?i.doc.scrollTop:i.curOp.scrollTop)+u)}function Bs(i){uh(i);var u=i.getCursor();i.curOp.scrollToPos={from:u,to:u,margin:i.options.cursorScrollMargin}}function Hc(i,u,f){(u!=null||f!=null)&&uh(i),u!=null&&(i.curOp.scrollLeft=u),f!=null&&(i.curOp.scrollTop=f)}function pB(i,u){uh(i),i.curOp.scrollToPos=u}function uh(i){var u=i.curOp.scrollToPos;if(u){i.curOp.scrollToPos=null;var f=jk(i,u.from),c=jk(i,u.to);Qk(i,f,c,u.margin)}}function Qk(i,u,f,c){var p=Fy(i,{left:Math.min(u.left,f.left),top:Math.min(u.top,f.top)-c,right:Math.max(u.right,f.right),bottom:Math.max(u.bottom,f.bottom)+c});Hc(i,p.scrollLeft,p.scrollTop)}function zc(i,u){Math.abs(i.doc.scrollTop-u)<2||(r||My(i,{top:u}),Kk(i,u,!0),r&&My(i),Jc(i,100))}function Kk(i,u,f){u=Math.max(0,Math.min(i.display.scroller.scrollHeight-i.display.scroller.clientHeight,u)),!(i.display.scroller.scrollTop==u&&!f)&&(i.doc.scrollTop=u,i.display.scrollbars.setScrollTop(u),i.display.scroller.scrollTop!=u&&(i.display.scroller.scrollTop=u))}function Nu(i,u,f,c){u=Math.max(0,Math.min(u,i.display.scroller.scrollWidth-i.display.scroller.clientWidth)),!((f?u==i.doc.scrollLeft:Math.abs(i.doc.scrollLeft-u)<2)&&!c)&&(i.doc.scrollLeft=u,Jk(i),i.display.scroller.scrollLeft!=u&&(i.display.scroller.scrollLeft=u),i.display.scrollbars.setScrollLeft(u))}function Wc(i){var u=i.display,f=u.gutters.offsetWidth,c=Math.round(i.doc.height+Ey(i.display));return{clientHeight:u.scroller.clientHeight,viewHeight:u.wrapper.clientHeight,scrollWidth:u.scroller.scrollWidth,clientWidth:u.scroller.clientWidth,viewWidth:u.wrapper.clientWidth,barLeft:i.options.fixedGutter?f:0,docHeight:c,scrollHeight:c+pa(i)+u.barHeight,nativeBarWidth:u.nativeBarWidth,gutterWidth:f}}var Lu=function(i,u,f){this.cm=f;var c=this.vert=j("div",[j("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),p=this.horiz=j("div",[j("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");c.tabIndex=p.tabIndex=-1,i(c),i(p),ge(c,"scroll",function(){c.clientHeight&&u(c.scrollTop,"vertical")}),ge(p,"scroll",function(){p.clientWidth&&u(p.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,s&&l<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Lu.prototype.update=function(i){var u=i.scrollWidth>i.clientWidth+1,f=i.scrollHeight>i.clientHeight+1,c=i.nativeBarWidth;if(f){this.vert.style.display="block",this.vert.style.bottom=u?c+"px":"0";var p=i.viewHeight-(u?c:0);this.vert.firstChild.style.height=Math.max(0,i.scrollHeight-i.clientHeight+p)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(u){this.horiz.style.display="block",this.horiz.style.right=f?c+"px":"0",this.horiz.style.left=i.barLeft+"px";var g=i.viewWidth-i.barLeft-(f?c:0);this.horiz.firstChild.style.width=Math.max(0,i.scrollWidth-i.clientWidth+g)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&i.clientHeight>0&&(c==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:f?c:0,bottom:u?c:0}},Lu.prototype.setScrollLeft=function(i){this.horiz.scrollLeft!=i&&(this.horiz.scrollLeft=i),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Lu.prototype.setScrollTop=function(i){this.vert.scrollTop!=i&&(this.vert.scrollTop=i),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Lu.prototype.zeroWidthHack=function(){var i=k&&!L?"12px":"18px";this.horiz.style.height=this.vert.style.width=i,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new Pe,this.disableVert=new Pe},Lu.prototype.enableZeroWidthBar=function(i,u,f){i.style.visibility="";function c(){var p=i.getBoundingClientRect(),g=f=="vert"?document.elementFromPoint(p.right-1,(p.top+p.bottom)/2):document.elementFromPoint((p.right+p.left)/2,p.bottom-1);g!=i?i.style.visibility="hidden":u.set(1e3,c)}u.set(1e3,c)},Lu.prototype.clear=function(){var i=this.horiz.parentNode;i.removeChild(this.horiz),i.removeChild(this.vert)};var Yc=function(){};Yc.prototype.update=function(){return{bottom:0,right:0}},Yc.prototype.setScrollLeft=function(){},Yc.prototype.setScrollTop=function(){},Yc.prototype.clear=function(){};function Vs(i,u){u||(u=Wc(i));var f=i.display.barWidth,c=i.display.barHeight;Hk(i,u);for(var p=0;p<4&&f!=i.display.barWidth||c!=i.display.barHeight;p++)f!=i.display.barWidth&&i.options.lineWrapping&&ah(i),Hk(i,Wc(i)),f=i.display.barWidth,c=i.display.barHeight}function Hk(i,u){var f=i.display,c=f.scrollbars.update(u);f.sizer.style.paddingRight=(f.barWidth=c.right)+"px",f.sizer.style.paddingBottom=(f.barHeight=c.bottom)+"px",f.heightForcer.style.borderBottom=c.bottom+"px solid transparent",c.right&&c.bottom?(f.scrollbarFiller.style.display="block",f.scrollbarFiller.style.height=c.bottom+"px",f.scrollbarFiller.style.width=c.right+"px"):f.scrollbarFiller.style.display="",c.bottom&&i.options.coverGutterNextToScrollbar&&i.options.fixedGutter?(f.gutterFiller.style.display="block",f.gutterFiller.style.height=c.bottom+"px",f.gutterFiller.style.width=u.gutterWidth+"px"):f.gutterFiller.style.display=""}var zk={native:Lu,null:Yc};function Wk(i){i.display.scrollbars&&(i.display.scrollbars.clear(),i.display.scrollbars.addClass&&z(i.display.wrapper,i.display.scrollbars.addClass)),i.display.scrollbars=new zk[i.options.scrollbarStyle](function(u){i.display.wrapper.insertBefore(u,i.display.scrollbarFiller),ge(u,"mousedown",function(){i.state.focused&&setTimeout(function(){return i.display.input.focus()},0)}),u.setAttribute("cm-not-content","true")},function(u,f){f=="horizontal"?Nu(i,u):zc(i,u)},i),i.display.scrollbars.addClass&&we(i.display.wrapper,i.display.scrollbars.addClass)}var hB=0;function xu(i){i.curOp={cm:i,viewChanged:!1,startHeight:i.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++hB,markArrays:null},K3(i.curOp)}function Iu(i){var u=i.curOp;u&&z3(u,function(f){for(var c=0;c=f.viewTo)||f.maxLineChanged&&u.options.lineWrapping,i.update=i.mustUpdate&&new sh(u,i.mustUpdate&&{top:i.scrollTop,ensure:i.scrollToPos},i.forceUpdate)}function mB(i){i.updatedDisplay=i.mustUpdate&&Py(i.cm,i.update)}function yB(i){var u=i.cm,f=u.display;i.updatedDisplay&&ah(u),i.barMeasure=Wc(u),f.maxLineChanged&&!u.options.lineWrapping&&(i.adjustWidthTo=wk(u,f.maxLine,f.maxLine.text.length).left+3,u.display.sizerWidth=i.adjustWidthTo,i.barMeasure.scrollWidth=Math.max(f.scroller.clientWidth,f.sizer.offsetLeft+i.adjustWidthTo+pa(u)+u.display.barWidth),i.maxScrollLeft=Math.max(0,f.sizer.offsetLeft+i.adjustWidthTo-Ou(u))),(i.updatedDisplay||i.selectionChanged)&&(i.preparedSelection=f.input.prepareSelection())}function bB(i){var u=i.cm;i.adjustWidthTo!=null&&(u.display.sizer.style.minWidth=i.adjustWidthTo+"px",i.maxScrollLeft=i.display.viewTo)){var f=+new Date+i.options.workTime,c=qc(i,u.highlightFrontier),p=[];u.iter(c.line,Math.min(u.first+u.size,i.display.viewTo+500),function(g){if(c.line>=i.display.viewFrom){var E=g.styles,O=g.text.length>i.options.maxHighlightLength?za(u.mode,c.state):null,N=rk(i,g,c,!0);O&&(c.state=O),g.styles=N.styles;var x=g.styleClasses,V=N.classes;V?g.styleClasses=V:x&&(g.styleClasses=null);for(var K=!E||E.length!=g.styles.length||x!=V&&(!x||!V||x.bgClass!=V.bgClass||x.textClass!=V.textClass),$=0;!K&&$f)return Jc(i,i.options.workDelay),!0}),u.highlightFrontier=c.line,u.modeFrontier=Math.max(u.modeFrontier,c.line),p.length&&Un(i,function(){for(var g=0;g=f.viewFrom&&u.visible.to<=f.viewTo&&(f.updateLineNumbers==null||f.updateLineNumbers>=f.viewTo)&&f.renderedView==f.view&&Bk(i)==0)return!1;Xk(i)&&(ko(i),u.dims=wy(i));var p=c.first+c.size,g=Math.max(u.visible.from-i.options.viewportMargin,c.first),E=Math.min(p,u.visible.to+i.options.viewportMargin);f.viewFromE&&f.viewTo-E<20&&(E=Math.min(p,f.viewTo)),Ya&&(g=my(i.doc,g),E=gk(i.doc,E));var O=g!=f.viewFrom||E!=f.viewTo||f.lastWrapHeight!=u.wrapperHeight||f.lastWrapWidth!=u.wrapperWidth;sB(i,g,E),f.viewOffset=Ja(Ae(i.doc,f.viewFrom)),i.display.mover.style.top=f.viewOffset+"px";var N=Bk(i);if(!O&&N==0&&!u.force&&f.renderedView==f.view&&(f.updateLineNumbers==null||f.updateLineNumbers>=f.viewTo))return!1;var x=SB(i);return N>4&&(f.lineDiv.style.display="none"),kB(i,f.updateLineNumbers,u.dims),N>4&&(f.lineDiv.style.display=""),f.renderedView=f.view,DB(x),Q(f.cursorDiv),Q(f.selectionDiv),f.gutters.style.height=f.sizer.style.minHeight=0,O&&(f.lastWrapHeight=u.wrapperHeight,f.lastWrapWidth=u.wrapperWidth,Jc(i,400)),f.updateLineNumbers=null,!0}function Yk(i,u){for(var f=u.viewport,c=!0;;c=!1){if(!c||!i.options.lineWrapping||u.oldDisplayWidth==Ou(i)){if(f&&f.top!=null&&(f={top:Math.min(i.doc.height+Ey(i.display)-_y(i),f.top)}),u.visible=oh(i.display,i.doc,f),u.visible.from>=i.display.viewFrom&&u.visible.to<=i.display.viewTo)break}else c&&(u.visible=oh(i.display,i.doc,f));if(!Py(i,u))break;ah(i);var p=Wc(i);Kc(i),Vs(i,p),By(i,p),u.force=!1}u.signal(i,"update",i),(i.display.viewFrom!=i.display.reportedViewFrom||i.display.viewTo!=i.display.reportedViewTo)&&(u.signal(i,"viewportChange",i,i.display.viewFrom,i.display.viewTo),i.display.reportedViewFrom=i.display.viewFrom,i.display.reportedViewTo=i.display.viewTo)}function My(i,u){var f=new sh(i,u);if(Py(i,f)){ah(i),Yk(i,f);var c=Wc(i);Kc(i),Vs(i,c),By(i,c),f.finish()}}function kB(i,u,f){var c=i.display,p=i.options.lineNumbers,g=c.lineDiv,E=g.firstChild;function O(ne){var ae=ne.nextSibling;return d&&k&&i.display.currentWheelTarget==ne?ne.style.display="none":ne.parentNode.removeChild(ne),ae}for(var N=c.view,x=c.viewFrom,V=0;V-1&&(X=!1),Ek(i,K,x,f)),X&&(Q(K.lineNumber),K.lineNumber.appendChild(document.createTextNode(H(i.options,x)))),E=K.node.nextSibling}x+=K.size}for(;E;)E=O(E)}function qy(i){var u=i.gutters.offsetWidth;i.sizer.style.marginLeft=u+"px",Lr(i,"gutterChanged",i)}function By(i,u){i.display.sizer.style.minHeight=u.docHeight+"px",i.display.heightForcer.style.top=u.docHeight+"px",i.display.gutters.style.height=u.docHeight+i.display.barHeight+pa(i)+"px"}function Jk(i){var u=i.display,f=u.view;if(!(!u.alignWidgets&&(!u.gutters.firstChild||!i.options.fixedGutter))){for(var c=Ay(u)-u.scroller.scrollLeft+i.doc.scrollLeft,p=u.gutters.offsetWidth,g=c+"px",E=0;E=105&&(p.wrapper.style.clipPath="inset(0px)"),p.wrapper.setAttribute("translate","no"),s&&l<8&&(p.gutters.style.zIndex=-1,p.scroller.style.paddingRight=0),!d&&!(r&&m)&&(p.scroller.draggable=!0),i&&(i.appendChild?i.appendChild(p.wrapper):i(p.wrapper)),p.viewFrom=p.viewTo=u.first,p.reportedViewFrom=p.reportedViewTo=u.first,p.view=[],p.renderedView=null,p.externalMeasured=null,p.viewOffset=0,p.lastWrapHeight=p.lastWrapWidth=0,p.updateLineNumbers=null,p.nativeBarWidth=p.barHeight=p.barWidth=0,p.scrollbarsClipped=!1,p.lineNumWidth=p.lineNumInnerWidth=p.lineNumChars=null,p.alignWidgets=!1,p.cachedCharWidth=p.cachedTextHeight=p.cachedPaddingH=null,p.maxLine=null,p.maxLineLength=0,p.maxLineChanged=!1,p.wheelDX=p.wheelDY=p.wheelStartX=p.wheelStartY=null,p.shift=!1,p.selForContextMenu=null,p.activeTouch=null,p.gutterSpecs=Vy(c.gutters,c.lineNumbers),Zk(p),f.init(p)}var lh=0,Za=null;s?Za=-.53:r?Za=15:v?Za=-.7:A&&(Za=-1/3);function $k(i){var u=i.wheelDeltaX,f=i.wheelDeltaY;return u==null&&i.detail&&i.axis==i.HORIZONTAL_AXIS&&(u=i.detail),f==null&&i.detail&&i.axis==i.VERTICAL_AXIS?f=i.detail:f==null&&(f=i.wheelDelta),{x:u,y:f}}function CB(i){var u=$k(i);return u.x*=Za,u.y*=Za,u}function eO(i,u){v&&b==102&&(i.display.chromeScrollHack==null?i.display.sizer.style.pointerEvents="none":clearTimeout(i.display.chromeScrollHack),i.display.chromeScrollHack=setTimeout(function(){i.display.chromeScrollHack=null,i.display.sizer.style.pointerEvents=""},100));var f=$k(u),c=f.x,p=f.y,g=Za;u.deltaMode===0&&(c=u.deltaX,p=u.deltaY,g=1);var E=i.display,O=E.scroller,N=O.scrollWidth>O.clientWidth,x=O.scrollHeight>O.clientHeight;if(!!(c&&N||p&&x)){if(p&&k&&d){e:for(var V=u.target,K=E.view;V!=O;V=V.parentNode)for(var $=0;$=0&&re(i,c.to())<=0)return f}return-1};var bt=function(i,u){this.anchor=i,this.head=u};bt.prototype.from=function(){return Sr(this.anchor,this.head)},bt.prototype.to=function(){return ht(this.anchor,this.head)},bt.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function Yi(i,u,f){var c=i&&i.options.selectionsMayTouch,p=u[f];u.sort(function($,X){return re($.from(),X.from())}),f=Ue(u,p);for(var g=1;g0:N>=0){var x=Sr(O.from(),E.from()),V=ht(O.to(),E.to()),K=O.empty()?E.from()==E.head:O.from()==O.head;g<=f&&--f,u.splice(--g,2,new bt(K?V:x,K?x:V))}}return new ni(u,f)}function Oo(i,u){return new ni([new bt(i,u||i)],0)}function Co(i){return i.text?W(i.from.line+i.text.length-1,ue(i.text).length+(i.text.length==1?i.from.ch:0)):i.to}function tO(i,u){if(re(i,u.from)<0)return i;if(re(i,u.to)<=0)return Co(u);var f=i.line+u.text.length-(u.to.line-u.from.line)-1,c=i.ch;return i.line==u.to.line&&(c+=Co(u).ch-u.to.ch),W(f,c)}function Uy(i,u){for(var f=[],c=0;c1&&i.remove(O.line+1,ne-1),i.insert(O.line+1,he)}Lr(i,"change",i,u)}function wo(i,u,f){function c(p,g,E){if(p.linked)for(var O=0;O1&&!i.done[i.done.length-2].ranges)return i.done.pop(),ue(i.done)}function uO(i,u,f,c){var p=i.history;p.undone.length=0;var g=+new Date,E,O;if((p.lastOp==c||p.lastOrigin==u.origin&&u.origin&&(u.origin.charAt(0)=="+"&&p.lastModTime>g-(i.cm?i.cm.options.historyEventDelay:500)||u.origin.charAt(0)=="*"))&&(E=NB(p,p.lastOp==c)))O=ue(E.changes),re(u.from,u.to)==0&&re(u.from,O.to)==0?O.to=Co(u):E.changes.push(Ky(i,u));else{var N=ue(p.done);for((!N||!N.ranges)&&fh(i.sel,p.done),E={changes:[Ky(i,u)],generation:p.generation},p.done.push(E);p.done.length>p.undoDepth;)p.done.shift(),p.done[0].ranges||p.done.shift()}p.done.push(f),p.generation=++p.maxGeneration,p.lastModTime=p.lastSelTime=g,p.lastOp=p.lastSelOp=c,p.lastOrigin=p.lastSelOrigin=u.origin,O||At(i,"historyAdded")}function LB(i,u,f,c){var p=u.charAt(0);return p=="*"||p=="+"&&f.ranges.length==c.ranges.length&&f.somethingSelected()==c.somethingSelected()&&new Date-i.history.lastSelTime<=(i.cm?i.cm.options.historyEventDelay:500)}function xB(i,u,f,c){var p=i.history,g=c&&c.origin;f==p.lastSelOp||g&&p.lastSelOrigin==g&&(p.lastModTime==p.lastSelTime&&p.lastOrigin==g||LB(i,g,ue(p.done),u))?p.done[p.done.length-1]=u:fh(u,p.done),p.lastSelTime=+new Date,p.lastSelOrigin=g,p.lastSelOp=f,c&&c.clearRedo!==!1&&oO(p.undone)}function fh(i,u){var f=ue(u);f&&f.ranges&&f.equals(i)||u.push(i)}function sO(i,u,f,c){var p=u["spans_"+i.id],g=0;i.iter(Math.max(i.first,f),Math.min(i.first+i.size,c),function(E){E.markedSpans&&((p||(p=u["spans_"+i.id]={}))[g]=E.markedSpans),++g})}function IB(i){if(!i)return null;for(var u,f=0;f-1&&(ue(O)[K]=x[K],delete x[K])}}return c}function Hy(i,u,f,c){if(c){var p=i.anchor;if(f){var g=re(u,p)<0;g!=re(f,p)<0?(p=u,u=f):g!=re(u,f)<0&&(u=f)}return new bt(p,u)}else return new bt(f||u,u)}function dh(i,u,f,c,p){p==null&&(p=i.cm&&(i.cm.display.shift||i.extend)),tn(i,new ni([Hy(i.sel.primary(),u,f,p)],0),c)}function cO(i,u,f){for(var c=[],p=i.cm&&(i.cm.display.shift||i.extend),g=0;g=u.ch:O.to>u.ch))){if(p&&(At(N,"beforeCursorEnter"),N.explicitlyCleared))if(g.markedSpans){--E;continue}else break;if(!N.atomic)continue;if(f){var K=N.find(c<0?1:-1),$=void 0;if((c<0?V:x)&&(K=gO(i,K,-c,K&&K.line==u.line?g:null)),K&&K.line==u.line&&($=re(K,f))&&(c<0?$<0:$>0))return Gs(i,K,u,c,p)}var X=N.find(c<0?-1:1);return(c<0?x:V)&&(X=gO(i,X,c,X.line==u.line?g:null)),X?Gs(i,X,u,c,p):null}}return u}function hh(i,u,f,c,p){var g=c||1,E=Gs(i,u,f,g,p)||!p&&Gs(i,u,f,g,!0)||Gs(i,u,f,-g,p)||!p&&Gs(i,u,f,-g,!0);return E||(i.cantEdit=!0,W(i.first,0))}function gO(i,u,f,c){return f<0&&u.ch==0?u.line>i.first?qe(i,W(u.line-1)):null:f>0&&u.ch==(c||Ae(i,u.line)).text.length?u.line=0;--p)bO(i,{from:c[p].from,to:c[p].to,text:p?[""]:u.text,origin:u.origin});else bO(i,u)}}function bO(i,u){if(!(u.text.length==1&&u.text[0]==""&&re(u.from,u.to)==0)){var f=Uy(i,u);uO(i,u,f,i.cm?i.cm.curOp.id:NaN),$c(i,u,f,vy(i,u));var c=[];wo(i,function(p,g){!g&&Ue(c,p.history)==-1&&(SO(p.history,u),c.push(p.history)),$c(p,u,null,vy(p,u))})}}function vh(i,u,f){var c=i.cm&&i.cm.state.suppressEdits;if(!(c&&!f)){for(var p=i.history,g,E=i.sel,O=u=="undo"?p.done:p.undone,N=u=="undo"?p.undone:p.done,x=0;x=0;--X){var ne=$(X);if(ne)return ne.v}}}}function TO(i,u){if(u!=0&&(i.first+=u,i.sel=new ni(Ge(i.sel.ranges,function(p){return new bt(W(p.anchor.line+u,p.anchor.ch),W(p.head.line+u,p.head.ch))}),i.sel.primIndex),i.cm)){Cn(i.cm,i.first,i.first-u,u);for(var f=i.cm.display,c=f.viewFrom;ci.lastLine())){if(u.from.lineg&&(u={from:u.from,to:W(g,Ae(i,g).text.length),text:[u.text[0]],origin:u.origin}),u.removed=Wa(i,u.from,u.to),f||(f=Uy(i,u)),i.cm?jB(i.cm,u,c):Qy(i,u,c),ph(i,f,ut),i.cantEdit&&hh(i,W(i.firstLine(),0))&&(i.cantEdit=!1)}}function jB(i,u,f){var c=i.doc,p=i.display,g=u.from,E=u.to,O=!1,N=g.line;i.options.lineWrapping||(N=yt(zi(Ae(c,g.line))),c.iter(N,E.line+1,function(X){if(X==p.maxLine)return O=!0,!0})),c.sel.contains(u.from,u.to)>-1&&Ls(i),Qy(c,u,f,qk(i)),i.options.lineWrapping||(c.iter(N,g.line+u.text.length,function(X){var ne=Zp(X);ne>p.maxLineLength&&(p.maxLine=X,p.maxLineLength=ne,p.maxLineChanged=!0,O=!1)}),O&&(i.curOp.updateMaxLine=!0)),k3(c,g.line),Jc(i,400);var x=u.text.length-(E.line-g.line)-1;u.full?Cn(i):g.line==E.line&&u.text.length==1&&!nO(i.doc,u)?Do(i,g.line,"text"):Cn(i,g.line,E.line+1,x);var V=Hr(i,"changes"),K=Hr(i,"change");if(K||V){var $={from:g,to:E,text:u.text,removed:u.removed,origin:u.origin};K&&Lr(i,"change",i,$),V&&(i.curOp.changeObjs||(i.curOp.changeObjs=[])).push($)}i.display.selForContextMenu=null}function Ks(i,u,f,c,p){var g;c||(c=f),re(c,f)<0&&(g=[c,f],f=g[0],c=g[1]),typeof u=="string"&&(u=i.splitLines(u)),Qs(i,{from:f,to:c,text:u,origin:p})}function EO(i,u,f,c){f1||!(this.children[0]instanceof tf))){var O=[];this.collapse(O),this.children=[new tf(O)],this.children[0].parent=this}},collapse:function(i){for(var u=0;u50){for(var E=p.lines.length%25+25,O=E;O10);i.parent.maybeSpill()}},iterN:function(i,u,f){for(var c=0;ci.display.maxLineLength&&(i.display.maxLine=x,i.display.maxLineLength=V,i.display.maxLineChanged=!0)}c!=null&&i&&this.collapsed&&Cn(i,c,p+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,i&&hO(i.doc)),i&&Lr(i,"markerCleared",i,this,c,p),u&&Iu(i),this.parent&&this.parent.clear()}},Ao.prototype.find=function(i,u){i==null&&this.type=="bookmark"&&(i=1);for(var f,c,p=0;p0||E==0&&g.clearWhenEmpty!==!1)return g;if(g.replacedWith&&(g.collapsed=!0,g.widgetNode=ce("span",[g.replacedWith],"CodeMirror-widget"),c.handleMouseEvents||g.widgetNode.setAttribute("cm-ignore-events","true"),c.insertLeft&&(g.widgetNode.insertLeft=!0)),g.collapsed){if(vk(i,u.line,u,f,g)||u.line!=f.line&&vk(i,f.line,u,f,g))throw new Error("Inserting collapsed marker partially overlapping an existing one");C3()}g.addToHistory&&uO(i,{from:u,to:f,origin:"markText"},i.sel,NaN);var O=u.line,N=i.cm,x;if(i.iter(O,f.line+1,function(K){N&&g.collapsed&&!N.options.lineWrapping&&zi(K)==N.display.maxLine&&(x=!0),g.collapsed&&O!=u.line&&bi(K,0),A3(K,new Wp(g,O==u.line?u.ch:null,O==f.line?f.ch:null),i.cm&&i.cm.curOp),++O}),g.collapsed&&i.iter(u.line,f.line+1,function(K){So(i,K)&&bi(K,0)}),g.clearOnEnter&&ge(g,"beforeCursorEnter",function(){return g.clear()}),g.readOnly&&(O3(),(i.history.done.length||i.history.undone.length)&&i.clearHistory()),g.collapsed&&(g.id=++kO,g.atomic=!0),N){if(x&&(N.curOp.updateMaxLine=!0),g.collapsed)Cn(N,u.line,f.line+1);else if(g.className||g.startStyle||g.endStyle||g.css||g.attributes||g.title)for(var V=u.line;V<=f.line;V++)Do(N,V,"text");g.atomic&&hO(N.doc),Lr(N,"markerAdded",N,g)}return g}var af=function(i,u){this.markers=i,this.primary=u;for(var f=0;f=0;N--)Qs(this,c[N]);O?dO(this,O):this.cm&&Bs(this.cm)}),undo:Ir(function(){vh(this,"undo")}),redo:Ir(function(){vh(this,"redo")}),undoSelection:Ir(function(){vh(this,"undo",!0)}),redoSelection:Ir(function(){vh(this,"redo",!0)}),setExtending:function(i){this.extend=i},getExtending:function(){return this.extend},historySize:function(){for(var i=this.history,u=0,f=0,c=0;c=i.ch)&&u.push(p.marker.parent||p.marker)}return u},findMarks:function(i,u,f){i=qe(this,i),u=qe(this,u);var c=[],p=i.line;return this.iter(i.line,u.line+1,function(g){var E=g.markedSpans;if(E)for(var O=0;O=N.to||N.from==null&&p!=i.line||N.from!=null&&p==u.line&&N.from>=u.ch)&&(!f||f(N.marker))&&c.push(N.marker.parent||N.marker)}++p}),c},getAllMarks:function(){var i=[];return this.iter(function(u){var f=u.markedSpans;if(f)for(var c=0;ci)return u=i,!0;i-=g,++f}),qe(this,W(f,u))},indexFromPos:function(i){i=qe(this,i);var u=i.ch;if(i.lineu&&(u=i.from),i.to!=null&&i.to-1){u.state.draggingText(i),setTimeout(function(){return u.display.input.focus()},20);return}try{var V=i.dataTransfer.getData("Text");if(V){var K;if(u.state.draggingText&&!u.state.draggingText.copy&&(K=u.listSelections()),ph(u.doc,Oo(f,f)),K)for(var $=0;$=0;O--)Ks(i.doc,"",c[O].from,c[O].to,"+delete");Bs(i)})}function Wy(i,u,f){var c=kn(i.text,u+f,f);return c<0||c>i.text.length?null:c}function Yy(i,u,f){var c=Wy(i,u.ch,f);return c==null?null:new W(u.line,c,f<0?"after":"before")}function Jy(i,u,f,c,p){if(i){u.doc.direction=="rtl"&&(p=-p);var g=Bn(f,u.doc.direction);if(g){var E=p<0?ue(g):g[0],O=p<0==(E.level==1),N=O?"after":"before",x;if(E.level>0||u.doc.direction=="rtl"){var V=js(u,f);x=p<0?f.text.length-1:0;var K=ha(u,V,x).top;x=qt(function($){return ha(u,V,$).top==K},p<0==(E.level==1)?E.from:E.to-1,x),N=="before"&&(x=Wy(f,x,1))}else x=p<0?E.to:E.from;return new W(c,x,N)}}return new W(c,p<0?f.text.length:0,p<0?"before":"after")}function JB(i,u,f,c){var p=Bn(u,i.doc.direction);if(!p)return Yy(u,f,c);f.ch>=u.text.length?(f.ch=u.text.length,f.sticky="before"):f.ch<=0&&(f.ch=0,f.sticky="after");var g=qn(p,f.ch,f.sticky),E=p[g];if(i.doc.direction=="ltr"&&E.level%2==0&&(c>0?E.to>f.ch:E.from=E.from&&$>=V.begin)){var X=K?"before":"after";return new W(f.line,$,X)}}var ne=function(he,Ee,ve){for(var Oe=function(Pt,Rr){return Rr?new W(f.line,O(Pt,1),"before"):new W(f.line,Pt,"after")};he>=0&&he0==(Fe.level!=1),Xe=Re?ve.begin:O(ve.end,-1);if(Fe.from<=Xe&&Xe0?V.end:O(V.begin,-1);return le!=null&&!(c>0&&le==u.text.length)&&(ae=ne(c>0?0:p.length-1,c,x(le)),ae)?ae:null}var sf={selectAll:mO,singleSelection:function(i){return i.setSelection(i.getCursor("anchor"),i.getCursor("head"),ut)},killLine:function(i){return Ws(i,function(u){if(u.empty()){var f=Ae(i.doc,u.head.line).text.length;return u.head.ch==f&&u.head.line0)p=new W(p.line,p.ch+1),i.replaceRange(g.charAt(p.ch-1)+g.charAt(p.ch-2),W(p.line,p.ch-2),p,"+transpose");else if(p.line>i.doc.first){var E=Ae(i.doc,p.line-1).text;E&&(p=new W(p.line,1),i.replaceRange(g.charAt(0)+i.doc.lineSeparator()+E.charAt(E.length-1),W(p.line-1,E.length-1),p,"+transpose"))}}f.push(new bt(p,p))}i.setSelections(f)})},newlineAndIndent:function(i){return Un(i,function(){for(var u=i.listSelections(),f=u.length-1;f>=0;f--)i.replaceRange(i.doc.lineSeparator(),u[f].anchor,u[f].head,"+input");u=i.listSelections();for(var c=0;ci&&re(u,this.pos)==0&&f==this.button};var cf,ff;function nV(i,u){var f=+new Date;return ff&&ff.compare(f,i,u)?(cf=ff=null,"triple"):cf&&cf.compare(f,i,u)?(ff=new Zy(f,i,u),cf=null,"double"):(cf=new Zy(f,i,u),ff=null,"single")}function VO(i){var u=this,f=u.display;if(!(zt(u,i)||f.activeTouch&&f.input.supportsTouch())){if(f.input.ensurePolled(),f.shift=i.shiftKey,Xa(f,i)){d||(f.scroller.draggable=!1,setTimeout(function(){return f.scroller.draggable=!0},100));return}if(!$y(u,i)){var c=wu(u,i),p=I(i),g=c?nV(c,p):"single";wt(u).focus(),p==1&&u.state.selectingText&&u.state.selectingText(i),!(c&&iV(u,p,c,g,i))&&(p==1?c?oV(u,c,g,i):B(i)==f.scroller&&ee(i):p==2?(c&&dh(u.doc,c),setTimeout(function(){return f.input.focus()},20)):p==3&&(M?u.display.input.onContextMenu(i):Iy(u)))}}}function iV(i,u,f,c,p){var g="Click";return c=="double"?g="Double"+g:c=="triple"&&(g="Triple"+g),g=(u==1?"Left":u==2?"Middle":"Right")+g,lf(i,xO(g,p),p,function(E){if(typeof E=="string"&&(E=sf[E]),!E)return!1;var O=!1;try{i.isReadOnly()&&(i.state.suppressEdits=!0),O=E(i,f)!=rt}finally{i.state.suppressEdits=!1}return O})}function aV(i,u,f){var c=i.getOption("configureMouse"),p=c?c(i,u,f):{};if(p.unit==null){var g=w?f.shiftKey&&f.metaKey:f.altKey;p.unit=g?"rectangle":u=="single"?"char":u=="double"?"word":"line"}return(p.extend==null||i.doc.extend)&&(p.extend=i.doc.extend||f.shiftKey),p.addNew==null&&(p.addNew=k?f.metaKey:f.ctrlKey),p.moveOnDrag==null&&(p.moveOnDrag=!(k?f.altKey:f.ctrlKey)),p}function oV(i,u,f,c){s?setTimeout(Mt(Uk,i),0):i.curOp.focus=Ce(Je(i));var p=aV(i,f,c),g=i.doc.sel,E;i.options.dragDrop&&te&&!i.isReadOnly()&&f=="single"&&(E=g.contains(u))>-1&&(re((E=g.ranges[E]).from(),u)<0||u.xRel>0)&&(re(E.to(),u)>0||u.xRel<0)?uV(i,c,u,p):sV(i,c,u,p)}function uV(i,u,f,c){var p=i.display,g=!1,E=xr(i,function(x){d&&(p.scroller.draggable=!1),i.state.draggingText=!1,i.state.delayingBlurEvent&&(i.hasFocus()?i.state.delayingBlurEvent=!1:Iy(i)),Tr(p.wrapper.ownerDocument,"mouseup",E),Tr(p.wrapper.ownerDocument,"mousemove",O),Tr(p.scroller,"dragstart",N),Tr(p.scroller,"drop",E),g||(ee(x),c.addNew||dh(i.doc,f,null,null,c.extend),d&&!A||s&&l==9?setTimeout(function(){p.wrapper.ownerDocument.body.focus({preventScroll:!0}),p.input.focus()},20):p.input.focus())}),O=function(x){g=g||Math.abs(u.clientX-x.clientX)+Math.abs(u.clientY-x.clientY)>=10},N=function(){return g=!0};d&&(p.scroller.draggable=!0),i.state.draggingText=E,E.copy=!c.moveOnDrag,ge(p.wrapper.ownerDocument,"mouseup",E),ge(p.wrapper.ownerDocument,"mousemove",O),ge(p.scroller,"dragstart",N),ge(p.scroller,"drop",E),i.state.delayingBlurEvent=!0,setTimeout(function(){return p.input.focus()},20),p.scroller.dragDrop&&p.scroller.dragDrop()}function UO(i,u,f){if(f=="char")return new bt(u,u);if(f=="word")return i.findWordAt(u);if(f=="line")return new bt(W(u.line,0),qe(i.doc,W(u.line+1,0)));var c=f(i,u);return new bt(c.from,c.to)}function sV(i,u,f,c){s&&Iy(i);var p=i.display,g=i.doc;ee(u);var E,O,N=g.sel,x=N.ranges;if(c.addNew&&!c.extend?(O=g.sel.contains(f),O>-1?E=x[O]:E=new bt(f,f)):(E=g.sel.primary(),O=g.sel.primIndex),c.unit=="rectangle")c.addNew||(E=new bt(f,f)),f=wu(i,u,!0,!0),O=-1;else{var V=UO(i,f,c.unit);c.extend?E=Hy(E,V.anchor,V.head,c.extend):E=V}c.addNew?O==-1?(O=x.length,tn(g,Yi(i,x.concat([E]),O),{scroll:!1,origin:"*mouse"})):x.length>1&&x[O].empty()&&c.unit=="char"&&!c.extend?(tn(g,Yi(i,x.slice(0,O).concat(x.slice(O+1)),0),{scroll:!1,origin:"*mouse"}),N=g.sel):zy(g,O,E,Nr):(O=0,tn(g,new ni([E],0),Nr),N=g.sel);var K=f;function $(ve){if(re(K,ve)!=0)if(K=ve,c.unit=="rectangle"){for(var Oe=[],Fe=i.options.tabSize,Re=De(Ae(g,f.line).text,f.ch,Fe),Xe=De(Ae(g,ve.line).text,ve.ch,Fe),Pt=Math.min(Re,Xe),Rr=Math.max(Re,Xe),$t=Math.min(f.line,ve.line),Gn=Math.min(i.lastLine(),Math.max(f.line,ve.line));$t<=Gn;$t++){var An=Ae(g,$t).text,hr=oe(An,Pt,Fe);Pt==Rr?Oe.push(new bt(W($t,hr),W($t,hr))):An.length>hr&&Oe.push(new bt(W($t,hr),W($t,oe(An,Rr,Fe))))}Oe.length||Oe.push(new bt(f,f)),tn(g,Yi(i,N.ranges.slice(0,O).concat(Oe),O),{origin:"*mouse",scroll:!1}),i.scrollIntoView(ve)}else{var Nn=E,Wr=UO(i,ve,c.unit),Dr=Nn.anchor,vr;re(Wr.anchor,Dr)>0?(vr=Wr.head,Dr=Sr(Nn.from(),Wr.anchor)):(vr=Wr.anchor,Dr=ht(Nn.to(),Wr.head));var ar=N.ranges.slice(0);ar[O]=lV(i,new bt(qe(g,Dr),vr)),tn(g,Yi(i,ar,O),Nr)}}var X=p.wrapper.getBoundingClientRect(),ne=0;function ae(ve){var Oe=++ne,Fe=wu(i,ve,!0,c.unit=="rectangle");if(!!Fe)if(re(Fe,K)!=0){i.curOp.focus=Ce(Je(i)),$(Fe);var Re=oh(p,g);(Fe.line>=Re.to||Fe.lineX.bottom?20:0;Xe&&setTimeout(xr(i,function(){ne==Oe&&(p.scroller.scrollTop+=Xe,ae(ve))}),50)}}function le(ve){i.state.selectingText=!1,ne=1/0,ve&&(ee(ve),p.input.focus()),Tr(p.wrapper.ownerDocument,"mousemove",he),Tr(p.wrapper.ownerDocument,"mouseup",Ee),g.history.lastSelOrigin=null}var he=xr(i,function(ve){ve.buttons===0||!I(ve)?le(ve):ae(ve)}),Ee=xr(i,le);i.state.selectingText=Ee,ge(p.wrapper.ownerDocument,"mousemove",he),ge(p.wrapper.ownerDocument,"mouseup",Ee)}function lV(i,u){var f=u.anchor,c=u.head,p=Ae(i.doc,f.line);if(re(f,c)==0&&f.sticky==c.sticky)return u;var g=Bn(p);if(!g)return u;var E=qn(g,f.ch,f.sticky),O=g[E];if(O.from!=f.ch&&O.to!=f.ch)return u;var N=E+(O.from==f.ch==(O.level!=1)?0:1);if(N==0||N==g.length)return u;var x;if(c.line!=f.line)x=(c.line-f.line)*(i.doc.direction=="ltr"?1:-1)>0;else{var V=qn(g,c.ch,c.sticky),K=V-E||(c.ch-f.ch)*(O.level==1?-1:1);V==N-1||V==N?x=K<0:x=K>0}var $=g[N+(x?-1:0)],X=x==($.level==1),ne=X?$.from:$.to,ae=X?"after":"before";return f.ch==ne&&f.sticky==ae?u:new bt(new W(f.line,ne,ae),c)}function GO(i,u,f,c){var p,g;if(u.touches)p=u.touches[0].clientX,g=u.touches[0].clientY;else try{p=u.clientX,g=u.clientY}catch($){return!1}if(p>=Math.floor(i.display.gutters.getBoundingClientRect().right))return!1;c&&ee(u);var E=i.display,O=E.lineDiv.getBoundingClientRect();if(g>O.bottom||!Hr(i,f))return Y(u);g-=O.top-E.viewOffset;for(var N=0;N=p){var V=fa(i.doc,g),K=i.display.gutterSpecs[N];return At(i,f,i,V,K.className,u),Y(u)}}}function $y(i,u){return GO(i,u,"gutterClick",!0)}function QO(i,u){Xa(i.display,u)||cV(i,u)||zt(i,u,"contextmenu")||M||i.display.input.onContextMenu(u)}function cV(i,u){return Hr(i,"gutterContextMenu")?GO(i,u,"gutterContextMenu",!1):!1}function KO(i){i.display.wrapper.className=i.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+i.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Qc(i)}var Ys={toString:function(){return"CodeMirror.Init"}},HO={},bh={};function fV(i){var u=i.optionHandlers;function f(c,p,g,E){i.defaults[c]=p,g&&(u[c]=E?function(O,N,x){x!=Ys&&g(O,N,x)}:g)}i.defineOption=f,i.Init=Ys,f("value","",function(c,p){return c.setValue(p)},!0),f("mode",null,function(c,p){c.doc.modeOption=p,Gy(c)},!0),f("indentUnit",2,Gy,!0),f("indentWithTabs",!1),f("smartIndent",!0),f("tabSize",4,function(c){Zc(c),Qc(c),Cn(c)},!0),f("lineSeparator",null,function(c,p){if(c.doc.lineSep=p,!!p){var g=[],E=c.doc.first;c.doc.iter(function(N){for(var x=0;;){var V=N.text.indexOf(p,x);if(V==-1)break;x=V+p.length,g.push(W(E,V))}E++});for(var O=g.length-1;O>=0;O--)Ks(c.doc,p,g[O],W(g[O].line,g[O].ch+p.length))}}),f("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(c,p,g){c.state.specialChars=new RegExp(p.source+(p.test(" ")?"":"| "),"g"),g!=Ys&&c.refresh()}),f("specialCharPlaceholder",B3,function(c){return c.refresh()},!0),f("electricChars",!0),f("inputStyle",m?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),f("spellcheck",!1,function(c,p){return c.getInputField().spellcheck=p},!0),f("autocorrect",!1,function(c,p){return c.getInputField().autocorrect=p},!0),f("autocapitalize",!1,function(c,p){return c.getInputField().autocapitalize=p},!0),f("rtlMoveVisually",!C),f("wholeLineUpdateBefore",!0),f("theme","default",function(c){KO(c),Xc(c)},!0),f("keyMap","default",function(c,p,g){var E=mh(p),O=g!=Ys&&mh(g);O&&O.detach&&O.detach(c,E),E.attach&&E.attach(c,O||null)}),f("extraKeys",null),f("configureMouse",null),f("lineWrapping",!1,pV,!0),f("gutters",[],function(c,p){c.display.gutterSpecs=Vy(p,c.options.lineNumbers),Xc(c)},!0),f("fixedGutter",!0,function(c,p){c.display.gutters.style.left=p?Ay(c.display)+"px":"0",c.refresh()},!0),f("coverGutterNextToScrollbar",!1,function(c){return Vs(c)},!0),f("scrollbarStyle","native",function(c){Wk(c),Vs(c),c.display.scrollbars.setScrollTop(c.doc.scrollTop),c.display.scrollbars.setScrollLeft(c.doc.scrollLeft)},!0),f("lineNumbers",!1,function(c,p){c.display.gutterSpecs=Vy(c.options.gutters,p),Xc(c)},!0),f("firstLineNumber",1,Xc,!0),f("lineNumberFormatter",function(c){return c},Xc,!0),f("showCursorWhenSelecting",!1,Kc,!0),f("resetSelectionOnContextMenu",!0),f("lineWiseCopyCut",!0),f("pasteLinesPerSelection",!0),f("selectionsMayTouch",!1),f("readOnly",!1,function(c,p){p=="nocursor"&&(qs(c),c.display.input.blur()),c.display.input.readOnlyChanged(p)}),f("screenReaderLabel",null,function(c,p){p=p===""?null:p,c.display.input.screenReaderLabelChanged(p)}),f("disableInput",!1,function(c,p){p||c.display.input.reset()},!0),f("dragDrop",!0,dV),f("allowDropFileTypes",null),f("cursorBlinkRate",530),f("cursorScrollMargin",0),f("cursorHeight",1,Kc,!0),f("singleCursorHeightPerLine",!0,Kc,!0),f("workTime",100),f("workDelay",100),f("flattenSpans",!0,Zc,!0),f("addModeClass",!1,Zc,!0),f("pollInterval",100),f("undoDepth",200,function(c,p){return c.doc.history.undoDepth=p}),f("historyEventDelay",1250),f("viewportMargin",10,function(c){return c.refresh()},!0),f("maxHighlightLength",1e4,Zc,!0),f("moveInputWithCursor",!0,function(c,p){p||c.display.input.resetPosition()}),f("tabindex",null,function(c,p){return c.display.input.getField().tabIndex=p||""}),f("autofocus",null),f("direction","ltr",function(c,p){return c.doc.setDirection(p)},!0),f("phrases",null)}function dV(i,u,f){var c=f&&f!=Ys;if(!u!=!c){var p=i.display.dragFunctions,g=u?ge:Tr;g(i.display.scroller,"dragstart",p.start),g(i.display.scroller,"dragenter",p.enter),g(i.display.scroller,"dragover",p.over),g(i.display.scroller,"dragleave",p.leave),g(i.display.scroller,"drop",p.drop)}}function pV(i){i.options.lineWrapping?(we(i.display.wrapper,"CodeMirror-wrap"),i.display.sizer.style.minWidth="",i.display.sizerWidth=null):(z(i.display.wrapper,"CodeMirror-wrap"),by(i)),Ny(i),Cn(i),Qc(i),setTimeout(function(){return Vs(i)},100)}function Wt(i,u){var f=this;if(!(this instanceof Wt))return new Wt(i,u);this.options=u=u?Ie(u):{},Ie(HO,u,!1);var c=u.value;typeof c=="string"?c=new wn(c,u.mode,null,u.lineSeparator,u.direction):u.mode&&(c.modeOption=u.mode),this.doc=c;var p=new Wt.inputStyles[u.inputStyle](this),g=this.display=new OB(i,c,p,u);g.wrapper.CodeMirror=this,KO(this),u.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Wk(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new Pe,keySeq:null,specialChars:null},u.autofocus&&!m&&g.input.focus(),s&&l<11&&setTimeout(function(){return f.display.input.reset(!0)},20),hV(this),KB(),xu(this),this.curOp.forceUpdate=!0,iO(this,c),u.autofocus&&!m||this.hasFocus()?setTimeout(function(){f.hasFocus()&&!f.state.focused&&Ry(f)},20):qs(this);for(var E in bh)bh.hasOwnProperty(E)&&bh[E](this,u[E],Ys);Xk(this),u.finishInit&&u.finishInit(this);for(var O=0;O20*20}ge(u.scroller,"touchstart",function(N){if(!zt(i,N)&&!g(N)&&!$y(i,N)){u.input.ensurePolled(),clearTimeout(f);var x=+new Date;u.activeTouch={start:x,moved:!1,prev:x-c.end<=300?c:null},N.touches.length==1&&(u.activeTouch.left=N.touches[0].pageX,u.activeTouch.top=N.touches[0].pageY)}}),ge(u.scroller,"touchmove",function(){u.activeTouch&&(u.activeTouch.moved=!0)}),ge(u.scroller,"touchend",function(N){var x=u.activeTouch;if(x&&!Xa(u,N)&&x.left!=null&&!x.moved&&new Date-x.start<300){var V=i.coordsChar(u.activeTouch,"page"),K;!x.prev||E(x,x.prev)?K=new bt(V,V):!x.prev.prev||E(x,x.prev.prev)?K=i.findWordAt(V):K=new bt(W(V.line,0),qe(i.doc,W(V.line+1,0))),i.setSelection(K.anchor,K.head),i.focus(),ee(N)}p()}),ge(u.scroller,"touchcancel",p),ge(u.scroller,"scroll",function(){u.scroller.clientHeight&&(zc(i,u.scroller.scrollTop),Nu(i,u.scroller.scrollLeft,!0),At(i,"scroll",i))}),ge(u.scroller,"mousewheel",function(N){return eO(i,N)}),ge(u.scroller,"DOMMouseScroll",function(N){return eO(i,N)}),ge(u.wrapper,"scroll",function(){return u.wrapper.scrollTop=u.wrapper.scrollLeft=0}),u.dragFunctions={enter:function(N){zt(i,N)||J(N)},over:function(N){zt(i,N)||(QB(i,N),J(N))},start:function(N){return GB(i,N)},drop:xr(i,UB),leave:function(N){zt(i,N)||wO(i)}};var O=u.input.getField();ge(O,"keyup",function(N){return qO.call(i,N)}),ge(O,"keydown",xr(i,MO)),ge(O,"keypress",xr(i,BO)),ge(O,"focus",function(N){return Ry(i,N)}),ge(O,"blur",function(N){return qs(i,N)})}var e0=[];Wt.defineInitHook=function(i){return e0.push(i)};function df(i,u,f,c){var p=i.doc,g;f==null&&(f="add"),f=="smart"&&(p.mode.indent?g=qc(i,u).state:f="prev");var E=i.options.tabSize,O=Ae(p,u),N=De(O.text,null,E);O.stateAfter&&(O.stateAfter=null);var x=O.text.match(/^\s*/)[0],V;if(!c&&!/\S/.test(O.text))V=0,f="not";else if(f=="smart"&&(V=p.mode.indent(g,O.text.slice(x.length),O.text),V==rt||V>150)){if(!c)return;f="prev"}f=="prev"?u>p.first?V=De(Ae(p,u-1).text,null,E):V=0:f=="add"?V=N+i.options.indentUnit:f=="subtract"?V=N-i.options.indentUnit:typeof f=="number"&&(V=N+f),V=Math.max(0,V);var K="",$=0;if(i.options.indentWithTabs)for(var X=Math.floor(V/E);X;--X)$+=E,K+=" ";if($E,N=en(u),x=null;if(O&&c.ranges.length>1)if(Ji&&Ji.text.join(` -`)==u){if(c.ranges.length%Ji.text.length==0){x=[];for(var V=0;V=0;$--){var X=c.ranges[$],ne=X.from(),ae=X.to();X.empty()&&(f&&f>0?ne=W(ne.line,ne.ch-f):i.state.overwrite&&!O?ae=W(ae.line,Math.min(Ae(g,ae.line).text.length,ae.ch+ue(N).length)):O&&Ji&&Ji.lineWise&&Ji.text.join(` -`)==N.join(` -`)&&(ne=ae=W(ne.line,0)));var le={from:ne,to:ae,text:x?x[$%x.length]:N,origin:p||(O?"paste":i.state.cutIncoming>E?"cut":"+input")};Qs(i.doc,le),Lr(i,"inputRead",i,le)}u&&!O&&WO(i,u),Bs(i),i.curOp.updateInput<2&&(i.curOp.updateInput=K),i.curOp.typing=!0,i.state.pasteIncoming=i.state.cutIncoming=-1}function zO(i,u){var f=i.clipboardData&&i.clipboardData.getData("Text");if(f)return i.preventDefault(),!u.isReadOnly()&&!u.options.disableInput&&u.hasFocus()&&Un(u,function(){return t0(u,f,0,null,"paste")}),!0}function WO(i,u){if(!(!i.options.electricChars||!i.options.smartIndent))for(var f=i.doc.sel,c=f.ranges.length-1;c>=0;c--){var p=f.ranges[c];if(!(p.head.ch>100||c&&f.ranges[c-1].head.line==p.head.line)){var g=i.getModeAt(p.head),E=!1;if(g.electricChars){for(var O=0;O-1){E=df(i,p.head.line,"smart");break}}else g.electricInput&&g.electricInput.test(Ae(i.doc,p.head.line).text.slice(0,p.head.ch))&&(E=df(i,p.head.line,"smart"));E&&Lr(i,"electricInput",i,p.head.line)}}}function YO(i){for(var u=[],f=[],c=0;cg&&(df(this,O.head.line,c,!0),g=O.head.line,E==this.doc.sel.primIndex&&Bs(this));else{var N=O.from(),x=O.to(),V=Math.max(g,N.line);g=Math.min(this.lastLine(),x.line-(x.ch?0:1))+1;for(var K=V;K0&&zy(this.doc,E,new bt(N,$[E].to()),ut)}}}),getTokenAt:function(c,p){return ok(this,c,p)},getLineTokens:function(c,p){return ok(this,W(c),p,!0)},getTokenTypeAt:function(c){c=qe(this.doc,c);var p=nk(this,Ae(this.doc,c.line)),g=0,E=(p.length-1)/2,O=c.ch,N;if(O==0)N=p[2];else for(;;){var x=g+E>>1;if((x?p[x*2-1]:0)>=O)E=x;else if(p[x*2+1]N&&(c=N,E=!0),O=Ae(this.doc,c)}else O=c;return th(this,O,{top:0,left:0},p||"page",g||E).top+(E?this.doc.height-Ja(O):0)},defaultTextHeight:function(){return Ps(this.display)},defaultCharWidth:function(){return Ms(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(c,p,g,E,O){var N=this.display;c=Wi(this,qe(this.doc,c));var x=c.bottom,V=c.left;if(p.style.position="absolute",p.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(p),N.sizer.appendChild(p),E=="over")x=c.top;else if(E=="above"||E=="near"){var K=Math.max(N.wrapper.clientHeight,this.doc.height),$=Math.max(N.sizer.clientWidth,N.lineSpace.clientWidth);(E=="above"||c.bottom+p.offsetHeight>K)&&c.top>p.offsetHeight?x=c.top-p.offsetHeight:c.bottom+p.offsetHeight<=K&&(x=c.bottom),V+p.offsetWidth>$&&(V=$-p.offsetWidth)}p.style.top=x+"px",p.style.left=p.style.right="",O=="right"?(V=N.sizer.clientWidth-p.offsetWidth,p.style.right="0px"):(O=="left"?V=0:O=="middle"&&(V=(N.sizer.clientWidth-p.offsetWidth)/2),p.style.left=V+"px"),g&&dB(this,{left:V,top:x,right:V+p.offsetWidth,bottom:x+p.offsetHeight})},triggerOnKeyDown:dn(MO),triggerOnKeyPress:dn(BO),triggerOnKeyUp:qO,triggerOnMouseDown:dn(VO),execCommand:function(c){if(sf.hasOwnProperty(c))return sf[c].call(null,this)},triggerElectric:dn(function(c){WO(this,c)}),findPosH:function(c,p,g,E){var O=1;p<0&&(O=-1,p=-p);for(var N=qe(this.doc,c),x=0;x0&&V(g.charAt(E-1));)--E;for(;O.5||this.options.lineWrapping)&&Ny(this),At(this,"refresh",this)}),swapDoc:dn(function(c){var p=this.doc;return p.cm=null,this.state.selectingText&&this.state.selectingText(),iO(this,c),Qc(this),this.display.input.reset(),Hc(this,c.scrollLeft,c.scrollTop),this.curOp.forceScroll=!0,Lr(this,"swapDoc",this,p),p}),phrase:function(c){var p=this.options.phrases;return p&&Object.prototype.hasOwnProperty.call(p,c)?p[c]:c},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},zr(i),i.registerHelper=function(c,p,g){f.hasOwnProperty(c)||(f[c]=i[c]={_global:[]}),f[c][p]=g},i.registerGlobalHelper=function(c,p,g,E){i.registerHelper(c,p,E),f[c]._global.push({pred:g,val:E})}}function r0(i,u,f,c,p){var g=u,E=f,O=Ae(i,u.line),N=p&&i.direction=="rtl"?-f:f;function x(){var Ee=u.line+N;return Ee=i.first+i.size?!1:(u=new W(Ee,u.ch,u.sticky),O=Ae(i,Ee))}function V(Ee){var ve;if(c=="codepoint"){var Oe=O.text.charCodeAt(u.ch+(f>0?0:-1));if(isNaN(Oe))ve=null;else{var Fe=f>0?Oe>=55296&&Oe<56320:Oe>=56320&&Oe<57343;ve=new W(u.line,Math.max(0,Math.min(O.text.length,u.ch+f*(Fe?2:1))),-f)}}else p?ve=JB(i.cm,O,u,f):ve=Yy(O,u,f);if(ve==null)if(!Ee&&x())u=Jy(p,i.cm,O,u.line,N);else return!1;else u=ve;return!0}if(c=="char"||c=="codepoint")V();else if(c=="column")V(!0);else if(c=="word"||c=="group")for(var K=null,$=c=="group",X=i.cm&&i.cm.getHelper(u,"wordChars"),ne=!0;!(f<0&&!V(!ne));ne=!1){var ae=O.text.charAt(u.ch)||` -`,le=mi(ae,X)?"w":$&&ae==` -`?"n":!$||/\s/.test(ae)?null:"p";if($&&!ne&&!le&&(le="s"),K&&K!=le){f<0&&(f=1,V(),u.sticky="after");break}if(le&&(K=le),f>0&&!V(!ne))break}var he=hh(i,u,g,E,!0);return Me(g,he)&&(he.hitSide=!0),he}function ZO(i,u,f,c){var p=i.doc,g=u.left,E;if(c=="page"){var O=Math.min(i.display.wrapper.clientHeight,wt(i).innerHeight||p(i).documentElement.clientHeight),N=Math.max(O-.5*Ps(i.display),3);E=(f>0?u.bottom:u.top)+f*N}else c=="line"&&(E=f>0?u.bottom+3:u.top-3);for(var x;x=Oy(i,g,E),!!x.outside;){if(f<0?E<=0:E>=p.height){x.hitSide=!0;break}E+=f*5}return x}var Nt=function(i){this.cm=i,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new Pe,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Nt.prototype.init=function(i){var u=this,f=this,c=f.cm,p=f.div=i.lineDiv;p.contentEditable=!0,JO(p,c.options.spellcheck,c.options.autocorrect,c.options.autocapitalize);function g(O){for(var N=O.target;N;N=N.parentNode){if(N==p)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(N.className))break}return!1}ge(p,"paste",function(O){!g(O)||zt(c,O)||zO(O,c)||l<=11&&setTimeout(xr(c,function(){return u.updateFromDOM()}),20)}),ge(p,"compositionstart",function(O){u.composing={data:O.data,done:!1}}),ge(p,"compositionupdate",function(O){u.composing||(u.composing={data:O.data,done:!1})}),ge(p,"compositionend",function(O){u.composing&&(O.data!=u.composing.data&&u.readFromDOMSoon(),u.composing.done=!0)}),ge(p,"touchstart",function(){return f.forceCompositionEnd()}),ge(p,"input",function(){u.composing||u.readFromDOMSoon()});function E(O){if(!(!g(O)||zt(c,O))){if(c.somethingSelected())Th({lineWise:!1,text:c.getSelections()}),O.type=="cut"&&c.replaceSelection("",null,"cut");else if(c.options.lineWiseCopyCut){var N=YO(c);Th({lineWise:!0,text:N.text}),O.type=="cut"&&c.operation(function(){c.setSelections(N.ranges,0,ut),c.replaceSelection("",null,"cut")})}else return;if(O.clipboardData){O.clipboardData.clearData();var x=Ji.text.join(` -`);if(O.clipboardData.setData("Text",x),O.clipboardData.getData("Text")==x){O.preventDefault();return}}var V=XO(),K=V.firstChild;c.display.lineSpace.insertBefore(V,c.display.lineSpace.firstChild),K.value=Ji.text.join(` -`);var $=Ce(p.ownerDocument);pt(K),setTimeout(function(){c.display.lineSpace.removeChild(V),$.focus(),$==p&&f.showPrimarySelection()},50)}}ge(p,"copy",E),ge(p,"cut",E)},Nt.prototype.screenReaderLabelChanged=function(i){i?this.div.setAttribute("aria-label",i):this.div.removeAttribute("aria-label")},Nt.prototype.prepareSelection=function(){var i=Vk(this.cm,!1);return i.focus=Ce(this.div.ownerDocument)==this.div,i},Nt.prototype.showSelection=function(i,u){!i||!this.cm.display.view.length||((i.focus||u)&&this.showPrimarySelection(),this.showMultipleSelections(i))},Nt.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Nt.prototype.showPrimarySelection=function(){var i=this.getSelection(),u=this.cm,f=u.doc.sel.primary(),c=f.from(),p=f.to();if(u.display.viewTo==u.display.viewFrom||c.line>=u.display.viewTo||p.line=u.display.viewFrom&&$O(u,c)||{node:O[0].measure.map[2],offset:0},x=p.linei.firstLine()&&(c=W(c.line-1,Ae(i.doc,c.line-1).length)),p.ch==Ae(i.doc,p.line).text.length&&p.lineu.viewTo-1)return!1;var g,E,O;c.line==u.viewFrom||(g=Au(i,c.line))==0?(E=yt(u.view[0].line),O=u.view[0].node):(E=yt(u.view[g].line),O=u.view[g-1].node.nextSibling);var N=Au(i,p.line),x,V;if(N==u.view.length-1?(x=u.viewTo-1,V=u.lineDiv.lastChild):(x=yt(u.view[N+1].line)-1,V=u.view[N+1].node.previousSibling),!O)return!1;for(var K=i.doc.splitLines(mV(i,O,V,E,x)),$=Wa(i.doc,W(E,0),W(x,Ae(i.doc,x).text.length));K.length>1&&$.length>1;)if(ue(K)==ue($))K.pop(),$.pop(),x--;else if(K[0]==$[0])K.shift(),$.shift(),E++;else break;for(var X=0,ne=0,ae=K[0],le=$[0],he=Math.min(ae.length,le.length);Xc.ch&&Ee.charCodeAt(Ee.length-ne-1)==ve.charCodeAt(ve.length-ne-1);)X--,ne++;K[K.length-1]=Ee.slice(0,Ee.length-ne).replace(/^\u200b+/,""),K[0]=K[0].slice(X).replace(/\u200b+$/,"");var Fe=W(E,X),Re=W(x,$.length?ue($).length-ne:0);if(K.length>1||K[0]||re(Fe,Re))return Ks(i.doc,K,Fe,Re,"+input"),!0},Nt.prototype.ensurePolled=function(){this.forceCompositionEnd()},Nt.prototype.reset=function(){this.forceCompositionEnd()},Nt.prototype.forceCompositionEnd=function(){!this.composing||(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Nt.prototype.readFromDOMSoon=function(){var i=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(i.readDOMTimeout=null,i.composing)if(i.composing.done)i.composing=null;else return;i.updateFromDOM()},80))},Nt.prototype.updateFromDOM=function(){var i=this;(this.cm.isReadOnly()||!this.pollContent())&&Un(this.cm,function(){return Cn(i.cm)})},Nt.prototype.setUneditable=function(i){i.contentEditable="false"},Nt.prototype.onKeyPress=function(i){i.charCode==0||this.composing||(i.preventDefault(),this.cm.isReadOnly()||xr(this.cm,t0)(this.cm,String.fromCharCode(i.charCode==null?i.keyCode:i.charCode),0))},Nt.prototype.readOnlyChanged=function(i){this.div.contentEditable=String(i!="nocursor")},Nt.prototype.onContextMenu=function(){},Nt.prototype.resetPosition=function(){},Nt.prototype.needsContentAttribute=!0;function $O(i,u){var f=Sy(i,u.line);if(!f||f.hidden)return null;var c=Ae(i.doc,u.line),p=Ck(f,c,u.line),g=Bn(c,i.doc.direction),E="left";if(g){var O=qn(g,u.ch);E=O%2?"right":"left"}var N=Nk(p.map,u.ch,E);return N.offset=N.collapse=="right"?N.end:N.start,N}function gV(i){for(var u=i;u;u=u.parentNode)if(/CodeMirror-gutter-wrapper/.test(u.className))return!0;return!1}function Js(i,u){return u&&(i.bad=!0),i}function mV(i,u,f,c,p){var g="",E=!1,O=i.doc.lineSeparator(),N=!1;function x(X){return function(ne){return ne.id==X}}function V(){E&&(g+=O,N&&(g+=O),E=N=!1)}function K(X){X&&(V(),g+=X)}function $(X){if(X.nodeType==1){var ne=X.getAttribute("cm-text");if(ne){K(ne);return}var ae=X.getAttribute("cm-marker"),le;if(ae){var he=i.findMarks(W(c,0),W(p+1,0),x(+ae));he.length&&(le=he[0].find(0))&&K(Wa(i.doc,le.from,le.to).join(O));return}if(X.getAttribute("contenteditable")=="false")return;var Ee=/^(pre|div|p|li|table|br)$/i.test(X.nodeName);if(!/^br$/i.test(X.nodeName)&&X.textContent.length==0)return;Ee&&V();for(var ve=0;ve=9&&u.hasSelection&&(u.hasSelection=null),f.poll()}),ge(p,"paste",function(E){zt(c,E)||zO(E,c)||(c.state.pasteIncoming=+new Date,f.fastPoll())});function g(E){if(!zt(c,E)){if(c.somethingSelected())Th({lineWise:!1,text:c.getSelections()});else if(c.options.lineWiseCopyCut){var O=YO(c);Th({lineWise:!0,text:O.text}),E.type=="cut"?c.setSelections(O.ranges,null,ut):(f.prevInput="",p.value=O.text.join(` -`),pt(p))}else return;E.type=="cut"&&(c.state.cutIncoming=+new Date)}}ge(p,"cut",g),ge(p,"copy",g),ge(i.scroller,"paste",function(E){if(!(Xa(i,E)||zt(c,E))){if(!p.dispatchEvent){c.state.pasteIncoming=+new Date,f.focus();return}var O=new Event("paste");O.clipboardData=E.clipboardData,p.dispatchEvent(O)}}),ge(i.lineSpace,"selectstart",function(E){Xa(i,E)||ee(E)}),ge(p,"compositionstart",function(){var E=c.getCursor("from");f.composing&&f.composing.range.clear(),f.composing={start:E,range:c.markText(E,c.getCursor("to"),{className:"CodeMirror-composing"})}}),ge(p,"compositionend",function(){f.composing&&(f.poll(),f.composing.range.clear(),f.composing=null)})},sr.prototype.createField=function(i){this.wrapper=XO(),this.textarea=this.wrapper.firstChild},sr.prototype.screenReaderLabelChanged=function(i){i?this.textarea.setAttribute("aria-label",i):this.textarea.removeAttribute("aria-label")},sr.prototype.prepareSelection=function(){var i=this.cm,u=i.display,f=i.doc,c=Vk(i);if(i.options.moveInputWithCursor){var p=Wi(i,f.sel.primary().head,"div"),g=u.wrapper.getBoundingClientRect(),E=u.lineDiv.getBoundingClientRect();c.teTop=Math.max(0,Math.min(u.wrapper.clientHeight-10,p.top+E.top-g.top)),c.teLeft=Math.max(0,Math.min(u.wrapper.clientWidth-10,p.left+E.left-g.left))}return c},sr.prototype.showSelection=function(i){var u=this.cm,f=u.display;G(f.cursorDiv,i.cursors),G(f.selectionDiv,i.selection),i.teTop!=null&&(this.wrapper.style.top=i.teTop+"px",this.wrapper.style.left=i.teLeft+"px")},sr.prototype.reset=function(i){if(!(this.contextMenuPending||this.composing&&i)){var u=this.cm;if(this.resetting=!0,u.somethingSelected()){this.prevInput="";var f=u.getSelection();this.textarea.value=f,u.state.focused&&pt(this.textarea),s&&l>=9&&(this.hasSelection=f)}else i||(this.prevInput=this.textarea.value="",s&&l>=9&&(this.hasSelection=null));this.resetting=!1}},sr.prototype.getField=function(){return this.textarea},sr.prototype.supportsTouch=function(){return!1},sr.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!m||Ce(this.textarea.ownerDocument)!=this.textarea))try{this.textarea.focus()}catch(i){}},sr.prototype.blur=function(){this.textarea.blur()},sr.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},sr.prototype.receivedFocus=function(){this.slowPoll()},sr.prototype.slowPoll=function(){var i=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){i.poll(),i.cm.state.focused&&i.slowPoll()})},sr.prototype.fastPoll=function(){var i=!1,u=this;u.pollingFast=!0;function f(){var c=u.poll();!c&&!i?(i=!0,u.polling.set(60,f)):(u.pollingFast=!1,u.slowPoll())}u.polling.set(20,f)},sr.prototype.poll=function(){var i=this,u=this.cm,f=this.textarea,c=this.prevInput;if(this.contextMenuPending||this.resetting||!u.state.focused||Er(f)&&!c&&!this.composing||u.isReadOnly()||u.options.disableInput||u.state.keySeq)return!1;var p=f.value;if(p==c&&!u.somethingSelected())return!1;if(s&&l>=9&&this.hasSelection===p||k&&/[\uf700-\uf7ff]/.test(p))return u.display.input.reset(),!1;if(u.doc.sel==u.display.selForContextMenu){var g=p.charCodeAt(0);if(g==8203&&!c&&(c="\u200B"),g==8666)return this.reset(),this.cm.execCommand("undo")}for(var E=0,O=Math.min(c.length,p.length);E1e3||p.indexOf(` -`)>-1?f.value=i.prevInput="":i.prevInput=p,i.composing&&(i.composing.range.clear(),i.composing.range=u.markText(i.composing.start,u.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},sr.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},sr.prototype.onKeyPress=function(){s&&l>=9&&(this.hasSelection=null),this.fastPoll()},sr.prototype.onContextMenu=function(i){var u=this,f=u.cm,c=f.display,p=u.textarea;u.contextMenuPending&&u.contextMenuPending();var g=wu(f,i),E=c.scroller.scrollTop;if(!g||T)return;var O=f.options.resetSelectionOnContextMenu;O&&f.doc.sel.contains(g)==-1&&xr(f,tn)(f.doc,Oo(g),ut);var N=p.style.cssText,x=u.wrapper.style.cssText,V=u.wrapper.offsetParent.getBoundingClientRect();u.wrapper.style.cssText="position: static",p.style.cssText=`position: absolute; width: 30px; height: 30px; - top: `+(i.clientY-V.top-5)+"px; left: "+(i.clientX-V.left-5)+`px; +b`.split(/\n/).length!=3?function(a){for(var u=0,f=[],c=a.length;u<=c;){var p=a.indexOf(` +`,u);p==-1&&(p=a.length);var g=a.slice(u,a.charAt(p-1)=="\r"?p-1:p),E=g.indexOf("\r");E!=-1?(f.push(g.slice(0,E)),u+=E+1):(f.push(g),u=p+1)}return f}:function(a){return a.split(/\r\n?|\n/)},Rr=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(u){return!1}}:function(a){var u;try{u=a.ownerDocument.selection.createRange()}catch(f){}return!u||u.parentElement()!=a?!1:u.compareEndPoints("StartToEnd",u)!=0},jr=function(){var a=P("div");return"oncopy"in a?!0:(a.setAttribute("oncopy","return;"),typeof a.oncopy=="function")}(),et=null;function sa(a){if(et!=null)return et;var u=Q(a,P("span","x")),f=u.getBoundingClientRect(),c=xe(u,0,1).getBoundingClientRect();return et=Math.abs(f.left-c.left)>1}var Cn={},la={};function ch(a,u){arguments.length>2&&(u.dependencies=Array.prototype.slice.call(arguments,2)),Cn[a]=u}function Js(a,u){la[a]=u}function ui(a){if(typeof a=="string"&&la.hasOwnProperty(a))a=la[a];else if(a&&typeof a.name=="string"&&la.hasOwnProperty(a.name)){var u=la[a.name];typeof u=="string"&&(u={name:u}),a=st(u,a),a.name=u.name}else{if(typeof a=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return ui("application/xml");if(typeof a=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(a))return ui("application/json")}return typeof a=="string"?{name:a}:a||{name:"null"}}function io(a,u){u=ui(u);var f=Cn[u.name];if(!f)return io(a,"text/plain");var c=f(a,u);if(jo.hasOwnProperty(u.name)){var p=jo[u.name];for(var g in p)!p.hasOwnProperty(g)||(c.hasOwnProperty(g)&&(c["_"+g]=c[g]),c[g]=p[g])}if(c.name=u.name,u.helperType&&(c.helperType=u.helperType),u.modeProps)for(var E in u.modeProps)c[E]=u.modeProps[E];return c}var jo={};function fh(a,u){var f=jo.hasOwnProperty(a)?jo[a]:jo[a]={};Ie(u,f)}function ao(a,u){if(u===!0)return u;if(a.copyState)return a.copyState(u);var f={};for(var c in u){var p=u[c];p instanceof Array&&(p=p.concat([])),f[c]=p}return f}function Po(a,u){for(var f;a.innerMode&&(f=a.innerMode(u),!(!f||f.mode==a));)u=f.state,a=f.mode;return f||{mode:a,state:u}}function nf(a,u,f){return a.startState?a.startState(u,f):!0}var gr=function(a,u,f){this.pos=this.start=0,this.string=a,this.tabSize=u||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=f};gr.prototype.eol=function(){return this.pos>=this.string.length},gr.prototype.sol=function(){return this.pos==this.lineStart},gr.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},gr.prototype.next=function(){if(this.posu},gr.prototype.eatSpace=function(){for(var a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>a},gr.prototype.skipToEnd=function(){this.pos=this.string.length},gr.prototype.skipTo=function(a){var u=this.string.indexOf(a,this.pos);if(u>-1)return this.pos=u,!0},gr.prototype.backUp=function(a){this.pos-=a},gr.prototype.column=function(){return this.lastColumnPos0?null:(g&&u!==!1&&(this.pos+=g[0].length),g)}},gr.prototype.current=function(){return this.string.slice(this.start,this.pos)},gr.prototype.hideFirstChars=function(a,u){this.lineStart+=a;try{return u()}finally{this.lineStart-=a}},gr.prototype.lookAhead=function(a){var u=this.lineOracle;return u&&u.lookAhead(a)},gr.prototype.baseToken=function(){var a=this.lineOracle;return a&&a.baseToken(this.pos)};function Ae(a,u){if(u-=a.first,u<0||u>=a.size)throw new Error("There is no line "+(u+a.first)+" in the document.");for(var f=a;!f.lines;)for(var c=0;;++c){var p=f.children[c],g=p.chunkSize();if(u=a.first&&uf?W(f,Ae(a,f).text.length):zQ(u,Ae(a,u.line).text.length)}function zQ(a,u){var f=a.ch;return f==null||f>u?W(a.line,u):f<0?W(a.line,0):a}function nN(a,u){for(var f=[],c=0;cthis.maxLookAhead&&(this.maxLookAhead=a),u},Na.prototype.baseToken=function(a){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=a;)this.baseTokenPos+=2;var u=this.baseTokens[this.baseTokenPos+1];return{type:u&&u.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-a}},Na.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Na.fromSaved=function(a,u,f){return u instanceof dh?new Na(a,ao(a.mode,u.state),f,u.lookAhead):new Na(a,ao(a.mode,u),f)},Na.prototype.save=function(a){var u=a!==!1?ao(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new dh(u,this.maxLookAhead):u};function iN(a,u,f,c){var p=[a.state.modeGen],g={};cN(a,u.text,a.doc.mode,f,function(I,U){return p.push(I,U)},g,c);for(var E=f.state,N=function(I){f.baseTokens=p;var U=a.state.overlays[I],K=1,$=0;f.state=!0,cN(a,u.text,U.mode,f,function(X,ae){for(var le=K;$X&&p.splice(K,1,X,p[K+1],pe),K+=2,$=Math.min(X,pe)}if(!!ae)if(U.opaque)p.splice(le,K-le,X,"overlay "+ae),K=le+2;else for(;lea.options.maxHighlightLength&&ao(a.doc.mode,c.state),g=iN(a,u,c);p&&(c.state=p),u.stateAfter=c.save(!p),u.styles=g.styles,g.classes?u.styleClasses=g.classes:u.styleClasses&&(u.styleClasses=null),f===a.doc.highlightFrontier&&(a.doc.modeFrontier=Math.max(a.doc.modeFrontier,++a.doc.highlightFrontier))}return u.styles}function af(a,u,f){var c=a.doc,p=a.display;if(!c.mode.startState)return new Na(c,!0,u);var g=WQ(a,u,f),E=g>c.first&&Ae(c,g-1).stateAfter,N=E?Na.fromSaved(c,E,g):new Na(c,nf(c.mode),g);return c.iter(g,u,function(C){Wy(a,C.text,N);var I=N.line;C.stateAfter=I==u-1||I%5==0||I>=p.viewFrom&&Iu.start)return g}throw new Error("Mode "+a.name+" failed to advance stream.")}var uN=function(a,u,f){this.start=a.start,this.end=a.pos,this.string=a.current(),this.type=u||null,this.state=f};function sN(a,u,f,c){var p=a.doc,g=p.mode,E;u=Ye(p,u);var N=Ae(p,u.line),C=af(a,u.line,f),I=new gr(N.text,a.options.tabSize,C),U;for(c&&(U=[]);(c||I.posa.options.maxHighlightLength?(N=!1,E&&Wy(a,u,c,U.pos),U.pos=u.length,K=null):K=lN(Yy(f,U,c.state,$),g),$){var X=$[0].name;X&&(K="m-"+(K?X+" "+K:X))}if(!N||I!=K){for(;CE;--N){if(N<=g.first)return g.first;var C=Ae(g,N-1),I=C.stateAfter;if(I&&(!f||N+(I instanceof dh?I.lookAhead:0)<=g.modeFrontier))return N;var U=te(C.text,null,a.options.tabSize);(p==null||c>U)&&(p=N-1,c=U)}return p}function YQ(a,u){if(a.modeFrontier=Math.min(a.modeFrontier,u),!(a.highlightFrontierf;c--){var p=Ae(a,c).stateAfter;if(p&&(!(p instanceof dh)||c+p.lookAhead=u:g.to>u);(c||(c=[])).push(new ph(E,g.from,C?null:g.to))}}return c}function t2(a,u,f){var c;if(a)for(var p=0;p=u:g.to>u);if(N||g.from==u&&E.type=="bookmark"&&(!f||g.marker.insertLeft)){var C=g.from==null||(E.inclusiveLeft?g.from<=u:g.from0&&N)for(var Ce=0;Ce0)){var U=[C,1],K=ie(I.from,N.from),$=ie(I.to,N.to);(K<0||!E.inclusiveLeft&&!K)&&U.push({from:I.from,to:N.from}),($>0||!E.inclusiveRight&&!$)&&U.push({from:N.to,to:I.to}),p.splice.apply(p,U),C+=U.length-3}}return p}function pN(a){var u=a.markedSpans;if(!!u){for(var f=0;fu)&&(!c||Xy(c,g.marker)<0)&&(c=g.marker)}return c}function mN(a,u,f,c,p){var g=Ae(a,u),E=uo&&g.markedSpans;if(E)for(var N=0;N=0&&K<=0||U<=0&&K>=0)&&(U<=0&&(C.marker.inclusiveRight&&p.inclusiveLeft?ie(I.to,f)>=0:ie(I.to,f)>0)||U>=0&&(C.marker.inclusiveRight&&p.inclusiveLeft?ie(I.from,c)<=0:ie(I.from,c)<0)))return!0}}}function ca(a){for(var u;u=gN(a);)a=u.find(-1,!0).line;return a}function i2(a){for(var u;u=gh(a);)a=u.find(1,!0).line;return a}function a2(a){for(var u,f;u=gh(a);)a=u.find(1,!0).line,(f||(f=[])).push(a);return f}function Zy(a,u){var f=Ae(a,u),c=ca(f);return f==c?u:wt(c)}function yN(a,u){if(u>a.lastLine())return u;var f=Ae(a,u),c;if(!Fo(a,f))return u;for(;c=gh(f);)f=c.find(1,!0).line;return wt(f)+1}function Fo(a,u){var f=uo&&u.markedSpans;if(f){for(var c=void 0,p=0;pu.maxLineLength&&(u.maxLineLength=p,u.maxLine=c)})}var Zs=function(a,u,f){this.text=a,hN(this,u),this.height=f?f(this):1};Zs.prototype.lineNo=function(){return wt(this)},un(Zs);function o2(a,u,f,c){a.text=u,a.stateAfter&&(a.stateAfter=null),a.styles&&(a.styles=null),a.order!=null&&(a.order=null),pN(a),hN(a,f);var p=c?c(a):1;p!=a.height&&Fi(a,p)}function u2(a){a.parent=null,pN(a)}var s2={},l2={};function bN(a,u){if(!a||/^\s*$/.test(a))return null;var f=u.addModeClass?l2:s2;return f[a]||(f[a]=a.replace(/\S+/g,"cm-$&"))}function TN(a,u){var f=he("span",null,null,d?"padding-right: .1px":null),c={pre:he("pre",[f],"CodeMirror-line"),content:f,col:0,pos:0,cm:a,trailingSpace:!1,splitSpaces:a.getOption("lineWrapping")};u.measure={};for(var p=0;p<=(u.rest?u.rest.length:0);p++){var g=p?u.rest[p-1]:u.line,E=void 0;c.pos=0,c.addToken=f2,Rt(a.display.measure)&&(E=xn(g,a.doc.direction))&&(c.addToken=p2(c.addToken,E)),c.map=[];var N=u!=a.display.externalMeasured&&wt(g);h2(g,c,aN(a,g,N)),g.styleClasses&&(g.styleClasses.bgClass&&(c.bgClass=He(g.styleClasses.bgClass,c.bgClass||"")),g.styleClasses.textClass&&(c.textClass=He(g.styleClasses.textClass,c.textClass||""))),c.map.length==0&&c.map.push(0,0,c.content.appendChild(Ze(a.display.measure))),p==0?(u.measure.map=c.map,u.measure.cache={}):((u.measure.maps||(u.measure.maps=[])).push(c.map),(u.measure.caches||(u.measure.caches=[])).push({}))}if(d){var C=c.content.lastChild;(/\bcm-tab\b/.test(C.className)||C.querySelector&&C.querySelector(".cm-tab"))&&(c.content.className="cm-tab-wrap-hack")}return Ft(a,"renderLine",a,u.line,c.pre),c.pre.className&&(c.textClass=He(c.pre.className,c.textClass||"")),c}function c2(a){var u=P("span","\u2022","cm-invalidchar");return u.title="\\u"+a.charCodeAt(0).toString(16),u.setAttribute("aria-label",u.title),u}function f2(a,u,f,c,p,g,E){if(!!u){var N=a.splitSpaces?d2(u,a.trailingSpace):u,C=a.cm.state.specialChars,I=!1,U;if(!C.test(u))a.col+=u.length,U=document.createTextNode(N),a.map.push(a.pos,a.pos+u.length,U),s&&l<9&&(I=!0),a.pos+=u.length;else{U=document.createDocumentFragment();for(var K=0;;){C.lastIndex=K;var $=C.exec(u),X=$?$.index-K:u.length-K;if(X){var ae=document.createTextNode(N.slice(K,K+X));s&&l<9?U.appendChild(P("span",[ae])):U.appendChild(ae),a.map.push(a.pos,a.pos+X,ae),a.col+=X,a.pos+=X}if(!$)break;K+=X+1;var le=void 0;if($[0]==" "){var pe=a.cm.options.tabSize,be=pe-a.col%pe;le=U.appendChild(P("span",fe(be),"cm-tab")),le.setAttribute("role","presentation"),le.setAttribute("cm-text"," "),a.col+=be}else $[0]=="\r"||$[0]==` +`?(le=U.appendChild(P("span",$[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),le.setAttribute("cm-text",$[0]),a.col+=1):(le=a.cm.options.specialCharPlaceholder($[0]),le.setAttribute("cm-text",$[0]),s&&l<9?U.appendChild(P("span",[le])):U.appendChild(le),a.col+=1);a.map.push(a.pos,a.pos+1,le),a.pos++}}if(a.trailingSpace=N.charCodeAt(u.length-1)==32,f||c||p||I||g||E){var Ne=f||"";c&&(Ne+=c),p&&(Ne+=p);var Te=P("span",[U],Ne,g);if(E)for(var Ce in E)E.hasOwnProperty(Ce)&&Ce!="style"&&Ce!="class"&&Te.setAttribute(Ce,E[Ce]);return a.content.appendChild(Te)}a.content.appendChild(U)}}function d2(a,u){if(a.length>1&&!/ /.test(a))return a;for(var f=u,c="",p=0;pI&&K.from<=I));$++);if(K.to>=U)return a(f,c,p,g,E,N,C);a(f,c.slice(0,K.to-I),p,g,null,N,C),g=null,c=c.slice(K.to-I),I=K.to}}}function _N(a,u,f,c){var p=!c&&f.widgetNode;p&&a.map.push(a.pos,a.pos+u,p),!c&&a.cm.display.input.needsContentAttribute&&(p||(p=a.content.appendChild(document.createElement("span"))),p.setAttribute("cm-marker",f.id)),p&&(a.cm.display.input.setUneditable(p),a.content.appendChild(p)),a.pos+=u,a.trailingSpace=!1}function h2(a,u,f){var c=a.markedSpans,p=a.text,g=0;if(!c){for(var E=1;EC||lt.collapsed&&qe.to==C&&qe.from==C)){if(qe.to!=null&&qe.to!=C&&X>qe.to&&(X=qe.to,le=""),lt.className&&(ae+=" "+lt.className),lt.css&&($=($?$+";":"")+lt.css),lt.startStyle&&qe.from==C&&(pe+=" "+lt.startStyle),lt.endStyle&&qe.to==X&&(Ce||(Ce=[])).push(lt.endStyle,qe.to),lt.title&&((Ne||(Ne={})).title=lt.title),lt.attributes)for(var Ht in lt.attributes)(Ne||(Ne={}))[Ht]=lt.attributes[Ht];lt.collapsed&&(!be||Xy(be.marker,lt)<0)&&(be=qe)}else qe.from>C&&X>qe.from&&(X=qe.from)}if(Ce)for(var zr=0;zr=N)break;for(var li=Math.min(N,X);;){if(U){var Jn=C+U.length;if(!be){var wr=Jn>li?U.slice(0,li-C):U;u.addToken(u,wr,K?K+ae:ae,pe,C+wr.length==X?le:"",$,Ne)}if(Jn>=li){U=U.slice(li-C),C=li;break}C=Jn,pe=""}U=p.slice(g,g=f[I++]),K=bN(f[I++],u.cm.options)}}}function EN(a,u,f){this.line=u,this.rest=a2(u),this.size=this.rest?wt(se(this.rest))-f+1:1,this.node=this.text=null,this.hidden=Fo(a,u)}function yh(a,u,f){for(var c=[],p,g=u;g2&&g.push((C.bottom+I.top)/2-f.top)}}g.push(f.bottom-f.top)}}function xN(a,u,f){if(a.line==u)return{map:a.measure.map,cache:a.measure.cache};if(a.rest){for(var c=0;cf)return{map:a.measure.maps[p],cache:a.measure.caches[p],before:!0}}}function O2(a,u){u=ca(u);var f=wt(u),c=a.display.externalMeasured=new EN(a.doc,u,f);c.lineN=f;var p=c.built=TN(a,c);return c.text=p.pre,Q(a.display.lineMeasure,p.pre),c}function CN(a,u,f,c){return xa(a,el(a,u),f,c)}function i0(a,u){if(u>=a.display.viewFrom&&u=f.lineN&&uu)&&(g=C-N,p=g-1,u>=C&&(E="right")),p!=null){if(c=a[I+2],N==C&&f==(c.insertLeft?"left":"right")&&(E=f),f=="left"&&p==0)for(;I&&a[I-2]==a[I-3]&&a[I-1].insertLeft;)c=a[(I-=3)+2],E="left";if(f=="right"&&p==C-N)for(;I=0&&(f=a[p]).left==f.right;p--);return f}function N2(a,u,f,c){var p=IN(u.map,f,c),g=p.node,E=p.start,N=p.end,C=p.collapse,I;if(g.nodeType==3){for(var U=0;U<4;U++){for(;E&&Pi(u.line.text.charAt(p.coverStart+E));)--E;for(;p.coverStart+N0&&(C=c="right");var K;a.options.lineWrapping&&(K=g.getClientRects()).length>1?I=K[c=="right"?K.length-1:0]:I=g.getBoundingClientRect()}if(s&&l<9&&!E&&(!I||!I.left&&!I.right)){var $=g.parentNode.getClientRects()[0];$?I={left:$.left,right:$.left+rl(a.display),top:$.top,bottom:$.bottom}:I=LN}for(var X=I.top-u.rect.top,ae=I.bottom-u.rect.top,le=(X+ae)/2,pe=u.view.measure.heights,be=0;be=c.text.length?(C=c.text.length,I="before"):C<=0&&(C=0,I="after"),!N)return E(I=="before"?C-1:C,I=="before");function U(ae,le,pe){var be=N[le],Ne=be.level==1;return E(pe?ae-1:ae,Ne!=pe)}var K=vr(N,C,I),$=zn,X=U(C,K,I=="before");return $!=null&&(X.other=U(C,$,I!="before")),X}function MN(a,u){var f=0;u=Ye(a.doc,u),a.options.lineWrapping||(f=rl(a.display)*u.ch);var c=Ae(a.doc,u.line),p=so(c)+bh(a.display);return{left:f,right:f,top:p,bottom:p+c.height}}function o0(a,u,f,c,p){var g=W(a,u,f);return g.xRel=p,c&&(g.outside=c),g}function u0(a,u,f){var c=a.doc;if(f+=a.display.viewOffset,f<0)return o0(c.first,0,null,-1,-1);var p=wa(c,f),g=c.first+c.size-1;if(p>g)return o0(c.first+c.size-1,Ae(c,g).text.length,null,1,1);u<0&&(u=0);for(var E=Ae(c,p);;){var N=x2(a,E,p,u,f),C=n2(E,N.ch+(N.xRel>0||N.outside>0?1:0));if(!C)return N;var I=C.find(1);if(I.line==p)return I;E=Ae(c,p=I.line)}}function qN(a,u,f,c){c-=a0(u);var p=u.text.length,g=Kt(function(E){return xa(a,f,E-1).bottom<=c},p,0);return p=Kt(function(E){return xa(a,f,E).top>c},g,p),{begin:g,end:p}}function VN(a,u,f,c){f||(f=el(a,u));var p=Th(a,u,xa(a,f,c),"line").top;return qN(a,u,f,p)}function s0(a,u,f,c){return a.bottom<=f?!1:a.top>f?!0:(c?a.left:a.right)>u}function x2(a,u,f,c,p){p-=so(u);var g=el(a,u),E=a0(u),N=0,C=u.text.length,I=!0,U=xn(u,a.doc.direction);if(U){var K=(a.options.lineWrapping?L2:C2)(a,u,f,g,U,c,p);I=K.level!=1,N=I?K.from:K.to-1,C=I?K.to:K.from-1}var $=null,X=null,ae=Kt(function(Ge){var qe=xa(a,g,Ge);return qe.top+=E,qe.bottom+=E,s0(qe,c,p,!1)?(qe.top<=p&&qe.left<=c&&($=Ge,X=qe),!0):!1},N,C),le,pe,be=!1;if(X){var Ne=c-X.left=Ce.bottom?1:0}return ae=Qr(u.text,ae,1),o0(f,ae,pe,be,c-le)}function C2(a,u,f,c,p,g,E){var N=Kt(function(K){var $=p[K],X=$.level!=1;return s0(fa(a,W(f,X?$.to:$.from,X?"before":"after"),"line",u,c),g,E,!0)},0,p.length-1),C=p[N];if(N>0){var I=C.level!=1,U=fa(a,W(f,I?C.from:C.to,I?"after":"before"),"line",u,c);s0(U,g,E,!0)&&U.top>E&&(C=p[N-1])}return C}function L2(a,u,f,c,p,g,E){var N=qN(a,u,c,E),C=N.begin,I=N.end;/\s/.test(u.text.charAt(I-1))&&I--;for(var U=null,K=null,$=0;$=I||X.to<=C)){var ae=X.level!=1,le=xa(a,c,ae?Math.min(I,X.to)-1:Math.max(C,X.from)).right,pe=lepe)&&(U=X,K=pe)}}return U||(U=p[p.length-1]),U.fromI&&(U={from:U.from,to:I,level:U.level}),U}var Bu;function tl(a){if(a.cachedTextHeight!=null)return a.cachedTextHeight;if(Bu==null){Bu=P("pre",null,"CodeMirror-line-like");for(var u=0;u<49;++u)Bu.appendChild(document.createTextNode("x")),Bu.appendChild(P("br"));Bu.appendChild(document.createTextNode("x"))}Q(a.measure,Bu);var f=Bu.offsetHeight/50;return f>3&&(a.cachedTextHeight=f),B(a.measure),f||1}function rl(a){if(a.cachedCharWidth!=null)return a.cachedCharWidth;var u=P("span","xxxxxxxxxx"),f=P("pre",[u],"CodeMirror-line-like");Q(a.measure,f);var c=u.getBoundingClientRect(),p=(c.right-c.left)/10;return p>2&&(a.cachedCharWidth=p),p||10}function l0(a){for(var u=a.display,f={},c={},p=u.gutters.clientLeft,g=u.gutters.firstChild,E=0;g;g=g.nextSibling,++E){var N=a.display.gutterSpecs[E].className;f[N]=g.offsetLeft+g.clientLeft+p,c[N]=g.clientWidth}return{fixedPos:c0(u),gutterTotalWidth:u.gutters.offsetWidth,gutterLeft:f,gutterWidth:c,wrapperWidth:u.wrapper.clientWidth}}function c0(a){return a.scroller.getBoundingClientRect().left-a.sizer.getBoundingClientRect().left}function UN(a){var u=tl(a.display),f=a.options.lineWrapping,c=f&&Math.max(5,a.display.scroller.clientWidth/rl(a.display)-3);return function(p){if(Fo(a.doc,p))return 0;var g=0;if(p.widgets)for(var E=0;E0&&(I=Ae(a.doc,C.line).text).length==C.ch){var U=te(I,I.length,a.options.tabSize)-I.length;C=W(C.line,Math.max(0,Math.round((g-DN(a.display).left)/rl(a.display))-U))}return C}function Hu(a,u){if(u>=a.display.viewTo||(u-=a.display.viewFrom,u<0))return null;for(var f=a.display.view,c=0;cu)&&(p.updateLineNumbers=u),a.curOp.viewChanged=!0,u>=p.viewTo)uo&&Zy(a.doc,u)p.viewFrom?qo(a):(p.viewFrom+=c,p.viewTo+=c);else if(u<=p.viewFrom&&f>=p.viewTo)qo(a);else if(u<=p.viewFrom){var g=Eh(a,f,f+c,1);g?(p.view=p.view.slice(g.index),p.viewFrom=g.lineN,p.viewTo+=c):qo(a)}else if(f>=p.viewTo){var E=Eh(a,u,u,-1);E?(p.view=p.view.slice(0,E.index),p.viewTo=E.lineN):qo(a)}else{var N=Eh(a,u,u,-1),C=Eh(a,f,f+c,1);N&&C?(p.view=p.view.slice(0,N.index).concat(yh(a,N.lineN,C.lineN)).concat(p.view.slice(C.index)),p.viewTo+=c):qo(a)}var I=p.externalMeasured;I&&(f=p.lineN&&u=c.viewTo)){var g=c.view[Hu(a,u)];if(g.node!=null){var E=g.changes||(g.changes=[]);we(E,f)==-1&&E.push(f)}}}function qo(a){a.display.viewFrom=a.display.viewTo=a.doc.first,a.display.view=[],a.display.viewOffset=0}function Eh(a,u,f,c){var p=Hu(a,u),g,E=a.display.view;if(!uo||f==a.doc.first+a.doc.size)return{index:p,lineN:f};for(var N=a.display.viewFrom,C=0;C0){if(p==E.length-1)return null;g=N+E[p].size-u,p++}else g=N-u;u+=g,f+=g}for(;Zy(a.doc,f)!=f;){if(p==(c<0?0:E.length-1))return null;f+=c*E[p-(c<0?1:0)].size,p+=c}return{index:p,lineN:f}}function I2(a,u,f){var c=a.display,p=c.view;p.length==0||u>=c.viewTo||f<=c.viewFrom?(c.view=yh(a,u,f),c.viewFrom=u):(c.viewFrom>u?c.view=yh(a,u,c.viewFrom).concat(c.view):c.viewFromf&&(c.view=c.view.slice(0,Hu(a,f)))),c.viewTo=f}function GN(a){for(var u=a.display.view,f=0,c=0;c=a.display.viewTo||C.to().line0?E:a.defaultCharWidth())+"px"}if(c.other){var N=f.appendChild(P("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));N.style.display="",N.style.left=c.other.left+"px",N.style.top=c.other.top+"px",N.style.height=(c.other.bottom-c.other.top)*.85+"px"}}function Sh(a,u){return a.top-u.top||a.left-u.left}function A2(a,u,f){var c=a.display,p=a.doc,g=document.createDocumentFragment(),E=DN(a.display),N=E.left,C=Math.max(c.sizerWidth,Qu(a)-c.sizer.offsetLeft)-E.right,I=p.direction=="ltr";function U(Te,Ce,Ge,qe){Ce<0&&(Ce=0),Ce=Math.round(Ce),qe=Math.round(qe),g.appendChild(P("div",null,"CodeMirror-selected","position: absolute; left: "+Te+`px; + top: `+Ce+"px; width: "+(Ge==null?C-Te:Ge)+`px; + height: `+(qe-Ce)+"px"))}function K(Te,Ce,Ge){var qe=Ae(p,Te),lt=qe.text.length,Ht,zr;function lr(wr,Xn){return _h(a,W(Te,wr),"div",qe,Xn)}function li(wr,Xn,sn){var Fr=VN(a,qe,null,wr),Nr=Xn=="ltr"==(sn=="after")?"left":"right",mr=sn=="after"?Fr.begin:Fr.end-(/\s/.test(qe.text.charAt(Fr.end-1))?2:1);return lr(mr,Nr)[Nr]}var Jn=xn(qe,p.direction);return hn(Jn,Ce||0,Ge==null?lt:Ge,function(wr,Xn,sn,Fr){var Nr=sn=="ltr",mr=lr(wr,Nr?"left":"right"),Zn=lr(Xn-1,Nr?"right":"left"),vl=Ce==null&&wr==0,Ko=Ge==null&&Xn==lt,mn=Fr==0,Ca=!Jn||Fr==Jn.length-1;if(Zn.top-mr.top<=3){var Wr=(I?vl:Ko)&&mn,q0=(I?Ko:vl)&&Ca,po=Wr?N:(Nr?mr:Zn).left,Xu=q0?C:(Nr?Zn:mr).right;U(po,mr.top,Xu-po,mr.bottom)}else{var Zu,In,gl,V0;Nr?(Zu=I&&vl&&mn?N:mr.left,In=I?C:li(wr,sn,"before"),gl=I?N:li(Xn,sn,"after"),V0=I&&Ko&&Ca?C:Zn.right):(Zu=I?li(wr,sn,"before"):N,In=!I&&vl&&mn?C:mr.right,gl=!I&&Ko&&Ca?N:Zn.left,V0=I?li(Xn,sn,"after"):C),U(Zu,mr.top,In-Zu,mr.bottom),mr.bottom0?u.blinker=setInterval(function(){a.hasFocus()||nl(a),u.cursorDiv.style.visibility=(f=!f)?"":"hidden"},a.options.cursorBlinkRate):a.options.cursorBlinkRate<0&&(u.cursorDiv.style.visibility="hidden")}}function BN(a){a.hasFocus()||(a.display.input.focus(),a.state.focused||v0(a))}function h0(a){a.state.delayingBlurEvent=!0,setTimeout(function(){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1,a.state.focused&&nl(a))},100)}function v0(a,u){a.state.delayingBlurEvent&&!a.state.draggingText&&(a.state.delayingBlurEvent=!1),a.options.readOnly!="nocursor"&&(a.state.focused||(Ft(a,"focus",a,u),a.state.focused=!0,Le(a.display.wrapper,"CodeMirror-focused"),!a.curOp&&a.display.selForContextMenu!=a.doc.sel&&(a.display.input.reset(),d&&setTimeout(function(){return a.display.input.reset(!0)},20)),a.display.input.receivedFocus()),p0(a))}function nl(a,u){a.state.delayingBlurEvent||(a.state.focused&&(Ft(a,"blur",a,u),a.state.focused=!1,z(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){a.state.focused||(a.display.shift=!1)},150))}function kh(a){for(var u=a.display,f=u.lineDiv.offsetTop,c=Math.max(0,u.scroller.getBoundingClientRect().top),p=u.lineDiv.getBoundingClientRect().top,g=0,E=0;E.005||X<-.005)&&(pa.display.sizerWidth){var le=Math.ceil(U/rl(a.display));le>a.display.maxLineLength&&(a.display.maxLineLength=le,a.display.maxLine=N.line,a.display.maxLineChanged=!0)}}}Math.abs(g)>2&&(u.scroller.scrollTop+=g)}function KN(a){if(a.widgets)for(var u=0;u=E&&(g=wa(u,so(Ae(u,C))-a.wrapper.clientHeight),E=C)}return{from:g,to:Math.max(E,g+1)}}function R2(a,u){if(!nr(a,"scrollCursorIntoView")){var f=a.display,c=f.sizer.getBoundingClientRect(),p=null,g=f.wrapper.ownerDocument;if(u.top+c.top<0?p=!0:u.bottom+c.top>(g.defaultView.innerHeight||g.documentElement.clientHeight)&&(p=!1),p!=null&&!k){var E=P("div","\u200B",null,`position: absolute; + top: `+(u.top-f.viewOffset-bh(a.display))+`px; + height: `+(u.bottom-u.top+Da(a)+f.barHeight)+`px; + left: `+u.left+"px; width: "+Math.max(2,u.right-u.left)+"px;");a.display.lineSpace.appendChild(E),E.scrollIntoView(p),a.display.lineSpace.removeChild(E)}}}function j2(a,u,f,c){c==null&&(c=0);var p;!a.options.lineWrapping&&u==f&&(f=u.sticky=="before"?W(u.line,u.ch+1,"before"):u,u=u.ch?W(u.line,u.sticky=="before"?u.ch-1:u.ch,"after"):u);for(var g=0;g<5;g++){var E=!1,N=fa(a,u),C=!f||f==u?N:fa(a,f);p={left:Math.min(N.left,C.left),top:Math.min(N.top,C.top)-c,right:Math.max(N.left,C.left),bottom:Math.max(N.bottom,C.bottom)+c};var I=g0(a,p),U=a.doc.scrollTop,K=a.doc.scrollLeft;if(I.scrollTop!=null&&(pf(a,I.scrollTop),Math.abs(a.doc.scrollTop-U)>1&&(E=!0)),I.scrollLeft!=null&&(zu(a,I.scrollLeft),Math.abs(a.doc.scrollLeft-K)>1&&(E=!0)),!E)break}return p}function P2(a,u){var f=g0(a,u);f.scrollTop!=null&&pf(a,f.scrollTop),f.scrollLeft!=null&&zu(a,f.scrollLeft)}function g0(a,u){var f=a.display,c=tl(a.display);u.top<0&&(u.top=0);var p=a.curOp&&a.curOp.scrollTop!=null?a.curOp.scrollTop:f.scroller.scrollTop,g=n0(a),E={};u.bottom-u.top>g&&(u.bottom=u.top+g);var N=a.doc.height+r0(f),C=u.topN-c;if(u.topp+g){var U=Math.min(u.top,(I?N:u.bottom)-g);U!=p&&(E.scrollTop=U)}var K=a.options.fixedGutter?0:f.gutters.offsetWidth,$=a.curOp&&a.curOp.scrollLeft!=null?a.curOp.scrollLeft:f.scroller.scrollLeft-K,X=Qu(a)-f.gutters.offsetWidth,ae=u.right-u.left>X;return ae&&(u.right=u.left+X),u.left<10?E.scrollLeft=0:u.left<$?E.scrollLeft=Math.max(0,u.left+K-(ae?0:10)):u.right>X+$-3&&(E.scrollLeft=u.right+(ae?0:10)-X),E}function m0(a,u){u!=null&&(wh(a),a.curOp.scrollTop=(a.curOp.scrollTop==null?a.doc.scrollTop:a.curOp.scrollTop)+u)}function il(a){wh(a);var u=a.getCursor();a.curOp.scrollToPos={from:u,to:u,margin:a.options.cursorScrollMargin}}function df(a,u,f){(u!=null||f!=null)&&wh(a),u!=null&&(a.curOp.scrollLeft=u),f!=null&&(a.curOp.scrollTop=f)}function F2(a,u){wh(a),a.curOp.scrollToPos=u}function wh(a){var u=a.curOp.scrollToPos;if(u){a.curOp.scrollToPos=null;var f=MN(a,u.from),c=MN(a,u.to);HN(a,f,c,u.margin)}}function HN(a,u,f,c){var p=g0(a,{left:Math.min(u.left,f.left),top:Math.min(u.top,f.top)-c,right:Math.max(u.right,f.right),bottom:Math.max(u.bottom,f.bottom)+c});df(a,p.scrollLeft,p.scrollTop)}function pf(a,u){Math.abs(a.doc.scrollTop-u)<2||(r||b0(a,{top:u}),zN(a,u,!0),r&&b0(a),gf(a,100))}function zN(a,u,f){u=Math.max(0,Math.min(a.display.scroller.scrollHeight-a.display.scroller.clientHeight,u)),!(a.display.scroller.scrollTop==u&&!f)&&(a.doc.scrollTop=u,a.display.scrollbars.setScrollTop(u),a.display.scroller.scrollTop!=u&&(a.display.scroller.scrollTop=u))}function zu(a,u,f,c){u=Math.max(0,Math.min(u,a.display.scroller.scrollWidth-a.display.scroller.clientWidth)),!((f?u==a.doc.scrollLeft:Math.abs(a.doc.scrollLeft-u)<2)&&!c)&&(a.doc.scrollLeft=u,ZN(a),a.display.scroller.scrollLeft!=u&&(a.display.scroller.scrollLeft=u),a.display.scrollbars.setScrollLeft(u))}function hf(a){var u=a.display,f=u.gutters.offsetWidth,c=Math.round(a.doc.height+r0(a.display));return{clientHeight:u.scroller.clientHeight,viewHeight:u.wrapper.clientHeight,scrollWidth:u.scroller.scrollWidth,clientWidth:u.scroller.clientWidth,viewWidth:u.wrapper.clientWidth,barLeft:a.options.fixedGutter?f:0,docHeight:c,scrollHeight:c+Da(a)+u.barHeight,nativeBarWidth:u.nativeBarWidth,gutterWidth:f}}var Wu=function(a,u,f){this.cm=f;var c=this.vert=P("div",[P("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),p=this.horiz=P("div",[P("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");c.tabIndex=p.tabIndex=-1,a(c),a(p),_e(c,"scroll",function(){c.clientHeight&&u(c.scrollTop,"vertical")}),_e(p,"scroll",function(){p.clientWidth&&u(p.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,s&&l<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Wu.prototype.update=function(a){var u=a.scrollWidth>a.clientWidth+1,f=a.scrollHeight>a.clientHeight+1,c=a.nativeBarWidth;if(f){this.vert.style.display="block",this.vert.style.bottom=u?c+"px":"0";var p=a.viewHeight-(u?c:0);this.vert.firstChild.style.height=Math.max(0,a.scrollHeight-a.clientHeight+p)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(u){this.horiz.style.display="block",this.horiz.style.right=f?c+"px":"0",this.horiz.style.left=a.barLeft+"px";var g=a.viewWidth-a.barLeft-(f?c:0);this.horiz.firstChild.style.width=Math.max(0,a.scrollWidth-a.clientWidth+g)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&a.clientHeight>0&&(c==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:f?c:0,bottom:u?c:0}},Wu.prototype.setScrollLeft=function(a){this.horiz.scrollLeft!=a&&(this.horiz.scrollLeft=a),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Wu.prototype.setScrollTop=function(a){this.vert.scrollTop!=a&&(this.vert.scrollTop=a),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Wu.prototype.zeroWidthHack=function(){var a=w&&!_?"12px":"18px";this.horiz.style.height=this.vert.style.width=a,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new ce,this.disableVert=new ce},Wu.prototype.enableZeroWidthBar=function(a,u,f){a.style.visibility="";function c(){var p=a.getBoundingClientRect(),g=f=="vert"?document.elementFromPoint(p.right-1,(p.top+p.bottom)/2):document.elementFromPoint((p.right+p.left)/2,p.bottom-1);g!=a?a.style.visibility="hidden":u.set(1e3,c)}u.set(1e3,c)},Wu.prototype.clear=function(){var a=this.horiz.parentNode;a.removeChild(this.horiz),a.removeChild(this.vert)};var vf=function(){};vf.prototype.update=function(){return{bottom:0,right:0}},vf.prototype.setScrollLeft=function(){},vf.prototype.setScrollTop=function(){},vf.prototype.clear=function(){};function al(a,u){u||(u=hf(a));var f=a.display.barWidth,c=a.display.barHeight;WN(a,u);for(var p=0;p<4&&f!=a.display.barWidth||c!=a.display.barHeight;p++)f!=a.display.barWidth&&a.options.lineWrapping&&kh(a),WN(a,hf(a)),f=a.display.barWidth,c=a.display.barHeight}function WN(a,u){var f=a.display,c=f.scrollbars.update(u);f.sizer.style.paddingRight=(f.barWidth=c.right)+"px",f.sizer.style.paddingBottom=(f.barHeight=c.bottom)+"px",f.heightForcer.style.borderBottom=c.bottom+"px solid transparent",c.right&&c.bottom?(f.scrollbarFiller.style.display="block",f.scrollbarFiller.style.height=c.bottom+"px",f.scrollbarFiller.style.width=c.right+"px"):f.scrollbarFiller.style.display="",c.bottom&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(f.gutterFiller.style.display="block",f.gutterFiller.style.height=c.bottom+"px",f.gutterFiller.style.width=u.gutterWidth+"px"):f.gutterFiller.style.display=""}var YN={native:Wu,null:vf};function JN(a){a.display.scrollbars&&(a.display.scrollbars.clear(),a.display.scrollbars.addClass&&z(a.display.wrapper,a.display.scrollbars.addClass)),a.display.scrollbars=new YN[a.options.scrollbarStyle](function(u){a.display.wrapper.insertBefore(u,a.display.scrollbarFiller),_e(u,"mousedown",function(){a.state.focused&&setTimeout(function(){return a.display.input.focus()},0)}),u.setAttribute("cm-not-content","true")},function(u,f){f=="horizontal"?zu(a,u):pf(a,u)},a),a.display.scrollbars.addClass&&Le(a.display.wrapper,a.display.scrollbars.addClass)}var M2=0;function Yu(a){a.curOp={cm:a,viewChanged:!1,startHeight:a.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++M2,markArrays:null},v2(a.curOp)}function Ju(a){var u=a.curOp;u&&m2(u,function(f){for(var c=0;c=f.viewTo)||f.maxLineChanged&&u.options.lineWrapping,a.update=a.mustUpdate&&new Nh(u,a.mustUpdate&&{top:a.scrollTop,ensure:a.scrollToPos},a.forceUpdate)}function U2(a){a.updatedDisplay=a.mustUpdate&&y0(a.cm,a.update)}function G2(a){var u=a.cm,f=u.display;a.updatedDisplay&&kh(u),a.barMeasure=hf(u),f.maxLineChanged&&!u.options.lineWrapping&&(a.adjustWidthTo=CN(u,f.maxLine,f.maxLine.text.length).left+3,u.display.sizerWidth=a.adjustWidthTo,a.barMeasure.scrollWidth=Math.max(f.scroller.clientWidth,f.sizer.offsetLeft+a.adjustWidthTo+Da(u)+u.display.barWidth),a.maxScrollLeft=Math.max(0,f.sizer.offsetLeft+a.adjustWidthTo-Qu(u))),(a.updatedDisplay||a.selectionChanged)&&(a.preparedSelection=f.input.prepareSelection())}function Q2(a){var u=a.cm;a.adjustWidthTo!=null&&(u.display.sizer.style.minWidth=a.adjustWidthTo+"px",a.maxScrollLeft=a.display.viewTo)){var f=+new Date+a.options.workTime,c=af(a,u.highlightFrontier),p=[];u.iter(c.line,Math.min(u.first+u.size,a.display.viewTo+500),function(g){if(c.line>=a.display.viewFrom){var E=g.styles,N=g.text.length>a.options.maxHighlightLength?ao(u.mode,c.state):null,C=iN(a,g,c,!0);N&&(c.state=N),g.styles=C.styles;var I=g.styleClasses,U=C.classes;U?g.styleClasses=U:I&&(g.styleClasses=null);for(var K=!E||E.length!=g.styles.length||I!=U&&(!I||!U||I.bgClass!=U.bgClass||I.textClass!=U.textClass),$=0;!K&&$f)return gf(a,a.options.workDelay),!0}),u.highlightFrontier=c.line,u.modeFrontier=Math.max(u.modeFrontier,c.line),p.length&&si(a,function(){for(var g=0;g=f.viewFrom&&u.visible.to<=f.viewTo&&(f.updateLineNumbers==null||f.updateLineNumbers>=f.viewTo)&&f.renderedView==f.view&&GN(a)==0)return!1;$N(a)&&(qo(a),u.dims=l0(a));var p=c.first+c.size,g=Math.max(u.visible.from-a.options.viewportMargin,c.first),E=Math.min(p,u.visible.to+a.options.viewportMargin);f.viewFromE&&f.viewTo-E<20&&(E=Math.min(p,f.viewTo)),uo&&(g=Zy(a.doc,g),E=yN(a.doc,E));var N=g!=f.viewFrom||E!=f.viewTo||f.lastWrapHeight!=u.wrapperHeight||f.lastWrapWidth!=u.wrapperWidth;I2(a,g,E),f.viewOffset=so(Ae(a.doc,f.viewFrom)),a.display.mover.style.top=f.viewOffset+"px";var C=GN(a);if(!N&&C==0&&!u.force&&f.renderedView==f.view&&(f.updateLineNumbers==null||f.updateLineNumbers>=f.viewTo))return!1;var I=z2(a);return C>4&&(f.lineDiv.style.display="none"),Y2(a,f.updateLineNumbers,u.dims),C>4&&(f.lineDiv.style.display=""),f.renderedView=f.view,W2(I),B(f.cursorDiv),B(f.selectionDiv),f.gutters.style.height=f.sizer.style.minHeight=0,N&&(f.lastWrapHeight=u.wrapperHeight,f.lastWrapWidth=u.wrapperWidth,gf(a,400)),f.updateLineNumbers=null,!0}function XN(a,u){for(var f=u.viewport,c=!0;;c=!1){if(!c||!a.options.lineWrapping||u.oldDisplayWidth==Qu(a)){if(f&&f.top!=null&&(f={top:Math.min(a.doc.height+r0(a.display)-n0(a),f.top)}),u.visible=Oh(a.display,a.doc,f),u.visible.from>=a.display.viewFrom&&u.visible.to<=a.display.viewTo)break}else c&&(u.visible=Oh(a.display,a.doc,f));if(!y0(a,u))break;kh(a);var p=hf(a);ff(a),al(a,p),_0(a,p),u.force=!1}u.signal(a,"update",a),(a.display.viewFrom!=a.display.reportedViewFrom||a.display.viewTo!=a.display.reportedViewTo)&&(u.signal(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo),a.display.reportedViewFrom=a.display.viewFrom,a.display.reportedViewTo=a.display.viewTo)}function b0(a,u){var f=new Nh(a,u);if(y0(a,f)){kh(a),XN(a,f);var c=hf(a);ff(a),al(a,c),_0(a,c),f.finish()}}function Y2(a,u,f){var c=a.display,p=a.options.lineNumbers,g=c.lineDiv,E=g.firstChild;function N(ae){var le=ae.nextSibling;return d&&w&&a.display.currentWheelTarget==ae?ae.style.display="none":ae.parentNode.removeChild(ae),le}for(var C=c.view,I=c.viewFrom,U=0;U-1&&(X=!1),SN(a,K,I,f)),X&&(B(K.lineNumber),K.lineNumber.appendChild(document.createTextNode(H(a.options,I)))),E=K.node.nextSibling}I+=K.size}for(;E;)E=N(E)}function T0(a){var u=a.gutters.offsetWidth;a.sizer.style.marginLeft=u+"px",Br(a,"gutterChanged",a)}function _0(a,u){a.display.sizer.style.minHeight=u.docHeight+"px",a.display.heightForcer.style.top=u.docHeight+"px",a.display.gutters.style.height=u.docHeight+a.display.barHeight+Da(a)+"px"}function ZN(a){var u=a.display,f=u.view;if(!(!u.alignWidgets&&(!u.gutters.firstChild||!a.options.fixedGutter))){for(var c=c0(u)-u.scroller.scrollLeft+a.doc.scrollLeft,p=u.gutters.offsetWidth,g=c+"px",E=0;E=105&&(p.wrapper.style.clipPath="inset(0px)"),p.wrapper.setAttribute("translate","no"),s&&l<8&&(p.gutters.style.zIndex=-1,p.scroller.style.paddingRight=0),!d&&!(r&&m)&&(p.scroller.draggable=!0),a&&(a.appendChild?a.appendChild(p.wrapper):a(p.wrapper)),p.viewFrom=p.viewTo=u.first,p.reportedViewFrom=p.reportedViewTo=u.first,p.view=[],p.renderedView=null,p.externalMeasured=null,p.viewOffset=0,p.lastWrapHeight=p.lastWrapWidth=0,p.updateLineNumbers=null,p.nativeBarWidth=p.barHeight=p.barWidth=0,p.scrollbarsClipped=!1,p.lineNumWidth=p.lineNumInnerWidth=p.lineNumChars=null,p.alignWidgets=!1,p.cachedCharWidth=p.cachedTextHeight=p.cachedPaddingH=null,p.maxLine=null,p.maxLineLength=0,p.maxLineChanged=!1,p.wheelDX=p.wheelDY=p.wheelStartX=p.wheelStartY=null,p.shift=!1,p.selForContextMenu=null,p.activeTouch=null,p.gutterSpecs=E0(c.gutters,c.lineNumbers),eD(p),f.init(p)}var Dh=0,co=null;s?co=-.53:r?co=15:v?co=-.7:D&&(co=-1/3);function tD(a){var u=a.wheelDeltaX,f=a.wheelDeltaY;return u==null&&a.detail&&a.axis==a.HORIZONTAL_AXIS&&(u=a.detail),f==null&&a.detail&&a.axis==a.VERTICAL_AXIS?f=a.detail:f==null&&(f=a.wheelDelta),{x:u,y:f}}function X2(a){var u=tD(a);return u.x*=co,u.y*=co,u}function rD(a,u){v&&y==102&&(a.display.chromeScrollHack==null?a.display.sizer.style.pointerEvents="none":clearTimeout(a.display.chromeScrollHack),a.display.chromeScrollHack=setTimeout(function(){a.display.chromeScrollHack=null,a.display.sizer.style.pointerEvents=""},100));var f=tD(u),c=f.x,p=f.y,g=co;u.deltaMode===0&&(c=u.deltaX,p=u.deltaY,g=1);var E=a.display,N=E.scroller,C=N.scrollWidth>N.clientWidth,I=N.scrollHeight>N.clientHeight;if(!!(c&&C||p&&I)){if(p&&w&&d){e:for(var U=u.target,K=E.view;U!=N;U=U.parentNode)for(var $=0;$=0&&ie(a,c.to())<=0)return f}return-1};var Nt=function(a,u){this.anchor=a,this.head=u};Nt.prototype.from=function(){return Pr(this.anchor,this.head)},Nt.prototype.to=function(){return _t(this.anchor,this.head)},Nt.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function da(a,u,f){var c=a&&a.options.selectionsMayTouch,p=u[f];u.sort(function($,X){return ie($.from(),X.from())}),f=we(u,p);for(var g=1;g0:C>=0){var I=Pr(N.from(),E.from()),U=_t(N.to(),E.to()),K=N.empty()?E.from()==E.head:N.from()==N.head;g<=f&&--f,u.splice(--g,2,new Nt(K?U:I,K?I:U))}}return new ki(u,f)}function Vo(a,u){return new ki([new Nt(a,u||a)],0)}function Uo(a){return a.text?W(a.from.line+a.text.length-1,se(a.text).length+(a.text.length==1?a.from.ch:0)):a.to}function nD(a,u){if(ie(a,u.from)<0)return a;if(ie(a,u.to)<=0)return Uo(u);var f=a.line+u.text.length-(u.to.line-u.from.line)-1,c=a.ch;return a.line==u.to.line&&(c+=Uo(u).ch-u.to.ch),W(f,c)}function S0(a,u){for(var f=[],c=0;c1&&a.remove(N.line+1,ae-1),a.insert(N.line+1,be)}Br(a,"change",a,u)}function Go(a,u,f){function c(p,g,E){if(p.linked)for(var N=0;N1&&!a.done[a.done.length-2].ranges)return a.done.pop(),se(a.done)}function lD(a,u,f,c){var p=a.history;p.undone.length=0;var g=+new Date,E,N;if((p.lastOp==c||p.lastOrigin==u.origin&&u.origin&&(u.origin.charAt(0)=="+"&&p.lastModTime>g-(a.cm?a.cm.options.historyEventDelay:500)||u.origin.charAt(0)=="*"))&&(E=eB(p,p.lastOp==c)))N=se(E.changes),ie(u.from,u.to)==0&&ie(u.from,N.to)==0?N.to=Uo(u):E.changes.push(w0(a,u));else{var C=se(p.done);for((!C||!C.ranges)&&Ch(a.sel,p.done),E={changes:[w0(a,u)],generation:p.generation},p.done.push(E);p.done.length>p.undoDepth;)p.done.shift(),p.done[0].ranges||p.done.shift()}p.done.push(f),p.generation=++p.maxGeneration,p.lastModTime=p.lastSelTime=g,p.lastOp=p.lastSelOp=c,p.lastOrigin=p.lastSelOrigin=u.origin,N||Ft(a,"historyAdded")}function tB(a,u,f,c){var p=u.charAt(0);return p=="*"||p=="+"&&f.ranges.length==c.ranges.length&&f.somethingSelected()==c.somethingSelected()&&new Date-a.history.lastSelTime<=(a.cm?a.cm.options.historyEventDelay:500)}function rB(a,u,f,c){var p=a.history,g=c&&c.origin;f==p.lastSelOp||g&&p.lastSelOrigin==g&&(p.lastModTime==p.lastSelTime&&p.lastOrigin==g||tB(a,g,se(p.done),u))?p.done[p.done.length-1]=u:Ch(u,p.done),p.lastSelTime=+new Date,p.lastSelOrigin=g,p.lastSelOp=f,c&&c.clearRedo!==!1&&sD(p.undone)}function Ch(a,u){var f=se(u);f&&f.ranges&&f.equals(a)||u.push(a)}function cD(a,u,f,c){var p=u["spans_"+a.id],g=0;a.iter(Math.max(a.first,f),Math.min(a.first+a.size,c),function(E){E.markedSpans&&((p||(p=u["spans_"+a.id]={}))[g]=E.markedSpans),++g})}function nB(a){if(!a)return null;for(var u,f=0;f-1&&(se(N)[K]=I[K],delete I[K])}}return c}function N0(a,u,f,c){if(c){var p=a.anchor;if(f){var g=ie(u,p)<0;g!=ie(f,p)<0?(p=u,u=f):g!=ie(u,f)<0&&(u=f)}return new Nt(p,u)}else return new Nt(f||u,u)}function Lh(a,u,f,c,p){p==null&&(p=a.cm&&(a.cm.display.shift||a.extend)),gn(a,new ki([N0(a.sel.primary(),u,f,p)],0),c)}function dD(a,u,f){for(var c=[],p=a.cm&&(a.cm.display.shift||a.extend),g=0;g=u.ch:N.to>u.ch))){if(p&&(Ft(C,"beforeCursorEnter"),C.explicitlyCleared))if(g.markedSpans){--E;continue}else break;if(!C.atomic)continue;if(f){var K=C.find(c<0?1:-1),$=void 0;if((c<0?U:I)&&(K=yD(a,K,-c,K&&K.line==u.line?g:null)),K&&K.line==u.line&&($=ie(K,f))&&(c<0?$<0:$>0))return ul(a,K,u,c,p)}var X=C.find(c<0?-1:1);return(c<0?I:U)&&(X=yD(a,X,c,X.line==u.line?g:null)),X?ul(a,X,u,c,p):null}}return u}function Ah(a,u,f,c,p){var g=c||1,E=ul(a,u,f,g,p)||!p&&ul(a,u,f,g,!0)||ul(a,u,f,-g,p)||!p&&ul(a,u,f,-g,!0);return E||(a.cantEdit=!0,W(a.first,0))}function yD(a,u,f,c){return f<0&&u.ch==0?u.line>a.first?Ye(a,W(u.line-1)):null:f>0&&u.ch==(c||Ae(a,u.line)).text.length?u.line=0;--p)_D(a,{from:c[p].from,to:c[p].to,text:p?[""]:u.text,origin:u.origin});else _D(a,u)}}function _D(a,u){if(!(u.text.length==1&&u.text[0]==""&&ie(u.from,u.to)==0)){var f=S0(a,u);lD(a,u,f,a.cm?a.cm.curOp.id:NaN),bf(a,u,f,Jy(a,u));var c=[];Go(a,function(p,g){!g&&we(c,p.history)==-1&&(OD(p.history,u),c.push(p.history)),bf(p,u,null,Jy(p,u))})}}function Rh(a,u,f){var c=a.cm&&a.cm.state.suppressEdits;if(!(c&&!f)){for(var p=a.history,g,E=a.sel,N=u=="undo"?p.done:p.undone,C=u=="undo"?p.undone:p.done,I=0;I=0;--X){var ae=$(X);if(ae)return ae.v}}}}function ED(a,u){if(u!=0&&(a.first+=u,a.sel=new ki(Ue(a.sel.ranges,function(p){return new Nt(W(p.anchor.line+u,p.anchor.ch),W(p.head.line+u,p.head.ch))}),a.sel.primIndex),a.cm)){Wn(a.cm,a.first,a.first-u,u);for(var f=a.cm.display,c=f.viewFrom;ca.lastLine())){if(u.from.lineg&&(u={from:u.from,to:W(g,Ae(a,g).text.length),text:[u.text[0]],origin:u.origin}),u.removed=oo(a,u.from,u.to),f||(f=S0(a,u)),a.cm?oB(a.cm,u,c):O0(a,u,c),Ih(a,f,Qe),a.cantEdit&&Ah(a,W(a.firstLine(),0))&&(a.cantEdit=!1)}}function oB(a,u,f){var c=a.doc,p=a.display,g=u.from,E=u.to,N=!1,C=g.line;a.options.lineWrapping||(C=wt(ca(Ae(c,g.line))),c.iter(C,E.line+1,function(X){if(X==p.maxLine)return N=!0,!0})),c.sel.contains(u.from,u.to)>-1&&Ys(a),O0(c,u,f,UN(a)),a.options.lineWrapping||(c.iter(C,g.line+u.text.length,function(X){var ae=mh(X);ae>p.maxLineLength&&(p.maxLine=X,p.maxLineLength=ae,p.maxLineChanged=!0,N=!1)}),N&&(a.curOp.updateMaxLine=!0)),YQ(c,g.line),gf(a,400);var I=u.text.length-(E.line-g.line)-1;u.full?Wn(a):g.line==E.line&&u.text.length==1&&!aD(a.doc,u)?Mo(a,g.line,"text"):Wn(a,g.line,E.line+1,I);var U=on(a,"changes"),K=on(a,"change");if(K||U){var $={from:g,to:E,text:u.text,removed:u.removed,origin:u.origin};K&&Br(a,"change",a,$),U&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push($)}a.display.selForContextMenu=null}function ll(a,u,f,c,p){var g;c||(c=f),ie(c,f)<0&&(g=[c,f],f=g[0],c=g[1]),typeof u=="string"&&(u=a.splitLines(u)),sl(a,{from:f,to:c,text:u,origin:p})}function SD(a,u,f,c){f1||!(this.children[0]instanceof _f))){var N=[];this.collapse(N),this.children=[new _f(N)],this.children[0].parent=this}},collapse:function(a){for(var u=0;u50){for(var E=p.lines.length%25+25,N=E;N10);a.parent.maybeSpill()}},iterN:function(a,u,f){for(var c=0;ca.display.maxLineLength&&(a.display.maxLine=I,a.display.maxLineLength=U,a.display.maxLineChanged=!0)}c!=null&&a&&this.collapsed&&Wn(a,c,p+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&gD(a.doc)),a&&Br(a,"markerCleared",a,this,c,p),u&&Ju(a),this.parent&&this.parent.clear()}},Qo.prototype.find=function(a,u){a==null&&this.type=="bookmark"&&(a=1);for(var f,c,p=0;p0||E==0&&g.clearWhenEmpty!==!1)return g;if(g.replacedWith&&(g.collapsed=!0,g.widgetNode=he("span",[g.replacedWith],"CodeMirror-widget"),c.handleMouseEvents||g.widgetNode.setAttribute("cm-ignore-events","true"),c.insertLeft&&(g.widgetNode.insertLeft=!0)),g.collapsed){if(mN(a,u.line,u,f,g)||u.line!=f.line&&mN(a,f.line,u,f,g))throw new Error("Inserting collapsed marker partially overlapping an existing one");XQ()}g.addToHistory&&lD(a,{from:u,to:f,origin:"markText"},a.sel,NaN);var N=u.line,C=a.cm,I;if(a.iter(N,f.line+1,function(K){C&&g.collapsed&&!C.options.lineWrapping&&ca(K)==C.display.maxLine&&(I=!0),g.collapsed&&N!=u.line&&Fi(K,0),$Q(K,new ph(g,N==u.line?u.ch:null,N==f.line?f.ch:null),a.cm&&a.cm.curOp),++N}),g.collapsed&&a.iter(u.line,f.line+1,function(K){Fo(a,K)&&Fi(K,0)}),g.clearOnEnter&&_e(g,"beforeCursorEnter",function(){return g.clear()}),g.readOnly&&(JQ(),(a.history.done.length||a.history.undone.length)&&a.clearHistory()),g.collapsed&&(g.id=++ND,g.atomic=!0),C){if(I&&(C.curOp.updateMaxLine=!0),g.collapsed)Wn(C,u.line,f.line+1);else if(g.className||g.startStyle||g.endStyle||g.css||g.attributes||g.title)for(var U=u.line;U<=f.line;U++)Mo(C,U,"text");g.atomic&&gD(C.doc),Br(C,"markerAdded",C,g)}return g}var kf=function(a,u){this.markers=a,this.primary=u;for(var f=0;f=0;C--)sl(this,c[C]);N?hD(this,N):this.cm&&il(this.cm)}),undo:Hr(function(){Rh(this,"undo")}),redo:Hr(function(){Rh(this,"redo")}),undoSelection:Hr(function(){Rh(this,"undo",!0)}),redoSelection:Hr(function(){Rh(this,"redo",!0)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,u=0,f=0,c=0;c=a.ch)&&u.push(p.marker.parent||p.marker)}return u},findMarks:function(a,u,f){a=Ye(this,a),u=Ye(this,u);var c=[],p=a.line;return this.iter(a.line,u.line+1,function(g){var E=g.markedSpans;if(E)for(var N=0;N=C.to||C.from==null&&p!=a.line||C.from!=null&&p==u.line&&C.from>=u.ch)&&(!f||f(C.marker))&&c.push(C.marker.parent||C.marker)}++p}),c},getAllMarks:function(){var a=[];return this.iter(function(u){var f=u.markedSpans;if(f)for(var c=0;ca)return u=a,!0;a-=g,++f}),Ye(this,W(f,u))},indexFromPos:function(a){a=Ye(this,a);var u=a.ch;if(a.lineu&&(u=a.from),a.to!=null&&a.to-1){u.state.draggingText(a),setTimeout(function(){return u.display.input.focus()},20);return}try{var U=a.dataTransfer.getData("Text");if(U){var K;if(u.state.draggingText&&!u.state.draggingText.copy&&(K=u.listSelections()),Ih(u.doc,Vo(f,f)),K)for(var $=0;$=0;N--)ll(a.doc,"",c[N].from,c[N].to,"+delete");il(a)})}function x0(a,u,f){var c=Qr(a.text,u+f,f);return c<0||c>a.text.length?null:c}function C0(a,u,f){var c=x0(a,u.ch,f);return c==null?null:new W(u.line,c,f<0?"after":"before")}function L0(a,u,f,c,p){if(a){u.doc.direction=="rtl"&&(p=-p);var g=xn(f,u.doc.direction);if(g){var E=p<0?se(g):g[0],N=p<0==(E.level==1),C=N?"after":"before",I;if(E.level>0||u.doc.direction=="rtl"){var U=el(u,f);I=p<0?f.text.length-1:0;var K=xa(u,U,I).top;I=Kt(function($){return xa(u,U,$).top==K},p<0==(E.level==1)?E.from:E.to-1,I),C=="before"&&(I=x0(f,I,1))}else I=p<0?E.to:E.from;return new W(c,I,C)}}return new W(c,p<0?f.text.length:0,p<0?"before":"after")}function TB(a,u,f,c){var p=xn(u,a.doc.direction);if(!p)return C0(u,f,c);f.ch>=u.text.length?(f.ch=u.text.length,f.sticky="before"):f.ch<=0&&(f.ch=0,f.sticky="after");var g=vr(p,f.ch,f.sticky),E=p[g];if(a.doc.direction=="ltr"&&E.level%2==0&&(c>0?E.to>f.ch:E.from=E.from&&$>=U.begin)){var X=K?"before":"after";return new W(f.line,$,X)}}var ae=function(be,Ne,Te){for(var Ce=function(Ht,zr){return zr?new W(f.line,N(Ht,1),"before"):new W(f.line,Ht,"after")};be>=0&&be0==(Ge.level!=1),lt=qe?Te.begin:N(Te.end,-1);if(Ge.from<=lt&<0?U.end:N(U.begin,-1);return pe!=null&&!(c>0&&pe==u.text.length)&&(le=ae(c>0?0:p.length-1,c,I(pe)),le)?le:null}var Nf={selectAll:bD,singleSelection:function(a){return a.setSelection(a.getCursor("anchor"),a.getCursor("head"),Qe)},killLine:function(a){return dl(a,function(u){if(u.empty()){var f=Ae(a.doc,u.head.line).text.length;return u.head.ch==f&&u.head.line0)p=new W(p.line,p.ch+1),a.replaceRange(g.charAt(p.ch-1)+g.charAt(p.ch-2),W(p.line,p.ch-2),p,"+transpose");else if(p.line>a.doc.first){var E=Ae(a.doc,p.line-1).text;E&&(p=new W(p.line,1),a.replaceRange(g.charAt(0)+a.doc.lineSeparator()+E.charAt(E.length-1),W(p.line-1,E.length-1),p,"+transpose"))}}f.push(new Nt(p,p))}a.setSelections(f)})},newlineAndIndent:function(a){return si(a,function(){for(var u=a.listSelections(),f=u.length-1;f>=0;f--)a.replaceRange(a.doc.lineSeparator(),u[f].anchor,u[f].head,"+input");u=a.listSelections();for(var c=0;ca&&ie(u,this.pos)==0&&f==this.button};var xf,Cf;function NB(a,u){var f=+new Date;return Cf&&Cf.compare(f,a,u)?(xf=Cf=null,"triple"):xf&&xf.compare(f,a,u)?(Cf=new A0(f,a,u),xf=null,"double"):(xf=new A0(f,a,u),Cf=null,"single")}function QD(a){var u=this,f=u.display;if(!(nr(u,a)||f.activeTouch&&f.input.supportsTouch())){if(f.input.ensurePolled(),f.shift=a.shiftKey,lo(f,a)){d||(f.scroller.draggable=!1,setTimeout(function(){return f.scroller.draggable=!0},100));return}if(!R0(u,a)){var c=Ku(u,a),p=A(a),g=c?NB(c,p):"single";At(u).focus(),p==1&&u.state.selectingText&&u.state.selectingText(a),!(c&&DB(u,p,c,g,a))&&(p==1?c?CB(u,c,g,a):V(a)==f.scroller&&ee(a):p==2?(c&&Lh(u.doc,c),setTimeout(function(){return f.input.focus()},20)):p==3&&(M?u.display.input.onContextMenu(a):h0(u)))}}}function DB(a,u,f,c,p){var g="Click";return c=="double"?g="Double"+g:c=="triple"&&(g="Triple"+g),g=(u==1?"Left":u==2?"Middle":"Right")+g,Df(a,RD(g,p),p,function(E){if(typeof E=="string"&&(E=Nf[E]),!E)return!1;var N=!1;try{a.isReadOnly()&&(a.state.suppressEdits=!0),N=E(a,f)!=Me}finally{a.state.suppressEdits=!1}return N})}function xB(a,u,f){var c=a.getOption("configureMouse"),p=c?c(a,u,f):{};if(p.unit==null){var g=x?f.shiftKey&&f.metaKey:f.altKey;p.unit=g?"rectangle":u=="single"?"char":u=="double"?"word":"line"}return(p.extend==null||a.doc.extend)&&(p.extend=a.doc.extend||f.shiftKey),p.addNew==null&&(p.addNew=w?f.metaKey:f.ctrlKey),p.moveOnDrag==null&&(p.moveOnDrag=!(w?f.altKey:f.ctrlKey)),p}function CB(a,u,f,c){s?setTimeout(Ot(BN,a),0):a.curOp.focus=Fe(Ve(a));var p=xB(a,f,c),g=a.doc.sel,E;a.options.dragDrop&&re&&!a.isReadOnly()&&f=="single"&&(E=g.contains(u))>-1&&(ie((E=g.ranges[E]).from(),u)<0||u.xRel>0)&&(ie(E.to(),u)>0||u.xRel<0)?LB(a,c,u,p):IB(a,c,u,p)}function LB(a,u,f,c){var p=a.display,g=!1,E=Kr(a,function(I){d&&(p.scroller.draggable=!1),a.state.draggingText=!1,a.state.delayingBlurEvent&&(a.hasFocus()?a.state.delayingBlurEvent=!1:h0(a)),Ar(p.wrapper.ownerDocument,"mouseup",E),Ar(p.wrapper.ownerDocument,"mousemove",N),Ar(p.scroller,"dragstart",C),Ar(p.scroller,"drop",E),g||(ee(I),c.addNew||Lh(a.doc,f,null,null,c.extend),d&&!D||s&&l==9?setTimeout(function(){p.wrapper.ownerDocument.body.focus({preventScroll:!0}),p.input.focus()},20):p.input.focus())}),N=function(I){g=g||Math.abs(u.clientX-I.clientX)+Math.abs(u.clientY-I.clientY)>=10},C=function(){return g=!0};d&&(p.scroller.draggable=!0),a.state.draggingText=E,E.copy=!c.moveOnDrag,_e(p.wrapper.ownerDocument,"mouseup",E),_e(p.wrapper.ownerDocument,"mousemove",N),_e(p.scroller,"dragstart",C),_e(p.scroller,"drop",E),a.state.delayingBlurEvent=!0,setTimeout(function(){return p.input.focus()},20),p.scroller.dragDrop&&p.scroller.dragDrop()}function BD(a,u,f){if(f=="char")return new Nt(u,u);if(f=="word")return a.findWordAt(u);if(f=="line")return new Nt(W(u.line,0),Ye(a.doc,W(u.line+1,0)));var c=f(a,u);return new Nt(c.from,c.to)}function IB(a,u,f,c){s&&h0(a);var p=a.display,g=a.doc;ee(u);var E,N,C=g.sel,I=C.ranges;if(c.addNew&&!c.extend?(N=g.sel.contains(f),N>-1?E=I[N]:E=new Nt(f,f)):(E=g.sel.primary(),N=g.sel.primIndex),c.unit=="rectangle")c.addNew||(E=new Nt(f,f)),f=Ku(a,u,!0,!0),N=-1;else{var U=BD(a,f,c.unit);c.extend?E=N0(E,U.anchor,U.head,c.extend):E=U}c.addNew?N==-1?(N=I.length,gn(g,da(a,I.concat([E]),N),{scroll:!1,origin:"*mouse"})):I.length>1&&I[N].empty()&&c.unit=="char"&&!c.extend?(gn(g,da(a,I.slice(0,N).concat(I.slice(N+1)),0),{scroll:!1,origin:"*mouse"}),C=g.sel):D0(g,N,E,ze):(N=0,gn(g,new ki([E],0),ze),C=g.sel);var K=f;function $(Te){if(ie(K,Te)!=0)if(K=Te,c.unit=="rectangle"){for(var Ce=[],Ge=a.options.tabSize,qe=te(Ae(g,f.line).text,f.ch,Ge),lt=te(Ae(g,Te.line).text,Te.ch,Ge),Ht=Math.min(qe,lt),zr=Math.max(qe,lt),lr=Math.min(f.line,Te.line),li=Math.min(a.lastLine(),Math.max(f.line,Te.line));lr<=li;lr++){var Jn=Ae(g,lr).text,wr=oe(Jn,Ht,Ge);Ht==zr?Ce.push(new Nt(W(lr,wr),W(lr,wr))):Jn.length>wr&&Ce.push(new Nt(W(lr,wr),W(lr,oe(Jn,zr,Ge))))}Ce.length||Ce.push(new Nt(f,f)),gn(g,da(a,C.ranges.slice(0,N).concat(Ce),N),{origin:"*mouse",scroll:!1}),a.scrollIntoView(Te)}else{var Xn=E,sn=BD(a,Te,c.unit),Fr=Xn.anchor,Nr;ie(sn.anchor,Fr)>0?(Nr=sn.head,Fr=Pr(Xn.from(),sn.anchor)):(Nr=sn.anchor,Fr=_t(Xn.to(),sn.head));var mr=C.ranges.slice(0);mr[N]=AB(a,new Nt(Ye(g,Fr),Nr)),gn(g,da(a,mr,N),ze)}}var X=p.wrapper.getBoundingClientRect(),ae=0;function le(Te){var Ce=++ae,Ge=Ku(a,Te,!0,c.unit=="rectangle");if(!!Ge)if(ie(Ge,K)!=0){a.curOp.focus=Fe(Ve(a)),$(Ge);var qe=Oh(p,g);(Ge.line>=qe.to||Ge.lineX.bottom?20:0;lt&&setTimeout(Kr(a,function(){ae==Ce&&(p.scroller.scrollTop+=lt,le(Te))}),50)}}function pe(Te){a.state.selectingText=!1,ae=1/0,Te&&(ee(Te),p.input.focus()),Ar(p.wrapper.ownerDocument,"mousemove",be),Ar(p.wrapper.ownerDocument,"mouseup",Ne),g.history.lastSelOrigin=null}var be=Kr(a,function(Te){Te.buttons===0||!A(Te)?pe(Te):le(Te)}),Ne=Kr(a,pe);a.state.selectingText=Ne,_e(p.wrapper.ownerDocument,"mousemove",be),_e(p.wrapper.ownerDocument,"mouseup",Ne)}function AB(a,u){var f=u.anchor,c=u.head,p=Ae(a.doc,f.line);if(ie(f,c)==0&&f.sticky==c.sticky)return u;var g=xn(p);if(!g)return u;var E=vr(g,f.ch,f.sticky),N=g[E];if(N.from!=f.ch&&N.to!=f.ch)return u;var C=E+(N.from==f.ch==(N.level!=1)?0:1);if(C==0||C==g.length)return u;var I;if(c.line!=f.line)I=(c.line-f.line)*(a.doc.direction=="ltr"?1:-1)>0;else{var U=vr(g,c.ch,c.sticky),K=U-E||(c.ch-f.ch)*(N.level==1?-1:1);U==C-1||U==C?I=K<0:I=K>0}var $=g[C+(I?-1:0)],X=I==($.level==1),ae=X?$.from:$.to,le=X?"after":"before";return f.ch==ae&&f.sticky==le?u:new Nt(new W(f.line,ae,le),c)}function KD(a,u,f,c){var p,g;if(u.touches)p=u.touches[0].clientX,g=u.touches[0].clientY;else try{p=u.clientX,g=u.clientY}catch($){return!1}if(p>=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;c&&ee(u);var E=a.display,N=E.lineDiv.getBoundingClientRect();if(g>N.bottom||!on(a,f))return Y(u);g-=N.top-E.viewOffset;for(var C=0;C=p){var U=wa(a.doc,g),K=a.display.gutterSpecs[C];return Ft(a,f,a,U,K.className,u),Y(u)}}}function R0(a,u){return KD(a,u,"gutterClick",!0)}function HD(a,u){lo(a.display,u)||RB(a,u)||nr(a,u,"contextmenu")||M||a.display.input.onContextMenu(u)}function RB(a,u){return on(a,"gutterContextMenu")?KD(a,u,"gutterContextMenu",!1):!1}function zD(a){a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+a.options.theme.replace(/(^|\s)\s*/g," cm-s-"),cf(a)}var pl={toString:function(){return"CodeMirror.Init"}},WD={},Mh={};function jB(a){var u=a.optionHandlers;function f(c,p,g,E){a.defaults[c]=p,g&&(u[c]=E?function(N,C,I){I!=pl&&g(N,C,I)}:g)}a.defineOption=f,a.Init=pl,f("value","",function(c,p){return c.setValue(p)},!0),f("mode",null,function(c,p){c.doc.modeOption=p,k0(c)},!0),f("indentUnit",2,k0,!0),f("indentWithTabs",!1),f("smartIndent",!0),f("tabSize",4,function(c){yf(c),cf(c),Wn(c)},!0),f("lineSeparator",null,function(c,p){if(c.doc.lineSep=p,!!p){var g=[],E=c.doc.first;c.doc.iter(function(C){for(var I=0;;){var U=C.text.indexOf(p,I);if(U==-1)break;I=U+p.length,g.push(W(E,U))}E++});for(var N=g.length-1;N>=0;N--)ll(c.doc,p,g[N],W(g[N].line,g[N].ch+p.length))}}),f("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(c,p,g){c.state.specialChars=new RegExp(p.source+(p.test(" ")?"":"| "),"g"),g!=pl&&c.refresh()}),f("specialCharPlaceholder",c2,function(c){return c.refresh()},!0),f("electricChars",!0),f("inputStyle",m?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),f("spellcheck",!1,function(c,p){return c.getInputField().spellcheck=p},!0),f("autocorrect",!1,function(c,p){return c.getInputField().autocorrect=p},!0),f("autocapitalize",!1,function(c,p){return c.getInputField().autocapitalize=p},!0),f("rtlMoveVisually",!L),f("wholeLineUpdateBefore",!0),f("theme","default",function(c){zD(c),mf(c)},!0),f("keyMap","default",function(c,p,g){var E=Ph(p),N=g!=pl&&Ph(g);N&&N.detach&&N.detach(c,E),E.attach&&E.attach(c,N||null)}),f("extraKeys",null),f("configureMouse",null),f("lineWrapping",!1,FB,!0),f("gutters",[],function(c,p){c.display.gutterSpecs=E0(p,c.options.lineNumbers),mf(c)},!0),f("fixedGutter",!0,function(c,p){c.display.gutters.style.left=p?c0(c.display)+"px":"0",c.refresh()},!0),f("coverGutterNextToScrollbar",!1,function(c){return al(c)},!0),f("scrollbarStyle","native",function(c){JN(c),al(c),c.display.scrollbars.setScrollTop(c.doc.scrollTop),c.display.scrollbars.setScrollLeft(c.doc.scrollLeft)},!0),f("lineNumbers",!1,function(c,p){c.display.gutterSpecs=E0(c.options.gutters,p),mf(c)},!0),f("firstLineNumber",1,mf,!0),f("lineNumberFormatter",function(c){return c},mf,!0),f("showCursorWhenSelecting",!1,ff,!0),f("resetSelectionOnContextMenu",!0),f("lineWiseCopyCut",!0),f("pasteLinesPerSelection",!0),f("selectionsMayTouch",!1),f("readOnly",!1,function(c,p){p=="nocursor"&&(nl(c),c.display.input.blur()),c.display.input.readOnlyChanged(p)}),f("screenReaderLabel",null,function(c,p){p=p===""?null:p,c.display.input.screenReaderLabelChanged(p)}),f("disableInput",!1,function(c,p){p||c.display.input.reset()},!0),f("dragDrop",!0,PB),f("allowDropFileTypes",null),f("cursorBlinkRate",530),f("cursorScrollMargin",0),f("cursorHeight",1,ff,!0),f("singleCursorHeightPerLine",!0,ff,!0),f("workTime",100),f("workDelay",100),f("flattenSpans",!0,yf,!0),f("addModeClass",!1,yf,!0),f("pollInterval",100),f("undoDepth",200,function(c,p){return c.doc.history.undoDepth=p}),f("historyEventDelay",1250),f("viewportMargin",10,function(c){return c.refresh()},!0),f("maxHighlightLength",1e4,yf,!0),f("moveInputWithCursor",!0,function(c,p){p||c.display.input.resetPosition()}),f("tabindex",null,function(c,p){return c.display.input.getField().tabIndex=p||""}),f("autofocus",null),f("direction","ltr",function(c,p){return c.doc.setDirection(p)},!0),f("phrases",null)}function PB(a,u,f){var c=f&&f!=pl;if(!u!=!c){var p=a.display.dragFunctions,g=u?_e:Ar;g(a.display.scroller,"dragstart",p.start),g(a.display.scroller,"dragenter",p.enter),g(a.display.scroller,"dragover",p.over),g(a.display.scroller,"dragleave",p.leave),g(a.display.scroller,"drop",p.drop)}}function FB(a){a.options.lineWrapping?(Le(a.display.wrapper,"CodeMirror-wrap"),a.display.sizer.style.minWidth="",a.display.sizerWidth=null):(z(a.display.wrapper,"CodeMirror-wrap"),e0(a)),f0(a),Wn(a),cf(a),setTimeout(function(){return al(a)},100)}function ir(a,u){var f=this;if(!(this instanceof ir))return new ir(a,u);this.options=u=u?Ie(u):{},Ie(WD,u,!1);var c=u.value;typeof c=="string"?c=new Yn(c,u.mode,null,u.lineSeparator,u.direction):u.mode&&(c.modeOption=u.mode),this.doc=c;var p=new ir.inputStyles[u.inputStyle](this),g=this.display=new J2(a,c,p,u);g.wrapper.CodeMirror=this,zD(this),u.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),JN(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new ce,keySeq:null,specialChars:null},u.autofocus&&!m&&g.input.focus(),s&&l<11&&setTimeout(function(){return f.display.input.reset(!0)},20),MB(this),vB(),Yu(this),this.curOp.forceUpdate=!0,oD(this,c),u.autofocus&&!m||this.hasFocus()?setTimeout(function(){f.hasFocus()&&!f.state.focused&&v0(f)},20):nl(this);for(var E in Mh)Mh.hasOwnProperty(E)&&Mh[E](this,u[E],pl);$N(this),u.finishInit&&u.finishInit(this);for(var N=0;N20*20}_e(u.scroller,"touchstart",function(C){if(!nr(a,C)&&!g(C)&&!R0(a,C)){u.input.ensurePolled(),clearTimeout(f);var I=+new Date;u.activeTouch={start:I,moved:!1,prev:I-c.end<=300?c:null},C.touches.length==1&&(u.activeTouch.left=C.touches[0].pageX,u.activeTouch.top=C.touches[0].pageY)}}),_e(u.scroller,"touchmove",function(){u.activeTouch&&(u.activeTouch.moved=!0)}),_e(u.scroller,"touchend",function(C){var I=u.activeTouch;if(I&&!lo(u,C)&&I.left!=null&&!I.moved&&new Date-I.start<300){var U=a.coordsChar(u.activeTouch,"page"),K;!I.prev||E(I,I.prev)?K=new Nt(U,U):!I.prev.prev||E(I,I.prev.prev)?K=a.findWordAt(U):K=new Nt(W(U.line,0),Ye(a.doc,W(U.line+1,0))),a.setSelection(K.anchor,K.head),a.focus(),ee(C)}p()}),_e(u.scroller,"touchcancel",p),_e(u.scroller,"scroll",function(){u.scroller.clientHeight&&(pf(a,u.scroller.scrollTop),zu(a,u.scroller.scrollLeft,!0),Ft(a,"scroll",a))}),_e(u.scroller,"mousewheel",function(C){return rD(a,C)}),_e(u.scroller,"DOMMouseScroll",function(C){return rD(a,C)}),_e(u.wrapper,"scroll",function(){return u.wrapper.scrollTop=u.wrapper.scrollLeft=0}),u.dragFunctions={enter:function(C){nr(a,C)||J(C)},over:function(C){nr(a,C)||(hB(a,C),J(C))},start:function(C){return pB(a,C)},drop:Kr(a,dB),leave:function(C){nr(a,C)||CD(a)}};var N=u.input.getField();_e(N,"keyup",function(C){return UD.call(a,C)}),_e(N,"keydown",Kr(a,VD)),_e(N,"keypress",Kr(a,GD)),_e(N,"focus",function(C){return v0(a,C)}),_e(N,"blur",function(C){return nl(a,C)})}var j0=[];ir.defineInitHook=function(a){return j0.push(a)};function Lf(a,u,f,c){var p=a.doc,g;f==null&&(f="add"),f=="smart"&&(p.mode.indent?g=af(a,u).state:f="prev");var E=a.options.tabSize,N=Ae(p,u),C=te(N.text,null,E);N.stateAfter&&(N.stateAfter=null);var I=N.text.match(/^\s*/)[0],U;if(!c&&!/\S/.test(N.text))U=0,f="not";else if(f=="smart"&&(U=p.mode.indent(g,N.text.slice(I.length),N.text),U==Me||U>150)){if(!c)return;f="prev"}f=="prev"?u>p.first?U=te(Ae(p,u-1).text,null,E):U=0:f=="add"?U=C+a.options.indentUnit:f=="subtract"?U=C-a.options.indentUnit:typeof f=="number"&&(U=C+f),U=Math.max(0,U);var K="",$=0;if(a.options.indentWithTabs)for(var X=Math.floor(U/E);X;--X)$+=E,K+=" ";if($E,C=vn(u),I=null;if(N&&c.ranges.length>1)if(pa&&pa.text.join(` +`)==u){if(c.ranges.length%pa.text.length==0){I=[];for(var U=0;U=0;$--){var X=c.ranges[$],ae=X.from(),le=X.to();X.empty()&&(f&&f>0?ae=W(ae.line,ae.ch-f):a.state.overwrite&&!N?le=W(le.line,Math.min(Ae(g,le.line).text.length,le.ch+se(C).length)):N&&pa&&pa.lineWise&&pa.text.join(` +`)==C.join(` +`)&&(ae=le=W(ae.line,0)));var pe={from:ae,to:le,text:I?I[$%I.length]:C,origin:p||(N?"paste":a.state.cutIncoming>E?"cut":"+input")};sl(a.doc,pe),Br(a,"inputRead",a,pe)}u&&!N&&JD(a,u),il(a),a.curOp.updateInput<2&&(a.curOp.updateInput=K),a.curOp.typing=!0,a.state.pasteIncoming=a.state.cutIncoming=-1}function YD(a,u){var f=a.clipboardData&&a.clipboardData.getData("Text");if(f)return a.preventDefault(),!u.isReadOnly()&&!u.options.disableInput&&u.hasFocus()&&si(u,function(){return P0(u,f,0,null,"paste")}),!0}function JD(a,u){if(!(!a.options.electricChars||!a.options.smartIndent))for(var f=a.doc.sel,c=f.ranges.length-1;c>=0;c--){var p=f.ranges[c];if(!(p.head.ch>100||c&&f.ranges[c-1].head.line==p.head.line)){var g=a.getModeAt(p.head),E=!1;if(g.electricChars){for(var N=0;N-1){E=Lf(a,p.head.line,"smart");break}}else g.electricInput&&g.electricInput.test(Ae(a.doc,p.head.line).text.slice(0,p.head.ch))&&(E=Lf(a,p.head.line,"smart"));E&&Br(a,"electricInput",a,p.head.line)}}}function XD(a){for(var u=[],f=[],c=0;cg&&(Lf(this,N.head.line,c,!0),g=N.head.line,E==this.doc.sel.primIndex&&il(this));else{var C=N.from(),I=N.to(),U=Math.max(g,C.line);g=Math.min(this.lastLine(),I.line-(I.ch?0:1))+1;for(var K=U;K0&&D0(this.doc,E,new Nt(C,$[E].to()),Qe)}}}),getTokenAt:function(c,p){return sN(this,c,p)},getLineTokens:function(c,p){return sN(this,W(c),p,!0)},getTokenTypeAt:function(c){c=Ye(this.doc,c);var p=aN(this,Ae(this.doc,c.line)),g=0,E=(p.length-1)/2,N=c.ch,C;if(N==0)C=p[2];else for(;;){var I=g+E>>1;if((I?p[I*2-1]:0)>=N)E=I;else if(p[I*2+1]C&&(c=C,E=!0),N=Ae(this.doc,c)}else N=c;return Th(this,N,{top:0,left:0},p||"page",g||E).top+(E?this.doc.height-so(N):0)},defaultTextHeight:function(){return tl(this.display)},defaultCharWidth:function(){return rl(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(c,p,g,E,N){var C=this.display;c=fa(this,Ye(this.doc,c));var I=c.bottom,U=c.left;if(p.style.position="absolute",p.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(p),C.sizer.appendChild(p),E=="over")I=c.top;else if(E=="above"||E=="near"){var K=Math.max(C.wrapper.clientHeight,this.doc.height),$=Math.max(C.sizer.clientWidth,C.lineSpace.clientWidth);(E=="above"||c.bottom+p.offsetHeight>K)&&c.top>p.offsetHeight?I=c.top-p.offsetHeight:c.bottom+p.offsetHeight<=K&&(I=c.bottom),U+p.offsetWidth>$&&(U=$-p.offsetWidth)}p.style.top=I+"px",p.style.left=p.style.right="",N=="right"?(U=C.sizer.clientWidth-p.offsetWidth,p.style.right="0px"):(N=="left"?U=0:N=="middle"&&(U=(C.sizer.clientWidth-p.offsetWidth)/2),p.style.left=U+"px"),g&&P2(this,{left:U,top:I,right:U+p.offsetWidth,bottom:I+p.offsetHeight})},triggerOnKeyDown:Ln(VD),triggerOnKeyPress:Ln(GD),triggerOnKeyUp:UD,triggerOnMouseDown:Ln(QD),execCommand:function(c){if(Nf.hasOwnProperty(c))return Nf[c].call(null,this)},triggerElectric:Ln(function(c){JD(this,c)}),findPosH:function(c,p,g,E){var N=1;p<0&&(N=-1,p=-p);for(var C=Ye(this.doc,c),I=0;I0&&U(g.charAt(E-1));)--E;for(;N.5||this.options.lineWrapping)&&f0(this),Ft(this,"refresh",this)}),swapDoc:Ln(function(c){var p=this.doc;return p.cm=null,this.state.selectingText&&this.state.selectingText(),oD(this,c),cf(this),this.display.input.reset(),df(this,c.scrollLeft,c.scrollTop),this.curOp.forceScroll=!0,Br(this,"swapDoc",this,p),p}),phrase:function(c){var p=this.options.phrases;return p&&Object.prototype.hasOwnProperty.call(p,c)?p[c]:c},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},un(a),a.registerHelper=function(c,p,g){f.hasOwnProperty(c)||(f[c]=a[c]={_global:[]}),f[c][p]=g},a.registerGlobalHelper=function(c,p,g,E){a.registerHelper(c,p,E),f[c]._global.push({pred:g,val:E})}}function M0(a,u,f,c,p){var g=u,E=f,N=Ae(a,u.line),C=p&&a.direction=="rtl"?-f:f;function I(){var Ne=u.line+C;return Ne=a.first+a.size?!1:(u=new W(Ne,u.ch,u.sticky),N=Ae(a,Ne))}function U(Ne){var Te;if(c=="codepoint"){var Ce=N.text.charCodeAt(u.ch+(f>0?0:-1));if(isNaN(Ce))Te=null;else{var Ge=f>0?Ce>=55296&&Ce<56320:Ce>=56320&&Ce<57343;Te=new W(u.line,Math.max(0,Math.min(N.text.length,u.ch+f*(Ge?2:1))),-f)}}else p?Te=TB(a.cm,N,u,f):Te=C0(N,u,f);if(Te==null)if(!Ne&&I())u=L0(p,a.cm,N,u.line,C);else return!1;else u=Te;return!0}if(c=="char"||c=="codepoint")U();else if(c=="column")U(!0);else if(c=="word"||c=="group")for(var K=null,$=c=="group",X=a.cm&&a.cm.getHelper(u,"wordChars"),ae=!0;!(f<0&&!U(!ae));ae=!1){var le=N.text.charAt(u.ch)||` +`,pe=dn(le,X)?"w":$&&le==` +`?"n":!$||/\s/.test(le)?null:"p";if($&&!ae&&!pe&&(pe="s"),K&&K!=pe){f<0&&(f=1,U(),u.sticky="after");break}if(pe&&(K=pe),f>0&&!U(!ae))break}var be=Ah(a,u,g,E,!0);return We(g,be)&&(be.hitSide=!0),be}function $D(a,u,f,c){var p=a.doc,g=u.left,E;if(c=="page"){var N=Math.min(a.display.wrapper.clientHeight,At(a).innerHeight||p(a).documentElement.clientHeight),C=Math.max(N-.5*tl(a.display),3);E=(f>0?u.bottom:u.top)+f*C}else c=="line"&&(E=f>0?u.bottom+3:u.top-3);for(var I;I=u0(a,g,E),!!I.outside;){if(f<0?E<=0:E>=p.height){I.hitSide=!0;break}E+=f*5}return I}var Mt=function(a){this.cm=a,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new ce,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Mt.prototype.init=function(a){var u=this,f=this,c=f.cm,p=f.div=a.lineDiv;p.contentEditable=!0,F0(p,c.options.spellcheck,c.options.autocorrect,c.options.autocapitalize);function g(N){for(var C=N.target;C;C=C.parentNode){if(C==p)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(C.className))break}return!1}_e(p,"paste",function(N){!g(N)||nr(c,N)||YD(N,c)||l<=11&&setTimeout(Kr(c,function(){return u.updateFromDOM()}),20)}),_e(p,"compositionstart",function(N){u.composing={data:N.data,done:!1}}),_e(p,"compositionupdate",function(N){u.composing||(u.composing={data:N.data,done:!1})}),_e(p,"compositionend",function(N){u.composing&&(N.data!=u.composing.data&&u.readFromDOMSoon(),u.composing.done=!0)}),_e(p,"touchstart",function(){return f.forceCompositionEnd()}),_e(p,"input",function(){u.composing||u.readFromDOMSoon()});function E(N){if(!(!g(N)||nr(c,N))){if(c.somethingSelected())qh({lineWise:!1,text:c.getSelections()}),N.type=="cut"&&c.replaceSelection("",null,"cut");else if(c.options.lineWiseCopyCut){var C=XD(c);qh({lineWise:!0,text:C.text}),N.type=="cut"&&c.operation(function(){c.setSelections(C.ranges,0,Qe),c.replaceSelection("",null,"cut")})}else return;if(N.clipboardData){N.clipboardData.clearData();var I=pa.text.join(` +`);if(N.clipboardData.setData("Text",I),N.clipboardData.getData("Text")==I){N.preventDefault();return}}var U=ZD(),K=U.firstChild;F0(K),c.display.lineSpace.insertBefore(U,c.display.lineSpace.firstChild),K.value=pa.text.join(` +`);var $=Fe(p.ownerDocument);Xe(K),setTimeout(function(){c.display.lineSpace.removeChild(U),$.focus(),$==p&&f.showPrimarySelection()},50)}}_e(p,"copy",E),_e(p,"cut",E)},Mt.prototype.screenReaderLabelChanged=function(a){a?this.div.setAttribute("aria-label",a):this.div.removeAttribute("aria-label")},Mt.prototype.prepareSelection=function(){var a=QN(this.cm,!1);return a.focus=Fe(this.div.ownerDocument)==this.div,a},Mt.prototype.showSelection=function(a,u){!a||!this.cm.display.view.length||((a.focus||u)&&this.showPrimarySelection(),this.showMultipleSelections(a))},Mt.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Mt.prototype.showPrimarySelection=function(){var a=this.getSelection(),u=this.cm,f=u.doc.sel.primary(),c=f.from(),p=f.to();if(u.display.viewTo==u.display.viewFrom||c.line>=u.display.viewTo||p.line=u.display.viewFrom&&ex(u,c)||{node:N[0].measure.map[2],offset:0},I=p.linea.firstLine()&&(c=W(c.line-1,Ae(a.doc,c.line-1).length)),p.ch==Ae(a.doc,p.line).text.length&&p.lineu.viewTo-1)return!1;var g,E,N;c.line==u.viewFrom||(g=Hu(a,c.line))==0?(E=wt(u.view[0].line),N=u.view[0].node):(E=wt(u.view[g].line),N=u.view[g-1].node.nextSibling);var C=Hu(a,p.line),I,U;if(C==u.view.length-1?(I=u.viewTo-1,U=u.lineDiv.lastChild):(I=wt(u.view[C+1].line)-1,U=u.view[C+1].node.previousSibling),!N)return!1;for(var K=a.doc.splitLines(UB(a,N,U,E,I)),$=oo(a.doc,W(E,0),W(I,Ae(a.doc,I).text.length));K.length>1&&$.length>1;)if(se(K)==se($))K.pop(),$.pop(),I--;else if(K[0]==$[0])K.shift(),$.shift(),E++;else break;for(var X=0,ae=0,le=K[0],pe=$[0],be=Math.min(le.length,pe.length);Xc.ch&&Ne.charCodeAt(Ne.length-ae-1)==Te.charCodeAt(Te.length-ae-1);)X--,ae++;K[K.length-1]=Ne.slice(0,Ne.length-ae).replace(/^\u200b+/,""),K[0]=K[0].slice(X).replace(/\u200b+$/,"");var Ge=W(E,X),qe=W(I,$.length?se($).length-ae:0);if(K.length>1||K[0]||ie(Ge,qe))return ll(a.doc,K,Ge,qe,"+input"),!0},Mt.prototype.ensurePolled=function(){this.forceCompositionEnd()},Mt.prototype.reset=function(){this.forceCompositionEnd()},Mt.prototype.forceCompositionEnd=function(){!this.composing||(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Mt.prototype.readFromDOMSoon=function(){var a=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(a.readDOMTimeout=null,a.composing)if(a.composing.done)a.composing=null;else return;a.updateFromDOM()},80))},Mt.prototype.updateFromDOM=function(){var a=this;(this.cm.isReadOnly()||!this.pollContent())&&si(this.cm,function(){return Wn(a.cm)})},Mt.prototype.setUneditable=function(a){a.contentEditable="false"},Mt.prototype.onKeyPress=function(a){a.charCode==0||this.composing||(a.preventDefault(),this.cm.isReadOnly()||Kr(this.cm,P0)(this.cm,String.fromCharCode(a.charCode==null?a.keyCode:a.charCode),0))},Mt.prototype.readOnlyChanged=function(a){this.div.contentEditable=String(a!="nocursor")},Mt.prototype.onContextMenu=function(){},Mt.prototype.resetPosition=function(){},Mt.prototype.needsContentAttribute=!0;function ex(a,u){var f=i0(a,u.line);if(!f||f.hidden)return null;var c=Ae(a.doc,u.line),p=xN(f,c,u.line),g=xn(c,a.doc.direction),E="left";if(g){var N=vr(g,u.ch);E=N%2?"right":"left"}var C=IN(p.map,u.ch,E);return C.offset=C.collapse=="right"?C.end:C.start,C}function VB(a){for(var u=a;u;u=u.parentNode)if(/CodeMirror-gutter-wrapper/.test(u.className))return!0;return!1}function hl(a,u){return u&&(a.bad=!0),a}function UB(a,u,f,c,p){var g="",E=!1,N=a.doc.lineSeparator(),C=!1;function I(X){return function(ae){return ae.id==X}}function U(){E&&(g+=N,C&&(g+=N),E=C=!1)}function K(X){X&&(U(),g+=X)}function $(X){if(X.nodeType==1){var ae=X.getAttribute("cm-text");if(ae){K(ae);return}var le=X.getAttribute("cm-marker"),pe;if(le){var be=a.findMarks(W(c,0),W(p+1,0),I(+le));be.length&&(pe=be[0].find(0))&&K(oo(a.doc,pe.from,pe.to).join(N));return}if(X.getAttribute("contenteditable")=="false")return;var Ne=/^(pre|div|p|li|table|br)$/i.test(X.nodeName);if(!/^br$/i.test(X.nodeName)&&X.textContent.length==0)return;Ne&&U();for(var Te=0;Te=9&&u.hasSelection&&(u.hasSelection=null),f.poll()}),_e(p,"paste",function(E){nr(c,E)||YD(E,c)||(c.state.pasteIncoming=+new Date,f.fastPoll())});function g(E){if(!nr(c,E)){if(c.somethingSelected())qh({lineWise:!1,text:c.getSelections()});else if(c.options.lineWiseCopyCut){var N=XD(c);qh({lineWise:!0,text:N.text}),E.type=="cut"?c.setSelections(N.ranges,null,Qe):(f.prevInput="",p.value=N.text.join(` +`),Xe(p))}else return;E.type=="cut"&&(c.state.cutIncoming=+new Date)}}_e(p,"cut",g),_e(p,"copy",g),_e(a.scroller,"paste",function(E){if(!(lo(a,E)||nr(c,E))){if(!p.dispatchEvent){c.state.pasteIncoming=+new Date,f.focus();return}var N=new Event("paste");N.clipboardData=E.clipboardData,p.dispatchEvent(N)}}),_e(a.lineSpace,"selectstart",function(E){lo(a,E)||ee(E)}),_e(p,"compositionstart",function(){var E=c.getCursor("from");f.composing&&f.composing.range.clear(),f.composing={start:E,range:c.markText(E,c.getCursor("to"),{className:"CodeMirror-composing"})}}),_e(p,"compositionend",function(){f.composing&&(f.poll(),f.composing.range.clear(),f.composing=null)})},Tr.prototype.createField=function(a){this.wrapper=ZD(),this.textarea=this.wrapper.firstChild;var u=this.cm.options;F0(this.textarea,u.spellcheck,u.autocorrect,u.autocapitalize)},Tr.prototype.screenReaderLabelChanged=function(a){a?this.textarea.setAttribute("aria-label",a):this.textarea.removeAttribute("aria-label")},Tr.prototype.prepareSelection=function(){var a=this.cm,u=a.display,f=a.doc,c=QN(a);if(a.options.moveInputWithCursor){var p=fa(a,f.sel.primary().head,"div"),g=u.wrapper.getBoundingClientRect(),E=u.lineDiv.getBoundingClientRect();c.teTop=Math.max(0,Math.min(u.wrapper.clientHeight-10,p.top+E.top-g.top)),c.teLeft=Math.max(0,Math.min(u.wrapper.clientWidth-10,p.left+E.left-g.left))}return c},Tr.prototype.showSelection=function(a){var u=this.cm,f=u.display;Q(f.cursorDiv,a.cursors),Q(f.selectionDiv,a.selection),a.teTop!=null&&(this.wrapper.style.top=a.teTop+"px",this.wrapper.style.left=a.teLeft+"px")},Tr.prototype.reset=function(a){if(!(this.contextMenuPending||this.composing&&a)){var u=this.cm;if(this.resetting=!0,u.somethingSelected()){this.prevInput="";var f=u.getSelection();this.textarea.value=f,u.state.focused&&Xe(this.textarea),s&&l>=9&&(this.hasSelection=f)}else a||(this.prevInput=this.textarea.value="",s&&l>=9&&(this.hasSelection=null));this.resetting=!1}},Tr.prototype.getField=function(){return this.textarea},Tr.prototype.supportsTouch=function(){return!1},Tr.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!m||Fe(this.textarea.ownerDocument)!=this.textarea))try{this.textarea.focus()}catch(a){}},Tr.prototype.blur=function(){this.textarea.blur()},Tr.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Tr.prototype.receivedFocus=function(){this.slowPoll()},Tr.prototype.slowPoll=function(){var a=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){a.poll(),a.cm.state.focused&&a.slowPoll()})},Tr.prototype.fastPoll=function(){var a=!1,u=this;u.pollingFast=!0;function f(){var c=u.poll();!c&&!a?(a=!0,u.polling.set(60,f)):(u.pollingFast=!1,u.slowPoll())}u.polling.set(20,f)},Tr.prototype.poll=function(){var a=this,u=this.cm,f=this.textarea,c=this.prevInput;if(this.contextMenuPending||this.resetting||!u.state.focused||Rr(f)&&!c&&!this.composing||u.isReadOnly()||u.options.disableInput||u.state.keySeq)return!1;var p=f.value;if(p==c&&!u.somethingSelected())return!1;if(s&&l>=9&&this.hasSelection===p||w&&/[\uf700-\uf7ff]/.test(p))return u.display.input.reset(),!1;if(u.doc.sel==u.display.selForContextMenu){var g=p.charCodeAt(0);if(g==8203&&!c&&(c="\u200B"),g==8666)return this.reset(),this.cm.execCommand("undo")}for(var E=0,N=Math.min(c.length,p.length);E1e3||p.indexOf(` +`)>-1?f.value=a.prevInput="":a.prevInput=p,a.composing&&(a.composing.range.clear(),a.composing.range=u.markText(a.composing.start,u.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Tr.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Tr.prototype.onKeyPress=function(){s&&l>=9&&(this.hasSelection=null),this.fastPoll()},Tr.prototype.onContextMenu=function(a){var u=this,f=u.cm,c=f.display,p=u.textarea;u.contextMenuPending&&u.contextMenuPending();var g=Ku(f,a),E=c.scroller.scrollTop;if(!g||b)return;var N=f.options.resetSelectionOnContextMenu;N&&f.doc.sel.contains(g)==-1&&Kr(f,gn)(f.doc,Vo(g),Qe);var C=p.style.cssText,I=u.wrapper.style.cssText,U=u.wrapper.offsetParent.getBoundingClientRect();u.wrapper.style.cssText="position: static",p.style.cssText=`position: absolute; width: 30px; height: 30px; + top: `+(a.clientY-U.top-5)+"px; left: "+(a.clientX-U.left-5)+`px; z-index: 1000; background: `+(s?"rgba(255, 255, 255, .05)":"transparent")+`; - outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var K;d&&(K=p.ownerDocument.defaultView.scrollY),c.input.focus(),d&&p.ownerDocument.defaultView.scrollTo(null,K),c.input.reset(),f.somethingSelected()||(p.value=u.prevInput=" "),u.contextMenuPending=X,c.selForContextMenu=f.doc.sel,clearTimeout(c.detectingSelectAll);function $(){if(p.selectionStart!=null){var ae=f.somethingSelected(),le="\u200B"+(ae?p.value:"");p.value="\u21DA",p.value=le,u.prevInput=ae?"":"\u200B",p.selectionStart=1,p.selectionEnd=le.length,c.selForContextMenu=f.doc.sel}}function X(){if(u.contextMenuPending==X&&(u.contextMenuPending=!1,u.wrapper.style.cssText=x,p.style.cssText=N,s&&l<9&&c.scrollbars.setScrollTop(c.scroller.scrollTop=E),p.selectionStart!=null)){(!s||s&&l<9)&&$();var ae=0,le=function(){c.selForContextMenu==f.doc.sel&&p.selectionStart==0&&p.selectionEnd>0&&u.prevInput=="\u200B"?xr(f,mO)(f):ae++<10?c.detectingSelectAll=setTimeout(le,500):(c.selForContextMenu=null,c.input.reset())};c.detectingSelectAll=setTimeout(le,200)}}if(s&&l>=9&&$(),M){J(i);var ne=function(){Tr(window,"mouseup",ne),setTimeout(X,20)};ge(window,"mouseup",ne)}else setTimeout(X,50)},sr.prototype.readOnlyChanged=function(i){i||this.reset(),this.textarea.disabled=i=="nocursor",this.textarea.readOnly=!!i},sr.prototype.setUneditable=function(){},sr.prototype.needsContentAttribute=!1;function bV(i,u){if(u=u?Ie(u):{},u.value=i.value,!u.tabindex&&i.tabIndex&&(u.tabindex=i.tabIndex),!u.placeholder&&i.placeholder&&(u.placeholder=i.placeholder),u.autofocus==null){var f=Ce(i.ownerDocument);u.autofocus=f==i||i.getAttribute("autofocus")!=null&&f==document.body}function c(){i.value=O.getValue()}var p;if(i.form&&(ge(i.form,"submit",c),!u.leaveSubmitMethodAlone)){var g=i.form;p=g.submit;try{var E=g.submit=function(){c(),g.submit=p,g.submit(),g.submit=E}}catch(N){}}u.finishInit=function(N){N.save=c,N.getTextArea=function(){return i},N.toTextArea=function(){N.toTextArea=isNaN,c(),i.parentNode.removeChild(N.getWrapperElement()),i.style.display="",i.form&&(Tr(i.form,"submit",c),!u.leaveSubmitMethodAlone&&typeof i.form.submit=="function"&&(i.form.submit=p))}},i.style.display="none";var O=Wt(function(N){return i.parentNode.insertBefore(N,i.nextSibling)},u);return O}function TV(i){i.off=Tr,i.on=ge,i.wheelEventPixels=CB,i.Doc=wn,i.splitLines=en,i.countColumn=De,i.findColumn=oe,i.isWordChar=la,i.Pass=rt,i.signal=At,i.Line=Rs,i.changeEnd=Co,i.scrollbarModel=zk,i.Pos=W,i.cmpPos=re,i.modes=fn,i.mimeModes=Hi,i.resolveMode=Vn,i.getMode=Ha,i.modeExtensions=Eo,i.extendMode=Hp,i.copyState=za,i.startState=Mc,i.innerMode=_o,i.commands=sf,i.keyMap=$a,i.keyName=IO,i.isModifierKey=LO,i.lookupKey=zs,i.normalizeKeyMap=YB,i.StringStream=ir,i.SharedTextMarker=af,i.TextMarker=Ao,i.LineWidget=nf,i.e_preventDefault=ee,i.e_stopPropagation=P,i.e_stop=J,i.addClass=we,i.contains=be,i.rmClass=z,i.keyNames=No}fV(Wt),vV(Wt);var EV="iter insert remove copy getEditor constructor".split(" ");for(var _h in wn.prototype)wn.prototype.hasOwnProperty(_h)&&Ue(EV,_h)<0&&(Wt.prototype[_h]=function(i){return function(){return i.apply(this.doc,arguments)}}(wn.prototype[_h]));return zr(wn),Wt.inputStyles={textarea:sr,contenteditable:Nt},Wt.defineMode=function(i){!Wt.defaults.mode&&i!="null"&&(Wt.defaults.mode=i),Kp.apply(this,arguments)},Wt.defineMIME=xs,Wt.defineMode("null",function(){return{token:function(i){return i.skipToEnd()}}}),Wt.defineMIME("text/plain","null"),Wt.defineExtension=function(i,u){Wt.prototype[i]=u},Wt.defineDocExtension=function(i,u){wn.prototype[i]=u},Wt.fromTextArea=bV,TV(Wt),Wt.version="5.65.9",Wt})});var vp=U((EP,_P)=>{(function(e){typeof EP=="object"&&typeof _P=="object"?e(ft()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t="CodeMirror-hint",r="CodeMirror-hint-active";e.showHint=function(S,y,_){if(!y)return S.showHint(_);_&&_.async&&(y.async=!0);var m={hint:y};if(_)for(var k in _)m[k]=_[k];return S.showHint(m)},e.defineExtension("showHint",function(S){S=s(this,this.getCursor("start"),S);var y=this.listSelections();if(!(y.length>1)){if(this.somethingSelected()){if(!S.hint.supportsSelection)return;for(var _=0;_C.clientHeight+1:!1,Ue;setTimeout(function(){Ue=m.getScrollInfo()});var Gi=De.bottom-Ie;if(Gi>0){var rt=De.bottom-De.top,ut=De.top-(j.bottom-j.top)-2;Ie-De.toput&&(C.style.height=(rt=ut)+"px"),C.style.top=(ke=j.top-rt)+we+"px",be=!1):C.style.height=Ie-De.top-2+"px"}var Nr=De.right-Mt;if(Pe&&(Nr+=m.display.nativeBarWidth),Nr>0&&(De.right-De.left>Mt&&(C.style.width=Mt-5+"px",Nr-=De.right-De.left-Mt),C.style.left=(ce=Math.max(j.left-Nr-Ce,0))+"px"),Pe)for(var $r=C.firstChild;$r;$r=$r.nextSibling)$r.style.paddingRight=m.display.nativeBarWidth+"px";if(m.addKeyMap(this.keyMap=d(S,{moveFocus:function(fe,ue){_.changeActive(_.selectedHint+fe,ue)},setFocus:function(fe){_.changeActive(fe)},menuSize:function(){return _.screenAmount()},length:R.length,close:function(){S.close()},pick:function(){_.pick()},data:y})),S.options.closeOnUnfocus){var oe;m.on("blur",this.onBlur=function(){oe=setTimeout(function(){S.close()},100)}),m.on("focus",this.onFocus=function(){clearTimeout(oe)})}m.on("scroll",this.onScroll=function(){var fe=m.getScrollInfo(),ue=m.getWrapperElement().getBoundingClientRect();Ue||(Ue=m.getScrollInfo());var Ge=ke+Ue.top-fe.top,Ze=Ge-(w.pageYOffset||(k.documentElement||k.body).scrollTop);if(be||(Ze+=C.offsetHeight),Ze<=ue.top||Ze>=ue.bottom)return S.close();C.style.top=Ge+"px",C.style.left=ce+Ue.left-fe.left+"px"}),e.on(C,"dblclick",function(fe){var ue=h(C,fe.target||fe.srcElement);ue&&ue.hintId!=null&&(_.changeActive(ue.hintId),_.pick())}),e.on(C,"click",function(fe){var ue=h(C,fe.target||fe.srcElement);ue&&ue.hintId!=null&&(_.changeActive(ue.hintId),S.options.completeOnSingleClick&&_.pick())}),e.on(C,"mousedown",function(){setTimeout(function(){m.focus()},20)});var Se=this.getSelectedHintRange();return(Se.from!==0||Se.to!==0)&&this.scrollToActive(),e.signal(y,"select",R[this.selectedHint],C.childNodes[this.selectedHint]),!0}v.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode&&this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var S=this.completion.cm.getInputField();S.removeAttribute("aria-activedescendant"),S.removeAttribute("aria-owns");var y=this.completion.cm;this.completion.options.closeOnUnfocus&&(y.off("blur",this.onBlur),y.off("focus",this.onFocus)),y.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var S=this;this.keyMap={Enter:function(){S.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(S,y){if(S>=this.data.list.length?S=y?this.data.list.length-1:0:S<0&&(S=y?0:this.data.list.length-1),this.selectedHint!=S){var _=this.hints.childNodes[this.selectedHint];_&&(_.className=_.className.replace(" "+r,""),_.removeAttribute("aria-selected")),_=this.hints.childNodes[this.selectedHint=S],_.className+=" "+r,_.setAttribute("aria-selected","true"),this.completion.cm.getInputField().setAttribute("aria-activedescendant",_.id),this.scrollToActive(),e.signal(this.data,"select",this.data.list[this.selectedHint],_)}},scrollToActive:function(){var S=this.getSelectedHintRange(),y=this.hints.childNodes[S.from],_=this.hints.childNodes[S.to],m=this.hints.firstChild;y.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=_.offsetTop+_.offsetHeight-this.hints.clientHeight+m.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1},getSelectedHintRange:function(){var S=this.completion.options.scrollMargin||0;return{from:Math.max(0,this.selectedHint-S),to:Math.min(this.data.list.length-1,this.selectedHint+S)}}};function b(S,y){if(!S.somethingSelected())return y;for(var _=[],m=0;m0?C(z):M(q+1)})}M(0)};return k.async=!0,k.supportsSelection=!0,k}else return(m=S.getHelper(S.getCursor(),"hintWords"))?function(w){return e.hint.fromList(w,{words:m})}:e.hint.anyword?function(w,C){return e.hint.anyword(w,C)}:function(){}}e.registerHelper("hint","auto",{resolve:A}),e.registerHelper("hint","fromList",function(S,y){var _=S.getCursor(),m=S.getTokenAt(_),k,w=e.Pos(_.line,m.start),C=_;m.start<_.ch&&/\w/.test(m.string.charAt(_.ch-m.start-1))?k=m.string.substr(0,_.ch-m.start):(k="",w=_);for(var D=[],R=0;R,]/,closeOnPick:!0,closeOnUnfocus:!0,updateOnCursorActivity:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null,paddingForScrollbar:!0,moveOnOverlap:!0};e.defineOption("hintOptions",null)})});var kP=U((SP,DP)=>{(function(e){typeof SP=="object"&&typeof DP=="object"?e(ft()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t={},r=/[^\s\u00a0]/,n=e.Pos,a=e.cmpPos;function o(d){var h=d.search(r);return h==-1?0:h}e.commands.toggleComment=function(d){d.toggleComment()},e.defineExtension("toggleComment",function(d){d||(d=t);for(var h=this,v=1/0,b=this.listSelections(),T=null,A=b.length-1;A>=0;A--){var L=b[A].from(),S=b[A].to();L.line>=v||(S.line>=v&&(S=n(v,0)),v=L.line,T==null?h.uncomment(L,S,d)?T="un":(h.lineComment(L,S,d),T="line"):T=="un"?h.uncomment(L,S,d):h.lineComment(L,S,d))}});function s(d,h,v){return/\bstring\b/.test(d.getTokenTypeAt(n(h.line,0)))&&!/^[\'\"\`]/.test(v)}function l(d,h){var v=d.getMode();return v.useInnerComments===!1||!v.innerMode?v:d.getModeAt(h)}e.defineExtension("lineComment",function(d,h,v){v||(v=t);var b=this,T=l(b,d),A=b.getLine(d.line);if(!(A==null||s(b,d,A))){var L=v.lineComment||T.lineComment;if(!L){(v.blockCommentStart||T.blockCommentStart)&&(v.fullLines=!0,b.blockComment(d,h,v));return}var S=Math.min(h.ch!=0||h.line==d.line?h.line+1:h.line,b.lastLine()+1),y=v.padding==null?" ":v.padding,_=v.commentBlankLines||d.line==h.line;b.operation(function(){if(v.indent){for(var m=null,k=d.line;kC.length)&&(m=C)}for(var k=d.line;kS||b.operation(function(){if(v.fullLines!=!1){var _=r.test(b.getLine(S));b.replaceRange(y+L,n(S)),b.replaceRange(A+y,n(d.line,0));var m=v.blockCommentLead||T.blockCommentLead;if(m!=null)for(var k=d.line+1;k<=S;++k)(k!=S||_)&&b.replaceRange(m+y,n(k,0))}else{var w=a(b.getCursor("to"),h)==0,C=!b.somethingSelected();b.replaceRange(L,h),w&&b.setSelection(C?h:b.getCursor("from"),h),b.replaceRange(A,d)}})}}),e.defineExtension("uncomment",function(d,h,v){v||(v=t);var b=this,T=l(b,d),A=Math.min(h.ch!=0||h.line==d.line?h.line:h.line-1,b.lastLine()),L=Math.min(d.line,A),S=v.lineComment||T.lineComment,y=[],_=v.padding==null?" ":v.padding,m;e:{if(!S)break e;for(var k=L;k<=A;++k){var w=b.getLine(k),C=w.indexOf(S);if(C>-1&&!/comment/.test(b.getTokenTypeAt(n(k,C+1)))&&(C=-1),C==-1&&r.test(w)||C>-1&&r.test(w.slice(0,C)))break e;y.push(w)}if(b.operation(function(){for(var we=L;we<=A;++we){var Ve=y[we-L],pt=Ve.indexOf(S),Je=pt+S.length;pt<0||(Ve.slice(Je,Je+_.length)==_&&(Je+=_.length),m=!0,b.replaceRange("",n(we,pt),n(we,Je)))}}),m)return!0}var D=v.blockCommentStart||T.blockCommentStart,R=v.blockCommentEnd||T.blockCommentEnd;if(!D||!R)return!1;var M=v.blockCommentLead||T.blockCommentLead,q=b.getLine(L),z=q.indexOf(D);if(z==-1)return!1;var Q=A==L?q:b.getLine(A),G=Q.indexOf(R,A==L?z+D.length:0),j=n(L,z+1),ce=n(A,G+1);if(G==-1||!/comment/.test(b.getTokenTypeAt(j))||!/comment/.test(b.getTokenTypeAt(ce))||b.getRange(j,ce,` -`).indexOf(R)>-1)return!1;var ke=q.lastIndexOf(D,d.ch),be=ke==-1?-1:q.slice(0,d.ch).indexOf(R,ke+D.length);if(ke!=-1&&be!=-1&&be+R.length!=d.ch)return!1;be=Q.indexOf(R,h.ch);var Ce=Q.slice(h.ch).lastIndexOf(D,be-h.ch);return ke=be==-1||Ce==-1?-1:h.ch+Ce,be!=-1&&ke!=-1&&ke!=h.ch?!1:(b.operation(function(){b.replaceRange("",n(A,G-(_&&Q.slice(G-_.length,G)==_?_.length:0)),n(A,G+R.length));var we=z+D.length;if(_&&q.slice(we,we+_.length)==_&&(we+=_.length),b.replaceRange("",n(L,z),n(L,we)),M)for(var Ve=L+1;Ve<=A;++Ve){var pt=b.getLine(Ve),Je=pt.indexOf(M);if(!(Je==-1||r.test(pt.slice(0,Je)))){var wt=Je+M.length;_&&pt.slice(wt,wt+_.length)==_&&(wt+=_.length),b.replaceRange("",n(Ve,Je),n(Ve,wt))}}}),!0)})})});var gp=U((OP,CP)=>{(function(e){typeof OP=="object"&&typeof CP=="object"?e(ft()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){var t=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),r=e.Pos,n={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function a(v){return v&&v.bracketRegex||/[(){}[\]]/}function o(v,b,T){var A=v.getLineHandle(b.line),L=b.ch-1,S=T&&T.afterCursor;S==null&&(S=/(^| )cm-fat-cursor($| )/.test(v.getWrapperElement().className));var y=a(T),_=!S&&L>=0&&y.test(A.text.charAt(L))&&n[A.text.charAt(L)]||y.test(A.text.charAt(L+1))&&n[A.text.charAt(++L)];if(!_)return null;var m=_.charAt(1)==">"?1:-1;if(T&&T.strict&&m>0!=(L==b.ch))return null;var k=v.getTokenTypeAt(r(b.line,L+1)),w=s(v,r(b.line,L+(m>0?1:0)),m,k,T);return w==null?null:{from:r(b.line,L),to:w&&w.pos,match:w&&w.ch==_.charAt(0),forward:m>0}}function s(v,b,T,A,L){for(var S=L&&L.maxScanLineLength||1e4,y=L&&L.maxScanLines||1e3,_=[],m=a(L),k=T>0?Math.min(b.line+y,v.lastLine()+1):Math.max(v.firstLine()-1,b.line-y),w=b.line;w!=k;w+=T){var C=v.getLine(w);if(!!C){var D=T>0?0:C.length-1,R=T>0?C.length:-1;if(!(C.length>S))for(w==b.line&&(D=b.ch-(T<0?1:0));D!=R;D+=T){var M=C.charAt(D);if(m.test(M)&&(A===void 0||(v.getTokenTypeAt(r(w,D+1))||"")==(A||""))){var q=n[M];if(q&&q.charAt(1)==">"==T>0)_.push(M);else if(_.length)_.pop();else return{pos:r(w,D),ch:M}}}}}return w-T==(T>0?v.lastLine():v.firstLine())?!1:null}function l(v,b,T){for(var A=v.state.matchBrackets.maxHighlightLineLength||1e3,L=T&&T.highlightNonMatching,S=[],y=v.listSelections(),_=0;_{(function(e){typeof wP=="object"&&typeof AP=="object"?e(ft()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){var t={pairs:`()[]{}''""`,closeBefore:`)]}'":;>`,triples:"",explode:"[]{}"},r=e.Pos;e.defineOption("autoCloseBrackets",!1,function(S,y,_){_&&_!=e.Init&&(S.removeKeyMap(a),S.state.closeBrackets=null),y&&(o(n(y,"pairs")),S.state.closeBrackets=y,S.addKeyMap(a))});function n(S,y){return y=="pairs"&&typeof S=="string"?S:typeof S=="object"&&S[y]!=null?S[y]:t[y]}var a={Backspace:d,Enter:h};function o(S){for(var y=0;y=0;k--){var C=m[k].head;S.replaceRange("",r(C.line,C.ch-1),r(C.line,C.ch+1),"+delete")}}function h(S){var y=l(S),_=y&&n(y,"explode");if(!_||S.getOption("disableInput"))return e.Pass;for(var m=S.listSelections(),k=0;k0?{line:C.head.line,ch:C.head.ch+y}:{line:C.head.line-1};_.push({anchor:D,head:D})}S.setSelections(_,k)}function b(S){var y=e.cmpPos(S.anchor,S.head)>0;return{anchor:new r(S.anchor.line,S.anchor.ch+(y?-1:1)),head:new r(S.head.line,S.head.ch+(y?1:-1))}}function T(S,y){var _=l(S);if(!_||S.getOption("disableInput"))return e.Pass;var m=n(_,"pairs"),k=m.indexOf(y);if(k==-1)return e.Pass;for(var w=n(_,"closeBefore"),C=n(_,"triples"),D=m.charAt(k+1)==y,R=S.listSelections(),M=k%2==0,q,z=0;z=0&&S.getRange(G,r(G.line,G.ch+3))==y+y+y?j="skipThree":j="skip";else if(D&&G.ch>1&&C.indexOf(y)>=0&&S.getRange(r(G.line,G.ch-2),G)==y+y){if(G.ch>2&&/\bstring/.test(S.getTokenTypeAt(r(G.line,G.ch-2))))return e.Pass;j="addFour"}else if(D){var ke=G.ch==0?" ":S.getRange(r(G.line,G.ch-1),G);if(!e.isWordChar(ce)&&ke!=y&&!e.isWordChar(ke))j="both";else return e.Pass}else if(M&&(ce.length===0||/\s/.test(ce)||w.indexOf(ce)>-1))j="both";else return e.Pass;if(!q)q=j;else if(q!=j)return e.Pass}var be=k%2?m.charAt(k-1):y,Ce=k%2?y:m.charAt(k+1);S.operation(function(){if(q=="skip")v(S,1);else if(q=="skipThree")v(S,3);else if(q=="surround"){for(var we=S.getSelections(),Ve=0;Ve{(function(e){typeof NP=="object"&&typeof LP=="object"?e(ft()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";function t(o,s,l,d){if(l&&l.call){var h=l;l=null}else var h=a(o,l,"rangeFinder");typeof s=="number"&&(s=e.Pos(s,0));var v=a(o,l,"minFoldSize");function b(S){var y=h(o,s);if(!y||y.to.line-y.from.lineo.firstLine();)s=e.Pos(s.line-1,0),T=b(!1);if(!(!T||T.cleared||d==="unfold")){var A=r(o,l,T);e.on(A,"mousedown",function(S){L.clear(),e.e_preventDefault(S)});var L=o.markText(T.from,T.to,{replacedWith:A,clearOnEnter:a(o,l,"clearOnEnter"),__isFold:!0});L.on("clear",function(S,y){e.signal(o,"unfold",o,S,y)}),e.signal(o,"fold",o,T.from,T.to)}}function r(o,s,l){var d=a(o,s,"widget");if(typeof d=="function"&&(d=d(l.from,l.to)),typeof d=="string"){var h=document.createTextNode(d);d=document.createElement("span"),d.appendChild(h),d.className="CodeMirror-foldmarker"}else d&&(d=d.cloneNode(!0));return d}e.newFoldFunction=function(o,s){return function(l,d){t(l,d,{rangeFinder:o,widget:s})}},e.defineExtension("foldCode",function(o,s,l){t(this,o,s,l)}),e.defineExtension("isFolded",function(o){for(var s=this.findMarksAt(o),l=0;l{(function(e){typeof IP=="object"&&typeof RP=="object"?e(ft(),xP()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","./foldcode"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("foldGutter",!1,function(L,S,y){y&&y!=e.Init&&(L.clearGutter(L.state.foldGutter.options.gutter),L.state.foldGutter=null,L.off("gutterClick",h),L.off("changes",b),L.off("viewportChange",T),L.off("fold",A),L.off("unfold",A),L.off("swapDoc",b),L.off("optionChange",v)),S&&(L.state.foldGutter=new r(n(S)),d(L),L.on("gutterClick",h),L.on("changes",b),L.on("viewportChange",T),L.on("fold",A),L.on("unfold",A),L.on("swapDoc",b),L.on("optionChange",v))});var t=e.Pos;function r(L){this.options=L,this.from=this.to=0}function n(L){return L===!0&&(L={}),L.gutter==null&&(L.gutter="CodeMirror-foldgutter"),L.indicatorOpen==null&&(L.indicatorOpen="CodeMirror-foldgutter-open"),L.indicatorFolded==null&&(L.indicatorFolded="CodeMirror-foldgutter-folded"),L}function a(L,S){for(var y=L.findMarks(t(S,0),t(S+1,0)),_=0;_=k){if(D&&q&&D.test(q.className))return;M=o(_.indicatorOpen)}}!M&&!q||L.setGutterMarker(R,_.gutter,M)})}function l(L){return new RegExp("(^|\\s)"+L+"(?:$|\\s)\\s*")}function d(L){var S=L.getViewport(),y=L.state.foldGutter;!y||(L.operation(function(){s(L,S.from,S.to)}),y.from=S.from,y.to=S.to)}function h(L,S,y){var _=L.state.foldGutter;if(!!_){var m=_.options;if(y==m.gutter){var k=a(L,S);k?k.clear():L.foldCode(t(S,0),m)}}}function v(L,S){S=="mode"&&b(L)}function b(L){var S=L.state.foldGutter;if(!!S){var y=S.options;S.from=S.to=0,clearTimeout(S.changeUpdate),S.changeUpdate=setTimeout(function(){d(L)},y.foldOnChangeTimeSpan||600)}}function T(L){var S=L.state.foldGutter;if(!!S){var y=S.options;clearTimeout(S.changeUpdate),S.changeUpdate=setTimeout(function(){var _=L.getViewport();S.from==S.to||_.from-S.to>20||S.from-_.to>20?d(L):L.operation(function(){_.fromS.to&&(s(L,S.to,_.to),S.to=_.to)})},y.updateViewportTimeSpan||400)}}function A(L,S){var y=L.state.foldGutter;if(!!y){var _=S.line;_>=y.from&&_{(function(e){typeof FP=="object"&&typeof jP=="object"?e(ft()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";function t(r){return function(n,a){var o=a.line,s=n.getLine(o);function l(A){for(var L,S=a.ch,y=0;;){var _=S<=0?-1:s.lastIndexOf(A[0],S-1);if(_==-1){if(y==1)break;y=1,S=s.length;continue}if(y==1&&_r.lastLine())return null;var b=r.getTokenAt(e.Pos(v,1));if(/\S/.test(b.string)||(b=r.getTokenAt(e.Pos(v,b.end+1))),b.type!="keyword"||b.string!="import")return null;for(var T=v,A=Math.min(r.lastLine(),v+10);T<=A;++T){var L=r.getLine(T),S=L.indexOf(";");if(S!=-1)return{startCh:b.end,end:e.Pos(T,S)}}}var o=n.line,s=a(o),l;if(!s||a(o-1)||(l=a(o-2))&&l.end.line==o-1)return null;for(var d=s.end;;){var h=a(d.line+1);if(h==null)break;d=h.end}return{from:r.clipPos(e.Pos(o,s.startCh+1)),to:d}}),e.registerHelper("fold","include",function(r,n){function a(h){if(hr.lastLine())return null;var v=r.getTokenAt(e.Pos(h,1));if(/\S/.test(v.string)||(v=r.getTokenAt(e.Pos(h,v.end+1))),v.type=="meta"&&v.string.slice(0,8)=="#include")return v.start+8}var o=n.line,s=a(o);if(s==null||a(o-1)!=null)return null;for(var l=o;;){var d=a(l+1);if(d==null)break;++l}return{from:e.Pos(o,s+1),to:r.clipPos(e.Pos(l))}})})});var Es=U((PP,MP)=>{(function(e){typeof PP=="object"&&typeof MP=="object"?e(ft()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t=e.Pos;function r(y){var _=y.flags;return _!=null?_:(y.ignoreCase?"i":"")+(y.global?"g":"")+(y.multiline?"m":"")}function n(y,_){for(var m=r(y),k=m,w=0;w<_.length;w++)k.indexOf(_.charAt(w))==-1&&(k+=_.charAt(w));return m==k?y:new RegExp(y.source,k)}function a(y){return/\\s|\\n|\n|\\W|\\D|\[\^/.test(y.source)}function o(y,_,m){_=n(_,"g");for(var k=m.line,w=m.ch,C=y.lastLine();k<=C;k++,w=0){_.lastIndex=w;var D=y.getLine(k),R=_.exec(D);if(R)return{from:t(k,R.index),to:t(k,R.index+R[0].length),match:R}}}function s(y,_,m){if(!a(_))return o(y,_,m);_=n(_,"gm");for(var k,w=1,C=m.line,D=y.lastLine();C<=D;){for(var R=0;RD);R++){var M=y.getLine(C++);k=k==null?M:k+` -`+M}w=w*2,_.lastIndex=m.ch;var q=_.exec(k);if(q){var z=k.slice(0,q.index).split(` -`),Q=q[0].split(` -`),G=m.line+z.length-1,j=z[z.length-1].length;return{from:t(G,j),to:t(G+Q.length-1,Q.length==1?j+Q[0].length:Q[Q.length-1].length),match:q}}}}function l(y,_,m){for(var k,w=0;w<=y.length;){_.lastIndex=w;var C=_.exec(y);if(!C)break;var D=C.index+C[0].length;if(D>y.length-m)break;(!k||D>k.index+k[0].length)&&(k=C),w=C.index+1}return k}function d(y,_,m){_=n(_,"g");for(var k=m.line,w=m.ch,C=y.firstLine();k>=C;k--,w=-1){var D=y.getLine(k),R=l(D,_,w<0?0:D.length-w);if(R)return{from:t(k,R.index),to:t(k,R.index+R[0].length),match:R}}}function h(y,_,m){if(!a(_))return d(y,_,m);_=n(_,"gm");for(var k,w=1,C=y.getLine(m.line).length-m.ch,D=m.line,R=y.firstLine();D>=R;){for(var M=0;M=R;M++){var q=y.getLine(D--);k=k==null?q:q+` -`+k}w*=2;var z=l(k,_,C);if(z){var Q=k.slice(0,z.index).split(` -`),G=z[0].split(` -`),j=D+Q.length,ce=Q[Q.length-1].length;return{from:t(j,ce),to:t(j+G.length-1,G.length==1?ce+G[0].length:G[G.length-1].length),match:z}}}}var v,b;String.prototype.normalize?(v=function(y){return y.normalize("NFD").toLowerCase()},b=function(y){return y.normalize("NFD")}):(v=function(y){return y.toLowerCase()},b=function(y){return y});function T(y,_,m,k){if(y.length==_.length)return m;for(var w=0,C=m+Math.max(0,y.length-_.length);;){if(w==C)return w;var D=w+C>>1,R=k(y.slice(0,D)).length;if(R==m)return D;R>m?C=D:w=D+1}}function A(y,_,m,k){if(!_.length)return null;var w=k?v:b,C=w(_).split(/\r|\n\r?/);e:for(var D=m.line,R=m.ch,M=y.lastLine()+1-C.length;D<=M;D++,R=0){var q=y.getLine(D).slice(R),z=w(q);if(C.length==1){var Q=z.indexOf(C[0]);if(Q==-1)continue e;var m=T(q,z,Q,w)+R;return{from:t(D,T(q,z,Q,w)+R),to:t(D,T(q,z,Q+C[0].length,w)+R)}}else{var G=z.length-C[0].length;if(z.slice(G)!=C[0])continue e;for(var j=1;j=M;D--,R=-1){var q=y.getLine(D);R>-1&&(q=q.slice(0,R));var z=w(q);if(C.length==1){var Q=z.lastIndexOf(C[0]);if(Q==-1)continue e;return{from:t(D,T(q,z,Q,w)),to:t(D,T(q,z,Q+C[0].length,w))}}else{var G=C[C.length-1];if(z.slice(0,G.length)!=G)continue e;for(var j=1,m=D-C.length+1;j(this.doc.getLine(_.line)||"").length&&(_.ch=0,_.line++)),e.cmpPos(_,this.doc.clipPos(_))!=0))return this.atOccurrence=!1;var m=this.matches(y,_);if(this.afterEmptyMatch=m&&e.cmpPos(m.from,m.to)==0,m)return this.pos=m,this.atOccurrence=!0,this.pos.match||!0;var k=t(y?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:k,to:k},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(y,_){if(!!this.atOccurrence){var m=e.splitLines(y);this.doc.replaceRange(m,this.pos.from,this.pos.to,_),this.pos.to=t(this.pos.from.line+m.length-1,m[m.length-1].length+(m.length==1?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",function(y,_,m){return new S(this.doc,y,_,m)}),e.defineDocExtension("getSearchCursor",function(y,_,m){return new S(this,y,_,m)}),e.defineExtension("selectMatches",function(y,_){for(var m=[],k=this.getSearchCursor(y,this.getCursor("from"),_);k.findNext()&&!(e.cmpPos(k.to(),this.getCursor("to"))>0);)m.push({anchor:k.from(),head:k.to()});m.length&&this.setSelections(m,0)})})});var _s=U((qP,BP)=>{(function(e){typeof qP=="object"&&typeof BP=="object"?e(ft()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){function t(n,a,o){var s=n.getWrapperElement(),l;return l=s.appendChild(document.createElement("div")),o?l.className="CodeMirror-dialog CodeMirror-dialog-bottom":l.className="CodeMirror-dialog CodeMirror-dialog-top",typeof a=="string"?l.innerHTML=a:l.appendChild(a),e.addClass(s,"dialog-opened"),l}function r(n,a){n.state.currentNotificationClose&&n.state.currentNotificationClose(),n.state.currentNotificationClose=a}e.defineExtension("openDialog",function(n,a,o){o||(o={}),r(this,null);var s=t(this,n,o.bottom),l=!1,d=this;function h(T){if(typeof T=="string")v.value=T;else{if(l)return;l=!0,e.rmClass(s.parentNode,"dialog-opened"),s.parentNode.removeChild(s),d.focus(),o.onClose&&o.onClose(s)}}var v=s.getElementsByTagName("input")[0],b;return v?(v.focus(),o.value&&(v.value=o.value,o.selectValueOnOpen!==!1&&v.select()),o.onInput&&e.on(v,"input",function(T){o.onInput(T,v.value,h)}),o.onKeyUp&&e.on(v,"keyup",function(T){o.onKeyUp(T,v.value,h)}),e.on(v,"keydown",function(T){o&&o.onKeyDown&&o.onKeyDown(T,v.value,h)||((T.keyCode==27||o.closeOnEnter!==!1&&T.keyCode==13)&&(v.blur(),e.e_stop(T),h()),T.keyCode==13&&a(v.value,T))}),o.closeOnBlur!==!1&&e.on(s,"focusout",function(T){T.relatedTarget!==null&&h()})):(b=s.getElementsByTagName("button")[0])&&(e.on(b,"click",function(){h(),d.focus()}),o.closeOnBlur!==!1&&e.on(b,"blur",h),b.focus()),h}),e.defineExtension("openConfirm",function(n,a,o){r(this,null);var s=t(this,n,o&&o.bottom),l=s.getElementsByTagName("button"),d=!1,h=this,v=1;function b(){d||(d=!0,e.rmClass(s.parentNode,"dialog-opened"),s.parentNode.removeChild(s),h.focus())}l[0].focus();for(var T=0;T{(function(e){typeof VP=="object"&&typeof UP=="object"?e(ft(),Es(),_s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","./searchcursor","../dialog/dialog"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("search",{bottom:!1});function t(D,R){return typeof D=="string"?D=new RegExp(D.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),R?"gi":"g"):D.global||(D=new RegExp(D.source,D.ignoreCase?"gi":"g")),{token:function(M){D.lastIndex=M.pos;var q=D.exec(M.string);if(q&&q.index==M.pos)return M.pos+=q[0].length||1,"searching";q?M.pos=q.index:M.skipToEnd()}}}function r(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function n(D){return D.state.search||(D.state.search=new r)}function a(D){return typeof D=="string"&&D==D.toLowerCase()}function o(D,R,M){return D.getSearchCursor(R,M,{caseFold:a(R),multiline:!0})}function s(D,R,M,q,z){D.openDialog(R,q,{value:M,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){L(D)},onKeyDown:z,bottom:D.options.search.bottom})}function l(D,R,M,q,z){D.openDialog?D.openDialog(R,z,{value:q,selectValueOnOpen:!0,bottom:D.options.search.bottom}):z(prompt(M,q))}function d(D,R,M,q){D.openConfirm?D.openConfirm(R,q):confirm(M)&&q[0]()}function h(D){return D.replace(/\\([nrt\\])/g,function(R,M){return M=="n"?` -`:M=="r"?"\r":M=="t"?" ":M=="\\"?"\\":R})}function v(D){var R=D.match(/^\/(.*)\/([a-z]*)$/);if(R)try{D=new RegExp(R[1],R[2].indexOf("i")==-1?"":"i")}catch(M){}else D=h(D);return(typeof D=="string"?D=="":D.test(""))&&(D=/x^/),D}function b(D,R,M){R.queryText=M,R.query=v(M),D.removeOverlay(R.overlay,a(R.query)),R.overlay=t(R.query,a(R.query)),D.addOverlay(R.overlay),D.showMatchesOnScrollbar&&(R.annotate&&(R.annotate.clear(),R.annotate=null),R.annotate=D.showMatchesOnScrollbar(R.query,a(R.query)))}function T(D,R,M,q){var z=n(D);if(z.query)return A(D,R);var Q=D.getSelection()||z.lastQuery;if(Q instanceof RegExp&&Q.source=="x^"&&(Q=null),M&&D.openDialog){var G=null,j=function(ce,ke){e.e_stop(ke),!!ce&&(ce!=z.queryText&&(b(D,z,ce),z.posFrom=z.posTo=D.getCursor()),G&&(G.style.opacity=1),A(D,ke.shiftKey,function(be,Ce){var we;Ce.line<3&&document.querySelector&&(we=D.display.wrapper.querySelector(".CodeMirror-dialog"))&&we.getBoundingClientRect().bottom-4>D.cursorCoords(Ce,"window").top&&((G=we).style.opacity=.4)}))};s(D,y(D),Q,j,function(ce,ke){var be=e.keyName(ce),Ce=D.getOption("extraKeys"),we=Ce&&Ce[be]||e.keyMap[D.getOption("keyMap")][be];we=="findNext"||we=="findPrev"||we=="findPersistentNext"||we=="findPersistentPrev"?(e.e_stop(ce),b(D,n(D),ke),D.execCommand(we)):(we=="find"||we=="findPersistent")&&(e.e_stop(ce),j(ke,ce))}),q&&Q&&(b(D,z,Q),A(D,R))}else l(D,y(D),"Search for:",Q,function(ce){ce&&!z.query&&D.operation(function(){b(D,z,ce),z.posFrom=z.posTo=D.getCursor(),A(D,R)})})}function A(D,R,M){D.operation(function(){var q=n(D),z=o(D,q.query,R?q.posFrom:q.posTo);!z.find(R)&&(z=o(D,q.query,R?e.Pos(D.lastLine()):e.Pos(D.firstLine(),0)),!z.find(R))||(D.setSelection(z.from(),z.to()),D.scrollIntoView({from:z.from(),to:z.to()},20),q.posFrom=z.from(),q.posTo=z.to(),M&&M(z.from(),z.to()))})}function L(D){D.operation(function(){var R=n(D);R.lastQuery=R.query,!!R.query&&(R.query=R.queryText=null,D.removeOverlay(R.overlay),R.annotate&&(R.annotate.clear(),R.annotate=null))})}function S(D,R){var M=D?document.createElement(D):document.createDocumentFragment();for(var q in R)M[q]=R[q];for(var z=2;z{(function(e){typeof GP=="object"&&typeof QP=="object"?e(ft(),_s()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../dialog/dialog"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("search",{bottom:!1});function t(a,o,s,l,d){a.openDialog?a.openDialog(o,d,{value:l,selectValueOnOpen:!0,bottom:a.options.search.bottom}):d(prompt(s,l))}function r(a){return a.phrase("Jump to line:")+' '+a.phrase("(Use line:column or scroll% syntax)")+""}function n(a,o){var s=Number(o);return/^[-+]/.test(o)?a.getCursor().line+s:s-1}e.commands.jumpToLine=function(a){var o=a.getCursor();t(a,r(a),a.phrase("Jump to line:"),o.line+1+":"+o.ch,function(s){if(!!s){var l;if(l=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(s))a.setCursor(n(a,l[1]),Number(l[2]));else if(l=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(s)){var d=Math.round(a.lineCount()*Number(l[1])/100);/^[-+]/.test(l[1])&&(d=o.line+d+1),a.setCursor(d-1,o.ch)}else(l=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(s))&&a.setCursor(n(a,l[1]),o.ch)}})},e.keyMap.default["Alt-G"]="jumpToLine"})});var Cm=U((KP,HP)=>{(function(e){typeof KP=="object"&&typeof HP=="object"?e(ft()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t="CodeMirror-lint-markers",r="CodeMirror-lint-line-";function n(C,D,R){var M=document.createElement("div");M.className="CodeMirror-lint-tooltip cm-s-"+C.options.theme,M.appendChild(R.cloneNode(!0)),C.state.lint.options.selfContain?C.getWrapperElement().appendChild(M):document.body.appendChild(M);function q(z){if(!M.parentNode)return e.off(document,"mousemove",q);M.style.top=Math.max(0,z.clientY-M.offsetHeight-5)+"px",M.style.left=z.clientX+5+"px"}return e.on(document,"mousemove",q),q(D),M.style.opacity!=null&&(M.style.opacity=1),M}function a(C){C.parentNode&&C.parentNode.removeChild(C)}function o(C){!C.parentNode||(C.style.opacity==null&&a(C),C.style.opacity=0,setTimeout(function(){a(C)},600))}function s(C,D,R,M){var q=n(C,D,R);function z(){e.off(M,"mouseout",z),q&&(o(q),q=null)}var Q=setInterval(function(){if(q)for(var G=M;;G=G.parentNode){if(G&&G.nodeType==11&&(G=G.host),G==document.body)return;if(!G){z();break}}if(!q)return clearInterval(Q)},400);e.on(M,"mouseout",z)}function l(C,D,R){this.marked=[],D instanceof Function&&(D={getAnnotations:D}),(!D||D===!0)&&(D={}),this.options={},this.linterOptions=D.options||{};for(var M in d)this.options[M]=d[M];for(var M in D)d.hasOwnProperty(M)?D[M]!=null&&(this.options[M]=D[M]):D.options||(this.linterOptions[M]=D[M]);this.timeout=null,this.hasGutter=R,this.onMouseOver=function(q){w(C,q)},this.waitingFor=0}var d={highlightLines:!1,tooltips:!0,delay:500,lintOnChange:!0,getAnnotations:null,async:!1,selfContain:null,formatAnnotation:null,onUpdateLinting:null};function h(C){var D=C.state.lint;D.hasGutter&&C.clearGutter(t),D.options.highlightLines&&v(C);for(var R=0;R-1?!1:G.push(we.message)});for(var j=null,ce=R.hasGutter&&document.createDocumentFragment(),ke=0;ke1,M.tooltips)),M.highlightLines&&C.addLineClass(z,"wrap",r+j)}}M.onUpdateLinting&&M.onUpdateLinting(D,q,C)}}function m(C){var D=C.state.lint;!D||(clearTimeout(D.timeout),D.timeout=setTimeout(function(){y(C)},D.options.delay))}function k(C,D,R){for(var M=R.target||R.srcElement,q=document.createDocumentFragment(),z=0;z{(function(e){typeof zP=="object"&&typeof WP=="object"?e(ft(),Es(),gp()):typeof define=="function"&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/edit/matchbrackets"],e):e(CodeMirror)})(function(e){"use strict";var t=e.commands,r=e.Pos;function n(m,k,w){if(w<0&&k.ch==0)return m.clipPos(r(k.line-1));var C=m.getLine(k.line);if(w>0&&k.ch>=C.length)return m.clipPos(r(k.line+1,0));for(var D="start",R,M=k.ch,q=M,z=w<0?0:C.length,Q=0;q!=z;q+=w,Q++){var G=C.charAt(w<0?q-1:q),j=G!="_"&&e.isWordChar(G)?"w":"o";if(j=="w"&&G.toUpperCase()==G&&(j="W"),D=="start")j!="o"?(D="in",R=j):M=q+w;else if(D=="in"&&R!=j){if(R=="w"&&j=="W"&&w<0&&q--,R=="W"&&j=="w"&&w>0)if(q==M+1){R="w";continue}else q--;break}}return r(k.line,q)}function a(m,k){m.extendSelectionsBy(function(w){return m.display.shift||m.doc.extend||w.empty()?n(m.doc,w.head,k):k<0?w.from():w.to()})}t.goSubwordLeft=function(m){a(m,-1)},t.goSubwordRight=function(m){a(m,1)},t.scrollLineUp=function(m){var k=m.getScrollInfo();if(!m.somethingSelected()){var w=m.lineAtHeight(k.top+k.clientHeight,"local");m.getCursor().line>=w&&m.execCommand("goLineUp")}m.scrollTo(null,k.top-m.defaultTextHeight())},t.scrollLineDown=function(m){var k=m.getScrollInfo();if(!m.somethingSelected()){var w=m.lineAtHeight(k.top,"local")+1;m.getCursor().line<=w&&m.execCommand("goLineDown")}m.scrollTo(null,k.top+m.defaultTextHeight())},t.splitSelectionByLine=function(m){for(var k=m.listSelections(),w=[],C=0;CD.line&&M==R.line&&R.ch==0||w.push({anchor:M==D.line?D:r(M,0),head:M==R.line?R:r(M)});m.setSelections(w,0)},t.singleSelectionTop=function(m){var k=m.listSelections()[0];m.setSelection(k.anchor,k.head,{scroll:!1})},t.selectLine=function(m){for(var k=m.listSelections(),w=[],C=0;CC?w.push(q,z):w.length&&(w[w.length-1]=z),C=z}m.operation(function(){for(var Q=0;Qm.lastLine()?m.replaceRange(` -`+ce,r(m.lastLine()),null,"+swapLine"):m.replaceRange(ce+` -`,r(j,0),null,"+swapLine")}m.setSelections(D),m.scrollIntoView()})},t.swapLineDown=function(m){if(m.isReadOnly())return e.Pass;for(var k=m.listSelections(),w=[],C=m.lastLine()+1,D=k.length-1;D>=0;D--){var R=k[D],M=R.to().line+1,q=R.from().line;R.to().ch==0&&!R.empty()&&M--,M=0;z-=2){var Q=w[z],G=w[z+1],j=m.getLine(Q);Q==m.lastLine()?m.replaceRange("",r(Q-1),r(Q),"+swapLine"):m.replaceRange("",r(Q,0),r(Q+1,0),"+swapLine"),m.replaceRange(j+` -`,r(G,0),null,"+swapLine")}m.scrollIntoView()})},t.toggleCommentIndented=function(m){m.toggleComment({indent:!0})},t.joinLines=function(m){for(var k=m.listSelections(),w=[],C=0;C=0;R--){var M=w[C[R]];if(!(q&&e.cmpPos(M.head,q)>0)){var z=s(m,M.head);q=z.from,m.replaceRange(k(z.word),z.from,z.to)}}})}t.smartBackspace=function(m){if(m.somethingSelected())return e.Pass;m.operation(function(){for(var k=m.listSelections(),w=m.getOption("indentUnit"),C=k.length-1;C>=0;C--){var D=k[C].head,R=m.getRange({line:D.line,ch:0},D),M=e.countColumn(R,null,m.getOption("tabSize")),q=m.findPosH(D,-1,"char",!1);if(R&&!/\S/.test(R)&&M%w==0){var z=new r(D.line,e.findColumn(R,M-w,w));z.ch!=D.ch&&(q=z)}m.replaceRange("",q,D,"+delete")}})},t.delLineRight=function(m){m.operation(function(){for(var k=m.listSelections(),w=k.length-1;w>=0;w--)m.replaceRange("",k[w].anchor,r(k[w].to().line),"+delete");m.scrollIntoView()})},t.upcaseAtCursor=function(m){A(m,function(k){return k.toUpperCase()})},t.downcaseAtCursor=function(m){A(m,function(k){return k.toLowerCase()})},t.setSublimeMark=function(m){m.state.sublimeMark&&m.state.sublimeMark.clear(),m.state.sublimeMark=m.setBookmark(m.getCursor())},t.selectToSublimeMark=function(m){var k=m.state.sublimeMark&&m.state.sublimeMark.find();k&&m.setSelection(m.getCursor(),k)},t.deleteToSublimeMark=function(m){var k=m.state.sublimeMark&&m.state.sublimeMark.find();if(k){var w=m.getCursor(),C=k;if(e.cmpPos(w,C)>0){var D=C;C=w,w=D}m.state.sublimeKilled=m.getRange(w,C),m.replaceRange("",w,C)}},t.swapWithSublimeMark=function(m){var k=m.state.sublimeMark&&m.state.sublimeMark.find();k&&(m.state.sublimeMark.clear(),m.state.sublimeMark=m.setBookmark(m.getCursor()),m.setCursor(k))},t.sublimeYank=function(m){m.state.sublimeKilled!=null&&m.replaceSelection(m.state.sublimeKilled,null,"paste")},t.showInCenter=function(m){var k=m.cursorCoords(null,"local");m.scrollTo(null,(k.top+k.bottom)/2-m.getScrollInfo().clientHeight/2)};function L(m){var k=m.getCursor("from"),w=m.getCursor("to");if(e.cmpPos(k,w)==0){var C=s(m,k);if(!C.word)return;k=C.from,w=C.to}return{from:k,to:w,query:m.getRange(k,w),word:C}}function S(m,k){var w=L(m);if(!!w){var C=w.query,D=m.getSearchCursor(C,k?w.to:w.from);(k?D.findNext():D.findPrevious())?m.setSelection(D.from(),D.to()):(D=m.getSearchCursor(C,k?r(m.firstLine(),0):m.clipPos(r(m.lastLine()))),(k?D.findNext():D.findPrevious())?m.setSelection(D.from(),D.to()):w.word&&m.setSelection(w.from,w.to))}}t.findUnder=function(m){S(m,!0)},t.findUnderPrevious=function(m){S(m,!1)},t.findAllUnder=function(m){var k=L(m);if(!!k){for(var w=m.getSearchCursor(k.query),C=[],D=-1;w.findNext();)C.push({anchor:w.from(),head:w.to()}),w.from().line<=k.from.line&&w.from().ch<=k.from.ch&&D++;m.setSelections(C,D)}};var y=e.keyMap;y.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F5:"sortLines","Shift-F5":"reverseSortLines","Cmd-F5":"sortLinesInsensitive","Shift-Cmd-F5":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K Cmd-D":"skipAndSelectNextOccurrence","Cmd-K Cmd-K":"delLineRight","Cmd-K Cmd-U":"upcaseAtCursor","Cmd-K Cmd-L":"downcaseAtCursor","Cmd-K Cmd-Space":"setSublimeMark","Cmd-K Cmd-A":"selectToSublimeMark","Cmd-K Cmd-W":"deleteToSublimeMark","Cmd-K Cmd-X":"swapWithSublimeMark","Cmd-K Cmd-Y":"sublimeYank","Cmd-K Cmd-C":"showInCenter","Cmd-K Cmd-G":"clearBookmarks","Cmd-K Cmd-Backspace":"delLineLeft","Cmd-K Cmd-1":"foldAll","Cmd-K Cmd-0":"unfoldAll","Cmd-K Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},e.normalizeKeyMap(y.macSublime),y.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Shift-F9":"reverseSortLines","Ctrl-F9":"sortLinesInsensitive","Shift-Ctrl-F9":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K Ctrl-D":"skipAndSelectNextOccurrence","Ctrl-K Ctrl-K":"delLineRight","Ctrl-K Ctrl-U":"upcaseAtCursor","Ctrl-K Ctrl-L":"downcaseAtCursor","Ctrl-K Ctrl-Space":"setSublimeMark","Ctrl-K Ctrl-A":"selectToSublimeMark","Ctrl-K Ctrl-W":"deleteToSublimeMark","Ctrl-K Ctrl-X":"swapWithSublimeMark","Ctrl-K Ctrl-Y":"sublimeYank","Ctrl-K Ctrl-C":"showInCenter","Ctrl-K Ctrl-G":"clearBookmarks","Ctrl-K Ctrl-Backspace":"delLineLeft","Ctrl-K Ctrl-1":"foldAll","Ctrl-K Ctrl-0":"unfoldAll","Ctrl-K Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},e.normalizeKeyMap(y.pcSublime);var _=y.default==y.macDefault;y.sublime=_?y.macSublime:y.pcSublime})});var VD=U(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});ji.hintList=ji.objectValues=ji.forEachState=ji.getFieldDef=ji.getDefinitionState=void 0;var iX=ct(),gc=Yn();function aX(e){let t;return YP(e,r=>{switch(r.kind){case"Query":case"ShortQuery":case"Mutation":case"Subscription":case"FragmentDefinition":t=r;break}}),t}ji.getDefinitionState=aX;function oX(e,t,r){return r===gc.SchemaMetaFieldDef.name&&e.getQueryType()===t?gc.SchemaMetaFieldDef:r===gc.TypeMetaFieldDef.name&&e.getQueryType()===t?gc.TypeMetaFieldDef:r===gc.TypeNameMetaFieldDef.name&&(0,iX.isCompositeType)(t)?gc.TypeNameMetaFieldDef:"getFields"in t?t.getFields()[r]:null}ji.getFieldDef=oX;function YP(e,t){let r=[],n=e;for(;n==null?void 0:n.kind;)r.push(n),n=n.prevState;for(let a=r.length-1;a>=0;a--)t(r[a])}ji.forEachState=YP;function uX(e){let t=Object.keys(e),r=t.length,n=new Array(r);for(let a=0;a!n.isDeprecated);let r=e.map(n=>({proximity:cX(JP(n.label),t),entry:n}));return BD(BD(r,n=>n.proximity<=2),n=>!n.entry.isDeprecated).sort((n,a)=>(n.entry.isDeprecated?1:0)-(a.entry.isDeprecated?1:0)||n.proximity-a.proximity||n.entry.label.length-a.entry.label.length).map(n=>n.entry)}function BD(e,t){let r=e.filter(t);return r.length===0?e:r}function JP(e){return e.toLowerCase().replace(/\W/g,"")}function cX(e,t){let r=fX(t,e);return e.length>t.length&&(r-=e.length-t.length-1,r+=e.indexOf(t)===0?0:.5),r}function fX(e,t){let r,n,a=[],o=e.length,s=t.length;for(r=0;r<=o;r++)a[r]=[r];for(n=1;n<=s;n++)a[0][n]=n;for(r=1;r<=o;r++)for(n=1;n<=s;n++){let l=e[r-1]===t[n-1]?0:1;a[r][n]=Math.min(a[r-1][n]+1,a[r][n-1]+1,a[r-1][n-1]+l),r>1&&n>1&&e[r-1]===t[n-2]&&e[r-2]===t[n-1]&&(a[r][n]=Math.min(a[r][n],a[r-2][n-2]+l))}return a[o][s]}});var ZP=U((XP,wm)=>{(function(e){if(typeof wm=="object"&&typeof wm.exports=="object"){var t=e(eC,XP);t!==void 0&&(wm.exports=t)}else typeof define=="function"&&define.amd&&define(["require","exports"],e)})(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TextDocument=t.EOL=t.WorkspaceFolder=t.InlayHint=t.InlayHintLabelPart=t.InlayHintKind=t.InlineValueContext=t.InlineValueEvaluatableExpression=t.InlineValueVariableLookup=t.InlineValueText=t.SemanticTokens=t.SemanticTokenModifiers=t.SemanticTokenTypes=t.SelectionRange=t.DocumentLink=t.FormattingOptions=t.CodeLens=t.CodeAction=t.CodeActionContext=t.CodeActionTriggerKind=t.CodeActionKind=t.DocumentSymbol=t.WorkspaceSymbol=t.SymbolInformation=t.SymbolTag=t.SymbolKind=t.DocumentHighlight=t.DocumentHighlightKind=t.SignatureInformation=t.ParameterInformation=t.Hover=t.MarkedString=t.CompletionList=t.CompletionItem=t.CompletionItemLabelDetails=t.InsertTextMode=t.InsertReplaceEdit=t.CompletionItemTag=t.InsertTextFormat=t.CompletionItemKind=t.MarkupContent=t.MarkupKind=t.TextDocumentItem=t.OptionalVersionedTextDocumentIdentifier=t.VersionedTextDocumentIdentifier=t.TextDocumentIdentifier=t.WorkspaceChange=t.WorkspaceEdit=t.DeleteFile=t.RenameFile=t.CreateFile=t.TextDocumentEdit=t.AnnotatedTextEdit=t.ChangeAnnotationIdentifier=t.ChangeAnnotation=t.TextEdit=t.Command=t.Diagnostic=t.CodeDescription=t.DiagnosticTag=t.DiagnosticSeverity=t.DiagnosticRelatedInformation=t.FoldingRange=t.FoldingRangeKind=t.ColorPresentation=t.ColorInformation=t.Color=t.LocationLink=t.Location=t.Range=t.Position=t.uinteger=t.integer=t.URI=t.DocumentUri=void 0;var r;(function(P){function Y(J){return typeof J=="string"}P.is=Y})(r=t.DocumentUri||(t.DocumentUri={}));var n;(function(P){function Y(J){return typeof J=="string"}P.is=Y})(n=t.URI||(t.URI={}));var a;(function(P){P.MIN_VALUE=-2147483648,P.MAX_VALUE=2147483647;function Y(J){return typeof J=="number"&&P.MIN_VALUE<=J&&J<=P.MAX_VALUE}P.is=Y})(a=t.integer||(t.integer={}));var o;(function(P){P.MIN_VALUE=0,P.MAX_VALUE=2147483647;function Y(J){return typeof J=="number"&&P.MIN_VALUE<=J&&J<=P.MAX_VALUE}P.is=Y})(o=t.uinteger||(t.uinteger={}));var s;(function(P){function Y(B,I){return B===Number.MAX_VALUE&&(B=o.MAX_VALUE),I===Number.MAX_VALUE&&(I=o.MAX_VALUE),{line:B,character:I}}P.create=Y;function J(B){var I=B;return ee.objectLiteral(I)&&ee.uinteger(I.line)&&ee.uinteger(I.character)}P.is=J})(s=t.Position||(t.Position={}));var l;(function(P){function Y(B,I,te,ie){if(ee.uinteger(B)&&ee.uinteger(I)&&ee.uinteger(te)&&ee.uinteger(ie))return{start:s.create(B,I),end:s.create(te,ie)};if(s.is(B)&&s.is(I))return{start:B,end:I};throw new Error("Range#create called with invalid arguments[".concat(B,", ").concat(I,", ").concat(te,", ").concat(ie,"]"))}P.create=Y;function J(B){var I=B;return ee.objectLiteral(I)&&s.is(I.start)&&s.is(I.end)}P.is=J})(l=t.Range||(t.Range={}));var d;(function(P){function Y(B,I){return{uri:B,range:I}}P.create=Y;function J(B){var I=B;return ee.objectLiteral(I)&&l.is(I.range)&&(ee.string(I.uri)||ee.undefined(I.uri))}P.is=J})(d=t.Location||(t.Location={}));var h;(function(P){function Y(B,I,te,ie){return{targetUri:B,targetRange:I,targetSelectionRange:te,originSelectionRange:ie}}P.create=Y;function J(B){var I=B;return ee.objectLiteral(I)&&l.is(I.targetRange)&&ee.string(I.targetUri)&&l.is(I.targetSelectionRange)&&(l.is(I.originSelectionRange)||ee.undefined(I.originSelectionRange))}P.is=J})(h=t.LocationLink||(t.LocationLink={}));var v;(function(P){function Y(B,I,te,ie){return{red:B,green:I,blue:te,alpha:ie}}P.create=Y;function J(B){var I=B;return ee.objectLiteral(I)&&ee.numberRange(I.red,0,1)&&ee.numberRange(I.green,0,1)&&ee.numberRange(I.blue,0,1)&&ee.numberRange(I.alpha,0,1)}P.is=J})(v=t.Color||(t.Color={}));var b;(function(P){function Y(B,I){return{range:B,color:I}}P.create=Y;function J(B){var I=B;return ee.objectLiteral(I)&&l.is(I.range)&&v.is(I.color)}P.is=J})(b=t.ColorInformation||(t.ColorInformation={}));var T;(function(P){function Y(B,I,te){return{label:B,textEdit:I,additionalTextEdits:te}}P.create=Y;function J(B){var I=B;return ee.objectLiteral(I)&&ee.string(I.label)&&(ee.undefined(I.textEdit)||C.is(I))&&(ee.undefined(I.additionalTextEdits)||ee.typedArray(I.additionalTextEdits,C.is))}P.is=J})(T=t.ColorPresentation||(t.ColorPresentation={}));var A;(function(P){P.Comment="comment",P.Imports="imports",P.Region="region"})(A=t.FoldingRangeKind||(t.FoldingRangeKind={}));var L;(function(P){function Y(B,I,te,ie,Qe,It){var kt={startLine:B,endLine:I};return ee.defined(te)&&(kt.startCharacter=te),ee.defined(ie)&&(kt.endCharacter=ie),ee.defined(Qe)&&(kt.kind=Qe),ee.defined(It)&&(kt.collapsedText=It),kt}P.create=Y;function J(B){var I=B;return ee.objectLiteral(I)&&ee.uinteger(I.startLine)&&ee.uinteger(I.startLine)&&(ee.undefined(I.startCharacter)||ee.uinteger(I.startCharacter))&&(ee.undefined(I.endCharacter)||ee.uinteger(I.endCharacter))&&(ee.undefined(I.kind)||ee.string(I.kind))}P.is=J})(L=t.FoldingRange||(t.FoldingRange={}));var S;(function(P){function Y(B,I){return{location:B,message:I}}P.create=Y;function J(B){var I=B;return ee.defined(I)&&d.is(I.location)&&ee.string(I.message)}P.is=J})(S=t.DiagnosticRelatedInformation||(t.DiagnosticRelatedInformation={}));var y;(function(P){P.Error=1,P.Warning=2,P.Information=3,P.Hint=4})(y=t.DiagnosticSeverity||(t.DiagnosticSeverity={}));var _;(function(P){P.Unnecessary=1,P.Deprecated=2})(_=t.DiagnosticTag||(t.DiagnosticTag={}));var m;(function(P){function Y(J){var B=J;return ee.objectLiteral(B)&&ee.string(B.href)}P.is=Y})(m=t.CodeDescription||(t.CodeDescription={}));var k;(function(P){function Y(B,I,te,ie,Qe,It){var kt={range:B,message:I};return ee.defined(te)&&(kt.severity=te),ee.defined(ie)&&(kt.code=ie),ee.defined(Qe)&&(kt.source=Qe),ee.defined(It)&&(kt.relatedInformation=It),kt}P.create=Y;function J(B){var I,te=B;return ee.defined(te)&&l.is(te.range)&&ee.string(te.message)&&(ee.number(te.severity)||ee.undefined(te.severity))&&(ee.integer(te.code)||ee.string(te.code)||ee.undefined(te.code))&&(ee.undefined(te.codeDescription)||ee.string((I=te.codeDescription)===null||I===void 0?void 0:I.href))&&(ee.string(te.source)||ee.undefined(te.source))&&(ee.undefined(te.relatedInformation)||ee.typedArray(te.relatedInformation,S.is))}P.is=J})(k=t.Diagnostic||(t.Diagnostic={}));var w;(function(P){function Y(B,I){for(var te=[],ie=2;ie0&&(Qe.arguments=te),Qe}P.create=Y;function J(B){var I=B;return ee.defined(I)&&ee.string(I.title)&&ee.string(I.command)}P.is=J})(w=t.Command||(t.Command={}));var C;(function(P){function Y(te,ie){return{range:te,newText:ie}}P.replace=Y;function J(te,ie){return{range:{start:te,end:te},newText:ie}}P.insert=J;function B(te){return{range:te,newText:""}}P.del=B;function I(te){var ie=te;return ee.objectLiteral(ie)&&ee.string(ie.newText)&&l.is(ie.range)}P.is=I})(C=t.TextEdit||(t.TextEdit={}));var D;(function(P){function Y(B,I,te){var ie={label:B};return I!==void 0&&(ie.needsConfirmation=I),te!==void 0&&(ie.description=te),ie}P.create=Y;function J(B){var I=B;return ee.objectLiteral(I)&&ee.string(I.label)&&(ee.boolean(I.needsConfirmation)||I.needsConfirmation===void 0)&&(ee.string(I.description)||I.description===void 0)}P.is=J})(D=t.ChangeAnnotation||(t.ChangeAnnotation={}));var R;(function(P){function Y(J){var B=J;return ee.string(B)}P.is=Y})(R=t.ChangeAnnotationIdentifier||(t.ChangeAnnotationIdentifier={}));var M;(function(P){function Y(te,ie,Qe){return{range:te,newText:ie,annotationId:Qe}}P.replace=Y;function J(te,ie,Qe){return{range:{start:te,end:te},newText:ie,annotationId:Qe}}P.insert=J;function B(te,ie){return{range:te,newText:"",annotationId:ie}}P.del=B;function I(te){var ie=te;return C.is(ie)&&(D.is(ie.annotationId)||R.is(ie.annotationId))}P.is=I})(M=t.AnnotatedTextEdit||(t.AnnotatedTextEdit={}));var q;(function(P){function Y(B,I){return{textDocument:B,edits:I}}P.create=Y;function J(B){var I=B;return ee.defined(I)&&Ve.is(I.textDocument)&&Array.isArray(I.edits)}P.is=J})(q=t.TextDocumentEdit||(t.TextDocumentEdit={}));var z;(function(P){function Y(B,I,te){var ie={kind:"create",uri:B};return I!==void 0&&(I.overwrite!==void 0||I.ignoreIfExists!==void 0)&&(ie.options=I),te!==void 0&&(ie.annotationId=te),ie}P.create=Y;function J(B){var I=B;return I&&I.kind==="create"&&ee.string(I.uri)&&(I.options===void 0||(I.options.overwrite===void 0||ee.boolean(I.options.overwrite))&&(I.options.ignoreIfExists===void 0||ee.boolean(I.options.ignoreIfExists)))&&(I.annotationId===void 0||R.is(I.annotationId))}P.is=J})(z=t.CreateFile||(t.CreateFile={}));var Q;(function(P){function Y(B,I,te,ie){var Qe={kind:"rename",oldUri:B,newUri:I};return te!==void 0&&(te.overwrite!==void 0||te.ignoreIfExists!==void 0)&&(Qe.options=te),ie!==void 0&&(Qe.annotationId=ie),Qe}P.create=Y;function J(B){var I=B;return I&&I.kind==="rename"&&ee.string(I.oldUri)&&ee.string(I.newUri)&&(I.options===void 0||(I.options.overwrite===void 0||ee.boolean(I.options.overwrite))&&(I.options.ignoreIfExists===void 0||ee.boolean(I.options.ignoreIfExists)))&&(I.annotationId===void 0||R.is(I.annotationId))}P.is=J})(Q=t.RenameFile||(t.RenameFile={}));var G;(function(P){function Y(B,I,te){var ie={kind:"delete",uri:B};return I!==void 0&&(I.recursive!==void 0||I.ignoreIfNotExists!==void 0)&&(ie.options=I),te!==void 0&&(ie.annotationId=te),ie}P.create=Y;function J(B){var I=B;return I&&I.kind==="delete"&&ee.string(I.uri)&&(I.options===void 0||(I.options.recursive===void 0||ee.boolean(I.options.recursive))&&(I.options.ignoreIfNotExists===void 0||ee.boolean(I.options.ignoreIfNotExists)))&&(I.annotationId===void 0||R.is(I.annotationId))}P.is=J})(G=t.DeleteFile||(t.DeleteFile={}));var j;(function(P){function Y(J){var B=J;return B&&(B.changes!==void 0||B.documentChanges!==void 0)&&(B.documentChanges===void 0||B.documentChanges.every(function(I){return ee.string(I.kind)?z.is(I)||Q.is(I)||G.is(I):q.is(I)}))}P.is=Y})(j=t.WorkspaceEdit||(t.WorkspaceEdit={}));var ce=function(){function P(Y,J){this.edits=Y,this.changeAnnotations=J}return P.prototype.insert=function(Y,J,B){var I,te;if(B===void 0?I=C.insert(Y,J):R.is(B)?(te=B,I=M.insert(Y,J,B)):(this.assertChangeAnnotations(this.changeAnnotations),te=this.changeAnnotations.manage(B),I=M.insert(Y,J,te)),this.edits.push(I),te!==void 0)return te},P.prototype.replace=function(Y,J,B){var I,te;if(B===void 0?I=C.replace(Y,J):R.is(B)?(te=B,I=M.replace(Y,J,B)):(this.assertChangeAnnotations(this.changeAnnotations),te=this.changeAnnotations.manage(B),I=M.replace(Y,J,te)),this.edits.push(I),te!==void 0)return te},P.prototype.delete=function(Y,J){var B,I;if(J===void 0?B=C.del(Y):R.is(J)?(I=J,B=M.del(Y,J)):(this.assertChangeAnnotations(this.changeAnnotations),I=this.changeAnnotations.manage(J),B=M.del(Y,I)),this.edits.push(B),I!==void 0)return I},P.prototype.add=function(Y){this.edits.push(Y)},P.prototype.all=function(){return this.edits},P.prototype.clear=function(){this.edits.splice(0,this.edits.length)},P.prototype.assertChangeAnnotations=function(Y){if(Y===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},P}(),ke=function(){function P(Y){this._annotations=Y===void 0?Object.create(null):Y,this._counter=0,this._size=0}return P.prototype.all=function(){return this._annotations},Object.defineProperty(P.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),P.prototype.manage=function(Y,J){var B;if(R.is(Y)?B=Y:(B=this.nextId(),J=Y),this._annotations[B]!==void 0)throw new Error("Id ".concat(B," is already in use."));if(J===void 0)throw new Error("No annotation provided for id ".concat(B));return this._annotations[B]=J,this._size++,B},P.prototype.nextId=function(){return this._counter++,this._counter.toString()},P}(),be=function(){function P(Y){var J=this;this._textEditChanges=Object.create(null),Y!==void 0?(this._workspaceEdit=Y,Y.documentChanges?(this._changeAnnotations=new ke(Y.changeAnnotations),Y.changeAnnotations=this._changeAnnotations.all(),Y.documentChanges.forEach(function(B){if(q.is(B)){var I=new ce(B.edits,J._changeAnnotations);J._textEditChanges[B.textDocument.uri]=I}})):Y.changes&&Object.keys(Y.changes).forEach(function(B){var I=new ce(Y.changes[B]);J._textEditChanges[B]=I})):this._workspaceEdit={}}return Object.defineProperty(P.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),P.prototype.getTextEditChange=function(Y){if(Ve.is(Y)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var J={uri:Y.uri,version:Y.version},B=this._textEditChanges[J.uri];if(!B){var I=[],te={textDocument:J,edits:I};this._workspaceEdit.documentChanges.push(te),B=new ce(I,this._changeAnnotations),this._textEditChanges[J.uri]=B}return B}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var B=this._textEditChanges[Y];if(!B){var I=[];this._workspaceEdit.changes[Y]=I,B=new ce(I),this._textEditChanges[Y]=B}return B}},P.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new ke,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},P.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},P.prototype.createFile=function(Y,J,B){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var I;D.is(J)||R.is(J)?I=J:B=J;var te,ie;if(I===void 0?te=z.create(Y,B):(ie=R.is(I)?I:this._changeAnnotations.manage(I),te=z.create(Y,B,ie)),this._workspaceEdit.documentChanges.push(te),ie!==void 0)return ie},P.prototype.renameFile=function(Y,J,B,I){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var te;D.is(B)||R.is(B)?te=B:I=B;var ie,Qe;if(te===void 0?ie=Q.create(Y,J,I):(Qe=R.is(te)?te:this._changeAnnotations.manage(te),ie=Q.create(Y,J,I,Qe)),this._workspaceEdit.documentChanges.push(ie),Qe!==void 0)return Qe},P.prototype.deleteFile=function(Y,J,B){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var I;D.is(J)||R.is(J)?I=J:B=J;var te,ie;if(I===void 0?te=G.create(Y,B):(ie=R.is(I)?I:this._changeAnnotations.manage(I),te=G.create(Y,B,ie)),this._workspaceEdit.documentChanges.push(te),ie!==void 0)return ie},P}();t.WorkspaceChange=be;var Ce;(function(P){function Y(B){return{uri:B}}P.create=Y;function J(B){var I=B;return ee.defined(I)&&ee.string(I.uri)}P.is=J})(Ce=t.TextDocumentIdentifier||(t.TextDocumentIdentifier={}));var we;(function(P){function Y(B,I){return{uri:B,version:I}}P.create=Y;function J(B){var I=B;return ee.defined(I)&&ee.string(I.uri)&&ee.integer(I.version)}P.is=J})(we=t.VersionedTextDocumentIdentifier||(t.VersionedTextDocumentIdentifier={}));var Ve;(function(P){function Y(B,I){return{uri:B,version:I}}P.create=Y;function J(B){var I=B;return ee.defined(I)&&ee.string(I.uri)&&(I.version===null||ee.integer(I.version))}P.is=J})(Ve=t.OptionalVersionedTextDocumentIdentifier||(t.OptionalVersionedTextDocumentIdentifier={}));var pt;(function(P){function Y(B,I,te,ie){return{uri:B,languageId:I,version:te,text:ie}}P.create=Y;function J(B){var I=B;return ee.defined(I)&&ee.string(I.uri)&&ee.string(I.languageId)&&ee.integer(I.version)&&ee.string(I.text)}P.is=J})(pt=t.TextDocumentItem||(t.TextDocumentItem={}));var Je;(function(P){P.PlainText="plaintext",P.Markdown="markdown";function Y(J){var B=J;return B===P.PlainText||B===P.Markdown}P.is=Y})(Je=t.MarkupKind||(t.MarkupKind={}));var wt;(function(P){function Y(J){var B=J;return ee.objectLiteral(J)&&Je.is(B.kind)&&ee.string(B.value)}P.is=Y})(wt=t.MarkupContent||(t.MarkupContent={}));var Mt;(function(P){P.Text=1,P.Method=2,P.Function=3,P.Constructor=4,P.Field=5,P.Variable=6,P.Class=7,P.Interface=8,P.Module=9,P.Property=10,P.Unit=11,P.Value=12,P.Enum=13,P.Keyword=14,P.Snippet=15,P.Color=16,P.File=17,P.Reference=18,P.Folder=19,P.EnumMember=20,P.Constant=21,P.Struct=22,P.Event=23,P.Operator=24,P.TypeParameter=25})(Mt=t.CompletionItemKind||(t.CompletionItemKind={}));var Ie;(function(P){P.PlainText=1,P.Snippet=2})(Ie=t.InsertTextFormat||(t.InsertTextFormat={}));var De;(function(P){P.Deprecated=1})(De=t.CompletionItemTag||(t.CompletionItemTag={}));var Pe;(function(P){function Y(B,I,te){return{newText:B,insert:I,replace:te}}P.create=Y;function J(B){var I=B;return I&&ee.string(I.newText)&&l.is(I.insert)&&l.is(I.replace)}P.is=J})(Pe=t.InsertReplaceEdit||(t.InsertReplaceEdit={}));var Ue;(function(P){P.asIs=1,P.adjustIndentation=2})(Ue=t.InsertTextMode||(t.InsertTextMode={}));var Gi;(function(P){function Y(J){var B=J;return B&&(ee.string(B.detail)||B.detail===void 0)&&(ee.string(B.description)||B.description===void 0)}P.is=Y})(Gi=t.CompletionItemLabelDetails||(t.CompletionItemLabelDetails={}));var rt;(function(P){function Y(J){return{label:J}}P.create=Y})(rt=t.CompletionItem||(t.CompletionItem={}));var ut;(function(P){function Y(J,B){return{items:J||[],isIncomplete:!!B}}P.create=Y})(ut=t.CompletionList||(t.CompletionList={}));var Nr;(function(P){function Y(B){return B.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}P.fromPlainText=Y;function J(B){var I=B;return ee.string(I)||ee.objectLiteral(I)&&ee.string(I.language)&&ee.string(I.value)}P.is=J})(Nr=t.MarkedString||(t.MarkedString={}));var $r;(function(P){function Y(J){var B=J;return!!B&&ee.objectLiteral(B)&&(wt.is(B.contents)||Nr.is(B.contents)||ee.typedArray(B.contents,Nr.is))&&(J.range===void 0||l.is(J.range))}P.is=Y})($r=t.Hover||(t.Hover={}));var oe;(function(P){function Y(J,B){return B?{label:J,documentation:B}:{label:J}}P.create=Y})(oe=t.ParameterInformation||(t.ParameterInformation={}));var Se;(function(P){function Y(J,B){for(var I=[],te=2;te0&&u.prevInput=="\u200B"?Kr(f,bD)(f):le++<10?c.detectingSelectAll=setTimeout(pe,500):(c.selForContextMenu=null,c.input.reset())};c.detectingSelectAll=setTimeout(pe,200)}}if(s&&l>=9&&$(),M){J(a);var ae=function(){Ar(window,"mouseup",ae),setTimeout(X,20)};_e(window,"mouseup",ae)}else setTimeout(X,50)},Tr.prototype.readOnlyChanged=function(a){a||this.reset(),this.textarea.disabled=a=="nocursor",this.textarea.readOnly=!!a},Tr.prototype.setUneditable=function(){},Tr.prototype.needsContentAttribute=!1;function QB(a,u){if(u=u?Ie(u):{},u.value=a.value,!u.tabindex&&a.tabIndex&&(u.tabindex=a.tabIndex),!u.placeholder&&a.placeholder&&(u.placeholder=a.placeholder),u.autofocus==null){var f=Fe(a.ownerDocument);u.autofocus=f==a||a.getAttribute("autofocus")!=null&&f==document.body}function c(){a.value=N.getValue()}var p;if(a.form&&(_e(a.form,"submit",c),!u.leaveSubmitMethodAlone)){var g=a.form;p=g.submit;try{var E=g.submit=function(){c(),g.submit=p,g.submit(),g.submit=E}}catch(C){}}u.finishInit=function(C){C.save=c,C.getTextArea=function(){return a},C.toTextArea=function(){C.toTextArea=isNaN,c(),a.parentNode.removeChild(C.getWrapperElement()),a.style.display="",a.form&&(Ar(a.form,"submit",c),!u.leaveSubmitMethodAlone&&typeof a.form.submit=="function"&&(a.form.submit=p))}},a.style.display="none";var N=ir(function(C){return a.parentNode.insertBefore(C,a.nextSibling)},u);return N}function BB(a){a.off=Ar,a.on=_e,a.wheelEventPixels=X2,a.Doc=Yn,a.splitLines=vn,a.countColumn=te,a.findColumn=oe,a.isWordChar=Ei,a.Pass=Me,a.signal=Ft,a.Line=Zs,a.changeEnd=Uo,a.scrollbarModel=YN,a.Pos=W,a.cmpPos=ie,a.modes=Cn,a.mimeModes=la,a.resolveMode=ui,a.getMode=io,a.modeExtensions=jo,a.extendMode=fh,a.copyState=ao,a.startState=nf,a.innerMode=Po,a.commands=Nf,a.keyMap=fo,a.keyName=jD,a.isModifierKey=AD,a.lookupKey=fl,a.normalizeKeyMap=bB,a.StringStream=gr,a.SharedTextMarker=kf,a.TextMarker=Qo,a.LineWidget=Sf,a.e_preventDefault=ee,a.e_stopPropagation=F,a.e_stop=J,a.addClass=Le,a.contains=ge,a.rmClass=z,a.keyNames=Bo}jB(ir),qB(ir);var KB="iter insert remove copy getEditor constructor".split(" ");for(var Uh in Yn.prototype)Yn.prototype.hasOwnProperty(Uh)&&we(KB,Uh)<0&&(ir.prototype[Uh]=function(a){return function(){return a.apply(this.doc,arguments)}}(Yn.prototype[Uh]));return un(Yn),ir.inputStyles={textarea:Tr,contenteditable:Mt},ir.defineMode=function(a){!ir.defaults.mode&&a!="null"&&(ir.defaults.mode=a),ch.apply(this,arguments)},ir.defineMIME=Js,ir.defineMode("null",function(){return{token:function(a){return a.skipToEnd()}}}),ir.defineMIME("text/plain","null"),ir.defineExtension=function(a,u){ir.prototype[a]=u},ir.defineDocExtension=function(a,u){Yn.prototype[a]=u},ir.fromTextArea=QB,BB(ir),ir.version="5.65.14",ir})});var jO=G((kV,OV)=>{(function(e){typeof kV=="object"&&typeof OV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t="CodeMirror-hint",r="CodeMirror-hint-active";e.showHint=function(k,T,S){if(!T)return k.showHint(S);S&&S.async&&(T.async=!0);var m={hint:T};if(S)for(var w in S)m[w]=S[w];return k.showHint(m)},e.defineExtension("showHint",function(k){k=s(this,this.getCursor("start"),k);var T=this.listSelections();if(!(T.length>1)){if(this.somethingSelected()){if(!k.hint.supportsSelection)return;for(var S=0;SL.clientHeight+1:!1,we;setTimeout(function(){we=m.getScrollInfo()});var ot=te.bottom-Ie;if(ot>0){var Me=te.bottom-te.top,Qe=te.top-(P.bottom-P.top)-2;Ie-te.topQe&&(L.style.height=(Me=Qe)+"px"),L.style.top=(xe=P.top-Me)+Le+"px",ge=!1):L.style.height=Ie-te.top-2+"px"}var ze=te.right-Ot;if(ce&&(ze+=m.display.nativeBarWidth),ze>0&&(te.right-te.left>Ot&&(L.style.width=Ot-5+"px",ze-=te.right-te.left-Ot),L.style.left=(he=Math.max(P.left-ze-Fe,0))+"px"),ce)for(var mt=L.firstChild;mt;mt=mt.nextSibling)mt.style.paddingRight=m.display.nativeBarWidth+"px";if(m.addKeyMap(this.keyMap=d(k,{moveFocus:function(fe,se){S.changeActive(S.selectedHint+fe,se)},setFocus:function(fe){S.changeActive(fe)},menuSize:function(){return S.screenAmount()},length:R.length,close:function(){k.close()},pick:function(){S.pick()},data:T})),k.options.closeOnUnfocus){var oe;m.on("blur",this.onBlur=function(){oe=setTimeout(function(){k.close()},100)}),m.on("focus",this.onFocus=function(){clearTimeout(oe)})}m.on("scroll",this.onScroll=function(){var fe=m.getScrollInfo(),se=m.getWrapperElement().getBoundingClientRect();we||(we=m.getScrollInfo());var Ue=xe+we.top-fe.top,at=Ue-(x.pageYOffset||(w.documentElement||w.body).scrollTop);if(ge||(at+=L.offsetHeight),at<=se.top||at>=se.bottom)return k.close();L.style.top=Ue+"px",L.style.left=he+we.left-fe.left+"px"}),e.on(L,"dblclick",function(fe){var se=h(L,fe.target||fe.srcElement);se&&se.hintId!=null&&(S.changeActive(se.hintId),S.pick())}),e.on(L,"click",function(fe){var se=h(L,fe.target||fe.srcElement);se&&se.hintId!=null&&(S.changeActive(se.hintId),k.options.completeOnSingleClick&&S.pick())}),e.on(L,"mousedown",function(){setTimeout(function(){m.focus()},20)});var me=this.getSelectedHintRange();return(me.from!==0||me.to!==0)&&this.scrollToActive(),e.signal(T,"select",R[this.selectedHint],L.childNodes[this.selectedHint]),!0}v.prototype={close:function(){if(this.completion.widget==this){this.completion.widget=null,this.hints.parentNode&&this.hints.parentNode.removeChild(this.hints),this.completion.cm.removeKeyMap(this.keyMap);var k=this.completion.cm.getInputField();k.removeAttribute("aria-activedescendant"),k.removeAttribute("aria-owns");var T=this.completion.cm;this.completion.options.closeOnUnfocus&&(T.off("blur",this.onBlur),T.off("focus",this.onFocus)),T.off("scroll",this.onScroll)}},disable:function(){this.completion.cm.removeKeyMap(this.keyMap);var k=this;this.keyMap={Enter:function(){k.picked=!0}},this.completion.cm.addKeyMap(this.keyMap)},pick:function(){this.completion.pick(this.data,this.selectedHint)},changeActive:function(k,T){if(k>=this.data.list.length?k=T?this.data.list.length-1:0:k<0&&(k=T?0:this.data.list.length-1),this.selectedHint!=k){var S=this.hints.childNodes[this.selectedHint];S&&(S.className=S.className.replace(" "+r,""),S.removeAttribute("aria-selected")),S=this.hints.childNodes[this.selectedHint=k],S.className+=" "+r,S.setAttribute("aria-selected","true"),this.completion.cm.getInputField().setAttribute("aria-activedescendant",S.id),this.scrollToActive(),e.signal(this.data,"select",this.data.list[this.selectedHint],S)}},scrollToActive:function(){var k=this.getSelectedHintRange(),T=this.hints.childNodes[k.from],S=this.hints.childNodes[k.to],m=this.hints.firstChild;T.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=S.offsetTop+S.offsetHeight-this.hints.clientHeight+m.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1},getSelectedHintRange:function(){var k=this.completion.options.scrollMargin||0;return{from:Math.max(0,this.selectedHint-k),to:Math.min(this.data.list.length-1,this.selectedHint+k)}}};function y(k,T){if(!k.somethingSelected())return T;for(var S=[],m=0;m0?L(z):M(q+1)})}M(0)};return w.async=!0,w.supportsSelection=!0,w}else return(m=k.getHelper(k.getCursor(),"hintWords"))?function(x){return e.hint.fromList(x,{words:m})}:e.hint.anyword?function(x,L){return e.hint.anyword(x,L)}:function(){}}e.registerHelper("hint","auto",{resolve:D}),e.registerHelper("hint","fromList",function(k,T){var S=k.getCursor(),m=k.getTokenAt(S),w,x=e.Pos(S.line,m.start),L=S;m.start,]/,closeOnPick:!0,closeOnUnfocus:!0,updateOnCursorActivity:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null,paddingForScrollbar:!0,moveOnOverlap:!0};e.defineOption("hintOptions",null)})});var PO=G((wV,NV)=>{(function(e){typeof wV=="object"&&typeof NV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){var t=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),r=e.Pos,n={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function i(v){return v&&v.bracketRegex||/[(){}[\]]/}function o(v,y,b){var D=v.getLineHandle(y.line),_=y.ch-1,k=b&&b.afterCursor;k==null&&(k=/(^| )cm-fat-cursor($| )/.test(v.getWrapperElement().className));var T=i(b),S=!k&&_>=0&&T.test(D.text.charAt(_))&&n[D.text.charAt(_)]||T.test(D.text.charAt(_+1))&&n[D.text.charAt(++_)];if(!S)return null;var m=S.charAt(1)==">"?1:-1;if(b&&b.strict&&m>0!=(_==y.ch))return null;var w=v.getTokenTypeAt(r(y.line,_+1)),x=s(v,r(y.line,_+(m>0?1:0)),m,w,b);return x==null?null:{from:r(y.line,_),to:x&&x.pos,match:x&&x.ch==S.charAt(0),forward:m>0}}function s(v,y,b,D,_){for(var k=_&&_.maxScanLineLength||1e4,T=_&&_.maxScanLines||1e3,S=[],m=i(_),w=b>0?Math.min(y.line+T,v.lastLine()+1):Math.max(v.firstLine()-1,y.line-T),x=y.line;x!=w;x+=b){var L=v.getLine(x);if(!!L){var O=b>0?0:L.length-1,R=b>0?L.length:-1;if(!(L.length>k))for(x==y.line&&(O=y.ch-(b<0?1:0));O!=R;O+=b){var M=L.charAt(O);if(m.test(M)&&(D===void 0||(v.getTokenTypeAt(r(x,O+1))||"")==(D||""))){var q=n[M];if(q&&q.charAt(1)==">"==b>0)S.push(M);else if(S.length)S.pop();else return{pos:r(x,O),ch:M}}}}}return x-b==(b>0?v.lastLine():v.firstLine())?!1:null}function l(v,y,b){for(var D=v.state.matchBrackets.maxHighlightLineLength||1e3,_=b&&b.highlightNonMatching,k=[],T=v.listSelections(),S=0;S{(function(e){typeof DV=="object"&&typeof xV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){var t={pairs:`()[]{}''""`,closeBefore:`)]}'":;>`,triples:"",explode:"[]{}"},r=e.Pos;e.defineOption("autoCloseBrackets",!1,function(k,T,S){S&&S!=e.Init&&(k.removeKeyMap(i),k.state.closeBrackets=null),T&&(o(n(T,"pairs")),k.state.closeBrackets=T,k.addKeyMap(i))});function n(k,T){return T=="pairs"&&typeof k=="string"?k:typeof k=="object"&&k[T]!=null?k[T]:t[T]}var i={Backspace:d,Enter:h};function o(k){for(var T=0;T=0;w--){var L=m[w].head;k.replaceRange("",r(L.line,L.ch-1),r(L.line,L.ch+1),"+delete")}}function h(k){var T=l(k),S=T&&n(T,"explode");if(!S||k.getOption("disableInput"))return e.Pass;for(var m=k.listSelections(),w=0;w0?{line:L.head.line,ch:L.head.ch+T}:{line:L.head.line-1};S.push({anchor:O,head:O})}k.setSelections(S,w)}function y(k){var T=e.cmpPos(k.anchor,k.head)>0;return{anchor:new r(k.anchor.line,k.anchor.ch+(T?-1:1)),head:new r(k.head.line,k.head.ch+(T?1:-1))}}function b(k,T){var S=l(k);if(!S||k.getOption("disableInput"))return e.Pass;var m=n(S,"pairs"),w=m.indexOf(T);if(w==-1)return e.Pass;for(var x=n(S,"closeBefore"),L=n(S,"triples"),O=m.charAt(w+1)==T,R=k.listSelections(),M=w%2==0,q,z=0;z=0&&k.getRange(Q,r(Q.line,Q.ch+3))==T+T+T?P="skipThree":P="skip";else if(O&&Q.ch>1&&L.indexOf(T)>=0&&k.getRange(r(Q.line,Q.ch-2),Q)==T+T){if(Q.ch>2&&/\bstring/.test(k.getTokenTypeAt(r(Q.line,Q.ch-2))))return e.Pass;P="addFour"}else if(O){var xe=Q.ch==0?" ":k.getRange(r(Q.line,Q.ch-1),Q);if(!e.isWordChar(he)&&xe!=T&&!e.isWordChar(xe))P="both";else return e.Pass}else if(M&&(he.length===0||/\s/.test(he)||x.indexOf(he)>-1))P="both";else return e.Pass;if(!q)q=P;else if(q!=P)return e.Pass}var ge=w%2?m.charAt(w-1):T,Fe=w%2?T:m.charAt(w+1);k.operation(function(){if(q=="skip")v(k,1);else if(q=="skipThree")v(k,3);else if(q=="surround"){for(var Le=k.getSelections(),He=0;He{(function(e){typeof LV=="object"&&typeof IV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";function t(r){return function(n,i){var o=i.line,s=n.getLine(o);function l(D){for(var _,k=i.ch,T=0;;){var S=k<=0?-1:s.lastIndexOf(D[0],k-1);if(S==-1){if(T==1)break;T=1,k=s.length;continue}if(T==1&&Sr.lastLine())return null;var y=r.getTokenAt(e.Pos(v,1));if(/\S/.test(y.string)||(y=r.getTokenAt(e.Pos(v,y.end+1))),y.type!="keyword"||y.string!="import")return null;for(var b=v,D=Math.min(r.lastLine(),v+10);b<=D;++b){var _=r.getLine(b),k=_.indexOf(";");if(k!=-1)return{startCh:y.end,end:e.Pos(b,k)}}}var o=n.line,s=i(o),l;if(!s||i(o-1)||(l=i(o-2))&&l.end.line==o-1)return null;for(var d=s.end;;){var h=i(d.line+1);if(h==null)break;d=h.end}return{from:r.clipPos(e.Pos(o,s.startCh+1)),to:d}}),e.registerHelper("fold","include",function(r,n){function i(h){if(hr.lastLine())return null;var v=r.getTokenAt(e.Pos(h,1));if(/\S/.test(v.string)||(v=r.getTokenAt(e.Pos(h,v.end+1))),v.type=="meta"&&v.string.slice(0,8)=="#include")return v.start+8}var o=n.line,s=i(o);if(s==null||i(o-1)!=null)return null;for(var l=o;;){var d=i(l+1);if(d==null)break;++l}return{from:e.Pos(o,s+1),to:r.clipPos(e.Pos(l))}})})});var jV=G((AV,RV)=>{(function(e){typeof AV=="object"&&typeof RV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";function t(o,s,l,d){if(l&&l.call){var h=l;l=null}else var h=i(o,l,"rangeFinder");typeof s=="number"&&(s=e.Pos(s,0));var v=i(o,l,"minFoldSize");function y(k){var T=h(o,s);if(!T||T.to.line-T.from.lineo.firstLine();)s=e.Pos(s.line-1,0),b=y(!1);if(!(!b||b.cleared||d==="unfold")){var D=r(o,l,b);e.on(D,"mousedown",function(k){_.clear(),e.e_preventDefault(k)});var _=o.markText(b.from,b.to,{replacedWith:D,clearOnEnter:i(o,l,"clearOnEnter"),__isFold:!0});_.on("clear",function(k,T){e.signal(o,"unfold",o,k,T)}),e.signal(o,"fold",o,b.from,b.to)}}function r(o,s,l){var d=i(o,s,"widget");if(typeof d=="function"&&(d=d(l.from,l.to)),typeof d=="string"){var h=document.createTextNode(d);d=document.createElement("span"),d.appendChild(h),d.className="CodeMirror-foldmarker"}else d&&(d=d.cloneNode(!0));return d}e.newFoldFunction=function(o,s){return function(l,d){t(l,d,{rangeFinder:o,widget:s})}},e.defineExtension("foldCode",function(o,s,l){t(this,o,s,l)}),e.defineExtension("isFolded",function(o){for(var s=this.findMarksAt(o),l=0;l{(function(e){typeof PV=="object"&&typeof FV=="object"?e(Wt(),jV()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","./foldcode"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("foldGutter",!1,function(_,k,T){T&&T!=e.Init&&(_.clearGutter(_.state.foldGutter.options.gutter),_.state.foldGutter=null,_.off("gutterClick",h),_.off("changes",y),_.off("viewportChange",b),_.off("fold",D),_.off("unfold",D),_.off("swapDoc",y),_.off("optionChange",v)),k&&(_.state.foldGutter=new r(n(k)),d(_),_.on("gutterClick",h),_.on("changes",y),_.on("viewportChange",b),_.on("fold",D),_.on("unfold",D),_.on("swapDoc",y),_.on("optionChange",v))});var t=e.Pos;function r(_){this.options=_,this.from=this.to=0}function n(_){return _===!0&&(_={}),_.gutter==null&&(_.gutter="CodeMirror-foldgutter"),_.indicatorOpen==null&&(_.indicatorOpen="CodeMirror-foldgutter-open"),_.indicatorFolded==null&&(_.indicatorFolded="CodeMirror-foldgutter-folded"),_}function i(_,k){for(var T=_.findMarks(t(k,0),t(k+1,0)),S=0;S=w){if(O&&q&&O.test(q.className))return;M=o(S.indicatorOpen)}}!M&&!q||_.setGutterMarker(R,S.gutter,M)})}function l(_){return new RegExp("(^|\\s)"+_+"(?:$|\\s)\\s*")}function d(_){var k=_.getViewport(),T=_.state.foldGutter;!T||(_.operation(function(){s(_,k.from,k.to)}),T.from=k.from,T.to=k.to)}function h(_,k,T){var S=_.state.foldGutter;if(!!S){var m=S.options;if(T==m.gutter){var w=i(_,k);w?w.clear():_.foldCode(t(k,0),m)}}}function v(_,k){k=="mode"&&y(_)}function y(_){var k=_.state.foldGutter;if(!!k){var T=k.options;k.from=k.to=0,clearTimeout(k.changeUpdate),k.changeUpdate=setTimeout(function(){d(_)},T.foldOnChangeTimeSpan||600)}}function b(_){var k=_.state.foldGutter;if(!!k){var T=k.options;clearTimeout(k.changeUpdate),k.changeUpdate=setTimeout(function(){var S=_.getViewport();k.from==k.to||S.from-k.to>20||k.from-S.to>20?d(_):_.operation(function(){S.fromk.to&&(s(_,k.to,S.to),k.to=S.to)})},T.updateViewportTimeSpan||400)}}function D(_,k){var T=_.state.foldGutter;if(!!T){var S=k.line;S>=T.from&&S{(function(e){typeof MV=="object"&&typeof qV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t="CodeMirror-lint-markers",r="CodeMirror-lint-line-";function n(L,O,R){var M=document.createElement("div");M.className="CodeMirror-lint-tooltip cm-s-"+L.options.theme,M.appendChild(R.cloneNode(!0)),L.state.lint.options.selfContain?L.getWrapperElement().appendChild(M):document.body.appendChild(M);function q(z){if(!M.parentNode)return e.off(document,"mousemove",q);M.style.top=Math.max(0,z.clientY-M.offsetHeight-5)+"px",M.style.left=z.clientX+5+"px"}return e.on(document,"mousemove",q),q(O),M.style.opacity!=null&&(M.style.opacity=1),M}function i(L){L.parentNode&&L.parentNode.removeChild(L)}function o(L){!L.parentNode||(L.style.opacity==null&&i(L),L.style.opacity=0,setTimeout(function(){i(L)},600))}function s(L,O,R,M){var q=n(L,O,R);function z(){e.off(M,"mouseout",z),q&&(o(q),q=null)}var B=setInterval(function(){if(q)for(var Q=M;;Q=Q.parentNode){if(Q&&Q.nodeType==11&&(Q=Q.host),Q==document.body)return;if(!Q){z();break}}if(!q)return clearInterval(B)},400);e.on(M,"mouseout",z)}function l(L,O,R){this.marked=[],O instanceof Function&&(O={getAnnotations:O}),(!O||O===!0)&&(O={}),this.options={},this.linterOptions=O.options||{};for(var M in d)this.options[M]=d[M];for(var M in O)d.hasOwnProperty(M)?O[M]!=null&&(this.options[M]=O[M]):O.options||(this.linterOptions[M]=O[M]);this.timeout=null,this.hasGutter=R,this.onMouseOver=function(q){x(L,q)},this.waitingFor=0}var d={highlightLines:!1,tooltips:!0,delay:500,lintOnChange:!0,getAnnotations:null,async:!1,selfContain:null,formatAnnotation:null,onUpdateLinting:null};function h(L){var O=L.state.lint;O.hasGutter&&L.clearGutter(t),O.options.highlightLines&&v(L);for(var R=0;R1,M.tooltips)),M.highlightLines&&L.addLineClass(z,"wrap",r+Q)}}M.onUpdateLinting&&M.onUpdateLinting(O,q,L)}}function m(L){var O=L.state.lint;!O||(clearTimeout(O.timeout),O.timeout=setTimeout(function(){T(L)},O.options.delay))}function w(L,O,R){for(var M=R.target||R.srcElement,q=document.createDocumentFragment(),z=0;z{(function(e){typeof UV=="object"&&typeof GV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t=e.Pos;function r(T){var S=T.flags;return S!=null?S:(T.ignoreCase?"i":"")+(T.global?"g":"")+(T.multiline?"m":"")}function n(T,S){for(var m=r(T),w=m,x=0;xO);R++){var M=T.getLine(L++);w=w==null?M:w+` +`+M}x=x*2,S.lastIndex=m.ch;var q=S.exec(w);if(q){var z=w.slice(0,q.index).split(` +`),B=q[0].split(` +`),Q=m.line+z.length-1,P=z[z.length-1].length;return{from:t(Q,P),to:t(Q+B.length-1,B.length==1?P+B[0].length:B[B.length-1].length),match:q}}}}function l(T,S,m){for(var w,x=0;x<=T.length;){S.lastIndex=x;var L=S.exec(T);if(!L)break;var O=L.index+L[0].length;if(O>T.length-m)break;(!w||O>w.index+w[0].length)&&(w=L),x=L.index+1}return w}function d(T,S,m){S=n(S,"g");for(var w=m.line,x=m.ch,L=T.firstLine();w>=L;w--,x=-1){var O=T.getLine(w),R=l(O,S,x<0?0:O.length-x);if(R)return{from:t(w,R.index),to:t(w,R.index+R[0].length),match:R}}}function h(T,S,m){if(!i(S))return d(T,S,m);S=n(S,"gm");for(var w,x=1,L=T.getLine(m.line).length-m.ch,O=m.line,R=T.firstLine();O>=R;){for(var M=0;M=R;M++){var q=T.getLine(O--);w=w==null?q:q+` +`+w}x*=2;var z=l(w,S,L);if(z){var B=w.slice(0,z.index).split(` +`),Q=z[0].split(` +`),P=O+B.length,he=B[B.length-1].length;return{from:t(P,he),to:t(P+Q.length-1,Q.length==1?he+Q[0].length:Q[Q.length-1].length),match:z}}}}var v,y;String.prototype.normalize?(v=function(T){return T.normalize("NFD").toLowerCase()},y=function(T){return T.normalize("NFD")}):(v=function(T){return T.toLowerCase()},y=function(T){return T});function b(T,S,m,w){if(T.length==S.length)return m;for(var x=0,L=m+Math.max(0,T.length-S.length);;){if(x==L)return x;var O=x+L>>1,R=w(T.slice(0,O)).length;if(R==m)return O;R>m?L=O:x=O+1}}function D(T,S,m,w){if(!S.length)return null;var x=w?v:y,L=x(S).split(/\r|\n\r?/);e:for(var O=m.line,R=m.ch,M=T.lastLine()+1-L.length;O<=M;O++,R=0){var q=T.getLine(O).slice(R),z=x(q);if(L.length==1){var B=z.indexOf(L[0]);if(B==-1)continue e;var m=b(q,z,B,x)+R;return{from:t(O,b(q,z,B,x)+R),to:t(O,b(q,z,B+L[0].length,x)+R)}}else{var Q=z.length-L[0].length;if(z.slice(Q)!=L[0])continue e;for(var P=1;P=M;O--,R=-1){var q=T.getLine(O);R>-1&&(q=q.slice(0,R));var z=x(q);if(L.length==1){var B=z.lastIndexOf(L[0]);if(B==-1)continue e;return{from:t(O,b(q,z,B,x)),to:t(O,b(q,z,B+L[0].length,x))}}else{var Q=L[L.length-1];if(z.slice(0,Q.length)!=Q)continue e;for(var P=1,m=O-L.length+1;P(this.doc.getLine(S.line)||"").length&&(S.ch=0,S.line++)),e.cmpPos(S,this.doc.clipPos(S))!=0))return this.atOccurrence=!1;var m=this.matches(T,S);if(this.afterEmptyMatch=m&&e.cmpPos(m.from,m.to)==0,m)return this.pos=m,this.atOccurrence=!0,this.pos.match||!0;var w=t(T?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:w,to:w},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(T,S){if(!!this.atOccurrence){var m=e.splitLines(T);this.doc.replaceRange(m,this.pos.from,this.pos.to,S),this.pos.to=t(this.pos.from.line+m.length-1,m[m.length-1].length+(m.length==1?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",function(T,S,m){return new k(this.doc,T,S,m)}),e.defineDocExtension("getSearchCursor",function(T,S,m){return new k(this,T,S,m)}),e.defineExtension("selectMatches",function(T,S){for(var m=[],w=this.getSearchCursor(T,this.getCursor("from"),S);w.findNext()&&!(e.cmpPos(w.to(),this.getCursor("to"))>0);)m.push({anchor:w.from(),head:w.to()});m.length&&this.setSelections(m,0)})})});var Vp=G((QV,BV)=>{(function(e){typeof QV=="object"&&typeof BV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){function t(n,i,o){var s=n.getWrapperElement(),l;return l=s.appendChild(document.createElement("div")),o?l.className="CodeMirror-dialog CodeMirror-dialog-bottom":l.className="CodeMirror-dialog CodeMirror-dialog-top",typeof i=="string"?l.innerHTML=i:l.appendChild(i),e.addClass(s,"dialog-opened"),l}function r(n,i){n.state.currentNotificationClose&&n.state.currentNotificationClose(),n.state.currentNotificationClose=i}e.defineExtension("openDialog",function(n,i,o){o||(o={}),r(this,null);var s=t(this,n,o.bottom),l=!1,d=this;function h(b){if(typeof b=="string")v.value=b;else{if(l)return;l=!0,e.rmClass(s.parentNode,"dialog-opened"),s.parentNode.removeChild(s),d.focus(),o.onClose&&o.onClose(s)}}var v=s.getElementsByTagName("input")[0],y;return v?(v.focus(),o.value&&(v.value=o.value,o.selectValueOnOpen!==!1&&v.select()),o.onInput&&e.on(v,"input",function(b){o.onInput(b,v.value,h)}),o.onKeyUp&&e.on(v,"keyup",function(b){o.onKeyUp(b,v.value,h)}),e.on(v,"keydown",function(b){o&&o.onKeyDown&&o.onKeyDown(b,v.value,h)||((b.keyCode==27||o.closeOnEnter!==!1&&b.keyCode==13)&&(v.blur(),e.e_stop(b),h()),b.keyCode==13&&i(v.value,b))}),o.closeOnBlur!==!1&&e.on(s,"focusout",function(b){b.relatedTarget!==null&&h()})):(y=s.getElementsByTagName("button")[0])&&(e.on(y,"click",function(){h(),d.focus()}),o.closeOnBlur!==!1&&e.on(y,"blur",h),y.focus()),h}),e.defineExtension("openConfirm",function(n,i,o){r(this,null);var s=t(this,n,o&&o.bottom),l=s.getElementsByTagName("button"),d=!1,h=this,v=1;function y(){d||(d=!0,e.rmClass(s.parentNode,"dialog-opened"),s.parentNode.removeChild(s),h.focus())}l[0].focus();for(var b=0;b{(function(e){typeof KV=="object"&&typeof HV=="object"?e(Wt(),Vp()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../dialog/dialog"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("search",{bottom:!1});function t(i,o,s,l,d){i.openDialog?i.openDialog(o,d,{value:l,selectValueOnOpen:!0,bottom:i.options.search.bottom}):d(prompt(s,l))}function r(i){return i.phrase("Jump to line:")+' '+i.phrase("(Use line:column or scroll% syntax)")+""}function n(i,o){var s=Number(o);return/^[-+]/.test(o)?i.getCursor().line+s:s-1}e.commands.jumpToLine=function(i){var o=i.getCursor();t(i,r(i),i.phrase("Jump to line:"),o.line+1+":"+o.ch,function(s){if(!!s){var l;if(l=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(s))i.setCursor(n(i,l[1]),Number(l[2]));else if(l=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(s)){var d=Math.round(i.lineCount()*Number(l[1])/100);/^[-+]/.test(l[1])&&(d=o.line+d+1),i.setCursor(d-1,o.ch)}else(l=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(s))&&i.setCursor(n(i,l[1]),o.ch)}})},e.keyMap.default["Alt-G"]="jumpToLine"})});var VO=G((zV,WV)=>{(function(e){typeof zV=="object"&&typeof WV=="object"?e(Wt(),qp(),PO()):typeof define=="function"&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/edit/matchbrackets"],e):e(CodeMirror)})(function(e){"use strict";var t=e.commands,r=e.Pos;function n(m,w,x){if(x<0&&w.ch==0)return m.clipPos(r(w.line-1));var L=m.getLine(w.line);if(x>0&&w.ch>=L.length)return m.clipPos(r(w.line+1,0));for(var O="start",R,M=w.ch,q=M,z=x<0?0:L.length,B=0;q!=z;q+=x,B++){var Q=L.charAt(x<0?q-1:q),P=Q!="_"&&e.isWordChar(Q)?"w":"o";if(P=="w"&&Q.toUpperCase()==Q&&(P="W"),O=="start")P!="o"?(O="in",R=P):M=q+x;else if(O=="in"&&R!=P){if(R=="w"&&P=="W"&&x<0&&q--,R=="W"&&P=="w"&&x>0)if(q==M+1){R="w";continue}else q--;break}}return r(w.line,q)}function i(m,w){m.extendSelectionsBy(function(x){return m.display.shift||m.doc.extend||x.empty()?n(m.doc,x.head,w):w<0?x.from():x.to()})}t.goSubwordLeft=function(m){i(m,-1)},t.goSubwordRight=function(m){i(m,1)},t.scrollLineUp=function(m){var w=m.getScrollInfo();if(!m.somethingSelected()){var x=m.lineAtHeight(w.top+w.clientHeight,"local");m.getCursor().line>=x&&m.execCommand("goLineUp")}m.scrollTo(null,w.top-m.defaultTextHeight())},t.scrollLineDown=function(m){var w=m.getScrollInfo();if(!m.somethingSelected()){var x=m.lineAtHeight(w.top,"local")+1;m.getCursor().line<=x&&m.execCommand("goLineDown")}m.scrollTo(null,w.top+m.defaultTextHeight())},t.splitSelectionByLine=function(m){for(var w=m.listSelections(),x=[],L=0;LO.line&&M==R.line&&R.ch==0||x.push({anchor:M==O.line?O:r(M,0),head:M==R.line?R:r(M)});m.setSelections(x,0)},t.singleSelectionTop=function(m){var w=m.listSelections()[0];m.setSelection(w.anchor,w.head,{scroll:!1})},t.selectLine=function(m){for(var w=m.listSelections(),x=[],L=0;LL?x.push(q,z):x.length&&(x[x.length-1]=z),L=z}m.operation(function(){for(var B=0;Bm.lastLine()?m.replaceRange(` +`+he,r(m.lastLine()),null,"+swapLine"):m.replaceRange(he+` +`,r(P,0),null,"+swapLine")}m.setSelections(O),m.scrollIntoView()})},t.swapLineDown=function(m){if(m.isReadOnly())return e.Pass;for(var w=m.listSelections(),x=[],L=m.lastLine()+1,O=w.length-1;O>=0;O--){var R=w[O],M=R.to().line+1,q=R.from().line;R.to().ch==0&&!R.empty()&&M--,M=0;z-=2){var B=x[z],Q=x[z+1],P=m.getLine(B);B==m.lastLine()?m.replaceRange("",r(B-1),r(B),"+swapLine"):m.replaceRange("",r(B,0),r(B+1,0),"+swapLine"),m.replaceRange(P+` +`,r(Q,0),null,"+swapLine")}m.scrollIntoView()})},t.toggleCommentIndented=function(m){m.toggleComment({indent:!0})},t.joinLines=function(m){for(var w=m.listSelections(),x=[],L=0;L=0;R--){var M=x[L[R]];if(!(q&&e.cmpPos(M.head,q)>0)){var z=s(m,M.head);q=z.from,m.replaceRange(w(z.word),z.from,z.to)}}})}t.smartBackspace=function(m){if(m.somethingSelected())return e.Pass;m.operation(function(){for(var w=m.listSelections(),x=m.getOption("indentUnit"),L=w.length-1;L>=0;L--){var O=w[L].head,R=m.getRange({line:O.line,ch:0},O),M=e.countColumn(R,null,m.getOption("tabSize")),q=m.findPosH(O,-1,"char",!1);if(R&&!/\S/.test(R)&&M%x==0){var z=new r(O.line,e.findColumn(R,M-x,x));z.ch!=O.ch&&(q=z)}m.replaceRange("",q,O,"+delete")}})},t.delLineRight=function(m){m.operation(function(){for(var w=m.listSelections(),x=w.length-1;x>=0;x--)m.replaceRange("",w[x].anchor,r(w[x].to().line),"+delete");m.scrollIntoView()})},t.upcaseAtCursor=function(m){D(m,function(w){return w.toUpperCase()})},t.downcaseAtCursor=function(m){D(m,function(w){return w.toLowerCase()})},t.setSublimeMark=function(m){m.state.sublimeMark&&m.state.sublimeMark.clear(),m.state.sublimeMark=m.setBookmark(m.getCursor())},t.selectToSublimeMark=function(m){var w=m.state.sublimeMark&&m.state.sublimeMark.find();w&&m.setSelection(m.getCursor(),w)},t.deleteToSublimeMark=function(m){var w=m.state.sublimeMark&&m.state.sublimeMark.find();if(w){var x=m.getCursor(),L=w;if(e.cmpPos(x,L)>0){var O=L;L=x,x=O}m.state.sublimeKilled=m.getRange(x,L),m.replaceRange("",x,L)}},t.swapWithSublimeMark=function(m){var w=m.state.sublimeMark&&m.state.sublimeMark.find();w&&(m.state.sublimeMark.clear(),m.state.sublimeMark=m.setBookmark(m.getCursor()),m.setCursor(w))},t.sublimeYank=function(m){m.state.sublimeKilled!=null&&m.replaceSelection(m.state.sublimeKilled,null,"paste")},t.showInCenter=function(m){var w=m.cursorCoords(null,"local");m.scrollTo(null,(w.top+w.bottom)/2-m.getScrollInfo().clientHeight/2)};function _(m){var w=m.getCursor("from"),x=m.getCursor("to");if(e.cmpPos(w,x)==0){var L=s(m,w);if(!L.word)return;w=L.from,x=L.to}return{from:w,to:x,query:m.getRange(w,x),word:L}}function k(m,w){var x=_(m);if(!!x){var L=x.query,O=m.getSearchCursor(L,w?x.to:x.from);(w?O.findNext():O.findPrevious())?m.setSelection(O.from(),O.to()):(O=m.getSearchCursor(L,w?r(m.firstLine(),0):m.clipPos(r(m.lastLine()))),(w?O.findNext():O.findPrevious())?m.setSelection(O.from(),O.to()):x.word&&m.setSelection(x.from,x.to))}}t.findUnder=function(m){k(m,!0)},t.findUnderPrevious=function(m){k(m,!1)},t.findAllUnder=function(m){var w=_(m);if(!!w){for(var x=m.getSearchCursor(w.query),L=[],O=-1;x.findNext();)L.push({anchor:x.from(),head:x.to()}),x.from().line<=w.from.line&&x.from().ch<=w.from.ch&&O++;m.setSelections(L,O)}};var T=e.keyMap;T.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F5:"sortLines","Shift-F5":"reverseSortLines","Cmd-F5":"sortLinesInsensitive","Shift-Cmd-F5":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K Cmd-D":"skipAndSelectNextOccurrence","Cmd-K Cmd-K":"delLineRight","Cmd-K Cmd-U":"upcaseAtCursor","Cmd-K Cmd-L":"downcaseAtCursor","Cmd-K Cmd-Space":"setSublimeMark","Cmd-K Cmd-A":"selectToSublimeMark","Cmd-K Cmd-W":"deleteToSublimeMark","Cmd-K Cmd-X":"swapWithSublimeMark","Cmd-K Cmd-Y":"sublimeYank","Cmd-K Cmd-C":"showInCenter","Cmd-K Cmd-G":"clearBookmarks","Cmd-K Cmd-Backspace":"delLineLeft","Cmd-K Cmd-1":"foldAll","Cmd-K Cmd-0":"unfoldAll","Cmd-K Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},e.normalizeKeyMap(T.macSublime),T.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Shift-F9":"reverseSortLines","Ctrl-F9":"sortLinesInsensitive","Shift-Ctrl-F9":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K Ctrl-D":"skipAndSelectNextOccurrence","Ctrl-K Ctrl-K":"delLineRight","Ctrl-K Ctrl-U":"upcaseAtCursor","Ctrl-K Ctrl-L":"downcaseAtCursor","Ctrl-K Ctrl-Space":"setSublimeMark","Ctrl-K Ctrl-A":"selectToSublimeMark","Ctrl-K Ctrl-W":"deleteToSublimeMark","Ctrl-K Ctrl-X":"swapWithSublimeMark","Ctrl-K Ctrl-Y":"sublimeYank","Ctrl-K Ctrl-C":"showInCenter","Ctrl-K Ctrl-G":"clearBookmarks","Ctrl-K Ctrl-Backspace":"delLineLeft","Ctrl-K Ctrl-1":"foldAll","Ctrl-K Ctrl-0":"unfoldAll","Ctrl-K Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},e.normalizeKeyMap(T.pcSublime);var S=T.default==T.macDefault;T.sublime=S?T.macSublime:T.pcSublime})});var XV=G((YV,JV)=>{(function(e){typeof YV=="object"&&typeof JV=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";var t={},r=/[^\s\u00a0]/,n=e.Pos,i=e.cmpPos;function o(d){var h=d.search(r);return h==-1?0:h}e.commands.toggleComment=function(d){d.toggleComment()},e.defineExtension("toggleComment",function(d){d||(d=t);for(var h=this,v=1/0,y=this.listSelections(),b=null,D=y.length-1;D>=0;D--){var _=y[D].from(),k=y[D].to();_.line>=v||(k.line>=v&&(k=n(v,0)),v=_.line,b==null?h.uncomment(_,k,d)?b="un":(h.lineComment(_,k,d),b="line"):b=="un"?h.uncomment(_,k,d):h.lineComment(_,k,d))}});function s(d,h,v){return/\bstring\b/.test(d.getTokenTypeAt(n(h.line,0)))&&!/^[\'\"\`]/.test(v)}function l(d,h){var v=d.getMode();return v.useInnerComments===!1||!v.innerMode?v:d.getModeAt(h)}e.defineExtension("lineComment",function(d,h,v){v||(v=t);var y=this,b=l(y,d),D=y.getLine(d.line);if(!(D==null||s(y,d,D))){var _=v.lineComment||b.lineComment;if(!_){(v.blockCommentStart||b.blockCommentStart)&&(v.fullLines=!0,y.blockComment(d,h,v));return}var k=Math.min(h.ch!=0||h.line==d.line?h.line+1:h.line,y.lastLine()+1),T=v.padding==null?" ":v.padding,S=v.commentBlankLines||d.line==h.line;y.operation(function(){if(v.indent){for(var m=null,w=d.line;wL.length)&&(m=L)}for(var w=d.line;wk||y.operation(function(){if(v.fullLines!=!1){var S=r.test(y.getLine(k));y.replaceRange(T+_,n(k)),y.replaceRange(D+T,n(d.line,0));var m=v.blockCommentLead||b.blockCommentLead;if(m!=null)for(var w=d.line+1;w<=k;++w)(w!=k||S)&&y.replaceRange(m+T,n(w,0))}else{var x=i(y.getCursor("to"),h)==0,L=!y.somethingSelected();y.replaceRange(_,h),x&&y.setSelection(L?h:y.getCursor("from"),h),y.replaceRange(D,d)}})}}),e.defineExtension("uncomment",function(d,h,v){v||(v=t);var y=this,b=l(y,d),D=Math.min(h.ch!=0||h.line==d.line?h.line:h.line-1,y.lastLine()),_=Math.min(d.line,D),k=v.lineComment||b.lineComment,T=[],S=v.padding==null?" ":v.padding,m;e:{if(!k)break e;for(var w=_;w<=D;++w){var x=y.getLine(w),L=x.indexOf(k);if(L>-1&&!/comment/.test(y.getTokenTypeAt(n(w,L+1)))&&(L=-1),L==-1&&r.test(x)||L>-1&&r.test(x.slice(0,L)))break e;T.push(x)}if(y.operation(function(){for(var Le=_;Le<=D;++Le){var He=T[Le-_],Xe=He.indexOf(k),Ve=Xe+k.length;Xe<0||(He.slice(Ve,Ve+S.length)==S&&(Ve+=S.length),m=!0,y.replaceRange("",n(Le,Xe),n(Le,Ve)))}}),m)return!0}var O=v.blockCommentStart||b.blockCommentStart,R=v.blockCommentEnd||b.blockCommentEnd;if(!O||!R)return!1;var M=v.blockCommentLead||b.blockCommentLead,q=y.getLine(_),z=q.indexOf(O);if(z==-1)return!1;var B=D==_?q:y.getLine(D),Q=B.indexOf(R,D==_?z+O.length:0),P=n(_,z+1),he=n(D,Q+1);if(Q==-1||!/comment/.test(y.getTokenTypeAt(P))||!/comment/.test(y.getTokenTypeAt(he))||y.getRange(P,he,` +`).indexOf(R)>-1)return!1;var xe=q.lastIndexOf(O,d.ch),ge=xe==-1?-1:q.slice(0,d.ch).indexOf(R,xe+O.length);if(xe!=-1&&ge!=-1&&ge+R.length!=d.ch)return!1;ge=B.indexOf(R,h.ch);var Fe=B.slice(h.ch).lastIndexOf(O,ge-h.ch);return xe=ge==-1||Fe==-1?-1:h.ch+Fe,ge!=-1&&xe!=-1&&xe!=h.ch?!1:(y.operation(function(){y.replaceRange("",n(D,Q-(S&&B.slice(Q-S.length,Q)==S?S.length:0)),n(D,Q+R.length));var Le=z+O.length;if(S&&q.slice(Le,Le+S.length)==S&&(Le+=S.length),y.replaceRange("",n(_,z),n(_,Le)),M)for(var He=_+1;He<=D;++He){var Xe=y.getLine(He),Ve=Xe.indexOf(M);if(!(Ve==-1||r.test(Xe.slice(0,Ve)))){var At=Ve+M.length;S&&Xe.slice(At,At+S.length)==S&&(At+=S.length),y.replaceRange("",n(He,Ve),n(He,At))}}}),!0)})})});var UO=G((ZV,$V)=>{(function(e){typeof ZV=="object"&&typeof $V=="object"?e(Wt(),qp(),Vp()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","./searchcursor","../dialog/dialog"],e):e(CodeMirror)})(function(e){"use strict";e.defineOption("search",{bottom:!1});function t(O,R){return typeof O=="string"?O=new RegExp(O.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),R?"gi":"g"):O.global||(O=new RegExp(O.source,O.ignoreCase?"gi":"g")),{token:function(M){O.lastIndex=M.pos;var q=O.exec(M.string);if(q&&q.index==M.pos)return M.pos+=q[0].length||1,"searching";q?M.pos=q.index:M.skipToEnd()}}}function r(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function n(O){return O.state.search||(O.state.search=new r)}function i(O){return typeof O=="string"&&O==O.toLowerCase()}function o(O,R,M){return O.getSearchCursor(R,M,{caseFold:i(R),multiline:!0})}function s(O,R,M,q,z){O.openDialog(R,q,{value:M,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){_(O)},onKeyDown:z,bottom:O.options.search.bottom})}function l(O,R,M,q,z){O.openDialog?O.openDialog(R,z,{value:q,selectValueOnOpen:!0,bottom:O.options.search.bottom}):z(prompt(M,q))}function d(O,R,M,q){O.openConfirm?O.openConfirm(R,q):confirm(M)&&q[0]()}function h(O){return O.replace(/\\([nrt\\])/g,function(R,M){return M=="n"?` +`:M=="r"?"\r":M=="t"?" ":M=="\\"?"\\":R})}function v(O){var R=O.match(/^\/(.*)\/([a-z]*)$/);if(R)try{O=new RegExp(R[1],R[2].indexOf("i")==-1?"":"i")}catch(M){}else O=h(O);return(typeof O=="string"?O=="":O.test(""))&&(O=/x^/),O}function y(O,R,M){R.queryText=M,R.query=v(M),O.removeOverlay(R.overlay,i(R.query)),R.overlay=t(R.query,i(R.query)),O.addOverlay(R.overlay),O.showMatchesOnScrollbar&&(R.annotate&&(R.annotate.clear(),R.annotate=null),R.annotate=O.showMatchesOnScrollbar(R.query,i(R.query)))}function b(O,R,M,q){var z=n(O);if(z.query)return D(O,R);var B=O.getSelection()||z.lastQuery;if(B instanceof RegExp&&B.source=="x^"&&(B=null),M&&O.openDialog){var Q=null,P=function(he,xe){e.e_stop(xe),!!he&&(he!=z.queryText&&(y(O,z,he),z.posFrom=z.posTo=O.getCursor()),Q&&(Q.style.opacity=1),D(O,xe.shiftKey,function(ge,Fe){var Le;Fe.line<3&&document.querySelector&&(Le=O.display.wrapper.querySelector(".CodeMirror-dialog"))&&Le.getBoundingClientRect().bottom-4>O.cursorCoords(Fe,"window").top&&((Q=Le).style.opacity=.4)}))};s(O,T(O),B,P,function(he,xe){var ge=e.keyName(he),Fe=O.getOption("extraKeys"),Le=Fe&&Fe[ge]||e.keyMap[O.getOption("keyMap")][ge];Le=="findNext"||Le=="findPrev"||Le=="findPersistentNext"||Le=="findPersistentPrev"?(e.e_stop(he),y(O,n(O),xe),O.execCommand(Le)):(Le=="find"||Le=="findPersistent")&&(e.e_stop(he),P(xe,he))}),q&&B&&(y(O,z,B),D(O,R))}else l(O,T(O),"Search for:",B,function(he){he&&!z.query&&O.operation(function(){y(O,z,he),z.posFrom=z.posTo=O.getCursor(),D(O,R)})})}function D(O,R,M){O.operation(function(){var q=n(O),z=o(O,q.query,R?q.posFrom:q.posTo);!z.find(R)&&(z=o(O,q.query,R?e.Pos(O.lastLine()):e.Pos(O.firstLine(),0)),!z.find(R))||(O.setSelection(z.from(),z.to()),O.scrollIntoView({from:z.from(),to:z.to()},20),q.posFrom=z.from(),q.posTo=z.to(),M&&M(z.from(),z.to()))})}function _(O){O.operation(function(){var R=n(O);R.lastQuery=R.query,!!R.query&&(R.query=R.queryText=null,O.removeOverlay(R.overlay),R.annotate&&(R.annotate.clear(),R.annotate=null))})}function k(O,R){var M=O?document.createElement(O):document.createDocumentFragment();for(var q in R)M[q]=R[q];for(var z=2;z{"use strict";Object.defineProperty(ea,"__esModule",{value:!0});ea.hintList=ea.objectValues=ea.forEachState=ea.getFieldDef=ea.getDefinitionState=void 0;var Y$=ht(),Fc=vi();function J$(e){let t;return eU(e,r=>{switch(r.kind){case"Query":case"ShortQuery":case"Mutation":case"Subscription":case"FragmentDefinition":t=r;break}}),t}ea.getDefinitionState=J$;function X$(e,t,r){return r===Fc.SchemaMetaFieldDef.name&&e.getQueryType()===t?Fc.SchemaMetaFieldDef:r===Fc.TypeMetaFieldDef.name&&e.getQueryType()===t?Fc.TypeMetaFieldDef:r===Fc.TypeNameMetaFieldDef.name&&(0,Y$.isCompositeType)(t)?Fc.TypeNameMetaFieldDef:"getFields"in t?t.getFields()[r]:null}ea.getFieldDef=X$;function eU(e,t){let r=[],n=e;for(;n==null?void 0:n.kind;)r.push(n),n=n.prevState;for(let i=r.length-1;i>=0;i--)t(r[i])}ea.forEachState=eU;function Z$(e){let t=Object.keys(e),r=t.length,n=new Array(r);for(let i=0;i!n.isDeprecated);let r=e.map(n=>({proximity:tee(tU(n.label),t),entry:n}));return GO(GO(r,n=>n.proximity<=2),n=>!n.entry.isDeprecated).sort((n,i)=>(n.entry.isDeprecated?1:0)-(i.entry.isDeprecated?1:0)||n.proximity-i.proximity||n.entry.label.length-i.entry.label.length).map(n=>n.entry)}function GO(e,t){let r=e.filter(t);return r.length===0?e:r}function tU(e){return e.toLowerCase().replace(/\W/g,"")}function tee(e,t){let r=ree(t,e);return e.length>t.length&&(r-=e.length-t.length-1,r+=e.indexOf(t)===0?0:.5),r}function ree(e,t){let r,n,i=[],o=e.length,s=t.length;for(r=0;r<=o;r++)i[r]=[r];for(n=1;n<=s;n++)i[0][n]=n;for(r=1;r<=o;r++)for(n=1;n<=s;n++){let l=e[r-1]===t[n-1]?0:1;i[r][n]=Math.min(i[r-1][n]+1,i[r][n-1]+1,i[r-1][n-1]+l),r>1&&n>1&&e[r-1]===t[n-2]&&e[r-2]===t[n-1]&&(i[r][n]=Math.min(i[r][n],i[r-2][n-2]+l))}return i[o][s]}});var nU=G((rU,iy)=>{(function(e){if(typeof iy=="object"&&typeof iy.exports=="object"){var t=e(tx,rU);t!==void 0&&(iy.exports=t)}else typeof define=="function"&&define.amd&&define(["require","exports"],e)})(function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TextDocument=t.EOL=t.WorkspaceFolder=t.InlayHint=t.InlayHintLabelPart=t.InlayHintKind=t.InlineValueContext=t.InlineValueEvaluatableExpression=t.InlineValueVariableLookup=t.InlineValueText=t.SemanticTokens=t.SemanticTokenModifiers=t.SemanticTokenTypes=t.SelectionRange=t.DocumentLink=t.FormattingOptions=t.CodeLens=t.CodeAction=t.CodeActionContext=t.CodeActionTriggerKind=t.CodeActionKind=t.DocumentSymbol=t.WorkspaceSymbol=t.SymbolInformation=t.SymbolTag=t.SymbolKind=t.DocumentHighlight=t.DocumentHighlightKind=t.SignatureInformation=t.ParameterInformation=t.Hover=t.MarkedString=t.CompletionList=t.CompletionItem=t.CompletionItemLabelDetails=t.InsertTextMode=t.InsertReplaceEdit=t.CompletionItemTag=t.InsertTextFormat=t.CompletionItemKind=t.MarkupContent=t.MarkupKind=t.TextDocumentItem=t.OptionalVersionedTextDocumentIdentifier=t.VersionedTextDocumentIdentifier=t.TextDocumentIdentifier=t.WorkspaceChange=t.WorkspaceEdit=t.DeleteFile=t.RenameFile=t.CreateFile=t.TextDocumentEdit=t.AnnotatedTextEdit=t.ChangeAnnotationIdentifier=t.ChangeAnnotation=t.TextEdit=t.Command=t.Diagnostic=t.CodeDescription=t.DiagnosticTag=t.DiagnosticSeverity=t.DiagnosticRelatedInformation=t.FoldingRange=t.FoldingRangeKind=t.ColorPresentation=t.ColorInformation=t.Color=t.LocationLink=t.Location=t.Range=t.Position=t.uinteger=t.integer=t.URI=t.DocumentUri=void 0;var r;(function(F){function Y(J){return typeof J=="string"}F.is=Y})(r=t.DocumentUri||(t.DocumentUri={}));var n;(function(F){function Y(J){return typeof J=="string"}F.is=Y})(n=t.URI||(t.URI={}));var i;(function(F){F.MIN_VALUE=-2147483648,F.MAX_VALUE=2147483647;function Y(J){return typeof J=="number"&&F.MIN_VALUE<=J&&J<=F.MAX_VALUE}F.is=Y})(i=t.integer||(t.integer={}));var o;(function(F){F.MIN_VALUE=0,F.MAX_VALUE=2147483647;function Y(J){return typeof J=="number"&&F.MIN_VALUE<=J&&J<=F.MAX_VALUE}F.is=Y})(o=t.uinteger||(t.uinteger={}));var s;(function(F){function Y(V,A){return V===Number.MAX_VALUE&&(V=o.MAX_VALUE),A===Number.MAX_VALUE&&(A=o.MAX_VALUE),{line:V,character:A}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&ee.uinteger(A.line)&&ee.uinteger(A.character)}F.is=J})(s=t.Position||(t.Position={}));var l;(function(F){function Y(V,A,re,ue){if(ee.uinteger(V)&&ee.uinteger(A)&&ee.uinteger(re)&&ee.uinteger(ue))return{start:s.create(V,A),end:s.create(re,ue)};if(s.is(V)&&s.is(A))return{start:V,end:A};throw new Error("Range#create called with invalid arguments[".concat(V,", ").concat(A,", ").concat(re,", ").concat(ue,"]"))}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&s.is(A.start)&&s.is(A.end)}F.is=J})(l=t.Range||(t.Range={}));var d;(function(F){function Y(V,A){return{uri:V,range:A}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&l.is(A.range)&&(ee.string(A.uri)||ee.undefined(A.uri))}F.is=J})(d=t.Location||(t.Location={}));var h;(function(F){function Y(V,A,re,ue){return{targetUri:V,targetRange:A,targetSelectionRange:re,originSelectionRange:ue}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&l.is(A.targetRange)&&ee.string(A.targetUri)&&l.is(A.targetSelectionRange)&&(l.is(A.originSelectionRange)||ee.undefined(A.originSelectionRange))}F.is=J})(h=t.LocationLink||(t.LocationLink={}));var v;(function(F){function Y(V,A,re,ue){return{red:V,green:A,blue:re,alpha:ue}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&ee.numberRange(A.red,0,1)&&ee.numberRange(A.green,0,1)&&ee.numberRange(A.blue,0,1)&&ee.numberRange(A.alpha,0,1)}F.is=J})(v=t.Color||(t.Color={}));var y;(function(F){function Y(V,A){return{range:V,color:A}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&l.is(A.range)&&v.is(A.color)}F.is=J})(y=t.ColorInformation||(t.ColorInformation={}));var b;(function(F){function Y(V,A,re){return{label:V,textEdit:A,additionalTextEdits:re}}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&ee.string(A.label)&&(ee.undefined(A.textEdit)||L.is(A))&&(ee.undefined(A.additionalTextEdits)||ee.typedArray(A.additionalTextEdits,L.is))}F.is=J})(b=t.ColorPresentation||(t.ColorPresentation={}));var D;(function(F){F.Comment="comment",F.Imports="imports",F.Region="region"})(D=t.FoldingRangeKind||(t.FoldingRangeKind={}));var _;(function(F){function Y(V,A,re,ue,Ze,Ut){var Rt={startLine:V,endLine:A};return ee.defined(re)&&(Rt.startCharacter=re),ee.defined(ue)&&(Rt.endCharacter=ue),ee.defined(Ze)&&(Rt.kind=Ze),ee.defined(Ut)&&(Rt.collapsedText=Ut),Rt}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&ee.uinteger(A.startLine)&&ee.uinteger(A.startLine)&&(ee.undefined(A.startCharacter)||ee.uinteger(A.startCharacter))&&(ee.undefined(A.endCharacter)||ee.uinteger(A.endCharacter))&&(ee.undefined(A.kind)||ee.string(A.kind))}F.is=J})(_=t.FoldingRange||(t.FoldingRange={}));var k;(function(F){function Y(V,A){return{location:V,message:A}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&d.is(A.location)&&ee.string(A.message)}F.is=J})(k=t.DiagnosticRelatedInformation||(t.DiagnosticRelatedInformation={}));var T;(function(F){F.Error=1,F.Warning=2,F.Information=3,F.Hint=4})(T=t.DiagnosticSeverity||(t.DiagnosticSeverity={}));var S;(function(F){F.Unnecessary=1,F.Deprecated=2})(S=t.DiagnosticTag||(t.DiagnosticTag={}));var m;(function(F){function Y(J){var V=J;return ee.objectLiteral(V)&&ee.string(V.href)}F.is=Y})(m=t.CodeDescription||(t.CodeDescription={}));var w;(function(F){function Y(V,A,re,ue,Ze,Ut){var Rt={range:V,message:A};return ee.defined(re)&&(Rt.severity=re),ee.defined(ue)&&(Rt.code=ue),ee.defined(Ze)&&(Rt.source=Ze),ee.defined(Ut)&&(Rt.relatedInformation=Ut),Rt}F.create=Y;function J(V){var A,re=V;return ee.defined(re)&&l.is(re.range)&&ee.string(re.message)&&(ee.number(re.severity)||ee.undefined(re.severity))&&(ee.integer(re.code)||ee.string(re.code)||ee.undefined(re.code))&&(ee.undefined(re.codeDescription)||ee.string((A=re.codeDescription)===null||A===void 0?void 0:A.href))&&(ee.string(re.source)||ee.undefined(re.source))&&(ee.undefined(re.relatedInformation)||ee.typedArray(re.relatedInformation,k.is))}F.is=J})(w=t.Diagnostic||(t.Diagnostic={}));var x;(function(F){function Y(V,A){for(var re=[],ue=2;ue0&&(Ze.arguments=re),Ze}F.create=Y;function J(V){var A=V;return ee.defined(A)&&ee.string(A.title)&&ee.string(A.command)}F.is=J})(x=t.Command||(t.Command={}));var L;(function(F){function Y(re,ue){return{range:re,newText:ue}}F.replace=Y;function J(re,ue){return{range:{start:re,end:re},newText:ue}}F.insert=J;function V(re){return{range:re,newText:""}}F.del=V;function A(re){var ue=re;return ee.objectLiteral(ue)&&ee.string(ue.newText)&&l.is(ue.range)}F.is=A})(L=t.TextEdit||(t.TextEdit={}));var O;(function(F){function Y(V,A,re){var ue={label:V};return A!==void 0&&(ue.needsConfirmation=A),re!==void 0&&(ue.description=re),ue}F.create=Y;function J(V){var A=V;return ee.objectLiteral(A)&&ee.string(A.label)&&(ee.boolean(A.needsConfirmation)||A.needsConfirmation===void 0)&&(ee.string(A.description)||A.description===void 0)}F.is=J})(O=t.ChangeAnnotation||(t.ChangeAnnotation={}));var R;(function(F){function Y(J){var V=J;return ee.string(V)}F.is=Y})(R=t.ChangeAnnotationIdentifier||(t.ChangeAnnotationIdentifier={}));var M;(function(F){function Y(re,ue,Ze){return{range:re,newText:ue,annotationId:Ze}}F.replace=Y;function J(re,ue,Ze){return{range:{start:re,end:re},newText:ue,annotationId:Ze}}F.insert=J;function V(re,ue){return{range:re,newText:"",annotationId:ue}}F.del=V;function A(re){var ue=re;return L.is(ue)&&(O.is(ue.annotationId)||R.is(ue.annotationId))}F.is=A})(M=t.AnnotatedTextEdit||(t.AnnotatedTextEdit={}));var q;(function(F){function Y(V,A){return{textDocument:V,edits:A}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&He.is(A.textDocument)&&Array.isArray(A.edits)}F.is=J})(q=t.TextDocumentEdit||(t.TextDocumentEdit={}));var z;(function(F){function Y(V,A,re){var ue={kind:"create",uri:V};return A!==void 0&&(A.overwrite!==void 0||A.ignoreIfExists!==void 0)&&(ue.options=A),re!==void 0&&(ue.annotationId=re),ue}F.create=Y;function J(V){var A=V;return A&&A.kind==="create"&&ee.string(A.uri)&&(A.options===void 0||(A.options.overwrite===void 0||ee.boolean(A.options.overwrite))&&(A.options.ignoreIfExists===void 0||ee.boolean(A.options.ignoreIfExists)))&&(A.annotationId===void 0||R.is(A.annotationId))}F.is=J})(z=t.CreateFile||(t.CreateFile={}));var B;(function(F){function Y(V,A,re,ue){var Ze={kind:"rename",oldUri:V,newUri:A};return re!==void 0&&(re.overwrite!==void 0||re.ignoreIfExists!==void 0)&&(Ze.options=re),ue!==void 0&&(Ze.annotationId=ue),Ze}F.create=Y;function J(V){var A=V;return A&&A.kind==="rename"&&ee.string(A.oldUri)&&ee.string(A.newUri)&&(A.options===void 0||(A.options.overwrite===void 0||ee.boolean(A.options.overwrite))&&(A.options.ignoreIfExists===void 0||ee.boolean(A.options.ignoreIfExists)))&&(A.annotationId===void 0||R.is(A.annotationId))}F.is=J})(B=t.RenameFile||(t.RenameFile={}));var Q;(function(F){function Y(V,A,re){var ue={kind:"delete",uri:V};return A!==void 0&&(A.recursive!==void 0||A.ignoreIfNotExists!==void 0)&&(ue.options=A),re!==void 0&&(ue.annotationId=re),ue}F.create=Y;function J(V){var A=V;return A&&A.kind==="delete"&&ee.string(A.uri)&&(A.options===void 0||(A.options.recursive===void 0||ee.boolean(A.options.recursive))&&(A.options.ignoreIfNotExists===void 0||ee.boolean(A.options.ignoreIfNotExists)))&&(A.annotationId===void 0||R.is(A.annotationId))}F.is=J})(Q=t.DeleteFile||(t.DeleteFile={}));var P;(function(F){function Y(J){var V=J;return V&&(V.changes!==void 0||V.documentChanges!==void 0)&&(V.documentChanges===void 0||V.documentChanges.every(function(A){return ee.string(A.kind)?z.is(A)||B.is(A)||Q.is(A):q.is(A)}))}F.is=Y})(P=t.WorkspaceEdit||(t.WorkspaceEdit={}));var he=function(){function F(Y,J){this.edits=Y,this.changeAnnotations=J}return F.prototype.insert=function(Y,J,V){var A,re;if(V===void 0?A=L.insert(Y,J):R.is(V)?(re=V,A=M.insert(Y,J,V)):(this.assertChangeAnnotations(this.changeAnnotations),re=this.changeAnnotations.manage(V),A=M.insert(Y,J,re)),this.edits.push(A),re!==void 0)return re},F.prototype.replace=function(Y,J,V){var A,re;if(V===void 0?A=L.replace(Y,J):R.is(V)?(re=V,A=M.replace(Y,J,V)):(this.assertChangeAnnotations(this.changeAnnotations),re=this.changeAnnotations.manage(V),A=M.replace(Y,J,re)),this.edits.push(A),re!==void 0)return re},F.prototype.delete=function(Y,J){var V,A;if(J===void 0?V=L.del(Y):R.is(J)?(A=J,V=M.del(Y,J)):(this.assertChangeAnnotations(this.changeAnnotations),A=this.changeAnnotations.manage(J),V=M.del(Y,A)),this.edits.push(V),A!==void 0)return A},F.prototype.add=function(Y){this.edits.push(Y)},F.prototype.all=function(){return this.edits},F.prototype.clear=function(){this.edits.splice(0,this.edits.length)},F.prototype.assertChangeAnnotations=function(Y){if(Y===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},F}(),xe=function(){function F(Y){this._annotations=Y===void 0?Object.create(null):Y,this._counter=0,this._size=0}return F.prototype.all=function(){return this._annotations},Object.defineProperty(F.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),F.prototype.manage=function(Y,J){var V;if(R.is(Y)?V=Y:(V=this.nextId(),J=Y),this._annotations[V]!==void 0)throw new Error("Id ".concat(V," is already in use."));if(J===void 0)throw new Error("No annotation provided for id ".concat(V));return this._annotations[V]=J,this._size++,V},F.prototype.nextId=function(){return this._counter++,this._counter.toString()},F}(),ge=function(){function F(Y){var J=this;this._textEditChanges=Object.create(null),Y!==void 0?(this._workspaceEdit=Y,Y.documentChanges?(this._changeAnnotations=new xe(Y.changeAnnotations),Y.changeAnnotations=this._changeAnnotations.all(),Y.documentChanges.forEach(function(V){if(q.is(V)){var A=new he(V.edits,J._changeAnnotations);J._textEditChanges[V.textDocument.uri]=A}})):Y.changes&&Object.keys(Y.changes).forEach(function(V){var A=new he(Y.changes[V]);J._textEditChanges[V]=A})):this._workspaceEdit={}}return Object.defineProperty(F.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),F.prototype.getTextEditChange=function(Y){if(He.is(Y)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var J={uri:Y.uri,version:Y.version},V=this._textEditChanges[J.uri];if(!V){var A=[],re={textDocument:J,edits:A};this._workspaceEdit.documentChanges.push(re),V=new he(A,this._changeAnnotations),this._textEditChanges[J.uri]=V}return V}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var V=this._textEditChanges[Y];if(!V){var A=[];this._workspaceEdit.changes[Y]=A,V=new he(A),this._textEditChanges[Y]=V}return V}},F.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new xe,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},F.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},F.prototype.createFile=function(Y,J,V){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var A;O.is(J)||R.is(J)?A=J:V=J;var re,ue;if(A===void 0?re=z.create(Y,V):(ue=R.is(A)?A:this._changeAnnotations.manage(A),re=z.create(Y,V,ue)),this._workspaceEdit.documentChanges.push(re),ue!==void 0)return ue},F.prototype.renameFile=function(Y,J,V,A){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var re;O.is(V)||R.is(V)?re=V:A=V;var ue,Ze;if(re===void 0?ue=B.create(Y,J,A):(Ze=R.is(re)?re:this._changeAnnotations.manage(re),ue=B.create(Y,J,A,Ze)),this._workspaceEdit.documentChanges.push(ue),Ze!==void 0)return Ze},F.prototype.deleteFile=function(Y,J,V){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var A;O.is(J)||R.is(J)?A=J:V=J;var re,ue;if(A===void 0?re=Q.create(Y,V):(ue=R.is(A)?A:this._changeAnnotations.manage(A),re=Q.create(Y,V,ue)),this._workspaceEdit.documentChanges.push(re),ue!==void 0)return ue},F}();t.WorkspaceChange=ge;var Fe;(function(F){function Y(V){return{uri:V}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&ee.string(A.uri)}F.is=J})(Fe=t.TextDocumentIdentifier||(t.TextDocumentIdentifier={}));var Le;(function(F){function Y(V,A){return{uri:V,version:A}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&ee.string(A.uri)&&ee.integer(A.version)}F.is=J})(Le=t.VersionedTextDocumentIdentifier||(t.VersionedTextDocumentIdentifier={}));var He;(function(F){function Y(V,A){return{uri:V,version:A}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&ee.string(A.uri)&&(A.version===null||ee.integer(A.version))}F.is=J})(He=t.OptionalVersionedTextDocumentIdentifier||(t.OptionalVersionedTextDocumentIdentifier={}));var Xe;(function(F){function Y(V,A,re,ue){return{uri:V,languageId:A,version:re,text:ue}}F.create=Y;function J(V){var A=V;return ee.defined(A)&&ee.string(A.uri)&&ee.string(A.languageId)&&ee.integer(A.version)&&ee.string(A.text)}F.is=J})(Xe=t.TextDocumentItem||(t.TextDocumentItem={}));var Ve;(function(F){F.PlainText="plaintext",F.Markdown="markdown";function Y(J){var V=J;return V===F.PlainText||V===F.Markdown}F.is=Y})(Ve=t.MarkupKind||(t.MarkupKind={}));var At;(function(F){function Y(J){var V=J;return ee.objectLiteral(J)&&Ve.is(V.kind)&&ee.string(V.value)}F.is=Y})(At=t.MarkupContent||(t.MarkupContent={}));var Ot;(function(F){F.Text=1,F.Method=2,F.Function=3,F.Constructor=4,F.Field=5,F.Variable=6,F.Class=7,F.Interface=8,F.Module=9,F.Property=10,F.Unit=11,F.Value=12,F.Enum=13,F.Keyword=14,F.Snippet=15,F.Color=16,F.File=17,F.Reference=18,F.Folder=19,F.EnumMember=20,F.Constant=21,F.Struct=22,F.Event=23,F.Operator=24,F.TypeParameter=25})(Ot=t.CompletionItemKind||(t.CompletionItemKind={}));var Ie;(function(F){F.PlainText=1,F.Snippet=2})(Ie=t.InsertTextFormat||(t.InsertTextFormat={}));var te;(function(F){F.Deprecated=1})(te=t.CompletionItemTag||(t.CompletionItemTag={}));var ce;(function(F){function Y(V,A,re){return{newText:V,insert:A,replace:re}}F.create=Y;function J(V){var A=V;return A&&ee.string(A.newText)&&l.is(A.insert)&&l.is(A.replace)}F.is=J})(ce=t.InsertReplaceEdit||(t.InsertReplaceEdit={}));var we;(function(F){F.asIs=1,F.adjustIndentation=2})(we=t.InsertTextMode||(t.InsertTextMode={}));var ot;(function(F){function Y(J){var V=J;return V&&(ee.string(V.detail)||V.detail===void 0)&&(ee.string(V.description)||V.description===void 0)}F.is=Y})(ot=t.CompletionItemLabelDetails||(t.CompletionItemLabelDetails={}));var Me;(function(F){function Y(J){return{label:J}}F.create=Y})(Me=t.CompletionItem||(t.CompletionItem={}));var Qe;(function(F){function Y(J,V){return{items:J||[],isIncomplete:!!V}}F.create=Y})(Qe=t.CompletionList||(t.CompletionList={}));var ze;(function(F){function Y(V){return V.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}F.fromPlainText=Y;function J(V){var A=V;return ee.string(A)||ee.objectLiteral(A)&&ee.string(A.language)&&ee.string(A.value)}F.is=J})(ze=t.MarkedString||(t.MarkedString={}));var mt;(function(F){function Y(J){var V=J;return!!V&&ee.objectLiteral(V)&&(At.is(V.contents)||ze.is(V.contents)||ee.typedArray(V.contents,ze.is))&&(J.range===void 0||l.is(J.range))}F.is=Y})(mt=t.Hover||(t.Hover={}));var oe;(function(F){function Y(J,V){return V?{label:J,documentation:V}:{label:J}}F.create=Y})(oe=t.ParameterInformation||(t.ParameterInformation={}));var me;(function(F){function Y(J,V){for(var A=[],re=2;re=0;en--){var Er=It[en],_r=te.offsetAt(Er.range.start),He=te.offsetAt(Er.range.end);if(He<=kt)Qe=Qe.substring(0,_r)+Er.newText+Qe.substring(He,Qe.length);else throw new Error("Overlapping edit");kt=_r}return Qe}P.applyEdits=B;function I(te,ie){if(te.length<=1)return te;var Qe=te.length/2|0,It=te.slice(0,Qe),kt=te.slice(Qe);I(It,ie),I(kt,ie);for(var en=0,Er=0,_r=0;en0&&Y.push(J.length),this._lineOffsets=Y}return this._lineOffsets},P.prototype.positionAt=function(Y){Y=Math.max(Math.min(Y,this._content.length),0);var J=this.getLineOffsets(),B=0,I=J.length;if(I===0)return s.create(0,Y);for(;BY?I=te:B=te+1}var ie=B-1;return s.create(ie,Y-J[ie])},P.prototype.offsetAt=function(Y){var J=this.getLineOffsets();if(Y.line>=J.length)return this._content.length;if(Y.line<0)return 0;var B=J[Y.line],I=Y.line+1{"use strict";Object.defineProperty(UD,"__esModule",{value:!0});var $P=class{constructor(t){this.getStartOfToken=()=>this._start,this.getCurrentPosition=()=>this._pos,this.eol=()=>this._sourceText.length===this._pos,this.sol=()=>this._pos===0,this.peek=()=>this._sourceText.charAt(this._pos)?this._sourceText.charAt(this._pos):null,this.next=()=>{let r=this._sourceText.charAt(this._pos);return this._pos++,r},this.eat=r=>{if(this._testNextCharacter(r))return this._start=this._pos,this._pos++,this._sourceText.charAt(this._pos-1)},this.eatWhile=r=>{let n=this._testNextCharacter(r),a=!1;for(n&&(a=n,this._start=this._pos);n;)this._pos++,n=this._testNextCharacter(r),a=!0;return a},this.eatSpace=()=>this.eatWhile(/[\s\u00a0]/),this.skipToEnd=()=>{this._pos=this._sourceText.length},this.skipTo=r=>{this._pos=r},this.match=(r,n=!0,a=!1)=>{let o=null,s=null;return typeof r=="string"?(s=new RegExp(r,a?"i":"g").test(this._sourceText.substr(this._pos,r.length)),o=r):r instanceof RegExp&&(s=this._sourceText.slice(this._pos).match(r),o=s==null?void 0:s[0]),s!=null&&(typeof r=="string"||s instanceof Array&&this._sourceText.startsWith(s[0],this._pos))?(n&&(this._start=this._pos,o&&o.length&&(this._pos+=o.length)),s):!1},this.backUp=r=>{this._pos-=r},this.column=()=>this._pos,this.indentation=()=>{let r=this._sourceText.match(/\s*/),n=0;if(r&&r.length!==0){let a=r[0],o=0;for(;a.length>o;)a.charCodeAt(o)===9?n+=2:n++,o++}return n},this.current=()=>this._sourceText.slice(this._start,this._pos),this._start=0,this._pos=0,this._sourceText=t}_testNextCharacter(t){let r=this._sourceText.charAt(this._pos),n=!1;return typeof t=="string"?n=r===t:n=t instanceof RegExp?t.test(r):t(r),n}};UD.default=$P});var GD=U(Pi=>{"use strict";Object.defineProperty(Pi,"__esModule",{value:!0});Pi.p=Pi.t=Pi.butNot=Pi.list=Pi.opt=void 0;function dX(e){return{ofRule:e}}Pi.opt=dX;function pX(e,t){return{ofRule:e,isList:!0,separator:t}}Pi.list=pX;function hX(e,t){let r=e.match;return e.match=n=>{let a=!1;return r&&(a=r(n)),a&&t.every(o=>o.match&&!o.match(n))},e}Pi.butNot=hX;function vX(e,t){return{style:t,match:r=>r.kind===e}}Pi.t=vX;function gX(e,t){return{style:t||"punctuation",match:r=>r.kind==="Punctuation"&&r.value===e}}Pi.p=gX});var QD=U(bu=>{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.ParseRules=bu.LexRules=bu.isIgnored=void 0;var se=GD(),mX=ct(),yX=e=>e===" "||e===" "||e===","||e===` -`||e==="\r"||e==="\uFEFF"||e==="\xA0";bu.isIgnored=yX;bu.LexRules={Name:/^[_A-Za-z][_0-9A-Za-z]*/,Punctuation:/^(?:!|\$|\(|\)|\.\.\.|:|=|&|@|\[|]|\{|\||\})/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^(?:"""(?:\\"""|[^"]|"[^"]|""[^"])*(?:""")?|"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?)/,Comment:/^#.*/};bu.ParseRules={Document:[(0,se.list)("Definition")],Definition(e){switch(e.value){case"{":return"ShortQuery";case"query":return"Query";case"mutation":return"Mutation";case"subscription":return"Subscription";case"fragment":return mX.Kind.FRAGMENT_DEFINITION;case"schema":return"SchemaDef";case"scalar":return"ScalarDef";case"type":return"ObjectTypeDef";case"interface":return"InterfaceDef";case"union":return"UnionDef";case"enum":return"EnumDef";case"input":return"InputDef";case"extend":return"ExtendDef";case"directive":return"DirectiveDef"}},ShortQuery:["SelectionSet"],Query:[ln("query"),(0,se.opt)(Kt("def")),(0,se.opt)("VariableDefinitions"),(0,se.list)("Directive"),"SelectionSet"],Mutation:[ln("mutation"),(0,se.opt)(Kt("def")),(0,se.opt)("VariableDefinitions"),(0,se.list)("Directive"),"SelectionSet"],Subscription:[ln("subscription"),(0,se.opt)(Kt("def")),(0,se.opt)("VariableDefinitions"),(0,se.list)("Directive"),"SelectionSet"],VariableDefinitions:[(0,se.p)("("),(0,se.list)("VariableDefinition"),(0,se.p)(")")],VariableDefinition:["Variable",(0,se.p)(":"),"Type",(0,se.opt)("DefaultValue")],Variable:[(0,se.p)("$","variable"),Kt("variable")],DefaultValue:[(0,se.p)("="),"Value"],SelectionSet:[(0,se.p)("{"),(0,se.list)("Selection"),(0,se.p)("}")],Selection(e,t){return e.value==="..."?t.match(/[\s\u00a0,]*(on\b|@|{)/,!1)?"InlineFragment":"FragmentSpread":t.match(/[\s\u00a0,]*:/,!1)?"AliasedField":"Field"},AliasedField:[Kt("property"),(0,se.p)(":"),Kt("qualifier"),(0,se.opt)("Arguments"),(0,se.list)("Directive"),(0,se.opt)("SelectionSet")],Field:[Kt("property"),(0,se.opt)("Arguments"),(0,se.list)("Directive"),(0,se.opt)("SelectionSet")],Arguments:[(0,se.p)("("),(0,se.list)("Argument"),(0,se.p)(")")],Argument:[Kt("attribute"),(0,se.p)(":"),"Value"],FragmentSpread:[(0,se.p)("..."),Kt("def"),(0,se.list)("Directive")],InlineFragment:[(0,se.p)("..."),(0,se.opt)("TypeCondition"),(0,se.list)("Directive"),"SelectionSet"],FragmentDefinition:[ln("fragment"),(0,se.opt)((0,se.butNot)(Kt("def"),[ln("on")])),"TypeCondition",(0,se.list)("Directive"),"SelectionSet"],TypeCondition:[ln("on"),"NamedType"],Value(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue";case"$":return"Variable";case"&":return"NamedType"}return null;case"Name":switch(e.value){case"true":case"false":return"BooleanValue"}return e.value==="null"?"NullValue":"EnumValue"}},NumberValue:[(0,se.t)("Number","number")],StringValue:[{style:"string",match:e=>e.kind==="String",update(e,t){t.value.startsWith('"""')&&(e.inBlockstring=!t.value.slice(3).endsWith('"""'))}}],BooleanValue:[(0,se.t)("Name","builtin")],NullValue:[(0,se.t)("Name","keyword")],EnumValue:[Kt("string-2")],ListValue:[(0,se.p)("["),(0,se.list)("Value"),(0,se.p)("]")],ObjectValue:[(0,se.p)("{"),(0,se.list)("ObjectField"),(0,se.p)("}")],ObjectField:[Kt("attribute"),(0,se.p)(":"),"Value"],Type(e){return e.value==="["?"ListType":"NonNullType"},ListType:[(0,se.p)("["),"Type",(0,se.p)("]"),(0,se.opt)((0,se.p)("!"))],NonNullType:["NamedType",(0,se.opt)((0,se.p)("!"))],NamedType:[bX("atom")],Directive:[(0,se.p)("@","meta"),Kt("meta"),(0,se.opt)("Arguments")],DirectiveDef:[ln("directive"),(0,se.p)("@","meta"),Kt("meta"),(0,se.opt)("ArgumentsDef"),ln("on"),(0,se.list)("DirectiveLocation",(0,se.p)("|"))],InterfaceDef:[ln("interface"),Kt("atom"),(0,se.opt)("Implements"),(0,se.list)("Directive"),(0,se.p)("{"),(0,se.list)("FieldDef"),(0,se.p)("}")],Implements:[ln("implements"),(0,se.list)("NamedType",(0,se.p)("&"))],DirectiveLocation:[Kt("string-2")],SchemaDef:[ln("schema"),(0,se.list)("Directive"),(0,se.p)("{"),(0,se.list)("OperationTypeDef"),(0,se.p)("}")],OperationTypeDef:[Kt("keyword"),(0,se.p)(":"),Kt("atom")],ScalarDef:[ln("scalar"),Kt("atom"),(0,se.list)("Directive")],ObjectTypeDef:[ln("type"),Kt("atom"),(0,se.opt)("Implements"),(0,se.list)("Directive"),(0,se.p)("{"),(0,se.list)("FieldDef"),(0,se.p)("}")],FieldDef:[Kt("property"),(0,se.opt)("ArgumentsDef"),(0,se.p)(":"),"Type",(0,se.list)("Directive")],ArgumentsDef:[(0,se.p)("("),(0,se.list)("InputValueDef"),(0,se.p)(")")],InputValueDef:[Kt("attribute"),(0,se.p)(":"),"Type",(0,se.opt)("DefaultValue"),(0,se.list)("Directive")],UnionDef:[ln("union"),Kt("atom"),(0,se.list)("Directive"),(0,se.p)("="),(0,se.list)("UnionMember",(0,se.p)("|"))],UnionMember:["NamedType"],EnumDef:[ln("enum"),Kt("atom"),(0,se.list)("Directive"),(0,se.p)("{"),(0,se.list)("EnumValueDef"),(0,se.p)("}")],EnumValueDef:[Kt("string-2"),(0,se.list)("Directive")],InputDef:[ln("input"),Kt("atom"),(0,se.list)("Directive"),(0,se.p)("{"),(0,se.list)("InputValueDef"),(0,se.p)("}")],ExtendDef:[ln("extend"),"ObjectTypeDef"]};function ln(e){return{style:"keyword",match:t=>t.kind==="Name"&&t.value===e}}function Kt(e){return{style:e,match:t=>t.kind==="Name",update(t,r){t.name=r.value}}}function bX(e){return{style:e,match:t=>t.kind==="Name",update(t,r){var n;((n=t.prevState)===null||n===void 0?void 0:n.prevState)&&(t.name=r.value,t.prevState.prevState.type=r.value)}}}});var nM=U(YD=>{"use strict";Object.defineProperty(YD,"__esModule",{value:!0});var KD=QD(),TX=ct();function EX(e={eatWhitespace:t=>t.eatWhile(KD.isIgnored),lexRules:KD.LexRules,parseRules:KD.ParseRules,editorConfig:{}}){return{startState(){let t={level:0,step:0,name:null,kind:null,type:null,rule:null,needsSeperator:!1,prevState:null};return Ep(e.parseRules,t,TX.Kind.DOCUMENT),t},token(t,r){return _X(t,r,e)}}}YD.default=EX;function _X(e,t,r){var n;if(t.inBlockstring)return e.match(/.*"""/)?(t.inBlockstring=!1,"string"):(e.skipToEnd(),"string");let{lexRules:a,parseRules:o,eatWhitespace:s,editorConfig:l}=r;if(t.rule&&t.rule.length===0?zD(t):t.needsAdvance&&(t.needsAdvance=!1,WD(t,!0)),e.sol()){let v=(l==null?void 0:l.tabSize)||2;t.indentLevel=Math.floor(e.indentation()/v)}if(s(e))return"ws";let d=DX(a,e);if(!d)return e.match(/\S+/)||e.match(/\s/),Ep(HD,t,"Invalid"),"invalidchar";if(d.kind==="Comment")return Ep(HD,t,"Comment"),"comment";let h=tM({},t);if(d.kind==="Punctuation"){if(/^[{([]/.test(d.value))t.indentLevel!==void 0&&(t.levels=(t.levels||[]).concat(t.indentLevel+1));else if(/^[})\]]/.test(d.value)){let v=t.levels=(t.levels||[]).slice(0,-1);t.indentLevel&&v.length>0&&v[v.length-1]{"use strict";Object.defineProperty(Ss,"__esModule",{value:!0});Ss.RuleKinds=Ss.AdditionalRuleKinds=void 0;var kX=ct();Ss.AdditionalRuleKinds={ALIASED_FIELD:"AliasedField",ARGUMENTS:"Arguments",SHORT_QUERY:"ShortQuery",QUERY:"Query",MUTATION:"Mutation",SUBSCRIPTION:"Subscription",TYPE_CONDITION:"TypeCondition",INVALID:"Invalid",COMMENT:"Comment",SCHEMA_DEF:"SchemaDef",SCALAR_DEF:"ScalarDef",OBJECT_TYPE_DEF:"ObjectTypeDef",OBJECT_VALUE:"ObjectValue",LIST_VALUE:"ListValue",INTERFACE_DEF:"InterfaceDef",UNION_DEF:"UnionDef",ENUM_DEF:"EnumDef",ENUM_VALUE:"EnumValue",FIELD_DEF:"FieldDef",INPUT_DEF:"InputDef",INPUT_VALUE_DEF:"InputValueDef",ARGUMENTS_DEF:"ArgumentsDef",EXTEND_DEF:"ExtendDef",DIRECTIVE_DEF:"DirectiveDef",IMPLEMENTS:"Implements",VARIABLE_DEFINITIONS:"VariableDefinitions",TYPE:"Type"};Ss.RuleKinds=Object.assign(Object.assign({},kX.Kind),Ss.AdditionalRuleKinds)});var Am=U(jt=>{"use strict";var OX=jt&&jt.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,a)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),CX=jt&&jt.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&OX(t,e,r)},aM=jt&&jt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(jt,"__esModule",{value:!0});jt.onlineParser=jt.t=jt.p=jt.opt=jt.list=jt.butNot=jt.isIgnored=jt.ParseRules=jt.LexRules=jt.CharacterStream=void 0;var wX=eM();Object.defineProperty(jt,"CharacterStream",{enumerable:!0,get:function(){return aM(wX).default}});var JD=QD();Object.defineProperty(jt,"LexRules",{enumerable:!0,get:function(){return JD.LexRules}});Object.defineProperty(jt,"ParseRules",{enumerable:!0,get:function(){return JD.ParseRules}});Object.defineProperty(jt,"isIgnored",{enumerable:!0,get:function(){return JD.isIgnored}});var _p=GD();Object.defineProperty(jt,"butNot",{enumerable:!0,get:function(){return _p.butNot}});Object.defineProperty(jt,"list",{enumerable:!0,get:function(){return _p.list}});Object.defineProperty(jt,"opt",{enumerable:!0,get:function(){return _p.opt}});Object.defineProperty(jt,"p",{enumerable:!0,get:function(){return _p.p}});Object.defineProperty(jt,"t",{enumerable:!0,get:function(){return _p.t}});var AX=nM();Object.defineProperty(jt,"onlineParser",{enumerable:!0,get:function(){return aM(AX).default}});CX(iM(),jt)});var ZD=U(Cr=>{"use strict";Object.defineProperty(Cr,"__esModule",{value:!0});Cr.getTypeInfo=Cr.canUseDirective=Cr.runOnlineParser=Cr.getTokenAtPosition=Cr.getFragmentDefinitions=Cr.getVariableCompletions=Cr.getAutocompleteSuggestions=Cr.SuggestionCommand=void 0;var Ur=ZP(),xt=ct(),mt=ct(),ye=Am(),ur=VD();Cr.SuggestionCommand={command:"editor.action.triggerSuggest",title:"Suggestions"};var NX=e=>{let t=[];if(e)try{(0,mt.visit)((0,mt.parse)(e),{FragmentDefinition(r){t.push(r)}})}catch(r){return[]}return t};function LX(e,t,r,n,a,o){var s;let l=Object.assign(Object.assign({},o),{schema:e}),d=n||uM(t,r),h=d.state.kind==="Invalid"?d.state.prevState:d.state;if(!h)return[];let v=h.kind,b=h.step,T=lM(e,d.state);if(v===ye.RuleKinds.DOCUMENT)return(0,ur.hintList)(d,[{label:"query",kind:Ur.CompletionItemKind.Function},{label:"mutation",kind:Ur.CompletionItemKind.Function},{label:"subscription",kind:Ur.CompletionItemKind.Function},{label:"fragment",kind:Ur.CompletionItemKind.Function},{label:"{",kind:Ur.CompletionItemKind.Constructor}]);if(v===ye.RuleKinds.IMPLEMENTS||v===ye.RuleKinds.NAMED_TYPE&&((s=h.prevState)===null||s===void 0?void 0:s.kind)===ye.RuleKinds.IMPLEMENTS)return FX(d,h,e,t,T);if(v===ye.RuleKinds.SELECTION_SET||v===ye.RuleKinds.FIELD||v===ye.RuleKinds.ALIASED_FIELD)return IX(d,T,l);if(v===ye.RuleKinds.ARGUMENTS||v===ye.RuleKinds.ARGUMENT&&b===0){let A=T.argDefs;if(A)return(0,ur.hintList)(d,A.map(L=>{var S;return{label:L.name,insertText:L.name+": ",command:Cr.SuggestionCommand,detail:String(L.type),documentation:(S=L.description)!==null&&S!==void 0?S:void 0,kind:Ur.CompletionItemKind.Variable,type:L.type}}))}if((v===ye.RuleKinds.OBJECT_VALUE||v===ye.RuleKinds.OBJECT_FIELD&&b===0)&&T.objectFieldDefs){let A=(0,ur.objectValues)(T.objectFieldDefs),L=v===ye.RuleKinds.OBJECT_VALUE?Ur.CompletionItemKind.Value:Ur.CompletionItemKind.Field;return(0,ur.hintList)(d,A.map(S=>{var y;return{label:S.name,detail:String(S.type),documentation:(y=S.description)!==null&&y!==void 0?y:void 0,kind:L,type:S.type}}))}if(v===ye.RuleKinds.ENUM_VALUE||v===ye.RuleKinds.LIST_VALUE&&b===1||v===ye.RuleKinds.OBJECT_FIELD&&b===2||v===ye.RuleKinds.ARGUMENT&&b===2)return RX(d,T,t,e);if(v===ye.RuleKinds.VARIABLE&&b===1){let A=(0,mt.getNamedType)(T.inputType),L=XD(t,e,d);return(0,ur.hintList)(d,L.filter(S=>S.detail===(A==null?void 0:A.name)))}return v===ye.RuleKinds.TYPE_CONDITION&&b===1||v===ye.RuleKinds.NAMED_TYPE&&h.prevState!=null&&h.prevState.kind===ye.RuleKinds.TYPE_CONDITION?jX(d,T,e,v):v===ye.RuleKinds.FRAGMENT_SPREAD&&b===1?PX(d,T,e,t,Array.isArray(a)?a:NX(a)):v===ye.RuleKinds.VARIABLE_DEFINITION&&b===2||v===ye.RuleKinds.LIST_TYPE&&b===1||v===ye.RuleKinds.NAMED_TYPE&&h.prevState&&(h.prevState.kind===ye.RuleKinds.VARIABLE_DEFINITION||h.prevState.kind===ye.RuleKinds.LIST_TYPE||h.prevState.kind===ye.RuleKinds.NON_NULL_TYPE)?qX(d,e,v):v===ye.RuleKinds.DIRECTIVE?BX(d,h,e,v):[]}Cr.getAutocompleteSuggestions=LX;var Nm=` { +`,"\r"];var on;(function(F){function Y(re,ue,Ze,Ut){return new un(re,ue,Ze,Ut)}F.create=Y;function J(re){var ue=re;return!!(ee.defined(ue)&&ee.string(ue.uri)&&(ee.undefined(ue.languageId)||ee.string(ue.languageId))&&ee.uinteger(ue.lineCount)&&ee.func(ue.getText)&&ee.func(ue.positionAt)&&ee.func(ue.offsetAt))}F.is=J;function V(re,ue){for(var Ze=re.getText(),Ut=A(ue,function(sa,Cn){var la=sa.range.start.line-Cn.range.start.line;return la===0?sa.range.start.character-Cn.range.start.character:la}),Rt=Ze.length,vn=Ut.length-1;vn>=0;vn--){var Rr=Ut[vn],jr=re.offsetAt(Rr.range.start),et=re.offsetAt(Rr.range.end);if(et<=Rt)Ze=Ze.substring(0,jr)+Rr.newText+Ze.substring(et,Ze.length);else throw new Error("Overlapping edit");Rt=jr}return Ze}F.applyEdits=V;function A(re,ue){if(re.length<=1)return re;var Ze=re.length/2|0,Ut=re.slice(0,Ze),Rt=re.slice(Ze);A(Ut,ue),A(Rt,ue);for(var vn=0,Rr=0,jr=0;vn0&&Y.push(J.length),this._lineOffsets=Y}return this._lineOffsets},F.prototype.positionAt=function(Y){Y=Math.max(Math.min(Y,this._content.length),0);var J=this.getLineOffsets(),V=0,A=J.length;if(A===0)return s.create(0,Y);for(;VY?A=re:V=re+1}var ue=V-1;return s.create(ue,Y-J[ue])},F.prototype.offsetAt=function(Y){var J=this.getLineOffsets();if(Y.line>=J.length)return this._content.length;if(Y.line<0)return 0;var V=J[Y.line],A=Y.line+1{"use strict";Object.defineProperty(BO,"__esModule",{value:!0});var iU=class{constructor(t){this.getStartOfToken=()=>this._start,this.getCurrentPosition=()=>this._pos,this.eol=()=>this._sourceText.length===this._pos,this.sol=()=>this._pos===0,this.peek=()=>this._sourceText.charAt(this._pos)?this._sourceText.charAt(this._pos):null,this.next=()=>{let r=this._sourceText.charAt(this._pos);return this._pos++,r},this.eat=r=>{if(this._testNextCharacter(r))return this._start=this._pos,this._pos++,this._sourceText.charAt(this._pos-1)},this.eatWhile=r=>{let n=this._testNextCharacter(r),i=!1;for(n&&(i=n,this._start=this._pos);n;)this._pos++,n=this._testNextCharacter(r),i=!0;return i},this.eatSpace=()=>this.eatWhile(/[\s\u00a0]/),this.skipToEnd=()=>{this._pos=this._sourceText.length},this.skipTo=r=>{this._pos=r},this.match=(r,n=!0,i=!1)=>{let o=null,s=null;return typeof r=="string"?(s=new RegExp(r,i?"i":"g").test(this._sourceText.substr(this._pos,r.length)),o=r):r instanceof RegExp&&(s=this._sourceText.slice(this._pos).match(r),o=s==null?void 0:s[0]),s!=null&&(typeof r=="string"||s instanceof Array&&this._sourceText.startsWith(s[0],this._pos))?(n&&(this._start=this._pos,o&&o.length&&(this._pos+=o.length)),s):!1},this.backUp=r=>{this._pos-=r},this.column=()=>this._pos,this.indentation=()=>{let r=this._sourceText.match(/\s*/),n=0;if(r&&r.length!==0){let i=r[0],o=0;for(;i.length>o;)i.charCodeAt(o)===9?n+=2:n++,o++}return n},this.current=()=>this._sourceText.slice(this._start,this._pos),this._start=0,this._pos=0,this._sourceText=t}_testNextCharacter(t){let r=this._sourceText.charAt(this._pos),n=!1;return typeof t=="string"?n=r===t:n=t instanceof RegExp?t.test(r):t(r),n}};BO.default=iU});var KO=G(ta=>{"use strict";Object.defineProperty(ta,"__esModule",{value:!0});ta.p=ta.t=ta.butNot=ta.list=ta.opt=void 0;function nee(e){return{ofRule:e}}ta.opt=nee;function iee(e,t){return{ofRule:e,isList:!0,separator:t}}ta.list=iee;function aee(e,t){let r=e.match;return e.match=n=>{let i=!1;return r&&(i=r(n)),i&&t.every(o=>o.match&&!o.match(n))},e}ta.butNot=aee;function oee(e,t){return{style:t,match:r=>r.kind===e}}ta.t=oee;function uee(e,t){return{style:t||"punctuation",match:r=>r.kind==="Punctuation"&&r.value===e}}ta.p=uee});var HO=G(ju=>{"use strict";Object.defineProperty(ju,"__esModule",{value:!0});ju.ParseRules=ju.LexRules=ju.isIgnored=void 0;var de=KO(),see=ht(),lee=e=>e===" "||e===" "||e===","||e===` +`||e==="\r"||e==="\uFEFF"||e==="\xA0";ju.isIgnored=lee;ju.LexRules={Name:/^[_A-Za-z][_0-9A-Za-z]*/,Punctuation:/^(?:!|\$|\(|\)|\.\.\.|:|=|&|@|\[|]|\{|\||\})/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^(?:"""(?:\\"""|[^"]|"[^"]|""[^"])*(?:""")?|"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?)/,Comment:/^#.*/};ju.ParseRules={Document:[(0,de.list)("Definition")],Definition(e){switch(e.value){case"{":return"ShortQuery";case"query":return"Query";case"mutation":return"Mutation";case"subscription":return"Subscription";case"fragment":return see.Kind.FRAGMENT_DEFINITION;case"schema":return"SchemaDef";case"scalar":return"ScalarDef";case"type":return"ObjectTypeDef";case"interface":return"InterfaceDef";case"union":return"UnionDef";case"enum":return"EnumDef";case"input":return"InputDef";case"extend":return"ExtendDef";case"directive":return"DirectiveDef"}},ShortQuery:["SelectionSet"],Query:[kn("query"),(0,de.opt)(tr("def")),(0,de.opt)("VariableDefinitions"),(0,de.list)("Directive"),"SelectionSet"],Mutation:[kn("mutation"),(0,de.opt)(tr("def")),(0,de.opt)("VariableDefinitions"),(0,de.list)("Directive"),"SelectionSet"],Subscription:[kn("subscription"),(0,de.opt)(tr("def")),(0,de.opt)("VariableDefinitions"),(0,de.list)("Directive"),"SelectionSet"],VariableDefinitions:[(0,de.p)("("),(0,de.list)("VariableDefinition"),(0,de.p)(")")],VariableDefinition:["Variable",(0,de.p)(":"),"Type",(0,de.opt)("DefaultValue")],Variable:[(0,de.p)("$","variable"),tr("variable")],DefaultValue:[(0,de.p)("="),"Value"],SelectionSet:[(0,de.p)("{"),(0,de.list)("Selection"),(0,de.p)("}")],Selection(e,t){return e.value==="..."?t.match(/[\s\u00a0,]*(on\b|@|{)/,!1)?"InlineFragment":"FragmentSpread":t.match(/[\s\u00a0,]*:/,!1)?"AliasedField":"Field"},AliasedField:[tr("property"),(0,de.p)(":"),tr("qualifier"),(0,de.opt)("Arguments"),(0,de.list)("Directive"),(0,de.opt)("SelectionSet")],Field:[tr("property"),(0,de.opt)("Arguments"),(0,de.list)("Directive"),(0,de.opt)("SelectionSet")],Arguments:[(0,de.p)("("),(0,de.list)("Argument"),(0,de.p)(")")],Argument:[tr("attribute"),(0,de.p)(":"),"Value"],FragmentSpread:[(0,de.p)("..."),tr("def"),(0,de.list)("Directive")],InlineFragment:[(0,de.p)("..."),(0,de.opt)("TypeCondition"),(0,de.list)("Directive"),"SelectionSet"],FragmentDefinition:[kn("fragment"),(0,de.opt)((0,de.butNot)(tr("def"),[kn("on")])),"TypeCondition",(0,de.list)("Directive"),"SelectionSet"],TypeCondition:[kn("on"),"NamedType"],Value(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue";case"$":return"Variable";case"&":return"NamedType"}return null;case"Name":switch(e.value){case"true":case"false":return"BooleanValue"}return e.value==="null"?"NullValue":"EnumValue"}},NumberValue:[(0,de.t)("Number","number")],StringValue:[{style:"string",match:e=>e.kind==="String",update(e,t){t.value.startsWith('"""')&&(e.inBlockstring=!t.value.slice(3).endsWith('"""'))}}],BooleanValue:[(0,de.t)("Name","builtin")],NullValue:[(0,de.t)("Name","keyword")],EnumValue:[tr("string-2")],ListValue:[(0,de.p)("["),(0,de.list)("Value"),(0,de.p)("]")],ObjectValue:[(0,de.p)("{"),(0,de.list)("ObjectField"),(0,de.p)("}")],ObjectField:[tr("attribute"),(0,de.p)(":"),"Value"],Type(e){return e.value==="["?"ListType":"NonNullType"},ListType:[(0,de.p)("["),"Type",(0,de.p)("]"),(0,de.opt)((0,de.p)("!"))],NonNullType:["NamedType",(0,de.opt)((0,de.p)("!"))],NamedType:[cee("atom")],Directive:[(0,de.p)("@","meta"),tr("meta"),(0,de.opt)("Arguments")],DirectiveDef:[kn("directive"),(0,de.p)("@","meta"),tr("meta"),(0,de.opt)("ArgumentsDef"),kn("on"),(0,de.list)("DirectiveLocation",(0,de.p)("|"))],InterfaceDef:[kn("interface"),tr("atom"),(0,de.opt)("Implements"),(0,de.list)("Directive"),(0,de.p)("{"),(0,de.list)("FieldDef"),(0,de.p)("}")],Implements:[kn("implements"),(0,de.list)("NamedType",(0,de.p)("&"))],DirectiveLocation:[tr("string-2")],SchemaDef:[kn("schema"),(0,de.list)("Directive"),(0,de.p)("{"),(0,de.list)("OperationTypeDef"),(0,de.p)("}")],OperationTypeDef:[tr("keyword"),(0,de.p)(":"),tr("atom")],ScalarDef:[kn("scalar"),tr("atom"),(0,de.list)("Directive")],ObjectTypeDef:[kn("type"),tr("atom"),(0,de.opt)("Implements"),(0,de.list)("Directive"),(0,de.p)("{"),(0,de.list)("FieldDef"),(0,de.p)("}")],FieldDef:[tr("property"),(0,de.opt)("ArgumentsDef"),(0,de.p)(":"),"Type",(0,de.list)("Directive")],ArgumentsDef:[(0,de.p)("("),(0,de.list)("InputValueDef"),(0,de.p)(")")],InputValueDef:[tr("attribute"),(0,de.p)(":"),"Type",(0,de.opt)("DefaultValue"),(0,de.list)("Directive")],UnionDef:[kn("union"),tr("atom"),(0,de.list)("Directive"),(0,de.p)("="),(0,de.list)("UnionMember",(0,de.p)("|"))],UnionMember:["NamedType"],EnumDef:[kn("enum"),tr("atom"),(0,de.list)("Directive"),(0,de.p)("{"),(0,de.list)("EnumValueDef"),(0,de.p)("}")],EnumValueDef:[tr("string-2"),(0,de.list)("Directive")],InputDef:[kn("input"),tr("atom"),(0,de.list)("Directive"),(0,de.p)("{"),(0,de.list)("InputValueDef"),(0,de.p)("}")],ExtendDef:[kn("extend"),"ObjectTypeDef"]};function kn(e){return{style:"keyword",match:t=>t.kind==="Name"&&t.value===e}}function tr(e){return{style:e,match:t=>t.kind==="Name",update(t,r){t.name=r.value}}}function cee(e){return{style:e,match:t=>t.kind==="Name",update(t,r){var n;((n=t.prevState)===null||n===void 0?void 0:n.prevState)&&(t.name=r.value,t.prevState.prevState.type=r.value)}}}});var sU=G(XO=>{"use strict";Object.defineProperty(XO,"__esModule",{value:!0});var zO=HO(),fee=ht();function dee(e={eatWhitespace:t=>t.eatWhile(zO.isIgnored),lexRules:zO.LexRules,parseRules:zO.ParseRules,editorConfig:{}}){return{startState(){let t={level:0,step:0,name:null,kind:null,type:null,rule:null,needsSeperator:!1,prevState:null};return Up(e.parseRules,t,fee.Kind.DOCUMENT),t},token(t,r){return pee(t,r,e)}}}XO.default=dee;function pee(e,t,r){var n;if(t.inBlockstring)return e.match(/.*"""/)?(t.inBlockstring=!1,"string"):(e.skipToEnd(),"string");let{lexRules:i,parseRules:o,eatWhitespace:s,editorConfig:l}=r;if(t.rule&&t.rule.length===0?YO(t):t.needsAdvance&&(t.needsAdvance=!1,JO(t,!0)),e.sol()){let v=(l==null?void 0:l.tabSize)||2;t.indentLevel=Math.floor(e.indentation()/v)}if(s(e))return"ws";let d=vee(i,e);if(!d)return e.match(/\S+/)||e.match(/\s/),Up(WO,t,"Invalid"),"invalidchar";if(d.kind==="Comment")return Up(WO,t,"Comment"),"comment";let h=oU({},t);if(d.kind==="Punctuation"){if(/^[{([]/.test(d.value))t.indentLevel!==void 0&&(t.levels=(t.levels||[]).concat(t.indentLevel+1));else if(/^[})\]]/.test(d.value)){let v=t.levels=(t.levels||[]).slice(0,-1);t.indentLevel&&v.length>0&&v[v.length-1]{"use strict";Object.defineProperty(Vs,"__esModule",{value:!0});Vs.RuleKinds=Vs.AdditionalRuleKinds=void 0;var gee=ht();Vs.AdditionalRuleKinds={ALIASED_FIELD:"AliasedField",ARGUMENTS:"Arguments",SHORT_QUERY:"ShortQuery",QUERY:"Query",MUTATION:"Mutation",SUBSCRIPTION:"Subscription",TYPE_CONDITION:"TypeCondition",INVALID:"Invalid",COMMENT:"Comment",SCHEMA_DEF:"SchemaDef",SCALAR_DEF:"ScalarDef",OBJECT_TYPE_DEF:"ObjectTypeDef",OBJECT_VALUE:"ObjectValue",LIST_VALUE:"ListValue",INTERFACE_DEF:"InterfaceDef",UNION_DEF:"UnionDef",ENUM_DEF:"EnumDef",ENUM_VALUE:"EnumValue",FIELD_DEF:"FieldDef",INPUT_DEF:"InputDef",INPUT_VALUE_DEF:"InputValueDef",ARGUMENTS_DEF:"ArgumentsDef",EXTEND_DEF:"ExtendDef",DIRECTIVE_DEF:"DirectiveDef",IMPLEMENTS:"Implements",VARIABLE_DEFINITIONS:"VariableDefinitions",TYPE:"Type"};Vs.RuleKinds=Object.assign(Object.assign({},gee.Kind),Vs.AdditionalRuleKinds)});var ay=G(Bt=>{"use strict";var mee=Bt&&Bt.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),yee=Bt&&Bt.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&mee(t,e,r)},cU=Bt&&Bt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Bt,"__esModule",{value:!0});Bt.onlineParser=Bt.t=Bt.p=Bt.opt=Bt.list=Bt.butNot=Bt.isIgnored=Bt.ParseRules=Bt.LexRules=Bt.CharacterStream=void 0;var bee=aU();Object.defineProperty(Bt,"CharacterStream",{enumerable:!0,get:function(){return cU(bee).default}});var ZO=HO();Object.defineProperty(Bt,"LexRules",{enumerable:!0,get:function(){return ZO.LexRules}});Object.defineProperty(Bt,"ParseRules",{enumerable:!0,get:function(){return ZO.ParseRules}});Object.defineProperty(Bt,"isIgnored",{enumerable:!0,get:function(){return ZO.isIgnored}});var Gp=KO();Object.defineProperty(Bt,"butNot",{enumerable:!0,get:function(){return Gp.butNot}});Object.defineProperty(Bt,"list",{enumerable:!0,get:function(){return Gp.list}});Object.defineProperty(Bt,"opt",{enumerable:!0,get:function(){return Gp.opt}});Object.defineProperty(Bt,"p",{enumerable:!0,get:function(){return Gp.p}});Object.defineProperty(Bt,"t",{enumerable:!0,get:function(){return Gp.t}});var Tee=sU();Object.defineProperty(Bt,"onlineParser",{enumerable:!0,get:function(){return cU(Tee).default}});yee(lU(),Bt)});var ew=G(Vr=>{"use strict";Object.defineProperty(Vr,"__esModule",{value:!0});Vr.getTypeInfo=Vr.canUseDirective=Vr.runOnlineParser=Vr.getTokenAtPosition=Vr.getFragmentDefinitions=Vr.getVariableCompletions=Vr.getAutocompleteSuggestions=Vr.SuggestionCommand=void 0;var tn=nU(),Vt=ht(),kt=ht(),ke=ay(),br=QO();Vr.SuggestionCommand={command:"editor.action.triggerSuggest",title:"Suggestions"};var _ee=e=>{let t=[];if(e)try{(0,kt.visit)((0,kt.parse)(e),{FragmentDefinition(r){t.push(r)}})}catch(r){return[]}return t};function Eee(e,t,r,n,i,o){var s;let l=Object.assign(Object.assign({},o),{schema:e}),d=n||dU(t,r),h=d.state.kind==="Invalid"?d.state.prevState:d.state;if(!h)return[];let v=h.kind,y=h.step,b=hU(e,d.state);if(v===ke.RuleKinds.DOCUMENT)return(0,br.hintList)(d,[{label:"query",kind:tn.CompletionItemKind.Function},{label:"mutation",kind:tn.CompletionItemKind.Function},{label:"subscription",kind:tn.CompletionItemKind.Function},{label:"fragment",kind:tn.CompletionItemKind.Function},{label:"{",kind:tn.CompletionItemKind.Constructor}]);if(v===ke.RuleKinds.IMPLEMENTS||v===ke.RuleKinds.NAMED_TYPE&&((s=h.prevState)===null||s===void 0?void 0:s.kind)===ke.RuleKinds.IMPLEMENTS)return wee(d,h,e,t,b);if(v===ke.RuleKinds.SELECTION_SET||v===ke.RuleKinds.FIELD||v===ke.RuleKinds.ALIASED_FIELD)return kee(d,b,l);if(v===ke.RuleKinds.ARGUMENTS||v===ke.RuleKinds.ARGUMENT&&y===0){let D=b.argDefs;if(D)return(0,br.hintList)(d,D.map(_=>{var k;return{label:_.name,insertText:_.name+": ",command:Vr.SuggestionCommand,detail:String(_.type),documentation:(k=_.description)!==null&&k!==void 0?k:void 0,kind:tn.CompletionItemKind.Variable,type:_.type}}))}if((v===ke.RuleKinds.OBJECT_VALUE||v===ke.RuleKinds.OBJECT_FIELD&&y===0)&&b.objectFieldDefs){let D=(0,br.objectValues)(b.objectFieldDefs),_=v===ke.RuleKinds.OBJECT_VALUE?tn.CompletionItemKind.Value:tn.CompletionItemKind.Field;return(0,br.hintList)(d,D.map(k=>{var T;return{label:k.name,detail:String(k.type),documentation:(T=k.description)!==null&&T!==void 0?T:void 0,kind:_,type:k.type}}))}if(v===ke.RuleKinds.ENUM_VALUE||v===ke.RuleKinds.LIST_VALUE&&y===1||v===ke.RuleKinds.OBJECT_FIELD&&y===2||v===ke.RuleKinds.ARGUMENT&&y===2)return Oee(d,b,t,e);if(v===ke.RuleKinds.VARIABLE&&y===1){let D=(0,kt.getNamedType)(b.inputType),_=$O(t,e,d);return(0,br.hintList)(d,_.filter(k=>k.detail===(D==null?void 0:D.name)))}return v===ke.RuleKinds.TYPE_CONDITION&&y===1||v===ke.RuleKinds.NAMED_TYPE&&h.prevState!=null&&h.prevState.kind===ke.RuleKinds.TYPE_CONDITION?Nee(d,b,e,v):v===ke.RuleKinds.FRAGMENT_SPREAD&&y===1?Dee(d,b,e,t,Array.isArray(i)?i:_ee(i)):v===ke.RuleKinds.VARIABLE_DEFINITION&&y===2||v===ke.RuleKinds.LIST_TYPE&&y===1||v===ke.RuleKinds.NAMED_TYPE&&h.prevState&&(h.prevState.kind===ke.RuleKinds.VARIABLE_DEFINITION||h.prevState.kind===ke.RuleKinds.LIST_TYPE||h.prevState.kind===ke.RuleKinds.NON_NULL_TYPE)?Cee(d,e,v):v===ke.RuleKinds.DIRECTIVE?Lee(d,h,e,v):[]}Vr.getAutocompleteSuggestions=Eee;var oy=` { $1 -}`,xX=e=>{let t=e.type;return(0,mt.isCompositeType)(t)||(0,xt.isListType)(t)&&(0,mt.isCompositeType)(t.ofType)||(0,xt.isNonNullType)(t)&&((0,mt.isCompositeType)(t.ofType)||(0,xt.isListType)(t.ofType)&&(0,mt.isCompositeType)(t.ofType.ofType))?Nm:null};function IX(e,t,r){var n;if(t.parentType){let a=t.parentType,o=[];return"getFields"in a&&(o=(0,ur.objectValues)(a.getFields())),(0,mt.isCompositeType)(a)&&o.push(mt.TypeNameMetaFieldDef),a===((n=r==null?void 0:r.schema)===null||n===void 0?void 0:n.getQueryType())&&o.push(mt.SchemaMetaFieldDef,mt.TypeMetaFieldDef),(0,ur.hintList)(e,o.map((s,l)=>{var d;let h={sortText:String(l)+s.name,label:s.name,detail:String(s.type),documentation:(d=s.description)!==null&&d!==void 0?d:void 0,deprecated:Boolean(s.deprecationReason),isDeprecated:Boolean(s.deprecationReason),deprecationReason:s.deprecationReason,kind:Ur.CompletionItemKind.Field,type:s.type},v=xX(s);return v&&(h.insertText=s.name+v,h.insertTextFormat=Ur.InsertTextFormat.Snippet,h.command=Cr.SuggestionCommand),h}))}return[]}function RX(e,t,r,n){let a=(0,mt.getNamedType)(t.inputType),o=XD(r,n,e).filter(s=>s.detail===a.name);if(a instanceof mt.GraphQLEnumType){let s=a.getValues();return(0,ur.hintList)(e,s.map(l=>{var d;return{label:l.name,detail:String(a),documentation:(d=l.description)!==null&&d!==void 0?d:void 0,deprecated:Boolean(l.deprecationReason),isDeprecated:Boolean(l.deprecationReason),deprecationReason:l.deprecationReason,kind:Ur.CompletionItemKind.EnumMember,type:a}}).concat(o))}else if(a===mt.GraphQLBoolean)return(0,ur.hintList)(e,o.concat([{label:"true",detail:String(mt.GraphQLBoolean),documentation:"Not false.",kind:Ur.CompletionItemKind.Variable,type:mt.GraphQLBoolean},{label:"false",detail:String(mt.GraphQLBoolean),documentation:"Not true.",kind:Ur.CompletionItemKind.Variable,type:mt.GraphQLBoolean}]));return o}function FX(e,t,r,n,a){if(t.needsSeperator)return[];let o=r.getTypeMap(),s=(0,ur.objectValues)(o).filter(xt.isInterfaceType),l=s.map(({name:A})=>A),d=new Set;Sp(n,(A,L)=>{var S,y,_,m,k;if(L.name&&(L.kind===ye.RuleKinds.INTERFACE_DEF&&!l.includes(L.name)&&d.add(L.name),L.kind===ye.RuleKinds.NAMED_TYPE&&((S=L.prevState)===null||S===void 0?void 0:S.kind)===ye.RuleKinds.IMPLEMENTS)){if(a.interfaceDef){if((y=a.interfaceDef)===null||y===void 0?void 0:y.getInterfaces().find(({name:R})=>R===L.name))return;let C=r.getType(L.name),D=(_=a.interfaceDef)===null||_===void 0?void 0:_.toConfig();a.interfaceDef=new xt.GraphQLInterfaceType(Object.assign(Object.assign({},D),{interfaces:[...D.interfaces,C||new xt.GraphQLInterfaceType({name:L.name,fields:{}})]}))}else if(a.objectTypeDef){if((m=a.objectTypeDef)===null||m===void 0?void 0:m.getInterfaces().find(({name:R})=>R===L.name))return;let C=r.getType(L.name),D=(k=a.objectTypeDef)===null||k===void 0?void 0:k.toConfig();a.objectTypeDef=new xt.GraphQLObjectType(Object.assign(Object.assign({},D),{interfaces:[...D.interfaces,C||new xt.GraphQLInterfaceType({name:L.name,fields:{}})]}))}}});let h=a.interfaceDef||a.objectTypeDef,b=((h==null?void 0:h.getInterfaces())||[]).map(({name:A})=>A),T=s.concat([...d].map(A=>({name:A}))).filter(({name:A})=>A!==(h==null?void 0:h.name)&&!b.includes(A));return(0,ur.hintList)(e,T.map(A=>{let L={label:A.name,kind:Ur.CompletionItemKind.Interface,type:A};return(A==null?void 0:A.description)&&(L.documentation=A.description),L}))}function jX(e,t,r,n){let a;if(t.parentType)if((0,mt.isAbstractType)(t.parentType)){let o=(0,mt.assertAbstractType)(t.parentType),s=r.getPossibleTypes(o),l=Object.create(null);s.forEach(d=>{d.getInterfaces().forEach(h=>{l[h.name]=h})}),a=s.concat((0,ur.objectValues)(l))}else a=[t.parentType];else{let o=r.getTypeMap();a=(0,ur.objectValues)(o).filter(mt.isCompositeType)}return(0,ur.hintList)(e,a.map(o=>{let s=(0,mt.getNamedType)(o);return{label:String(o),documentation:(s==null?void 0:s.description)||"",kind:Ur.CompletionItemKind.Field}}))}function PX(e,t,r,n,a){if(!n)return[];let o=r.getTypeMap(),s=(0,ur.getDefinitionState)(e.state),l=oM(n);a&&a.length>0&&l.push(...a);let d=l.filter(h=>o[h.typeCondition.name.value]&&!(s&&s.kind===ye.RuleKinds.FRAGMENT_DEFINITION&&s.name===h.name.value)&&(0,mt.isCompositeType)(t.parentType)&&(0,mt.isCompositeType)(o[h.typeCondition.name.value])&&(0,mt.doTypesOverlap)(r,t.parentType,o[h.typeCondition.name.value]));return(0,ur.hintList)(e,d.map(h=>({label:h.name.value,detail:String(o[h.typeCondition.name.value]),documentation:`fragment ${h.name.value} on ${h.typeCondition.name.value}`,kind:Ur.CompletionItemKind.Field,type:o[h.typeCondition.name.value]})))}var MX=(e,t)=>{var r,n,a,o,s,l,d,h,v,b;if(((r=e.prevState)===null||r===void 0?void 0:r.kind)===t)return e.prevState;if(((a=(n=e.prevState)===null||n===void 0?void 0:n.prevState)===null||a===void 0?void 0:a.kind)===t)return e.prevState.prevState;if(((l=(s=(o=e.prevState)===null||o===void 0?void 0:o.prevState)===null||s===void 0?void 0:s.prevState)===null||l===void 0?void 0:l.kind)===t)return e.prevState.prevState.prevState;if(((b=(v=(h=(d=e.prevState)===null||d===void 0?void 0:d.prevState)===null||h===void 0?void 0:h.prevState)===null||v===void 0?void 0:v.prevState)===null||b===void 0?void 0:b.kind)===t)return e.prevState.prevState.prevState.prevState};function XD(e,t,r){let n=null,a,o=Object.create({});return Sp(e,(s,l)=>{if((l==null?void 0:l.kind)===ye.RuleKinds.VARIABLE&&l.name&&(n=l.name),(l==null?void 0:l.kind)===ye.RuleKinds.NAMED_TYPE&&n){let d=MX(l,ye.RuleKinds.TYPE);(d==null?void 0:d.type)&&(a=t.getType(d==null?void 0:d.type))}n&&a&&(o[n]||(o[n]={detail:a.toString(),insertText:r.string==="$"?n:"$"+n,label:n,type:a,kind:Ur.CompletionItemKind.Variable},n=null,a=null))}),(0,ur.objectValues)(o)}Cr.getVariableCompletions=XD;function oM(e){let t=[];return Sp(e,(r,n)=>{n.kind===ye.RuleKinds.FRAGMENT_DEFINITION&&n.name&&n.type&&t.push({kind:ye.RuleKinds.FRAGMENT_DEFINITION,name:{kind:xt.Kind.NAME,value:n.name},selectionSet:{kind:ye.RuleKinds.SELECTION_SET,selections:[]},typeCondition:{kind:ye.RuleKinds.NAMED_TYPE,name:{kind:xt.Kind.NAME,value:n.type}}})}),t}Cr.getFragmentDefinitions=oM;function qX(e,t,r){let n=t.getTypeMap(),a=(0,ur.objectValues)(n).filter(mt.isInputType);return(0,ur.hintList)(e,a.map(o=>({label:o.name,documentation:o.description,kind:Ur.CompletionItemKind.Variable})))}function BX(e,t,r,n){var a;if((a=t.prevState)===null||a===void 0?void 0:a.kind){let o=r.getDirectives().filter(s=>sM(t.prevState,s));return(0,ur.hintList)(e,o.map(s=>({label:s.name,documentation:s.description||"",kind:Ur.CompletionItemKind.Function})))}return[]}function uM(e,t){let r=null,n=null,a=null,o=Sp(e,(s,l,d,h)=>{if(h===t.line&&s.getCurrentPosition()>=t.character)return r=d,n=Object.assign({},l),a=s.current(),"BREAK"});return{start:o.start,end:o.end,string:a||o.string,state:n||o.state,style:r||o.style}}Cr.getTokenAtPosition=uM;function Sp(e,t){let r=e.split(` -`),n=(0,ye.onlineParser)(),a=n.startState(),o="",s=new ye.CharacterStream("");for(let l=0;l{var L;switch(A.kind){case ye.RuleKinds.QUERY:case"ShortQuery":b=e.getQueryType();break;case ye.RuleKinds.MUTATION:b=e.getMutationType();break;case ye.RuleKinds.SUBSCRIPTION:b=e.getSubscriptionType();break;case ye.RuleKinds.INLINE_FRAGMENT:case ye.RuleKinds.FRAGMENT_DEFINITION:A.type&&(b=e.getType(A.type));break;case ye.RuleKinds.FIELD:case ye.RuleKinds.ALIASED_FIELD:{!b||!A.name?s=null:(s=v?(0,ur.getFieldDef)(e,v,A.name):null,b=s?s.type:null);break}case ye.RuleKinds.SELECTION_SET:v=(0,mt.getNamedType)(b);break;case ye.RuleKinds.DIRECTIVE:a=A.name?e.getDirective(A.name):null;break;case ye.RuleKinds.INTERFACE_DEF:A.name&&(d=null,T=new xt.GraphQLInterfaceType({name:A.name,interfaces:[],fields:{}}));break;case ye.RuleKinds.OBJECT_TYPE_DEF:A.name&&(T=null,d=new xt.GraphQLObjectType({name:A.name,interfaces:[],fields:{}}));break;case ye.RuleKinds.ARGUMENTS:{if(!A.prevState)n=null;else switch(A.prevState.kind){case ye.RuleKinds.FIELD:n=s&&s.args;break;case ye.RuleKinds.DIRECTIVE:n=a&&a.args;break;case ye.RuleKinds.ALIASED_FIELD:{let k=(L=A.prevState)===null||L===void 0?void 0:L.name;if(!k){n=null;break}let w=v?(0,ur.getFieldDef)(e,v,k):null;if(!w){n=null;break}n=w.args;break}default:n=null;break}break}case ye.RuleKinds.ARGUMENT:if(n){for(let k=0;kk.value===A.name):null;break;case ye.RuleKinds.LIST_VALUE:let y=(0,mt.getNullableType)(l);l=y instanceof mt.GraphQLList?y.ofType:null;break;case ye.RuleKinds.OBJECT_VALUE:let _=(0,mt.getNamedType)(l);h=_ instanceof mt.GraphQLInputObjectType?_.getFields():null;break;case ye.RuleKinds.OBJECT_FIELD:let m=A.name&&h?h[A.name]:null;l=m==null?void 0:m.type;break;case ye.RuleKinds.NAMED_TYPE:A.name&&(b=e.getType(A.name));break}}),{argDef:r,argDefs:n,directiveDef:a,enumValue:o,fieldDef:s,inputType:l,objectFieldDefs:h,parentType:v,type:b,interfaceDef:T,objectTypeDef:d}}Cr.getTypeInfo=lM});var fM=U(To=>{"use strict";var VX=To&&To.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(To,"__esModule",{value:!0});To.getFragmentDependenciesForAST=To.getFragmentDependencies=void 0;var $D=ct(),cM=VX(iD()),UX=(e,t)=>{if(!t)return[];let r;try{r=(0,$D.parse)(e)}catch(n){return[]}return(0,To.getFragmentDependenciesForAST)(r,t)};To.getFragmentDependencies=UX;var GX=(e,t)=>{if(!t)return[];let r=new Map,n=new Set;(0,$D.visit)(e,{FragmentDefinition(s){r.set(s.name.value,!0)},FragmentSpread(s){n.has(s.name.value)||n.add(s.name.value)}});let a=new Set;n.forEach(s=>{!r.has(s)&&t.has(s)&&a.add((0,cM.default)(t.get(s)))});let o=[];return a.forEach(s=>{(0,$D.visit)(s,{FragmentSpread(l){!n.has(l.name.value)&&t.get(l.name.value)&&(a.add((0,cM.default)(t.get(l.name.value))),n.add(l.name.value))}}),r.has(s.name.value)||o.push(s)}),o};To.getFragmentDependenciesForAST=GX});var dM=U(yc=>{"use strict";Object.defineProperty(yc,"__esModule",{value:!0});yc.getVariablesJSONSchema=yc.defaultJSONSchemaOptions=void 0;var Tu=ct();yc.defaultJSONSchemaOptions={useMarkdownDescription:!1};function mc(e,t){e.push(t)}function e1(e,t){(0,Tu.isNonNullType)(t)?(e1(e,t.ofType),mc(e,"!")):(0,Tu.isListType)(t)?(mc(e,"["),e1(e,t.ofType),mc(e,"]")):mc(e,t.name)}function Pa(e,t){let r=[];return t&&mc(r,"```graphql\n"),e1(r,e),t&&mc(r,"\n```"),r.join("")}var QX={Int:"integer",String:"string",Float:"number",ID:"string",Boolean:"boolean",DateTime:"string"};function Dp(e,t){var r;let n=!1,a=Object.create(null),o=Object.create(null);if("defaultValue"in e&&e.defaultValue!==void 0&&(a.default=e.defaultValue),(0,Tu.isEnumType)(e)&&(a.type="string",a.enum=e.getValues().map(s=>s.name)),(0,Tu.isScalarType)(e)&&(a.type=(r=QX[e.name])!==null&&r!==void 0?r:"any"),(0,Tu.isListType)(e)){a.type="array";let{definition:s,definitions:l}=Dp(e.ofType,t);s.$ref?a.items={$ref:s.$ref}:a.items=s,l&&Object.keys(l).forEach(d=>{o[d]=l[d]})}if((0,Tu.isNonNullType)(e)){n=!0;let{definition:s,definitions:l}=Dp(e.ofType,t);a=s,l&&Object.keys(l).forEach(d=>{o[d]=l[d]})}if((0,Tu.isInputObjectType)(e)){a.$ref=`#/definitions/${e.name}`;let s=e.getFields(),l={type:"object",properties:{},required:[]};e.description?(l.description=e.description+` -`+Pa(e),(t==null?void 0:t.useMarkdownDescription)&&(l.markdownDescription=e.description+` -`+Pa(e,!0))):(l.description=Pa(e),(t==null?void 0:t.useMarkdownDescription)&&(l.markdownDescription=Pa(e,!0))),Object.keys(s).forEach(d=>{let h=s[d],{required:v,definition:b,definitions:T}=Dp(h.type,t),{definition:A}=Dp(h,t);l.properties[d]=Object.assign(Object.assign({},b),A);let L=Pa(h.type);if(l.properties[d].description=h.description?h.description+` -`+L:L,t==null?void 0:t.useMarkdownDescription){let S=Pa(h.type,!0);l.properties[d].markdownDescription=h.description?h.description+` -`+S:S}v&&l.required.push(d),T&&Object.keys(T).map(S=>{o[S]=T[S]})}),o[e.name]=l}return"description"in e&&!(0,Tu.isScalarType)(e)&&e.description&&!a.description?(a.description=e.description+` -`+Pa(e),(t==null?void 0:t.useMarkdownDescription)&&(a.markdownDescription=e.description+` -`+Pa(e,!0))):(a.description=Pa(e),(t==null?void 0:t.useMarkdownDescription)&&(a.markdownDescription=Pa(e,!0))),{required:n,definition:a,definitions:o}}function KX(e,t){let r={$schema:"https://json-schema.org/draft/2020-12/schema",type:"object",properties:{},required:[]};return e&&Object.entries(e).forEach(([n,a])=>{var o;let{definition:s,required:l,definitions:d}=Dp(a,t);r.properties[n]=s,l&&((o=r.required)===null||o===void 0||o.push(n)),d&&(r.definitions=Object.assign(Object.assign({},r==null?void 0:r.definitions),d))}),r}yc.getVariablesJSONSchema=KX});var hM=U(bc=>{"use strict";Object.defineProperty(bc,"__esModule",{value:!0});bc.pointToOffset=bc.getASTNodeAtPosition=void 0;var HX=ct();function zX(e,t,r){let n=pM(e,r),a;return(0,HX.visit)(t,{enter(o){if(o.kind!=="Name"&&o.loc&&o.loc.start<=n&&n<=o.loc.end)a=o;else return!1},leave(o){if(o.loc&&o.loc.start<=n&&n<=o.loc.end)return!1}}),a}bc.getASTNodeAtPosition=zX;function pM(e,t){let r=e.split(` -`).slice(0,t.line);return t.character+r.map(n=>n.length+1).reduce((n,a)=>n+a,0)}bc.pointToOffset=pM});var vM=U(Ma=>{"use strict";Object.defineProperty(Ma,"__esModule",{value:!0});Ma.locToRange=Ma.offsetToPosition=Ma.Position=Ma.Range=void 0;var t1=class{constructor(t,r){this.containsPosition=n=>this.start.line===n.line?this.start.character<=n.character:this.end.line===n.line?this.end.character>=n.character:this.start.line<=n.line&&this.end.line>=n.line,this.start=t,this.end=r}setStart(t,r){this.start=new kp(t,r)}setEnd(t,r){this.end=new kp(t,r)}};Ma.Range=t1;var kp=class{constructor(t,r){this.lessThanOrEqualTo=n=>this.line{"use strict";Object.defineProperty(Lm,"__esModule",{value:!0});Lm.validateWithCustomRules=void 0;var Xr=ct(),YX=[Xr.LoneSchemaDefinitionRule,Xr.UniqueOperationTypesRule,Xr.UniqueTypeNamesRule,Xr.UniqueEnumValueNamesRule,Xr.UniqueFieldDefinitionNamesRule,Xr.UniqueDirectiveNamesRule,Xr.KnownTypeNamesRule,Xr.KnownDirectivesRule,Xr.UniqueDirectivesPerLocationRule,Xr.PossibleTypeExtensionsRule,Xr.UniqueArgumentNamesRule,Xr.UniqueInputFieldNamesRule];function JX(e,t,r,n,a){let o=Xr.specifiedRules.filter(l=>!(l===Xr.NoUnusedFragmentsRule||l===Xr.ExecutableDefinitionsRule||n&&l===Xr.KnownFragmentNamesRule));return r&&Array.prototype.push.apply(o,r),a&&Array.prototype.push.apply(o,YX),(0,Xr.validate)(e,t,o).filter(l=>{if(l.message.indexOf("Unknown directive")!==-1&&l.nodes){let d=l.nodes[0];if(d&&d.kind===Xr.Kind.DIRECTIVE){let h=d.name.value;if(h==="arguments"||h==="argumentDefinitions")return!1}}return!0})}Lm.validateWithCustomRules=JX});var i1=U(xm=>{"use strict";Object.defineProperty(xm,"__esModule",{value:!0});xm.collectVariables=void 0;var n1=ct();function XX(e,t){let r=Object.create(null);return t.definitions.forEach(n=>{if(n.kind==="OperationDefinition"){let a=n.variableDefinitions;a&&a.forEach(({variable:o,type:s})=>{let l=(0,n1.typeFromAST)(e,s);l?r[o.name.value]=l:s.kind===n1.Kind.NAMED_TYPE&&s.name.value==="Float"&&(r[o.name.value]=n1.GraphQLFloat)})}}),r}xm.collectVariables=XX});var TM=U(Ds=>{"use strict";Object.defineProperty(Ds,"__esModule",{value:!0});Ds.getQueryFacts=Ds.getOperationASTFacts=void 0;var mM=ct(),ZX=i1();function yM(e,t){let r=t?(0,ZX.collectVariables)(t,e):void 0,n=[];return(0,mM.visit)(e,{OperationDefinition(a){n.push(a)}}),{variableToType:r,operations:n}}Ds.getOperationASTFacts=yM;function bM(e,t){if(!!t)try{let r=(0,mM.parse)(t);return Object.assign(Object.assign({},yM(r,e)),{documentAST:r})}catch(r){return}}Ds.default=bM;Ds.getQueryFacts=bM});var Op=U(St=>{"use strict";var $X=St&&St.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(St,"__esModule",{value:!0});St.getQueryFacts=St.getOperationASTFacts=St.getOperationFacts=St.collectVariables=St.validateWithCustomRules=St.offsetToPosition=St.locToRange=St.Range=St.Position=St.pointToOffset=St.getASTNodeAtPosition=St.getVariablesJSONSchema=St.getFragmentDependenciesForAST=St.getFragmentDependencies=void 0;var EM=fM();Object.defineProperty(St,"getFragmentDependencies",{enumerable:!0,get:function(){return EM.getFragmentDependencies}});Object.defineProperty(St,"getFragmentDependenciesForAST",{enumerable:!0,get:function(){return EM.getFragmentDependenciesForAST}});var eZ=dM();Object.defineProperty(St,"getVariablesJSONSchema",{enumerable:!0,get:function(){return eZ.getVariablesJSONSchema}});var _M=hM();Object.defineProperty(St,"getASTNodeAtPosition",{enumerable:!0,get:function(){return _M.getASTNodeAtPosition}});Object.defineProperty(St,"pointToOffset",{enumerable:!0,get:function(){return _M.pointToOffset}});var Im=vM();Object.defineProperty(St,"Position",{enumerable:!0,get:function(){return Im.Position}});Object.defineProperty(St,"Range",{enumerable:!0,get:function(){return Im.Range}});Object.defineProperty(St,"locToRange",{enumerable:!0,get:function(){return Im.locToRange}});Object.defineProperty(St,"offsetToPosition",{enumerable:!0,get:function(){return Im.offsetToPosition}});var tZ=gM();Object.defineProperty(St,"validateWithCustomRules",{enumerable:!0,get:function(){return tZ.validateWithCustomRules}});var rZ=i1();Object.defineProperty(St,"collectVariables",{enumerable:!0,get:function(){return rZ.collectVariables}});var a1=TM();Object.defineProperty(St,"getOperationFacts",{enumerable:!0,get:function(){return $X(a1).default}});Object.defineProperty(St,"getOperationASTFacts",{enumerable:!0,get:function(){return a1.getOperationASTFacts}});Object.defineProperty(St,"getQueryFacts",{enumerable:!0,get:function(){return a1.getQueryFacts}})});var kM=U(cn=>{"use strict";var o1=cn&&cn.__awaiter||function(e,t,r,n){function a(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function l(v){try{h(n.next(v))}catch(b){s(b)}}function d(v){try{h(n.throw(v))}catch(b){s(b)}}function h(v){v.done?o(v.value):a(v.value).then(l,d)}h((n=n.apply(e,t||[])).next())})};Object.defineProperty(cn,"__esModule",{value:!0});cn.getDefinitionQueryResultForDefinitionNode=cn.getDefinitionQueryResultForFragmentSpread=cn.getDefinitionQueryResultForField=cn.getDefinitionQueryResultForNamedType=cn.LANGUAGE=void 0;var SM=Op();cn.LANGUAGE="GraphQL";function Rm(e,t){if(!e)throw new Error(t)}function Tc(e,t){let r=t.loc;return Rm(r,"Expected ASTNode to have a location."),(0,SM.locToRange)(e,r)}function u1(e,t){let r=t.loc;return Rm(r,"Expected ASTNode to have a location."),(0,SM.offsetToPosition)(e,r.start)}function nZ(e,t,r){return o1(this,void 0,void 0,function*(){let n=t.name.value,a=r.filter(({definition:s})=>s.name&&s.name.value===n);if(a.length===0)throw Error(`Definition not found for GraphQL type ${n}`);let o=a.map(({filePath:s,content:l,definition:d})=>uZ(s||"",l,d));return{definitions:o,queryRange:o.map(s=>Tc(e,t))}})}cn.getDefinitionQueryResultForNamedType=nZ;function iZ(e,t,r){return o1(this,void 0,void 0,function*(){let n=r.filter(({definition:o})=>o.name&&o.name.value===t);if(n.length===0)throw Error(`Definition not found for GraphQL type ${t}`);let a=[];return n.forEach(({filePath:o,content:s,definition:l})=>{var d;let h=(d=l.fields)===null||d===void 0?void 0:d.find(v=>v.name.value===e);if(h==null)return null;a.push(sZ(o||"",s,h))}),{definitions:a,queryRange:[]}})}cn.getDefinitionQueryResultForField=iZ;function aZ(e,t,r){return o1(this,void 0,void 0,function*(){let n=t.name.value,a=r.filter(({definition:s})=>s.name.value===n);if(a.length===0)throw Error(`Definition not found for GraphQL fragment ${n}`);let o=a.map(({filePath:s,content:l,definition:d})=>DM(s||"",l,d));return{definitions:o,queryRange:o.map(s=>Tc(e,t))}})}cn.getDefinitionQueryResultForFragmentSpread=aZ;function oZ(e,t,r){return{definitions:[DM(e,t,r)],queryRange:r.name?[Tc(t,r.name)]:[]}}cn.getDefinitionQueryResultForDefinitionNode=oZ;function DM(e,t,r){let n=r.name;if(!n)throw Error("Expected ASTNode to have a Name.");return{path:e,position:u1(t,r),range:Tc(t,r),name:n.value||"",language:cn.LANGUAGE,projectRoot:e}}function uZ(e,t,r){let n=r.name;return Rm(n,"Expected ASTNode to have a Name."),{path:e,position:u1(t,r),range:Tc(t,r),name:n.value||"",language:cn.LANGUAGE,projectRoot:e}}function sZ(e,t,r){let n=r.name;return Rm(n,"Expected ASTNode to have a Name."),{path:e,position:u1(t,r),range:Tc(t,r),name:n.value||"",language:cn.LANGUAGE,projectRoot:e}}});var LM=U(Gr=>{"use strict";Object.defineProperty(Gr,"__esModule",{value:!0});Gr.getRange=Gr.validateQuery=Gr.getDiagnostics=Gr.DIAGNOSTIC_SEVERITY=Gr.SEVERITY=void 0;var Fm=ct(),lZ=ct(),OM=Am(),ks=Op();Gr.SEVERITY={Error:"Error",Warning:"Warning",Information:"Information",Hint:"Hint"};Gr.DIAGNOSTIC_SEVERITY={[Gr.SEVERITY.Error]:1,[Gr.SEVERITY.Warning]:2,[Gr.SEVERITY.Information]:3,[Gr.SEVERITY.Hint]:4};var jm=(e,t)=>{if(!e)throw new Error(t)};function cZ(e,t=null,r,n,a){var o,s;let l=null;a&&(typeof a=="string"?e+=` +}`,See=e=>{let t=e.type;return(0,kt.isCompositeType)(t)||(0,Vt.isListType)(t)&&(0,kt.isCompositeType)(t.ofType)||(0,Vt.isNonNullType)(t)&&((0,kt.isCompositeType)(t.ofType)||(0,Vt.isListType)(t.ofType)&&(0,kt.isCompositeType)(t.ofType.ofType))?oy:null};function kee(e,t,r){var n;if(t.parentType){let i=t.parentType,o=[];return"getFields"in i&&(o=(0,br.objectValues)(i.getFields())),(0,kt.isCompositeType)(i)&&o.push(kt.TypeNameMetaFieldDef),i===((n=r==null?void 0:r.schema)===null||n===void 0?void 0:n.getQueryType())&&o.push(kt.SchemaMetaFieldDef,kt.TypeMetaFieldDef),(0,br.hintList)(e,o.map((s,l)=>{var d;let h={sortText:String(l)+s.name,label:s.name,detail:String(s.type),documentation:(d=s.description)!==null&&d!==void 0?d:void 0,deprecated:Boolean(s.deprecationReason),isDeprecated:Boolean(s.deprecationReason),deprecationReason:s.deprecationReason,kind:tn.CompletionItemKind.Field,type:s.type},v=See(s);return v&&(h.insertText=s.name+v,h.insertTextFormat=tn.InsertTextFormat.Snippet,h.command=Vr.SuggestionCommand),h}))}return[]}function Oee(e,t,r,n){let i=(0,kt.getNamedType)(t.inputType),o=$O(r,n,e).filter(s=>s.detail===i.name);if(i instanceof kt.GraphQLEnumType){let s=i.getValues();return(0,br.hintList)(e,s.map(l=>{var d;return{label:l.name,detail:String(i),documentation:(d=l.description)!==null&&d!==void 0?d:void 0,deprecated:Boolean(l.deprecationReason),isDeprecated:Boolean(l.deprecationReason),deprecationReason:l.deprecationReason,kind:tn.CompletionItemKind.EnumMember,type:i}}).concat(o))}else if(i===kt.GraphQLBoolean)return(0,br.hintList)(e,o.concat([{label:"true",detail:String(kt.GraphQLBoolean),documentation:"Not false.",kind:tn.CompletionItemKind.Variable,type:kt.GraphQLBoolean},{label:"false",detail:String(kt.GraphQLBoolean),documentation:"Not true.",kind:tn.CompletionItemKind.Variable,type:kt.GraphQLBoolean}]));return o}function wee(e,t,r,n,i){if(t.needsSeperator)return[];let o=r.getTypeMap(),s=(0,br.objectValues)(o).filter(Vt.isInterfaceType),l=s.map(({name:D})=>D),d=new Set;Qp(n,(D,_)=>{var k,T,S,m,w;if(_.name&&(_.kind===ke.RuleKinds.INTERFACE_DEF&&!l.includes(_.name)&&d.add(_.name),_.kind===ke.RuleKinds.NAMED_TYPE&&((k=_.prevState)===null||k===void 0?void 0:k.kind)===ke.RuleKinds.IMPLEMENTS)){if(i.interfaceDef){if((T=i.interfaceDef)===null||T===void 0?void 0:T.getInterfaces().find(({name:R})=>R===_.name))return;let L=r.getType(_.name),O=(S=i.interfaceDef)===null||S===void 0?void 0:S.toConfig();i.interfaceDef=new Vt.GraphQLInterfaceType(Object.assign(Object.assign({},O),{interfaces:[...O.interfaces,L||new Vt.GraphQLInterfaceType({name:_.name,fields:{}})]}))}else if(i.objectTypeDef){if((m=i.objectTypeDef)===null||m===void 0?void 0:m.getInterfaces().find(({name:R})=>R===_.name))return;let L=r.getType(_.name),O=(w=i.objectTypeDef)===null||w===void 0?void 0:w.toConfig();i.objectTypeDef=new Vt.GraphQLObjectType(Object.assign(Object.assign({},O),{interfaces:[...O.interfaces,L||new Vt.GraphQLInterfaceType({name:_.name,fields:{}})]}))}}});let h=i.interfaceDef||i.objectTypeDef,y=((h==null?void 0:h.getInterfaces())||[]).map(({name:D})=>D),b=s.concat([...d].map(D=>({name:D}))).filter(({name:D})=>D!==(h==null?void 0:h.name)&&!y.includes(D));return(0,br.hintList)(e,b.map(D=>{let _={label:D.name,kind:tn.CompletionItemKind.Interface,type:D};return(D==null?void 0:D.description)&&(_.documentation=D.description),_}))}function Nee(e,t,r,n){let i;if(t.parentType)if((0,kt.isAbstractType)(t.parentType)){let o=(0,kt.assertAbstractType)(t.parentType),s=r.getPossibleTypes(o),l=Object.create(null);s.forEach(d=>{d.getInterfaces().forEach(h=>{l[h.name]=h})}),i=s.concat((0,br.objectValues)(l))}else i=[t.parentType];else{let o=r.getTypeMap();i=(0,br.objectValues)(o).filter(kt.isCompositeType)}return(0,br.hintList)(e,i.map(o=>{let s=(0,kt.getNamedType)(o);return{label:String(o),documentation:(s==null?void 0:s.description)||"",kind:tn.CompletionItemKind.Field}}))}function Dee(e,t,r,n,i){if(!n)return[];let o=r.getTypeMap(),s=(0,br.getDefinitionState)(e.state),l=fU(n);i&&i.length>0&&l.push(...i);let d=l.filter(h=>o[h.typeCondition.name.value]&&!(s&&s.kind===ke.RuleKinds.FRAGMENT_DEFINITION&&s.name===h.name.value)&&(0,kt.isCompositeType)(t.parentType)&&(0,kt.isCompositeType)(o[h.typeCondition.name.value])&&(0,kt.doTypesOverlap)(r,t.parentType,o[h.typeCondition.name.value]));return(0,br.hintList)(e,d.map(h=>({label:h.name.value,detail:String(o[h.typeCondition.name.value]),documentation:`fragment ${h.name.value} on ${h.typeCondition.name.value}`,kind:tn.CompletionItemKind.Field,type:o[h.typeCondition.name.value]})))}var xee=(e,t)=>{var r,n,i,o,s,l,d,h,v,y;if(((r=e.prevState)===null||r===void 0?void 0:r.kind)===t)return e.prevState;if(((i=(n=e.prevState)===null||n===void 0?void 0:n.prevState)===null||i===void 0?void 0:i.kind)===t)return e.prevState.prevState;if(((l=(s=(o=e.prevState)===null||o===void 0?void 0:o.prevState)===null||s===void 0?void 0:s.prevState)===null||l===void 0?void 0:l.kind)===t)return e.prevState.prevState.prevState;if(((y=(v=(h=(d=e.prevState)===null||d===void 0?void 0:d.prevState)===null||h===void 0?void 0:h.prevState)===null||v===void 0?void 0:v.prevState)===null||y===void 0?void 0:y.kind)===t)return e.prevState.prevState.prevState.prevState};function $O(e,t,r){let n=null,i,o=Object.create({});return Qp(e,(s,l)=>{if((l==null?void 0:l.kind)===ke.RuleKinds.VARIABLE&&l.name&&(n=l.name),(l==null?void 0:l.kind)===ke.RuleKinds.NAMED_TYPE&&n){let d=xee(l,ke.RuleKinds.TYPE);(d==null?void 0:d.type)&&(i=t.getType(d==null?void 0:d.type))}n&&i&&(o[n]||(o[n]={detail:i.toString(),insertText:r.string==="$"?n:"$"+n,label:n,type:i,kind:tn.CompletionItemKind.Variable},n=null,i=null))}),(0,br.objectValues)(o)}Vr.getVariableCompletions=$O;function fU(e){let t=[];return Qp(e,(r,n)=>{n.kind===ke.RuleKinds.FRAGMENT_DEFINITION&&n.name&&n.type&&t.push({kind:ke.RuleKinds.FRAGMENT_DEFINITION,name:{kind:Vt.Kind.NAME,value:n.name},selectionSet:{kind:ke.RuleKinds.SELECTION_SET,selections:[]},typeCondition:{kind:ke.RuleKinds.NAMED_TYPE,name:{kind:Vt.Kind.NAME,value:n.type}}})}),t}Vr.getFragmentDefinitions=fU;function Cee(e,t,r){let n=t.getTypeMap(),i=(0,br.objectValues)(n).filter(kt.isInputType);return(0,br.hintList)(e,i.map(o=>({label:o.name,documentation:o.description,kind:tn.CompletionItemKind.Variable})))}function Lee(e,t,r,n){var i;if((i=t.prevState)===null||i===void 0?void 0:i.kind){let o=r.getDirectives().filter(s=>pU(t.prevState,s));return(0,br.hintList)(e,o.map(s=>({label:s.name,documentation:s.description||"",kind:tn.CompletionItemKind.Function})))}return[]}function dU(e,t){let r=null,n=null,i=null,o=Qp(e,(s,l,d,h)=>{if(h===t.line&&s.getCurrentPosition()>=t.character)return r=d,n=Object.assign({},l),i=s.current(),"BREAK"});return{start:o.start,end:o.end,string:i||o.string,state:n||o.state,style:r||o.style}}Vr.getTokenAtPosition=dU;function Qp(e,t){let r=e.split(` +`),n=(0,ke.onlineParser)(),i=n.startState(),o="",s=new ke.CharacterStream("");for(let l=0;l{var _;switch(D.kind){case ke.RuleKinds.QUERY:case"ShortQuery":y=e.getQueryType();break;case ke.RuleKinds.MUTATION:y=e.getMutationType();break;case ke.RuleKinds.SUBSCRIPTION:y=e.getSubscriptionType();break;case ke.RuleKinds.INLINE_FRAGMENT:case ke.RuleKinds.FRAGMENT_DEFINITION:D.type&&(y=e.getType(D.type));break;case ke.RuleKinds.FIELD:case ke.RuleKinds.ALIASED_FIELD:{!y||!D.name?s=null:(s=v?(0,br.getFieldDef)(e,v,D.name):null,y=s?s.type:null);break}case ke.RuleKinds.SELECTION_SET:v=(0,kt.getNamedType)(y);break;case ke.RuleKinds.DIRECTIVE:i=D.name?e.getDirective(D.name):null;break;case ke.RuleKinds.INTERFACE_DEF:D.name&&(d=null,b=new Vt.GraphQLInterfaceType({name:D.name,interfaces:[],fields:{}}));break;case ke.RuleKinds.OBJECT_TYPE_DEF:D.name&&(b=null,d=new Vt.GraphQLObjectType({name:D.name,interfaces:[],fields:{}}));break;case ke.RuleKinds.ARGUMENTS:{if(!D.prevState)n=null;else switch(D.prevState.kind){case ke.RuleKinds.FIELD:n=s&&s.args;break;case ke.RuleKinds.DIRECTIVE:n=i&&i.args;break;case ke.RuleKinds.ALIASED_FIELD:{let w=(_=D.prevState)===null||_===void 0?void 0:_.name;if(!w){n=null;break}let x=v?(0,br.getFieldDef)(e,v,w):null;if(!x){n=null;break}n=x.args;break}default:n=null;break}break}case ke.RuleKinds.ARGUMENT:if(n){for(let w=0;ww.value===D.name):null;break;case ke.RuleKinds.LIST_VALUE:let T=(0,kt.getNullableType)(l);l=T instanceof kt.GraphQLList?T.ofType:null;break;case ke.RuleKinds.OBJECT_VALUE:let S=(0,kt.getNamedType)(l);h=S instanceof kt.GraphQLInputObjectType?S.getFields():null;break;case ke.RuleKinds.OBJECT_FIELD:let m=D.name&&h?h[D.name]:null;l=m==null?void 0:m.type;break;case ke.RuleKinds.NAMED_TYPE:D.name&&(y=e.getType(D.name));break}}),{argDef:r,argDefs:n,directiveDef:i,enumValue:o,fieldDef:s,inputType:l,objectFieldDefs:h,parentType:v,type:y,interfaceDef:b,objectTypeDef:d}}Vr.getTypeInfo=hU});var gU=G(Ao=>{"use strict";var Iee=Ao&&Ao.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ao,"__esModule",{value:!0});Ao.getFragmentDependenciesForAST=Ao.getFragmentDependencies=void 0;var tw=ht(),vU=Iee(Xk()),Aee=(e,t)=>{if(!t)return[];let r;try{r=(0,tw.parse)(e)}catch(n){return[]}return(0,Ao.getFragmentDependenciesForAST)(r,t)};Ao.getFragmentDependencies=Aee;var Ree=(e,t)=>{if(!t)return[];let r=new Map,n=new Set;(0,tw.visit)(e,{FragmentDefinition(s){r.set(s.name.value,!0)},FragmentSpread(s){n.has(s.name.value)||n.add(s.name.value)}});let i=new Set;n.forEach(s=>{!r.has(s)&&t.has(s)&&i.add((0,vU.default)(t.get(s)))});let o=[];return i.forEach(s=>{(0,tw.visit)(s,{FragmentSpread(l){!n.has(l.name.value)&&t.get(l.name.value)&&(i.add((0,vU.default)(t.get(l.name.value))),n.add(l.name.value))}}),r.has(s.name.value)||o.push(s)}),o};Ao.getFragmentDependenciesForAST=Ree});var mU=G(qc=>{"use strict";Object.defineProperty(qc,"__esModule",{value:!0});qc.getVariablesJSONSchema=qc.defaultJSONSchemaOptions=void 0;var Pu=ht();qc.defaultJSONSchemaOptions={useMarkdownDescription:!1};function Mc(e,t){e.push(t)}function rw(e,t){(0,Pu.isNonNullType)(t)?(rw(e,t.ofType),Mc(e,"!")):(0,Pu.isListType)(t)?(Mc(e,"["),rw(e,t.ofType),Mc(e,"]")):Mc(e,t.name)}function Za(e,t){let r=[];return t&&Mc(r,"```graphql\n"),rw(r,e),t&&Mc(r,"\n```"),r.join("")}var jee={Int:"integer",String:"string",Float:"number",ID:"string",Boolean:"boolean",DateTime:"string"};function Bp(e,t){var r;let n=!1,i=Object.create(null),o=Object.create(null);if("defaultValue"in e&&e.defaultValue!==void 0&&(i.default=e.defaultValue),(0,Pu.isEnumType)(e)&&(i.type="string",i.enum=e.getValues().map(s=>s.name)),(0,Pu.isScalarType)(e)&&(i.type=(r=jee[e.name])!==null&&r!==void 0?r:"any"),(0,Pu.isListType)(e)){i.type="array";let{definition:s,definitions:l}=Bp(e.ofType,t);s.$ref?i.items={$ref:s.$ref}:i.items=s,l&&Object.keys(l).forEach(d=>{o[d]=l[d]})}if((0,Pu.isNonNullType)(e)){n=!0;let{definition:s,definitions:l}=Bp(e.ofType,t);i=s,l&&Object.keys(l).forEach(d=>{o[d]=l[d]})}if((0,Pu.isInputObjectType)(e)){i.$ref=`#/definitions/${e.name}`;let s=e.getFields(),l={type:"object",properties:{},required:[]};e.description?(l.description=e.description+` +`+Za(e),(t==null?void 0:t.useMarkdownDescription)&&(l.markdownDescription=e.description+` +`+Za(e,!0))):(l.description=Za(e),(t==null?void 0:t.useMarkdownDescription)&&(l.markdownDescription=Za(e,!0))),Object.keys(s).forEach(d=>{let h=s[d],{required:v,definition:y,definitions:b}=Bp(h.type,t),{definition:D}=Bp(h,t);l.properties[d]=Object.assign(Object.assign({},y),D);let _=Za(h.type);if(l.properties[d].description=h.description?h.description+` +`+_:_,t==null?void 0:t.useMarkdownDescription){let k=Za(h.type,!0);l.properties[d].markdownDescription=h.description?h.description+` +`+k:k}v&&l.required.push(d),b&&Object.keys(b).map(k=>{o[k]=b[k]})}),o[e.name]=l}return"description"in e&&!(0,Pu.isScalarType)(e)&&e.description&&!i.description?(i.description=e.description+` +`+Za(e),(t==null?void 0:t.useMarkdownDescription)&&(i.markdownDescription=e.description+` +`+Za(e,!0))):(i.description=Za(e),(t==null?void 0:t.useMarkdownDescription)&&(i.markdownDescription=Za(e,!0))),{required:n,definition:i,definitions:o}}function Pee(e,t){let r={$schema:"https://json-schema.org/draft/2020-12/schema",type:"object",properties:{},required:[]};return e&&Object.entries(e).forEach(([n,i])=>{var o;let{definition:s,required:l,definitions:d}=Bp(i,t);r.properties[n]=s,l&&((o=r.required)===null||o===void 0||o.push(n)),d&&(r.definitions=Object.assign(Object.assign({},r==null?void 0:r.definitions),d))}),r}qc.getVariablesJSONSchema=Pee});var bU=G(Vc=>{"use strict";Object.defineProperty(Vc,"__esModule",{value:!0});Vc.pointToOffset=Vc.getASTNodeAtPosition=void 0;var Fee=ht();function Mee(e,t,r){let n=yU(e,r),i;return(0,Fee.visit)(t,{enter(o){if(o.kind!=="Name"&&o.loc&&o.loc.start<=n&&n<=o.loc.end)i=o;else return!1},leave(o){if(o.loc&&o.loc.start<=n&&n<=o.loc.end)return!1}}),i}Vc.getASTNodeAtPosition=Mee;function yU(e,t){let r=e.split(` +`).slice(0,t.line);return t.character+r.map(n=>n.length+1).reduce((n,i)=>n+i,0)}Vc.pointToOffset=yU});var TU=G($a=>{"use strict";Object.defineProperty($a,"__esModule",{value:!0});$a.locToRange=$a.offsetToPosition=$a.Position=$a.Range=void 0;var nw=class{constructor(t,r){this.containsPosition=n=>this.start.line===n.line?this.start.character<=n.character:this.end.line===n.line?this.end.character>=n.character:this.start.line<=n.line&&this.end.line>=n.line,this.start=t,this.end=r}setStart(t,r){this.start=new Kp(t,r)}setEnd(t,r){this.end=new Kp(t,r)}};$a.Range=nw;var Kp=class{constructor(t,r){this.lessThanOrEqualTo=n=>this.line{"use strict";Object.defineProperty(uy,"__esModule",{value:!0});uy.validateWithCustomRules=void 0;var fn=ht(),Vee=[fn.LoneSchemaDefinitionRule,fn.UniqueOperationTypesRule,fn.UniqueTypeNamesRule,fn.UniqueEnumValueNamesRule,fn.UniqueFieldDefinitionNamesRule,fn.UniqueDirectiveNamesRule,fn.KnownTypeNamesRule,fn.KnownDirectivesRule,fn.UniqueDirectivesPerLocationRule,fn.PossibleTypeExtensionsRule,fn.UniqueArgumentNamesRule,fn.UniqueInputFieldNamesRule];function Uee(e,t,r,n,i){let o=fn.specifiedRules.filter(l=>!(l===fn.NoUnusedFragmentsRule||l===fn.ExecutableDefinitionsRule||n&&l===fn.KnownFragmentNamesRule));return r&&Array.prototype.push.apply(o,r),i&&Array.prototype.push.apply(o,Vee),(0,fn.validate)(e,t,o).filter(l=>{if(l.message.indexOf("Unknown directive")!==-1&&l.nodes){let d=l.nodes[0];if(d&&d.kind===fn.Kind.DIRECTIVE){let h=d.name.value;if(h==="arguments"||h==="argumentDefinitions")return!1}}return!0})}uy.validateWithCustomRules=Uee});var ow=G(sy=>{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.collectVariables=void 0;var aw=ht();function Gee(e,t){let r=Object.create(null);return t.definitions.forEach(n=>{if(n.kind==="OperationDefinition"){let i=n.variableDefinitions;i&&i.forEach(({variable:o,type:s})=>{let l=(0,aw.typeFromAST)(e,s);l?r[o.name.value]=l:s.kind===aw.Kind.NAMED_TYPE&&s.name.value==="Float"&&(r[o.name.value]=aw.GraphQLFloat)})}}),r}sy.collectVariables=Gee});var OU=G(Us=>{"use strict";Object.defineProperty(Us,"__esModule",{value:!0});Us.getQueryFacts=Us.getOperationASTFacts=void 0;var EU=ht(),Qee=ow();function SU(e,t){let r=t?(0,Qee.collectVariables)(t,e):void 0,n=[];return(0,EU.visit)(e,{OperationDefinition(i){n.push(i)}}),{variableToType:r,operations:n}}Us.getOperationASTFacts=SU;function kU(e,t){if(!!t)try{let r=(0,EU.parse)(t);return Object.assign(Object.assign({},SU(r,e)),{documentAST:r})}catch(r){return}}Us.default=kU;Us.getQueryFacts=kU});var Hp=G(Lt=>{"use strict";var Bee=Lt&&Lt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Lt,"__esModule",{value:!0});Lt.getQueryFacts=Lt.getOperationASTFacts=Lt.getOperationFacts=Lt.collectVariables=Lt.validateWithCustomRules=Lt.offsetToPosition=Lt.locToRange=Lt.Range=Lt.Position=Lt.pointToOffset=Lt.getASTNodeAtPosition=Lt.getVariablesJSONSchema=Lt.getFragmentDependenciesForAST=Lt.getFragmentDependencies=void 0;var wU=gU();Object.defineProperty(Lt,"getFragmentDependencies",{enumerable:!0,get:function(){return wU.getFragmentDependencies}});Object.defineProperty(Lt,"getFragmentDependenciesForAST",{enumerable:!0,get:function(){return wU.getFragmentDependenciesForAST}});var Kee=mU();Object.defineProperty(Lt,"getVariablesJSONSchema",{enumerable:!0,get:function(){return Kee.getVariablesJSONSchema}});var NU=bU();Object.defineProperty(Lt,"getASTNodeAtPosition",{enumerable:!0,get:function(){return NU.getASTNodeAtPosition}});Object.defineProperty(Lt,"pointToOffset",{enumerable:!0,get:function(){return NU.pointToOffset}});var ly=TU();Object.defineProperty(Lt,"Position",{enumerable:!0,get:function(){return ly.Position}});Object.defineProperty(Lt,"Range",{enumerable:!0,get:function(){return ly.Range}});Object.defineProperty(Lt,"locToRange",{enumerable:!0,get:function(){return ly.locToRange}});Object.defineProperty(Lt,"offsetToPosition",{enumerable:!0,get:function(){return ly.offsetToPosition}});var Hee=_U();Object.defineProperty(Lt,"validateWithCustomRules",{enumerable:!0,get:function(){return Hee.validateWithCustomRules}});var zee=ow();Object.defineProperty(Lt,"collectVariables",{enumerable:!0,get:function(){return zee.collectVariables}});var uw=OU();Object.defineProperty(Lt,"getOperationFacts",{enumerable:!0,get:function(){return Bee(uw).default}});Object.defineProperty(Lt,"getOperationASTFacts",{enumerable:!0,get:function(){return uw.getOperationASTFacts}});Object.defineProperty(Lt,"getQueryFacts",{enumerable:!0,get:function(){return uw.getQueryFacts}})});var CU=G(On=>{"use strict";var sw=On&&On.__awaiter||function(e,t,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function l(v){try{h(n.next(v))}catch(y){s(y)}}function d(v){try{h(n.throw(v))}catch(y){s(y)}}function h(v){v.done?o(v.value):i(v.value).then(l,d)}h((n=n.apply(e,t||[])).next())})};Object.defineProperty(On,"__esModule",{value:!0});On.getDefinitionQueryResultForDefinitionNode=On.getDefinitionQueryResultForFragmentSpread=On.getDefinitionQueryResultForField=On.getDefinitionQueryResultForNamedType=On.LANGUAGE=void 0;var DU=Hp();On.LANGUAGE="GraphQL";function cy(e,t){if(!e)throw new Error(t)}function Uc(e,t){let r=t.loc;return cy(r,"Expected ASTNode to have a location."),(0,DU.locToRange)(e,r)}function lw(e,t){let r=t.loc;return cy(r,"Expected ASTNode to have a location."),(0,DU.offsetToPosition)(e,r.start)}function Wee(e,t,r){return sw(this,void 0,void 0,function*(){let n=t.name.value,i=r.filter(({definition:s})=>s.name&&s.name.value===n);if(i.length===0)throw Error(`Definition not found for GraphQL type ${n}`);let o=i.map(({filePath:s,content:l,definition:d})=>Zee(s||"",l,d));return{definitions:o,queryRange:o.map(s=>Uc(e,t))}})}On.getDefinitionQueryResultForNamedType=Wee;function Yee(e,t,r){return sw(this,void 0,void 0,function*(){let n=r.filter(({definition:o})=>o.name&&o.name.value===t);if(n.length===0)throw Error(`Definition not found for GraphQL type ${t}`);let i=[];return n.forEach(({filePath:o,content:s,definition:l})=>{var d;let h=(d=l.fields)===null||d===void 0?void 0:d.find(v=>v.name.value===e);if(h==null)return null;i.push($ee(o||"",s,h))}),{definitions:i,queryRange:[]}})}On.getDefinitionQueryResultForField=Yee;function Jee(e,t,r){return sw(this,void 0,void 0,function*(){let n=t.name.value,i=r.filter(({definition:s})=>s.name.value===n);if(i.length===0)throw Error(`Definition not found for GraphQL fragment ${n}`);let o=i.map(({filePath:s,content:l,definition:d})=>xU(s||"",l,d));return{definitions:o,queryRange:o.map(s=>Uc(e,t))}})}On.getDefinitionQueryResultForFragmentSpread=Jee;function Xee(e,t,r){return{definitions:[xU(e,t,r)],queryRange:r.name?[Uc(t,r.name)]:[]}}On.getDefinitionQueryResultForDefinitionNode=Xee;function xU(e,t,r){let n=r.name;if(!n)throw Error("Expected ASTNode to have a Name.");return{path:e,position:lw(t,r),range:Uc(t,r),name:n.value||"",language:On.LANGUAGE,projectRoot:e}}function Zee(e,t,r){let n=r.name;return cy(n,"Expected ASTNode to have a Name."),{path:e,position:lw(t,r),range:Uc(t,r),name:n.value||"",language:On.LANGUAGE,projectRoot:e}}function $ee(e,t,r){let n=r.name;return cy(n,"Expected ASTNode to have a Name."),{path:e,position:lw(t,r),range:Uc(t,r),name:n.value||"",language:On.LANGUAGE,projectRoot:e}}});var PU=G(rn=>{"use strict";Object.defineProperty(rn,"__esModule",{value:!0});rn.getRange=rn.validateQuery=rn.getDiagnostics=rn.DIAGNOSTIC_SEVERITY=rn.SEVERITY=void 0;var fy=ht(),ete=ht(),LU=ay(),Gs=Hp();rn.SEVERITY={Error:"Error",Warning:"Warning",Information:"Information",Hint:"Hint"};rn.DIAGNOSTIC_SEVERITY={[rn.SEVERITY.Error]:1,[rn.SEVERITY.Warning]:2,[rn.SEVERITY.Information]:3,[rn.SEVERITY.Hint]:4};var dy=(e,t)=>{if(!e)throw new Error(t)};function tte(e,t=null,r,n,i){var o,s;let l=null;i&&(typeof i=="string"?e+=` -`+a:e+=` +`+i:e+=` -`+a.reduce((d,h)=>(d+=(0,Fm.print)(h)+` +`+i.reduce((d,h)=>(d+=(0,fy.print)(h)+` -`,d),""));try{l=(0,lZ.parse)(e)}catch(d){if(d instanceof Fm.GraphQLError){let h=NM((s=(o=d.locations)===null||o===void 0?void 0:o[0])!==null&&s!==void 0?s:{line:0,column:0},e);return[{severity:Gr.DIAGNOSTIC_SEVERITY.Error,message:d.message,source:"GraphQL: Syntax",range:h}]}throw d}return CM(l,t,r,n)}Gr.getDiagnostics=cZ;function CM(e,t=null,r,n){if(!t)return[];let a=wM((0,ks.validateWithCustomRules)(t,e,r,n),s=>AM(s,Gr.DIAGNOSTIC_SEVERITY.Error,"Validation")),o=wM((0,Fm.validate)(t,e,[Fm.NoDeprecatedCustomRule]),s=>AM(s,Gr.DIAGNOSTIC_SEVERITY.Warning,"Deprecation"));return a.concat(o)}Gr.validateQuery=CM;function wM(e,t){return Array.prototype.concat.apply([],e.map(t))}function AM(e,t,r){if(!e.nodes)return[];let n=[];return e.nodes.forEach(a=>{let o=a.kind!=="Variable"&&"name"in a&&a.name!==void 0?a.name:"variable"in a&&a.variable!==void 0?a.variable:a;if(o){jm(e.locations,"GraphQL validation error requires locations.");let s=e.locations[0],l=fZ(o),d=s.column+(l.end-l.start);n.push({source:`GraphQL: ${r}`,message:e.message,severity:t,range:new ks.Range(new ks.Position(s.line-1,s.column-1),new ks.Position(s.line-1,d))})}}),n}function NM(e,t){let r=(0,OM.onlineParser)(),n=r.startState(),a=t.split(` -`);jm(a.length>=e.line,"Query text must have more lines than where the error happened");let o=null;for(let h=0;h{"use strict";Object.defineProperty(Pm,"__esModule",{value:!0});Pm.getOutline=void 0;var s1=ct(),xM=Op(),{INLINE_FRAGMENT:dZ}=s1.Kind;function pZ(e){let t;try{t=(0,s1.parse)(e)}catch(a){return null}let r=hZ(e);return{outlineTrees:(0,s1.visit)(t,{leave(a){return r!==void 0&&a.kind in r?r[a.kind](a):null}})}}Pm.getOutline=pZ;function hZ(e){let t=r=>({representativeName:r.name,startPosition:(0,xM.offsetToPosition)(e,r.loc.start),endPosition:(0,xM.offsetToPosition)(e,r.loc.end),kind:r.kind,children:r.selectionSet||r.fields||r.values||r.arguments||[]});return{Field:r=>{let n=r.alias?[Ht("plain",r.alias),Ht("plain",": ")]:[];return n.push(Ht("plain",r.name)),Object.assign({tokenizedText:n},t(r))},OperationDefinition:r=>Object.assign({tokenizedText:[Ht("keyword",r.operation),Ht("whitespace"," "),Ht("class-name",r.name)]},t(r)),Document:r=>r.definitions,SelectionSet:r=>vZ(r.selections,n=>n.kind===dZ?n.selectionSet:n),Name:r=>r.value,FragmentDefinition:r=>Object.assign({tokenizedText:[Ht("keyword","fragment"),Ht("whitespace"," "),Ht("class-name",r.name)]},t(r)),InterfaceTypeDefinition:r=>Object.assign({tokenizedText:[Ht("keyword","interface"),Ht("whitespace"," "),Ht("class-name",r.name)]},t(r)),EnumTypeDefinition:r=>Object.assign({tokenizedText:[Ht("keyword","enum"),Ht("whitespace"," "),Ht("class-name",r.name)]},t(r)),EnumValueDefinition:r=>Object.assign({tokenizedText:[Ht("plain",r.name)]},t(r)),ObjectTypeDefinition:r=>Object.assign({tokenizedText:[Ht("keyword","type"),Ht("whitespace"," "),Ht("class-name",r.name)]},t(r)),InputObjectTypeDefinition:r=>Object.assign({tokenizedText:[Ht("keyword","input"),Ht("whitespace"," "),Ht("class-name",r.name)]},t(r)),FragmentSpread:r=>Object.assign({tokenizedText:[Ht("plain","..."),Ht("class-name",r.name)]},t(r)),InputValueDefinition:r=>Object.assign({tokenizedText:[Ht("plain",r.name)]},t(r)),FieldDefinition:r=>Object.assign({tokenizedText:[Ht("plain",r.name)]},t(r)),InlineFragment:r=>r.selectionSet}}function Ht(e,t){return{kind:e,value:t}}function vZ(e,t){let r=[];for(let n=0;n{"use strict";Object.defineProperty(Mm,"__esModule",{value:!0});Mm.getHoverInformation=void 0;var RM=ct(),FM=ZD();function gZ(e,t,r,n,a){let o=n||(0,FM.getTokenAtPosition)(t,r);if(!e||!o||!o.state)return"";let s=o.state,l=s.kind,d=s.step,h=(0,FM.getTypeInfo)(e,o.state),v=Object.assign(Object.assign({},a),{schema:e});if(l==="Field"&&d===0&&h.fieldDef||l==="AliasedField"&&d===2&&h.fieldDef){let b=[];return Cp(b,v),mZ(b,h,v),wp(b,v),Ap(b,v,h.fieldDef),b.join("").trim()}else if(l==="Directive"&&d===1&&h.directiveDef){let b=[];return Cp(b,v),PM(b,h,v),wp(b,v),Ap(b,v,h.directiveDef),b.join("").trim()}else if(l==="Argument"&&d===0&&h.argDef){let b=[];return Cp(b,v),yZ(b,h,v),wp(b,v),Ap(b,v,h.argDef),b.join("").trim()}else if(l==="EnumValue"&&h.enumValue&&"description"in h.enumValue){let b=[];return Cp(b,v),bZ(b,h,v),wp(b,v),Ap(b,v,h.enumValue),b.join("").trim()}else if(l==="NamedType"&&h.type&&"description"in h.type){let b=[];return Cp(b,v),Ec(b,h,v,h.type),wp(b,v),Ap(b,v,h.type),b.join("").trim()}return""}Mm.getHoverInformation=gZ;function Cp(e,t){t.useMarkdown&&wr(e,"```graphql\n")}function wp(e,t){t.useMarkdown&&wr(e,"\n```")}function mZ(e,t,r){jM(e,t,r),MM(e,t,r,t.type)}function jM(e,t,r){if(!t.fieldDef)return;let n=t.fieldDef.name;n.slice(0,2)!=="__"&&(Ec(e,t,r,t.parentType),wr(e,".")),wr(e,n)}function PM(e,t,r){if(!t.directiveDef)return;let n="@"+t.directiveDef.name;wr(e,n)}function yZ(e,t,r){if(t.directiveDef?PM(e,t,r):t.fieldDef&&jM(e,t,r),!t.argDef)return;let n=t.argDef.name;wr(e,"("),wr(e,n),MM(e,t,r,t.inputType),wr(e,")")}function MM(e,t,r,n){wr(e,": "),Ec(e,t,r,n)}function bZ(e,t,r){if(!t.enumValue)return;let n=t.enumValue.name;Ec(e,t,r,t.inputType),wr(e,"."),wr(e,n)}function Ec(e,t,r,n){!n||(n instanceof RM.GraphQLNonNull?(Ec(e,t,r,n.ofType),wr(e,"!")):n instanceof RM.GraphQLList?(wr(e,"["),Ec(e,t,r,n.ofType),wr(e,"]")):wr(e,n.name))}function Ap(e,t,r){if(!r)return;let n=typeof r.description=="string"?r.description:null;n&&(wr(e,` +`,d),""));try{l=(0,ete.parse)(e)}catch(d){if(d instanceof fy.GraphQLError){let h=jU((s=(o=d.locations)===null||o===void 0?void 0:o[0])!==null&&s!==void 0?s:{line:0,column:0},e);return[{severity:rn.DIAGNOSTIC_SEVERITY.Error,message:d.message,source:"GraphQL: Syntax",range:h}]}throw d}return IU(l,t,r,n)}rn.getDiagnostics=tte;function IU(e,t=null,r,n){if(!t)return[];let i=AU((0,Gs.validateWithCustomRules)(t,e,r,n),s=>RU(s,rn.DIAGNOSTIC_SEVERITY.Error,"Validation")),o=AU((0,fy.validate)(t,e,[fy.NoDeprecatedCustomRule]),s=>RU(s,rn.DIAGNOSTIC_SEVERITY.Warning,"Deprecation"));return i.concat(o)}rn.validateQuery=IU;function AU(e,t){return Array.prototype.concat.apply([],e.map(t))}function RU(e,t,r){if(!e.nodes)return[];let n=[];return e.nodes.forEach(i=>{let o=i.kind!=="Variable"&&"name"in i&&i.name!==void 0?i.name:"variable"in i&&i.variable!==void 0?i.variable:i;if(o){dy(e.locations,"GraphQL validation error requires locations.");let s=e.locations[0],l=rte(o),d=s.column+(l.end-l.start);n.push({source:`GraphQL: ${r}`,message:e.message,severity:t,range:new Gs.Range(new Gs.Position(s.line-1,s.column-1),new Gs.Position(s.line-1,d))})}}),n}function jU(e,t){let r=(0,LU.onlineParser)(),n=r.startState(),i=t.split(` +`);dy(i.length>=e.line,"Query text must have more lines than where the error happened");let o=null;for(let h=0;h{"use strict";Object.defineProperty(py,"__esModule",{value:!0});py.getOutline=void 0;var cw=ht(),FU=Hp(),{INLINE_FRAGMENT:nte}=cw.Kind;function ite(e){let t;try{t=(0,cw.parse)(e)}catch(i){return null}let r=ate(e);return{outlineTrees:(0,cw.visit)(t,{leave(i){return r!==void 0&&i.kind in r?r[i.kind](i):null}})}}py.getOutline=ite;function ate(e){let t=r=>({representativeName:r.name,startPosition:(0,FU.offsetToPosition)(e,r.loc.start),endPosition:(0,FU.offsetToPosition)(e,r.loc.end),kind:r.kind,children:r.selectionSet||r.fields||r.values||r.arguments||[]});return{Field:r=>{let n=r.alias?[rr("plain",r.alias),rr("plain",": ")]:[];return n.push(rr("plain",r.name)),Object.assign({tokenizedText:n},t(r))},OperationDefinition:r=>Object.assign({tokenizedText:[rr("keyword",r.operation),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),Document:r=>r.definitions,SelectionSet:r=>ote(r.selections,n=>n.kind===nte?n.selectionSet:n),Name:r=>r.value,FragmentDefinition:r=>Object.assign({tokenizedText:[rr("keyword","fragment"),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),InterfaceTypeDefinition:r=>Object.assign({tokenizedText:[rr("keyword","interface"),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),EnumTypeDefinition:r=>Object.assign({tokenizedText:[rr("keyword","enum"),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),EnumValueDefinition:r=>Object.assign({tokenizedText:[rr("plain",r.name)]},t(r)),ObjectTypeDefinition:r=>Object.assign({tokenizedText:[rr("keyword","type"),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),InputObjectTypeDefinition:r=>Object.assign({tokenizedText:[rr("keyword","input"),rr("whitespace"," "),rr("class-name",r.name)]},t(r)),FragmentSpread:r=>Object.assign({tokenizedText:[rr("plain","..."),rr("class-name",r.name)]},t(r)),InputValueDefinition:r=>Object.assign({tokenizedText:[rr("plain",r.name)]},t(r)),FieldDefinition:r=>Object.assign({tokenizedText:[rr("plain",r.name)]},t(r)),InlineFragment:r=>r.selectionSet}}function rr(e,t){return{kind:e,value:t}}function ote(e,t){let r=[];for(let n=0;n{"use strict";Object.defineProperty(hy,"__esModule",{value:!0});hy.getHoverInformation=void 0;var qU=ht(),VU=ew();function ute(e,t,r,n,i){let o=n||(0,VU.getTokenAtPosition)(t,r);if(!e||!o||!o.state)return"";let s=o.state,l=s.kind,d=s.step,h=(0,VU.getTypeInfo)(e,o.state),v=Object.assign(Object.assign({},i),{schema:e});if(l==="Field"&&d===0&&h.fieldDef||l==="AliasedField"&&d===2&&h.fieldDef){let y=[];return zp(y,v),ste(y,h,v),Wp(y,v),Yp(y,v,h.fieldDef),y.join("").trim()}else if(l==="Directive"&&d===1&&h.directiveDef){let y=[];return zp(y,v),GU(y,h,v),Wp(y,v),Yp(y,v,h.directiveDef),y.join("").trim()}else if(l==="Argument"&&d===0&&h.argDef){let y=[];return zp(y,v),lte(y,h,v),Wp(y,v),Yp(y,v,h.argDef),y.join("").trim()}else if(l==="EnumValue"&&h.enumValue&&"description"in h.enumValue){let y=[];return zp(y,v),cte(y,h,v),Wp(y,v),Yp(y,v,h.enumValue),y.join("").trim()}else if(l==="NamedType"&&h.type&&"description"in h.type){let y=[];return zp(y,v),Gc(y,h,v,h.type),Wp(y,v),Yp(y,v,h.type),y.join("").trim()}return""}hy.getHoverInformation=ute;function zp(e,t){t.useMarkdown&&Ur(e,"```graphql\n")}function Wp(e,t){t.useMarkdown&&Ur(e,"\n```")}function ste(e,t,r){UU(e,t,r),QU(e,t,r,t.type)}function UU(e,t,r){if(!t.fieldDef)return;let n=t.fieldDef.name;n.slice(0,2)!=="__"&&(Gc(e,t,r,t.parentType),Ur(e,".")),Ur(e,n)}function GU(e,t,r){if(!t.directiveDef)return;let n="@"+t.directiveDef.name;Ur(e,n)}function lte(e,t,r){if(t.directiveDef?GU(e,t,r):t.fieldDef&&UU(e,t,r),!t.argDef)return;let n=t.argDef.name;Ur(e,"("),Ur(e,n),QU(e,t,r,t.inputType),Ur(e,")")}function QU(e,t,r,n){Ur(e,": "),Gc(e,t,r,n)}function cte(e,t,r){if(!t.enumValue)return;let n=t.enumValue.name;Gc(e,t,r,t.inputType),Ur(e,"."),Ur(e,n)}function Gc(e,t,r,n){!n||(n instanceof qU.GraphQLNonNull?(Gc(e,t,r,n.ofType),Ur(e,"!")):n instanceof qU.GraphQLList?(Ur(e,"["),Gc(e,t,r,n.ofType),Ur(e,"]")):Ur(e,n.name))}function Yp(e,t,r){if(!r)return;let n=typeof r.description=="string"?r.description:null;n&&(Ur(e,` -`),wr(e,n)),TZ(e,t,r)}function TZ(e,t,r){if(!r)return;let n=r.deprecationReason?r.deprecationReason:null;!n||(wr(e,` +`),Ur(e,n)),fte(e,t,r)}function fte(e,t,r){if(!r)return;let n=r.deprecationReason?r.deprecationReason:null;!n||(Ur(e,` -`),wr(e,"Deprecated: "),wr(e,n))}function wr(e,t){e.push(t)}});var BM=U($n=>{"use strict";var EZ=$n&&$n.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,a)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),qm=$n&&$n.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&EZ(t,e,r)};Object.defineProperty($n,"__esModule",{value:!0});$n.getHoverInformation=$n.getOutline=void 0;qm(VD(),$n);qm(ZD(),$n);qm(kM(),$n);qm(LM(),$n);var _Z=IM();Object.defineProperty($n,"getOutline",{enumerable:!0,get:function(){return _Z.getOutline}});var SZ=qM();Object.defineProperty($n,"getHoverInformation",{enumerable:!0,get:function(){return SZ.getHoverInformation}})});var VM=U(Os=>{"use strict";Object.defineProperty(Os,"__esModule",{value:!0});Os.CompletionItemKind=Os.FileChangeTypeKind=void 0;Os.FileChangeTypeKind={Created:1,Changed:2,Deleted:3};var DZ;(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(DZ=Os.CompletionItemKind||(Os.CompletionItemKind={}))});var _c=U(de=>{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.Range=de.validateWithCustomRules=de.collectVariables=de.Position=de.pointToOffset=de.offsetToPosition=de.getVariablesJSONSchema=de.getQueryFacts=de.getOperationFacts=de.getOperationASTFacts=de.getFragmentDependenciesForAST=de.getFragmentDependencies=de.getASTNodeAtPosition=de.FileChangeTypeKind=de.CompletionItemKind=de.opt=de.t=de.list=de.p=de.isIgnored=de.LexRules=de.RuleKinds=de.CharacterStream=de.ParseRules=de.onlineParser=de.validateQuery=de.SuggestionCommand=de.canUseDirective=de.DIAGNOSTIC_SEVERITY=de.SEVERITY=de.getVariableCompletions=de.getTypeInfo=de.getTokenAtPosition=de.getRange=de.getOutline=de.getHoverInformation=de.getFragmentDefinitions=de.getFieldDef=de.getDiagnostics=de.getDefinitionState=de.getDefinitionQueryResultForField=de.getDefinitionQueryResultForNamedType=de.getDefinitionQueryResultForFragmentSpread=de.getDefinitionQueryResultForDefinitionNode=de.getAutocompleteSuggestions=void 0;var Ar=BM();Object.defineProperty(de,"getAutocompleteSuggestions",{enumerable:!0,get:function(){return Ar.getAutocompleteSuggestions}});Object.defineProperty(de,"getDefinitionQueryResultForDefinitionNode",{enumerable:!0,get:function(){return Ar.getDefinitionQueryResultForDefinitionNode}});Object.defineProperty(de,"getDefinitionQueryResultForFragmentSpread",{enumerable:!0,get:function(){return Ar.getDefinitionQueryResultForFragmentSpread}});Object.defineProperty(de,"getDefinitionQueryResultForNamedType",{enumerable:!0,get:function(){return Ar.getDefinitionQueryResultForNamedType}});Object.defineProperty(de,"getDefinitionQueryResultForField",{enumerable:!0,get:function(){return Ar.getDefinitionQueryResultForField}});Object.defineProperty(de,"getDefinitionState",{enumerable:!0,get:function(){return Ar.getDefinitionState}});Object.defineProperty(de,"getDiagnostics",{enumerable:!0,get:function(){return Ar.getDiagnostics}});Object.defineProperty(de,"getFieldDef",{enumerable:!0,get:function(){return Ar.getFieldDef}});Object.defineProperty(de,"getFragmentDefinitions",{enumerable:!0,get:function(){return Ar.getFragmentDefinitions}});Object.defineProperty(de,"getHoverInformation",{enumerable:!0,get:function(){return Ar.getHoverInformation}});Object.defineProperty(de,"getOutline",{enumerable:!0,get:function(){return Ar.getOutline}});Object.defineProperty(de,"getRange",{enumerable:!0,get:function(){return Ar.getRange}});Object.defineProperty(de,"getTokenAtPosition",{enumerable:!0,get:function(){return Ar.getTokenAtPosition}});Object.defineProperty(de,"getTypeInfo",{enumerable:!0,get:function(){return Ar.getTypeInfo}});Object.defineProperty(de,"getVariableCompletions",{enumerable:!0,get:function(){return Ar.getVariableCompletions}});Object.defineProperty(de,"SEVERITY",{enumerable:!0,get:function(){return Ar.SEVERITY}});Object.defineProperty(de,"DIAGNOSTIC_SEVERITY",{enumerable:!0,get:function(){return Ar.DIAGNOSTIC_SEVERITY}});Object.defineProperty(de,"canUseDirective",{enumerable:!0,get:function(){return Ar.canUseDirective}});Object.defineProperty(de,"SuggestionCommand",{enumerable:!0,get:function(){return Ar.SuggestionCommand}});Object.defineProperty(de,"validateQuery",{enumerable:!0,get:function(){return Ar.validateQuery}});var qa=Am();Object.defineProperty(de,"onlineParser",{enumerable:!0,get:function(){return qa.onlineParser}});Object.defineProperty(de,"ParseRules",{enumerable:!0,get:function(){return qa.ParseRules}});Object.defineProperty(de,"CharacterStream",{enumerable:!0,get:function(){return qa.CharacterStream}});Object.defineProperty(de,"RuleKinds",{enumerable:!0,get:function(){return qa.RuleKinds}});Object.defineProperty(de,"LexRules",{enumerable:!0,get:function(){return qa.LexRules}});Object.defineProperty(de,"isIgnored",{enumerable:!0,get:function(){return qa.isIgnored}});Object.defineProperty(de,"p",{enumerable:!0,get:function(){return qa.p}});Object.defineProperty(de,"list",{enumerable:!0,get:function(){return qa.list}});Object.defineProperty(de,"t",{enumerable:!0,get:function(){return qa.t}});Object.defineProperty(de,"opt",{enumerable:!0,get:function(){return qa.opt}});var UM=VM();Object.defineProperty(de,"CompletionItemKind",{enumerable:!0,get:function(){return UM.CompletionItemKind}});Object.defineProperty(de,"FileChangeTypeKind",{enumerable:!0,get:function(){return UM.FileChangeTypeKind}});var fi=Op();Object.defineProperty(de,"getASTNodeAtPosition",{enumerable:!0,get:function(){return fi.getASTNodeAtPosition}});Object.defineProperty(de,"getFragmentDependencies",{enumerable:!0,get:function(){return fi.getFragmentDependencies}});Object.defineProperty(de,"getFragmentDependenciesForAST",{enumerable:!0,get:function(){return fi.getFragmentDependenciesForAST}});Object.defineProperty(de,"getOperationASTFacts",{enumerable:!0,get:function(){return fi.getOperationASTFacts}});Object.defineProperty(de,"getOperationFacts",{enumerable:!0,get:function(){return fi.getOperationFacts}});Object.defineProperty(de,"getQueryFacts",{enumerable:!0,get:function(){return fi.getQueryFacts}});Object.defineProperty(de,"getVariablesJSONSchema",{enumerable:!0,get:function(){return fi.getVariablesJSONSchema}});Object.defineProperty(de,"offsetToPosition",{enumerable:!0,get:function(){return fi.offsetToPosition}});Object.defineProperty(de,"pointToOffset",{enumerable:!0,get:function(){return fi.pointToOffset}});Object.defineProperty(de,"Position",{enumerable:!0,get:function(){return fi.Position}});Object.defineProperty(de,"collectVariables",{enumerable:!0,get:function(){return fi.collectVariables}});Object.defineProperty(de,"validateWithCustomRules",{enumerable:!0,get:function(){return fi.validateWithCustomRules}});Object.defineProperty(de,"Range",{enumerable:!0,get:function(){return fi.Range}})});var QM=U(Vm=>{"use strict";var kZ=Vm&&Vm.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Vm,"__esModule",{value:!0});var Bm=kZ(ft());vp();var GM=_c();Bm.default.registerHelper("hint","graphql",function(e,t){var r=t.schema;if(!!r){var n=e.getCursor(),a=e.getTokenAt(n),o=a.type!==null&&/"|\w/.test(a.string[0])?a.start:a.end,s=new GM.Position(n.line,o),l=(0,GM.getAutocompleteSuggestions)(r,e.getValue(),s,a,t.externalFragments),d={list:l.map(function(h){return{text:h.label,type:h.type,description:h.documentation,isDeprecated:h.isDeprecated,deprecationReason:h.deprecationReason}}),from:{line:n.line,ch:o},to:{line:n.line,ch:a.end}};return(d==null?void 0:d.list)&&d.list.length>0&&(d.from=Bm.default.Pos(d.from.line,d.from.ch),d.to=Bm.default.Pos(d.to.line,d.to.ch),Bm.default.signal(e,"hasCompletion",e,d,a)),d}})});var HM=U(Um=>{"use strict";var OZ=Um&&Um.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Um,"__esModule",{value:!0});var l1=OZ(ft()),CZ=_c(),KM=["error","warning","information","hint"],wZ={"GraphQL: Validation":"validation","GraphQL: Deprecation":"deprecation","GraphQL: Syntax":"syntax"};l1.default.registerHelper("lint","graphql",function(e,t){var r=t.schema,n=(0,CZ.getDiagnostics)(e,r,t.validationRules,void 0,t.externalFragments),a=n.map(function(o){return{message:o.message,severity:o.severity?KM[o.severity-1]:KM[0],type:o.source?wZ[o.source]:void 0,from:l1.default.Pos(o.range.start.line,o.range.start.character),to:l1.default.Pos(o.range.end.line,o.range.end.character)}});return a})});var f1=U(c1=>{"use strict";Object.defineProperty(c1,"__esModule",{value:!0});function AZ(e,t){for(var r=[],n=e;n==null?void 0:n.kind;)r.push(n),n=n.prevState;for(var a=r.length-1;a>=0;a--)t(r[a])}c1.default=AZ});var d1=U(Np=>{"use strict";var NZ=Np&&Np.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Np,"__esModule",{value:!0});var Eu=ct(),Sc=Yn(),LZ=NZ(f1());function xZ(e,t){var r={schema:e,type:null,parentType:null,inputType:null,directiveDef:null,fieldDef:null,argDef:null,argDefs:null,objectFieldDefs:null};return(0,LZ.default)(t,function(n){var a,o;switch(n.kind){case"Query":case"ShortQuery":r.type=e.getQueryType();break;case"Mutation":r.type=e.getMutationType();break;case"Subscription":r.type=e.getSubscriptionType();break;case"InlineFragment":case"FragmentDefinition":n.type&&(r.type=e.getType(n.type));break;case"Field":case"AliasedField":r.fieldDef=r.type&&n.name?zM(e,r.parentType,n.name):null,r.type=(a=r.fieldDef)===null||a===void 0?void 0:a.type;break;case"SelectionSet":r.parentType=r.type?(0,Eu.getNamedType)(r.type):null;break;case"Directive":r.directiveDef=n.name?e.getDirective(n.name):null;break;case"Arguments":var s=n.prevState?n.prevState.kind==="Field"?r.fieldDef:n.prevState.kind==="Directive"?r.directiveDef:n.prevState.kind==="AliasedField"?n.prevState.name&&zM(e,r.parentType,n.prevState.name):null:null;r.argDefs=s?s.args:null;break;case"Argument":if(r.argDef=null,r.argDefs){for(var l=0;l{"use strict";Object.defineProperty(Mi,"__esModule",{value:!0});Mi.getTypeReference=Mi.getEnumValueReference=Mi.getArgumentReference=Mi.getDirectiveReference=Mi.getFieldReference=void 0;var RZ=ct();function FZ(e){return{kind:"Field",schema:e.schema,field:e.fieldDef,type:WM(e.fieldDef)?null:e.parentType}}Mi.getFieldReference=FZ;function jZ(e){return{kind:"Directive",schema:e.schema,directive:e.directiveDef}}Mi.getDirectiveReference=jZ;function PZ(e){return e.directiveDef?{kind:"Argument",schema:e.schema,argument:e.argDef,directive:e.directiveDef}:{kind:"Argument",schema:e.schema,argument:e.argDef,field:e.fieldDef,type:WM(e.fieldDef)?null:e.parentType}}Mi.getArgumentReference=PZ;function MZ(e){return{kind:"EnumValue",value:e.enumValue||void 0,type:e.inputType?(0,RZ.getNamedType)(e.inputType):void 0}}Mi.getEnumValueReference=MZ;function qZ(e,t){return{kind:"Type",schema:e.schema,type:t||e.type}}Mi.getTypeReference=qZ;function WM(e){return e.name.slice(0,2)==="__"}});var h1=U(Gm=>{"use strict";var BZ=Gm&&Gm.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Gm,"__esModule",{value:!0});var En=BZ(ft());En.default.defineOption("info",!1,function(e,t,r){if(r&&r!==En.default.Init){var n=e.state.info.onMouseOver;En.default.off(e.getWrapperElement(),"mouseover",n),clearTimeout(e.state.info.hoverTimeout),delete e.state.info}if(t){var a=e.state.info=VZ(t);a.onMouseOver=GZ.bind(null,e),En.default.on(e.getWrapperElement(),"mouseover",a.onMouseOver)}});function VZ(e){return{options:e instanceof Function?{render:e}:e===!0?{}:e}}function UZ(e){var t=e.state.info.options;return(t==null?void 0:t.hoverTime)||500}function GZ(e,t){var r=e.state.info,n=t.target||t.srcElement;if(n instanceof HTMLElement&&!(n.nodeName!=="SPAN"||r.hoverTimeout!==void 0)){var a=n.getBoundingClientRect(),o=function(){clearTimeout(r.hoverTimeout),r.hoverTimeout=setTimeout(l,d)},s=function(){En.default.off(document,"mousemove",o),En.default.off(e.getWrapperElement(),"mouseout",s),clearTimeout(r.hoverTimeout),r.hoverTimeout=void 0},l=function(){En.default.off(document,"mousemove",o),En.default.off(e.getWrapperElement(),"mouseout",s),r.hoverTimeout=void 0,QZ(e,a)},d=UZ(e);r.hoverTimeout=setTimeout(l,d),En.default.on(document,"mousemove",o),En.default.on(e.getWrapperElement(),"mouseout",s)}}function QZ(e,t){var r=e.coordsChar({left:(t.left+t.right)/2,top:(t.top+t.bottom)/2}),n=e.state.info,a=n.options,o=a.render||e.getHelper(r,"info");if(o){var s=e.getTokenAt(r,!0);if(s){var l=o(s,a,e,r);l&&KZ(e,t,l)}}}function KZ(e,t,r){var n=document.createElement("div");n.className="CodeMirror-info",n.appendChild(r),document.body.appendChild(n);var a=n.getBoundingClientRect(),o=window.getComputedStyle(n),s=a.right-a.left+parseFloat(o.marginLeft)+parseFloat(o.marginRight),l=a.bottom-a.top+parseFloat(o.marginTop)+parseFloat(o.marginBottom),d=t.bottom;l>window.innerHeight-t.bottom-15&&t.top>window.innerHeight-t.bottom&&(d=t.top-l),d<0&&(d=t.bottom);var h=Math.max(0,window.innerWidth-s-15);h>t.left&&(h=t.left),n.style.opacity="1",n.style.top=d+"px",n.style.left=h+"px";var v,b=function(){clearTimeout(v)},T=function(){clearTimeout(v),v=setTimeout(A,200)},A=function(){En.default.off(n,"mouseover",b),En.default.off(n,"mouseout",T),En.default.off(e.getWrapperElement(),"mouseout",T),n.style.opacity?(n.style.opacity="0",setTimeout(function(){n.parentNode&&n.parentNode.removeChild(n)},600)):n.parentNode&&n.parentNode.removeChild(n)};En.default.on(n,"mouseover",b),En.default.on(n,"mouseout",T),En.default.on(e.getWrapperElement(),"mouseout",T)}});var eq=U(Qm=>{"use strict";var YM=Qm&&Qm.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Qm,"__esModule",{value:!0});var JM=ct(),HZ=YM(ft()),zZ=YM(d1()),Lp=p1();h1();HZ.default.registerHelper("info","graphql",function(e,t){if(!(!t.schema||!e.state)){var r=e.state,n=r.kind,a=r.step,o=(0,zZ.default)(t.schema,e.state);if(n==="Field"&&a===0&&o.fieldDef||n==="AliasedField"&&a===2&&o.fieldDef){var s=document.createElement("div");return WZ(s,o,t),xp(s,t,o.fieldDef),s}else if(n==="Directive"&&a===1&&o.directiveDef){var s=document.createElement("div");return ZM(s,o,t),xp(s,t,o.directiveDef),s}else if(n==="Argument"&&a===0&&o.argDef){var s=document.createElement("div");return YZ(s,o,t),xp(s,t,o.argDef),s}else if(n==="EnumValue"&&o.enumValue&&o.enumValue.description){var s=document.createElement("div");return JZ(s,o,t),xp(s,t,o.enumValue),s}else if(n==="NamedType"&&o.type&&o.type.description){var s=document.createElement("div");return Dc(s,o,t,o.type),xp(s,t,o.type),s}}});function WZ(e,t,r){XM(e,t,r),$M(e,t,r,t.type)}function XM(e,t,r){var n,a=((n=t.fieldDef)===null||n===void 0?void 0:n.name)||"";a.slice(0,2)!=="__"&&(Dc(e,t,r,t.parentType),di(e,".")),di(e,a,"field-name",r,(0,Lp.getFieldReference)(t))}function ZM(e,t,r){var n,a="@"+(((n=t.directiveDef)===null||n===void 0?void 0:n.name)||"");di(e,a,"directive-name",r,(0,Lp.getDirectiveReference)(t))}function YZ(e,t,r){var n;t.directiveDef?ZM(e,t,r):t.fieldDef&&XM(e,t,r);var a=((n=t.argDef)===null||n===void 0?void 0:n.name)||"";di(e,"("),di(e,a,"arg-name",r,(0,Lp.getArgumentReference)(t)),$M(e,t,r,t.inputType),di(e,")")}function $M(e,t,r,n){di(e,": "),Dc(e,t,r,n)}function JZ(e,t,r){var n,a=((n=t.enumValue)===null||n===void 0?void 0:n.name)||"";Dc(e,t,r,t.inputType),di(e,"."),di(e,a,"enum-value",r,(0,Lp.getEnumValueReference)(t))}function Dc(e,t,r,n){n instanceof JM.GraphQLNonNull?(Dc(e,t,r,n.ofType),di(e,"!")):n instanceof JM.GraphQLList?(di(e,"["),Dc(e,t,r,n.ofType),di(e,"]")):di(e,(n==null?void 0:n.name)||"","type-name",r,(0,Lp.getTypeReference)(t,n))}function xp(e,t,r){var n=r.description;if(n){var a=document.createElement("div");a.className="info-description",t.renderDescription?a.innerHTML=t.renderDescription(n):a.appendChild(document.createTextNode(n)),e.appendChild(a)}XZ(e,t,r)}function XZ(e,t,r){var n=r.deprecationReason;if(n){var a=document.createElement("div");a.className="info-deprecation",t.renderDescription?a.innerHTML=t.renderDescription(n):a.appendChild(document.createTextNode(n));var o=document.createElement("span");o.className="info-deprecation-label",o.appendChild(document.createTextNode("Deprecated: ")),a.insertBefore(o,a.firstChild),e.appendChild(a)}}function di(e,t,r,n,a){if(r===void 0&&(r=""),n===void 0&&(n={onClick:null}),a===void 0&&(a=null),r){var o=n.onClick,s=void 0;o?(s=document.createElement("a"),s.href="javascript:void 0",s.addEventListener("click",function(l){o(a,l)})):s=document.createElement("span"),s.className=r,s.appendChild(document.createTextNode(t)),e.appendChild(s)}else e.appendChild(document.createTextNode(t))}});var nq=U(Km=>{"use strict";var ZZ=Km&&Km.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Km,"__esModule",{value:!0});var qi=ZZ(ft());qi.default.defineOption("jump",!1,function(e,t,r){if(r&&r!==qi.default.Init){var n=e.state.jump.onMouseOver;qi.default.off(e.getWrapperElement(),"mouseover",n);var a=e.state.jump.onMouseOut;qi.default.off(e.getWrapperElement(),"mouseout",a),qi.default.off(document,"keydown",e.state.jump.onKeyDown),delete e.state.jump}if(t){var o=e.state.jump={options:t,onMouseOver:$Z.bind(null,e),onMouseOut:e$.bind(null,e),onKeyDown:t$.bind(null,e)};qi.default.on(e.getWrapperElement(),"mouseover",o.onMouseOver),qi.default.on(e.getWrapperElement(),"mouseout",o.onMouseOut),qi.default.on(document,"keydown",o.onKeyDown)}});function $Z(e,t){var r=t.target||t.srcElement;if(r instanceof HTMLElement&&(r==null?void 0:r.nodeName)==="SPAN"){var n=r.getBoundingClientRect(),a={left:(n.left+n.right)/2,top:(n.top+n.bottom)/2};e.state.jump.cursor=a,e.state.jump.isHoldingModifier&&tq(e)}}function e$(e){if(!e.state.jump.isHoldingModifier&&e.state.jump.cursor){e.state.jump.cursor=null;return}e.state.jump.isHoldingModifier&&e.state.jump.marker&&rq(e)}function t$(e,t){if(!(e.state.jump.isHoldingModifier||!n$(t.key))){e.state.jump.isHoldingModifier=!0,e.state.jump.cursor&&tq(e);var r=function(o){o.code===t.code&&(e.state.jump.isHoldingModifier=!1,e.state.jump.marker&&rq(e),qi.default.off(document,"keyup",r),qi.default.off(document,"click",n),e.off("mousedown",a))},n=function(o){var s=e.state.jump.destination;s&&e.state.jump.options.onClick(s,o)},a=function(o,s){e.state.jump.destination&&(s.codemirrorIgnore=!0)};qi.default.on(document,"keyup",r),qi.default.on(document,"click",n),e.on("mousedown",a)}}var r$=typeof navigator!="undefined"&&navigator&&navigator.appVersion.indexOf("Mac")!==-1;function n$(e){return e===(r$?"Meta":"Control")}function tq(e){if(!e.state.jump.marker){var t=e.state.jump.cursor,r=e.coordsChar(t),n=e.getTokenAt(r,!0),a=e.state.jump.options,o=a.getDestination||e.getHelper(r,"jump");if(o){var s=o(n,a,e);if(s){var l=e.markText({line:r.line,ch:n.start},{line:r.line,ch:n.end},{className:"CodeMirror-jump-token"});e.state.jump.marker=l,e.state.jump.destination=s}}}}function rq(e){var t=e.state.jump.marker;e.state.jump.marker=null,e.state.jump.destination=null,t.clear()}});var aq=U(Hm=>{"use strict";var iq=Hm&&Hm.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Hm,"__esModule",{value:!0});var i$=iq(ft()),a$=iq(d1()),Ip=p1();nq();i$.default.registerHelper("jump","graphql",function(e,t){if(!(!t.schema||!t.onClick||!e.state)){var r=e.state,n=r.kind,a=r.step,o=(0,a$.default)(t.schema,r);if(n==="Field"&&a===0&&o.fieldDef||n==="AliasedField"&&a===2&&o.fieldDef)return(0,Ip.getFieldReference)(o);if(n==="Directive"&&a===1&&o.directiveDef)return(0,Ip.getDirectiveReference)(o);if(n==="Argument"&&a===0&&o.argDef)return(0,Ip.getArgumentReference)(o);if(n==="EnumValue"&&o.enumValue)return(0,Ip.getEnumValueReference)(o);if(n==="NamedType"&&o.type)return(0,Ip.getTypeReference)(o)}})});var oq=U(v1=>{"use strict";Object.defineProperty(v1,"__esModule",{value:!0});function o$(e,t){var r,n,a=e.levels,o=!a||a.length===0?e.indentLevel:a[a.length-1]-(((r=this.electricInput)===null||r===void 0?void 0:r.test(t))?1:0);return(o||0)*(((n=this.config)===null||n===void 0?void 0:n.indentUnit)||0)}v1.default=o$});var uq=U(Rp=>{"use strict";var u$=Rp&&Rp.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Rp,"__esModule",{value:!0});var zm=_c(),s$=u$(oq()),l$=function(e){var t=(0,zm.onlineParser)({eatWhitespace:function(r){return r.eatWhile(zm.isIgnored)},lexRules:zm.LexRules,parseRules:zm.ParseRules,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:s$.default,electricInput:/^\s*[})\]]/,fold:"brace",lineComment:"#",closeBrackets:{pairs:'()[]{}""',explode:"()[]{}"}}};Rp.default=l$});var lq=U(Wm=>{"use strict";var sq=Wm&&Wm.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Wm,"__esModule",{value:!0});var c$=sq(ft()),f$=sq(uq());c$.default.defineMode("graphql",f$.default)});var dq=U(y1=>{"use strict";Object.defineProperty(y1,"__esModule",{value:!0});function v$(e,t,r){var n=g$(r,fq(t.string));if(!!n){var a=t.type!==null&&/"|\w/.test(t.string[0])?t.start:t.end;return{list:n,from:{line:e.line,ch:a},to:{line:e.line,ch:t.end}}}}y1.default=v$;function g$(e,t){if(!t)return m1(e,function(o){return!o.isDeprecated});var r=e.map(function(o){return{proximity:m$(fq(o.text),t),entry:o}}),n=m1(m1(r,function(o){return o.proximity<=2}),function(o){return!o.entry.isDeprecated}),a=n.sort(function(o,s){return(o.entry.isDeprecated?1:0)-(s.entry.isDeprecated?1:0)||o.proximity-s.proximity||o.entry.text.length-s.entry.text.length});return a.map(function(o){return o.entry})}function m1(e,t){var r=e.filter(t);return r.length===0?e:r}function fq(e){return e.toLowerCase().replace(/\W/g,"")}function m$(e,t){var r=y$(t,e);return e.length>t.length&&(r-=e.length-t.length-1,r+=e.indexOf(t)===0?0:.5),r}function y$(e,t){var r,n,a=[],o=e.length,s=t.length;for(r=0;r<=o;r++)a[r]=[r];for(n=1;n<=s;n++)a[0][n]=n;for(r=1;r<=o;r++)for(n=1;n<=s;n++){var l=e[r-1]===t[n-1]?0:1;a[r][n]=Math.min(a[r-1][n]+1,a[r][n-1]+1,a[r-1][n-1]+l),r>1&&n>1&&e[r-1]===t[n-2]&&e[r-2]===t[n-1]&&(a[r][n]=Math.min(a[r][n],a[r-2][n-2]+l))}return a[o][s]}});var pq=U(Zm=>{"use strict";var b1=Zm&&Zm.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Zm,"__esModule",{value:!0});var Xm=b1(ft()),Ba=ct(),b$=b1(f1()),kc=b1(dq());Xm.default.registerHelper("hint","graphql-variables",function(e,t){var r=e.getCursor(),n=e.getTokenAt(r),a=T$(r,n,t);return(a==null?void 0:a.list)&&a.list.length>0&&(a.from=Xm.default.Pos(a.from.line,a.from.ch),a.to=Xm.default.Pos(a.to.line,a.to.ch),Xm.default.signal(e,"hasCompletion",e,a,n)),a});function T$(e,t,r){var n=t.state.kind==="Invalid"?t.state.prevState:t.state,a=n.kind,o=n.step;if(a==="Document"&&o===0)return(0,kc.default)(e,t,[{text:"{"}]);var s=r.variableToType;if(!!s){var l=E$(s,t.state);if(a==="Document"||a==="Variable"&&o===0){var d=Object.keys(s);return(0,kc.default)(e,t,d.map(function(T){return{text:'"'.concat(T,'": '),type:s[T]}}))}if((a==="ObjectValue"||a==="ObjectField"&&o===0)&&l.fields){var h=Object.keys(l.fields).map(function(T){return l.fields[T]});return(0,kc.default)(e,t,h.map(function(T){return{text:'"'.concat(T.name,'": '),type:T.type,description:T.description}}))}if(a==="StringValue"||a==="NumberValue"||a==="BooleanValue"||a==="NullValue"||a==="ListValue"&&o===1||a==="ObjectField"&&o===2||a==="Variable"&&o===2){var v=l.type?(0,Ba.getNamedType)(l.type):void 0;if(v instanceof Ba.GraphQLInputObjectType)return(0,kc.default)(e,t,[{text:"{"}]);if(v instanceof Ba.GraphQLEnumType){var b=v.getValues();return(0,kc.default)(e,t,b.map(function(T){return{text:'"'.concat(T.name,'"'),type:v,description:T.description}}))}else if(v===Ba.GraphQLBoolean)return(0,kc.default)(e,t,[{text:"true",type:Ba.GraphQLBoolean,description:"Not false."},{text:"false",type:Ba.GraphQLBoolean,description:"Not true."}])}}}function E$(e,t){var r={type:null,fields:null};return(0,b$.default)(t,function(n){if(n.kind==="Variable")r.type=e[n.name];else if(n.kind==="ListValue"){var a=r.type?(0,Ba.getNullableType)(r.type):void 0;r.type=a instanceof Ba.GraphQLList?a.ofType:null}else if(n.kind==="ObjectValue"){var o=r.type?(0,Ba.getNamedType)(r.type):void 0;r.fields=o instanceof Ba.GraphQLInputObjectType?o.getFields():null}else if(n.kind==="ObjectField"){var s=n.name&&r.fields?r.fields[n.name]:null;r.type=s==null?void 0:s.type}}),r}});var yq=U(Cs=>{"use strict";var _$=Cs&&Cs.__extends||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Cs,"__esModule",{value:!0});Cs.JSONSyntaxError=void 0;function S$(e){Va=e,$m=e.length,Qr=_n=Fp=-1,Kr(),ty();var t=hq();return _u("EOF"),t}Cs.default=S$;var Va,$m,Qr,_n,Fp,Dt,pi;function hq(){var e=Qr,t=[];if(_u("{"),!ey("}")){do t.push(D$());while(ey(","));_u("}")}return{kind:"Object",start:e,end:Fp,members:t}}function D$(){var e=Qr,t=pi==="String"?gq():null;_u("String"),_u(":");var r=vq();return{kind:"Member",start:e,end:Fp,key:t,value:r}}function k$(){var e=Qr,t=[];if(_u("["),!ey("]")){do t.push(vq());while(ey(","));_u("]")}return{kind:"Array",start:e,end:Fp,values:t}}function vq(){switch(pi){case"[":return k$();case"{":return hq();case"String":case"Number":case"Boolean":case"Null":var e=gq();return ty(),e}_u("Value")}function gq(){return{kind:pi,start:Qr,end:_n,value:JSON.parse(Va.slice(Qr,_n))}}function _u(e){if(pi===e){ty();return}var t;if(pi==="EOF")t="[end of file]";else if(_n-Qr>1)t="`"+Va.slice(Qr,_n)+"`";else{var r=Va.slice(Qr).match(/^.+?\b/);t="`"+(r?r[0]:Va[Qr])+"`"}throw Oc("Expected ".concat(e," but found ").concat(t,"."))}var mq=function(e){_$(t,e);function t(r,n){var a=e.call(this,r)||this;return a.position=n,a}return t}(Error);Cs.JSONSyntaxError=mq;function Oc(e){return new mq(e,{start:Qr,end:_n})}function ey(e){if(pi===e)return ty(),!0}function Kr(){return _n<$m&&(_n++,Dt=_n===$m?0:Va.charCodeAt(_n)),Dt}function ty(){for(Fp=_n;Dt===9||Dt===10||Dt===13||Dt===32;)Kr();if(Dt===0){pi="EOF";return}switch(Qr=_n,Dt){case 34:return pi="String",O$();case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return pi="Number",C$();case 102:if(Va.slice(Qr,Qr+5)!=="false")break;_n+=4,Kr(),pi="Boolean";return;case 110:if(Va.slice(Qr,Qr+4)!=="null")break;_n+=3,Kr(),pi="Null";return;case 116:if(Va.slice(Qr,Qr+4)!=="true")break;_n+=3,Kr(),pi="Boolean";return}pi=Va[Qr],Kr()}function O$(){for(Kr();Dt!==34&&Dt>31;)if(Dt===92)switch(Dt=Kr(),Dt){case 34:case 47:case 92:case 98:case 102:case 110:case 114:case 116:Kr();break;case 117:Kr(),ry(),ry(),ry(),ry();break;default:throw Oc("Bad character escape sequence.")}else{if(_n===$m)throw Oc("Unterminated string.");Kr()}if(Dt===34){Kr();return}throw Oc("Unterminated string.")}function ry(){if(Dt>=48&&Dt<=57||Dt>=65&&Dt<=70||Dt>=97&&Dt<=102)return Kr();throw Oc("Expected hexadecimal digit.")}function C$(){Dt===45&&Kr(),Dt===48?Kr():T1(),Dt===46&&(Kr(),T1()),(Dt===69||Dt===101)&&(Dt=Kr(),(Dt===43||Dt===45)&&Kr(),T1())}function T1(){if(Dt<48||Dt>57)throw Oc("Expected decimal digit.");do Kr();while(Dt>=48&&Dt<=57)}});var Eq=U(Bi=>{"use strict";var w$=Bi&&Bi.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var a=Object.getOwnPropertyDescriptor(t,r);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,a)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),A$=Bi&&Bi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),N$=Bi&&Bi.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&w$(t,e,r);return A$(t,e),t},L$=Bi&&Bi.__read||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),a,o=[],s;try{for(;(t===void 0||t-- >0)&&!(a=n.next()).done;)o.push(a.value)}catch(l){s={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},x$=Bi&&Bi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Bi,"__esModule",{value:!0});var I$=x$(ft()),Cc=ct(),bq=N$(yq());I$.default.registerHelper("lint","graphql-variables",function(e,t,r){if(!e)return[];var n;try{n=(0,bq.default)(e)}catch(o){if(o instanceof bq.JSONSyntaxError)return[E1(r,o.position,o.message)];throw o}var a=t.variableToType;return a?R$(r,a,n):[]});function R$(e,t,r){var n=[];return r.members.forEach(function(a){var o;if(a){var s=(o=a.key)===null||o===void 0?void 0:o.value,l=t[s];l?jp(l,a.value).forEach(function(d){var h=L$(d,2),v=h[0],b=h[1];n.push(E1(e,v,b))}):n.push(E1(e,a.key,'Variable "$'.concat(s,'" does not appear in any GraphQL query.')))}}),n}function jp(e,t){if(!e||!t)return[];if(e instanceof Cc.GraphQLNonNull)return t.kind==="Null"?[[t,'Type "'.concat(e,'" is non-nullable and cannot be null.')]]:jp(e.ofType,t);if(t.kind==="Null")return[];if(e instanceof Cc.GraphQLList){var r=e.ofType;if(t.kind==="Array"){var n=t.values||[];return Tq(n,function(s){return jp(r,s)})}return jp(r,t)}if(e instanceof Cc.GraphQLInputObjectType){if(t.kind!=="Object")return[[t,'Type "'.concat(e,'" must be an Object.')]];var a=Object.create(null),o=Tq(t.members,function(s){var l,d=(l=s==null?void 0:s.key)===null||l===void 0?void 0:l.value;a[d]=!0;var h=e.getFields()[d];if(!h)return[[s.key,'Type "'.concat(e,'" does not have a field "').concat(d,'".')]];var v=h?h.type:void 0;return jp(v,s.value)});return Object.keys(e.getFields()).forEach(function(s){if(!a[s]){var l=e.getFields()[s].type;l instanceof Cc.GraphQLNonNull&&o.push([t,'Object of type "'.concat(e,'" is missing required field "').concat(s,'".')])}}),o}return e.name==="Boolean"&&t.kind!=="Boolean"||e.name==="String"&&t.kind!=="String"||e.name==="ID"&&t.kind!=="Number"&&t.kind!=="String"||e.name==="Float"&&t.kind!=="Number"||e.name==="Int"&&(t.kind!=="Number"||(t.value|0)!==t.value)?[[t,'Expected value of type "'.concat(e,'".')]]:(e instanceof Cc.GraphQLEnumType||e instanceof Cc.GraphQLScalarType)&&(t.kind!=="String"&&t.kind!=="Number"&&t.kind!=="Boolean"&&t.kind!=="Null"||F$(e.parseValue(t.value)))?[[t,'Expected value of type "'.concat(e,'".')]]:[]}function E1(e,t,r){return{message:r,severity:"error",type:"validation",from:e.posFromIndex(t.start),to:e.posFromIndex(t.end)}}function F$(e){return e==null||e!==e}function Tq(e,t){return Array.prototype.concat.apply([],e.map(t))}});var Sq=U(ny=>{"use strict";var j$=ny&&ny.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ny,"__esModule",{value:!0});var P$=j$(ft()),pr=_c();P$.default.defineMode("graphql-variables",function(e){var t=(0,pr.onlineParser)({eatWhitespace:function(r){return r.eatSpace()},lexRules:q$,parseRules:B$,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:M$,electricInput:/^\s*[}\]]/,fold:"brace",closeBrackets:{pairs:'[]{}""',explode:"[]{}"}}});function M$(e,t){var r,n,a=e.levels,o=!a||a.length===0?e.indentLevel:a[a.length-1]-(((r=this.electricInput)===null||r===void 0?void 0:r.test(t))?1:0);return(o||0)*(((n=this.config)===null||n===void 0?void 0:n.indentUnit)||0)}var q$={Punctuation:/^\[|]|\{|\}|:|,/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/,Keyword:/^true|false|null/},B$={Document:[(0,pr.p)("{"),(0,pr.list)("Variable",(0,pr.opt)((0,pr.p)(","))),(0,pr.p)("}")],Variable:[_q("variable"),(0,pr.p)(":"),"Value"],Value:function(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue"}return null;case"Keyword":switch(e.value){case"true":case"false":return"BooleanValue";case"null":return"NullValue"}return null}},NumberValue:[(0,pr.t)("Number","number")],StringValue:[(0,pr.t)("String","string")],BooleanValue:[(0,pr.t)("Keyword","builtin")],NullValue:[(0,pr.t)("Keyword","keyword")],ListValue:[(0,pr.p)("["),(0,pr.list)("Value",(0,pr.opt)((0,pr.p)(","))),(0,pr.p)("]")],ObjectValue:[(0,pr.p)("{"),(0,pr.list)("ObjectField",(0,pr.opt)((0,pr.p)(","))),(0,pr.p)("}")],ObjectField:[_q("attribute"),(0,pr.p)(":"),"Value"]};function _q(e){return{style:e,match:function(t){return t.kind==="String"},update:function(t,r){t.name=r.value.slice(1,-1)}}}});var Oq=U((Dq,kq)=>{(function(e){typeof Dq=="object"&&typeof kq=="object"?e(ft()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";e.defineMode("javascript",function(t,r){var n=t.indentUnit,a=r.statementIndent,o=r.jsonld,s=r.json||o,l=r.trackScope!==!1,d=r.typescript,h=r.wordCharacters||/[\w$\xa1-\uffff]/,v=function(){function F(Sr){return{type:Sr,style:"keyword"}}var H=F("keyword a"),W=F("keyword b"),re=F("keyword c"),Me=F("keyword d"),ot=F("operator"),ht={type:"atom",style:"atom"};return{if:F("if"),while:H,with:H,else:W,do:W,try:W,finally:W,return:Me,break:Me,continue:Me,new:F("new"),delete:re,void:re,throw:re,debugger:F("debugger"),var:F("var"),const:F("var"),let:F("var"),function:F("function"),catch:F("catch"),for:F("for"),switch:F("switch"),case:F("case"),default:F("default"),in:ot,typeof:ot,instanceof:ot,true:ht,false:ht,null:ht,undefined:ht,NaN:ht,Infinity:ht,this:F("this"),class:F("class"),super:F("atom"),yield:re,export:F("export"),import:F("import"),extends:re,await:re}}(),b=/[+\-*&%=<>!?|~^@]/,T=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function A(F){for(var H=!1,W,re=!1;(W=F.next())!=null;){if(!H){if(W=="/"&&!re)return;W=="["?re=!0:re&&W=="]"&&(re=!1)}H=!H&&W=="\\"}}var L,S;function y(F,H,W){return L=F,S=W,H}function _(F,H){var W=F.next();if(W=='"'||W=="'")return H.tokenize=m(W),H.tokenize(F,H);if(W=="."&&F.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return y("number","number");if(W=="."&&F.match(".."))return y("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(W))return y(W);if(W=="="&&F.eat(">"))return y("=>","operator");if(W=="0"&&F.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return y("number","number");if(/\d/.test(W))return F.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),y("number","number");if(W=="/")return F.eat("*")?(H.tokenize=k,k(F,H)):F.eat("/")?(F.skipToEnd(),y("comment","comment")):fa(F,H,1)?(A(F),F.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),y("regexp","string-2")):(F.eat("="),y("operator","operator",F.current()));if(W=="`")return H.tokenize=w,w(F,H);if(W=="#"&&F.peek()=="!")return F.skipToEnd(),y("meta","meta");if(W=="#"&&F.eatWhile(h))return y("variable","property");if(W=="<"&&F.match("!--")||W=="-"&&F.match("->")&&!/\S/.test(F.string.slice(0,F.start)))return F.skipToEnd(),y("comment","comment");if(b.test(W))return(W!=">"||!H.lexical||H.lexical.type!=">")&&(F.eat("=")?(W=="!"||W=="=")&&F.eat("="):/[<>*+\-|&?]/.test(W)&&(F.eat(W),W==">"&&F.eat(W))),W=="?"&&F.eat(".")?y("."):y("operator","operator",F.current());if(h.test(W)){F.eatWhile(h);var re=F.current();if(H.lastType!="."){if(v.propertyIsEnumerable(re)){var Me=v[re];return y(Me.type,Me.style,re)}if(re=="async"&&F.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return y("async","keyword",re)}return y("variable","variable",re)}}function m(F){return function(H,W){var re=!1,Me;if(o&&H.peek()=="@"&&H.match(T))return W.tokenize=_,y("jsonld-keyword","meta");for(;(Me=H.next())!=null&&!(Me==F&&!re);)re=!re&&Me=="\\";return re||(W.tokenize=_),y("string","string")}}function k(F,H){for(var W=!1,re;re=F.next();){if(re=="/"&&W){H.tokenize=_;break}W=re=="*"}return y("comment","comment")}function w(F,H){for(var W=!1,re;(re=F.next())!=null;){if(!W&&(re=="`"||re=="$"&&F.eat("{"))){H.tokenize=_;break}W=!W&&re=="\\"}return y("quasi","string-2",F.current())}var C="([{}])";function D(F,H){H.fatArrowAt&&(H.fatArrowAt=null);var W=F.string.indexOf("=>",F.start);if(!(W<0)){if(d){var re=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(F.string.slice(F.start,W));re&&(W=re.index)}for(var Me=0,ot=!1,ht=W-1;ht>=0;--ht){var Sr=F.string.charAt(ht),ri=C.indexOf(Sr);if(ri>=0&&ri<3){if(!Me){++ht;break}if(--Me==0){Sr=="("&&(ot=!0);break}}else if(ri>=3&&ri<6)++Me;else if(h.test(Sr))ot=!0;else if(/["'\/`]/.test(Sr))for(;;--ht){if(ht==0)return;var qe=F.string.charAt(ht-1);if(qe==Sr&&F.string.charAt(ht-2)!="\\"){ht--;break}}else if(ot&&!Me){++ht;break}}ot&&!Me&&(H.fatArrowAt=ht)}}var R={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function M(F,H,W,re,Me,ot){this.indented=F,this.column=H,this.type=W,this.prev=Me,this.info=ot,re!=null&&(this.align=re)}function q(F,H){if(!l)return!1;for(var W=F.localVars;W;W=W.next)if(W.name==H)return!0;for(var re=F.context;re;re=re.prev)for(var W=re.vars;W;W=W.next)if(W.name==H)return!0}function z(F,H,W,re,Me){var ot=F.cc;for(Q.state=F,Q.stream=Me,Q.marked=null,Q.cc=ot,Q.style=H,F.lexical.hasOwnProperty("align")||(F.lexical.align=!0);;){var ht=ot.length?ot.pop():s?rt:Ue;if(ht(W,re)){for(;ot.length&&ot[ot.length-1].lex;)ot.pop()();return Q.marked?Q.marked:W=="variable"&&q(F,re)?"variable-2":H}}}var Q={state:null,column:null,marked:null,cc:null};function G(){for(var F=arguments.length-1;F>=0;F--)Q.cc.push(arguments[F])}function j(){return G.apply(null,arguments),!0}function ce(F,H){for(var W=H;W;W=W.next)if(W.name==F)return!0;return!1}function ke(F){var H=Q.state;if(Q.marked="def",!!l){if(H.context){if(H.lexical.info=="var"&&H.context&&H.context.block){var W=be(F,H.context);if(W!=null){H.context=W;return}}else if(!ce(F,H.localVars)){H.localVars=new Ve(F,H.localVars);return}}r.globalVars&&!ce(F,H.globalVars)&&(H.globalVars=new Ve(F,H.globalVars))}}function be(F,H){if(H)if(H.block){var W=be(F,H.prev);return W?W==H.prev?H:new we(W,H.vars,!0):null}else return ce(F,H.vars)?H:new we(H.prev,new Ve(F,H.vars),!1);else return null}function Ce(F){return F=="public"||F=="private"||F=="protected"||F=="abstract"||F=="readonly"}function we(F,H,W){this.prev=F,this.vars=H,this.block=W}function Ve(F,H){this.name=F,this.next=H}var pt=new Ve("this",new Ve("arguments",null));function Je(){Q.state.context=new we(Q.state.context,Q.state.localVars,!1),Q.state.localVars=pt}function wt(){Q.state.context=new we(Q.state.context,Q.state.localVars,!0),Q.state.localVars=null}Je.lex=wt.lex=!0;function Mt(){Q.state.localVars=Q.state.context.vars,Q.state.context=Q.state.context.prev}Mt.lex=!0;function Ie(F,H){var W=function(){var re=Q.state,Me=re.indented;if(re.lexical.type=="stat")Me=re.lexical.indented;else for(var ot=re.lexical;ot&&ot.type==")"&&ot.align;ot=ot.prev)Me=ot.indented;re.lexical=new M(Me,Q.stream.column(),F,null,re.lexical,H)};return W.lex=!0,W}function De(){var F=Q.state;F.lexical.prev&&(F.lexical.type==")"&&(F.indented=F.lexical.indented),F.lexical=F.lexical.prev)}De.lex=!0;function Pe(F){function H(W){return W==F?j():F==";"||W=="}"||W==")"||W=="]"?G():j(H)}return H}function Ue(F,H){return F=="var"?j(Ie("vardef",H),J,Pe(";"),De):F=="keyword a"?j(Ie("form"),Nr,Ue,De):F=="keyword b"?j(Ie("form"),Ue,De):F=="keyword d"?Q.stream.match(/^\s*$/,!1)?j():j(Ie("stat"),oe,Pe(";"),De):F=="debugger"?j(Pe(";")):F=="{"?j(Ie("}"),wt,yi,De,Mt):F==";"?j():F=="if"?(Q.state.lexical.info=="else"&&Q.state.cc[Q.state.cc.length-1]==De&&Q.state.cc.pop()(),j(Ie("form"),Nr,Ue,De,It)):F=="function"?j(_r):F=="for"?j(Ie("form"),wt,kt,Ue,Mt,De):F=="class"||d&&H=="interface"?(Q.marked="keyword",j(Ie("form",F=="class"?F:H),Kp,De)):F=="variable"?d&&H=="declare"?(Q.marked="keyword",j(Ue)):d&&(H=="module"||H=="enum"||H=="type")&&Q.stream.match(/^\s*\w/,!1)?(Q.marked="keyword",H=="enum"?j(Is):H=="type"?j(Ki,Pe("operator"),ge,Pe(";")):j(Ie("form"),B,Pe("{"),Ie("}"),yi,De,De)):d&&H=="namespace"?(Q.marked="keyword",j(Ie("form"),rt,Ue,De)):d&&H=="abstract"?(Q.marked="keyword",j(Ue)):j(Ie("stat"),mi):F=="switch"?j(Ie("form"),Nr,Pe("{"),Ie("}","switch"),wt,yi,De,De,Mt):F=="case"?j(rt,Pe(":")):F=="default"?j(Pe(":")):F=="catch"?j(Ie("form"),Je,Gi,Ue,De,Mt):F=="export"?j(Ie("stat"),Eo,De):F=="import"?j(Ie("stat"),za,De):F=="async"?j(Ue):H=="@"?j(rt,Ue):G(Ie("stat"),rt,Pe(";"),De)}function Gi(F){if(F=="(")return j(fn,Pe(")"))}function rt(F,H){return $r(F,H,!1)}function ut(F,H){return $r(F,H,!0)}function Nr(F){return F!="("?G():j(Ie(")"),oe,Pe(")"),De)}function $r(F,H,W){if(Q.state.fatArrowAt==Q.stream.start){var re=W?nt:Ze;if(F=="(")return j(Je,Ie(")"),qt(fn,")"),De,Pe("=>"),re,Mt);if(F=="variable")return G(Je,B,Pe("=>"),re,Mt)}var Me=W?fe:Se;return R.hasOwnProperty(F)?j(Me):F=="function"?j(_r,Me):F=="class"||d&&H=="interface"?(Q.marked="keyword",j(Ie("form"),Hi,De)):F=="keyword c"||F=="async"?j(W?ut:rt):F=="("?j(Ie(")"),oe,Pe(")"),De,Me):F=="operator"||F=="spread"?j(W?ut:rt):F=="["?j(Ie("]"),Wa,De,Me):F=="{"?On(ca,"}",null,Me):F=="quasi"?G(ue,Me):F=="new"?j(at(W)):j()}function oe(F){return F.match(/[;\}\)\],]/)?G():G(rt)}function Se(F,H){return F==","?j(oe):fe(F,H,!1)}function fe(F,H,W){var re=W==!1?Se:fe,Me=W==!1?rt:ut;if(F=="=>")return j(Je,W?nt:Ze,Mt);if(F=="operator")return/\+\+|--/.test(H)||d&&H=="!"?j(re):d&&H=="<"&&Q.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?j(Ie(">"),qt(ge,">"),De,re):H=="?"?j(rt,Pe(":"),Me):j(Me);if(F=="quasi")return G(ue,re);if(F!=";"){if(F=="(")return On(ut,")","call",re);if(F==".")return j(Qa,re);if(F=="[")return j(Ie("]"),oe,Pe("]"),De,re);if(d&&H=="as")return Q.marked="keyword",j(ge,re);if(F=="regexp")return Q.state.lastType=Q.marked="operator",Q.stream.backUp(Q.stream.pos-Q.stream.start-1),j(Me)}}function ue(F,H){return F!="quasi"?G():H.slice(H.length-2)!="${"?j(ue):j(oe,Ge)}function Ge(F){if(F=="}")return Q.marked="string-2",Q.state.tokenize=w,j(ue)}function Ze(F){return D(Q.stream,Q.state),G(F=="{"?Ue:rt)}function nt(F){return D(Q.stream,Q.state),G(F=="{"?Ue:ut)}function at(F){return function(H){return H=="."?j(F?la:Qi):H=="variable"&&d?j(ee,F?fe:Se):G(F?ut:rt)}}function Qi(F,H){if(H=="target")return Q.marked="keyword",j(Se)}function la(F,H){if(H=="target")return Q.marked="keyword",j(fe)}function mi(F){return F==":"?j(De,Ue):G(Se,Pe(";"),De)}function Qa(F){if(F=="variable")return Q.marked="property",j()}function ca(F,H){if(F=="async")return Q.marked="property",j(ca);if(F=="variable"||Q.style=="keyword"){if(Q.marked="property",H=="get"||H=="set")return j(Ka);var W;return d&&Q.state.fatArrowAt==Q.stream.start&&(W=Q.stream.match(/^\s*:\s*/,!1))&&(Q.state.fatArrowAt=Q.stream.pos+W[0].length),j(kn)}else{if(F=="number"||F=="string")return Q.marked=o?"property":Q.style+" property",j(kn);if(F=="jsonld-keyword")return j(kn);if(d&&Ce(H))return Q.marked="keyword",j(ca);if(F=="[")return j(rt,qn,Pe("]"),kn);if(F=="spread")return j(ut,kn);if(H=="*")return Q.marked="keyword",j(ca);if(F==":")return G(kn)}}function Ka(F){return F!="variable"?G(kn):(Q.marked="property",j(_r))}function kn(F){if(F==":")return j(ut);if(F=="(")return G(_r)}function qt(F,H,W){function re(Me,ot){if(W?W.indexOf(Me)>-1:Me==","){var ht=Q.state.lexical;return ht.info=="call"&&(ht.pos=(ht.pos||0)+1),j(function(Sr,ri){return Sr==H||ri==H?G():G(F)},re)}return Me==H||ot==H?j():W&&W.indexOf(";")>-1?G(F):j(Pe(H))}return function(Me,ot){return Me==H||ot==H?j():G(F,re)}}function On(F,H,W){for(var re=3;re"),ge);if(F=="quasi")return G(zt,zr)}function ku(F){if(F=="=>")return j(ge)}function Tr(F){return F.match(/[\}\)\]]/)?j():F==","||F==";"?j(Tr):G(At,Tr)}function At(F,H){if(F=="variable"||Q.style=="keyword")return Q.marked="property",j(At);if(H=="?"||F=="number"||F=="string")return j(At);if(F==":")return j(ge);if(F=="[")return j(Pe("variable"),Pc,Pe("]"),At);if(F=="(")return G(He,At);if(!F.match(/[;\}\)\],]/))return j()}function zt(F,H){return F!="quasi"?G():H.slice(H.length-2)!="${"?j(zt):j(ge,Ls)}function Ls(F){if(F=="}")return Q.marked="string-2",Q.state.tokenize=w,j(zt)}function Hr(F,H){return F=="variable"&&Q.stream.match(/^\s*[?:]/,!1)||H=="?"?j(Hr):F==":"?j(ge):F=="spread"?j(Hr):G(ge)}function zr(F,H){if(H=="<")return j(Ie(">"),qt(ge,">"),De,zr);if(H=="|"||F=="."||H=="&")return j(ge);if(F=="[")return j(ge,Pe("]"),zr);if(H=="extends"||H=="implements")return Q.marked="keyword",j(ge);if(H=="?")return j(ge,Pe(":"),ge)}function ee(F,H){if(H=="<")return j(Ie(">"),qt(ge,">"),De,zr)}function P(){return G(ge,Y)}function Y(F,H){if(H=="=")return j(ge)}function J(F,H){return H=="enum"?(Q.marked="keyword",j(Is)):G(B,qn,ie,Qe)}function B(F,H){if(d&&Ce(H))return Q.marked="keyword",j(B);if(F=="variable")return ke(H),j();if(F=="spread")return j(B);if(F=="[")return On(te,"]");if(F=="{")return On(I,"}")}function I(F,H){return F=="variable"&&!Q.stream.match(/^\s*:/,!1)?(ke(H),j(ie)):(F=="variable"&&(Q.marked="property"),F=="spread"?j(B):F=="}"?G():F=="["?j(rt,Pe("]"),Pe(":"),I):j(Pe(":"),B,ie))}function te(){return G(B,ie)}function ie(F,H){if(H=="=")return j(ut)}function Qe(F){if(F==",")return j(J)}function It(F,H){if(F=="keyword b"&&H=="else")return j(Ie("form","else"),Ue,De)}function kt(F,H){if(H=="await")return j(kt);if(F=="(")return j(Ie(")"),en,De)}function en(F){return F=="var"?j(J,Er):F=="variable"?j(Er):G(Er)}function Er(F,H){return F==")"?j():F==";"?j(Er):H=="in"||H=="of"?(Q.marked="keyword",j(rt,Er)):G(rt,Er)}function _r(F,H){if(H=="*")return Q.marked="keyword",j(_r);if(F=="variable")return ke(H),j(_r);if(F=="(")return j(Je,Ie(")"),qt(fn,")"),De,Bn,Ue,Mt);if(d&&H=="<")return j(Ie(">"),qt(P,">"),De,_r)}function He(F,H){if(H=="*")return Q.marked="keyword",j(He);if(F=="variable")return ke(H),j(He);if(F=="(")return j(Je,Ie(")"),qt(fn,")"),De,Bn,Mt);if(d&&H=="<")return j(Ie(">"),qt(P,">"),De,He)}function Ki(F,H){if(F=="keyword"||F=="variable")return Q.marked="type",j(Ki);if(H=="<")return j(Ie(">"),qt(P,">"),De)}function fn(F,H){return H=="@"&&j(rt,fn),F=="spread"?j(fn):d&&Ce(H)?(Q.marked="keyword",j(fn)):d&&F=="this"?j(qn,ie):G(B,qn,ie)}function Hi(F,H){return F=="variable"?Kp(F,H):xs(F,H)}function Kp(F,H){if(F=="variable")return ke(H),j(xs)}function xs(F,H){if(H=="<")return j(Ie(">"),qt(P,">"),De,xs);if(H=="extends"||H=="implements"||d&&F==",")return H=="implements"&&(Q.marked="keyword"),j(d?ge:rt,xs);if(F=="{")return j(Ie("}"),Vn,De)}function Vn(F,H){if(F=="async"||F=="variable"&&(H=="static"||H=="get"||H=="set"||d&&Ce(H))&&Q.stream.match(/^\s+[\w$\xa1-\uffff]/,!1))return Q.marked="keyword",j(Vn);if(F=="variable"||Q.style=="keyword")return Q.marked="property",j(Ha,Vn);if(F=="number"||F=="string")return j(Ha,Vn);if(F=="[")return j(rt,qn,Pe("]"),Ha,Vn);if(H=="*")return Q.marked="keyword",j(Vn);if(d&&F=="(")return G(He,Vn);if(F==";"||F==",")return j(Vn);if(F=="}")return j();if(H=="@")return j(rt,Vn)}function Ha(F,H){if(H=="!"||H=="?")return j(Ha);if(F==":")return j(ge,ie);if(H=="=")return j(ut);var W=Q.state.lexical.prev,re=W&&W.info=="interface";return G(re?He:_r)}function Eo(F,H){return H=="*"?(Q.marked="keyword",j(Ae,Pe(";"))):H=="default"?(Q.marked="keyword",j(rt,Pe(";"))):F=="{"?j(qt(Hp,"}"),Ae,Pe(";")):G(Ue)}function Hp(F,H){if(H=="as")return Q.marked="keyword",j(Pe("variable"));if(F=="variable")return G(ut,Hp)}function za(F){return F=="string"?j():F=="("?G(rt):F=="."?G(Se):G(_o,Mc,Ae)}function _o(F,H){return F=="{"?On(_o,"}"):(F=="variable"&&ke(H),H=="*"&&(Q.marked="keyword"),j(ir))}function Mc(F){if(F==",")return j(_o,Mc)}function ir(F,H){if(H=="as")return Q.marked="keyword",j(_o)}function Ae(F,H){if(H=="from")return Q.marked="keyword",j(rt)}function Wa(F){return F=="]"?j():G(qt(ut,"]"))}function Is(){return G(Ie("form"),B,Pe("{"),Ie("}"),qt(bi,"}"),De,De)}function bi(){return G(B,ie)}function yt(F,H){return F.lastType=="operator"||F.lastType==","||b.test(H.charAt(0))||/[,.]/.test(H.charAt(0))}function fa(F,H,W){return H.tokenize==_&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(H.lastType)||H.lastType=="quasi"&&/\{\s*$/.test(F.string.slice(0,F.pos-(W||0)))}return{startState:function(F){var H={tokenize:_,lastType:"sof",cc:[],lexical:new M((F||0)-n,0,"block",!1),localVars:r.localVars,context:r.localVars&&new we(null,null,!1),indented:F||0};return r.globalVars&&typeof r.globalVars=="object"&&(H.globalVars=r.globalVars),H},token:function(F,H){if(F.sol()&&(H.lexical.hasOwnProperty("align")||(H.lexical.align=!1),H.indented=F.indentation(),D(F,H)),H.tokenize!=k&&F.eatSpace())return null;var W=H.tokenize(F,H);return L=="comment"?W:(H.lastType=L=="operator"&&(S=="++"||S=="--")?"incdec":L,z(H,W,L,S,F))},indent:function(F,H){if(F.tokenize==k||F.tokenize==w)return e.Pass;if(F.tokenize!=_)return 0;var W=H&&H.charAt(0),re=F.lexical,Me;if(!/^\s*else\b/.test(H))for(var ot=F.cc.length-1;ot>=0;--ot){var ht=F.cc[ot];if(ht==De)re=re.prev;else if(ht!=It&&ht!=Mt)break}for(;(re.type=="stat"||re.type=="form")&&(W=="}"||(Me=F.cc[F.cc.length-1])&&(Me==Se||Me==fe)&&!/^[,\.=+\-*:?[\(]/.test(H));)re=re.prev;a&&re.type==")"&&re.prev.type=="stat"&&(re=re.prev);var Sr=re.type,ri=W==Sr;return Sr=="vardef"?re.indented+(F.lastType=="operator"||F.lastType==","?re.info.length+1:0):Sr=="form"&&W=="{"?re.indented:Sr=="form"?re.indented+n:Sr=="stat"?re.indented+(yt(F,H)?a||n:0):re.info=="switch"&&!ri&&r.doubleIndentSwitch!=!1?re.indented+(/^(?:case|default)\b/.test(H)?n:2*n):re.align?re.column+(ri?0:1):re.indented+(ri?0:n)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:s?null:"/*",blockCommentEnd:s?null:"*/",blockCommentContinue:s?null:" * ",lineComment:s?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:s?"json":"javascript",jsonldMode:o,jsonMode:s,expressionAllowed:fa,skipExpression:function(F){z(F,"atom","atom","true",new e.StringStream("",2,null))}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/manifest+json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var Cq=U(ay=>{"use strict";var G$=ay&&ay.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ay,"__esModule",{value:!0});var Q$=G$(ft()),br=_c();Q$.default.defineMode("graphql-results",function(e){var t=(0,br.onlineParser)({eatWhitespace:function(r){return r.eatSpace()},lexRules:H$,parseRules:z$,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:K$,electricInput:/^\s*[}\]]/,fold:"brace",closeBrackets:{pairs:'[]{}""',explode:"[]{}"}}});function K$(e,t){var r,n,a=e.levels,o=!a||a.length===0?e.indentLevel:a[a.length-1]-(((r=this.electricInput)===null||r===void 0?void 0:r.test(t))?1:0);return(o||0)*(((n=this.config)===null||n===void 0?void 0:n.indentUnit)||0)}var H$={Punctuation:/^\[|]|\{|\}|:|,/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/,Keyword:/^true|false|null/},z$={Document:[(0,br.p)("{"),(0,br.list)("Entry",(0,br.p)(",")),(0,br.p)("}")],Entry:[(0,br.t)("String","def"),(0,br.p)(":"),"Value"],Value:function(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue"}return null;case"Keyword":switch(e.value){case"true":case"false":return"BooleanValue";case"null":return"NullValue"}return null}},NumberValue:[(0,br.t)("Number","number")],StringValue:[(0,br.t)("String","string")],BooleanValue:[(0,br.t)("Keyword","builtin")],NullValue:[(0,br.t)("Keyword","keyword")],ListValue:[(0,br.p)("["),(0,br.list)("Value",(0,br.p)(",")),(0,br.p)("]")],ObjectValue:[(0,br.p)("{"),(0,br.list)("ObjectField",(0,br.p)(",")),(0,br.p)("}")],ObjectField:[(0,br.t)("String","property"),(0,br.p)(":"),"Value"]}});var o3=U((cse,a3)=>{a3.exports=xc;function xc(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}xc.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=(Math.floor(t*10)&1)==0?e-r:e+r}return Math.min(e,this.max)|0};xc.prototype.reset=function(){this.attempts=0};xc.prototype.setMin=function(e){this.ms=e};xc.prototype.setMax=function(e){this.max=e};xc.prototype.setJitter=function(e){this.jitter=e}});var s3=U((fse,W1)=>{"use strict";var Fee=Object.prototype.hasOwnProperty,Pn="~";function Qp(){}Object.create&&(Qp.prototype=Object.create(null),new Qp().__proto__||(Pn=!1));function jee(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function u3(e,t,r,n,a){if(typeof r!="function")throw new TypeError("The listener must be a function");var o=new jee(r,n||e,a),s=Pn?Pn+t:t;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],o]:e._events[s].push(o):(e._events[s]=o,e._eventsCount++),e}function dy(e,t){--e._eventsCount==0?e._events=new Qp:delete e._events[t]}function Dn(){this._events=new Qp,this._eventsCount=0}Dn.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Fee.call(r,n)&&t.push(Pn?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};Dn.prototype.listeners=function(t){var r=Pn?Pn+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var a=0,o=n.length,s=new Array(o);a{"use strict";Object.defineProperty(Y1,"__esModule",{value:!0});function Pee(e){return typeof e=="string"}Y1.default=Pee});var c3=U(J1=>{"use strict";Object.defineProperty(J1,"__esModule",{value:!0});function Mee(e){return e!==null&&typeof e=="object"}J1.default=Mee});var f3=U(X1=>{"use strict";Object.defineProperty(X1,"__esModule",{value:!0});X1.default=qee;function qee(e){var t,r=e.Symbol;return typeof r=="function"?r.observable?t=r.observable:(t=r("observable"),r.observable=t):t="@@observable",t}});var d3=U((Z1,$1)=>{"use strict";Object.defineProperty(Z1,"__esModule",{value:!0});var Bee=f3(),Vee=Uee(Bee);function Uee(e){return e&&e.__esModule?e:{default:e}}var Ic;typeof self!="undefined"?Ic=self:typeof window!="undefined"||typeof window!="undefined"?Ic=window:typeof $1!="undefined"?Ic=$1:Ic=Function("return this")();var Gee=(0,Vee.default)(Ic);Z1.default=Gee});var p3=U(Rc=>{"use strict";Object.defineProperty(Rc,"__esModule",{value:!0});Rc.GRAPHQL_SUBSCRIPTIONS=Rc.GRAPHQL_WS=void 0;var Qee="graphql-ws";Rc.GRAPHQL_WS=Qee;var Kee="graphql-subscriptions";Rc.GRAPHQL_SUBSCRIPTIONS=Kee});var h3=U(Fc=>{"use strict";Object.defineProperty(Fc,"__esModule",{value:!0});Fc.WS_TIMEOUT=Fc.MIN_WS_TIMEOUT=void 0;var Hee=1e3;Fc.MIN_WS_TIMEOUT=Hee;var zee=3e4;Fc.WS_TIMEOUT=zee});var v3=U(ek=>{"use strict";Object.defineProperty(ek,"__esModule",{value:!0});var Wee=function(){function e(){throw new Error("Static Class")}return e.GQL_CONNECTION_INIT="connection_init",e.GQL_CONNECTION_ACK="connection_ack",e.GQL_CONNECTION_ERROR="connection_error",e.GQL_CONNECTION_KEEP_ALIVE="ka",e.GQL_CONNECTION_TERMINATE="connection_terminate",e.GQL_START="start",e.GQL_DATA="data",e.GQL_ERROR="error",e.GQL_COMPLETE="complete",e.GQL_STOP="stop",e.SUBSCRIPTION_START="subscription_start",e.SUBSCRIPTION_DATA="subscription_data",e.SUBSCRIPTION_SUCCESS="subscription_success",e.SUBSCRIPTION_FAIL="subscription_fail",e.SUBSCRIPTION_END="subscription_end",e.INIT="init",e.INIT_SUCCESS="init_success",e.INIT_FAIL="init_fail",e.KEEP_ALIVE="keepalive",e}();ek.default=Wee});var E3=U(Ui=>{"use strict";var jc=Ui&&Ui.__assign||function(){return jc=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]0){var v=s.shift();v&&v.applyMiddleware.apply(l,[t,d])}else n(t)};d()};o(g3(r.middlewares),r)})},e.prototype.use=function(t){var r=this;return t.map(function(n){if(typeof n.applyMiddleware=="function")r.middlewares.push(n);else throw new Error("Middleware must implement the applyMiddleware function.")}),this},e.prototype.getConnectionParams=function(t){return function(){return new Promise(function(r,n){if(typeof t=="function")try{return r(t.call(null))}catch(a){return n(a)}r(t)})}},e.prototype.executeOperation=function(t,r){var n=this;this.client===null&&this.connect();var a=this.generateOperationId();return this.operations[a]={options:t,handler:r},this.applyMiddlewares(t).then(function(o){n.checkOperationOptions(o,r),n.operations[a]&&(n.operations[a]={options:o,handler:r},n.sendMessage(a,Mn.default.GQL_START,o))}).catch(function(o){n.unsubscribe(a),r(n.formatErrors(o))}),a},e.prototype.getObserver=function(t,r,n){return typeof t=="function"?{next:function(a){return t(a)},error:function(a){return r&&r(a)},complete:function(){return n&&n()}}:t},e.prototype.createMaxConnectTimeGenerator=function(){var t=this.minWsTimeout,r=this.wsTimeout;return new y3({min:t,max:r,factor:1.2})},e.prototype.clearCheckConnectionInterval=function(){this.checkConnectionIntervalId&&(clearInterval(this.checkConnectionIntervalId),this.checkConnectionIntervalId=null)},e.prototype.clearMaxConnectTimeout=function(){this.maxConnectTimeoutId&&(clearTimeout(this.maxConnectTimeoutId),this.maxConnectTimeoutId=null)},e.prototype.clearTryReconnectTimeout=function(){this.tryReconnectTimeoutId&&(clearTimeout(this.tryReconnectTimeoutId),this.tryReconnectTimeoutId=null)},e.prototype.clearInactivityTimeout=function(){this.inactivityTimeoutId&&(clearTimeout(this.inactivityTimeoutId),this.inactivityTimeoutId=null)},e.prototype.setInactivityTimeout=function(){var t=this;this.inactivityTimeout>0&&Object.keys(this.operations).length===0&&(this.inactivityTimeoutId=setTimeout(function(){Object.keys(t.operations).length===0&&t.close()},this.inactivityTimeout))},e.prototype.checkOperationOptions=function(t,r){var n=t.query,a=t.variables,o=t.operationName;if(!n)throw new Error("Must provide a query.");if(!r)throw new Error("Must provide an handler.");if(!b3.default(n)&&!tte.getOperationAST(n,o)||o&&!b3.default(o)||a&&!$ee.default(a))throw new Error("Incorrect option types. query must be a string or a document,`operationName` must be a string, and `variables` must be an object.")},e.prototype.buildMessage=function(t,r,n){var a=n&&n.query?jc(jc({},n),{query:typeof n.query=="string"?n.query:ete.print(n.query)}):n;return{id:t,type:r,payload:a}},e.prototype.formatErrors=function(t){return Array.isArray(t)?t:t&&t.errors?this.formatErrors(t.errors):t&&t.message?[t]:[{name:"FormatedError",message:"Unknown error",originalError:t}]},e.prototype.sendMessage=function(t,r,n){this.sendMessageRaw(this.buildMessage(t,r,n))},e.prototype.sendMessageRaw=function(t){switch(this.status){case this.wsImpl.OPEN:var r=JSON.stringify(t);try{JSON.parse(r)}catch(n){this.eventEmitter.emit("error",new Error("Message must be JSON-serializable. Got: "+t))}this.client.send(r);break;case this.wsImpl.CONNECTING:this.unsentMessagesQueue.push(t);break;default:this.reconnecting||this.eventEmitter.emit("error",new Error("A message was not sent because socket is not connected, is closing or is already closed. Message was: "+JSON.stringify(t)))}},e.prototype.generateOperationId=function(){return String(++this.nextOperationId)},e.prototype.tryReconnect=function(){var t=this;if(!(!this.reconnect||this.backoff.attempts>=this.reconnectionAttempts)){this.reconnecting||(Object.keys(this.operations).forEach(function(n){t.unsentMessagesQueue.push(t.buildMessage(n,Mn.default.GQL_START,t.operations[n].options))}),this.reconnecting=!0),this.clearTryReconnectTimeout();var r=this.backoff.duration();this.tryReconnectTimeoutId=setTimeout(function(){t.connect()},r)}},e.prototype.flushUnsentMessagesQueue=function(){var t=this;this.unsentMessagesQueue.forEach(function(r){t.sendMessageRaw(r)}),this.unsentMessagesQueue=[]},e.prototype.checkConnection=function(){if(this.wasKeepAliveReceived){this.wasKeepAliveReceived=!1;return}this.reconnecting||this.close(!1,!0)},e.prototype.checkMaxConnectTimeout=function(){var t=this;this.clearMaxConnectTimeout(),this.maxConnectTimeoutId=setTimeout(function(){t.status!==t.wsImpl.OPEN&&(t.reconnecting=!0,t.close(!1,!0))},this.maxConnectTimeGenerator.duration())},e.prototype.connect=function(){var t,r=this;this.client=new((t=this.wsImpl).bind.apply(t,g3([void 0,this.url,this.wsProtocols],this.wsOptionArguments))),this.checkMaxConnectTimeout(),this.client.onopen=function(){return Yee(r,void 0,void 0,function(){var n,a;return Jee(this,function(o){switch(o.label){case 0:if(this.status!==this.wsImpl.OPEN)return[3,4];this.clearMaxConnectTimeout(),this.closedByUser=!1,this.eventEmitter.emit(this.reconnecting?"reconnecting":"connecting"),o.label=1;case 1:return o.trys.push([1,3,,4]),[4,this.connectionParams()];case 2:return n=o.sent(),this.sendMessage(void 0,Mn.default.GQL_CONNECTION_INIT,n),this.flushUnsentMessagesQueue(),[3,4];case 3:return a=o.sent(),this.sendMessage(void 0,Mn.default.GQL_CONNECTION_ERROR,a),this.flushUnsentMessagesQueue(),[3,4];case 4:return[2]}})})},this.client.onclose=function(){r.closedByUser||r.close(!1,!1)},this.client.onerror=function(n){r.eventEmitter.emit("error",n)},this.client.onmessage=function(n){var a=n.data;r.processReceivedData(a)}},e.prototype.processReceivedData=function(t){var r,n;try{r=JSON.parse(t),n=r.id}catch(l){throw new Error("Message must be JSON-parseable. Got: "+t)}if([Mn.default.GQL_DATA,Mn.default.GQL_COMPLETE,Mn.default.GQL_ERROR].indexOf(r.type)!==-1&&!this.operations[n]){this.unsubscribe(n);return}switch(r.type){case Mn.default.GQL_CONNECTION_ERROR:this.connectionCallback&&this.connectionCallback(r.payload);break;case Mn.default.GQL_CONNECTION_ACK:this.eventEmitter.emit(this.reconnecting?"reconnected":"connected",r.payload),this.reconnecting=!1,this.backoff.reset(),this.maxConnectTimeGenerator.reset(),this.connectionCallback&&this.connectionCallback();break;case Mn.default.GQL_COMPLETE:var a=this.operations[n].handler;delete this.operations[n],a.call(this,null,null);break;case Mn.default.GQL_ERROR:this.operations[n].handler(this.formatErrors(r.payload),null),delete this.operations[n];break;case Mn.default.GQL_DATA:var o=r.payload.errors?jc(jc({},r.payload),{errors:this.formatErrors(r.payload.errors)}):r.payload;this.operations[n].handler(null,o);break;case Mn.default.GQL_CONNECTION_KEEP_ALIVE:var s=typeof this.wasKeepAliveReceived=="undefined";this.wasKeepAliveReceived=!0,s&&this.checkConnection(),this.checkConnectionIntervalId&&(clearInterval(this.checkConnectionIntervalId),this.checkConnection()),this.checkConnectionIntervalId=setInterval(this.checkConnection.bind(this),this.wsTimeout);break;default:throw new Error("Invalid message type!")}},e.prototype.unsubscribe=function(t){this.operations[t]&&(delete this.operations[t],this.setInactivityTimeout(),this.sendMessage(t,Mn.default.GQL_STOP,void 0))},e}();Ui.SubscriptionClient=ite});var ate=Ye(Bt()),ote=Ye(ST());var $e=Ye(Bt()),sa=Ye(ct()),zq=Ye(iR());var lm=Ye(ct()),aD=Ye(iD());var oD=(e,t)=>{if(!t)return[];let r=new Map,n=new Set;(0,lm.visit)(e,{FragmentDefinition(s){r.set(s.name.value,!0)},FragmentSpread(s){n.has(s.name.value)||n.add(s.name.value)}});let a=new Set;n.forEach(s=>{!r.has(s)&&t.has(s)&&a.add((0,aD.default)(t.get(s)))});let o=[];return a.forEach(s=>{(0,lm.visit)(s,{FragmentSpread(l){!n.has(l.name.value)&&t.get(l.name.value)&&(a.add((0,aD.default)(t.get(l.name.value))),n.add(l.name.value))}}),r.has(s.name.value)||o.push(s)}),o};var yo=Ye(Bt()),qW=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),oR=function(e){qW(t,e);function t(r){var n=e.call(this,r)||this;return n._onClick=function(){n.props.isRunning?n.props.onStop():n.props.onRun()},n._onOptionSelected=function(a){n.setState({optionsOpen:!1}),n.props.onRun(a.name&&a.name.value)},n._onOptionsOpen=function(a){var o=!0,s=a.currentTarget;n.setState({highlight:null,optionsOpen:!0});var l=function(d){var h;if(o&&d.target===s)o=!1;else{document.removeEventListener("mouseup",l),l=null;var v=d.currentTarget&&((h=s.parentNode)===null||h===void 0?void 0:h.compareDocumentPosition(d.currentTarget))&&Node.DOCUMENT_POSITION_CONTAINED_BY;v||n.setState({optionsOpen:!1})}};document.addEventListener("mouseup",l)},n.state={optionsOpen:!1,highlight:null},n}return t.prototype.render=function(){var r=this,n=this.props.operations||[],a=this.state.optionsOpen,o=n&&n.length>1,s=null;if(o&&a){var l=this.state.highlight;s=yo.default.createElement("ul",{className:"execute-options"},n.map(function(b,T){var A=b.name?b.name.value:"";return yo.default.createElement("li",{key:A+"-"+T,className:b===l?"selected":void 0,onMouseOver:function(){return r.setState({highlight:b})},onMouseOut:function(){return r.setState({highlight:null})},onMouseUp:function(){return r._onOptionSelected(b)}},A)}))}var d;(this.props.isRunning||!o)&&(d=this._onClick);var h=function(){};!this.props.isRunning&&o&&!a&&(h=this._onOptionsOpen);var v=this.props.isRunning?yo.default.createElement("path",{d:"M 10 10 L 23 10 L 23 23 L 10 23 z"}):yo.default.createElement("path",{d:"M 11 9 L 24 16 L 11 23 z"});return yo.default.createElement("div",{className:"execute-button-wrap"},yo.default.createElement("button",{type:"button",className:"execute-button",onMouseDown:h,onClick:d,title:"Execute Query (Ctrl-Enter)"},yo.default.createElement("svg",{width:"34",height:"34"},v)),s)},t}(yo.default.Component);var lp=Ye(Bt()),BW=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();function uR(e){if(e.type==="string"){var t=e.string.slice(1).slice(0,-1).trim();try{var r=window.location;return new URL(t,r.protocol+"//"+r.host)}catch(n){return}}}function VW(e){return/(bmp|gif|jpeg|jpg|png|svg)$/.test(e.pathname)}var sR=function(e){BW(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r._node=null,r.state={width:null,height:null,src:null,mime:null},r}return t.shouldRender=function(r){var n=uR(r);return n?VW(n):!1},t.prototype.componentDidMount=function(){this._updateMetadata()},t.prototype.componentDidUpdate=function(){this._updateMetadata()},t.prototype.render=function(){var r=this,n,a=null;if(this.state.width!==null&&this.state.height!==null){var o=this.state.width+"x"+this.state.height;this.state.mime!==null&&(o+=" "+this.state.mime),a=lp.default.createElement("div",null,o)}return lp.default.createElement("div",null,lp.default.createElement("img",{onLoad:function(){return r._updateMetadata()},ref:function(s){r._node=s},src:(n=uR(this.props.token))===null||n===void 0?void 0:n.href}),a)},t.prototype._updateMetadata=function(){var r=this;if(!!this._node){var n=this._node.naturalWidth,a=this._node.naturalHeight,o=this._node.src;o!==this.state.src&&(this.setState({src:o}),fetch(o,{method:"HEAD"}).then(function(s){r.setState({mime:s.headers.get("Content-Type")})})),(n!==this.state.width||a!==this.state.height)&&this.setState({height:a,width:n})}},t}(lp.default.Component);var uD=Ye(Bt()),UW=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),gu=function(e){UW(t,e);function t(r){var n=e.call(this,r)||this;return n.handleClick=function(){try{n.props.onClick(),n.setState({error:null})}catch(a){n.setState({error:a})}},n.state={error:null},n}return t.prototype.render=function(){var r=this.state.error;return uD.default.createElement("button",{className:"toolbar-button"+(r?" error":""),onClick:this.handleClick,title:r?r.message:this.props.title,"aria-invalid":r?"true":"false"},this.props.label)},t}(uD.default.Component);var lR=Ye(Bt());function sD(e){var t=e.children;return lR.default.createElement("div",{className:"toolbar-button-group"},t)}var ys=Ye(Bt()),GW=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),lD=function(e){GW(t,e);function t(r){var n=e.call(this,r)||this;return n._node=null,n._listener=null,n.handleOpen=function(a){cD(a),n.setState({visible:!0}),n._subscribe()},n.state={visible:!1},n}return t.prototype.componentWillUnmount=function(){this._release()},t.prototype.render=function(){var r=this,n=this.state.visible;return ys.default.createElement("a",{className:"toolbar-menu toolbar-button",onClick:this.handleOpen.bind(this),onMouseDown:cD,ref:function(a){a&&(r._node=a)},title:this.props.title},this.props.label,ys.default.createElement("svg",{width:"14",height:"8"},ys.default.createElement("path",{fill:"#666",d:"M 5 1.5 L 14 1.5 L 9.5 7 z"})),ys.default.createElement("ul",{className:"toolbar-menu-items"+(n?" open":"")},this.props.children))},t.prototype._subscribe=function(){this._listener||(this._listener=this.handleClick.bind(this),document.addEventListener("click",this._listener))},t.prototype._release=function(){this._listener&&(document.removeEventListener("click",this._listener),this._listener=null)},t.prototype.handleClick=function(r){this._node!==r.target&&(r.preventDefault(),this.setState({visible:!1}),this._release())},t}(ys.default.Component);var cR=function(e){var t=e.onSelect,r=e.title,n=e.label;return ys.default.createElement("li",{onMouseOver:function(a){a.currentTarget.className="hover"},onMouseOut:function(a){a.currentTarget.className=""},onMouseDown:cD,onMouseUp:t,title:r},n)};function cD(e){e.preventDefault()}var g1=Ye(Bt()),cq=Ye(Dm());var tX=Array.from({length:11},function(e,t){return String.fromCharCode(8192+t)}).concat(["\u2028","\u2029","\u202F","\xA0"]),rX=new RegExp("["+tX.join("")+"]","g");function mP(e){return e.replace(rX," ")}var km=Ye(ct()),yP=Ye(Dm()),bP=new yP.default;function mu(e,t,r){var n=ft(),a,o;n.on(t,"select",function(s,l){if(!a){var d=l.parentNode;a=document.createElement("div"),a.className="CodeMirror-hint-information",d.appendChild(a),o=document.createElement("div"),o.className="CodeMirror-hint-deprecation",d.appendChild(o);var h;d.addEventListener("DOMNodeRemoved",h=function(A){A.target===d&&(d.removeEventListener("DOMNodeRemoved",h),a=null,o=null,h=null)})}var v=s.description?bP.render(s.description):"Self descriptive.",b=s.type?''+MD(s.type)+"":"";if(a.innerHTML='
    '+(v.slice(0,3)==="

    "?"

    "+b+v.slice(3):b+v)+"

    ",s&&o&&s.isDeprecated){var T=s.deprecationReason?bP.render(s.deprecationReason):"";o.innerHTML='Deprecated'+T,o.style.display="block"}else o&&(o.style.display="none");r&&r(a)})}function MD(e){return e instanceof km.GraphQLNonNull?MD(e.ofType)+"!":e instanceof km.GraphQLList?"["+MD(e.ofType)+"]":''+e.name+""}var bo,TP=!1;typeof window=="object"&&(TP=window.navigator.platform==="MacIntel");var nX=(bo={},bo[TP?"Cmd-F":"Ctrl-F"]="findPersistent",bo["Cmd-G"]="findPersistent",bo["Ctrl-G"]="findPersistent",bo["Ctrl-Left"]="goSubwordLeft",bo["Ctrl-Right"]="goSubwordRight",bo["Alt-Left"]="goGroupLeft",bo["Alt-Right"]="goGroupRight",bo),yu=nX;var d$=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ym=function(){return Ym=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=65&&s<=90||!o.shiftKey&&s>=48&&s<=57||o.shiftKey&&s===189||o.shiftKey&&s===222)&&n.editor.execCommand("autocomplete")},n._onEdit=function(){!n.editor||n.ignoreChangeEvent||(n.cachedValue=n.editor.getValue(),n.props.onEdit&&n.props.onEdit(n.cachedValue))},n._onHasCompletion=function(a,o){mu(a,o,n.props.onHintInformationRender)},n.cachedValue=r.value||"",n}return t.prototype.componentDidMount=function(){var r=this;this.CodeMirror=ft(),vp(),gp(),Om(),yp(),mp(),Cm(),Es(),bp(),_s(),Tp(),pq(),Eq(),Sq();var n=this.editor=this.CodeMirror(this._node,{value:this.props.value||"",lineNumbers:!0,tabSize:2,mode:"graphql-variables",theme:this.props.editorTheme||"graphiql",keyMap:"sublime",autoCloseBrackets:!0,matchBrackets:!0,showCursorWhenSelecting:!0,readOnly:this.props.readOnly?"nocursor":!1,foldGutter:{minFoldSize:4},lint:{variableToType:this.props.variableToType},hintOptions:{variableToType:this.props.variableToType,closeOnUnfocus:!1,completeSingle:!1,container:this._node},gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],extraKeys:_1({"Cmd-Space":function(){return r.editor.showHint({completeSingle:!1,container:r._node})},"Ctrl-Space":function(){return r.editor.showHint({completeSingle:!1,container:r._node})},"Alt-Space":function(){return r.editor.showHint({completeSingle:!1,container:r._node})},"Shift-Space":function(){return r.editor.showHint({completeSingle:!1,container:r._node})},"Cmd-Enter":function(){r.props.onRunQuery&&r.props.onRunQuery()},"Ctrl-Enter":function(){r.props.onRunQuery&&r.props.onRunQuery()},"Shift-Ctrl-P":function(){r.props.onPrettifyQuery&&r.props.onPrettifyQuery()},"Shift-Ctrl-M":function(){r.props.onMergeQuery&&r.props.onMergeQuery()}},yu)});n.on("change",this._onEdit),n.on("keyup",this._onKeyUp),n.on("hasCompletion",this._onHasCompletion)},t.prototype.componentDidUpdate=function(r){if(this.CodeMirror=ft(),!!this.editor){if(this.ignoreChangeEvent=!0,this.props.variableToType!==r.variableToType&&(this.editor.options.lint.variableToType=this.props.variableToType,this.editor.options.hintOptions.variableToType=this.props.variableToType,this.CodeMirror.signal(this.editor,"change",this.editor)),this.props.value!==r.value&&this.props.value!==this.cachedValue){var n=this.props.value||"";this.cachedValue=n,this.editor.setValue(n)}this.ignoreChangeEvent=!1}},t.prototype.componentWillUnmount=function(){!this.editor||(this.editor.off("change",this._onEdit),this.editor.off("keyup",this._onKeyUp),this.editor.off("hasCompletion",this._onHasCompletion),this.editor=null)},t.prototype.render=function(){var r=this;return S1.default.createElement("div",{className:"codemirrorWrap",style:{position:this.props.active?"relative":"absolute",visibility:this.props.active?"visible":"hidden"},ref:function(n){r._node=n}})},t.prototype.getCodeMirror=function(){return this.editor},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t}(S1.default.Component);var k1=Ye(Bt());var U$=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),D1=function(){return D1=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=65&&s<=90||!o.shiftKey&&s>=48&&s<=57||o.shiftKey&&s===189||o.shiftKey&&s===222)&&n.editor.execCommand("autocomplete")},n._onEdit=function(){!n.editor||n.ignoreChangeEvent||(n.cachedValue=n.editor.getValue(),n.props.onEdit&&n.props.onEdit(n.cachedValue))},n._onHasCompletion=function(a,o){mu(a,o,n.props.onHintInformationRender)},n.cachedValue=r.value||"",n}return t.prototype.componentDidMount=function(){var r=this;this.CodeMirror=ft(),vp(),gp(),Om(),yp(),mp(),Cm(),Es(),bp(),_s(),Oq(),Tp();var n=this.editor=this.CodeMirror(this._node,{value:this.props.value||"",lineNumbers:!0,tabSize:2,mode:{name:"javascript",json:!0},theme:this.props.editorTheme||"graphiql",keyMap:"sublime",autoCloseBrackets:!0,matchBrackets:!0,showCursorWhenSelecting:!0,readOnly:this.props.readOnly?"nocursor":!1,foldGutter:{minFoldSize:4},gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],extraKeys:D1({"Cmd-Space":function(){return r.editor.showHint({completeSingle:!1,container:r._node})},"Ctrl-Space":function(){return r.editor.showHint({completeSingle:!1,container:r._node})},"Alt-Space":function(){return r.editor.showHint({completeSingle:!1,container:r._node})},"Shift-Space":function(){return r.editor.showHint({completeSingle:!1,container:r._node})},"Cmd-Enter":function(){r.props.onRunQuery&&r.props.onRunQuery()},"Ctrl-Enter":function(){r.props.onRunQuery&&r.props.onRunQuery()},"Shift-Ctrl-P":function(){r.props.onPrettifyQuery&&r.props.onPrettifyQuery()},"Shift-Ctrl-M":function(){r.props.onMergeQuery&&r.props.onMergeQuery()}},yu)});n.on("change",this._onEdit),n.on("keyup",this._onKeyUp),n.on("hasCompletion",this._onHasCompletion)},t.prototype.componentDidUpdate=function(r){if(this.CodeMirror=ft(),!!this.editor){if(this.ignoreChangeEvent=!0,this.props.value!==r.value&&this.props.value!==this.cachedValue){var n=this.props.value||"";this.cachedValue=n,this.editor.setValue(n)}this.ignoreChangeEvent=!1}},t.prototype.componentWillUnmount=function(){!this.editor||(this.editor.off("change",this._onEdit),this.editor.off("keyup",this._onKeyUp),this.editor.off("hasCompletion",this._onHasCompletion),this.editor=null)},t.prototype.render=function(){var r=this;return k1.default.createElement("div",{className:"codemirrorWrap",style:{position:this.props.active?"relative":"absolute",visibility:this.props.active?"visible":"hidden"},ref:function(n){r._node=n}})},t.prototype.getCodeMirror=function(){return this.editor},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t}(k1.default.Component);var wc=Ye(Bt()),C1=Ye(ST());var W$=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),w1=function(e){W$(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.viewer=null,r._node=null,r}return t.prototype.componentDidMount=function(){var r=ft();mp(),yp(),_s(),qD(),Es(),bp(),Tp(),Cq();var n=this.props.ResultsTooltip,a=this.props.ImagePreview;if(n||a){h1();var o=document.createElement("div");r.registerHelper("info","graphql-results",function(s,l,d,h){var v=[];return n&&v.push(wc.default.createElement(n,{pos:h})),a&&typeof a.shouldRender=="function"&&a.shouldRender(s)&&v.push(wc.default.createElement(a,{token:s})),v.length?(C1.default.render(wc.default.createElement("div",null,v),o),o):(C1.default.unmountComponentAtNode(o),null)})}this.viewer=r(this._node,{lineWrapping:!0,value:this.props.value||"",readOnly:!0,theme:this.props.editorTheme||"graphiql",mode:"graphql-results",keyMap:"sublime",foldGutter:{minFoldSize:4},gutters:["CodeMirror-foldgutter"],info:Boolean(this.props.ResultsTooltip||this.props.ImagePreview),extraKeys:yu})},t.prototype.shouldComponentUpdate=function(r){return this.props.value!==r.value},t.prototype.componentDidUpdate=function(){this.viewer&&this.viewer.setValue(this.props.value||"")},t.prototype.componentWillUnmount=function(){this.viewer=null},t.prototype.render=function(){var r=this;return wc.default.createElement("section",{className:"result-window","aria-label":"Result Window","aria-live":"polite","aria-atomic":"true",ref:function(n){n&&(r.props.registerRef(n),r._node=n)}})},t.prototype.getCodeMirror=function(){return this.viewer},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t}(wc.default.Component);var Sn=Ye(Bt()),j1=Ye(ct());var Zr=Ye(Bt());var Mp=Ye(Bt());var oy=Ye(Bt()),uy=Ye(ct());function jn(e){var t=e.onClick?e.onClick:function(){return null};return A1(e.type,t)}function A1(e,t){return e instanceof uy.GraphQLNonNull?oy.default.createElement("span",null,A1(e.ofType,t),"!"):e instanceof uy.GraphQLList?oy.default.createElement("span",null,"[",A1(e.ofType,t),"]"):oy.default.createElement("a",{className:"type-name",onClick:function(r){r.preventDefault(),t(e,r)},href:"#"},e==null?void 0:e.name)}var N1=Ye(Bt()),sy=Ye(ct()),Y$=function(e){return e?(0,sy.print)(e):""};function Pp(e){var t=e.field;return"defaultValue"in t&&t.defaultValue!==void 0?N1.default.createElement("span",null," = ",N1.default.createElement("span",{className:"arg-default-value"},Y$((0,sy.astFromValue)(t.defaultValue,t.type)))):null}function ws(e){var t=e.arg,r=e.onClickType,n=e.showDefaultValue;return Mp.default.createElement("span",{className:"arg"},Mp.default.createElement("span",{className:"arg-name"},t.name),": ",Mp.default.createElement(jn,{type:t.type,onClick:r}),n!==!1&&Mp.default.createElement(Pp,{field:t}))}var wq=Ye(Bt());function L1(e){var t=e.directive;return wq.default.createElement("span",{className:"doc-category-item",id:t.name.value},"@",t.name.value)}var x1=Ye(Bt()),Aq=Ye(Dm()),J$=new Aq.default;function hi(e){var t=e.markdown,r=e.className;return t?x1.default.createElement("div",{className:r,dangerouslySetInnerHTML:{__html:J$.render(t)}}):x1.default.createElement("div",null)}function I1(e){var t=e.field,r=e.onClickType,n;t&&"args"in t&&t.args.length>0&&(n=Zr.default.createElement("div",{className:"doc-category"},Zr.default.createElement("div",{className:"doc-category-title"},"arguments"),t.args.map(function(o){return Zr.default.createElement("div",{key:o.name,className:"doc-category-item"},Zr.default.createElement("div",null,Zr.default.createElement(ws,{arg:o,onClickType:r})),Zr.default.createElement(hi,{className:"doc-value-description",markdown:o.description}))})));var a;return t&&t.astNode&&t.astNode.directives&&t.astNode.directives.length>0&&(a=Zr.default.createElement("div",{className:"doc-category"},Zr.default.createElement("div",{className:"doc-category-title"},"directives"),t.astNode.directives.map(function(o){return Zr.default.createElement("div",{key:o.name.value,className:"doc-category-item"},Zr.default.createElement("div",null,Zr.default.createElement(L1,{directive:o})))}))),Zr.default.createElement("div",null,Zr.default.createElement(hi,{className:"doc-type-description",markdown:(t==null?void 0:t.description)||"No Description"}),t&&"deprecationReason"in t&&Zr.default.createElement(hi,{className:"doc-deprecation",markdown:t==null?void 0:t.deprecationReason}),Zr.default.createElement("div",{className:"doc-category"},Zr.default.createElement("div",{className:"doc-category-title"},"type"),Zr.default.createElement(jn,{type:t==null?void 0:t.type,onClick:r})),n,a)}var ei=Ye(Bt());function R1(e){var t=e.schema,r=e.onClickType,n=t.getQueryType(),a=t.getMutationType&&t.getMutationType(),o=t.getSubscriptionType&&t.getSubscriptionType();return ei.default.createElement("div",null,ei.default.createElement(hi,{className:"doc-type-description",markdown:t.description||"A GraphQL schema provides a root type for each kind of operation."}),ei.default.createElement("div",{className:"doc-category"},ei.default.createElement("div",{className:"doc-category-title"},"root types"),ei.default.createElement("div",{className:"doc-category-item"},ei.default.createElement("span",{className:"keyword"},"query"),": ",ei.default.createElement(jn,{type:n,onClick:r})),a&&ei.default.createElement("div",{className:"doc-category-item"},ei.default.createElement("span",{className:"keyword"},"mutation"),": ",ei.default.createElement(jn,{type:a,onClick:r})),o&&ei.default.createElement("div",{className:"doc-category-item"},ei.default.createElement("span",{className:"keyword"},"subscription"),": ",ei.default.createElement(jn,{type:o,onClick:r}))))}var Ac=Ye(Bt());function vi(e,t){var r;return function(){for(var n=this,a=[],o=0;o=100)return"break";var m=v[_];if(n!==m&&F1(_,r)&&d.push(ti.default.createElement("div",{className:"doc-category-item",key:_},ti.default.createElement(jn,{type:m,onClick:o}))),m&&"getFields"in m){var k=m.getFields();Object.keys(k).forEach(function(w){var C=k[w],D;if(!F1(w,r))if("args"in C&&C.args.length){if(D=C.args.filter(function(M){return F1(M.name,r)}),D.length===0)return}else return;var R=ti.default.createElement("div",{className:"doc-category-item",key:_+"."+w},n!==m&&[ti.default.createElement(jn,{key:"type",type:m,onClick:o}),"."],ti.default.createElement("a",{className:"field-name",onClick:function(M){return s(C,m,M)}},C.name),D&&["(",ti.default.createElement("span",{key:"args"},D.map(function(M){return ti.default.createElement(ws,{key:M.name,arg:M,onClickType:o,showDefaultValue:!1})})),")"]);n===m?l.push(R):h.push(R)})}},A=0,L=b;A0?ti.default.createElement("div",null,l,ti.default.createElement("div",{className:"doc-category"},ti.default.createElement("div",{className:"doc-category-title"},"other results"),d,h)):ti.default.createElement("div",{className:"doc-search-items"},l,d,h)},t}(ti.default.Component),Lq=eee;function F1(e,t){try{var r=t.replace(/[^_0-9A-Za-z]/g,function(n){return"\\"+n});return e.search(new RegExp(r,"i"))!==-1}catch(n){return e.toLowerCase().indexOf(t.toLowerCase())!==-1}}var dt=Ye(Bt()),Ua=Ye(ct());var tee=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),ree=function(e){tee(t,e);function t(r){var n=e.call(this,r)||this;return n.handleShowDeprecated=function(){return n.setState({showDeprecated:!0})},n.state={showDeprecated:!1},n}return t.prototype.shouldComponentUpdate=function(r,n){return this.props.type!==r.type||this.props.schema!==r.schema||this.state.showDeprecated!==n.showDeprecated},t.prototype.render=function(){var r=this.props.schema,n=this.props.type,a=this.props.onClickType,o=this.props.onClickField,s=null,l=[];n instanceof Ua.GraphQLUnionType?(s="possible types",l=r.getPossibleTypes(n)):n instanceof Ua.GraphQLInterfaceType?(s="implementations",l=r.getPossibleTypes(n)):n instanceof Ua.GraphQLObjectType&&(s="implements",l=n.getInterfaces());var d;l&&l.length>0&&(d=dt.default.createElement("div",{className:"doc-category"},dt.default.createElement("div",{className:"doc-category-title"},s),l.map(function(m){return dt.default.createElement("div",{key:m.name,className:"doc-category-item"},dt.default.createElement(jn,{type:m,onClick:a}))})));var h,v;if(n&&"getFields"in n){var b=n.getFields(),T=Object.keys(b).map(function(m){return b[m]});h=dt.default.createElement("div",{className:"doc-category"},dt.default.createElement("div",{className:"doc-category-title"},"fields"),T.filter(function(m){return"isDeprecated"in m?!m.isDeprecated:!0}).map(function(m){return dt.default.createElement(Iq,{key:m.name,type:n,field:m,onClickType:a,onClickField:o})}));var A=T.filter(function(m){return"isDeprecated"in m&&m.isDeprecated});A.length>0&&(v=dt.default.createElement("div",{className:"doc-category"},dt.default.createElement("div",{className:"doc-category-title"},"deprecated fields"),this.state.showDeprecated?A.map(function(m){return dt.default.createElement(Iq,{key:m.name,type:n,field:m,onClickType:a,onClickField:o})}):dt.default.createElement("button",{className:"show-btn",onClick:this.handleShowDeprecated},"Show deprecated fields...")))}var L,S;if(n instanceof Ua.GraphQLEnumType){var y=n.getValues();L=dt.default.createElement("div",{className:"doc-category"},dt.default.createElement("div",{className:"doc-category-title"},"values"),y.filter(function(m){return!m.isDeprecated}).map(function(m){return dt.default.createElement(Rq,{key:m.name,value:m})}));var _=y.filter(function(m){return m.isDeprecated});_.length>0&&(S=dt.default.createElement("div",{className:"doc-category"},dt.default.createElement("div",{className:"doc-category-title"},"deprecated values"),this.state.showDeprecated?_.map(function(m){return dt.default.createElement(Rq,{key:m.name,value:m})}):dt.default.createElement("button",{className:"show-btn",onClick:this.handleShowDeprecated},"Show deprecated values...")))}return dt.default.createElement("div",null,dt.default.createElement(hi,{className:"doc-type-description",markdown:"description"in n&&n.description||"No Description"}),n instanceof Ua.GraphQLObjectType&&d,h,v,L,S,!(n instanceof Ua.GraphQLObjectType)&&d)},t}(dt.default.Component),xq=ree;function Iq(e){var t=e.type,r=e.field,n=e.onClickType,a=e.onClickField;return dt.default.createElement("div",{className:"doc-category-item"},dt.default.createElement("a",{className:"field-name",onClick:function(o){return a(r,t,o)}},r.name),"args"in r&&r.args&&r.args.length>0&&["(",dt.default.createElement("span",{key:"args"},r.args.map(function(o){return dt.default.createElement(ws,{key:o.name,arg:o,onClickType:n})})),")"],": ",dt.default.createElement(jn,{type:r.type,onClick:n}),dt.default.createElement(Pp,{field:r}),r.description&&dt.default.createElement(hi,{className:"field-short-description",markdown:r.description}),"deprecationReason"in r&&r.deprecationReason&&dt.default.createElement(hi,{className:"doc-deprecation",markdown:r.deprecationReason}))}function Rq(e){var t=e.value;return dt.default.createElement("div",{className:"doc-category-item"},dt.default.createElement("div",{className:"enum-value"},t.name),dt.default.createElement(hi,{className:"doc-value-description",markdown:t.description}),t.deprecationReason&&dt.default.createElement(hi,{className:"doc-deprecation",markdown:t.deprecationReason}))}var nee=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),ly=function(){return ly=Object.assign||function(e){for(var t,r=1,n=arguments.length;r1&&n.setState({navStack:n.state.navStack.slice(0,-1)})},n.handleClickType=function(a){n.showDoc(a)},n.handleClickField=function(a){n.showDoc(a)},n.handleSearch=function(a){n.showSearch(a)},n.state={navStack:[Fq]},n}return t.prototype.shouldComponentUpdate=function(r,n){return this.props.schema!==r.schema||this.state.navStack!==n.navStack},t.prototype.render=function(){var r=this.props.schema,n=this.state.navStack,a=n[n.length-1],o;r===void 0?o=Sn.default.createElement("div",{className:"spinner-container"},Sn.default.createElement("div",{className:"spinner"})):r?a.search?o=Sn.default.createElement(Lq,{searchValue:a.search,withinType:a.def,schema:r,onClickType:this.handleClickType,onClickField:this.handleClickField}):n.length===1?o=Sn.default.createElement(R1,{schema:r,onClickType:this.handleClickType}):(0,j1.isType)(a.def)?o=Sn.default.createElement(xq,{schema:r,type:a.def,onClickType:this.handleClickType,onClickField:this.handleClickField}):o=Sn.default.createElement(I1,{field:a.def,onClickType:this.handleClickType}):o=Sn.default.createElement("div",{className:"error-container"},"No Schema Available");var s=n.length===1||(0,j1.isType)(a.def)&&"getFields"in a.def,l;return n.length>1&&(l=n[n.length-2].name),Sn.default.createElement("section",{className:"doc-explorer",key:a.name,"aria-label":"Documentation Explorer"},Sn.default.createElement("div",{className:"doc-explorer-title-bar"},l&&Sn.default.createElement("button",{className:"doc-explorer-back",onClick:this.handleNavBackClick,"aria-label":"Go back to "+l},l),Sn.default.createElement("div",{className:"doc-explorer-title"},a.title||a.name),Sn.default.createElement("div",{className:"doc-explorer-rhs"},this.props.children)),Sn.default.createElement("div",{className:"doc-explorer-contents"},s&&Sn.default.createElement(Nq,{value:a.search,placeholder:"Search "+a.name+"...",onSearch:this.handleSearch}),o))},t.prototype.showDoc=function(r){var n=this.state.navStack,a=n[n.length-1];a.def!==r&&this.setState({navStack:n.concat([{name:r.name,def:r}])})},t.prototype.showDocForReference=function(r){r&&r.kind==="Type"?this.showDoc(r.type):r.kind==="Field"?this.showDoc(r.field):r.kind==="Argument"&&r.field?this.showDoc(r.field):r.kind==="EnumValue"&&r.type&&this.showDoc(r.type)},t.prototype.showSearch=function(r){var n=this.state.navStack.slice(),a=n[n.length-1];n[n.length-1]=ly(ly({},a),{search:r}),this.setState({navStack:n})},t.prototype.reset=function(){this.setState({navStack:[Fq]})},t}(Sn.default.Component);var Mq=Ye(ct()),Su=Ye(Bt());var iee=function(){for(var e=0,t=0,r=arguments.length;tthis.maxSize&&n.shift();for(var a=0;a<5;a++){var o=this.storage.set(this.key,JSON.stringify((r={},r[this.key]=n,r)));if(!o||!o.error)this.items=n;else if(o.isQuotaError&&this.maxSize)n.shift();else return}},e.prototype.save=function(){var t;this.storage.set(this.key,JSON.stringify((t={},t[this.key]=this.items,t)))},e}(),M1=aee;var As=Ye(Bt()),oee=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),uee=function(e){oee(t,e);function t(r){var n=e.call(this,r)||this;return n.state={editable:!1},n.editField=null,n}return t.prototype.render=function(){var r=this,n,a=this.props.label||this.props.operationName||((n=this.props.query)===null||n===void 0?void 0:n.split(` -`).filter(function(s){return s.indexOf("#")!==0}).join("")),o=this.props.favorite?"\u2605":"\u2606";return As.default.createElement("li",{className:this.state.editable?"editable":void 0},this.state.editable?As.default.createElement("input",{type:"text",defaultValue:this.props.label,ref:function(s){r.editField=s},onBlur:this.handleFieldBlur.bind(this),onKeyDown:this.handleFieldKeyDown.bind(this),placeholder:"Type a label"}):As.default.createElement("button",{className:"history-label",onClick:this.handleClick.bind(this)},a),As.default.createElement("button",{onClick:this.handleEditClick.bind(this),"aria-label":"Edit label"},"\u270E"),As.default.createElement("button",{className:this.props.favorite?"favorited":void 0,onClick:this.handleStarClick.bind(this),"aria-label":this.props.favorite?"Remove favorite":"Add favorite"},o))},t.prototype.handleClick=function(){this.props.onSelect(this.props.query,this.props.variables,this.props.headers,this.props.operationName,this.props.label)},t.prototype.handleStarClick=function(r){r.stopPropagation(),this.props.handleToggleFavorite(this.props.query,this.props.variables,this.props.headers,this.props.operationName,this.props.label,this.props.favorite)},t.prototype.handleFieldBlur=function(r){r.stopPropagation(),this.setState({editable:!1}),this.props.handleEditLabel(this.props.query,this.props.variables,this.props.headers,this.props.operationName,r.target.value,this.props.favorite)},t.prototype.handleFieldKeyDown=function(r){r.keyCode===13&&(r.stopPropagation(),this.setState({editable:!1}),this.props.handleEditLabel(this.props.query,this.props.variables,this.props.headers,this.props.operationName,r.currentTarget.value,this.props.favorite))},t.prototype.handleEditClick=function(r){var n=this;r.stopPropagation(),this.setState({editable:!0},function(){n.editField&&n.editField.focus()})},t}(As.default.Component),jq=uee;var see=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),qp=function(){return qp=Object.assign||function(e){for(var t,r=1,n=arguments.length;rlee?!1:n?!(JSON.stringify(e)===JSON.stringify(n.query)&&(JSON.stringify(t)===JSON.stringify(n.variables)&&(JSON.stringify(r)===JSON.stringify(n.headers)||r&&!n.headers)||t&&!n.variables)):!0},qq=function(e){see(t,e);function t(r){var n=e.call(this,r)||this;n.updateHistory=function(l,d,h,v){if(fee(l,d,h,n.historyStore.fetchRecent())){n.historyStore.push({query:l,variables:d,headers:h,operationName:v});var b=n.historyStore.items,T=n.favoriteStore.items,A=b.concat(T);n.setState({queries:A})}},n.toggleFavorite=function(l,d,h,v,b,T){var A={query:l,variables:d,headers:h,operationName:v,label:b};n.favoriteStore.contains(A)?T&&(A.favorite=!1,n.favoriteStore.delete(A)):(A.favorite=!0,n.favoriteStore.push(A)),n.setState({queries:Pq(n.historyStore.items,n.favoriteStore.items)})},n.editLabel=function(l,d,h,v,b,T){var A={query:l,variables:d,headers:h,operationName:v,label:b};T?n.favoriteStore.edit(qp(qp({},A),{favorite:T})):n.historyStore.edit(A),n.setState({queries:Pq(n.historyStore.items,n.favoriteStore.items)})},n.historyStore=new M1("queries",r.storage,cee),n.favoriteStore=new M1("favorites",r.storage,null);var a=n.historyStore.fetchAll(),o=n.favoriteStore.fetchAll(),s=a.concat(o);return n.state={queries:s},n}return t.prototype.render=function(){var r=this,n=this.state.queries.slice().reverse(),a=n.map(function(o,s){return Su.default.createElement(jq,qp({handleEditLabel:r.editLabel,handleToggleFavorite:r.toggleFavorite,key:s+":"+(o.label||o.query),onSelect:r.props.onSelectQuery},o))});return Su.default.createElement("section",{"aria-label":"History"},Su.default.createElement("div",{className:"history-title-bar"},Su.default.createElement("div",{className:"history-title"},"History"),Su.default.createElement("div",{className:"doc-explorer-rhs"},this.props.children)),Su.default.createElement("ul",{className:"history-contents"},a))},t}(Su.default.Component);var dee=function(){function e(){this.sizes=[]}return e.prototype.updateSizes=function(t){var r=this;t.forEach(function(n,a){if(n){var o=n.getClientHeight();if(a<=r.sizes.length&&o!==r.sizes[a]){var s=n.getCodeMirror();s&&s.setSize(null,null)}r.sizes[a]=o}})},e}(),Bq=dee;function pee(e,t){return t instanceof DOMException&&(t.code===22||t.code===1014||t.name==="QuotaExceededError"||t.name==="NS_ERROR_DOM_QUOTA_REACHED")&&e.length!==0}var hee=function(){function e(t){this.storage=t||(typeof window!="undefined"?window.localStorage:null)}return e.prototype.get=function(t){if(this.storage){var r=this.storage.getItem("graphiql:"+t);if(r==="null"||r==="undefined")return this.storage.removeItem("graphiql:"+t),null;if(r)return r}return null},e.prototype.set=function(t,r){var n=!1,a=null;if(this.storage){var o="graphiql:"+t;if(r)try{this.storage.setItem(o,r)}catch(s){a=s,n=pee(this.storage,s)}else this.storage.removeItem(o)}return{isQuotaError:n,error:a}},e}(),Vq=hee;var Nc=Ye(ct());function Bp(e,t){if(!!t){var r;try{r=(0,Nc.parse)(t,{experimentalFragmentVariables:!0})}catch(o){return}var n=e?vee(e,r):void 0,a=[];return(0,Nc.visit)(r,{OperationDefinition:function(o){a.push(o)}}),{variableToType:n,operations:a,documentAST:r}}}function vee(e,t){var r=Object.create(null);return t.definitions.forEach(function(n){if(n.kind==="OperationDefinition"){var a=n.variableDefinitions;a&&a.forEach(function(o){var s=o.variable,l=o.type,d=(0,Nc.typeFromAST)(e,l);d&&(r[s.name.value]=d)})}}),r}function Vp(e,t,r){if(!(!r||r.length<1)){var n=r.map(function(s){return s.name&&s.name.value});if(t&&n.indexOf(t)!==-1)return t;if(t&&e){var a=e.map(function(s){return s.name&&s.name.value}),o=a.indexOf(t);if(o!==-1&&o=0)continue;s.push(v)}var b=e[h.name.value];if(b){var T=b.typeCondition,A=b.directives,L=b.selectionSet;h={kind:"InlineFragment",typeCondition:T,directives:A,selectionSet:L}}}if(h.kind==="InlineFragment"&&(!h.directives||((n=h.directives)===null||n===void 0?void 0:n.length)===0)){var S=h.typeCondition?h.typeCondition.name.value:null;if(!S||S===a){o.push.apply(o,Gq(e,h.selectionSet.selections,r));continue}}o.push(h)}return o}function cy(e,t){for(var r=t?new Du.TypeInfo(t):null,n=Object.create(null),a=0,o=e.definitions;a0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]0){var o=this.getQueryEditor();o&&o.operation(function(){var s=o.getCursor(),l=o.indexFromPos(s);o.setValue(a||"");var d=0,h=n.map(function(b){var T=b.index,A=b.string;return o.markText(o.posFromIndex(T+d),o.posFromIndex(T+(d+=A.length)),{className:"autoInsertedLeaf",clearOnEnter:!0,title:"Automatically added leaf fields"})});setTimeout(function(){return h.forEach(function(b){return b.clear()})},7e3);var v=l;n.forEach(function(b){var T=b.index,A=b.string;T2?a.headers=JSON.parse(this.state.headers):this.props.headers&&(a.headers=JSON.parse(this.props.headers));var o=n3(n({query:V1,operationName:U1},a));if(!e3(o)){this.setState({response:"Fetcher did not return a Promise for introspection."});return}o.then(function(s){if(typeof s!="string"&&"data"in s)return s;var l=n3(n({query:Kq,operationName:U1},a));if(!e3(o))throw new Error("Fetcher did not return a Promise for introspection.");return l}).then(function(s){if(r.state.schema===void 0)if(typeof s!="string"&&"data"in s){var l=(0,sa.buildClientSchema)(s.data),d=Bp(l,r.state.query);r.safeSetState(Ga({schema:l},d))}else{var h=typeof s=="string"?s:t.formatResult(s);r.safeSetState({schema:void 0,response:h})}}).catch(function(s){r.safeSetState({schema:void 0,response:s?t.formatError(s):void 0})})},t.prototype._fetchQuery=function(r,n,a,o,s,l){return Q1(this,void 0,void 0,function(){var d,h,v,b,T,A,L=this;return K1(this,function(S){d=this.props.fetcher,h=null,v=null;try{h=n&&n.trim()!==""?JSON.parse(n):null}catch(y){throw new Error("Variables are invalid JSON: "+y.message+".")}if(typeof h!="object")throw new Error("Variables are not a JSON object.");try{v=a&&a.trim()!==""?JSON.parse(a):null}catch(y){throw new Error("Headers are invalid JSON: "+y.message+".")}if(typeof v!="object")throw new Error("Headers are not a JSON object.");return this.props.externalFragments&&(b=new Map,Array.isArray(this.props.externalFragments)?this.props.externalFragments.forEach(function(y){b.set(y.name.value,y)}):(0,sa.visit)((0,sa.parse)(this.props.externalFragments,{experimentalFragmentVariables:!0}),{FragmentDefinition:function(y){b.set(y.name.value,y)}}),T=oD(this.state.documentAST,b),T.length>0&&(r+=` -`+T.map(function(y){return(0,sa.print)(y)}).join(` -`))),A=d({query:r,variables:h,operationName:o},{headers:v,shouldPersistHeaders:s,documentAST:this.state.documentAST}),[2,Promise.resolve(A).then(function(y){if(t3(y)){var _=y.subscribe({next:l,error:function(m){L.safeSetState({isWaitingForResponse:!1,response:m?t.formatError(m):void 0,subscription:null})},complete:function(){L.safeSetState({isWaitingForResponse:!1,subscription:null})}});return _}else return r3(y)?(function(){return Q1(L,void 0,void 0,function(){var m,k,w,C,D,R,M;return K1(this,function(q){switch(q.label){case 0:q.trys.push([0,13,,14]),q.label=1;case 1:q.trys.push([1,6,7,12]),m=kee(y),q.label=2;case 2:return[4,m.next()];case 3:if(k=q.sent(),!!k.done)return[3,5];w=k.value,l(w),q.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return C=q.sent(),R={error:C},[3,12];case 7:return q.trys.push([7,,10,11]),k&&!k.done&&(M=m.return)?[4,M.call(m)]:[3,9];case 8:q.sent(),q.label=9;case 9:return[3,11];case 10:if(R)throw R.error;return[7];case 11:return[7];case 12:return this.safeSetState({isWaitingForResponse:!1,subscription:null}),[3,14];case 13:return D=q.sent(),this.safeSetState({isWaitingForResponse:!1,response:D?t.formatError(D):void 0,subscription:null}),[3,14];case 14:return[2]}})})}(),{unsubscribe:function(){var m,k;return(k=(m=y[Symbol.asyncIterator]()).return)===null||k===void 0?void 0:k.call(m)}}):(l(y),null)}).catch(function(y){return L.safeSetState({isWaitingForResponse:!1,response:y?t.formatError(y):void 0}),null})]})})},t.prototype._runQueryAtCursor=function(){if(this.state.subscription){this.handleStopQuery();return}var r,n=this.state.operations;if(n){var a=this.getQueryEditor();if(a&&a.hasFocus())for(var o=a.getCursor(),s=a.indexFromPos(o),l=0;l=s){r=d.name&&d.name.value;break}}}this.handleRunQuery(r)},t.prototype._didClickDragBar=function(r){if(r.button!==0||r.ctrlKey)return!1;var n=r.target;if(n.className.indexOf("CodeMirror-gutter")!==0)return!1;for(var a=this.resultViewerElement;n;){if(n===a)return!0;n=n.parentNode}return!1},t.Logo=Jq,t.Toolbar=Xq,t.Footer=Zq,t.QueryEditor=Jm,t.VariableEditor=iy,t.HeaderEditor=O1,t.ResultViewer=w1,t.Button=gu,t.ToolbarButton=gu,t.Group=sD,t.Menu=lD,t.MenuItem=cR,t}($e.default.Component);function Jq(e){return $e.default.createElement("div",{className:"title"},e.children||$e.default.createElement("span",null,"Graph",$e.default.createElement("em",null,"i"),"QL"))}Jq.displayName="GraphiQLLogo";function Xq(e){return $e.default.createElement("div",{className:"toolbar",role:"toolbar","aria-label":"Editor Commands"},e.children)}Xq.displayName="GraphiQLToolbar";function Zq(e){return $e.default.createElement("div",{className:"footer"},e.children)}Zq.displayName="GraphiQLFooter";var $q=function(e){return Ga(Ga({},e),{message:e.message,stack:e.stack})},wee=`# Welcome to GraphiQL +`),Ur(e,"Deprecated: "),Ur(e,n))}function Ur(e,t){e.push(t)}});var KU=G(bi=>{"use strict";var dte=bi&&bi.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),vy=bi&&bi.__exportStar||function(e,t){for(var r in e)r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r)&&dte(t,e,r)};Object.defineProperty(bi,"__esModule",{value:!0});bi.getHoverInformation=bi.getOutline=void 0;vy(QO(),bi);vy(ew(),bi);vy(CU(),bi);vy(PU(),bi);var pte=MU();Object.defineProperty(bi,"getOutline",{enumerable:!0,get:function(){return pte.getOutline}});var hte=BU();Object.defineProperty(bi,"getHoverInformation",{enumerable:!0,get:function(){return hte.getHoverInformation}})});var HU=G(Qs=>{"use strict";Object.defineProperty(Qs,"__esModule",{value:!0});Qs.CompletionItemKind=Qs.FileChangeTypeKind=void 0;Qs.FileChangeTypeKind={Created:1,Changed:2,Deleted:3};var vte;(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(vte=Qs.CompletionItemKind||(Qs.CompletionItemKind={}))});var Qc=G(ve=>{"use strict";Object.defineProperty(ve,"__esModule",{value:!0});ve.Range=ve.validateWithCustomRules=ve.collectVariables=ve.Position=ve.pointToOffset=ve.offsetToPosition=ve.getVariablesJSONSchema=ve.getQueryFacts=ve.getOperationFacts=ve.getOperationASTFacts=ve.getFragmentDependenciesForAST=ve.getFragmentDependencies=ve.getASTNodeAtPosition=ve.FileChangeTypeKind=ve.CompletionItemKind=ve.opt=ve.t=ve.list=ve.p=ve.isIgnored=ve.LexRules=ve.RuleKinds=ve.CharacterStream=ve.ParseRules=ve.onlineParser=ve.validateQuery=ve.SuggestionCommand=ve.canUseDirective=ve.DIAGNOSTIC_SEVERITY=ve.SEVERITY=ve.getVariableCompletions=ve.getTypeInfo=ve.getTokenAtPosition=ve.getRange=ve.getOutline=ve.getHoverInformation=ve.getFragmentDefinitions=ve.getFieldDef=ve.getDiagnostics=ve.getDefinitionState=ve.getDefinitionQueryResultForField=ve.getDefinitionQueryResultForNamedType=ve.getDefinitionQueryResultForFragmentSpread=ve.getDefinitionQueryResultForDefinitionNode=ve.getAutocompleteSuggestions=void 0;var Gr=KU();Object.defineProperty(ve,"getAutocompleteSuggestions",{enumerable:!0,get:function(){return Gr.getAutocompleteSuggestions}});Object.defineProperty(ve,"getDefinitionQueryResultForDefinitionNode",{enumerable:!0,get:function(){return Gr.getDefinitionQueryResultForDefinitionNode}});Object.defineProperty(ve,"getDefinitionQueryResultForFragmentSpread",{enumerable:!0,get:function(){return Gr.getDefinitionQueryResultForFragmentSpread}});Object.defineProperty(ve,"getDefinitionQueryResultForNamedType",{enumerable:!0,get:function(){return Gr.getDefinitionQueryResultForNamedType}});Object.defineProperty(ve,"getDefinitionQueryResultForField",{enumerable:!0,get:function(){return Gr.getDefinitionQueryResultForField}});Object.defineProperty(ve,"getDefinitionState",{enumerable:!0,get:function(){return Gr.getDefinitionState}});Object.defineProperty(ve,"getDiagnostics",{enumerable:!0,get:function(){return Gr.getDiagnostics}});Object.defineProperty(ve,"getFieldDef",{enumerable:!0,get:function(){return Gr.getFieldDef}});Object.defineProperty(ve,"getFragmentDefinitions",{enumerable:!0,get:function(){return Gr.getFragmentDefinitions}});Object.defineProperty(ve,"getHoverInformation",{enumerable:!0,get:function(){return Gr.getHoverInformation}});Object.defineProperty(ve,"getOutline",{enumerable:!0,get:function(){return Gr.getOutline}});Object.defineProperty(ve,"getRange",{enumerable:!0,get:function(){return Gr.getRange}});Object.defineProperty(ve,"getTokenAtPosition",{enumerable:!0,get:function(){return Gr.getTokenAtPosition}});Object.defineProperty(ve,"getTypeInfo",{enumerable:!0,get:function(){return Gr.getTypeInfo}});Object.defineProperty(ve,"getVariableCompletions",{enumerable:!0,get:function(){return Gr.getVariableCompletions}});Object.defineProperty(ve,"SEVERITY",{enumerable:!0,get:function(){return Gr.SEVERITY}});Object.defineProperty(ve,"DIAGNOSTIC_SEVERITY",{enumerable:!0,get:function(){return Gr.DIAGNOSTIC_SEVERITY}});Object.defineProperty(ve,"canUseDirective",{enumerable:!0,get:function(){return Gr.canUseDirective}});Object.defineProperty(ve,"SuggestionCommand",{enumerable:!0,get:function(){return Gr.SuggestionCommand}});Object.defineProperty(ve,"validateQuery",{enumerable:!0,get:function(){return Gr.validateQuery}});var eo=ay();Object.defineProperty(ve,"onlineParser",{enumerable:!0,get:function(){return eo.onlineParser}});Object.defineProperty(ve,"ParseRules",{enumerable:!0,get:function(){return eo.ParseRules}});Object.defineProperty(ve,"CharacterStream",{enumerable:!0,get:function(){return eo.CharacterStream}});Object.defineProperty(ve,"RuleKinds",{enumerable:!0,get:function(){return eo.RuleKinds}});Object.defineProperty(ve,"LexRules",{enumerable:!0,get:function(){return eo.LexRules}});Object.defineProperty(ve,"isIgnored",{enumerable:!0,get:function(){return eo.isIgnored}});Object.defineProperty(ve,"p",{enumerable:!0,get:function(){return eo.p}});Object.defineProperty(ve,"list",{enumerable:!0,get:function(){return eo.list}});Object.defineProperty(ve,"t",{enumerable:!0,get:function(){return eo.t}});Object.defineProperty(ve,"opt",{enumerable:!0,get:function(){return eo.opt}});var zU=HU();Object.defineProperty(ve,"CompletionItemKind",{enumerable:!0,get:function(){return zU.CompletionItemKind}});Object.defineProperty(ve,"FileChangeTypeKind",{enumerable:!0,get:function(){return zU.FileChangeTypeKind}});var Ii=Hp();Object.defineProperty(ve,"getASTNodeAtPosition",{enumerable:!0,get:function(){return Ii.getASTNodeAtPosition}});Object.defineProperty(ve,"getFragmentDependencies",{enumerable:!0,get:function(){return Ii.getFragmentDependencies}});Object.defineProperty(ve,"getFragmentDependenciesForAST",{enumerable:!0,get:function(){return Ii.getFragmentDependenciesForAST}});Object.defineProperty(ve,"getOperationASTFacts",{enumerable:!0,get:function(){return Ii.getOperationASTFacts}});Object.defineProperty(ve,"getOperationFacts",{enumerable:!0,get:function(){return Ii.getOperationFacts}});Object.defineProperty(ve,"getQueryFacts",{enumerable:!0,get:function(){return Ii.getQueryFacts}});Object.defineProperty(ve,"getVariablesJSONSchema",{enumerable:!0,get:function(){return Ii.getVariablesJSONSchema}});Object.defineProperty(ve,"offsetToPosition",{enumerable:!0,get:function(){return Ii.offsetToPosition}});Object.defineProperty(ve,"pointToOffset",{enumerable:!0,get:function(){return Ii.pointToOffset}});Object.defineProperty(ve,"Position",{enumerable:!0,get:function(){return Ii.Position}});Object.defineProperty(ve,"collectVariables",{enumerable:!0,get:function(){return Ii.collectVariables}});Object.defineProperty(ve,"validateWithCustomRules",{enumerable:!0,get:function(){return Ii.validateWithCustomRules}});Object.defineProperty(ve,"Range",{enumerable:!0,get:function(){return Ii.Range}})});var YU=G(my=>{"use strict";var gte=my&&my.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(my,"__esModule",{value:!0});var gy=gte(Wt());jO();var WU=Qc();gy.default.registerHelper("hint","graphql",function(e,t){var r=t.schema;if(!!r){var n=e.getCursor(),i=e.getTokenAt(n),o=i.type!==null&&/"|\w/.test(i.string[0])?i.start:i.end,s=new WU.Position(n.line,o),l=(0,WU.getAutocompleteSuggestions)(r,e.getValue(),s,i,t.externalFragments),d={list:l.map(function(h){return{text:h.label,type:h.type,description:h.documentation,isDeprecated:h.isDeprecated,deprecationReason:h.deprecationReason}}),from:{line:n.line,ch:o},to:{line:n.line,ch:i.end}};return(d==null?void 0:d.list)&&d.list.length>0&&(d.from=gy.default.Pos(d.from.line,d.from.ch),d.to=gy.default.Pos(d.to.line,d.to.ch),gy.default.signal(e,"hasCompletion",e,d,i)),d}})});var XU=G(yy=>{"use strict";var mte=yy&&yy.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(yy,"__esModule",{value:!0});var fw=mte(Wt()),yte=Qc(),JU=["error","warning","information","hint"],bte={"GraphQL: Validation":"validation","GraphQL: Deprecation":"deprecation","GraphQL: Syntax":"syntax"};fw.default.registerHelper("lint","graphql",function(e,t){var r=t.schema,n=(0,yte.getDiagnostics)(e,r,t.validationRules,void 0,t.externalFragments),i=n.map(function(o){return{message:o.message,severity:o.severity?JU[o.severity-1]:JU[0],type:o.source?bte[o.source]:void 0,from:fw.default.Pos(o.range.start.line,o.range.start.character),to:fw.default.Pos(o.range.end.line,o.range.end.character)}});return i})});var pw=G(dw=>{"use strict";Object.defineProperty(dw,"__esModule",{value:!0});function Tte(e,t){for(var r=[],n=e;n==null?void 0:n.kind;)r.push(n),n=n.prevState;for(var i=r.length-1;i>=0;i--)t(r[i])}dw.default=Tte});var hw=G(Jp=>{"use strict";var _te=Jp&&Jp.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Jp,"__esModule",{value:!0});var Fu=ht(),Bc=vi(),Ete=_te(pw());function Ste(e,t){var r={schema:e,type:null,parentType:null,inputType:null,directiveDef:null,fieldDef:null,argDef:null,argDefs:null,objectFieldDefs:null};return(0,Ete.default)(t,function(n){var i,o;switch(n.kind){case"Query":case"ShortQuery":r.type=e.getQueryType();break;case"Mutation":r.type=e.getMutationType();break;case"Subscription":r.type=e.getSubscriptionType();break;case"InlineFragment":case"FragmentDefinition":n.type&&(r.type=e.getType(n.type));break;case"Field":case"AliasedField":r.fieldDef=r.type&&n.name?ZU(e,r.parentType,n.name):null,r.type=(i=r.fieldDef)===null||i===void 0?void 0:i.type;break;case"SelectionSet":r.parentType=r.type?(0,Fu.getNamedType)(r.type):null;break;case"Directive":r.directiveDef=n.name?e.getDirective(n.name):null;break;case"Arguments":var s=n.prevState?n.prevState.kind==="Field"?r.fieldDef:n.prevState.kind==="Directive"?r.directiveDef:n.prevState.kind==="AliasedField"?n.prevState.name&&ZU(e,r.parentType,n.prevState.name):null:null;r.argDefs=s?s.args:null;break;case"Argument":if(r.argDef=null,r.argDefs){for(var l=0;l{"use strict";Object.defineProperty(ra,"__esModule",{value:!0});ra.getTypeReference=ra.getEnumValueReference=ra.getArgumentReference=ra.getDirectiveReference=ra.getFieldReference=void 0;var Ote=ht();function wte(e){return{kind:"Field",schema:e.schema,field:e.fieldDef,type:$U(e.fieldDef)?null:e.parentType}}ra.getFieldReference=wte;function Nte(e){return{kind:"Directive",schema:e.schema,directive:e.directiveDef}}ra.getDirectiveReference=Nte;function Dte(e){return e.directiveDef?{kind:"Argument",schema:e.schema,argument:e.argDef,directive:e.directiveDef}:{kind:"Argument",schema:e.schema,argument:e.argDef,field:e.fieldDef,type:$U(e.fieldDef)?null:e.parentType}}ra.getArgumentReference=Dte;function xte(e){return{kind:"EnumValue",value:e.enumValue||void 0,type:e.inputType?(0,Ote.getNamedType)(e.inputType):void 0}}ra.getEnumValueReference=xte;function Cte(e,t){return{kind:"Type",schema:e.schema,type:t||e.type}}ra.getTypeReference=Cte;function $U(e){return e.name.slice(0,2)==="__"}});var gw=G(by=>{"use strict";var Lte=by&&by.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(by,"__esModule",{value:!0});var Gn=Lte(Wt());Gn.default.defineOption("info",!1,function(e,t,r){if(r&&r!==Gn.default.Init){var n=e.state.info.onMouseOver;Gn.default.off(e.getWrapperElement(),"mouseover",n),clearTimeout(e.state.info.hoverTimeout),delete e.state.info}if(t){var i=e.state.info=Ite(t);i.onMouseOver=Rte.bind(null,e),Gn.default.on(e.getWrapperElement(),"mouseover",i.onMouseOver)}});function Ite(e){return{options:e instanceof Function?{render:e}:e===!0?{}:e}}function Ate(e){var t=e.state.info.options;return(t==null?void 0:t.hoverTime)||500}function Rte(e,t){var r=e.state.info,n=t.target||t.srcElement;if(n instanceof HTMLElement&&!(n.nodeName!=="SPAN"||r.hoverTimeout!==void 0)){var i=n.getBoundingClientRect(),o=function(){clearTimeout(r.hoverTimeout),r.hoverTimeout=setTimeout(l,d)},s=function(){Gn.default.off(document,"mousemove",o),Gn.default.off(e.getWrapperElement(),"mouseout",s),clearTimeout(r.hoverTimeout),r.hoverTimeout=void 0},l=function(){Gn.default.off(document,"mousemove",o),Gn.default.off(e.getWrapperElement(),"mouseout",s),r.hoverTimeout=void 0,jte(e,i)},d=Ate(e);r.hoverTimeout=setTimeout(l,d),Gn.default.on(document,"mousemove",o),Gn.default.on(e.getWrapperElement(),"mouseout",s)}}function jte(e,t){var r=e.coordsChar({left:(t.left+t.right)/2,top:(t.top+t.bottom)/2}),n=e.state.info,i=n.options,o=i.render||e.getHelper(r,"info");if(o){var s=e.getTokenAt(r,!0);if(s){var l=o(s,i,e,r);l&&Pte(e,t,l)}}}function Pte(e,t,r){var n=document.createElement("div");n.className="CodeMirror-info",n.appendChild(r),document.body.appendChild(n);var i=n.getBoundingClientRect(),o=window.getComputedStyle(n),s=i.right-i.left+parseFloat(o.marginLeft)+parseFloat(o.marginRight),l=i.bottom-i.top+parseFloat(o.marginTop)+parseFloat(o.marginBottom),d=t.bottom;l>window.innerHeight-t.bottom-15&&t.top>window.innerHeight-t.bottom&&(d=t.top-l),d<0&&(d=t.bottom);var h=Math.max(0,window.innerWidth-s-15);h>t.left&&(h=t.left),n.style.opacity="1",n.style.top=d+"px",n.style.left=h+"px";var v,y=function(){clearTimeout(v)},b=function(){clearTimeout(v),v=setTimeout(D,200)},D=function(){Gn.default.off(n,"mouseover",y),Gn.default.off(n,"mouseout",b),Gn.default.off(e.getWrapperElement(),"mouseout",b),n.style.opacity?(n.style.opacity="0",setTimeout(function(){n.parentNode&&n.parentNode.removeChild(n)},600)):n.parentNode&&n.parentNode.removeChild(n)};Gn.default.on(n,"mouseover",y),Gn.default.on(n,"mouseout",b),Gn.default.on(e.getWrapperElement(),"mouseout",b)}});var aG=G(Ty=>{"use strict";var eG=Ty&&Ty.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ty,"__esModule",{value:!0});var tG=ht(),Fte=eG(Wt()),Mte=eG(hw()),Xp=vw();gw();Fte.default.registerHelper("info","graphql",function(e,t){if(!(!t.schema||!e.state)){var r=e.state,n=r.kind,i=r.step,o=(0,Mte.default)(t.schema,e.state);if(n==="Field"&&i===0&&o.fieldDef||n==="AliasedField"&&i===2&&o.fieldDef){var s=document.createElement("div");return qte(s,o,t),Zp(s,t,o.fieldDef),s}else if(n==="Directive"&&i===1&&o.directiveDef){var s=document.createElement("div");return nG(s,o,t),Zp(s,t,o.directiveDef),s}else if(n==="Argument"&&i===0&&o.argDef){var s=document.createElement("div");return Vte(s,o,t),Zp(s,t,o.argDef),s}else if(n==="EnumValue"&&o.enumValue&&o.enumValue.description){var s=document.createElement("div");return Ute(s,o,t),Zp(s,t,o.enumValue),s}else if(n==="NamedType"&&o.type&&o.type.description){var s=document.createElement("div");return Kc(s,o,t,o.type),Zp(s,t,o.type),s}}});function qte(e,t,r){rG(e,t,r),iG(e,t,r,t.type)}function rG(e,t,r){var n,i=((n=t.fieldDef)===null||n===void 0?void 0:n.name)||"";i.slice(0,2)!=="__"&&(Kc(e,t,r,t.parentType),Ai(e,".")),Ai(e,i,"field-name",r,(0,Xp.getFieldReference)(t))}function nG(e,t,r){var n,i="@"+(((n=t.directiveDef)===null||n===void 0?void 0:n.name)||"");Ai(e,i,"directive-name",r,(0,Xp.getDirectiveReference)(t))}function Vte(e,t,r){var n;t.directiveDef?nG(e,t,r):t.fieldDef&&rG(e,t,r);var i=((n=t.argDef)===null||n===void 0?void 0:n.name)||"";Ai(e,"("),Ai(e,i,"arg-name",r,(0,Xp.getArgumentReference)(t)),iG(e,t,r,t.inputType),Ai(e,")")}function iG(e,t,r,n){Ai(e,": "),Kc(e,t,r,n)}function Ute(e,t,r){var n,i=((n=t.enumValue)===null||n===void 0?void 0:n.name)||"";Kc(e,t,r,t.inputType),Ai(e,"."),Ai(e,i,"enum-value",r,(0,Xp.getEnumValueReference)(t))}function Kc(e,t,r,n){n instanceof tG.GraphQLNonNull?(Kc(e,t,r,n.ofType),Ai(e,"!")):n instanceof tG.GraphQLList?(Ai(e,"["),Kc(e,t,r,n.ofType),Ai(e,"]")):Ai(e,(n==null?void 0:n.name)||"","type-name",r,(0,Xp.getTypeReference)(t,n))}function Zp(e,t,r){var n=r.description;if(n){var i=document.createElement("div");i.className="info-description",t.renderDescription?i.innerHTML=t.renderDescription(n):i.appendChild(document.createTextNode(n)),e.appendChild(i)}Gte(e,t,r)}function Gte(e,t,r){var n=r.deprecationReason;if(n){var i=document.createElement("div");i.className="info-deprecation",t.renderDescription?i.innerHTML=t.renderDescription(n):i.appendChild(document.createTextNode(n));var o=document.createElement("span");o.className="info-deprecation-label",o.appendChild(document.createTextNode("Deprecated: ")),i.insertBefore(o,i.firstChild),e.appendChild(i)}}function Ai(e,t,r,n,i){if(r===void 0&&(r=""),n===void 0&&(n={onClick:null}),i===void 0&&(i=null),r){var o=n.onClick,s=void 0;o?(s=document.createElement("a"),s.href="javascript:void 0",s.addEventListener("click",function(l){o(i,l)})):s=document.createElement("span"),s.className=r,s.appendChild(document.createTextNode(t)),e.appendChild(s)}else e.appendChild(document.createTextNode(t))}});var sG=G(_y=>{"use strict";var Qte=_y&&_y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_y,"__esModule",{value:!0});var na=Qte(Wt());na.default.defineOption("jump",!1,function(e,t,r){if(r&&r!==na.default.Init){var n=e.state.jump.onMouseOver;na.default.off(e.getWrapperElement(),"mouseover",n);var i=e.state.jump.onMouseOut;na.default.off(e.getWrapperElement(),"mouseout",i),na.default.off(document,"keydown",e.state.jump.onKeyDown),delete e.state.jump}if(t){var o=e.state.jump={options:t,onMouseOver:Bte.bind(null,e),onMouseOut:Kte.bind(null,e),onKeyDown:Hte.bind(null,e)};na.default.on(e.getWrapperElement(),"mouseover",o.onMouseOver),na.default.on(e.getWrapperElement(),"mouseout",o.onMouseOut),na.default.on(document,"keydown",o.onKeyDown)}});function Bte(e,t){var r=t.target||t.srcElement;if(r instanceof HTMLElement&&(r==null?void 0:r.nodeName)==="SPAN"){var n=r.getBoundingClientRect(),i={left:(n.left+n.right)/2,top:(n.top+n.bottom)/2};e.state.jump.cursor=i,e.state.jump.isHoldingModifier&&oG(e)}}function Kte(e){if(!e.state.jump.isHoldingModifier&&e.state.jump.cursor){e.state.jump.cursor=null;return}e.state.jump.isHoldingModifier&&e.state.jump.marker&&uG(e)}function Hte(e,t){if(!(e.state.jump.isHoldingModifier||!Wte(t.key))){e.state.jump.isHoldingModifier=!0,e.state.jump.cursor&&oG(e);var r=function(o){o.code===t.code&&(e.state.jump.isHoldingModifier=!1,e.state.jump.marker&&uG(e),na.default.off(document,"keyup",r),na.default.off(document,"click",n),e.off("mousedown",i))},n=function(o){var s=e.state.jump.destination;s&&e.state.jump.options.onClick(s,o)},i=function(o,s){e.state.jump.destination&&(s.codemirrorIgnore=!0)};na.default.on(document,"keyup",r),na.default.on(document,"click",n),e.on("mousedown",i)}}var zte=typeof navigator!="undefined"&&navigator&&navigator.appVersion.indexOf("Mac")!==-1;function Wte(e){return e===(zte?"Meta":"Control")}function oG(e){if(!e.state.jump.marker){var t=e.state.jump.cursor,r=e.coordsChar(t),n=e.getTokenAt(r,!0),i=e.state.jump.options,o=i.getDestination||e.getHelper(r,"jump");if(o){var s=o(n,i,e);if(s){var l=e.markText({line:r.line,ch:n.start},{line:r.line,ch:n.end},{className:"CodeMirror-jump-token"});e.state.jump.marker=l,e.state.jump.destination=s}}}}function uG(e){var t=e.state.jump.marker;e.state.jump.marker=null,e.state.jump.destination=null,t.clear()}});var cG=G(Ey=>{"use strict";var lG=Ey&&Ey.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ey,"__esModule",{value:!0});var Yte=lG(Wt()),Jte=lG(hw()),$p=vw();sG();Yte.default.registerHelper("jump","graphql",function(e,t){if(!(!t.schema||!t.onClick||!e.state)){var r=e.state,n=r.kind,i=r.step,o=(0,Jte.default)(t.schema,r);if(n==="Field"&&i===0&&o.fieldDef||n==="AliasedField"&&i===2&&o.fieldDef)return(0,$p.getFieldReference)(o);if(n==="Directive"&&i===1&&o.directiveDef)return(0,$p.getDirectiveReference)(o);if(n==="Argument"&&i===0&&o.argDef)return(0,$p.getArgumentReference)(o);if(n==="EnumValue"&&o.enumValue)return(0,$p.getEnumValueReference)(o);if(n==="NamedType"&&o.type)return(0,$p.getTypeReference)(o)}})});var fG=G(mw=>{"use strict";Object.defineProperty(mw,"__esModule",{value:!0});function Xte(e,t){var r,n,i=e.levels,o=!i||i.length===0?e.indentLevel:i[i.length-1]-(((r=this.electricInput)===null||r===void 0?void 0:r.test(t))?1:0);return(o||0)*(((n=this.config)===null||n===void 0?void 0:n.indentUnit)||0)}mw.default=Xte});var dG=G(eh=>{"use strict";var Zte=eh&&eh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(eh,"__esModule",{value:!0});var Sy=Qc(),$te=Zte(fG()),ere=function(e){var t=(0,Sy.onlineParser)({eatWhitespace:function(r){return r.eatWhile(Sy.isIgnored)},lexRules:Sy.LexRules,parseRules:Sy.ParseRules,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:$te.default,electricInput:/^\s*[})\]]/,fold:"brace",lineComment:"#",closeBrackets:{pairs:'()[]{}""',explode:"()[]{}"}}};eh.default=ere});var hG=G(ky=>{"use strict";var pG=ky&&ky.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ky,"__esModule",{value:!0});var tre=pG(Wt()),rre=pG(dG());tre.default.defineMode("graphql",rre.default)});var mG=G(Tw=>{"use strict";Object.defineProperty(Tw,"__esModule",{value:!0});function sre(e,t,r){var n=lre(r,gG(t.string));if(!!n){var i=t.type!==null&&/"|\w/.test(t.string[0])?t.start:t.end;return{list:n,from:{line:e.line,ch:i},to:{line:e.line,ch:t.end}}}}Tw.default=sre;function lre(e,t){if(!t)return bw(e,function(o){return!o.isDeprecated});var r=e.map(function(o){return{proximity:cre(gG(o.text),t),entry:o}}),n=bw(bw(r,function(o){return o.proximity<=2}),function(o){return!o.entry.isDeprecated}),i=n.sort(function(o,s){return(o.entry.isDeprecated?1:0)-(s.entry.isDeprecated?1:0)||o.proximity-s.proximity||o.entry.text.length-s.entry.text.length});return i.map(function(o){return o.entry})}function bw(e,t){var r=e.filter(t);return r.length===0?e:r}function gG(e){return e.toLowerCase().replace(/\W/g,"")}function cre(e,t){var r=fre(t,e);return e.length>t.length&&(r-=e.length-t.length-1,r+=e.indexOf(t)===0?0:.5),r}function fre(e,t){var r,n,i=[],o=e.length,s=t.length;for(r=0;r<=o;r++)i[r]=[r];for(n=1;n<=s;n++)i[0][n]=n;for(r=1;r<=o;r++)for(n=1;n<=s;n++){var l=e[r-1]===t[n-1]?0:1;i[r][n]=Math.min(i[r-1][n]+1,i[r][n-1]+1,i[r-1][n-1]+l),r>1&&n>1&&e[r-1]===t[n-2]&&e[r-2]===t[n-1]&&(i[r][n]=Math.min(i[r][n],i[r-2][n-2]+l))}return i[o][s]}});var yG=G(Dy=>{"use strict";var _w=Dy&&Dy.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Dy,"__esModule",{value:!0});var Ny=_w(Wt()),to=ht(),dre=_w(pw()),Hc=_w(mG());Ny.default.registerHelper("hint","graphql-variables",function(e,t){var r=e.getCursor(),n=e.getTokenAt(r),i=pre(r,n,t);return(i==null?void 0:i.list)&&i.list.length>0&&(i.from=Ny.default.Pos(i.from.line,i.from.ch),i.to=Ny.default.Pos(i.to.line,i.to.ch),Ny.default.signal(e,"hasCompletion",e,i,n)),i});function pre(e,t,r){var n=t.state.kind==="Invalid"?t.state.prevState:t.state,i=n.kind,o=n.step;if(i==="Document"&&o===0)return(0,Hc.default)(e,t,[{text:"{"}]);var s=r.variableToType;if(!!s){var l=hre(s,t.state);if(i==="Document"||i==="Variable"&&o===0){var d=Object.keys(s);return(0,Hc.default)(e,t,d.map(function(b){return{text:'"'.concat(b,'": '),type:s[b]}}))}if((i==="ObjectValue"||i==="ObjectField"&&o===0)&&l.fields){var h=Object.keys(l.fields).map(function(b){return l.fields[b]});return(0,Hc.default)(e,t,h.map(function(b){return{text:'"'.concat(b.name,'": '),type:b.type,description:b.description}}))}if(i==="StringValue"||i==="NumberValue"||i==="BooleanValue"||i==="NullValue"||i==="ListValue"&&o===1||i==="ObjectField"&&o===2||i==="Variable"&&o===2){var v=l.type?(0,to.getNamedType)(l.type):void 0;if(v instanceof to.GraphQLInputObjectType)return(0,Hc.default)(e,t,[{text:"{"}]);if(v instanceof to.GraphQLEnumType){var y=v.getValues();return(0,Hc.default)(e,t,y.map(function(b){return{text:'"'.concat(b.name,'"'),type:v,description:b.description}}))}else if(v===to.GraphQLBoolean)return(0,Hc.default)(e,t,[{text:"true",type:to.GraphQLBoolean,description:"Not false."},{text:"false",type:to.GraphQLBoolean,description:"Not true."}])}}}function hre(e,t){var r={type:null,fields:null};return(0,dre.default)(t,function(n){if(n.kind==="Variable")r.type=e[n.name];else if(n.kind==="ListValue"){var i=r.type?(0,to.getNullableType)(r.type):void 0;r.type=i instanceof to.GraphQLList?i.ofType:null}else if(n.kind==="ObjectValue"){var o=r.type?(0,to.getNamedType)(r.type):void 0;r.fields=o instanceof to.GraphQLInputObjectType?o.getFields():null}else if(n.kind==="ObjectField"){var s=n.name&&r.fields?r.fields[n.name]:null;r.type=s==null?void 0:s.type}}),r}});var SG=G(Bs=>{"use strict";var vre=Bs&&Bs.__extends||function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();Object.defineProperty(Bs,"__esModule",{value:!0});Bs.JSONSyntaxError=void 0;function gre(e){ro=e,xy=e.length,nn=Qn=th=-1,an(),Ly();var t=bG();return Mu("EOF"),t}Bs.default=gre;var ro,xy,nn,Qn,th,It,Ri;function bG(){var e=nn,t=[];if(Mu("{"),!Cy("}")){do t.push(mre());while(Cy(","));Mu("}")}return{kind:"Object",start:e,end:th,members:t}}function mre(){var e=nn,t=Ri==="String"?_G():null;Mu("String"),Mu(":");var r=TG();return{kind:"Member",start:e,end:th,key:t,value:r}}function yre(){var e=nn,t=[];if(Mu("["),!Cy("]")){do t.push(TG());while(Cy(","));Mu("]")}return{kind:"Array",start:e,end:th,values:t}}function TG(){switch(Ri){case"[":return yre();case"{":return bG();case"String":case"Number":case"Boolean":case"Null":var e=_G();return Ly(),e}Mu("Value")}function _G(){return{kind:Ri,start:nn,end:Qn,value:JSON.parse(ro.slice(nn,Qn))}}function Mu(e){if(Ri===e){Ly();return}var t;if(Ri==="EOF")t="[end of file]";else if(Qn-nn>1)t="`"+ro.slice(nn,Qn)+"`";else{var r=ro.slice(nn).match(/^.+?\b/);t="`"+(r?r[0]:ro[nn])+"`"}throw zc("Expected ".concat(e," but found ").concat(t,"."))}var EG=function(e){vre(t,e);function t(r,n){var i=e.call(this,r)||this;return i.position=n,i}return t}(Error);Bs.JSONSyntaxError=EG;function zc(e){return new EG(e,{start:nn,end:Qn})}function Cy(e){if(Ri===e)return Ly(),!0}function an(){return Qn31;)if(It===92)switch(It=an(),It){case 34:case 47:case 92:case 98:case 102:case 110:case 114:case 116:an();break;case 117:an(),Iy(),Iy(),Iy(),Iy();break;default:throw zc("Bad character escape sequence.")}else{if(Qn===xy)throw zc("Unterminated string.");an()}if(It===34){an();return}throw zc("Unterminated string.")}function Iy(){if(It>=48&&It<=57||It>=65&&It<=70||It>=97&&It<=102)return an();throw zc("Expected hexadecimal digit.")}function Tre(){It===45&&an(),It===48?an():Ew(),It===46&&(an(),Ew()),(It===69||It===101)&&(It=an(),(It===43||It===45)&&an(),Ew())}function Ew(){if(It<48||It>57)throw zc("Expected decimal digit.");do an();while(It>=48&&It<=57)}});var wG=G(ia=>{"use strict";var _re=ia&&ia.__createBinding||(Object.create?function(e,t,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){n===void 0&&(n=r),e[n]=t[r]}),Ere=ia&&ia.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Sre=ia&&ia.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)r!=="default"&&Object.prototype.hasOwnProperty.call(e,r)&&_re(t,e,r);return Ere(t,e),t},kre=ia&&ia.__read||function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,o=[],s;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},Ore=ia&&ia.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ia,"__esModule",{value:!0});var wre=Ore(Wt()),Wc=ht(),kG=Sre(SG());wre.default.registerHelper("lint","graphql-variables",function(e,t,r){if(!e)return[];var n;try{n=(0,kG.default)(e)}catch(o){if(o instanceof kG.JSONSyntaxError)return[Sw(r,o.position,o.message)];throw o}var i=t.variableToType;return i?Nre(r,i,n):[]});function Nre(e,t,r){var n=[];return r.members.forEach(function(i){var o;if(i){var s=(o=i.key)===null||o===void 0?void 0:o.value,l=t[s];l?rh(l,i.value).forEach(function(d){var h=kre(d,2),v=h[0],y=h[1];n.push(Sw(e,v,y))}):n.push(Sw(e,i.key,'Variable "$'.concat(s,'" does not appear in any GraphQL query.')))}}),n}function rh(e,t){if(!e||!t)return[];if(e instanceof Wc.GraphQLNonNull)return t.kind==="Null"?[[t,'Type "'.concat(e,'" is non-nullable and cannot be null.')]]:rh(e.ofType,t);if(t.kind==="Null")return[];if(e instanceof Wc.GraphQLList){var r=e.ofType;if(t.kind==="Array"){var n=t.values||[];return OG(n,function(s){return rh(r,s)})}return rh(r,t)}if(e instanceof Wc.GraphQLInputObjectType){if(t.kind!=="Object")return[[t,'Type "'.concat(e,'" must be an Object.')]];var i=Object.create(null),o=OG(t.members,function(s){var l,d=(l=s==null?void 0:s.key)===null||l===void 0?void 0:l.value;i[d]=!0;var h=e.getFields()[d];if(!h)return[[s.key,'Type "'.concat(e,'" does not have a field "').concat(d,'".')]];var v=h?h.type:void 0;return rh(v,s.value)});return Object.keys(e.getFields()).forEach(function(s){if(!i[s]){var l=e.getFields()[s].type;l instanceof Wc.GraphQLNonNull&&o.push([t,'Object of type "'.concat(e,'" is missing required field "').concat(s,'".')])}}),o}return e.name==="Boolean"&&t.kind!=="Boolean"||e.name==="String"&&t.kind!=="String"||e.name==="ID"&&t.kind!=="Number"&&t.kind!=="String"||e.name==="Float"&&t.kind!=="Number"||e.name==="Int"&&(t.kind!=="Number"||(t.value|0)!==t.value)?[[t,'Expected value of type "'.concat(e,'".')]]:(e instanceof Wc.GraphQLEnumType||e instanceof Wc.GraphQLScalarType)&&(t.kind!=="String"&&t.kind!=="Number"&&t.kind!=="Boolean"&&t.kind!=="Null"||Dre(e.parseValue(t.value)))?[[t,'Expected value of type "'.concat(e,'".')]]:[]}function Sw(e,t,r){return{message:r,severity:"error",type:"validation",from:e.posFromIndex(t.start),to:e.posFromIndex(t.end)}}function Dre(e){return e==null||e!==e}function OG(e,t){return Array.prototype.concat.apply([],e.map(t))}});var DG=G(Ay=>{"use strict";var xre=Ay&&Ay.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ay,"__esModule",{value:!0});var Cre=xre(Wt()),Or=Qc();Cre.default.defineMode("graphql-variables",function(e){var t=(0,Or.onlineParser)({eatWhitespace:function(r){return r.eatSpace()},lexRules:Ire,parseRules:Are,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:Lre,electricInput:/^\s*[}\]]/,fold:"brace",closeBrackets:{pairs:'[]{}""',explode:"[]{}"}}});function Lre(e,t){var r,n,i=e.levels,o=!i||i.length===0?e.indentLevel:i[i.length-1]-(((r=this.electricInput)===null||r===void 0?void 0:r.test(t))?1:0);return(o||0)*(((n=this.config)===null||n===void 0?void 0:n.indentUnit)||0)}var Ire={Punctuation:/^\[|]|\{|\}|:|,/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/,Keyword:/^true|false|null/},Are={Document:[(0,Or.p)("{"),(0,Or.list)("Variable",(0,Or.opt)((0,Or.p)(","))),(0,Or.p)("}")],Variable:[NG("variable"),(0,Or.p)(":"),"Value"],Value:function(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue"}return null;case"Keyword":switch(e.value){case"true":case"false":return"BooleanValue";case"null":return"NullValue"}return null}},NumberValue:[(0,Or.t)("Number","number")],StringValue:[(0,Or.t)("String","string")],BooleanValue:[(0,Or.t)("Keyword","builtin")],NullValue:[(0,Or.t)("Keyword","keyword")],ListValue:[(0,Or.p)("["),(0,Or.list)("Value",(0,Or.opt)((0,Or.p)(","))),(0,Or.p)("]")],ObjectValue:[(0,Or.p)("{"),(0,Or.list)("ObjectField",(0,Or.opt)((0,Or.p)(","))),(0,Or.p)("}")],ObjectField:[NG("attribute"),(0,Or.p)(":"),"Value"]};function NG(e){return{style:e,match:function(t){return t.kind==="String"},update:function(t,r){t.name=r.value.slice(1,-1)}}}});var LG=G((xG,CG)=>{(function(e){typeof xG=="object"&&typeof CG=="object"?e(Wt()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)})(function(e){"use strict";e.defineMode("javascript",function(t,r){var n=t.indentUnit,i=r.statementIndent,o=r.jsonld,s=r.json||o,l=r.trackScope!==!1,d=r.typescript,h=r.wordCharacters||/[\w$\xa1-\uffff]/,v=function(){function j(Pr){return{type:Pr,style:"keyword"}}var H=j("keyword a"),W=j("keyword b"),ie=j("keyword c"),We=j("keyword d"),vt=j("operator"),_t={type:"atom",style:"atom"};return{if:j("if"),while:H,with:H,else:W,do:W,try:W,finally:W,return:We,break:We,continue:We,new:j("new"),delete:ie,void:ie,throw:ie,debugger:j("debugger"),var:j("var"),const:j("var"),let:j("var"),function:j("function"),catch:j("catch"),for:j("for"),switch:j("switch"),case:j("case"),default:j("default"),in:vt,typeof:vt,instanceof:vt,true:_t,false:_t,null:_t,undefined:_t,NaN:_t,Infinity:_t,this:j("this"),class:j("class"),super:j("atom"),yield:ie,export:j("export"),import:j("import"),extends:ie,await:ie}}(),y=/[+\-*&%=<>!?|~^@]/,b=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function D(j){for(var H=!1,W,ie=!1;(W=j.next())!=null;){if(!H){if(W=="/"&&!ie)return;W=="["?ie=!0:ie&&W=="]"&&(ie=!1)}H=!H&&W=="\\"}}var _,k;function T(j,H,W){return _=j,k=W,H}function S(j,H){var W=j.next();if(W=='"'||W=="'")return H.tokenize=m(W),H.tokenize(j,H);if(W=="."&&j.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return T("number","number");if(W=="."&&j.match(".."))return T("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(W))return T(W);if(W=="="&&j.eat(">"))return T("=>","operator");if(W=="0"&&j.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return T("number","number");if(/\d/.test(W))return j.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),T("number","number");if(W=="/")return j.eat("*")?(H.tokenize=w,w(j,H)):j.eat("/")?(j.skipToEnd(),T("comment","comment")):wa(j,H,1)?(D(j),j.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),T("regexp","string-2")):(j.eat("="),T("operator","operator",j.current()));if(W=="`")return H.tokenize=x,x(j,H);if(W=="#"&&j.peek()=="!")return j.skipToEnd(),T("meta","meta");if(W=="#"&&j.eatWhile(h))return T("variable","property");if(W=="<"&&j.match("!--")||W=="-"&&j.match("->")&&!/\S/.test(j.string.slice(0,j.start)))return j.skipToEnd(),T("comment","comment");if(y.test(W))return(W!=">"||!H.lexical||H.lexical.type!=">")&&(j.eat("=")?(W=="!"||W=="=")&&j.eat("="):/[<>*+\-|&?]/.test(W)&&(j.eat(W),W==">"&&j.eat(W))),W=="?"&&j.eat(".")?T("."):T("operator","operator",j.current());if(h.test(W)){j.eatWhile(h);var ie=j.current();if(H.lastType!="."){if(v.propertyIsEnumerable(ie)){var We=v[ie];return T(We.type,We.style,ie)}if(ie=="async"&&j.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return T("async","keyword",ie)}return T("variable","variable",ie)}}function m(j){return function(H,W){var ie=!1,We;if(o&&H.peek()=="@"&&H.match(b))return W.tokenize=S,T("jsonld-keyword","meta");for(;(We=H.next())!=null&&!(We==j&&!ie);)ie=!ie&&We=="\\";return ie||(W.tokenize=S),T("string","string")}}function w(j,H){for(var W=!1,ie;ie=j.next();){if(ie=="/"&&W){H.tokenize=S;break}W=ie=="*"}return T("comment","comment")}function x(j,H){for(var W=!1,ie;(ie=j.next())!=null;){if(!W&&(ie=="`"||ie=="$"&&j.eat("{"))){H.tokenize=S;break}W=!W&&ie=="\\"}return T("quasi","string-2",j.current())}var L="([{}])";function O(j,H){H.fatArrowAt&&(H.fatArrowAt=null);var W=j.string.indexOf("=>",j.start);if(!(W<0)){if(d){var ie=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(j.string.slice(j.start,W));ie&&(W=ie.index)}for(var We=0,vt=!1,_t=W-1;_t>=0;--_t){var Pr=j.string.charAt(_t),Si=L.indexOf(Pr);if(Si>=0&&Si<3){if(!We){++_t;break}if(--We==0){Pr=="("&&(vt=!0);break}}else if(Si>=3&&Si<6)++We;else if(h.test(Pr))vt=!0;else if(/["'\/`]/.test(Pr))for(;;--_t){if(_t==0)return;var Ye=j.string.charAt(_t-1);if(Ye==Pr&&j.string.charAt(_t-2)!="\\"){_t--;break}}else if(vt&&!We){++_t;break}}vt&&!We&&(H.fatArrowAt=_t)}}var R={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function M(j,H,W,ie,We,vt){this.indented=j,this.column=H,this.type=W,this.prev=We,this.info=vt,ie!=null&&(this.align=ie)}function q(j,H){if(!l)return!1;for(var W=j.localVars;W;W=W.next)if(W.name==H)return!0;for(var ie=j.context;ie;ie=ie.prev)for(var W=ie.vars;W;W=W.next)if(W.name==H)return!0}function z(j,H,W,ie,We){var vt=j.cc;for(B.state=j,B.stream=We,B.marked=null,B.cc=vt,B.style=H,j.lexical.hasOwnProperty("align")||(j.lexical.align=!0);;){var _t=vt.length?vt.pop():s?Me:we;if(_t(W,ie)){for(;vt.length&&vt[vt.length-1].lex;)vt.pop()();return B.marked?B.marked:W=="variable"&&q(j,ie)?"variable-2":H}}}var B={state:null,column:null,marked:null,cc:null};function Q(){for(var j=arguments.length-1;j>=0;j--)B.cc.push(arguments[j])}function P(){return Q.apply(null,arguments),!0}function he(j,H){for(var W=H;W;W=W.next)if(W.name==j)return!0;return!1}function xe(j){var H=B.state;if(B.marked="def",!!l){if(H.context){if(H.lexical.info=="var"&&H.context&&H.context.block){var W=ge(j,H.context);if(W!=null){H.context=W;return}}else if(!he(j,H.localVars)){H.localVars=new He(j,H.localVars);return}}r.globalVars&&!he(j,H.globalVars)&&(H.globalVars=new He(j,H.globalVars))}}function ge(j,H){if(H)if(H.block){var W=ge(j,H.prev);return W?W==H.prev?H:new Le(W,H.vars,!0):null}else return he(j,H.vars)?H:new Le(H.prev,new He(j,H.vars),!1);else return null}function Fe(j){return j=="public"||j=="private"||j=="protected"||j=="abstract"||j=="readonly"}function Le(j,H,W){this.prev=j,this.vars=H,this.block=W}function He(j,H){this.name=j,this.next=H}var Xe=new He("this",new He("arguments",null));function Ve(){B.state.context=new Le(B.state.context,B.state.localVars,!1),B.state.localVars=Xe}function At(){B.state.context=new Le(B.state.context,B.state.localVars,!0),B.state.localVars=null}Ve.lex=At.lex=!0;function Ot(){B.state.localVars=B.state.context.vars,B.state.context=B.state.context.prev}Ot.lex=!0;function Ie(j,H){var W=function(){var ie=B.state,We=ie.indented;if(ie.lexical.type=="stat")We=ie.lexical.indented;else for(var vt=ie.lexical;vt&&vt.type==")"&&vt.align;vt=vt.prev)We=vt.indented;ie.lexical=new M(We,B.stream.column(),j,null,ie.lexical,H)};return W.lex=!0,W}function te(){var j=B.state;j.lexical.prev&&(j.lexical.type==")"&&(j.indented=j.lexical.indented),j.lexical=j.lexical.prev)}te.lex=!0;function ce(j){function H(W){return W==j?P():j==";"||W=="}"||W==")"||W=="]"?Q():P(H)}return H}function we(j,H){return j=="var"?P(Ie("vardef",H),J,ce(";"),te):j=="keyword a"?P(Ie("form"),ze,we,te):j=="keyword b"?P(Ie("form"),we,te):j=="keyword d"?B.stream.match(/^\s*$/,!1)?P():P(Ie("stat"),oe,ce(";"),te):j=="debugger"?P(ce(";")):j=="{"?P(Ie("}"),At,zn,te,Ot):j==";"?P():j=="if"?(B.state.lexical.info=="else"&&B.state.cc[B.state.cc.length-1]==te&&B.state.cc.pop()(),P(Ie("form"),ze,we,te,Ut)):j=="function"?P(jr):j=="for"?P(Ie("form"),At,Rt,we,Ot,te):j=="class"||d&&H=="interface"?(B.marked="keyword",P(Ie("form",j=="class"?j:H),ch,te)):j=="variable"?d&&H=="declare"?(B.marked="keyword",P(we)):d&&(H=="module"||H=="enum"||H=="type")&&B.stream.match(/^\s*\w/,!1)?(B.marked="keyword",H=="enum"?P(Xs):H=="type"?P(sa,ce("operator"),_e,ce(";")):P(Ie("form"),V,ce("{"),Ie("}"),zn,te,te)):d&&H=="namespace"?(B.marked="keyword",P(Ie("form"),Me,we,te)):d&&H=="abstract"?(B.marked="keyword",P(we)):P(Ie("stat"),dn):j=="switch"?P(Ie("form"),ze,ce("{"),Ie("}","switch"),At,zn,te,te,Ot):j=="case"?P(Me,ce(":")):j=="default"?P(ce(":")):j=="catch"?P(Ie("form"),Ve,ot,we,te,Ot):j=="export"?P(Ie("stat"),jo,te):j=="import"?P(Ie("stat"),ao,te):j=="async"?P(we):H=="@"?P(Me,we):Q(Ie("stat"),Me,ce(";"),te)}function ot(j){if(j=="(")return P(Cn,ce(")"))}function Me(j,H){return mt(j,H,!1)}function Qe(j,H){return mt(j,H,!0)}function ze(j){return j!="("?Q():P(Ie(")"),oe,ce(")"),te)}function mt(j,H,W){if(B.state.fatArrowAt==B.stream.start){var ie=W?ct:at;if(j=="(")return P(Ve,Ie(")"),Kt(Cn,")"),te,ce("=>"),ie,Ot);if(j=="variable")return Q(Ve,V,ce("=>"),ie,Ot)}var We=W?fe:me;return R.hasOwnProperty(j)?P(We):j=="function"?P(jr,We):j=="class"||d&&H=="interface"?(B.marked="keyword",P(Ie("form"),la,te)):j=="keyword c"||j=="async"?P(W?Qe:Me):j=="("?P(Ie(")"),oe,ce(")"),te,We):j=="operator"||j=="spread"?P(W?Qe:Me):j=="["?P(Ie("]"),oo,te,We):j=="{"?hn(pn,"}",null,We):j=="quasi"?Q(se,We):j=="new"?P(st(W)):P()}function oe(j){return j.match(/[;\}\)\],]/)?Q():Q(Me)}function me(j,H){return j==","?P(oe):fe(j,H,!1)}function fe(j,H,W){var ie=W==!1?me:fe,We=W==!1?Me:Qe;if(j=="=>")return P(Ve,W?ct:at,Ot);if(j=="operator")return/\+\+|--/.test(H)||d&&H=="!"?P(ie):d&&H=="<"&&B.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?P(Ie(">"),Kt(_e,">"),te,ie):H=="?"?P(Me,ce(":"),We):P(We);if(j=="quasi")return Q(se,ie);if(j!=";"){if(j=="(")return hn(Qe,")","call",ie);if(j==".")return P(Hn,ie);if(j=="[")return P(Ie("]"),oe,ce("]"),te,ie);if(d&&H=="as")return B.marked="keyword",P(_e,ie);if(j=="regexp")return B.state.lastType=B.marked="operator",B.stream.backUp(B.stream.pos-B.stream.start-1),P(We)}}function se(j,H){return j!="quasi"?Q():H.slice(H.length-2)!="${"?P(se):P(oe,Ue)}function Ue(j){if(j=="}")return B.marked="string-2",B.state.tokenize=x,P(se)}function at(j){return O(B.stream,B.state),Q(j=="{"?we:Me)}function ct(j){return O(B.stream,B.state),Q(j=="{"?we:Qe)}function st(j){return function(H){return H=="."?P(j?Ei:Dn):H=="variable"&&d?P(ee,j?fe:me):Q(j?Qe:Me)}}function Dn(j,H){if(H=="target")return B.marked="keyword",P(me)}function Ei(j,H){if(H=="target")return B.marked="keyword",P(fe)}function dn(j){return j==":"?P(te,we):Q(me,ce(";"),te)}function Hn(j){if(j=="variable")return B.marked="property",P()}function pn(j,H){if(j=="async")return B.marked="property",P(pn);if(j=="variable"||B.style=="keyword"){if(B.marked="property",H=="get"||H=="set")return P(Pi);var W;return d&&B.state.fatArrowAt==B.stream.start&&(W=B.stream.match(/^\s*:\s*/,!1))&&(B.state.fatArrowAt=B.stream.pos+W[0].length),P(Qr)}else{if(j=="number"||j=="string")return B.marked=o?"property":B.style+" property",P(Qr);if(j=="jsonld-keyword")return P(Qr);if(d&&Fe(H))return B.marked="keyword",P(pn);if(j=="[")return P(Me,vr,ce("]"),Qr);if(j=="spread")return P(Qe,Qr);if(H=="*")return B.marked="keyword",P(pn);if(j==":")return Q(Qr)}}function Pi(j){return j!="variable"?Q(Qr):(B.marked="property",P(jr))}function Qr(j){if(j==":")return P(Qe);if(j=="(")return Q(jr)}function Kt(j,H,W){function ie(We,vt){if(W?W.indexOf(We)>-1:We==","){var _t=B.state.lexical;return _t.info=="call"&&(_t.pos=(_t.pos||0)+1),P(function(Pr,Si){return Pr==H||Si==H?Q():Q(j)},ie)}return We==H||vt==H?P():W&&W.indexOf(";")>-1?Q(j):P(ce(H))}return function(We,vt){return We==H||vt==H?P():Q(j,ie)}}function hn(j,H,W){for(var ie=3;ie"),_e);if(j=="quasi")return Q(nr,un)}function Gu(j){if(j=="=>")return P(_e)}function Ar(j){return j.match(/[\}\)\]]/)?P():j==","||j==";"?P(Ar):Q(Ft,Ar)}function Ft(j,H){if(j=="variable"||B.style=="keyword")return B.marked="property",P(Ft);if(H=="?"||j=="number"||j=="string")return P(Ft);if(j==":")return P(_e);if(j=="[")return P(ce("variable"),Ro,ce("]"),Ft);if(j=="(")return Q(et,Ft);if(!j.match(/[;\}\)\],]/))return P()}function nr(j,H){return j!="quasi"?Q():H.slice(H.length-2)!="${"?P(nr):P(_e,Ys)}function Ys(j){if(j=="}")return B.marked="string-2",B.state.tokenize=x,P(nr)}function on(j,H){return j=="variable"&&B.stream.match(/^\s*[?:]/,!1)||H=="?"?P(on):j==":"?P(_e):j=="spread"?P(on):Q(_e)}function un(j,H){if(H=="<")return P(Ie(">"),Kt(_e,">"),te,un);if(H=="|"||j=="."||H=="&")return P(_e);if(j=="[")return P(_e,ce("]"),un);if(H=="extends"||H=="implements")return B.marked="keyword",P(_e);if(H=="?")return P(_e,ce(":"),_e)}function ee(j,H){if(H=="<")return P(Ie(">"),Kt(_e,">"),te,un)}function F(){return Q(_e,Y)}function Y(j,H){if(H=="=")return P(_e)}function J(j,H){return H=="enum"?(B.marked="keyword",P(Xs)):Q(V,vr,ue,Ze)}function V(j,H){if(d&&Fe(H))return B.marked="keyword",P(V);if(j=="variable")return xe(H),P();if(j=="spread")return P(V);if(j=="[")return hn(re,"]");if(j=="{")return hn(A,"}")}function A(j,H){return j=="variable"&&!B.stream.match(/^\s*:/,!1)?(xe(H),P(ue)):(j=="variable"&&(B.marked="property"),j=="spread"?P(V):j=="}"?Q():j=="["?P(Me,ce("]"),ce(":"),A):P(ce(":"),V,ue))}function re(){return Q(V,ue)}function ue(j,H){if(H=="=")return P(Qe)}function Ze(j){if(j==",")return P(J)}function Ut(j,H){if(j=="keyword b"&&H=="else")return P(Ie("form","else"),we,te)}function Rt(j,H){if(H=="await")return P(Rt);if(j=="(")return P(Ie(")"),vn,te)}function vn(j){return j=="var"?P(J,Rr):j=="variable"?P(Rr):Q(Rr)}function Rr(j,H){return j==")"?P():j==";"?P(Rr):H=="in"||H=="of"?(B.marked="keyword",P(Me,Rr)):Q(Me,Rr)}function jr(j,H){if(H=="*")return B.marked="keyword",P(jr);if(j=="variable")return xe(H),P(jr);if(j=="(")return P(Ve,Ie(")"),Kt(Cn,")"),te,xn,we,Ot);if(d&&H=="<")return P(Ie(">"),Kt(F,">"),te,jr)}function et(j,H){if(H=="*")return B.marked="keyword",P(et);if(j=="variable")return xe(H),P(et);if(j=="(")return P(Ve,Ie(")"),Kt(Cn,")"),te,xn,Ot);if(d&&H=="<")return P(Ie(">"),Kt(F,">"),te,et)}function sa(j,H){if(j=="keyword"||j=="variable")return B.marked="type",P(sa);if(H=="<")return P(Ie(">"),Kt(F,">"),te)}function Cn(j,H){return H=="@"&&P(Me,Cn),j=="spread"?P(Cn):d&&Fe(H)?(B.marked="keyword",P(Cn)):d&&j=="this"?P(vr,ue):Q(V,vr,ue)}function la(j,H){return j=="variable"?ch(j,H):Js(j,H)}function ch(j,H){if(j=="variable")return xe(H),P(Js)}function Js(j,H){if(H=="<")return P(Ie(">"),Kt(F,">"),te,Js);if(H=="extends"||H=="implements"||d&&j==",")return H=="implements"&&(B.marked="keyword"),P(d?_e:Me,Js);if(j=="{")return P(Ie("}"),ui,te)}function ui(j,H){if(j=="async"||j=="variable"&&(H=="static"||H=="get"||H=="set"||d&&Fe(H))&&B.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return B.marked="keyword",P(ui);if(j=="variable"||B.style=="keyword")return B.marked="property",P(io,ui);if(j=="number"||j=="string")return P(io,ui);if(j=="[")return P(Me,vr,ce("]"),io,ui);if(H=="*")return B.marked="keyword",P(ui);if(d&&j=="(")return Q(et,ui);if(j==";"||j==",")return P(ui);if(j=="}")return P();if(H=="@")return P(Me,ui)}function io(j,H){if(H=="!"||H=="?")return P(io);if(j==":")return P(_e,ue);if(H=="=")return P(Qe);var W=B.state.lexical.prev,ie=W&&W.info=="interface";return Q(ie?et:jr)}function jo(j,H){return H=="*"?(B.marked="keyword",P(Ae,ce(";"))):H=="default"?(B.marked="keyword",P(Me,ce(";"))):j=="{"?P(Kt(fh,"}"),Ae,ce(";")):Q(we)}function fh(j,H){if(H=="as")return B.marked="keyword",P(ce("variable"));if(j=="variable")return Q(Qe,fh)}function ao(j){return j=="string"?P():j=="("?Q(Me):j=="."?Q(me):Q(Po,nf,Ae)}function Po(j,H){return j=="{"?hn(Po,"}"):(j=="variable"&&xe(H),H=="*"&&(B.marked="keyword"),P(gr))}function nf(j){if(j==",")return P(Po,nf)}function gr(j,H){if(H=="as")return B.marked="keyword",P(Po)}function Ae(j,H){if(H=="from")return B.marked="keyword",P(Me)}function oo(j){return j=="]"?P():Q(Kt(Qe,"]"))}function Xs(){return Q(Ie("form"),V,ce("{"),Ie("}"),Kt(Fi,"}"),te,te)}function Fi(){return Q(V,ue)}function wt(j,H){return j.lastType=="operator"||j.lastType==","||y.test(H.charAt(0))||/[,.]/.test(H.charAt(0))}function wa(j,H,W){return H.tokenize==S&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(H.lastType)||H.lastType=="quasi"&&/\{\s*$/.test(j.string.slice(0,j.pos-(W||0)))}return{startState:function(j){var H={tokenize:S,lastType:"sof",cc:[],lexical:new M((j||0)-n,0,"block",!1),localVars:r.localVars,context:r.localVars&&new Le(null,null,!1),indented:j||0};return r.globalVars&&typeof r.globalVars=="object"&&(H.globalVars=r.globalVars),H},token:function(j,H){if(j.sol()&&(H.lexical.hasOwnProperty("align")||(H.lexical.align=!1),H.indented=j.indentation(),O(j,H)),H.tokenize!=w&&j.eatSpace())return null;var W=H.tokenize(j,H);return _=="comment"?W:(H.lastType=_=="operator"&&(k=="++"||k=="--")?"incdec":_,z(H,W,_,k,j))},indent:function(j,H){if(j.tokenize==w||j.tokenize==x)return e.Pass;if(j.tokenize!=S)return 0;var W=H&&H.charAt(0),ie=j.lexical,We;if(!/^\s*else\b/.test(H))for(var vt=j.cc.length-1;vt>=0;--vt){var _t=j.cc[vt];if(_t==te)ie=ie.prev;else if(_t!=Ut&&_t!=Ot)break}for(;(ie.type=="stat"||ie.type=="form")&&(W=="}"||(We=j.cc[j.cc.length-1])&&(We==me||We==fe)&&!/^[,\.=+\-*:?[\(]/.test(H));)ie=ie.prev;i&&ie.type==")"&&ie.prev.type=="stat"&&(ie=ie.prev);var Pr=ie.type,Si=W==Pr;return Pr=="vardef"?ie.indented+(j.lastType=="operator"||j.lastType==","?ie.info.length+1:0):Pr=="form"&&W=="{"?ie.indented:Pr=="form"?ie.indented+n:Pr=="stat"?ie.indented+(wt(j,H)?i||n:0):ie.info=="switch"&&!Si&&r.doubleIndentSwitch!=!1?ie.indented+(/^(?:case|default)\b/.test(H)?n:2*n):ie.align?ie.column+(Si?0:1):ie.indented+(Si?0:n)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:s?null:"/*",blockCommentEnd:s?null:"*/",blockCommentContinue:s?null:" * ",lineComment:s?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:s?"json":"javascript",jsonldMode:o,jsonMode:s,expressionAllowed:wa,skipExpression:function(j){z(j,"atom","atom","true",new e.StringStream("",2,null))}}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/manifest+json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var IG=G(jy=>{"use strict";var Vre=jy&&jy.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(jy,"__esModule",{value:!0});var Ure=Vre(Wt()),Ir=Qc();Ure.default.defineMode("graphql-results",function(e){var t=(0,Ir.onlineParser)({eatWhitespace:function(r){return r.eatSpace()},lexRules:Qre,parseRules:Bre,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:Gre,electricInput:/^\s*[}\]]/,fold:"brace",closeBrackets:{pairs:'[]{}""',explode:"[]{}"}}});function Gre(e,t){var r,n,i=e.levels,o=!i||i.length===0?e.indentLevel:i[i.length-1]-(((r=this.electricInput)===null||r===void 0?void 0:r.test(t))?1:0);return(o||0)*(((n=this.config)===null||n===void 0?void 0:n.indentUnit)||0)}var Qre={Punctuation:/^\[|]|\{|\}|:|,/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/,Keyword:/^true|false|null/},Bre={Document:[(0,Ir.p)("{"),(0,Ir.list)("Entry",(0,Ir.p)(",")),(0,Ir.p)("}")],Entry:[(0,Ir.t)("String","def"),(0,Ir.p)(":"),"Value"],Value:function(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue"}return null;case"Keyword":switch(e.value){case"true":case"false":return"BooleanValue";case"null":return"NullValue"}return null}},NumberValue:[(0,Ir.t)("Number","number")],StringValue:[(0,Ir.t)("String","string")],BooleanValue:[(0,Ir.t)("Keyword","builtin")],NullValue:[(0,Ir.t)("Keyword","keyword")],ListValue:[(0,Ir.p)("["),(0,Ir.list)("Value",(0,Ir.p)(",")),(0,Ir.p)("]")],ObjectValue:[(0,Ir.p)("{"),(0,Ir.list)("ObjectField",(0,Ir.p)(",")),(0,Ir.p)("}")],ObjectField:[(0,Ir.t)("String","property"),(0,Ir.p)(":"),"Value"]}});var ZG=G((Ufe,XG)=>{"use strict";XG.exports=function(t){return typeof t=="object"?t===null:typeof t!="function"}});var eQ=G((Gfe,$G)=>{"use strict";$G.exports=function(t){return t!=null&&typeof t=="object"&&Array.isArray(t)===!1}});var nQ=G((Qfe,rQ)=>{"use strict";var kne=eQ();function tQ(e){return kne(e)===!0&&Object.prototype.toString.call(e)==="[object Object]"}rQ.exports=function(t){var r,n;return!(tQ(t)===!1||(r=t.constructor,typeof r!="function")||(n=r.prototype,tQ(n)===!1)||n.hasOwnProperty("isPrototypeOf")===!1)}});var sQ=G((Bfe,uQ)=>{"use strict";var{deleteProperty:One}=Reflect,wne=ZG(),iQ=nQ(),aQ=e=>typeof e=="object"&&e!==null||typeof e=="function",Nne=e=>e==="__proto__"||e==="constructor"||e==="prototype",Kw=e=>{if(!wne(e))throw new TypeError("Object keys must be strings or symbols");if(Nne(e))throw new Error(`Cannot set unsafe key: "${e}"`)},Dne=e=>Array.isArray(e)?e.flat().map(String).join(","):e,xne=(e,t)=>{if(typeof e!="string"||!t)return e;let r=e+";";return t.arrays!==void 0&&(r+=`arrays=${t.arrays};`),t.separator!==void 0&&(r+=`separator=${t.separator};`),t.split!==void 0&&(r+=`split=${t.split};`),t.merge!==void 0&&(r+=`merge=${t.merge};`),t.preservePaths!==void 0&&(r+=`preservePaths=${t.preservePaths};`),r},Cne=(e,t,r)=>{let n=Dne(t?xne(e,t):e);Kw(n);let i=Hs.cache.get(n)||r();return Hs.cache.set(n,i),i},Lne=(e,t={})=>{let r=t.separator||".",n=r==="/"?!1:t.preservePaths;if(typeof e=="string"&&n!==!1&&/\//.test(e))return[e];let i=[],o="",s=l=>{let d;l.trim()!==""&&Number.isInteger(d=Number(l))?i.push(d):i.push(l)};for(let l=0;lt&&typeof t.split=="function"?t.split(e):typeof e=="symbol"?[e]:Array.isArray(e)?e:Cne(e,t,()=>Lne(e,t)),Ine=(e,t,r,n)=>{if(Kw(t),r===void 0)One(e,t);else if(n&&n.merge){let i=n.merge==="function"?n.merge:Object.assign;i&&iQ(e[t])&&iQ(r)?e[t]=i(e[t],r):e[t]=r}else e[t]=r;return e},Hs=(e,t,r,n)=>{if(!t||!aQ(e))return e;let i=oQ(t,n),o=e;for(let s=0;s{Hs.cache=new Map};uQ.exports=Hs});var CQ=G((Pde,xQ)=>{xQ.exports=Zc;function Zc(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Zc.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=(Math.floor(t*10)&1)==0?e-r:e+r}return Math.min(e,this.max)|0};Zc.prototype.reset=function(){this.attempts=0};Zc.prototype.setMin=function(e){this.ms=e};Zc.prototype.setMax=function(e){this.max=e};Zc.prototype.setJitter=function(e){this.jitter=e}});var IQ=G((Fde,Jw)=>{"use strict";var Zne=Object.prototype.hasOwnProperty,ai="~";function lh(){}Object.create&&(lh.prototype=Object.create(null),new lh().__proto__||(ai=!1));function $ne(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function LQ(e,t,r,n,i){if(typeof r!="function")throw new TypeError("The listener must be a function");var o=new $ne(r,n||e,i),s=ai?ai+t:t;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],o]:e._events[s].push(o):(e._events[s]=o,e._eventsCount++),e}function zy(e,t){--e._eventsCount==0?e._events=new lh:delete e._events[t]}function Kn(){this._events=new lh,this._eventsCount=0}Kn.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Zne.call(r,n)&&t.push(ai?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};Kn.prototype.listeners=function(t){var r=ai?ai+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,o=n.length,s=new Array(o);i{"use strict";Object.defineProperty(Xw,"__esModule",{value:!0});function eie(e){return typeof e=="string"}Xw.default=eie});var RQ=G(Zw=>{"use strict";Object.defineProperty(Zw,"__esModule",{value:!0});function tie(e){return e!==null&&typeof e=="object"}Zw.default=tie});var jQ=G($w=>{"use strict";Object.defineProperty($w,"__esModule",{value:!0});$w.default=rie;function rie(e){var t,r=e.Symbol;return typeof r=="function"?r.observable?t=r.observable:(t=r("observable"),r.observable=t):t="@@observable",t}});var PQ=G((eN,tN)=>{"use strict";Object.defineProperty(eN,"__esModule",{value:!0});var nie=jQ(),iie=aie(nie);function aie(e){return e&&e.__esModule?e:{default:e}}var $c;typeof self!="undefined"?$c=self:typeof window!="undefined"||typeof window!="undefined"?$c=window:typeof tN!="undefined"?$c=tN:$c=Function("return this")();var oie=(0,iie.default)($c);eN.default=oie});var FQ=G(ef=>{"use strict";Object.defineProperty(ef,"__esModule",{value:!0});ef.GRAPHQL_SUBSCRIPTIONS=ef.GRAPHQL_WS=void 0;var uie="graphql-ws";ef.GRAPHQL_WS=uie;var sie="graphql-subscriptions";ef.GRAPHQL_SUBSCRIPTIONS=sie});var MQ=G(tf=>{"use strict";Object.defineProperty(tf,"__esModule",{value:!0});tf.WS_TIMEOUT=tf.MIN_WS_TIMEOUT=void 0;var lie=1e3;tf.MIN_WS_TIMEOUT=lie;var cie=3e4;tf.WS_TIMEOUT=cie});var qQ=G(rN=>{"use strict";Object.defineProperty(rN,"__esModule",{value:!0});var fie=function(){function e(){throw new Error("Static Class")}return e.GQL_CONNECTION_INIT="connection_init",e.GQL_CONNECTION_ACK="connection_ack",e.GQL_CONNECTION_ERROR="connection_error",e.GQL_CONNECTION_KEEP_ALIVE="ka",e.GQL_CONNECTION_TERMINATE="connection_terminate",e.GQL_START="start",e.GQL_DATA="data",e.GQL_ERROR="error",e.GQL_COMPLETE="complete",e.GQL_STOP="stop",e.SUBSCRIPTION_START="subscription_start",e.SUBSCRIPTION_DATA="subscription_data",e.SUBSCRIPTION_SUCCESS="subscription_success",e.SUBSCRIPTION_FAIL="subscription_fail",e.SUBSCRIPTION_END="subscription_end",e.INIT="init",e.INIT_SUCCESS="init_success",e.INIT_FAIL="init_fail",e.KEEP_ALIVE="keepalive",e}();rN.default=fie});var KQ=G(ua=>{"use strict";var rf=ua&&ua.__assign||function(){return rf=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]0){var v=s.shift();v&&v.applyMiddleware.apply(l,[t,d])}else n(t)};d()};o(VQ(r.middlewares),r)})},e.prototype.use=function(t){var r=this;return t.map(function(n){if(typeof n.applyMiddleware=="function")r.middlewares.push(n);else throw new Error("Middleware must implement the applyMiddleware function.")}),this},e.prototype.getConnectionParams=function(t){return function(){return new Promise(function(r,n){if(typeof t=="function")try{return r(t.call(null))}catch(i){return n(i)}r(t)})}},e.prototype.executeOperation=function(t,r){var n=this;this.client===null&&this.connect();var i=this.generateOperationId();return this.operations[i]={options:t,handler:r},this.applyMiddlewares(t).then(function(o){n.checkOperationOptions(o,r),n.operations[i]&&(n.operations[i]={options:o,handler:r},n.sendMessage(i,oi.default.GQL_START,o))}).catch(function(o){n.unsubscribe(i),r(n.formatErrors(o))}),i},e.prototype.getObserver=function(t,r,n){return typeof t=="function"?{next:function(i){return t(i)},error:function(i){return r&&r(i)},complete:function(){return n&&n()}}:t},e.prototype.createMaxConnectTimeGenerator=function(){var t=this.minWsTimeout,r=this.wsTimeout;return new GQ({min:t,max:r,factor:1.2})},e.prototype.clearCheckConnectionInterval=function(){this.checkConnectionIntervalId&&(clearInterval(this.checkConnectionIntervalId),this.checkConnectionIntervalId=null)},e.prototype.clearMaxConnectTimeout=function(){this.maxConnectTimeoutId&&(clearTimeout(this.maxConnectTimeoutId),this.maxConnectTimeoutId=null)},e.prototype.clearTryReconnectTimeout=function(){this.tryReconnectTimeoutId&&(clearTimeout(this.tryReconnectTimeoutId),this.tryReconnectTimeoutId=null)},e.prototype.clearInactivityTimeout=function(){this.inactivityTimeoutId&&(clearTimeout(this.inactivityTimeoutId),this.inactivityTimeoutId=null)},e.prototype.setInactivityTimeout=function(){var t=this;this.inactivityTimeout>0&&Object.keys(this.operations).length===0&&(this.inactivityTimeoutId=setTimeout(function(){Object.keys(t.operations).length===0&&t.close()},this.inactivityTimeout))},e.prototype.checkOperationOptions=function(t,r){var n=t.query,i=t.variables,o=t.operationName;if(!n)throw new Error("Must provide a query.");if(!r)throw new Error("Must provide an handler.");if(!QQ.default(n)&&!yie.getOperationAST(n,o)||o&&!QQ.default(o)||i&&!gie.default(i))throw new Error("Incorrect option types. query must be a string or a document,`operationName` must be a string, and `variables` must be an object.")},e.prototype.buildMessage=function(t,r,n){var i=n&&n.query?rf(rf({},n),{query:typeof n.query=="string"?n.query:mie.print(n.query)}):n;return{id:t,type:r,payload:i}},e.prototype.formatErrors=function(t){return Array.isArray(t)?t:t&&t.errors?this.formatErrors(t.errors):t&&t.message?[t]:[{name:"FormatedError",message:"Unknown error",originalError:t}]},e.prototype.sendMessage=function(t,r,n){this.sendMessageRaw(this.buildMessage(t,r,n))},e.prototype.sendMessageRaw=function(t){switch(this.status){case this.wsImpl.OPEN:var r=JSON.stringify(t);try{JSON.parse(r)}catch(n){this.eventEmitter.emit("error",new Error("Message must be JSON-serializable. Got: "+t))}this.client.send(r);break;case this.wsImpl.CONNECTING:this.unsentMessagesQueue.push(t);break;default:this.reconnecting||this.eventEmitter.emit("error",new Error("A message was not sent because socket is not connected, is closing or is already closed. Message was: "+JSON.stringify(t)))}},e.prototype.generateOperationId=function(){return String(++this.nextOperationId)},e.prototype.tryReconnect=function(){var t=this;if(!(!this.reconnect||this.backoff.attempts>=this.reconnectionAttempts)){this.reconnecting||(Object.keys(this.operations).forEach(function(n){t.unsentMessagesQueue.push(t.buildMessage(n,oi.default.GQL_START,t.operations[n].options))}),this.reconnecting=!0),this.clearTryReconnectTimeout();var r=this.backoff.duration();this.tryReconnectTimeoutId=setTimeout(function(){t.connect()},r)}},e.prototype.flushUnsentMessagesQueue=function(){var t=this;this.unsentMessagesQueue.forEach(function(r){t.sendMessageRaw(r)}),this.unsentMessagesQueue=[]},e.prototype.checkConnection=function(){if(this.wasKeepAliveReceived){this.wasKeepAliveReceived=!1;return}this.reconnecting||this.close(!1,!0)},e.prototype.checkMaxConnectTimeout=function(){var t=this;this.clearMaxConnectTimeout(),this.maxConnectTimeoutId=setTimeout(function(){t.status!==t.wsImpl.OPEN&&(t.reconnecting=!0,t.close(!1,!0))},this.maxConnectTimeGenerator.duration())},e.prototype.connect=function(){var t,r=this;this.client=new((t=this.wsImpl).bind.apply(t,VQ([void 0,this.url,this.wsProtocols],this.wsOptionArguments))),this.checkMaxConnectTimeout(),this.client.onopen=function(){return die(r,void 0,void 0,function(){var n,i;return pie(this,function(o){switch(o.label){case 0:if(this.status!==this.wsImpl.OPEN)return[3,4];this.clearMaxConnectTimeout(),this.closedByUser=!1,this.eventEmitter.emit(this.reconnecting?"reconnecting":"connecting"),o.label=1;case 1:return o.trys.push([1,3,,4]),[4,this.connectionParams()];case 2:return n=o.sent(),this.sendMessage(void 0,oi.default.GQL_CONNECTION_INIT,n),this.flushUnsentMessagesQueue(),[3,4];case 3:return i=o.sent(),this.sendMessage(void 0,oi.default.GQL_CONNECTION_ERROR,i),this.flushUnsentMessagesQueue(),[3,4];case 4:return[2]}})})},this.client.onclose=function(){r.closedByUser||r.close(!1,!1)},this.client.onerror=function(n){r.eventEmitter.emit("error",n)},this.client.onmessage=function(n){var i=n.data;r.processReceivedData(i)}},e.prototype.processReceivedData=function(t){var r,n;try{r=JSON.parse(t),n=r.id}catch(l){throw new Error("Message must be JSON-parseable. Got: "+t)}if([oi.default.GQL_DATA,oi.default.GQL_COMPLETE,oi.default.GQL_ERROR].indexOf(r.type)!==-1&&!this.operations[n]){this.unsubscribe(n);return}switch(r.type){case oi.default.GQL_CONNECTION_ERROR:this.connectionCallback&&this.connectionCallback(r.payload);break;case oi.default.GQL_CONNECTION_ACK:this.eventEmitter.emit(this.reconnecting?"reconnected":"connected",r.payload),this.reconnecting=!1,this.backoff.reset(),this.maxConnectTimeGenerator.reset(),this.connectionCallback&&this.connectionCallback();break;case oi.default.GQL_COMPLETE:var i=this.operations[n].handler;delete this.operations[n],i.call(this,null,null);break;case oi.default.GQL_ERROR:this.operations[n].handler(this.formatErrors(r.payload),null),delete this.operations[n];break;case oi.default.GQL_DATA:var o=r.payload.errors?rf(rf({},r.payload),{errors:this.formatErrors(r.payload.errors)}):r.payload;this.operations[n].handler(null,o);break;case oi.default.GQL_CONNECTION_KEEP_ALIVE:var s=typeof this.wasKeepAliveReceived=="undefined";this.wasKeepAliveReceived=!0,s&&this.checkConnection(),this.checkConnectionIntervalId&&(clearInterval(this.checkConnectionIntervalId),this.checkConnection()),this.checkConnectionIntervalId=setInterval(this.checkConnection.bind(this),this.wsTimeout);break;default:throw new Error("Invalid message type!")}},e.prototype.unsubscribe=function(t){this.operations[t]&&(delete this.operations[t],this.setInactivityTimeout(),this.sendMessage(t,oi.default.GQL_STOP,void 0))},e}();ua.SubscriptionClient=_ie});var Eie=Ee(zt()),Sie=Ee(a_());var ut=Ee(zt()),ii=Ee(ht()),hQ=Ee(aP());var it=Ee(ht());"use strict";var oP;(function(e){function t(r){return typeof r=="string"}e.is=t})(oP||(oP={}));var Vk;(function(e){function t(r){return typeof r=="string"}e.is=t})(Vk||(Vk={}));var uP;(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}e.is=t})(uP||(uP={}));var Nm;(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}e.is=t})(Nm||(Nm={}));var ka;(function(e){function t(n,i){return n===Number.MAX_VALUE&&(n=Nm.MAX_VALUE),i===Number.MAX_VALUE&&(i=Nm.MAX_VALUE),{line:n,character:i}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ne.uinteger(i.line)&&ne.uinteger(i.character)}e.is=r})(ka||(ka={}));var Lr;(function(e){function t(n,i,o,s){if(ne.uinteger(n)&&ne.uinteger(i)&&ne.uinteger(o)&&ne.uinteger(s))return{start:ka.create(n,i),end:ka.create(o,s)};if(ka.is(n)&&ka.is(i))return{start:n,end:i};throw new Error("Range#create called with invalid arguments[".concat(n,", ").concat(i,", ").concat(o,", ").concat(s,"]"))}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ka.is(i.start)&&ka.is(i.end)}e.is=r})(Lr||(Lr={}));var Dm;(function(e){function t(n,i){return{uri:n,range:i}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&Lr.is(i.range)&&(ne.string(i.uri)||ne.undefined(i.uri))}e.is=r})(Dm||(Dm={}));var sP;(function(e){function t(n,i,o,s){return{targetUri:n,targetRange:i,targetSelectionRange:o,originSelectionRange:s}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&Lr.is(i.targetRange)&&ne.string(i.targetUri)&&Lr.is(i.targetSelectionRange)&&(Lr.is(i.originSelectionRange)||ne.undefined(i.originSelectionRange))}e.is=r})(sP||(sP={}));var Uk;(function(e){function t(n,i,o,s){return{red:n,green:i,blue:o,alpha:s}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ne.numberRange(i.red,0,1)&&ne.numberRange(i.green,0,1)&&ne.numberRange(i.blue,0,1)&&ne.numberRange(i.alpha,0,1)}e.is=r})(Uk||(Uk={}));var lP;(function(e){function t(n,i){return{range:n,color:i}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&Lr.is(i.range)&&Uk.is(i.color)}e.is=r})(lP||(lP={}));var cP;(function(e){function t(n,i,o){return{label:n,textEdit:i,additionalTextEdits:o}}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ne.string(i.label)&&(ne.undefined(i.textEdit)||Co.is(i))&&(ne.undefined(i.additionalTextEdits)||ne.typedArray(i.additionalTextEdits,Co.is))}e.is=r})(cP||(cP={}));var fP;(function(e){e.Comment="comment",e.Imports="imports",e.Region="region"})(fP||(fP={}));var dP;(function(e){function t(n,i,o,s,l,d){var h={startLine:n,endLine:i};return ne.defined(o)&&(h.startCharacter=o),ne.defined(s)&&(h.endCharacter=s),ne.defined(l)&&(h.kind=l),ne.defined(d)&&(h.collapsedText=d),h}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ne.uinteger(i.startLine)&&ne.uinteger(i.startLine)&&(ne.undefined(i.startCharacter)||ne.uinteger(i.startCharacter))&&(ne.undefined(i.endCharacter)||ne.uinteger(i.endCharacter))&&(ne.undefined(i.kind)||ne.string(i.kind))}e.is=r})(dP||(dP={}));var Gk;(function(e){function t(n,i){return{location:n,message:i}}e.create=t;function r(n){var i=n;return ne.defined(i)&&Dm.is(i.location)&&ne.string(i.message)}e.is=r})(Gk||(Gk={}));var pP;(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(pP||(pP={}));var hP;(function(e){e.Unnecessary=1,e.Deprecated=2})(hP||(hP={}));var vP;(function(e){function t(r){var n=r;return ne.objectLiteral(n)&&ne.string(n.href)}e.is=t})(vP||(vP={}));var xm;(function(e){function t(n,i,o,s,l,d){var h={range:n,message:i};return ne.defined(o)&&(h.severity=o),ne.defined(s)&&(h.code=s),ne.defined(l)&&(h.source=l),ne.defined(d)&&(h.relatedInformation=d),h}e.create=t;function r(n){var i,o=n;return ne.defined(o)&&Lr.is(o.range)&&ne.string(o.message)&&(ne.number(o.severity)||ne.undefined(o.severity))&&(ne.integer(o.code)||ne.string(o.code)||ne.undefined(o.code))&&(ne.undefined(o.codeDescription)||ne.string((i=o.codeDescription)===null||i===void 0?void 0:i.href))&&(ne.string(o.source)||ne.undefined(o.source))&&(ne.undefined(o.relatedInformation)||ne.typedArray(o.relatedInformation,Gk.is))}e.is=r})(xm||(xm={}));var Dc;(function(e){function t(n,i){for(var o=[],s=2;s0&&(l.arguments=o),l}e.create=t;function r(n){var i=n;return ne.defined(i)&&ne.string(i.title)&&ne.string(i.command)}e.is=r})(Dc||(Dc={}));var Co;(function(e){function t(o,s){return{range:o,newText:s}}e.replace=t;function r(o,s){return{range:{start:o,end:o},newText:s}}e.insert=r;function n(o){return{range:o,newText:""}}e.del=n;function i(o){var s=o;return ne.objectLiteral(s)&&ne.string(s.newText)&&Lr.is(s.range)}e.is=i})(Co||(Co={}));var xc;(function(e){function t(n,i,o){var s={label:n};return i!==void 0&&(s.needsConfirmation=i),o!==void 0&&(s.description=o),s}e.create=t;function r(n){var i=n;return ne.objectLiteral(i)&&ne.string(i.label)&&(ne.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(ne.string(i.description)||i.description===void 0)}e.is=r})(xc||(xc={}));var Vn;(function(e){function t(r){var n=r;return ne.string(n)}e.is=t})(Vn||(Vn={}));var Cu;(function(e){function t(o,s,l){return{range:o,newText:s,annotationId:l}}e.replace=t;function r(o,s,l){return{range:{start:o,end:o},newText:s,annotationId:l}}e.insert=r;function n(o,s){return{range:o,newText:"",annotationId:s}}e.del=n;function i(o){var s=o;return Co.is(s)&&(xc.is(s.annotationId)||Vn.is(s.annotationId))}e.is=i})(Cu||(Cu={}));var Cm;(function(e){function t(n,i){return{textDocument:n,edits:i}}e.create=t;function r(n){var i=n;return ne.defined(i)&&Im.is(i.textDocument)&&Array.isArray(i.edits)}e.is=r})(Cm||(Cm={}));var Dp;(function(e){function t(n,i,o){var s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),o!==void 0&&(s.annotationId=o),s}e.create=t;function r(n){var i=n;return i&&i.kind==="create"&&ne.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||ne.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||ne.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Vn.is(i.annotationId))}e.is=r})(Dp||(Dp={}));var xp;(function(e){function t(n,i,o,s){var l={kind:"rename",oldUri:n,newUri:i};return o!==void 0&&(o.overwrite!==void 0||o.ignoreIfExists!==void 0)&&(l.options=o),s!==void 0&&(l.annotationId=s),l}e.create=t;function r(n){var i=n;return i&&i.kind==="rename"&&ne.string(i.oldUri)&&ne.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||ne.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||ne.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Vn.is(i.annotationId))}e.is=r})(xp||(xp={}));var Cp;(function(e){function t(n,i,o){var s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),o!==void 0&&(s.annotationId=o),s}e.create=t;function r(n){var i=n;return i&&i.kind==="delete"&&ne.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||ne.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||ne.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||Vn.is(i.annotationId))}e.is=r})(Cp||(Cp={}));var Qk;(function(e){function t(r){var n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(function(i){return ne.string(i.kind)?Dp.is(i)||xp.is(i)||Cp.is(i):Cm.is(i)}))}e.is=t})(Qk||(Qk={}));var Lm=function(){function e(t,r){this.edits=t,this.changeAnnotations=r}return e.prototype.insert=function(t,r,n){var i,o;if(n===void 0?i=Co.insert(t,r):Vn.is(n)?(o=n,i=Cu.insert(t,r,n)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(n),i=Cu.insert(t,r,o)),this.edits.push(i),o!==void 0)return o},e.prototype.replace=function(t,r,n){var i,o;if(n===void 0?i=Co.replace(t,r):Vn.is(n)?(o=n,i=Cu.replace(t,r,n)):(this.assertChangeAnnotations(this.changeAnnotations),o=this.changeAnnotations.manage(n),i=Cu.replace(t,r,o)),this.edits.push(i),o!==void 0)return o},e.prototype.delete=function(t,r){var n,i;if(r===void 0?n=Co.del(t):Vn.is(r)?(i=r,n=Cu.del(t,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=Cu.del(t,i)),this.edits.push(n),i!==void 0)return i},e.prototype.add=function(t){this.edits.push(t)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(t){if(t===void 0)throw new Error("Text edit change is not configured to manage change annotations.")},e}(),gP=function(){function e(t){this._annotations=t===void 0?Object.create(null):t,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(t,r){var n;if(Vn.is(t)?n=t:(n=this.nextId(),r=t),this._annotations[n]!==void 0)throw new Error("Id ".concat(n," is already in use."));if(r===void 0)throw new Error("No annotation provided for id ".concat(n));return this._annotations[n]=r,this._size++,n},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}(),eue=function(){function e(t){var r=this;this._textEditChanges=Object.create(null),t!==void 0?(this._workspaceEdit=t,t.documentChanges?(this._changeAnnotations=new gP(t.changeAnnotations),t.changeAnnotations=this._changeAnnotations.all(),t.documentChanges.forEach(function(n){if(Cm.is(n)){var i=new Lm(n.edits,r._changeAnnotations);r._textEditChanges[n.textDocument.uri]=i}})):t.changes&&Object.keys(t.changes).forEach(function(n){var i=new Lm(t.changes[n]);r._textEditChanges[n]=i})):this._workspaceEdit={}}return Object.defineProperty(e.prototype,"edit",{get:function(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(t){if(Im.is(t)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var r={uri:t.uri,version:t.version},n=this._textEditChanges[r.uri];if(!n){var i=[],o={textDocument:r,edits:i};this._workspaceEdit.documentChanges.push(o),n=new Lm(i,this._changeAnnotations),this._textEditChanges[r.uri]=n}return n}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");var n=this._textEditChanges[t];if(!n){var i=[];this._workspaceEdit.changes[t]=i,n=new Lm(i),this._textEditChanges[t]=n}return n}},e.prototype.initDocumentChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new gP,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(t,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var i;xc.is(r)||Vn.is(r)?i=r:n=r;var o,s;if(i===void 0?o=Dp.create(t,n):(s=Vn.is(i)?i:this._changeAnnotations.manage(i),o=Dp.create(t,n,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},e.prototype.renameFile=function(t,r,n,i){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var o;xc.is(n)||Vn.is(n)?o=n:i=n;var s,l;if(o===void 0?s=xp.create(t,r,i):(l=Vn.is(o)?o:this._changeAnnotations.manage(o),s=xp.create(t,r,i,l)),this._workspaceEdit.documentChanges.push(s),l!==void 0)return l},e.prototype.deleteFile=function(t,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");var i;xc.is(r)||Vn.is(r)?i=r:n=r;var o,s;if(i===void 0?o=Cp.create(t,n):(s=Vn.is(i)?i:this._changeAnnotations.manage(i),o=Cp.create(t,n,s)),this._workspaceEdit.documentChanges.push(o),s!==void 0)return s},e}();var mP;(function(e){function t(n){return{uri:n}}e.create=t;function r(n){var i=n;return ne.defined(i)&&ne.string(i.uri)}e.is=r})(mP||(mP={}));var yP;(function(e){function t(n,i){return{uri:n,version:i}}e.create=t;function r(n){var i=n;return ne.defined(i)&&ne.string(i.uri)&&ne.integer(i.version)}e.is=r})(yP||(yP={}));var Im;(function(e){function t(n,i){return{uri:n,version:i}}e.create=t;function r(n){var i=n;return ne.defined(i)&&ne.string(i.uri)&&(i.version===null||ne.integer(i.version))}e.is=r})(Im||(Im={}));var bP;(function(e){function t(n,i,o,s){return{uri:n,languageId:i,version:o,text:s}}e.create=t;function r(n){var i=n;return ne.defined(i)&&ne.string(i.uri)&&ne.string(i.languageId)&&ne.integer(i.version)&&ne.string(i.text)}e.is=r})(bP||(bP={}));var Bk;(function(e){e.PlainText="plaintext",e.Markdown="markdown";function t(r){var n=r;return n===e.PlainText||n===e.Markdown}e.is=t})(Bk||(Bk={}));var Lp;(function(e){function t(r){var n=r;return ne.objectLiteral(r)&&Bk.is(n.kind)&&ne.string(n.value)}e.is=t})(Lp||(Lp={}));var TP;(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(TP||(TP={}));var Am;(function(e){e.PlainText=1,e.Snippet=2})(Am||(Am={}));var _P;(function(e){e.Deprecated=1})(_P||(_P={}));var EP;(function(e){function t(n,i,o){return{newText:n,insert:i,replace:o}}e.create=t;function r(n){var i=n;return i&&ne.string(i.newText)&&Lr.is(i.insert)&&Lr.is(i.replace)}e.is=r})(EP||(EP={}));var SP;(function(e){e.asIs=1,e.adjustIndentation=2})(SP||(SP={}));var kP;(function(e){function t(r){var n=r;return n&&(ne.string(n.detail)||n.detail===void 0)&&(ne.string(n.description)||n.description===void 0)}e.is=t})(kP||(kP={}));var OP;(function(e){function t(r){return{label:r}}e.create=t})(OP||(OP={}));var wP;(function(e){function t(r,n){return{items:r||[],isIncomplete:!!n}}e.create=t})(wP||(wP={}));var Rm;(function(e){function t(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}e.fromPlainText=t;function r(n){var i=n;return ne.string(i)||ne.objectLiteral(i)&&ne.string(i.language)&&ne.string(i.value)}e.is=r})(Rm||(Rm={}));var NP;(function(e){function t(r){var n=r;return!!n&&ne.objectLiteral(n)&&(Lp.is(n.contents)||Rm.is(n.contents)||ne.typedArray(n.contents,Rm.is))&&(r.range===void 0||Lr.is(r.range))}e.is=t})(NP||(NP={}));var DP;(function(e){function t(r,n){return n?{label:r,documentation:n}:{label:r}}e.create=t})(DP||(DP={}));var xP;(function(e){function t(r,n){for(var i=[],o=2;o=0;v--){var y=d[v],b=o.offsetAt(y.range.start),D=o.offsetAt(y.range.end);if(D<=h)l=l.substring(0,b)+y.newText+l.substring(D,l.length);else throw new Error("Overlapping edit");h=b}return l}e.applyEdits=n;function i(o,s){if(o.length<=1)return o;var l=o.length/2|0,d=o.slice(0,l),h=o.slice(l);i(d,s),i(h,s);for(var v=0,y=0,b=0;v0&&t.push(r.length),this._lineOffsets=t}return this._lineOffsets},e.prototype.positionAt=function(t){t=Math.max(Math.min(t,this._content.length),0);var r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return ka.create(0,t);for(;nt?i=o:n=o+1}var s=n-1;return ka.create(s,t-r[s])},e.prototype.offsetAt=function(t){var r=this.getLineOffsets();if(t.line>=r.length)return this._content.length;if(t.line<0)return 0;var n=r[t.line],i=t.line+1{let i=!1;return r&&(i=r(n)),i&&t.every(o=>o.match&&!o.match(n))},e}function Cc(e,t){return{style:t,match:r=>r.kind===e}}function nt(e,t){return{style:t||"punctuation",match:r=>r.kind==="Punctuation"&&r.value===e}}var Un=Ee(ht());var Wk={Document:[gt("Definition")],Definition(e){switch(e.value){case"{":return"ShortQuery";case"query":return"Query";case"mutation":return"Mutation";case"subscription":return"Subscription";case"fragment":return Un.Kind.FRAGMENT_DEFINITION;case"schema":return"SchemaDef";case"scalar":return"ScalarDef";case"type":return"ObjectTypeDef";case"interface":return"InterfaceDef";case"union":return"UnionDef";case"enum":return"EnumDef";case"input":return"InputDef";case"extend":return"ExtendDef";case"directive":return"DirectiveDef"}},ShortQuery:["SelectionSet"],Query:[Sn("query"),hr(er("def")),hr("VariableDefinitions"),gt("Directive"),"SelectionSet"],Mutation:[Sn("mutation"),hr(er("def")),hr("VariableDefinitions"),gt("Directive"),"SelectionSet"],Subscription:[Sn("subscription"),hr(er("def")),hr("VariableDefinitions"),gt("Directive"),"SelectionSet"],VariableDefinitions:[nt("("),gt("VariableDefinition"),nt(")")],VariableDefinition:["Variable",nt(":"),"Type",hr("DefaultValue")],Variable:[nt("$","variable"),er("variable")],DefaultValue:[nt("="),"Value"],SelectionSet:[nt("{"),gt("Selection"),nt("}")],Selection(e,t){return e.value==="..."?t.match(/[\s\u00a0,]*(on\b|@|{)/,!1)?"InlineFragment":"FragmentSpread":t.match(/[\s\u00a0,]*:/,!1)?"AliasedField":"Field"},AliasedField:[er("property"),nt(":"),er("qualifier"),hr("Arguments"),gt("Directive"),hr("SelectionSet")],Field:[er("property"),hr("Arguments"),gt("Directive"),hr("SelectionSet")],Arguments:[nt("("),gt("Argument"),nt(")")],Argument:[er("attribute"),nt(":"),"Value"],FragmentSpread:[nt("..."),er("def"),gt("Directive")],InlineFragment:[nt("..."),hr("TypeCondition"),gt("Directive"),"SelectionSet"],FragmentDefinition:[Sn("fragment"),hr(zk(er("def"),[Sn("on")])),"TypeCondition",gt("Directive"),"SelectionSet"],TypeCondition:[Sn("on"),"NamedType"],Value(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue";case"$":return"Variable";case"&":return"NamedType"}return null;case"Name":switch(e.value){case"true":case"false":return"BooleanValue"}return e.value==="null"?"NullValue":"EnumValue"}},NumberValue:[Cc("Number","number")],StringValue:[{style:"string",match:e=>e.kind==="String",update(e,t){t.value.startsWith('"""')&&(e.inBlockstring=!t.value.slice(3).endsWith('"""'))}}],BooleanValue:[Cc("Name","builtin")],NullValue:[Cc("Name","keyword")],EnumValue:[er("string-2")],ListValue:[nt("["),gt("Value"),nt("]")],ObjectValue:[nt("{"),gt("ObjectField"),nt("}")],ObjectField:[er("attribute"),nt(":"),"Value"],Type(e){return e.value==="["?"ListType":"NonNullType"},ListType:[nt("["),"Type",nt("]"),hr(nt("!"))],NonNullType:["NamedType",hr(nt("!"))],NamedType:[lX("atom")],Directive:[nt("@","meta"),er("meta"),hr("Arguments")],DirectiveDef:[Sn("directive"),nt("@","meta"),er("meta"),hr("ArgumentsDef"),Sn("on"),gt("DirectiveLocation",nt("|"))],InterfaceDef:[Sn("interface"),er("atom"),hr("Implements"),gt("Directive"),nt("{"),gt("FieldDef"),nt("}")],Implements:[Sn("implements"),gt("NamedType",nt("&"))],DirectiveLocation:[er("string-2")],SchemaDef:[Sn("schema"),gt("Directive"),nt("{"),gt("OperationTypeDef"),nt("}")],OperationTypeDef:[er("keyword"),nt(":"),er("atom")],ScalarDef:[Sn("scalar"),er("atom"),gt("Directive")],ObjectTypeDef:[Sn("type"),er("atom"),hr("Implements"),gt("Directive"),nt("{"),gt("FieldDef"),nt("}")],FieldDef:[er("property"),hr("ArgumentsDef"),nt(":"),"Type",gt("Directive")],ArgumentsDef:[nt("("),gt("InputValueDef"),nt(")")],InputValueDef:[er("attribute"),nt(":"),"Type",hr("DefaultValue"),gt("Directive")],UnionDef:[Sn("union"),er("atom"),gt("Directive"),nt("="),gt("UnionMember",nt("|"))],UnionMember:["NamedType"],EnumDef:[Sn("enum"),er("atom"),gt("Directive"),nt("{"),gt("EnumValueDef"),nt("}")],EnumValueDef:[er("string-2"),gt("Directive")],InputDef:[Sn("input"),er("atom"),gt("Directive"),nt("{"),gt("InputValueDef"),nt("}")],ExtendDef:[Sn("extend"),"ExtensionDefinition"],ExtensionDefinition(e){switch(e.value){case"schema":return Un.Kind.SCHEMA_EXTENSION;case"scalar":return Un.Kind.SCALAR_TYPE_EXTENSION;case"type":return Un.Kind.OBJECT_TYPE_EXTENSION;case"interface":return Un.Kind.INTERFACE_TYPE_EXTENSION;case"union":return Un.Kind.UNION_TYPE_EXTENSION;case"enum":return Un.Kind.ENUM_TYPE_EXTENSION;case"input":return Un.Kind.INPUT_OBJECT_TYPE_EXTENSION}},[Un.Kind.SCHEMA_EXTENSION]:["SchemaDef"],[Un.Kind.SCALAR_TYPE_EXTENSION]:["ScalarDef"],[Un.Kind.OBJECT_TYPE_EXTENSION]:["ObjectTypeDef"],[Un.Kind.INTERFACE_TYPE_EXTENSION]:["InterfaceDef"],[Un.Kind.UNION_TYPE_EXTENSION]:["UnionDef"],[Un.Kind.ENUM_TYPE_EXTENSION]:["EnumDef"],[Un.Kind.INPUT_OBJECT_TYPE_EXTENSION]:["InputDef"]};function Sn(e){return{style:"keyword",match:t=>t.kind==="Name"&&t.value===e}}function er(e){return{style:e,match:t=>t.kind==="Name",update(t,r){t.name=r.value}}}function lX(e){return{style:e,match:t=>t.kind==="Name",update(t,r){var n;((n=t.prevState)===null||n===void 0?void 0:n.prevState)&&(t.name=r.value,t.prevState.prevState.type=r.value)}}}var rF=Ee(ht()),cX={ALIASED_FIELD:"AliasedField",ARGUMENTS:"Arguments",SHORT_QUERY:"ShortQuery",QUERY:"Query",MUTATION:"Mutation",SUBSCRIPTION:"Subscription",TYPE_CONDITION:"TypeCondition",INVALID:"Invalid",COMMENT:"Comment",SCHEMA_DEF:"SchemaDef",SCALAR_DEF:"ScalarDef",OBJECT_TYPE_DEF:"ObjectTypeDef",OBJECT_VALUE:"ObjectValue",LIST_VALUE:"ListValue",INTERFACE_DEF:"InterfaceDef",UNION_DEF:"UnionDef",ENUM_DEF:"EnumDef",ENUM_VALUE:"EnumValue",FIELD_DEF:"FieldDef",INPUT_DEF:"InputDef",INPUT_VALUE_DEF:"InputValueDef",ARGUMENTS_DEF:"ArgumentsDef",EXTEND_DEF:"ExtendDef",EXTENSION_DEFINITION:"ExtensionDefinition",DIRECTIVE_DEF:"DirectiveDef",IMPLEMENTS:"Implements",VARIABLE_DEFINITIONS:"VariableDefinitions",TYPE:"Type"},nF=Object.assign(Object.assign({},rF.Kind),cX);var Sue=[it.Kind.SCHEMA_DEFINITION,it.Kind.OPERATION_TYPE_DEFINITION,it.Kind.SCALAR_TYPE_DEFINITION,it.Kind.OBJECT_TYPE_DEFINITION,it.Kind.INTERFACE_TYPE_DEFINITION,it.Kind.UNION_TYPE_DEFINITION,it.Kind.ENUM_TYPE_DEFINITION,it.Kind.INPUT_OBJECT_TYPE_DEFINITION,it.Kind.DIRECTIVE_DEFINITION,it.Kind.SCHEMA_EXTENSION,it.Kind.SCALAR_TYPE_EXTENSION,it.Kind.OBJECT_TYPE_EXTENSION,it.Kind.INTERFACE_TYPE_EXTENSION,it.Kind.UNION_TYPE_EXTENSION,it.Kind.ENUM_TYPE_EXTENSION,it.Kind.INPUT_OBJECT_TYPE_EXTENSION];var iF;(function(e){e.TYPE_SYSTEM="TYPE_SYSTEM",e.EXECUTABLE="EXECUTABLE"})(iF||(iF={}));var Mm=Ee(ht()),Zk=Ee(Xk());var qm=(e,t)=>{if(!t)return[];let r=new Map,n=new Set;(0,Mm.visit)(e,{FragmentDefinition(s){r.set(s.name.value,!0)},FragmentSpread(s){n.has(s.name.value)||n.add(s.name.value)}});let i=new Set;for(let s of n)!r.has(s)&&t.has(s)&&i.add((0,Zk.default)(t.get(s)));let o=[];for(let s of i)(0,Mm.visit)(s,{FragmentSpread(l){!n.has(l.name.value)&&t.get(l.name.value)&&(i.add((0,Zk.default)(t.get(l.name.value))),n.add(l.name.value))}}),r.has(s.name.value)||o.push(s);return o};var Lc=Ee(ht());function Vm(e,t){let r=Object.create(null);for(let n of t.definitions)if(n.kind==="OperationDefinition"){let{variableDefinitions:i}=n;if(i)for(let{variable:o,type:s}of i){let l=(0,Lc.typeFromAST)(e,s);l?r[o.name.value]=l:s.kind===Lc.Kind.NAMED_TYPE&&s.name.value==="Float"&&(r[o.name.value]=Lc.GraphQLFloat)}}return r}var Um=Ee(ht());function $k(e,t){let r=t?Vm(t,e):void 0,n=[];return(0,Um.visit)(e,{OperationDefinition(i){n.push(i)}}),{variableToType:r,operations:n}}function js(e,t){if(!!t)try{let r=(0,Um.parse)(t);return Object.assign(Object.assign({},$k(r,e)),{documentAST:r})}catch(r){return}}var Ip={Error:"Error",Warning:"Warning",Information:"Information",Hint:"Hint"},bX={[Ip.Error]:1,[Ip.Warning]:2,[Ip.Information]:3,[Ip.Hint]:4};var Lo=Ee(zt()),kX=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),lF=function(e){kX(t,e);function t(r){var n=e.call(this,r)||this;return n._onClick=function(){n.props.isRunning?n.props.onStop():n.props.onRun()},n._onOptionSelected=function(i){n.setState({optionsOpen:!1}),n.props.onRun(i.name&&i.name.value)},n._onOptionsOpen=function(i){var o=!0,s=i.currentTarget;n.setState({highlight:null,optionsOpen:!0});var l=function(d){var h;if(o&&d.target===s)o=!1;else{document.removeEventListener("mouseup",l),l=null;var v=d.currentTarget&&((h=s.parentNode)===null||h===void 0?void 0:h.compareDocumentPosition(d.currentTarget))&&Node.DOCUMENT_POSITION_CONTAINED_BY;v||n.setState({optionsOpen:!1})}};document.addEventListener("mouseup",l)},n.state={optionsOpen:!1,highlight:null},n}return t.prototype.render=function(){var r=this,n=this.props.operations||[],i=this.state.optionsOpen,o=n&&n.length>1,s=null;if(o&&i){var l=this.state.highlight;s=Lo.default.createElement("ul",{className:"execute-options"},n.map(function(y,b){var D=y.name?y.name.value:"";return Lo.default.createElement("li",{key:D+"-"+b,className:y===l?"selected":void 0,onMouseOver:function(){return r.setState({highlight:y})},onMouseOut:function(){return r.setState({highlight:null})},onMouseUp:function(){return r._onOptionSelected(y)}},D)}))}var d;(this.props.isRunning||!o)&&(d=this._onClick);var h=function(){};!this.props.isRunning&&o&&!i&&(h=this._onOptionsOpen);var v=this.props.isRunning?Lo.default.createElement("path",{d:"M 10 10 L 23 10 L 23 23 L 10 23 z"}):Lo.default.createElement("path",{d:"M 11 9 L 24 16 L 11 23 z"});return Lo.default.createElement("div",{className:"execute-button-wrap"},Lo.default.createElement("button",{type:"button",className:"execute-button",onMouseDown:h,onClick:d,title:"Execute Query (Ctrl-Enter)"},Lo.default.createElement("svg",{width:"34",height:"34"},v)),s)},t}(Lo.default.Component);var Ap=Ee(zt()),OX=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}();function cF(e){if(e.type==="string"){var t=e.string.slice(1).slice(0,-1).trim();try{var r=window.location;return new URL(t,r.protocol+"//"+r.host)}catch(n){return}}}function wX(e){return/(bmp|gif|jpeg|jpg|png|svg)$/.test(e.pathname)}var fF=function(e){OX(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r._node=null,r.state={width:null,height:null,src:null,mime:null},r}return t.shouldRender=function(r){var n=cF(r);return n?wX(n):!1},t.prototype.componentDidMount=function(){this._updateMetadata()},t.prototype.componentDidUpdate=function(){this._updateMetadata()},t.prototype.render=function(){var r=this,n,i=null;if(this.state.width!==null&&this.state.height!==null){var o=this.state.width+"x"+this.state.height;this.state.mime!==null&&(o+=" "+this.state.mime),i=Ap.default.createElement("div",null,o)}return Ap.default.createElement("div",null,Ap.default.createElement("img",{onLoad:function(){return r._updateMetadata()},ref:function(s){r._node=s},src:(n=cF(this.props.token))===null||n===void 0?void 0:n.href}),i)},t.prototype._updateMetadata=function(){var r=this;if(!!this._node){var n=this._node.naturalWidth,i=this._node.naturalHeight,o=this._node.src;o!==this.state.src&&(this.setState({src:o}),fetch(o,{method:"HEAD"}).then(function(s){r.setState({mime:s.headers.get("Content-Type")})})),(n!==this.state.width||i!==this.state.height)&&this.setState({height:i,width:n})}},t}(Ap.default.Component);var tO=Ee(zt()),NX=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Lu=function(e){NX(t,e);function t(r){var n=e.call(this,r)||this;return n.handleClick=function(){try{n.props.onClick(),n.setState({error:null})}catch(i){n.setState({error:i})}},n.state={error:null},n}return t.prototype.render=function(){var r=this.state.error;return tO.default.createElement("button",{className:"toolbar-button"+(r?" error":""),onClick:this.handleClick,title:r?r.message:this.props.title,"aria-invalid":r?"true":"false"},this.props.label)},t}(tO.default.Component);var dF=Ee(zt());function rO(e){var t=e.children;return dF.default.createElement("div",{className:"toolbar-button-group"},t)}var Ps=Ee(zt()),DX=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),nO=function(e){DX(t,e);function t(r){var n=e.call(this,r)||this;return n._node=null,n._listener=null,n.handleOpen=function(i){aO(i),n.setState({visible:!0}),n._subscribe()},n.state={visible:!1},n}return t.prototype.componentWillUnmount=function(){this._release()},t.prototype.render=function(){var r=this,n=this.state.visible;return Ps.default.createElement("a",{className:"toolbar-menu toolbar-button",onClick:this.handleOpen.bind(this),onMouseDown:aO,ref:function(i){i&&(r._node=i)},title:this.props.title},this.props.label,Ps.default.createElement("svg",{width:"14",height:"8"},Ps.default.createElement("path",{fill:"#666",d:"M 5 1.5 L 14 1.5 L 9.5 7 z"})),Ps.default.createElement("ul",{className:"toolbar-menu-items"+(n?" open":"")},this.props.children))},t.prototype._subscribe=function(){this._listener||(this._listener=this.handleClick.bind(this),document.addEventListener("click",this._listener))},t.prototype._release=function(){this._listener&&(document.removeEventListener("click",this._listener),this._listener=null)},t.prototype.handleClick=function(r){this._node!==r.target&&(r.preventDefault(),this.setState({visible:!1}),this._release())},t}(Ps.default.Component);var iO=function(e){var t=e.onSelect,r=e.title,n=e.label;return Ps.default.createElement("li",{onMouseOver:function(i){i.currentTarget.className="hover"},onMouseOut:function(i){i.currentTarget.className=""},onMouseDown:aO,onMouseUp:t,title:r},n)};function aO(e){e.preventDefault()}var yw=Ee(zt()),vG=Ee(ry());var U$=Array.from({length:11},function(e,t){return String.fromCharCode(8192+t)}).concat(["\u2028","\u2029","\u202F","\xA0"]),G$=new RegExp("["+U$.join("")+"]","g");function mV(e){return e.replace(G$," ")}var ny=Ee(ht()),TV=Ee(bV()),_V=Ee(ry()),EV=new _V.default;function Iu(e,t,r){Promise.resolve().then(()=>Ee(Wt())).then(function(n){var i=n.default,o,s;i.on(t,"select",function(l,d){if(!o){var h=d.parentNode;o=document.createElement("div"),o.className="CodeMirror-hint-information",h.appendChild(o),s=document.createElement("div"),s.className="CodeMirror-hint-deprecation",h.appendChild(s);var v;h.addEventListener("DOMNodeRemoved",v=function(_){_.target===h&&(h.removeEventListener("DOMNodeRemoved",v),o=null,s=null,v=null)})}var y=l.description?EV.render(l.description):"Self descriptive.",b=l.type?''+RO(l.type)+"":"";if(o.innerHTML='
    '+(y.slice(0,3)==="

    "?"

    "+b+y.slice(3):b+y)+"

    ",l&&s&&l.deprecationReason){var D=l.deprecationReason?EV.render(l.deprecationReason):"";s.innerHTML='Deprecated'+D,s.style.display="block"}else s&&(s.style.display="none");r&&r(o)})})}function RO(e){return e instanceof ny.GraphQLNonNull?RO(e.ofType)+"!":e instanceof ny.GraphQLList?"["+RO(e.ofType)+"]":''+(0,TV.default)(e.name)+""}var Io,SV=!1;typeof window=="object"&&(SV=window.navigator.platform==="MacIntel");var K$=(Io={},Io[SV?"Cmd-F":"Ctrl-F"]="findPersistent",Io["Cmd-G"]="findPersistent",Io["Ctrl-G"]="findPersistent",Io["Ctrl-Left"]="goSubwordLeft",Io["Ctrl-Right"]="goSubwordRight",Io["Alt-Left"]="goGroupLeft",Io["Alt-Right"]="goGroupRight",Io),Au=K$;var H$=function(e,t,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function l(v){try{h(n.next(v))}catch(y){s(y)}}function d(v){try{h(n.throw(v))}catch(y){s(y)}}function h(v){v.done?o(v.value):i(v.value).then(l,d)}h((n=n.apply(e,t||[])).next())})},z$=function(e,t){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,i,o,s;return s={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function l(h){return function(v){return d([h,v])}}function d(h){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(o=h[0]&2?i.return:h[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,h[1])).done)return o;switch(i=0,o&&(h=[h[0]&2,o.value]),h[0]){case 0:case 1:o=h;break;case 4:return r.label++,{value:h[1],done:!1};case 5:r.label++,i=h[1],h=[0];continue;case 7:h=r.ops.pop(),r.trys.pop();continue;default:if(o=r.trys,!(o=o.length>0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]Ee(jO())),Promise.resolve().then(()=>Ee(PO())),Promise.resolve().then(()=>Ee(CV())),Promise.resolve().then(()=>Ee(FO())),Promise.resolve().then(()=>Ee(MO())),Promise.resolve().then(()=>Ee(VV())),Promise.resolve().then(()=>Ee(qp())),Promise.resolve().then(()=>Ee(qO())),Promise.resolve().then(()=>Ee(Vp())),Promise.resolve().then(()=>Ee(VO()))];function Ru(e,t){return H$(this,void 0,void 0,function(){var r,n;return z$(this,function(i){switch(i.label){case 0:return[4,Promise.resolve().then(()=>Ee(Wt()))];case 1:return r=i.sent().default,n=(t==null?void 0:t.useCommonAddons)===!1?e:W$.concat(e),[4,Promise.all(n.map(function(o){return o}))];case 2:return i.sent(),[2,r]}})})}var nre=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Oy=function(){return Oy=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]Ee(XV())),Promise.resolve().then(()=>Ee(UO())),Promise.resolve().then(()=>Ee(YU())),Promise.resolve().then(()=>Ee(XU())),Promise.resolve().then(()=>Ee(aG())),Promise.resolve().then(()=>Ee(cG())),Promise.resolve().then(()=>Ee(hG()))]},n._onKeyUp=function(i,o){ure.test(o.key)&&n.editor&&n.editor.execCommand("autocomplete")},n._onEdit=function(){!n.ignoreChangeEvent&&n.editor&&(n.cachedValue=n.editor.getValue(),n.props.onEdit&&n.props.onEdit(n.cachedValue))},n._onHasCompletion=function(i,o){Iu(i,o,n.props.onHintInformationRender)},n.cachedValue=r.value||"",n}return t.prototype.componentDidMount=function(){var r=this;this.initializeEditor().then(function(n){n&&(n.on("change",r._onEdit),n.on("keyup",r._onKeyUp),n.on("hasCompletion",r._onHasCompletion),n.on("beforeChange",r._onBeforeChange))}).catch(console.error)},t.prototype.componentDidUpdate=function(r){this.ignoreChangeEvent=!0;var n=!1;this.props.schema!==r.schema&&this.editor&&(this.editor.options.lint.schema=this.props.schema,this.editor.options.hintOptions.schema=this.props.schema,this.editor.options.info.schema=this.props.schema,this.editor.options.jump.schema=this.props.schema,n=!0),this.props.externalFragments!==r.externalFragments&&this.editor&&(this.editor.options.lint.externalFragments=this.props.externalFragments,this.editor.options.hintOptions.externalFragments=this.props.externalFragments,n=!0),n&&this.CodeMirror.signal(this.editor,"change",this.editor),this.props.value!==r.value&&this.props.value!==this.cachedValue&&this.editor&&(this.cachedValue=this.props.value,this.editor.setValue(this.props.value)),this.ignoreChangeEvent=!1},t.prototype.componentWillUnmount=function(){this.editor&&(this.editor.off("change",this._onEdit),this.editor.off("keyup",this._onKeyUp),this.editor.off("hasCompletion",this._onHasCompletion))},t.prototype.render=function(){var r=this;return yw.default.createElement("section",{className:"query-editor","aria-label":"Query Editor",ref:function(n){r._node=n}})},t.prototype.initializeEditor=function(){var r,n,i,o;return ire(this,void 0,void 0,function(){var s,l,d,h=this;return are(this,function(v){switch(v.label){case 0:return l=this,[4,Ru(this.addonModules())];case 1:return s=l.CodeMirror=v.sent(),d=this.editor=s(this._node,{value:(r=this.props.value)!==null&&r!==void 0?r:"",lineNumbers:!0,tabSize:2,foldGutter:{minFoldSize:4},mode:"graphql",theme:this.props.editorTheme||"graphiql",keyMap:"sublime",autoCloseBrackets:!0,matchBrackets:!0,showCursorWhenSelecting:!0,readOnly:this.props.readOnly?"nocursor":!1,lint:{schema:this.props.schema,validationRules:(n=this.props.validationRules)!==null&&n!==void 0?n:null,externalFragments:(i=this.props)===null||i===void 0?void 0:i.externalFragments},hintOptions:{schema:this.props.schema,closeOnUnfocus:!1,completeSingle:!1,container:this._node,externalFragments:(o=this.props)===null||o===void 0?void 0:o.externalFragments},info:{schema:this.props.schema,renderDescription:function(y){return ore.render(y)},onClick:function(y){return h.props.onClickReference&&h.props.onClickReference(y)}},jump:{schema:this.props.schema,onClick:function(y){return h.props.onClickReference&&h.props.onClickReference(y)}},gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],extraKeys:Oy(Oy({"Cmd-Space":function(){return d.showHint({completeSingle:!0,container:h._node})},"Ctrl-Space":function(){return d.showHint({completeSingle:!0,container:h._node})},"Alt-Space":function(){return d.showHint({completeSingle:!0,container:h._node})},"Shift-Space":function(){return d.showHint({completeSingle:!0,container:h._node})},"Shift-Alt-Space":function(){return d.showHint({completeSingle:!0,container:h._node})},"Cmd-Enter":function(){h.props.onRunQuery&&h.props.onRunQuery()},"Ctrl-Enter":function(){h.props.onRunQuery&&h.props.onRunQuery()},"Shift-Ctrl-C":function(){h.props.onCopyQuery&&h.props.onCopyQuery()},"Shift-Ctrl-P":function(){h.props.onPrettifyQuery&&h.props.onPrettifyQuery()},"Shift-Ctrl-F":function(){h.props.onPrettifyQuery&&h.props.onPrettifyQuery()},"Shift-Ctrl-M":function(){h.props.onMergeQuery&&h.props.onMergeQuery()}},Au),{"Cmd-S":function(){h.props.onRunQuery},"Ctrl-S":function(){h.props.onRunQuery}})}),[2,d]}})})},t.prototype.getCodeMirror=function(){return this.editor},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t.prototype._onBeforeChange=function(r,n){if(n.origin==="paste"){var i=n.text.map(mV);n.update(n.from,n.to,i)}},t}(yw.default.Component);var Ow=Ee(zt());var Rre=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),kw=function(){return kw=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]Ee(yG())),Promise.resolve().then(()=>Ee(wG())),Promise.resolve().then(()=>Ee(DG()))]},n._onKeyUp=function(i,o){var s=o.keyCode;!n.editor||(s>=65&&s<=90||!o.shiftKey&&s>=48&&s<=57||o.shiftKey&&s===189||o.shiftKey&&s===222)&&n.editor.execCommand("autocomplete")},n._onEdit=function(){!n.editor||n.ignoreChangeEvent||(n.cachedValue=n.editor.getValue(),n.props.onEdit&&n.props.onEdit(n.cachedValue))},n._onHasCompletion=function(i,o){Iu(i,o,n.props.onHintInformationRender)},n.cachedValue=r.value||"",n}return t.prototype.componentDidMount=function(){var r=this;this.initializeEditor().then(function(n){n.on("change",r._onEdit),n.on("keyup",r._onKeyUp),n.on("hasCompletion",r._onHasCompletion)}).catch(console.error)},t.prototype.componentDidUpdate=function(r){if(!!this.editor&&!!this.CodeMirror){if(this.ignoreChangeEvent=!0,this.props.variableToType!==r.variableToType&&(this.editor.options.lint.variableToType=this.props.variableToType,this.editor.options.hintOptions.variableToType=this.props.variableToType,this.CodeMirror.signal(this.editor,"change",this.editor)),this.props.value!==r.value&&this.props.value!==this.cachedValue){var n=this.props.value||"";this.cachedValue=n,this.editor.setValue(n)}this.ignoreChangeEvent=!1}},t.prototype.componentWillUnmount=function(){!this.editor||(this.editor.off("change",this._onEdit),this.editor.off("keyup",this._onKeyUp),this.editor.off("hasCompletion",this._onHasCompletion),this.editor=null)},t.prototype.render=function(){var r=this;return Ow.default.createElement("div",{className:"codemirrorWrap",style:{position:this.props.active?"relative":"absolute",visibility:this.props.active?"visible":"hidden"},ref:function(n){r._node=n}})},t.prototype.initializeEditor=function(){return jre(this,void 0,void 0,function(){var r,n,i=this;return Pre(this,function(o){switch(o.label){case 0:return r=this,[4,Ru(this.addonModules())];case 1:return r.CodeMirror=o.sent(),n=this.editor=this.CodeMirror(this._node,{value:this.props.value||"",lineNumbers:!0,tabSize:2,mode:"graphql-variables",theme:this.props.editorTheme||"graphiql",keyMap:"sublime",autoCloseBrackets:!0,matchBrackets:!0,showCursorWhenSelecting:!0,readOnly:this.props.readOnly?"nocursor":!1,foldGutter:{minFoldSize:4},lint:{variableToType:this.props.variableToType},hintOptions:{variableToType:this.props.variableToType,closeOnUnfocus:!1,completeSingle:!1,container:this._node},gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],extraKeys:kw({"Cmd-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Ctrl-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Alt-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Shift-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Cmd-Enter":function(){i.props.onRunQuery&&i.props.onRunQuery()},"Ctrl-Enter":function(){i.props.onRunQuery&&i.props.onRunQuery()},"Shift-Ctrl-P":function(){i.props.onPrettifyQuery&&i.props.onPrettifyQuery()},"Shift-Ctrl-M":function(){i.props.onMergeQuery&&i.props.onMergeQuery()}},Au)}),[2,n]}})})},t.prototype.getCodeMirror=function(){return this.editor},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t}(Ow.default.Component);var Nw=Ee(zt());var Fre=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),ww=function(){return ww=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]Ee(LG()))]},n._onKeyUp=function(i,o){var s=o.keyCode;!n.editor||(s>=65&&s<=90||!o.shiftKey&&s>=48&&s<=57||o.shiftKey&&s===189||o.shiftKey&&s===222)&&n.editor.execCommand("autocomplete")},n._onEdit=function(){!n.editor||n.ignoreChangeEvent||(n.cachedValue=n.editor.getValue(),n.props.onEdit&&n.props.onEdit(n.cachedValue))},n._onHasCompletion=function(i,o){Iu(i,o,n.props.onHintInformationRender)},n.cachedValue=r.value||"",n}return t.prototype.componentDidMount=function(){var r=this;this.initializeEditor().then(function(n){n.on("change",r._onEdit),n.on("keyup",r._onKeyUp),n.on("hasCompletion",r._onHasCompletion)}).catch(console.error)},t.prototype.componentDidUpdate=function(r){if(!!this.editor){if(this.ignoreChangeEvent=!0,this.props.value!==r.value&&this.props.value!==this.cachedValue){var n=this.props.value||"";this.cachedValue=n,this.editor.setValue(n)}this.ignoreChangeEvent=!1}},t.prototype.componentWillUnmount=function(){!this.editor||(this.editor.off("change",this._onEdit),this.editor.off("keyup",this._onKeyUp),this.editor.off("hasCompletion",this._onHasCompletion),this.editor=null)},t.prototype.render=function(){var r=this;return Nw.default.createElement("div",{className:"codemirrorWrap",style:{position:this.props.active?"relative":"absolute",visibility:this.props.active?"visible":"hidden"},ref:function(n){r._node=n}})},t.prototype.initializeEditor=function(){return Mre(this,void 0,void 0,function(){var r,n,i=this;return qre(this,function(o){switch(o.label){case 0:return r=this,[4,Ru(this.addonModules())];case 1:return r.CodeMirror=o.sent(),n=this.editor=this.CodeMirror(this._node,{value:this.props.value||"",lineNumbers:!0,tabSize:2,mode:{name:"javascript",json:!0},theme:this.props.editorTheme||"graphiql",keyMap:"sublime",autoCloseBrackets:!0,matchBrackets:!0,showCursorWhenSelecting:!0,readOnly:this.props.readOnly?"nocursor":!1,foldGutter:{minFoldSize:4},gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],extraKeys:ww({"Cmd-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Ctrl-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Alt-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Shift-Space":function(){return i.editor.showHint({completeSingle:!1,container:i._node})},"Cmd-Enter":function(){i.props.onRunQuery&&i.props.onRunQuery()},"Ctrl-Enter":function(){i.props.onRunQuery&&i.props.onRunQuery()},"Shift-Ctrl-P":function(){i.props.onPrettifyQuery&&i.props.onPrettifyQuery()},"Shift-Ctrl-M":function(){i.props.onMergeQuery&&i.props.onMergeQuery()}},Au)}),[2,n]}})})},t.prototype.getCodeMirror=function(){return this.editor},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t}(Nw.default.Component);var Yc=Ee(zt()),xw=Ee(a_());var Kre=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hre=function(e,t,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function l(v){try{h(n.next(v))}catch(y){s(y)}}function d(v){try{h(n.throw(v))}catch(y){s(y)}}function h(v){v.done?o(v.value):i(v.value).then(l,d)}h((n=n.apply(e,t||[])).next())})},zre=function(e,t){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,i,o,s;return s={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function l(h){return function(v){return d([h,v])}}function d(h){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(o=h[0]&2?i.return:h[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,h[1])).done)return o;switch(i=0,o&&(h=[h[0]&2,o.value]),h[0]){case 0:case 1:o=h;break;case 4:return r.label++,{value:h[1],done:!1};case 5:r.label++,i=h[1],h=[0];continue;case 7:h=r.ops.pop(),r.trys.pop();continue;default:if(o=r.trys,!(o=o.length>0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]Ee(MO())),Promise.resolve().then(()=>Ee(FO())),Promise.resolve().then(()=>Ee(Vp())),Promise.resolve().then(()=>Ee(UO())),Promise.resolve().then(()=>Ee(qp())),Promise.resolve().then(()=>Ee(qO())),Promise.resolve().then(()=>Ee(VO())),Promise.resolve().then(()=>Ee(IG()))]},r}return t.prototype.componentDidMount=function(){this.initializeEditor()},t.prototype.shouldComponentUpdate=function(r){return this.props.value!==r.value},t.prototype.componentDidUpdate=function(){this.viewer&&this.viewer.setValue(this.props.value||"")},t.prototype.componentWillUnmount=function(){this.viewer=null},t.prototype.render=function(){var r=this;return Yc.default.createElement("section",{className:"result-window","aria-label":"Result Window","aria-live":"polite","aria-atomic":"true",ref:function(n){n&&(r.props.registerRef(n),r._node=n)}})},t.prototype.initializeEditor=function(){return Hre(this,void 0,void 0,function(){var r,n,i,o;return zre(this,function(s){switch(s.label){case 0:return[4,Ru(this.allAddons(),{useCommonAddons:!1})];case 1:return r=s.sent(),n=this.props.ResultsTooltip,i=this.props.ImagePreview,n||i?[4,Promise.resolve().then(()=>Ee(gw()))]:[3,3];case 2:s.sent(),o=document.createElement("div"),r.registerHelper("info","graphql-results",function(l,d,h,v){var y=[];return n&&y.push(Yc.default.createElement(n,{pos:v})),i&&typeof i.shouldRender=="function"&&i.shouldRender(l)&&y.push(Yc.default.createElement(i,{token:l})),y.length?(xw.default.render(Yc.default.createElement("div",null,y),o),o):(xw.default.unmountComponentAtNode(o),null)}),s.label=3;case 3:return this.viewer=r(this._node,{lineWrapping:!0,value:this.props.value||"",readOnly:!0,theme:this.props.editorTheme||"graphiql",mode:"graphql-results",keyMap:"sublime",foldGutter:{minFoldSize:4},gutters:["CodeMirror-foldgutter"],info:Boolean(this.props.ResultsTooltip||this.props.ImagePreview),extraKeys:Au}),[2]}})})},t.prototype.getCodeMirror=function(){return this.viewer},t.prototype.getClientHeight=function(){return this._node&&this._node.clientHeight},t}(Yc.default.Component);var wn=Ee(zt()),Mw=Ee(ht());var Yt=Ee(zt());var ih=Ee(zt());var Py=Ee(zt()),Fy=Ee(ht());function ni(e){var t=e.onClick?e.onClick:function(){return null};return Lw(e.type,t)}function Lw(e,t){return e instanceof Fy.GraphQLNonNull?Py.default.createElement("span",null,Lw(e.ofType,t),"!"):e instanceof Fy.GraphQLList?Py.default.createElement("span",null,"[",Lw(e.ofType,t),"]"):Py.default.createElement("a",{className:"type-name",onClick:function(r){r.preventDefault(),t(e,r)},href:"#"},e==null?void 0:e.name)}var Iw=Ee(zt()),My=Ee(ht()),Wre=function(e){return e?(0,My.print)(e):""};function nh(e){var t=e.field;return"defaultValue"in t&&t.defaultValue!==void 0?Iw.default.createElement("span",null," = ",Iw.default.createElement("span",{className:"arg-default-value"},Wre((0,My.astFromValue)(t.defaultValue,t.type)))):null}function qu(e){var t=e.arg,r=e.onClickType,n=e.showDefaultValue;return ih.default.createElement("span",{className:"arg"},ih.default.createElement("span",{className:"arg-name"},t.name),": ",ih.default.createElement(ni,{type:t.type,onClick:r}),n!==!1&&ih.default.createElement(nh,{field:t}))}var AG=Ee(zt());function Aw(e){var t=e.directive;return AG.default.createElement("span",{className:"doc-category-item",id:t.name.value},"@",t.name.value)}var Rw=Ee(zt()),RG=Ee(ry()),Yre=new RG.default({breaks:!0,linkify:!0});function Bn(e){var t=e.markdown,r=e.className;return t?Rw.default.createElement("div",{className:r,dangerouslySetInnerHTML:{__html:Yre.render(t)}}):Rw.default.createElement("div",null)}var Jre=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,o=[],s;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o};function jw(e){var t=e.field,r=e.onClickType,n=Jre(Yt.default.useState(!1),2),i=n[0],o=n[1],s,l;if(t&&"args"in t&&t.args.length>0){s=Yt.default.createElement("div",{id:"doc-args",className:"doc-category"},Yt.default.createElement("div",{className:"doc-category-title"},"arguments"),t.args.filter(function(v){return!v.deprecationReason}).map(function(v){return Yt.default.createElement("div",{key:v.name,className:"doc-category-item"},Yt.default.createElement("div",null,Yt.default.createElement(qu,{arg:v,onClickType:r})),Yt.default.createElement(Bn,{className:"doc-value-description",markdown:v.description}),v&&"deprecationReason"in v&&Yt.default.createElement(Bn,{className:"doc-deprecation",markdown:v==null?void 0:v.deprecationReason}))}));var d=t.args.filter(function(v){return Boolean(v.deprecationReason)});d.length>0&&(l=Yt.default.createElement("div",{id:"doc-deprecated-args",className:"doc-category"},Yt.default.createElement("div",{className:"doc-category-title"},"deprecated arguments"),i?d.map(function(v,y){return Yt.default.createElement("div",{key:y},Yt.default.createElement("div",null,Yt.default.createElement(qu,{arg:v,onClickType:r})),Yt.default.createElement(Bn,{className:"doc-value-description",markdown:v.description}),v&&"deprecationReason"in v&&Yt.default.createElement(Bn,{className:"doc-deprecation",markdown:v==null?void 0:v.deprecationReason}))}):Yt.default.createElement("button",{className:"show-btn",onClick:function(){return o(!i)}},"Show deprecated arguments...")))}var h;return t&&t.astNode&&t.astNode.directives&&t.astNode.directives.length>0&&(h=Yt.default.createElement("div",{id:"doc-directives",className:"doc-category"},Yt.default.createElement("div",{className:"doc-category-title"},"directives"),t.astNode.directives.map(function(v){return Yt.default.createElement("div",{key:v.name.value,className:"doc-category-item"},Yt.default.createElement("div",null,Yt.default.createElement(Aw,{directive:v})))}))),Yt.default.createElement("div",null,Yt.default.createElement(Bn,{className:"doc-type-description",markdown:(t==null?void 0:t.description)||"No Description"}),t&&"deprecationReason"in t&&Yt.default.createElement(Bn,{className:"doc-deprecation",markdown:t==null?void 0:t.deprecationReason}),Yt.default.createElement("div",{className:"doc-category"},Yt.default.createElement("div",{className:"doc-category-title"},"type"),Yt.default.createElement(ni,{type:t==null?void 0:t.type,onClick:r})),s,h,l)}var Ti=Ee(zt());function Pw(e){var t=e.schema,r=e.onClickType,n=t.getQueryType(),i=t.getMutationType&&t.getMutationType(),o=t.getSubscriptionType&&t.getSubscriptionType();return Ti.default.createElement("div",null,Ti.default.createElement(Bn,{className:"doc-type-description",markdown:t.description||"A GraphQL schema provides a root type for each kind of operation."}),Ti.default.createElement("div",{className:"doc-category"},Ti.default.createElement("div",{className:"doc-category-title"},"root types"),Ti.default.createElement("div",{className:"doc-category-item"},Ti.default.createElement("span",{className:"keyword"},"query"),": ",Ti.default.createElement(ni,{type:n,onClick:r})),i&&Ti.default.createElement("div",{className:"doc-category-item"},Ti.default.createElement("span",{className:"keyword"},"mutation"),": ",Ti.default.createElement(ni,{type:i,onClick:r})),o&&Ti.default.createElement("div",{className:"doc-category-item"},Ti.default.createElement("span",{className:"keyword"},"subscription"),": ",Ti.default.createElement(ni,{type:o,onClick:r}))))}var Jc=Ee(zt());function ji(e,t){var r;return function(){for(var n=this,i=[],o=0;o=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},tne=function(e){$re(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.shouldComponentUpdate=function(r){return this.props.schema!==r.schema||this.props.searchValue!==r.searchValue},t.prototype.render=function(){var r,n,i=this.props.searchValue,o=this.props.withinType,s=this.props.schema,l=this.props.onClickType,d=this.props.onClickField,h=[],v=[],y=[],b=s.getTypeMap(),D=Object.keys(b);o&&(D=D.filter(function(w){return w!==o.name}),D.unshift(o.name));var _=function(w){if(h.length+v.length+y.length>=100)return"break";var x=b[w];if(o!==x&&Fw(w,i)&&v.push(_i.default.createElement("div",{className:"doc-category-item",key:w},_i.default.createElement(ni,{type:x,onClick:l}))),x&&"getFields"in x){var L=x.getFields();Object.keys(L).forEach(function(O){var R=L[O],M;if(!Fw(O,i))if("args"in R&&R.args.length){if(M=R.args.filter(function(z){return Fw(z.name,i)}),M.length===0)return}else return;var q=_i.default.createElement("div",{className:"doc-category-item",key:w+"."+O},o!==x&&[_i.default.createElement(ni,{key:"type",type:x,onClick:l}),"."],_i.default.createElement("a",{className:"field-name",onClick:function(z){return d(R,x,z)}},R.name),M&&["(",_i.default.createElement("span",{key:"args"},M.map(function(z){return _i.default.createElement(qu,{key:z.name,arg:z,onClickType:l,showDefaultValue:!1})})),")"]);o===x?h.push(q):y.push(q)})}};try{for(var k=ene(D),T=k.next();!T.done;T=k.next()){var S=T.value,m=_(S);if(m==="break")break}}catch(w){r={error:w}}finally{try{T&&!T.done&&(n=k.return)&&n.call(k)}finally{if(r)throw r.error}}return h.length+v.length+y.length===0?_i.default.createElement("span",{className:"doc-alert-text"},"No results found."):o&&v.length+y.length>0?_i.default.createElement("div",null,h,_i.default.createElement("div",{className:"doc-category"},_i.default.createElement("div",{className:"doc-category-title"},"other results"),v,y)):_i.default.createElement("div",{className:"doc-search-items"},h,v,y)},t}(_i.default.Component),PG=tne;function Fw(e,t){try{var r=t.replace(/[^_0-9A-Za-z]/g,function(n){return"\\"+n});return e.search(new RegExp(r,"i"))!==-1}catch(n){return e.toLowerCase().indexOf(t.toLowerCase())!==-1}}var Tt=Ee(zt()),no=Ee(ht());var rne=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),nne=function(e){rne(t,e);function t(r){var n=e.call(this,r)||this;return n.handleShowDeprecated=function(){return n.setState({showDeprecated:!0})},n.state={showDeprecated:!1},n}return t.prototype.shouldComponentUpdate=function(r,n){return this.props.type!==r.type||this.props.schema!==r.schema||this.state.showDeprecated!==n.showDeprecated},t.prototype.render=function(){var r=this.props.schema,n=this.props.type,i=this.props.onClickType,o=this.props.onClickField,s=null,l=[];n instanceof no.GraphQLUnionType?(s="possible types",l=r.getPossibleTypes(n)):n instanceof no.GraphQLInterfaceType?(s="implementations",l=r.getPossibleTypes(n)):n instanceof no.GraphQLObjectType&&(s="implements",l=n.getInterfaces());var d;l&&l.length>0&&(d=Tt.default.createElement("div",{id:"doc-types",className:"doc-category"},Tt.default.createElement("div",{className:"doc-category-title"},s),l.map(function(m){return Tt.default.createElement("div",{key:m.name,className:"doc-category-item"},Tt.default.createElement(ni,{type:m,onClick:i}))})));var h,v;if(n&&"getFields"in n){var y=n.getFields(),b=Object.keys(y).map(function(m){return y[m]});h=Tt.default.createElement("div",{id:"doc-fields",className:"doc-category"},Tt.default.createElement("div",{className:"doc-category-title"},"fields"),b.filter(function(m){return!m.deprecationReason}).map(function(m){return Tt.default.createElement(MG,{key:m.name,type:n,field:m,onClickType:i,onClickField:o})}));var D=b.filter(function(m){return Boolean(m.deprecationReason)});D.length>0&&(v=Tt.default.createElement("div",{id:"doc-deprecated-fields",className:"doc-category"},Tt.default.createElement("div",{className:"doc-category-title"},"deprecated fields"),this.state.showDeprecated?D.map(function(m){return Tt.default.createElement(MG,{key:m.name,type:n,field:m,onClickType:i,onClickField:o})}):Tt.default.createElement("button",{className:"show-btn",onClick:this.handleShowDeprecated},"Show deprecated fields...")))}var _,k;if(n instanceof no.GraphQLEnumType){var T=n.getValues();_=Tt.default.createElement("div",{className:"doc-category"},Tt.default.createElement("div",{className:"doc-category-title"},"values"),T.filter(function(m){return Boolean(!m.deprecationReason)}).map(function(m){return Tt.default.createElement(qG,{key:m.name,value:m})}));var S=T.filter(function(m){return Boolean(m.deprecationReason)});S.length>0&&(k=Tt.default.createElement("div",{className:"doc-category"},Tt.default.createElement("div",{className:"doc-category-title"},"deprecated values"),this.state.showDeprecated?S.map(function(m){return Tt.default.createElement(qG,{key:m.name,value:m})}):Tt.default.createElement("button",{className:"show-btn",onClick:this.handleShowDeprecated},"Show deprecated values...")))}return Tt.default.createElement("div",null,Tt.default.createElement(Bn,{className:"doc-type-description",markdown:"description"in n&&n.description||"No Description"}),n instanceof no.GraphQLObjectType&&d,h,v,_,k,!(n instanceof no.GraphQLObjectType)&&d)},t}(Tt.default.Component),FG=nne;function MG(e){var t=e.type,r=e.field,n=e.onClickType,i=e.onClickField;return Tt.default.createElement("div",{className:"doc-category-item"},Tt.default.createElement("a",{className:"field-name",onClick:function(o){return i(r,t,o)}},r.name),"args"in r&&r.args&&r.args.length>0&&["(",Tt.default.createElement("span",{key:"args"},r.args.filter(function(o){return!o.deprecationReason}).map(function(o){return Tt.default.createElement(qu,{key:o.name,arg:o,onClickType:n})})),")"],": ",Tt.default.createElement(ni,{type:r.type,onClick:n}),Tt.default.createElement(nh,{field:r}),r.description&&Tt.default.createElement(Bn,{className:"field-short-description",markdown:r.description}),"deprecationReason"in r&&r.deprecationReason&&Tt.default.createElement(Bn,{className:"doc-deprecation",markdown:r.deprecationReason}))}function qG(e){var t=e.value;return Tt.default.createElement("div",{className:"doc-category-item"},Tt.default.createElement("div",{className:"enum-value"},t.name),Tt.default.createElement(Bn,{className:"doc-value-description",markdown:t.description}),t.deprecationReason&&Tt.default.createElement(Bn,{className:"doc-deprecation",markdown:t.deprecationReason}))}var ine=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),qy=function(){return qy=Object.assign||function(e){for(var t,r=1,n=arguments.length;r1&&n.setState({navStack:n.state.navStack.slice(0,-1)})},n.handleClickType=function(i){n.showDoc(i)},n.handleClickField=function(i){n.showDoc(i)},n.handleSearch=function(i){n.showSearch(i)},n.state={navStack:[VG]},n}return t.prototype.shouldComponentUpdate=function(r,n){return this.props.schema!==r.schema||this.state.navStack!==n.navStack||this.props.schemaErrors!==r.schemaErrors},t.prototype.render=function(){var r=this.props,n=r.schema,i=r.schemaErrors,o=this.state.navStack,s=o[o.length-1],l;i?l=wn.default.createElement("div",{className:"error-container"},"Error fetching schema"):n===void 0?l=wn.default.createElement("div",{className:"spinner-container"},wn.default.createElement("div",{className:"spinner"})):n?s.search?l=wn.default.createElement(PG,{searchValue:s.search,withinType:s.def,schema:n,onClickType:this.handleClickType,onClickField:this.handleClickField}):o.length===1?l=wn.default.createElement(Pw,{schema:n,onClickType:this.handleClickType}):(0,Mw.isType)(s.def)?l=wn.default.createElement(FG,{schema:n,type:s.def,onClickType:this.handleClickType,onClickField:this.handleClickField}):l=wn.default.createElement(jw,{field:s.def,onClickType:this.handleClickType}):l=wn.default.createElement("div",{className:"error-container"},"No Schema Available");var d=o.length===1||(0,Mw.isType)(s.def)&&"getFields"in s.def,h;return o.length>1&&(h=o[o.length-2].name),wn.default.createElement("section",{className:"doc-explorer",key:s.name,"aria-label":"Documentation Explorer"},wn.default.createElement("div",{className:"doc-explorer-title-bar"},h&&wn.default.createElement("button",{className:"doc-explorer-back",onClick:this.handleNavBackClick,"aria-label":"Go back to "+h},h),wn.default.createElement("div",{className:"doc-explorer-title"},s.title||s.name),wn.default.createElement("div",{className:"doc-explorer-rhs"},this.props.children)),wn.default.createElement("div",{className:"doc-explorer-contents"},d&&wn.default.createElement(jG,{value:s.search,placeholder:"Search "+s.name+"...",onSearch:this.handleSearch}),l))},t.prototype.showDoc=function(r){var n=this.state.navStack,i=n[n.length-1];i.def!==r&&this.setState({navStack:n.concat([{name:r.name,def:r}])})},t.prototype.showDocForReference=function(r){r&&r.kind==="Type"?this.showDoc(r.type):r.kind==="Field"?this.showDoc(r.field):r.kind==="Argument"&&r.field?this.showDoc(r.field):r.kind==="EnumValue"&&r.type&&this.showDoc(r.type)},t.prototype.showSearch=function(r){var n=this.state.navStack.slice(),i=n[n.length-1];n[n.length-1]=qy(qy({},i),{search:r}),this.setState({navStack:n})},t.prototype.reset=function(){this.setState({navStack:[VG]})},t}(wn.default.Component);var Vu=Ee(zt());var Ks=Ee(zt()),ane=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),one=function(e){ane(t,e);function t(r){var n=e.call(this,r)||this;return n.state={editable:!1},n.editField=null,n}return t.prototype.render=function(){var r=this,n,i=this.props.label||this.props.operationName||((n=this.props.query)===null||n===void 0?void 0:n.split(` +`).filter(function(s){return s.indexOf("#")!==0}).join("")),o=this.props.favorite?"\u2605":"\u2606";return Ks.default.createElement("li",{className:this.state.editable?"editable":void 0},this.state.editable?Ks.default.createElement("input",{type:"text",defaultValue:this.props.label,ref:function(s){r.editField=s},onBlur:this.handleFieldBlur.bind(this),onKeyDown:this.handleFieldKeyDown.bind(this),placeholder:"Type a label"}):Ks.default.createElement("button",{className:"history-label",onClick:this.handleClick.bind(this)},i),Ks.default.createElement("button",{onClick:this.handleEditClick.bind(this),"aria-label":"Edit label"},"\u270E"),Ks.default.createElement("button",{className:this.props.favorite?"favorited":void 0,onClick:this.handleStarClick.bind(this),"aria-label":this.props.favorite?"Remove favorite":"Add favorite"},o))},t.prototype.handleClick=function(){this.props.onSelect(this.props.query,this.props.variables,this.props.headers,this.props.operationName,this.props.label)},t.prototype.handleStarClick=function(r){r.stopPropagation(),this.props.handleToggleFavorite(this.props.query,this.props.variables,this.props.headers,this.props.operationName,this.props.label,this.props.favorite)},t.prototype.handleFieldBlur=function(r){r.stopPropagation(),this.setState({editable:!1}),this.props.handleEditLabel(this.props.query,this.props.variables,this.props.headers,this.props.operationName,r.target.value,this.props.favorite)},t.prototype.handleFieldKeyDown=function(r){r.keyCode===13&&(r.stopPropagation(),this.setState({editable:!1}),this.props.handleEditLabel(this.props.query,this.props.variables,this.props.headers,this.props.operationName,r.currentTarget.value,this.props.favorite))},t.prototype.handleEditClick=function(r){var n=this;r.stopPropagation(),this.setState({editable:!0},function(){n.editField&&n.editField.focus()})},t}(Ks.default.Component),UG=one;var une=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,o=[],s;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},sne=function(){for(var e=[],t=0;tthis.maxSize&&n.shift();for(var i=0;i<5;i++){var o=this.storage.set(this.key,JSON.stringify((r={},r[this.key]=n,r)));if(!o||!o.error)this.items=n;else if(o.isQuotaError&&this.maxSize)n.shift();else return}},e.prototype.save=function(){var t;this.storage.set(this.key,JSON.stringify((t={},t[this.key]=this.items,t)))},e}(),Vw=lne;var QG=Ee(ht()),Vy=function(){return Vy=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},GG=function(){for(var e=[],t=0;tfne?!1:l?!(JSON.stringify(i)===JSON.stringify(l.query)&&(JSON.stringify(o)===JSON.stringify(l.variables)&&(JSON.stringify(s)===JSON.stringify(l.headers)||s&&!l.headers)||o&&!l.variables)):!0},this.fetchAllQueries=function(){var i=n.history.fetchAll(),o=n.favorite.fetchAll();return i.concat(o)},this.updateHistory=function(i,o,s,l){if(n.shouldSaveQuery(i,o,s,n.history.fetchRecent())){n.history.push({query:i,variables:o,headers:s,operationName:l});var d=n.history.items,h=n.favorite.items;n.queries=d.concat(h)}},this.toggleFavorite=function(i,o,s,l,d,h){var v={query:i,variables:o,headers:s,operationName:l,label:d};n.favorite.contains(v)?h&&(v.favorite=!1,n.favorite.delete(v)):(v.favorite=!0,n.favorite.push(v)),n.queries=GG(n.history.items,n.favorite.items)},this.editLabel=function(i,o,s,l,d,h){var v={query:i,variables:o,headers:s,operationName:l,label:d};h?n.favorite.edit(Vy(Vy({},v),{favorite:h})):n.history.edit(v),n.queries=GG(n.history.items,n.favorite.items)},this.history=new Vw("queries",this.storage,this.maxHistoryLength),this.favorite=new Vw("favorites",this.storage,null),this.queries=this.fetchAllQueries()}return e}(),Uy=dne;var pne=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Uw=function(){return Uw=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},_ne=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),i,o=[],s;try{for(;(t===void 0||t-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},WG=function(){for(var e=[],t=0;t=0)continue;d.push(b)}var D=e[y.name.value];if(D){var _=D.typeCondition,k=D.directives,T=D.selectionSet;y={kind:aa.Kind.INLINE_FRAGMENT,typeCondition:_,directives:k,selectionSet:T}}}if(y.kind===aa.Kind.INLINE_FRAGMENT&&(!y.directives||((o=y.directives)===null||o===void 0?void 0:o.length)===0)){var S=y.typeCondition?y.typeCondition.name.value:null;if(!S||S===s){l.push.apply(l,WG(YG(e,y.selectionSet.selections,r)));continue}}l.push(y)}}catch(m){n={error:m}}finally{try{v&&!v.done&&(i=h.return)&&i.call(h)}finally{if(n)throw n.error}}return l}function Gy(e,t){var r,n,i=t?new aa.TypeInfo(t):null,o=Object.create(null);try{for(var s=Bw(e.definitions),l=s.next();!l.done;l=s.next()){var d=l.value;d.kind===aa.Kind.FRAGMENT_DEFINITION&&(o[d.name.value]=d)}}catch(v){r={error:v}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}var h={SelectionSet:function(v){var y=i?i.getParentType():null,b=v.selections;return b=YG(o,b,y),b=Ene(b,function(D){return D.alias?D.alias.value:D.name.value}),Xc(Xc({},v),{selections:b})},FragmentDefinition:function(){return null}};return(0,aa.visit)(e,i?(0,aa.visitWithTypeInfo)(i,h):h)}var Sne="IntrospectionQuery",JG=Sne;var vQ=Ee(sQ());var Ky=Ee(ht());var zs=Ee(zt()),Qy=function(){return Qy=Object.assign||function(e){for(var t,r=1,n=arguments.length;r"}function Uu(e){var t,r,n;return[(t=e.query)!==null&&t!==void 0?t:"",(r=e.variables)!==null&&r!==void 0?r:"",(n=e.headers)!==null&&n!==void 0?n:""].join("|")}function By(){var e=function(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)};return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}var Rne=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ke=function(){return Ke=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){s={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return o},pQ=function(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},gQ=350,Mne=parseInt(ut.default.version.slice(0,2),10);if(Mne<16)throw Error(["GraphiQL 0.18.0 and after is not compatible with React 15 or below.","If you are using a CDN source (jsdelivr, unpkg, etc), follow this example:","https://github.com/graphql/graphiql/blob/master/examples/graphiql-cdn/index.html#L49"].join(` +`));var mQ=function(e){return JSON.stringify(e,null,2)},qne=function(e){return Ke(Ke({},e),{message:e.message,stack:e.stack})},yQ=function(e){return e instanceof ii.GraphQLError?e.toString():e instanceof Error?qne(e):e},bQ=function(e){Rne(t,e);function t(r){var n,i,o,s,l,d,h,v,y,b,D,_=e.call(this,r)||this;if(_._editorQueryID=0,_.safeSetState=function(te,ce){_.componentIsMounted&&_.setState(te,ce)},_.persistTabsState=function(){var te,ce;_.props.tabs&&(_._storage.set("tabState",JSON.stringify(_.state.tabs,function(we,ot){return we==="response"||_.state.shouldPersistHeaders&&we==="headers"?void 0:ot})),typeof _.props.tabs=="object"&&((ce=(te=_.props.tabs).onTabChange)===null||ce===void 0||ce.call(te,_.state.tabs)))},_.makeHandleOnSelectTab=function(te){return function(){_.handleStopQuery(),_.setState(function(ce){return Hne(te,ce)},function(){_.persistTabsState(),_.state.query&&_.handleEditQuery(_.state.query)})}},_.makeHandleOnCloseTab=function(te){return function(){_.state.tabs.activeTabIndex===te&&_.handleStopQuery(),_.setState(function(ce){return zne(te,ce)},_.persistTabsState)}},_.handleOnAddTab=function(){_.setState(function(te){return Wne(te)},_.persistTabsState)},_.handleClickReference=function(te){_.setState({docExplorerOpen:!0},function(){_.docExplorerComponent&&_.docExplorerComponent.showDocForReference(te)}),_._storage.set("docExplorerOpen",JSON.stringify(_.state.docExplorerOpen))},_.handleRunQuery=function(te){return Hw(_,void 0,void 0,function(){var ce,we,ot,Me,Qe,ze,mt,oe,me,fe=this;return zw(this,function(se){switch(se.label){case 0:this._editorQueryID++,ce=this._editorQueryID,we=this.autoCompleteLeafs()||this.state.query||"",ot=this.state.variables,Me=this.state.headers,Qe=this.state.shouldPersistHeaders,ze=this.state.operationName,te&&te!==ze&&(ze=te,this.handleEditOperationName(ze)),se.label=1;case 1:return se.trys.push([1,3,,4]),this.setState({isWaitingForResponse:!0,response:void 0,operationName:ze}),this._storage.set("operationName",ze),this._queryHistory?this._queryHistory.onUpdateHistory(we,ot,Me,ze):this._historyStore&&this._historyStore.updateHistory(we,ot,Me,ze),mt={data:{}},[4,this._fetchQuery(we,ot,Me,ze,Qe,function(Ue){var at,ct;if(ce===fe._editorQueryID){var st=Array.isArray(Ue)?Ue:!1;if(!st&&typeof Ue!="string"&&Ue!==null&&"hasNext"in Ue&&(st=[Ue]),st){var Dn={data:mt.data},Ei=pQ((mt==null?void 0:mt.errors)||[],st.map(function(vr){return vr.errors}).flat().filter(Boolean));Ei.length&&(Dn.errors=Ei);try{for(var dn=sh(st),Hn=dn.next();!Hn.done;Hn=dn.next()){var pn=Hn.value,Pi=pn.path,Qr=pn.data,Kt=pn.errors,hn=jne(pn,["path","data","errors"]);if(Pi){if(!Qr)throw new Error("Expected part to contain a data property, but got "+pn);(0,vQ.default)(Dn.data,Pi,Qr,{merge:!0})}else Qr&&(Dn.data=pn.data);mt=Ke(Ke({},Dn),hn)}}catch(vr){at={error:vr}}finally{try{Hn&&!Hn.done&&(ct=dn.return)&&ct.call(dn)}finally{if(at)throw at.error}}fe.setState({isWaitingForResponse:!1,response:t.formatResult(mt)})}else{var zn=t.formatResult(Ue);fe.setState(function(vr){return Ke(Ke({},vr),{tabs:Ke(Ke({},vr.tabs),{tabs:vr.tabs.tabs.map(function(Ro,xn){return xn!==vr.tabs.activeTabIndex?Ro:Ke(Ke({},Ro),{response:zn})})}),isWaitingForResponse:!1,response:zn})},fe.persistTabsState)}}})];case 2:return oe=se.sent(),this.setState({subscription:oe}),[3,4];case 3:return me=se.sent(),this.setState({isWaitingForResponse:!1,response:me.message}),[3,4];case 4:return[2]}})})},_.handleStopQuery=function(){var te=_.state.subscription;_.setState({isWaitingForResponse:!1,subscription:null}),te&&te.unsubscribe()},_.handlePrettifyQuery=function(){var te,ce,we,ot=_.getQueryEditor(),Me=(te=ot==null?void 0:ot.getValue())!==null&&te!==void 0?te:"",Qe=(0,ii.print)((0,ii.parse)(Me));Qe!==Me&&(ot==null||ot.setValue(Qe));var ze=_.getVariableEditor(),mt=(ce=ze==null?void 0:ze.getValue())!==null&&ce!==void 0?ce:"";try{var oe=JSON.stringify(JSON.parse(mt),null,2);oe!==mt&&(ze==null||ze.setValue(oe))}catch(Ue){}var me=_.getHeaderEditor(),fe=(we=me==null?void 0:me.getValue())!==null&&we!==void 0?we:"";try{var se=JSON.stringify(JSON.parse(fe),null,2);se!==fe&&(me==null||me.setValue(se))}catch(Ue){}},_.handleMergeQuery=function(){var te=_.getQueryEditor(),ce=te.getValue();if(!!ce){var we=_.state.documentAST;te.setValue((0,ii.print)(Gy(we,_.state.schema)))}},_.handleEditQuery=ji(100,function(te){var ce=_._updateQueryFacts(te,_.state.operationName,_.state.operations,_.state.schema);if(_.setState(function(we){return Ke(Ke(Ke(Ke({},we),{query:te}),ce),{tabs:Kne(te,we.tabs,ce==null?void 0:ce.operationName)})},_.persistTabsState),_._storage.set("query",te),_.props.onEditQuery)return _.props.onEditQuery(te,ce==null?void 0:ce.documentAST)}),_.handleCopyQuery=function(){var te=_.getQueryEditor(),ce=te&&te.getValue();if(!!ce&&((0,hQ.default)(ce),_.props.onCopyQuery))return _.props.onCopyQuery(ce)},_._updateQueryFacts=function(te,ce,we,ot){var Me=js(ot,te);if(Me){var Qe=ah(we,ce,Me.operations),ze=_.props.onEditOperationName;return ze&&Qe&&ce!==Qe&&ze(Qe),Ke({operationName:Qe},Me)}},_.handleEditVariables=function(te){_.setState(function(ce){return Ke(Ke({},ce),{variables:te,tabs:Bne(te,ce.tabs)})},_.persistTabsState),ji(500,function(){return _._storage.set("variables",te)})(),_.props.onEditVariables&&_.props.onEditVariables(te)},_.handleEditHeaders=function(te){_.setState(function(ce){return Ke(Ke({},ce),{headers:te,tabs:Qne(te,ce.tabs)})},_.persistTabsState),_.props.shouldPersistHeaders&&ji(500,function(){return _._storage.set("headers",te)})(),_.props.onEditHeaders&&_.props.onEditHeaders(te)},_.handleEditOperationName=function(te){var ce=_.props.onEditOperationName;ce&&ce(te)},_.handleHintInformationRender=function(te){te.addEventListener("click",_._onClickHintInformation);var ce;te.addEventListener("DOMNodeRemoved",ce=function(){te.removeEventListener("DOMNodeRemoved",ce),te.removeEventListener("click",_._onClickHintInformation)})},_.handleEditorRunQuery=function(){_._runQueryAtCursor()},_._onClickHintInformation=function(te){if((te==null?void 0:te.currentTarget)&&"className"in te.currentTarget&&te.currentTarget.className==="typeName"){var ce=te.currentTarget.innerHTML,we=_.state.schema;if(we){var ot=we.getType(ce);ot&&(_.setState({docExplorerOpen:!0},function(){_.docExplorerComponent&&_.docExplorerComponent.showDoc(ot)}),ji(500,function(){return _._storage.set("docExplorerOpen",JSON.stringify(_.state.docExplorerOpen))})())}}},_.handleToggleDocs=function(){typeof _.props.onToggleDocs=="function"&&_.props.onToggleDocs(!_.state.docExplorerOpen),_._storage.set("docExplorerOpen",JSON.stringify(!_.state.docExplorerOpen)),_.setState({docExplorerOpen:!_.state.docExplorerOpen})},_.handleToggleHistory=function(){typeof _.props.onToggleHistory=="function"&&_.props.onToggleHistory(!_.state.historyPaneOpen),_._storage.set("historyPaneOpen",JSON.stringify(!_.state.historyPaneOpen)),_.setState({historyPaneOpen:!_.state.historyPaneOpen})},_.handleSelectHistoryQuery=function(te,ce,we,ot){te&&_.handleEditQuery(te),ce&&_.handleEditVariables(ce),we&&_.handleEditHeaders(we),ot&&_.handleEditOperationName(ot)},_.handleResizeStart=function(te){if(!!_._didClickDragBar(te)){te.preventDefault();var ce=te.clientX-uh(te.target),we=function(Me){if(Me.buttons===0)return ot();var Qe=_.editorBarComponent,ze=Me.clientX-uh(Qe)-ce,mt=Qe.clientWidth-ze;_.setState({editorFlex:ze/mt}),ji(500,function(){return _._storage.set("editorFlex",JSON.stringify(_.state.editorFlex))})()},ot=function(){document.removeEventListener("mousemove",we),document.removeEventListener("mouseup",ot),we=null,ot=null};document.addEventListener("mousemove",we),document.addEventListener("mouseup",ot)}},_.handleResetResize=function(){_.setState({editorFlex:1}),_._storage.set("editorFlex",JSON.stringify(_.state.editorFlex))},_.handleDocsResizeStart=function(te){te.preventDefault();var ce=_.state.docExplorerWidth,we=te.clientX-uh(te.target),ot=function(Qe){if(Qe.buttons===0)return Me();var ze=_.graphiqlContainer,mt=Qe.clientX-uh(ze)-we,oe=ze.clientWidth-mt;oe<100?(typeof _.props.onToggleDocs=="function"&&_.props.onToggleDocs(!_.state.docExplorerOpen),_._storage.set("docExplorerOpen",JSON.stringify(_.state.docExplorerOpen)),_.setState({docExplorerOpen:!1})):(_.setState({docExplorerOpen:!0,docExplorerWidth:Math.min(oe,650)}),ji(500,function(){return _._storage.set("docExplorerWidth",JSON.stringify(_.state.docExplorerWidth))})()),_._storage.set("docExplorerOpen",JSON.stringify(_.state.docExplorerOpen))},Me=function(){_.state.docExplorerOpen||(_.setState({docExplorerWidth:ce}),ji(500,function(){return _._storage.set("docExplorerWidth",JSON.stringify(_.state.docExplorerWidth))})()),document.removeEventListener("mousemove",ot),document.removeEventListener("mouseup",Me),ot=null,Me=null};document.addEventListener("mousemove",ot),document.addEventListener("mouseup",Me)},_.handleDocsResetResize=function(){_.setState({docExplorerWidth:gQ}),ji(500,function(){return _._storage.set("docExplorerWidth",JSON.stringify(_.state.docExplorerWidth))})()},_.handleTabClickPropogation=function(te){te.preventDefault(),te.stopPropagation()},_.handleOpenHeaderEditorTab=function(te){_.setState({headerEditorActive:!0,variableEditorActive:!1,secondaryEditorOpen:!0})},_.handleOpenVariableEditorTab=function(te){_.setState({headerEditorActive:!1,variableEditorActive:!0,secondaryEditorOpen:!0})},_.handleSecondaryEditorResizeStart=function(te){te.preventDefault();var ce=!1,we=_.state.secondaryEditorOpen,ot=_.state.secondaryEditorHeight,Me=te.clientY-Qw(te.target),Qe=function(mt){if(mt.buttons===0)return ze();ce=!0;var oe=_.editorBarComponent,me=mt.clientY-Qw(oe)-Me,fe=oe.clientHeight-me;fe<60?_.setState({secondaryEditorOpen:!1,secondaryEditorHeight:ot}):_.setState({secondaryEditorOpen:!0,secondaryEditorHeight:fe}),ji(500,function(){return _._storage.set("secondaryEditorHeight",JSON.stringify(_.state.secondaryEditorHeight))})()},ze=function(){ce||_.setState({secondaryEditorOpen:!we}),document.removeEventListener("mousemove",Qe),document.removeEventListener("mouseup",ze),Qe=null,ze=null};document.addEventListener("mousemove",Qe),document.addEventListener("mouseup",ze)},typeof r.fetcher!="function")throw new TypeError("GraphiQL requires a fetcher function.");_._storage=new HG(r.storage);var k=(l=r.maxHistoryLength)!==null&&l!==void 0?l:20;_._historyStore=new Uy(_._storage,k),_.componentIsMounted=!1;var T=r.query!==void 0?r.query:_._storage.get("query")?_._storage.get("query"):r.defaultQuery!==void 0?r.defaultQuery:Vne,S=js(r.schema,T),m=r.variables!==void 0?r.variables:_._storage.get("variables"),w=r.headers!==void 0?r.headers:_._storage.get("headers"),x=r.operationName!==void 0?r.operationName:ah(void 0,_._storage.get("operationName"),S&&S.operations),L=r.docExplorerOpen||!1;_._storage.get("docExplorerOpen")&&(L=_._storage.get("docExplorerOpen")==="true");var O;r.defaultVariableEditorOpen!==void 0?O=r.defaultVariableEditorOpen:r.defaultSecondaryEditorOpen!==void 0?O=r.defaultSecondaryEditorOpen:O=Boolean(m||w);var R=(d=r.headerEditorEnabled)!==null&&d!==void 0?d:!0,M=(h=r.shouldPersistHeaders)!==null&&h!==void 0?h:!1,q=r.schema,z=r.response,B=void 0;if(q&&!_.props.dangerouslyAssumeSchemaIsValid){var Q=(0,Ky.validateSchema)(q);Q&&Q.length>0&&(z=t.formatError(Q),q=void 0,B=Q)}_._introspectionQuery=(0,ii.getIntrospectionQuery)({schemaDescription:(v=r.schemaDescription)!==null&&v!==void 0?v:void 0,inputValueDeprecation:(y=r.inputValueDeprecation)!==null&&y!==void 0?y:void 0}),_._introspectionQueryName=(b=r.introspectionQueryName)!==null&&b!==void 0?b:JG,_._introspectionQuerySansSubscriptions=_._introspectionQuery.replace("subscriptionType { name }","");var P=Uu({query:T,variables:m,headers:w}),he={id:By(),hash:P,title:x!=null?x:"",query:T,variables:m,headers:w,operationName:x,response:void 0},xe=null;_.props.tabs&&(xe=_._storage.get("tabState"));var ge;if(xe===null)ge={activeTabIndex:0,tabs:[he]};else{ge=JSON.parse(xe);var Fe=!1;try{for(var Le=sh(ge.tabs),He=Le.next();!He.done;He=Le.next()){var Xe=He.value;Xe.query=Xe.query,Xe.variables=Xe.variables,Xe.headers=M?Xe.headers:void 0,Xe.response=void 0,Xe.operationName=void 0,Xe.id=By(),Xe.hash=Uu(Xe),Xe.hash===P&&(Fe=!0)}}catch(te){n={error:te}}finally{try{He&&!He.done&&(i=Le.return)&&i.call(Le)}finally{if(n)throw n.error}}Fe===!1&&(ge.tabs.push(he),ge.activeTabIndex=ge.tabs.length-1)}var Ve=ge.tabs[0],At=0;try{for(var Ot=sh(ge.tabs),Ie=Ot.next();!Ie.done;Ie=Ot.next()){var Xe=Ie.value;if(Xe.hash===P){ge.activeTabIndex=At,Ve=Xe;break}At++}}catch(te){o={error:te}}finally{try{Ie&&!Ie.done&&(s=Ot.return)&&s.call(Ot)}finally{if(o)throw o.error}}return _.state=Ke({tabs:ge,schema:q,query:Ve==null?void 0:Ve.query,variables:Ve==null?void 0:Ve.variables,headers:Ve==null?void 0:Ve.headers,operationName:Ve==null?void 0:Ve.operationName,response:(D=Ve==null?void 0:Ve.response)!==null&&D!==void 0?D:z,docExplorerOpen:L,schemaErrors:B,editorFlex:Number(_._storage.get("editorFlex"))||1,secondaryEditorOpen:O,secondaryEditorHeight:Number(_._storage.get("secondaryEditorHeight"))||200,variableEditorActive:_._storage.get("variableEditorActive")==="true"||r.headerEditorEnabled?_._storage.get("headerEditorActive")!=="true":!0,headerEditorActive:_._storage.get("headerEditorActive")==="true",headerEditorEnabled:R,shouldPersistHeaders:M,historyPaneOpen:_._storage.get("historyPaneOpen")==="true"||!1,docExplorerWidth:Number(_._storage.get("docExplorerWidth"))||gQ,isWaitingForResponse:!1,subscription:null,maxHistoryLength:k},S),_.state.query&&_.handleEditQuery(_.state.query),_}return t.formatResult=function(r){return JSON.stringify(r,null,2)},t.prototype.componentDidMount=function(){this.componentIsMounted=!0,this.state.schema===void 0&&this.fetchSchema(),this.codeMirrorSizer=new KG,typeof window!="undefined"&&(window.g=this)},t.prototype.UNSAFE_componentWillMount=function(){this.componentIsMounted=!1},t.prototype.UNSAFE_componentWillReceiveProps=function(r){var n=this,i=this.state.schema,o=this.state.query,s=this.state.variables,l=this.state.headers,d=this.state.operationName,h=this.state.response;if(r.schema!==void 0&&(i=r.schema),r.query!==void 0&&this.props.query!==r.query&&(o=r.query),r.variables!==void 0&&this.props.variables!==r.variables&&(s=r.variables),r.headers!==void 0&&this.props.headers!==r.headers&&(l=r.headers),r.operationName!==void 0&&(d=r.operationName),r.response!==void 0&&(h=r.response),o&&i&&(i!==this.state.schema||o!==this.state.query||d!==this.state.operationName)){if(!this.props.dangerouslyAssumeSchemaIsValid){var v=(0,Ky.validateSchema)(i);v&&v.length>0&&(this.handleSchemaErrors(v),i=void 0)}var y=this._updateQueryFacts(o,d,this.state.operations,i);y!==void 0&&(d=y.operationName,this.setState(y))}r.schema===void 0&&r.fetcher!==this.props.fetcher&&(i=void 0),this._storage.set("operationName",d),this.setState({schema:i,query:o,variables:s,headers:l,operationName:d,response:h},function(){n.state.schema===void 0&&(n.docExplorerComponent&&n.docExplorerComponent.reset(),n.fetchSchema())})},t.prototype.componentDidUpdate=function(){this.codeMirrorSizer.updateSizes([this.queryEditorComponent,this.variableEditorComponent,this.headerEditorComponent,this.resultComponent])},t.prototype.render=function(){var r=this,n,i=ut.default.Children.toArray(this.props.children),o=oh(i,function(k){return Ww(k,t.Logo)})||ut.default.createElement(t.Logo,null),s=oh(i,function(k){return Ww(k,t.Toolbar)})||ut.default.createElement(t.Toolbar,null,ut.default.createElement(Lu,{onClick:this.handlePrettifyQuery,title:"Prettify Query (Shift-Ctrl-P)",label:"Prettify"}),ut.default.createElement(Lu,{onClick:this.handleMergeQuery,title:"Merge Query (Shift-Ctrl-M)",label:"Merge"}),ut.default.createElement(Lu,{onClick:this.handleCopyQuery,title:"Copy Query (Shift-Ctrl-C)",label:"Copy"}),ut.default.createElement(Lu,{onClick:this.handleToggleHistory,title:"Show History",label:"History"}),((n=this.props.toolbar)===null||n===void 0?void 0:n.additionalContent)?this.props.toolbar.additionalContent:null),l=oh(i,function(k){return Ww(k,t.Footer)}),d={WebkitFlex:this.state.editorFlex,flex:this.state.editorFlex},h={display:"block",width:this.state.docExplorerWidth},v="docExplorerWrap"+(this.state.docExplorerWidth<200?" doc-explorer-narrow":""),y={display:this.state.historyPaneOpen?"block":"none",width:"230px",zIndex:7},b=this.state.secondaryEditorOpen,D={height:b?this.state.secondaryEditorHeight:void 0},_=this.state.tabs;return ut.default.createElement("div",{ref:function(k){r.graphiqlContainer=k},"data-testid":"graphiql-container",className:"graphiql-container"},this.state.historyPaneOpen&&ut.default.createElement("div",{className:"historyPaneWrap",style:y},ut.default.createElement(BG,{ref:function(k){r._queryHistory=k},operationName:this.state.operationName,query:this.state.query,variables:this.state.variables,onSelectQuery:this.handleSelectHistoryQuery,storage:this._storage,maxHistoryLength:this.state.maxHistoryLength,queryID:this._editorQueryID},ut.default.createElement("button",{className:"docExplorerHide",onClick:this.handleToggleHistory,"aria-label":"Close History"},"\u2715"))),ut.default.createElement("div",{className:"editorWrap"},ut.default.createElement("div",{className:"topBarWrap"},this.props.beforeTopBarContent,ut.default.createElement("div",{className:"topBar"},o,ut.default.createElement(lF,{isRunning:Boolean(this.state.subscription),onRun:this.handleRunQuery,onStop:this.handleStopQuery,operations:this.state.operations}),s),!this.state.docExplorerOpen&&ut.default.createElement("button",{className:"docExplorerShow",onClick:this.handleToggleDocs,"aria-label":"Open Documentation Explorer"},"Docs")),this.props.tabs?ut.default.createElement(fQ,{tabsProps:{"aria-label":"Select active operation"}},_.tabs.map(function(k,T){return ut.default.createElement(lQ,{key:k.id,isActive:T===_.activeTabIndex,title:k.title,isCloseable:_.tabs.length>1,onSelect:r.makeHandleOnSelectTab(T),onClose:r.makeHandleOnCloseTab(T),tabProps:{"aria-controls":"sessionWrap",id:"session-tab-"+T}})}),ut.default.createElement(cQ,{onClick:this.handleOnAddTab})):null,ut.default.createElement("div",{ref:function(k){r.editorBarComponent=k},role:"tabpanel",id:"sessionWrap",className:"editorBar","aria-labelledby":"session-tab-"+_.activeTabIndex,onDoubleClick:this.handleResetResize,onMouseDown:this.handleResizeStart},ut.default.createElement("div",{className:"queryWrap",style:d},ut.default.createElement(wy,{ref:function(k){r.queryEditorComponent=k},schema:this.state.schema,validationRules:this.props.validationRules,value:this.state.query,onEdit:this.handleEditQuery,onHintInformationRender:this.handleHintInformationRender,onClickReference:this.handleClickReference,onCopyQuery:this.handleCopyQuery,onPrettifyQuery:this.handlePrettifyQuery,onMergeQuery:this.handleMergeQuery,onRunQuery:this.handleEditorRunQuery,editorTheme:this.props.editorTheme,readOnly:this.props.readOnly,externalFragments:this.props.externalFragments}),ut.default.createElement("section",{className:"variable-editor secondary-editor",style:D,"aria-label":this.state.variableEditorActive?"Query Variables":"Request Headers"},ut.default.createElement("div",{className:"secondary-editor-title variable-editor-title",id:"secondary-editor-title",style:{cursor:b?"row-resize":"n-resize"},onMouseDown:this.handleSecondaryEditorResizeStart},ut.default.createElement("div",{className:"variable-editor-title-text"+(this.state.variableEditorActive?" active":""),onClick:this.handleOpenVariableEditorTab,onMouseDown:this.handleTabClickPropogation},"Query Variables"),this.state.headerEditorEnabled&&ut.default.createElement("div",{style:{marginLeft:"20px"},className:"variable-editor-title-text"+(this.state.headerEditorActive?" active":""),onClick:this.handleOpenHeaderEditorTab,onMouseDown:this.handleTabClickPropogation},"Request Headers")),ut.default.createElement(Ry,{ref:function(k){r.variableEditorComponent=k},value:this.state.variables,variableToType:this.state.variableToType,onEdit:this.handleEditVariables,onHintInformationRender:this.handleHintInformationRender,onPrettifyQuery:this.handlePrettifyQuery,onMergeQuery:this.handleMergeQuery,onRunQuery:this.handleEditorRunQuery,editorTheme:this.props.editorTheme,readOnly:this.props.readOnly,active:this.state.variableEditorActive}),this.state.headerEditorEnabled&&ut.default.createElement(Dw,{ref:function(k){r.headerEditorComponent=k},value:this.state.headers,onEdit:this.handleEditHeaders,onHintInformationRender:this.handleHintInformationRender,onPrettifyQuery:this.handlePrettifyQuery,onMergeQuery:this.handleMergeQuery,onRunQuery:this.handleEditorRunQuery,editorTheme:this.props.editorTheme,readOnly:this.props.readOnly,active:this.state.headerEditorActive}))),ut.default.createElement("div",{className:"resultWrap"},this.state.isWaitingForResponse&&ut.default.createElement("div",{className:"spinner-container"},ut.default.createElement("div",{className:"spinner"})),ut.default.createElement(Cw,{registerRef:function(k){r.resultViewerElement=k},ref:function(k){r.resultComponent=k},value:this.state.response,editorTheme:this.props.editorTheme,ResultsTooltip:this.props.ResultsTooltip,ImagePreview:fF}),l))),this.state.docExplorerOpen&&ut.default.createElement("div",{className:v,style:h},ut.default.createElement("div",{className:"docExplorerResizer",onDoubleClick:this.handleDocsResetResize,onMouseDown:this.handleDocsResizeStart}),ut.default.createElement(qw,{ref:function(k){r.docExplorerComponent=k},schemaErrors:this.state.schemaErrors,schema:this.state.schema},ut.default.createElement("button",{className:"docExplorerHide",onClick:this.handleToggleDocs,"aria-label":"Close Documentation Explorer"},"\u2715"))))},t.prototype.getQueryEditor=function(){if(this.queryEditorComponent)return this.queryEditorComponent.getCodeMirror()},t.prototype.getVariableEditor=function(){return this.variableEditorComponent?this.variableEditorComponent.getCodeMirror():null},t.prototype.getHeaderEditor=function(){return this.headerEditorComponent?this.headerEditorComponent.getCodeMirror():null},t.prototype.refresh=function(){this.queryEditorComponent&&this.queryEditorComponent.getCodeMirror().refresh(),this.variableEditorComponent&&this.variableEditorComponent.getCodeMirror().refresh(),this.headerEditorComponent&&this.headerEditorComponent.getCodeMirror().refresh(),this.resultComponent&&this.resultComponent.getCodeMirror().refresh()},t.prototype.autoCompleteLeafs=function(){var r=Gw(this.state.schema,this.state.query,this.props.getDefaultFieldNames),n=r.insertions,i=r.result;if(n&&n.length>0){var o=this.getQueryEditor();o&&o.operation(function(){var s=o.getCursor(),l=o.indexFromPos(s);o.setValue(i||"");var d=0,h=n.map(function(y){var b=y.index,D=y.string;return o.markText(o.posFromIndex(b+d),o.posFromIndex(b+(d+=D.length)),{className:"autoInsertedLeaf",clearOnEnter:!0,title:"Automatically added leaf fields"})});setTimeout(function(){return h.forEach(function(y){return y.clear()})},7e3);var v=l;n.forEach(function(y){var b=y.index,D=y.string;b2?i.headers=JSON.parse(this.state.headers):this.props.headers&&(i.headers=JSON.parse(this.props.headers))}catch(s){this.setState({response:"Introspection failed as headers are invalid."});return}var o=wQ(n({query:this._introspectionQuery,operationName:this._introspectionQueryName},i));if(!SQ(o)){this.setState({response:"Fetcher did not return a Promise for introspection."});return}o.then(function(s){if(typeof s!="string"&&"data"in s)return s;var l=wQ(n({query:r._introspectionQuerySansSubscriptions,operationName:r._introspectionQueryName},i));if(!SQ(o))throw new Error("Fetcher did not return a Promise for introspection.");return l}).then(function(s){var l,d;if(r.state.schema===void 0)if(s&&s.data&&"__schema"in(s==null?void 0:s.data)){var h=(0,ii.buildClientSchema)(s.data);if(!r.props.dangerouslyAssumeSchemaIsValid){var v=(0,Ky.validateSchema)(h);v&&v.length>0&&(h=void 0,r.handleSchemaErrors(v))}if(h){var y=js(h,r.state.query);r.safeSetState(Ke(Ke({schema:h},y),{schemaErrors:void 0})),(d=(l=r.props).onSchemaChange)===null||d===void 0||d.call(l,h)}}else{var b=typeof s=="string"?s:t.formatResult(s);r.handleSchemaErrors([b])}}).catch(function(s){r.handleSchemaErrors([s])})},t.prototype.handleSchemaErrors=function(r){this.safeSetState({response:r?t.formatError(r):void 0,schema:void 0,schemaErrors:r})},t.prototype._fetchQuery=function(r,n,i,o,s,l){return Hw(this,void 0,void 0,function(){var d,h,v,y,b,D,_=this;return zw(this,function(k){d=this.props.fetcher,h=null,v=null;try{h=n&&n.trim()!==""?JSON.parse(n):null}catch(T){throw new Error("Variables are invalid JSON: "+T.message+".")}if(typeof h!="object")throw new Error("Variables are not a JSON object.");try{v=i&&i.trim()!==""?JSON.parse(i):null}catch(T){throw new Error("Headers are invalid JSON: "+T.message+".")}if(typeof v!="object")throw new Error("Headers are not a JSON object.");return this.props.externalFragments&&(y=new Map,Array.isArray(this.props.externalFragments)?this.props.externalFragments.forEach(function(T){y.set(T.name.value,T)}):(0,ii.visit)((0,ii.parse)(this.props.externalFragments,{}),{FragmentDefinition:function(T){y.set(T.name.value,T)}}),b=qm(this.state.documentAST,y),b.length>0&&(r+=` +`+b.map(function(T){return(0,ii.print)(T)}).join(` +`))),D=d({query:r,variables:h,operationName:o},{headers:v,shouldPersistHeaders:s,documentAST:this.state.documentAST}),[2,Promise.resolve(D).then(function(T){if(kQ(T)){var S=T.subscribe({next:l,error:function(m){_.safeSetState({isWaitingForResponse:!1,response:m?t.formatError(m):void 0,subscription:null})},complete:function(){_.safeSetState({isWaitingForResponse:!1,subscription:null})}});return S}else return OQ(T)?(function(){return Hw(_,void 0,void 0,function(){var m,w,x,L,O,R,M;return zw(this,function(q){switch(q.label){case 0:q.trys.push([0,13,,14]),q.label=1;case 1:q.trys.push([1,6,7,12]),m=Pne(T),q.label=2;case 2:return[4,m.next()];case 3:if(w=q.sent(),!!w.done)return[3,5];x=w.value,l(x),q.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return L=q.sent(),R={error:L},[3,12];case 7:return q.trys.push([7,,10,11]),w&&!w.done&&(M=m.return)?[4,M.call(m)]:[3,9];case 8:q.sent(),q.label=9;case 9:return[3,11];case 10:if(R)throw R.error;return[7];case 11:return[7];case 12:return this.safeSetState({isWaitingForResponse:!1,subscription:null}),[3,14];case 13:return O=q.sent(),this.safeSetState({isWaitingForResponse:!1,response:O?t.formatError(O):void 0,subscription:null}),[3,14];case 14:return[2]}})})}(),{unsubscribe:function(){var m,w;return(w=(m=T[Symbol.asyncIterator]()).return)===null||w===void 0?void 0:w.call(m)}}):(l(T),null)}).catch(function(T){return _.safeSetState({isWaitingForResponse:!1,response:T?t.formatError(T):void 0}),null})]})})},t.prototype._runQueryAtCursor=function(){if(this.state.subscription){this.handleStopQuery();return}var r,n=this.state.operations;if(n){var i=this.getQueryEditor();if(i&&i.hasFocus())for(var o=i.getCursor(),s=i.indexFromPos(o),l=0;l=s){r=d.name&&d.name.value;break}}}this.handleRunQuery(r)},t.prototype._didClickDragBar=function(r){if(r.button!==0||r.ctrlKey)return!1;var n=r.target;if(n.className.indexOf("CodeMirror-gutter")!==0)return!1;for(var i=this.resultViewerElement;n;){if(n===i)return!0;n=n.parentNode}return!1},t.formatError=function(r){return Array.isArray(r)?mQ({errors:r.map(function(n){return yQ(n)})}):mQ({errors:yQ(r)})},t.Logo=TQ,t.Toolbar=_Q,t.Footer=EQ,t.QueryEditor=wy,t.VariableEditor=Ry,t.HeaderEditor=Dw,t.ResultViewer=Cw,t.Button=Lu,t.ToolbarButton=Lu,t.Group=rO,t.Menu=nO,t.MenuItem=iO,t}(ut.default.Component);function TQ(e){return ut.default.createElement("div",{className:"title"},e.children||ut.default.createElement("span",null,"Graph",ut.default.createElement("em",null,"i"),"QL"))}TQ.displayName="GraphiQLLogo";function _Q(e){return ut.default.createElement("div",{className:"toolbar",role:"toolbar","aria-label":"Editor Commands"},e.children)}_Q.displayName="GraphiQLToolbar";function EQ(e){return ut.default.createElement("div",{className:"footer"},e.children)}EQ.displayName="GraphiQLFooter";var Vne=`# Welcome to GraphiQL # # GraphiQL is an in-browser tool for writing, validating, and # testing GraphQL queries. @@ -278,13 +282,44 @@ b`.split(/\n/).length!=3?function(i){for(var u=0,f=[],c=i.length;u<=c;){var p=i. # Auto Complete: Ctrl-Space (or just start typing) # -`;function e3(e){return typeof e=="object"&&typeof e.then=="function"}function Aee(e){return new Promise(function(t,r){var n=e.subscribe({next:function(a){t(a),n.unsubscribe()},error:r,complete:function(){r(new Error("no value resolved"))}})})}function t3(e){return typeof e=="object"&&"subscribe"in e&&typeof e.subscribe=="function"}function r3(e){return typeof e=="object"&&e!==null&&(e[Symbol.toStringTag]==="AsyncGenerator"||Symbol.asyncIterator in e)}function Nee(e){return new Promise(function(t,r){var n,a=(n=("return"in e?e:e[Symbol.asyncIterator]()).return)===null||n===void 0?void 0:n.bind(e),o=("next"in e?e:e[Symbol.asyncIterator]()).next.bind(e);o().then(function(s){t(s.value),a==null||a()}).catch(function(s){r(s)})})}function n3(e){return Promise.resolve(e).then(function(t){return r3(t)?Nee(t):t3(t)?Aee(t):t})}function H1(e,t){var r;return((r=e==null?void 0:e.type)===null||r===void 0?void 0:r.displayName)&&e.type.displayName===t.displayName?!0:e.type===t}var Vi=Ye(Bt()),Lee=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[o]=a[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),z1=function(){return z1=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0?t.tabs.activeTabIndex-1:0,n=Ke(Ke({},t.tabs),{activeTabIndex:r,tabs:t.tabs.tabs.filter(function(o,s){return e!==s})}),i=n.tabs[r];return Ke(Ke({},t),{query:i.query,variables:i.variables,operationName:i.operationName,headers:i.headers,response:i.response,tabs:n})}function Wne(e){var t=e.tabs.activeTabIndex,r={id:By(),title:"",headers:"",variables:"",query:"",operationName:"",response:"",hash:Uu({query:"",variables:"",headers:""})},n=e.tabs.tabs.map(function(i,o){return o!==t?i:Ke(Ke({},i),{headers:e.headers,variables:e.variables,query:e.query,operationName:e.operationName,response:e.response})});return Ke(Ke({},e),{headers:r.headers,variables:r.variables,query:r.query,operationName:r.operationName,response:r.response,tabs:Ke(Ke({},e.tabs),{activeTabIndex:e.tabs.tabs.length,tabs:pQ(n,[r])})})}var oa=Ee(zt()),Yne=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),Yw=function(){return Yw=Object.assign||function(e){for(var t,r=1,n=arguments.length;r + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * is-primitive + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * isobject + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ +/*! + * set-value + * + * Copyright (c) Jon Schlinkert (https://github.com/jonschlinkert). + * Released under the MIT License. + */ /** @license React v0.20.2 * scheduler.production.min.js * diff --git a/netbox/project-static/dist/graphiql.js.map b/netbox/project-static/dist/graphiql.js.map index fd9688c34..23c20b9a4 100644 --- a/netbox/project-static/dist/graphiql.js.map +++ b/netbox/project-static/dist/graphiql.js.map @@ -1,6 +1,6 @@ { "version": 3, - "sources": ["../node_modules/object-assign/index.js", "../node_modules/react/cjs/react.production.min.js", "../node_modules/react/index.js", "../node_modules/scheduler/cjs/scheduler.production.min.js", "../node_modules/scheduler/index.js", "../node_modules/react-dom/cjs/react-dom.production.min.js", "../node_modules/react-dom/index.js", "../node_modules/graphql/version.js", "../node_modules/graphql/jsutils/isPromise.js", "../node_modules/graphql/jsutils/isObjectLike.js", "../node_modules/graphql/polyfills/symbols.js", "../node_modules/graphql/language/location.js", "../node_modules/graphql/language/printLocation.js", "../node_modules/graphql/error/GraphQLError.js", "../node_modules/graphql/error/syntaxError.js", "../node_modules/graphql/language/kinds.js", "../node_modules/graphql/jsutils/invariant.js", "../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js", "../node_modules/graphql/jsutils/defineInspect.js", "../node_modules/graphql/language/ast.js", "../node_modules/graphql/language/tokenKind.js", "../node_modules/graphql/jsutils/inspect.js", "../node_modules/graphql/jsutils/devAssert.js", "../node_modules/graphql/jsutils/instanceOf.js", "../node_modules/graphql/language/source.js", "../node_modules/graphql/language/directiveLocation.js", "../node_modules/graphql/language/blockString.js", "../node_modules/graphql/language/lexer.js", "../node_modules/graphql/language/parser.js", "../node_modules/graphql/language/visitor.js", "../node_modules/graphql/polyfills/find.js", "../node_modules/graphql/polyfills/objectValues.js", "../node_modules/graphql/error/locatedError.js", "../node_modules/graphql/utilities/assertValidName.js", "../node_modules/graphql/polyfills/objectEntries.js", "../node_modules/graphql/jsutils/keyMap.js", "../node_modules/graphql/jsutils/mapValue.js", "../node_modules/graphql/jsutils/toObjMap.js", "../node_modules/graphql/jsutils/keyValMap.js", "../node_modules/graphql/jsutils/didYouMean.js", "../node_modules/graphql/jsutils/identityFunc.js", "../node_modules/graphql/jsutils/naturalCompare.js", "../node_modules/graphql/jsutils/suggestionList.js", "../node_modules/graphql/language/printer.js", "../node_modules/graphql/utilities/valueFromASTUntyped.js", "../node_modules/graphql/type/definition.js", "../node_modules/graphql/utilities/typeComparators.js", "../node_modules/graphql/polyfills/arrayFrom.js", "../node_modules/graphql/polyfills/isFinite.js", "../node_modules/graphql/jsutils/safeArrayFrom.js", "../node_modules/graphql/polyfills/isInteger.js", "../node_modules/graphql/type/scalars.js", "../node_modules/graphql/utilities/astFromValue.js", "../node_modules/graphql/type/introspection.js", "../node_modules/graphql/type/directives.js", "../node_modules/graphql/type/schema.js", "../node_modules/graphql/type/validate.js", "../node_modules/graphql/utilities/typeFromAST.js", "../node_modules/graphql/utilities/TypeInfo.js", "../node_modules/graphql/language/predicates.js", "../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.js", "../node_modules/graphql/validation/rules/UniqueOperationNamesRule.js", "../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js", "../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.js", "../node_modules/graphql/validation/rules/KnownTypeNamesRule.js", "../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.js", "../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.js", "../node_modules/graphql/validation/rules/ScalarLeafsRule.js", "../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.js", "../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.js", "../node_modules/graphql/validation/rules/KnownFragmentNamesRule.js", "../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.js", "../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js", "../node_modules/graphql/validation/rules/NoFragmentCyclesRule.js", "../node_modules/graphql/validation/rules/UniqueVariableNamesRule.js", "../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.js", "../node_modules/graphql/validation/rules/NoUnusedVariablesRule.js", "../node_modules/graphql/validation/rules/KnownDirectivesRule.js", "../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js", "../node_modules/graphql/validation/rules/KnownArgumentNamesRule.js", "../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.js", "../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.js", "../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.js", "../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.js", "../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js", "../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.js", "../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.js", "../node_modules/graphql/validation/rules/UniqueOperationTypesRule.js", "../node_modules/graphql/validation/rules/UniqueTypeNamesRule.js", "../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.js", "../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.js", "../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.js", "../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.js", "../node_modules/graphql/validation/specifiedRules.js", "../node_modules/graphql/validation/ValidationContext.js", "../node_modules/graphql/validation/validate.js", "../node_modules/graphql/jsutils/memoize3.js", "../node_modules/graphql/jsutils/promiseReduce.js", "../node_modules/graphql/jsutils/promiseForObject.js", "../node_modules/graphql/jsutils/Path.js", "../node_modules/graphql/utilities/getOperationRootType.js", "../node_modules/graphql/jsutils/printPathArray.js", "../node_modules/graphql/utilities/valueFromAST.js", "../node_modules/graphql/utilities/coerceInputValue.js", "../node_modules/graphql/execution/values.js", "../node_modules/graphql/execution/execute.js", "../node_modules/graphql/graphql.js", "../node_modules/graphql/type/index.js", "../node_modules/graphql/language/index.js", "../node_modules/graphql/execution/index.js", "../node_modules/graphql/jsutils/isAsyncIterable.js", "../node_modules/graphql/subscription/mapAsyncIterator.js", "../node_modules/graphql/subscription/subscribe.js", "../node_modules/graphql/subscription/index.js", "../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js", "../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js", "../node_modules/graphql/validation/index.js", "../node_modules/graphql/error/formatError.js", "../node_modules/graphql/error/index.js", "../node_modules/graphql/utilities/getIntrospectionQuery.js", "../node_modules/graphql/utilities/getOperationAST.js", "../node_modules/graphql/utilities/introspectionFromSchema.js", "../node_modules/graphql/utilities/buildClientSchema.js", "../node_modules/graphql/utilities/extendSchema.js", "../node_modules/graphql/utilities/buildASTSchema.js", "../node_modules/graphql/utilities/lexicographicSortSchema.js", "../node_modules/graphql/utilities/printSchema.js", "../node_modules/graphql/utilities/concatAST.js", "../node_modules/graphql/utilities/separateOperations.js", "../node_modules/graphql/utilities/stripIgnoredCharacters.js", "../node_modules/graphql/utilities/findBreakingChanges.js", "../node_modules/graphql/utilities/findDeprecatedUsages.js", "../node_modules/graphql/utilities/index.js", "../node_modules/graphql/index.js", "../node_modules/toggle-selection/index.js", "../node_modules/copy-to-clipboard/index.js", "../node_modules/nullthrows/nullthrows.js", "../node_modules/markdown-it/lib/common/entities.js", "../node_modules/uc.micro/categories/P/regex.js", "../node_modules/mdurl/encode.js", "../node_modules/mdurl/decode.js", "../node_modules/mdurl/format.js", "../node_modules/mdurl/parse.js", "../node_modules/mdurl/index.js", "../node_modules/uc.micro/properties/Any/regex.js", "../node_modules/uc.micro/categories/Cc/regex.js", "../node_modules/uc.micro/categories/Cf/regex.js", "../node_modules/uc.micro/categories/Z/regex.js", "../node_modules/uc.micro/index.js", "../node_modules/markdown-it/lib/common/utils.js", "../node_modules/markdown-it/lib/helpers/parse_link_label.js", "../node_modules/markdown-it/lib/helpers/parse_link_destination.js", "../node_modules/markdown-it/lib/helpers/parse_link_title.js", "../node_modules/markdown-it/lib/helpers/index.js", "../node_modules/markdown-it/lib/renderer.js", "../node_modules/markdown-it/lib/ruler.js", "../node_modules/markdown-it/lib/rules_core/normalize.js", "../node_modules/markdown-it/lib/rules_core/block.js", "../node_modules/markdown-it/lib/rules_core/inline.js", "../node_modules/markdown-it/lib/rules_core/linkify.js", "../node_modules/markdown-it/lib/rules_core/replacements.js", "../node_modules/markdown-it/lib/rules_core/smartquotes.js", "../node_modules/markdown-it/lib/token.js", "../node_modules/markdown-it/lib/rules_core/state_core.js", "../node_modules/markdown-it/lib/parser_core.js", "../node_modules/markdown-it/lib/rules_block/table.js", "../node_modules/markdown-it/lib/rules_block/code.js", "../node_modules/markdown-it/lib/rules_block/fence.js", "../node_modules/markdown-it/lib/rules_block/blockquote.js", "../node_modules/markdown-it/lib/rules_block/hr.js", "../node_modules/markdown-it/lib/rules_block/list.js", "../node_modules/markdown-it/lib/rules_block/reference.js", "../node_modules/markdown-it/lib/rules_block/heading.js", "../node_modules/markdown-it/lib/rules_block/lheading.js", "../node_modules/markdown-it/lib/common/html_blocks.js", "../node_modules/markdown-it/lib/common/html_re.js", "../node_modules/markdown-it/lib/rules_block/html_block.js", "../node_modules/markdown-it/lib/rules_block/paragraph.js", "../node_modules/markdown-it/lib/rules_block/state_block.js", "../node_modules/markdown-it/lib/parser_block.js", "../node_modules/markdown-it/lib/rules_inline/text.js", "../node_modules/markdown-it/lib/rules_inline/newline.js", "../node_modules/markdown-it/lib/rules_inline/escape.js", "../node_modules/markdown-it/lib/rules_inline/backticks.js", "../node_modules/markdown-it/lib/rules_inline/strikethrough.js", "../node_modules/markdown-it/lib/rules_inline/emphasis.js", "../node_modules/markdown-it/lib/rules_inline/link.js", "../node_modules/markdown-it/lib/rules_inline/image.js", "../node_modules/markdown-it/lib/rules_inline/autolink.js", "../node_modules/markdown-it/lib/rules_inline/html_inline.js", "../node_modules/markdown-it/lib/rules_inline/entity.js", "../node_modules/markdown-it/lib/rules_inline/balance_pairs.js", "../node_modules/markdown-it/lib/rules_inline/text_collapse.js", "../node_modules/markdown-it/lib/rules_inline/state_inline.js", "../node_modules/markdown-it/lib/parser_inline.js", "../node_modules/linkify-it/lib/re.js", "../node_modules/linkify-it/index.js", "../node_modules/punycode/punycode.js", "../node_modules/markdown-it/lib/presets/default.js", "../node_modules/markdown-it/lib/presets/zero.js", "../node_modules/markdown-it/lib/presets/commonmark.js", "../node_modules/markdown-it/lib/index.js", "../node_modules/markdown-it/index.js", "../node_modules/codemirror/lib/codemirror.js", "../node_modules/codemirror/addon/hint/show-hint.js", "../node_modules/codemirror/addon/comment/comment.js", "../node_modules/codemirror/addon/edit/matchbrackets.js", "../node_modules/codemirror/addon/edit/closebrackets.js", "../node_modules/codemirror/addon/fold/foldcode.js", "../node_modules/codemirror/addon/fold/foldgutter.js", "../node_modules/codemirror/addon/fold/brace-fold.js", "../node_modules/codemirror/addon/search/searchcursor.js", "../node_modules/codemirror/addon/dialog/dialog.js", "../node_modules/codemirror/addon/search/search.js", "../node_modules/codemirror/addon/search/jump-to-line.js", "../node_modules/codemirror/addon/lint/lint.js", "../node_modules/codemirror/keymap/sublime.js", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/autocompleteUtils.ts", "../node_modules/vscode-languageserver-types/lib/umd/main.js", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/CharacterStream.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/RuleHelpers.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/Rules.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/onlineParser.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/types.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/index.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getAutocompleteSuggestions.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/fragmentDependencies.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/getVariablesJSONSchema.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/getASTNodeAtPosition.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/Range.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/validateWithCustomRules.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/collectVariables.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/getOperationFacts.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/index.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getDefinition.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getDiagnostics.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getOutline.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getHoverInformation.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/index.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/types.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/index.ts", "../node_modules/codemirror-graphql/src/hint.ts", "../node_modules/codemirror-graphql/src/lint.ts", "../node_modules/codemirror-graphql/src/utils/forEachState.ts", "../node_modules/codemirror-graphql/src/utils/getTypeInfo.ts", "../node_modules/codemirror-graphql/src/utils/SchemaReference.ts", "../node_modules/codemirror-graphql/src/utils/info-addon.ts", "../node_modules/codemirror-graphql/src/info.ts", "../node_modules/codemirror-graphql/src/utils/jump-addon.ts", "../node_modules/codemirror-graphql/src/jump.ts", "../node_modules/codemirror-graphql/src/utils/mode-indent.ts", "../node_modules/codemirror-graphql/src/utils/mode-factory.ts", "../node_modules/codemirror-graphql/src/mode.ts", "../node_modules/codemirror-graphql/src/utils/hintList.ts", "../node_modules/codemirror-graphql/src/variables/hint.ts", "../node_modules/codemirror-graphql/src/utils/jsonParse.ts", "../node_modules/codemirror-graphql/src/variables/lint.ts", "../node_modules/codemirror-graphql/src/variables/mode.ts", "../node_modules/codemirror/mode/javascript/javascript.js", "../node_modules/codemirror-graphql/src/results/mode.ts", "../node_modules/backo2/index.js", "../node_modules/eventemitter3/index.js", "../node_modules/subscriptions-transport-ws/src/utils/is-string.ts", "../node_modules/subscriptions-transport-ws/src/utils/is-object.ts", "../node_modules/symbol-observable/lib/ponyfill.js", "../node_modules/symbol-observable/lib/index.js", "../node_modules/subscriptions-transport-ws/src/protocol.ts", "../node_modules/subscriptions-transport-ws/src/defaults.ts", "../node_modules/subscriptions-transport-ws/src/message-types.ts", "../node_modules/subscriptions-transport-ws/src/client.ts", "../netbox-graphiql/index.ts", "../node_modules/graphiql/src/components/GraphiQL.tsx", "../node_modules/graphql-language-service-utils/src/fragmentDependencies.ts", "../node_modules/graphiql/src/components/ExecuteButton.tsx", "../node_modules/graphiql/src/components/ImagePreview.tsx", "../node_modules/graphiql/src/components/ToolbarButton.tsx", "../node_modules/graphiql/src/components/ToolbarGroup.tsx", "../node_modules/graphiql/src/components/ToolbarMenu.tsx", "../node_modules/graphiql/src/components/QueryEditor.tsx", "../node_modules/graphiql/src/utility/normalizeWhitespace.ts", "../node_modules/graphiql/src/utility/onHasCompletion.ts", "../node_modules/graphiql/src/utility/commonKeys.ts", "../node_modules/graphiql/src/components/VariableEditor.tsx", "../node_modules/graphiql/src/components/HeaderEditor.tsx", "../node_modules/graphiql/src/components/ResultViewer.tsx", "../node_modules/graphiql/src/components/DocExplorer.tsx", "../node_modules/graphiql/src/components/DocExplorer/FieldDoc.tsx", "../node_modules/graphiql/src/components/DocExplorer/Argument.tsx", "../node_modules/graphiql/src/components/DocExplorer/TypeLink.tsx", "../node_modules/graphiql/src/components/DocExplorer/DefaultValue.tsx", "../node_modules/graphiql/src/components/DocExplorer/Directive.tsx", "../node_modules/graphiql/src/components/DocExplorer/MarkdownContent.tsx", "../node_modules/graphiql/src/components/DocExplorer/SchemaDoc.tsx", "../node_modules/graphiql/src/components/DocExplorer/SearchBox.tsx", "../node_modules/graphiql/src/utility/debounce.ts", "../node_modules/graphiql/src/components/DocExplorer/SearchResults.tsx", "../node_modules/graphiql/src/components/DocExplorer/TypeDoc.tsx", "../node_modules/graphiql/src/components/QueryHistory.tsx", "../node_modules/graphiql/src/utility/QueryStore.ts", "../node_modules/graphiql/src/components/HistoryQuery.tsx", "../node_modules/graphiql/src/utility/CodeMirrorSizer.ts", "../node_modules/graphiql/src/utility/StorageAPI.ts", "../node_modules/graphiql/src/utility/getQueryFacts.ts", "../node_modules/graphiql/src/utility/getSelectedOperationName.ts", "../node_modules/graphiql/src/utility/find.ts", "../node_modules/graphiql/src/utility/fillLeafs.ts", "../node_modules/graphiql/src/utility/elementPosition.ts", "../node_modules/graphiql/src/utility/mergeAst.ts", "../node_modules/graphiql/src/utility/introspectionQueries.ts", "../node_modules/dset/merge/index.mjs", "../node_modules/graphiql/src/components/ToolbarSelect.tsx", "../node_modules/graphiql/src/index.ts"], - "mappings": "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", + "sources": ["../node_modules/object-assign/index.js", "../node_modules/react/cjs/react.production.min.js", "../node_modules/react/index.js", "../node_modules/scheduler/cjs/scheduler.production.min.js", "../node_modules/scheduler/index.js", "../node_modules/react-dom/cjs/react-dom.production.min.js", "../node_modules/react-dom/index.js", "../node_modules/graphql/version.js", "../node_modules/graphql/jsutils/isPromise.js", "../node_modules/graphql/jsutils/isObjectLike.js", "../node_modules/graphql/polyfills/symbols.js", "../node_modules/graphql/language/location.js", "../node_modules/graphql/language/printLocation.js", "../node_modules/graphql/error/GraphQLError.js", "../node_modules/graphql/error/syntaxError.js", "../node_modules/graphql/language/kinds.js", "../node_modules/graphql/jsutils/invariant.js", "../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.js", "../node_modules/graphql/jsutils/defineInspect.js", "../node_modules/graphql/language/ast.js", "../node_modules/graphql/language/tokenKind.js", "../node_modules/graphql/jsutils/inspect.js", "../node_modules/graphql/jsutils/devAssert.js", "../node_modules/graphql/jsutils/instanceOf.js", "../node_modules/graphql/language/source.js", "../node_modules/graphql/language/directiveLocation.js", "../node_modules/graphql/language/blockString.js", "../node_modules/graphql/language/lexer.js", "../node_modules/graphql/language/parser.js", "../node_modules/graphql/language/visitor.js", "../node_modules/graphql/polyfills/find.js", "../node_modules/graphql/polyfills/objectValues.js", "../node_modules/graphql/error/locatedError.js", "../node_modules/graphql/utilities/assertValidName.js", "../node_modules/graphql/polyfills/objectEntries.js", "../node_modules/graphql/jsutils/keyMap.js", "../node_modules/graphql/jsutils/mapValue.js", "../node_modules/graphql/jsutils/toObjMap.js", "../node_modules/graphql/jsutils/keyValMap.js", "../node_modules/graphql/jsutils/didYouMean.js", "../node_modules/graphql/jsutils/identityFunc.js", "../node_modules/graphql/jsutils/naturalCompare.js", "../node_modules/graphql/jsutils/suggestionList.js", "../node_modules/graphql/language/printer.js", "../node_modules/graphql/utilities/valueFromASTUntyped.js", "../node_modules/graphql/type/definition.js", "../node_modules/graphql/utilities/typeComparators.js", "../node_modules/graphql/polyfills/arrayFrom.js", "../node_modules/graphql/polyfills/isFinite.js", "../node_modules/graphql/jsutils/safeArrayFrom.js", "../node_modules/graphql/polyfills/isInteger.js", "../node_modules/graphql/type/scalars.js", "../node_modules/graphql/utilities/astFromValue.js", "../node_modules/graphql/type/introspection.js", "../node_modules/graphql/type/directives.js", "../node_modules/graphql/type/schema.js", "../node_modules/graphql/type/validate.js", "../node_modules/graphql/utilities/typeFromAST.js", "../node_modules/graphql/utilities/TypeInfo.js", "../node_modules/graphql/language/predicates.js", "../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.js", "../node_modules/graphql/validation/rules/UniqueOperationNamesRule.js", "../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js", "../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.js", "../node_modules/graphql/validation/rules/KnownTypeNamesRule.js", "../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.js", "../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.js", "../node_modules/graphql/validation/rules/ScalarLeafsRule.js", "../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.js", "../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.js", "../node_modules/graphql/validation/rules/KnownFragmentNamesRule.js", "../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.js", "../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js", "../node_modules/graphql/validation/rules/NoFragmentCyclesRule.js", "../node_modules/graphql/validation/rules/UniqueVariableNamesRule.js", "../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.js", "../node_modules/graphql/validation/rules/NoUnusedVariablesRule.js", "../node_modules/graphql/validation/rules/KnownDirectivesRule.js", "../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js", "../node_modules/graphql/validation/rules/KnownArgumentNamesRule.js", "../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.js", "../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.js", "../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.js", "../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.js", "../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js", "../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.js", "../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.js", "../node_modules/graphql/validation/rules/UniqueOperationTypesRule.js", "../node_modules/graphql/validation/rules/UniqueTypeNamesRule.js", "../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.js", "../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.js", "../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.js", "../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.js", "../node_modules/graphql/validation/specifiedRules.js", "../node_modules/graphql/validation/ValidationContext.js", "../node_modules/graphql/validation/validate.js", "../node_modules/graphql/jsutils/memoize3.js", "../node_modules/graphql/jsutils/promiseReduce.js", "../node_modules/graphql/jsutils/promiseForObject.js", "../node_modules/graphql/jsutils/Path.js", "../node_modules/graphql/utilities/getOperationRootType.js", "../node_modules/graphql/jsutils/printPathArray.js", "../node_modules/graphql/utilities/valueFromAST.js", "../node_modules/graphql/utilities/coerceInputValue.js", "../node_modules/graphql/execution/values.js", "../node_modules/graphql/execution/execute.js", "../node_modules/graphql/graphql.js", "../node_modules/graphql/type/index.js", "../node_modules/graphql/language/index.js", "../node_modules/graphql/execution/index.js", "../node_modules/graphql/jsutils/isAsyncIterable.js", "../node_modules/graphql/subscription/mapAsyncIterator.js", "../node_modules/graphql/subscription/subscribe.js", "../node_modules/graphql/subscription/index.js", "../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js", "../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js", "../node_modules/graphql/validation/index.js", "../node_modules/graphql/error/formatError.js", "../node_modules/graphql/error/index.js", "../node_modules/graphql/utilities/getIntrospectionQuery.js", "../node_modules/graphql/utilities/getOperationAST.js", "../node_modules/graphql/utilities/introspectionFromSchema.js", "../node_modules/graphql/utilities/buildClientSchema.js", "../node_modules/graphql/utilities/extendSchema.js", "../node_modules/graphql/utilities/buildASTSchema.js", "../node_modules/graphql/utilities/lexicographicSortSchema.js", "../node_modules/graphql/utilities/printSchema.js", "../node_modules/graphql/utilities/concatAST.js", "../node_modules/graphql/utilities/separateOperations.js", "../node_modules/graphql/utilities/stripIgnoredCharacters.js", "../node_modules/graphql/utilities/findBreakingChanges.js", "../node_modules/graphql/utilities/findDeprecatedUsages.js", "../node_modules/graphql/utilities/index.js", "../node_modules/graphql/index.js", "../node_modules/toggle-selection/index.js", "../node_modules/copy-to-clipboard/index.js", "../node_modules/nullthrows/nullthrows.js", "../node_modules/markdown-it/lib/common/entities.js", "../node_modules/uc.micro/categories/P/regex.js", "../node_modules/mdurl/encode.js", "../node_modules/mdurl/decode.js", "../node_modules/mdurl/format.js", "../node_modules/mdurl/parse.js", "../node_modules/mdurl/index.js", "../node_modules/uc.micro/properties/Any/regex.js", "../node_modules/uc.micro/categories/Cc/regex.js", "../node_modules/uc.micro/categories/Cf/regex.js", "../node_modules/uc.micro/categories/Z/regex.js", "../node_modules/uc.micro/index.js", "../node_modules/markdown-it/lib/common/utils.js", "../node_modules/markdown-it/lib/helpers/parse_link_label.js", "../node_modules/markdown-it/lib/helpers/parse_link_destination.js", "../node_modules/markdown-it/lib/helpers/parse_link_title.js", "../node_modules/markdown-it/lib/helpers/index.js", "../node_modules/markdown-it/lib/renderer.js", "../node_modules/markdown-it/lib/ruler.js", "../node_modules/markdown-it/lib/rules_core/normalize.js", "../node_modules/markdown-it/lib/rules_core/block.js", "../node_modules/markdown-it/lib/rules_core/inline.js", "../node_modules/markdown-it/lib/rules_core/linkify.js", "../node_modules/markdown-it/lib/rules_core/replacements.js", "../node_modules/markdown-it/lib/rules_core/smartquotes.js", "../node_modules/markdown-it/lib/token.js", "../node_modules/markdown-it/lib/rules_core/state_core.js", "../node_modules/markdown-it/lib/parser_core.js", "../node_modules/markdown-it/lib/rules_block/table.js", "../node_modules/markdown-it/lib/rules_block/code.js", "../node_modules/markdown-it/lib/rules_block/fence.js", "../node_modules/markdown-it/lib/rules_block/blockquote.js", "../node_modules/markdown-it/lib/rules_block/hr.js", "../node_modules/markdown-it/lib/rules_block/list.js", "../node_modules/markdown-it/lib/rules_block/reference.js", "../node_modules/markdown-it/lib/common/html_blocks.js", "../node_modules/markdown-it/lib/common/html_re.js", "../node_modules/markdown-it/lib/rules_block/html_block.js", "../node_modules/markdown-it/lib/rules_block/heading.js", "../node_modules/markdown-it/lib/rules_block/lheading.js", "../node_modules/markdown-it/lib/rules_block/paragraph.js", "../node_modules/markdown-it/lib/rules_block/state_block.js", "../node_modules/markdown-it/lib/parser_block.js", "../node_modules/markdown-it/lib/rules_inline/text.js", "../node_modules/markdown-it/lib/rules_inline/newline.js", "../node_modules/markdown-it/lib/rules_inline/escape.js", "../node_modules/markdown-it/lib/rules_inline/backticks.js", "../node_modules/markdown-it/lib/rules_inline/strikethrough.js", "../node_modules/markdown-it/lib/rules_inline/emphasis.js", "../node_modules/markdown-it/lib/rules_inline/link.js", "../node_modules/markdown-it/lib/rules_inline/image.js", "../node_modules/markdown-it/lib/rules_inline/autolink.js", "../node_modules/markdown-it/lib/rules_inline/html_inline.js", "../node_modules/markdown-it/lib/rules_inline/entity.js", "../node_modules/markdown-it/lib/rules_inline/balance_pairs.js", "../node_modules/markdown-it/lib/rules_inline/text_collapse.js", "../node_modules/markdown-it/lib/rules_inline/state_inline.js", "../node_modules/markdown-it/lib/parser_inline.js", "../node_modules/linkify-it/lib/re.js", "../node_modules/linkify-it/index.js", "../node_modules/punycode/punycode.js", "../node_modules/markdown-it/lib/presets/default.js", "../node_modules/markdown-it/lib/presets/zero.js", "../node_modules/markdown-it/lib/presets/commonmark.js", "../node_modules/markdown-it/lib/index.js", "../node_modules/markdown-it/index.js", "../node_modules/escape-html/index.js", "../node_modules/codemirror/lib/codemirror.js", "../node_modules/codemirror/addon/hint/show-hint.js", "../node_modules/codemirror/addon/edit/matchbrackets.js", "../node_modules/codemirror/addon/edit/closebrackets.js", "../node_modules/codemirror/addon/fold/brace-fold.js", "../node_modules/codemirror/addon/fold/foldcode.js", "../node_modules/codemirror/addon/fold/foldgutter.js", "../node_modules/codemirror/addon/lint/lint.js", "../node_modules/codemirror/addon/search/searchcursor.js", "../node_modules/codemirror/addon/dialog/dialog.js", "../node_modules/codemirror/addon/search/jump-to-line.js", "../node_modules/codemirror/keymap/sublime.js", "../node_modules/codemirror/addon/comment/comment.js", "../node_modules/codemirror/addon/search/search.js", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/autocompleteUtils.ts", "../node_modules/codemirror-graphql/node_modules/vscode-languageserver-types/lib/umd/main.js", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/CharacterStream.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/RuleHelpers.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/Rules.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/onlineParser.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/types.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/parser/index.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getAutocompleteSuggestions.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/fragmentDependencies.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/getVariablesJSONSchema.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/getASTNodeAtPosition.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/Range.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/validateWithCustomRules.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/collectVariables.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/getOperationFacts.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/utils/index.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getDefinition.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getDiagnostics.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getOutline.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/getHoverInformation.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/interface/index.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/types.ts", "../node_modules/codemirror-graphql/node_modules/graphql-language-service/src/index.ts", "../node_modules/codemirror-graphql/src/hint.ts", "../node_modules/codemirror-graphql/src/lint.ts", "../node_modules/codemirror-graphql/src/utils/forEachState.ts", "../node_modules/codemirror-graphql/src/utils/getTypeInfo.ts", "../node_modules/codemirror-graphql/src/utils/SchemaReference.ts", "../node_modules/codemirror-graphql/src/utils/info-addon.ts", "../node_modules/codemirror-graphql/src/info.ts", "../node_modules/codemirror-graphql/src/utils/jump-addon.ts", "../node_modules/codemirror-graphql/src/jump.ts", "../node_modules/codemirror-graphql/src/utils/mode-indent.ts", "../node_modules/codemirror-graphql/src/utils/mode-factory.ts", "../node_modules/codemirror-graphql/src/mode.ts", "../node_modules/codemirror-graphql/src/utils/hintList.ts", "../node_modules/codemirror-graphql/src/variables/hint.ts", "../node_modules/codemirror-graphql/src/utils/jsonParse.ts", "../node_modules/codemirror-graphql/src/variables/lint.ts", "../node_modules/codemirror-graphql/src/variables/mode.ts", "../node_modules/codemirror/mode/javascript/javascript.js", "../node_modules/codemirror-graphql/src/results/mode.ts", "../node_modules/is-primitive/index.js", "../node_modules/isobject/index.js", "../node_modules/is-plain-object/index.js", "../node_modules/set-value/index.js", "../node_modules/backo2/index.js", "../node_modules/eventemitter3/index.js", "../node_modules/subscriptions-transport-ws/src/utils/is-string.ts", "../node_modules/subscriptions-transport-ws/src/utils/is-object.ts", "../node_modules/symbol-observable/lib/ponyfill.js", "../node_modules/symbol-observable/lib/index.js", "../node_modules/subscriptions-transport-ws/src/protocol.ts", "../node_modules/subscriptions-transport-ws/src/defaults.ts", "../node_modules/subscriptions-transport-ws/src/message-types.ts", "../node_modules/subscriptions-transport-ws/src/client.ts", "../netbox-graphiql/index.ts", "../node_modules/graphiql/src/components/GraphiQL.tsx", "../node_modules/graphql-language-service/src/interface/getAutocompleteSuggestions.ts", "../node_modules/vscode-languageserver-types/lib/esm/main.js", "../node_modules/graphql-language-service/src/types.ts", "../node_modules/graphql-language-service/src/parser/RuleHelpers.ts", "../node_modules/graphql-language-service/src/parser/Rules.ts", "../node_modules/graphql-language-service/src/parser/types.ts", "../node_modules/graphql-language-service/src/utils/fragmentDependencies.ts", "../node_modules/graphql-language-service/src/utils/collectVariables.ts", "../node_modules/graphql-language-service/src/utils/getOperationFacts.ts", "../node_modules/graphql-language-service/src/interface/getDiagnostics.ts", "../node_modules/graphiql/src/components/ExecuteButton.tsx", "../node_modules/graphiql/src/components/ImagePreview.tsx", "../node_modules/graphiql/src/components/ToolbarButton.tsx", "../node_modules/graphiql/src/components/ToolbarGroup.tsx", "../node_modules/graphiql/src/components/ToolbarMenu.tsx", "../node_modules/graphiql/src/components/QueryEditor.tsx", "../node_modules/graphiql/src/utility/normalizeWhitespace.ts", "../node_modules/graphiql/src/utility/onHasCompletion.ts", "../node_modules/graphiql/src/utility/commonKeys.ts", "../node_modules/graphiql/src/utility/importCodeMirror.ts", "../node_modules/graphiql/src/components/VariableEditor.tsx", "../node_modules/graphiql/src/components/HeaderEditor.tsx", "../node_modules/graphiql/src/components/ResultViewer.tsx", "../node_modules/graphiql/src/components/DocExplorer.tsx", "../node_modules/graphiql/src/components/DocExplorer/FieldDoc.tsx", "../node_modules/graphiql/src/components/DocExplorer/Argument.tsx", "../node_modules/graphiql/src/components/DocExplorer/TypeLink.tsx", "../node_modules/graphiql/src/components/DocExplorer/DefaultValue.tsx", "../node_modules/graphiql/src/components/DocExplorer/Directive.tsx", "../node_modules/graphiql/src/components/DocExplorer/MarkdownContent.tsx", "../node_modules/graphiql/src/components/DocExplorer/SchemaDoc.tsx", "../node_modules/graphiql/src/components/DocExplorer/SearchBox.tsx", "../node_modules/graphiql/src/utility/debounce.ts", "../node_modules/graphiql/src/components/DocExplorer/SearchResults.tsx", "../node_modules/graphiql/src/components/DocExplorer/TypeDoc.tsx", "../node_modules/graphiql/src/components/QueryHistory.tsx", "../node_modules/graphiql/src/components/HistoryQuery.tsx", "../node_modules/graphiql/src/utility/QueryStore.ts", "../node_modules/graphiql/src/utility/HistoryStore.ts", "../node_modules/graphiql/src/utility/CodeMirrorSizer.ts", "../node_modules/graphiql/src/utility/StorageAPI.ts", "../node_modules/graphiql/src/utility/getSelectedOperationName.ts", "../node_modules/graphiql/src/utility/find.ts", "../node_modules/graphiql/src/utility/fillLeafs.ts", "../node_modules/graphiql/src/utility/elementPosition.ts", "../node_modules/graphiql/src/utility/mergeAst.ts", "../node_modules/graphiql/src/utility/introspectionQueries.ts", "../node_modules/graphiql/src/components/Tabs.tsx", "../node_modules/graphiql/src/utility/fuzzyExtractOperationTitle.ts", "../node_modules/graphiql/src/utility/id-from-tab-contents.ts", "../node_modules/graphiql/src/utility/guid.ts", "../node_modules/graphiql/src/components/ToolbarSelect.tsx", "../node_modules/graphiql/src/index.ts"], + "mappings": "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", "names": [] } diff --git a/netbox/project-static/dist/netbox-dark.css b/netbox/project-static/dist/netbox-dark.css index 2aa24b72c..84d1600e3 100644 --- a/netbox/project-static/dist/netbox-dark.css +++ b/netbox/project-static/dist/netbox-dark.css @@ -1 +1 @@ -@charset "UTF-8";html[data-netbox-color-mode=dark] input{color-scheme:dark}html[data-netbox-color-mode=dark] :root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #6ea8fe;--bs-secondary: #adb5bd;--bs-success: #75b798;--bs-info: #6edff6;--bs-warning: #ffda6a;--bs-danger: #ea868f;--bs-light: #dee2e6;--bs-dark: #adb5bd;--bs-blue: #6ea8fe;--bs-indigo: #a370f7;--bs-purple: #a98eda;--bs-pink: #e685b5;--bs-red: #ea868f;--bs-orange: #feb272;--bs-yellow: #ffda6a;--bs-green: #75b798;--bs-teal: #79dfc1;--bs-cyan: #6edff6;--bs-gray: #dee2e6;--bs-black: #000;--bs-white: #fff;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}html[data-netbox-color-mode=dark] *,html[data-netbox-color-mode=dark] *:before,html[data-netbox-color-mode=dark] *:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){html[data-netbox-color-mode=dark] :root{scroll-behavior:smooth}}html[data-netbox-color-mode=dark] body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#fff;background-color:#1b1f22;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}html[data-netbox-color-mode=dark] hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}html[data-netbox-color-mode=dark] hr:not([size]){height:1px}html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{font-size:2.5rem}}html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2{font-size:calc(1.325rem + 0.9vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2{font-size:2rem}}html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3{font-size:calc(1.3rem + 0.6vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3{font-size:1.75rem}}html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4{font-size:calc(1.275rem + 0.3vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4{font-size:1.5rem}}html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=dark] .h5{font-size:1.25rem}html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=dark] .h6{font-size:1rem}html[data-netbox-color-mode=dark] p{margin-top:0;margin-bottom:1rem}html[data-netbox-color-mode=dark] abbr[title],html[data-netbox-color-mode=dark] abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}html[data-netbox-color-mode=dark] address{margin-bottom:1rem;font-style:normal;line-height:inherit}html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul{padding-left:2rem}html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=dark] dl{margin-top:0;margin-bottom:1rem}html[data-netbox-color-mode=dark] ol ol,html[data-netbox-color-mode=dark] ul ul,html[data-netbox-color-mode=dark] ol ul,html[data-netbox-color-mode=dark] ul ol{margin-bottom:0}html[data-netbox-color-mode=dark] dt{font-weight:700}html[data-netbox-color-mode=dark] dd{margin-bottom:.5rem;margin-left:0}html[data-netbox-color-mode=dark] blockquote{margin:0 0 1rem}html[data-netbox-color-mode=dark] b,html[data-netbox-color-mode=dark] strong{font-weight:800}html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=dark] .small{font-size:.875em}html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=dark] .mark{padding:.2em;background-color:#fcf8e3}html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=dark] sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}html[data-netbox-color-mode=dark] sub{bottom:-.25em}html[data-netbox-color-mode=dark] sup{top:-.5em}html[data-netbox-color-mode=dark] a{color:#9ec5fe;text-decoration:underline}html[data-netbox-color-mode=dark] a:hover{color:#cfe2ff}html[data-netbox-color-mode=dark] a:not([href]):not([class]),html[data-netbox-color-mode=dark] a:not([href]):not([class]):hover{color:inherit;text-decoration:none}html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=dark] samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}html[data-netbox-color-mode=dark] pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}html[data-netbox-color-mode=dark] pre code{font-size:inherit;color:inherit;word-break:normal}html[data-netbox-color-mode=dark] code{font-size:.875em;color:#e9ecef;word-wrap:break-word}a>html[data-netbox-color-mode=dark] code{color:inherit}html[data-netbox-color-mode=dark] kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#dee2e6;border-radius:.375rem}html[data-netbox-color-mode=dark] kbd kbd{padding:0;font-size:1em;font-weight:700}html[data-netbox-color-mode=dark] figure{margin:0 0 1rem}html[data-netbox-color-mode=dark] img,html[data-netbox-color-mode=dark] svg{vertical-align:middle}html[data-netbox-color-mode=dark] table{caption-side:bottom;border-collapse:collapse}html[data-netbox-color-mode=dark] caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}html[data-netbox-color-mode=dark] th{text-align:inherit;text-align:-webkit-match-parent}html[data-netbox-color-mode=dark] thead,html[data-netbox-color-mode=dark] tbody,html[data-netbox-color-mode=dark] tfoot,html[data-netbox-color-mode=dark] tr,html[data-netbox-color-mode=dark] td,html[data-netbox-color-mode=dark] th{border-color:inherit;border-style:solid;border-width:0}html[data-netbox-color-mode=dark] label{display:inline-block}html[data-netbox-color-mode=dark] button{border-radius:0}html[data-netbox-color-mode=dark] button:focus:not(:focus-visible){outline:0}html[data-netbox-color-mode=dark] input,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=dark] optgroup,html[data-netbox-color-mode=dark] textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select{text-transform:none}html[data-netbox-color-mode=dark] [role=button]{cursor:pointer}html[data-netbox-color-mode=dark] select{word-wrap:normal}html[data-netbox-color-mode=dark] select:disabled{opacity:1}html[data-netbox-color-mode=dark] [list]::-webkit-calendar-picker-indicator{display:none}html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] [type=button],html[data-netbox-color-mode=dark] [type=reset],html[data-netbox-color-mode=dark] [type=submit]{-webkit-appearance:button}html[data-netbox-color-mode=dark] button:not(:disabled),html[data-netbox-color-mode=dark] [type=button]:not(:disabled),html[data-netbox-color-mode=dark] [type=reset]:not(:disabled),html[data-netbox-color-mode=dark] [type=submit]:not(:disabled){cursor:pointer}html[data-netbox-color-mode=dark] ::-moz-focus-inner{padding:0;border-style:none}html[data-netbox-color-mode=dark] textarea{resize:vertical}html[data-netbox-color-mode=dark] fieldset{min-width:0;padding:0;margin:0;border:0}html[data-netbox-color-mode=dark] legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media (min-width: 1200px){html[data-netbox-color-mode=dark] legend{font-size:1.5rem}}html[data-netbox-color-mode=dark] legend+*{clear:left}html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-year-field{padding:0}html[data-netbox-color-mode=dark] ::-webkit-inner-spin-button{height:auto}html[data-netbox-color-mode=dark] [type=search]{outline-offset:-2px;-webkit-appearance:textfield}html[data-netbox-color-mode=dark] ::-webkit-search-decoration{-webkit-appearance:none}html[data-netbox-color-mode=dark] ::-webkit-color-swatch-wrapper{padding:0}html[data-netbox-color-mode=dark] ::file-selector-button{font:inherit}html[data-netbox-color-mode=dark] ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}html[data-netbox-color-mode=dark] output{display:inline-block}html[data-netbox-color-mode=dark] iframe{border:0}html[data-netbox-color-mode=dark] summary{display:list-item;cursor:pointer}html[data-netbox-color-mode=dark] progress{vertical-align:baseline}html[data-netbox-color-mode=dark] [hidden]{display:none!important}html[data-netbox-color-mode=dark] .lead{font-size:1.25rem;font-weight:300}html[data-netbox-color-mode=dark] .display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-1{font-size:5rem}}html[data-netbox-color-mode=dark] .display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-2{font-size:4.5rem}}html[data-netbox-color-mode=dark] .display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-3{font-size:4rem}}html[data-netbox-color-mode=dark] .display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-4{font-size:3.5rem}}html[data-netbox-color-mode=dark] .display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-5{font-size:3rem}}html[data-netbox-color-mode=dark] .display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-6{font-size:2.5rem}}html[data-netbox-color-mode=dark] .list-unstyled,html[data-netbox-color-mode=dark] .list-inline{padding-left:0;list-style:none}html[data-netbox-color-mode=dark] .list-inline-item{display:inline-block}html[data-netbox-color-mode=dark] .list-inline-item:not(:last-child){margin-right:.5rem}html[data-netbox-color-mode=dark] .initialism{font-size:.875em;text-transform:uppercase}html[data-netbox-color-mode=dark] .blockquote{margin-bottom:1rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .blockquote>:last-child{margin-bottom:0}html[data-netbox-color-mode=dark] .blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}html[data-netbox-color-mode=dark] .blockquote-footer:before{content:"\2014\a0"}html[data-netbox-color-mode=dark] .img-fluid{max-width:100%;height:auto}html[data-netbox-color-mode=dark] .img-thumbnail{padding:.25rem;background-color:#1b1f22;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}html[data-netbox-color-mode=dark] .figure{display:inline-block}html[data-netbox-color-mode=dark] .figure-img{margin-bottom:.5rem;line-height:1}html[data-netbox-color-mode=dark] .figure-caption{font-size:.875em;color:#6c757d}html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=dark] .container-fluid,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:540px}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:720px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:960px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:1140px}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:1320px}}html[data-netbox-color-mode=dark] .row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}html[data-netbox-color-mode=dark] .row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}html[data-netbox-color-mode=dark] .col{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width: 576px){html[data-netbox-color-mode=dark] .col-sm{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-sm-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-sm-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-sm-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-sm-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-sm-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .col-md{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-md-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-md-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-md-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-md-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-md-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .col-lg{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-lg-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-lg-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-lg-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-lg-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-lg-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .col-xl{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-xl-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-xl-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-xl-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-xl-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-xl-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .col-xxl{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-xxl-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-xxl-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-xxl-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-xxl-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-xxl-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}html[data-netbox-color-mode=dark] .col-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gx-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gy-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gx-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gy-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gx-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gy-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gx-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gy-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gx-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gy-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gx-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .col-sm-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-sm-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-sm-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-sm-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-sm-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-sm-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-sm-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-sm-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-sm-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-sm-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-sm-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-sm-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-sm-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-sm-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-sm-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-sm-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-sm-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-sm-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-sm-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-sm-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-sm-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-sm-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-sm-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-sm-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-sm-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gx-sm-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gy-sm-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gx-sm-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gy-sm-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gx-sm-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gy-sm-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gx-sm-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gy-sm-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gx-sm-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gy-sm-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gx-sm-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .col-md-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-md-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-md-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-md-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-md-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-md-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-md-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-md-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-md-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-md-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-md-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-md-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-md-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-md-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-md-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-md-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-md-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-md-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-md-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-md-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-md-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-md-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-md-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-md-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-md-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gx-md-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gy-md-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gx-md-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gy-md-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gx-md-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gy-md-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gx-md-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gy-md-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gx-md-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gy-md-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gx-md-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .col-lg-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-lg-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-lg-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-lg-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-lg-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-lg-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-lg-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-lg-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-lg-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-lg-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-lg-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-lg-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-lg-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-lg-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-lg-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-lg-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-lg-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-lg-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-lg-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-lg-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-lg-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-lg-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-lg-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-lg-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-lg-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gx-lg-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gy-lg-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gx-lg-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gy-lg-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gx-lg-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gy-lg-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gx-lg-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gy-lg-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gx-lg-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gy-lg-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gx-lg-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .col-xl-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-xl-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-xl-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-xl-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-xl-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-xl-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-xl-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-xl-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-xl-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-xl-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-xl-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-xl-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-xl-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-xl-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-xl-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-xl-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-xl-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-xl-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-xl-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-xl-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-xl-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-xl-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-xl-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-xl-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-xl-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gx-xl-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gy-xl-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gx-xl-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gy-xl-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gx-xl-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gy-xl-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gx-xl-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gy-xl-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gx-xl-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gy-xl-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gx-xl-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .col-xxl-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-xxl-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-xxl-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-xxl-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-xxl-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-xxl-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-xxl-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-xxl-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-xxl-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-xxl-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-xxl-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-xxl-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-xxl-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-xxl-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-xxl-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-xxl-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-xxl-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-xxl-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gx-xxl-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gy-xxl-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gx-xxl-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gy-xxl-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gx-xxl-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gy-xxl-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gx-xxl-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gy-xxl-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gx-xxl-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gy-xxl-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gx-xxl-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gy-xxl-5{--bs-gutter-y: 3rem}}html[data-netbox-color-mode=dark] .table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #f8f9fa;--bs-table-striped-bg: rgba(255, 255, 255, .05);--bs-table-active-color: #f8f9fa;--bs-table-active-bg: rgba(255, 255, 255, .1);--bs-table-hover-color: #f8f9fa;--bs-table-hover-bg: rgba(255, 255, 255, .075);width:100%;margin-bottom:1rem;color:#f8f9fa;vertical-align:top;border-color:#495057}html[data-netbox-color-mode=dark] .table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}html[data-netbox-color-mode=dark] .table>tbody{vertical-align:inherit}html[data-netbox-color-mode=dark] .table>thead{vertical-align:bottom}html[data-netbox-color-mode=dark] .table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}html[data-netbox-color-mode=dark] .caption-top{caption-side:top}html[data-netbox-color-mode=dark] .table-sm>:not(caption)>*>*{padding:.25rem}html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*{border-width:1px 0}html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*>*{border-width:0 1px}html[data-netbox-color-mode=dark] .table-borderless>:not(caption)>*>*{border-bottom-width:0}html[data-netbox-color-mode=dark] .table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}html[data-netbox-color-mode=dark] .table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}html[data-netbox-color-mode=dark] .table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}html[data-netbox-color-mode=dark] .table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}html[data-netbox-color-mode=dark] .table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}html[data-netbox-color-mode=dark] .table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}html[data-netbox-color-mode=dark] .table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}html[data-netbox-color-mode=dark] .table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}html[data-netbox-color-mode=dark] .table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}html[data-netbox-color-mode=dark] .table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}html[data-netbox-color-mode=dark] .table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}html[data-netbox-color-mode=dark] .table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){html[data-netbox-color-mode=dark] .table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){html[data-netbox-color-mode=dark] .table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){html[data-netbox-color-mode=dark] .table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}html[data-netbox-color-mode=dark] .form-label{margin-bottom:.5rem}html[data-netbox-color-mode=dark] .col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}html[data-netbox-color-mode=dark] .col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}html[data-netbox-color-mode=dark] .col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:.875rem}html[data-netbox-color-mode=dark] .form-text{margin-top:.25rem;font-size:.875em;color:#ced4da}html[data-netbox-color-mode=dark] .form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#212529;background-clip:padding-box;border:1px solid #495057;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control{transition:none}}html[data-netbox-color-mode=dark] .form-control[type=file]{overflow:hidden}html[data-netbox-color-mode=dark] .form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}html[data-netbox-color-mode=dark] .form-control:focus{color:#f8f9fa;background-color:#212529;border-color:#7db1fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-control::-webkit-date-and-time-value{height:1.5em}html[data-netbox-color-mode=dark] .form-control::placeholder{color:#495057;opacity:1}html[data-netbox-color-mode=dark] .form-control:disabled,html[data-netbox-color-mode=dark] .form-control[readonly]{background-color:#495057;opacity:1}html[data-netbox-color-mode=dark] .form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#f8f9fa;background-color:#495057;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control::file-selector-button{transition:none}}html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#454c53}html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#f8f9fa;background-color:#495057;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button{transition:none}}html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#454c53}html[data-netbox-color-mode=dark] .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#fff;background-color:transparent;border:solid transparent;border-width:1px 0}html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] .form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html[data-netbox-color-mode=dark] .form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html[data-netbox-color-mode=dark] .form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html[data-netbox-color-mode=dark] .form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html[data-netbox-color-mode=dark] textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}html[data-netbox-color-mode=dark] textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}html[data-netbox-color-mode=dark] textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}html[data-netbox-color-mode=dark] .form-control-color{max-width:3rem;height:auto;padding:.375rem}html[data-netbox-color-mode=dark] .form-control-color:not(:disabled):not([readonly]){cursor:pointer}html[data-netbox-color-mode=dark] .form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#212529;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #495057;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-select{transition:none}}html[data-netbox-color-mode=dark] .form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-select[multiple],html[data-netbox-color-mode=dark] .form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}html[data-netbox-color-mode=dark] .form-select:disabled{color:#adb5bd;background-color:#495057}html[data-netbox-color-mode=dark] .form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #f8f9fa}html[data-netbox-color-mode=dark] .form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}html[data-netbox-color-mode=dark] .form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}html[data-netbox-color-mode=dark] .form-check .form-check-input{float:left;margin-left:-1.5em}html[data-netbox-color-mode=dark] .form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#212529;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(255,255,255,.25);appearance:none;color-adjust:exact}html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]{border-radius:.25em}html[data-netbox-color-mode=dark] .form-check-input[type=radio]{border-radius:50%}html[data-netbox-color-mode=dark] .form-check-input:active{filter:brightness(90%)}html[data-netbox-color-mode=dark] .form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-check-input:checked{background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]:indeterminate{background-color:#6ea8fe;border-color:#6ea8fe;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}html[data-netbox-color-mode=dark] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input:disabled~.form-check-label{opacity:.5}html[data-netbox-color-mode=dark] .form-switch{padding-left:2.5em}html[data-netbox-color-mode=dark] .form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-switch .form-check-input{transition:none}}html[data-netbox-color-mode=dark] .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-inline{display:inline-block;margin-right:1rem}html[data-netbox-color-mode=dark] .btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}html[data-netbox-color-mode=dark] .btn-check[disabled]+.btn,html[data-netbox-color-mode=dark] .btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}html[data-netbox-color-mode=dark] .form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}html[data-netbox-color-mode=dark] .form-range:focus{outline:0}html[data-netbox-color-mode=dark] .form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #1b1f22,0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #1b1f22,0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-range::-moz-focus-outer{border:0}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#6ea8fe;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb{transition:none}}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb:active{background-color:#d4e5ff}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#6ea8fe;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb{transition:none}}html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb:active{background-color:#d4e5ff}html[data-netbox-color-mode=dark] .form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}html[data-netbox-color-mode=dark] .form-range:disabled{pointer-events:none}html[data-netbox-color-mode=dark] .form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}html[data-netbox-color-mode=dark] .form-range:disabled::-moz-range-thumb{background-color:#adb5bd}html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}html[data-netbox-color-mode=dark] .form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-floating>label{transition:none}}html[data-netbox-color-mode=dark] .form-floating>.form-control{padding:1rem .75rem}html[data-netbox-color-mode=dark] .form-floating>.form-control::placeholder{color:transparent}html[data-netbox-color-mode=dark] .form-floating>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}html[data-netbox-color-mode=dark] .input-group>.form-control,html[data-netbox-color-mode=dark] .input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}html[data-netbox-color-mode=dark] .input-group>.form-control:focus,html[data-netbox-color-mode=dark] .input-group>.form-select:focus{z-index:3}html[data-netbox-color-mode=dark] .input-group .btn{position:relative;z-index:2}html[data-netbox-color-mode=dark] .input-group .btn:focus{z-index:3}html[data-netbox-color-mode=dark] .input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;text-align:center;white-space:nowrap;background-color:#495057;border:1px solid #495057;border-radius:.375rem}html[data-netbox-color-mode=dark] .input-group-lg>.form-control,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.input-group-text,html[data-netbox-color-mode=dark] .input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .input-group-sm>.form-control,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.input-group-text,html[data-netbox-color-mode=dark] .input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.form-select{padding-right:3rem}html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}html[data-netbox-color-mode=dark] .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.was-validated html[data-netbox-color-mode=dark]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-tooltip,html[data-netbox-color-mode=dark].is-valid~.valid-feedback,html[data-netbox-color-mode=dark].is-valid~.valid-tooltip{display:block}.was-validated html[data-netbox-color-mode=dark] .form-control:valid,html[data-netbox-color-mode=dark] .form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html[data-netbox-color-mode=dark] .form-control:valid:focus,html[data-netbox-color-mode=dark] .form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] textarea.form-control:valid,html[data-netbox-color-mode=dark] textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:valid,html[data-netbox-color-mode=dark] .form-select.is-valid{border-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:valid:focus,html[data-netbox-color-mode=dark] .form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid,html[data-netbox-color-mode=dark] .form-check-input.is-valid{border-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-valid:checked{background-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-valid~.form-check-label{color:#198754}html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid{z-index:1}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid:focus{z-index:3}html[data-netbox-color-mode=dark] .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}html[data-netbox-color-mode=dark] .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-tooltip,html[data-netbox-color-mode=dark].is-invalid~.invalid-feedback,html[data-netbox-color-mode=dark].is-invalid~.invalid-tooltip{display:block}.was-validated html[data-netbox-color-mode=dark] .form-control:invalid,html[data-netbox-color-mode=dark] .form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html[data-netbox-color-mode=dark] .form-control:invalid:focus,html[data-netbox-color-mode=dark] .form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] textarea.form-control:invalid,html[data-netbox-color-mode=dark] textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid,html[data-netbox-color-mode=dark] .form-select.is-invalid{border-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:focus,html[data-netbox-color-mode=dark] .form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid,html[data-netbox-color-mode=dark] .form-check-input.is-invalid{border-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-invalid~.form-check-label{color:#dc3545}html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid{z-index:2}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid:focus{z-index:3}html[data-netbox-color-mode=dark] .btn{display:inline-block;font-weight:400;line-height:1.5;color:#fff;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .btn{transition:none}}html[data-netbox-color-mode=dark] .btn:hover{color:#fff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=dark] .btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .btn:disabled,html[data-netbox-color-mode=dark] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=dark] .btn{pointer-events:none;opacity:.65}html[data-netbox-color-mode=dark] .btn-primary{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-primary:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:active,html[data-netbox-color-mode=dark] .btn-primary.active,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary:focus,html[data-netbox-color-mode=dark] .btn-primary:active:focus,html[data-netbox-color-mode=dark] .btn-primary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html[data-netbox-color-mode=dark] .btn-primary:disabled,html[data-netbox-color-mode=dark] .btn-primary.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-secondary{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-secondary:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:active,html[data-netbox-color-mode=dark] .btn-secondary.active,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary:focus,html[data-netbox-color-mode=dark] .btn-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html[data-netbox-color-mode=dark] .btn-secondary:disabled,html[data-netbox-color-mode=dark] .btn-secondary.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-success{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-success:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:active,html[data-netbox-color-mode=dark] .btn-success.active,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success:focus,html[data-netbox-color-mode=dark] .btn-success:active:focus,html[data-netbox-color-mode=dark] .btn-success.active:focus,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html[data-netbox-color-mode=dark] .btn-success:disabled,html[data-netbox-color-mode=dark] .btn-success.disabled{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-info{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-info:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:active,html[data-netbox-color-mode=dark] .btn-info.active,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info:focus,html[data-netbox-color-mode=dark] .btn-info:active:focus,html[data-netbox-color-mode=dark] .btn-info.active:focus,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html[data-netbox-color-mode=dark] .btn-info:disabled,html[data-netbox-color-mode=dark] .btn-info.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-warning{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-warning:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:active,html[data-netbox-color-mode=dark] .btn-warning.active,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning:focus,html[data-netbox-color-mode=dark] .btn-warning:active:focus,html[data-netbox-color-mode=dark] .btn-warning.active:focus,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html[data-netbox-color-mode=dark] .btn-warning:disabled,html[data-netbox-color-mode=dark] .btn-warning.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-danger{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-danger:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:active,html[data-netbox-color-mode=dark] .btn-danger.active,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger:focus,html[data-netbox-color-mode=dark] .btn-danger:active:focus,html[data-netbox-color-mode=dark] .btn-danger.active:focus,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html[data-netbox-color-mode=dark] .btn-danger:disabled,html[data-netbox-color-mode=dark] .btn-danger.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-light{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-light:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:active,html[data-netbox-color-mode=dark] .btn-light.active,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light:focus,html[data-netbox-color-mode=dark] .btn-light:active:focus,html[data-netbox-color-mode=dark] .btn-light.active:focus,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}html[data-netbox-color-mode=dark] .btn-light:disabled,html[data-netbox-color-mode=dark] .btn-light.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-dark{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-dark:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:active,html[data-netbox-color-mode=dark] .btn-dark.active,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark:focus,html[data-netbox-color-mode=dark] .btn-dark:active:focus,html[data-netbox-color-mode=dark] .btn-dark.active:focus,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html[data-netbox-color-mode=dark] .btn-dark:disabled,html[data-netbox-color-mode=dark] .btn-dark.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-blue{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-blue:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:active,html[data-netbox-color-mode=dark] .btn-blue.active,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue:focus,html[data-netbox-color-mode=dark] .btn-blue:active:focus,html[data-netbox-color-mode=dark] .btn-blue.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html[data-netbox-color-mode=dark] .btn-blue:disabled,html[data-netbox-color-mode=dark] .btn-blue.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-indigo{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-indigo:hover{color:#000;background-color:#b185f8;border-color:#ac7ef8}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:focus{color:#000;background-color:#b185f8;border-color:#ac7ef8;box-shadow:0 0 0 .25rem #8b5fd280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:active,html[data-netbox-color-mode=dark] .btn-indigo.active,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle{color:#000;background-color:#b58df9;border-color:#ac7ef8}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo:focus,html[data-netbox-color-mode=dark] .btn-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8b5fd280}html[data-netbox-color-mode=dark] .btn-indigo:disabled,html[data-netbox-color-mode=dark] .btn-indigo.disabled{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-purple{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-purple:hover{color:#000;background-color:#b69fe0;border-color:#b299de}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:focus{color:#000;background-color:#b69fe0;border-color:#b299de;box-shadow:0 0 0 .25rem #9079b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:active,html[data-netbox-color-mode=dark] .btn-purple.active,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle{color:#000;background-color:#baa5e1;border-color:#b299de}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple:focus,html[data-netbox-color-mode=dark] .btn-purple:active:focus,html[data-netbox-color-mode=dark] .btn-purple.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #9079b980}html[data-netbox-color-mode=dark] .btn-purple:disabled,html[data-netbox-color-mode=dark] .btn-purple.disabled{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-pink{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-pink:hover{color:#000;background-color:#ea97c0;border-color:#e991bc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:focus{color:#000;background-color:#ea97c0;border-color:#e991bc;box-shadow:0 0 0 .25rem #c4719a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:active,html[data-netbox-color-mode=dark] .btn-pink.active,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle{color:#000;background-color:#eb9dc4;border-color:#e991bc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink:focus,html[data-netbox-color-mode=dark] .btn-pink:active:focus,html[data-netbox-color-mode=dark] .btn-pink.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c4719a80}html[data-netbox-color-mode=dark] .btn-pink:disabled,html[data-netbox-color-mode=dark] .btn-pink.disabled{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-red{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-red:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:active,html[data-netbox-color-mode=dark] .btn-red.active,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red:focus,html[data-netbox-color-mode=dark] .btn-red:active:focus,html[data-netbox-color-mode=dark] .btn-red.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html[data-netbox-color-mode=dark] .btn-red:disabled,html[data-netbox-color-mode=dark] .btn-red.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-orange{color:#000;background-color:#feb272;border-color:#feb272}html[data-netbox-color-mode=dark] .btn-orange:hover{color:#000;background-color:#febe87;border-color:#feba80}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-orange,html[data-netbox-color-mode=dark] .btn-orange:focus{color:#000;background-color:#febe87;border-color:#feba80;box-shadow:0 0 0 .25rem #d8976180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-orange,.btn-check:active+html[data-netbox-color-mode=dark] .btn-orange,html[data-netbox-color-mode=dark] .btn-orange:active,html[data-netbox-color-mode=dark] .btn-orange.active,.show>html[data-netbox-color-mode=dark] .btn-orange.dropdown-toggle{color:#000;background-color:#fec18e;border-color:#feba80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-orange:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-orange:focus,html[data-netbox-color-mode=dark] .btn-orange:active:focus,html[data-netbox-color-mode=dark] .btn-orange.active:focus,.show>html[data-netbox-color-mode=dark] .btn-orange.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d8976180}html[data-netbox-color-mode=dark] .btn-orange:disabled,html[data-netbox-color-mode=dark] .btn-orange.disabled{color:#000;background-color:#feb272;border-color:#feb272}html[data-netbox-color-mode=dark] .btn-yellow{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-yellow:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:active,html[data-netbox-color-mode=dark] .btn-yellow.active,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow:focus,html[data-netbox-color-mode=dark] .btn-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html[data-netbox-color-mode=dark] .btn-yellow:disabled,html[data-netbox-color-mode=dark] .btn-yellow.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-green{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-green:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:active,html[data-netbox-color-mode=dark] .btn-green.active,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green:focus,html[data-netbox-color-mode=dark] .btn-green:active:focus,html[data-netbox-color-mode=dark] .btn-green.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html[data-netbox-color-mode=dark] .btn-green:disabled,html[data-netbox-color-mode=dark] .btn-green.disabled{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-teal{color:#000;background-color:#79dfc1;border-color:#79dfc1}html[data-netbox-color-mode=dark] .btn-teal:hover{color:#000;background-color:#8de4ca;border-color:#86e2c7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-teal,html[data-netbox-color-mode=dark] .btn-teal:focus{color:#000;background-color:#8de4ca;border-color:#86e2c7;box-shadow:0 0 0 .25rem #67bea480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-teal,.btn-check:active+html[data-netbox-color-mode=dark] .btn-teal,html[data-netbox-color-mode=dark] .btn-teal:active,html[data-netbox-color-mode=dark] .btn-teal.active,.show>html[data-netbox-color-mode=dark] .btn-teal.dropdown-toggle{color:#000;background-color:#94e5cd;border-color:#86e2c7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-teal:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-teal:focus,html[data-netbox-color-mode=dark] .btn-teal:active:focus,html[data-netbox-color-mode=dark] .btn-teal.active:focus,.show>html[data-netbox-color-mode=dark] .btn-teal.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #67bea480}html[data-netbox-color-mode=dark] .btn-teal:disabled,html[data-netbox-color-mode=dark] .btn-teal.disabled{color:#000;background-color:#79dfc1;border-color:#79dfc1}html[data-netbox-color-mode=dark] .btn-cyan{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-cyan:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:active,html[data-netbox-color-mode=dark] .btn-cyan.active,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan:focus,html[data-netbox-color-mode=dark] .btn-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html[data-netbox-color-mode=dark] .btn-cyan:disabled,html[data-netbox-color-mode=dark] .btn-cyan.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-gray{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-gray:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:active,html[data-netbox-color-mode=dark] .btn-gray.active,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray:focus,html[data-netbox-color-mode=dark] .btn-gray:active:focus,html[data-netbox-color-mode=dark] .btn-gray.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}html[data-netbox-color-mode=dark] .btn-gray:disabled,html[data-netbox-color-mode=dark] .btn-gray.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=dark] .btn-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=dark] .btn-black:focus{color:#fff;background-color:#000;border-color:#000;box-shadow:0 0 0 .25rem #26262680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-black,.btn-check:active+html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=dark] .btn-black:active,html[data-netbox-color-mode=dark] .btn-black.active,.show>html[data-netbox-color-mode=dark] .btn-black.dropdown-toggle{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-black:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-black:focus,html[data-netbox-color-mode=dark] .btn-black:active:focus,html[data-netbox-color-mode=dark] .btn-black.active:focus,.show>html[data-netbox-color-mode=dark] .btn-black.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #26262680}html[data-netbox-color-mode=dark] .btn-black:disabled,html[data-netbox-color-mode=dark] .btn-black.disabled{color:#fff;background-color:#000;border-color:#000}html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=dark] .btn-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=dark] .btn-white:focus{color:#000;background-color:#fff;border-color:#fff;box-shadow:0 0 0 .25rem #d9d9d980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-white,.btn-check:active+html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=dark] .btn-white:active,html[data-netbox-color-mode=dark] .btn-white.active,.show>html[data-netbox-color-mode=dark] .btn-white.dropdown-toggle{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-white:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-white:focus,html[data-netbox-color-mode=dark] .btn-white:active:focus,html[data-netbox-color-mode=dark] .btn-white.active:focus,.show>html[data-netbox-color-mode=dark] .btn-white.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9d9d980}html[data-netbox-color-mode=dark] .btn-white:disabled,html[data-netbox-color-mode=dark] .btn-white.disabled{color:#000;background-color:#fff;border-color:#fff}html[data-netbox-color-mode=dark] .btn-outline-primary{color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-outline-primary:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:active,html[data-netbox-color-mode=dark] .btn-outline-primary.active,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,html[data-netbox-color-mode=dark] .btn-outline-primary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html[data-netbox-color-mode=dark] .btn-outline-primary:disabled,html[data-netbox-color-mode=dark] .btn-outline-primary.disabled{color:#6ea8fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-secondary{color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-outline-secondary:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:active,html[data-netbox-color-mode=dark] .btn-outline-secondary.active,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html[data-netbox-color-mode=dark] .btn-outline-secondary:disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary.disabled{color:#adb5bd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-success{color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-outline-success:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:active,html[data-netbox-color-mode=dark] .btn-outline-success.active,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success:focus,html[data-netbox-color-mode=dark] .btn-outline-success:active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html[data-netbox-color-mode=dark] .btn-outline-success:disabled,html[data-netbox-color-mode=dark] .btn-outline-success.disabled{color:#75b798;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-info{color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-outline-info:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:active,html[data-netbox-color-mode=dark] .btn-outline-info.active,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info:focus,html[data-netbox-color-mode=dark] .btn-outline-info:active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html[data-netbox-color-mode=dark] .btn-outline-info:disabled,html[data-netbox-color-mode=dark] .btn-outline-info.disabled{color:#6edff6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-warning{color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-outline-warning:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:active,html[data-netbox-color-mode=dark] .btn-outline-warning.active,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,html[data-netbox-color-mode=dark] .btn-outline-warning:active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html[data-netbox-color-mode=dark] .btn-outline-warning:disabled,html[data-netbox-color-mode=dark] .btn-outline-warning.disabled{color:#ffda6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-danger{color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-outline-danger:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:active,html[data-netbox-color-mode=dark] .btn-outline-danger.active,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,html[data-netbox-color-mode=dark] .btn-outline-danger:active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html[data-netbox-color-mode=dark] .btn-outline-danger:disabled,html[data-netbox-color-mode=dark] .btn-outline-danger.disabled{color:#ea868f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-light{color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-outline-light:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:active,html[data-netbox-color-mode=dark] .btn-outline-light.active,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light:focus,html[data-netbox-color-mode=dark] .btn-outline-light:active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}html[data-netbox-color-mode=dark] .btn-outline-light:disabled,html[data-netbox-color-mode=dark] .btn-outline-light.disabled{color:#dee2e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-dark{color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-outline-dark:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:active,html[data-netbox-color-mode=dark] .btn-outline-dark.active,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,html[data-netbox-color-mode=dark] .btn-outline-dark:active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html[data-netbox-color-mode=dark] .btn-outline-dark:disabled,html[data-netbox-color-mode=dark] .btn-outline-dark.disabled{color:#adb5bd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue{color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-outline-blue:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:active,html[data-netbox-color-mode=dark] .btn-outline-blue.active,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,html[data-netbox-color-mode=dark] .btn-outline-blue:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html[data-netbox-color-mode=dark] .btn-outline-blue:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue.disabled{color:#6ea8fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo{color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-outline-indigo:hover{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:active,html[data-netbox-color-mode=dark] .btn-outline-indigo.active,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a370f780}html[data-netbox-color-mode=dark] .btn-outline-indigo:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo.disabled{color:#a370f7;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple{color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-outline-purple:hover{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:active,html[data-netbox-color-mode=dark] .btn-outline-purple.active,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,html[data-netbox-color-mode=dark] .btn-outline-purple:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a98eda80}html[data-netbox-color-mode=dark] .btn-outline-purple:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple.disabled{color:#a98eda;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink{color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-outline-pink:hover{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:active,html[data-netbox-color-mode=dark] .btn-outline-pink.active,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,html[data-netbox-color-mode=dark] .btn-outline-pink:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e685b580}html[data-netbox-color-mode=dark] .btn-outline-pink:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink.disabled{color:#e685b5;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red{color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-outline-red:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:active,html[data-netbox-color-mode=dark] .btn-outline-red.active,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red:focus,html[data-netbox-color-mode=dark] .btn-outline-red:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html[data-netbox-color-mode=dark] .btn-outline-red:disabled,html[data-netbox-color-mode=dark] .btn-outline-red.disabled{color:#ea868f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-orange{color:#feb272;border-color:#feb272}html[data-netbox-color-mode=dark] .btn-outline-orange:hover{color:#000;background-color:#feb272;border-color:#feb272}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-orange,html[data-netbox-color-mode=dark] .btn-outline-orange:focus{box-shadow:0 0 0 .25rem #feb27280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-orange,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-orange,html[data-netbox-color-mode=dark] .btn-outline-orange:active,html[data-netbox-color-mode=dark] .btn-outline-orange.active,html[data-netbox-color-mode=dark] .btn-outline-orange.dropdown-toggle.show{color:#000;background-color:#feb272;border-color:#feb272}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-orange:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-orange:focus,html[data-netbox-color-mode=dark] .btn-outline-orange:active:focus,html[data-netbox-color-mode=dark] .btn-outline-orange.active:focus,html[data-netbox-color-mode=dark] .btn-outline-orange.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #feb27280}html[data-netbox-color-mode=dark] .btn-outline-orange:disabled,html[data-netbox-color-mode=dark] .btn-outline-orange.disabled{color:#feb272;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow{color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-outline-yellow:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:active,html[data-netbox-color-mode=dark] .btn-outline-yellow.active,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html[data-netbox-color-mode=dark] .btn-outline-yellow:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow.disabled{color:#ffda6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green{color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-outline-green:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:active,html[data-netbox-color-mode=dark] .btn-outline-green.active,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green:focus,html[data-netbox-color-mode=dark] .btn-outline-green:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html[data-netbox-color-mode=dark] .btn-outline-green:disabled,html[data-netbox-color-mode=dark] .btn-outline-green.disabled{color:#75b798;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-teal{color:#79dfc1;border-color:#79dfc1}html[data-netbox-color-mode=dark] .btn-outline-teal:hover{color:#000;background-color:#79dfc1;border-color:#79dfc1}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-teal,html[data-netbox-color-mode=dark] .btn-outline-teal:focus{box-shadow:0 0 0 .25rem #79dfc180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-teal,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-teal,html[data-netbox-color-mode=dark] .btn-outline-teal:active,html[data-netbox-color-mode=dark] .btn-outline-teal.active,html[data-netbox-color-mode=dark] .btn-outline-teal.dropdown-toggle.show{color:#000;background-color:#79dfc1;border-color:#79dfc1}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-teal:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-teal:focus,html[data-netbox-color-mode=dark] .btn-outline-teal:active:focus,html[data-netbox-color-mode=dark] .btn-outline-teal.active:focus,html[data-netbox-color-mode=dark] .btn-outline-teal.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #79dfc180}html[data-netbox-color-mode=dark] .btn-outline-teal:disabled,html[data-netbox-color-mode=dark] .btn-outline-teal.disabled{color:#79dfc1;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan{color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-outline-cyan:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:active,html[data-netbox-color-mode=dark] .btn-outline-cyan.active,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html[data-netbox-color-mode=dark] .btn-outline-cyan:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan.disabled{color:#6edff6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray{color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-outline-gray:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:active,html[data-netbox-color-mode=dark] .btn-outline-gray.active,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,html[data-netbox-color-mode=dark] .btn-outline-gray:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}html[data-netbox-color-mode=dark] .btn-outline-gray:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray.disabled{color:#dee2e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-black{color:#000;border-color:#000}html[data-netbox-color-mode=dark] .btn-outline-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-black,html[data-netbox-color-mode=dark] .btn-outline-black:focus{box-shadow:0 0 0 .25rem #00000080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-black,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-black,html[data-netbox-color-mode=dark] .btn-outline-black:active,html[data-netbox-color-mode=dark] .btn-outline-black.active,html[data-netbox-color-mode=dark] .btn-outline-black.dropdown-toggle.show{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-black:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-black:focus,html[data-netbox-color-mode=dark] .btn-outline-black:active:focus,html[data-netbox-color-mode=dark] .btn-outline-black.active:focus,html[data-netbox-color-mode=dark] .btn-outline-black.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #00000080}html[data-netbox-color-mode=dark] .btn-outline-black:disabled,html[data-netbox-color-mode=dark] .btn-outline-black.disabled{color:#000;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-white{color:#fff;border-color:#fff}html[data-netbox-color-mode=dark] .btn-outline-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-white,html[data-netbox-color-mode=dark] .btn-outline-white:focus{box-shadow:0 0 0 .25rem #ffffff80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-white,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-white,html[data-netbox-color-mode=dark] .btn-outline-white:active,html[data-netbox-color-mode=dark] .btn-outline-white.active,html[data-netbox-color-mode=dark] .btn-outline-white.dropdown-toggle.show{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-white:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-white:focus,html[data-netbox-color-mode=dark] .btn-outline-white:active:focus,html[data-netbox-color-mode=dark] .btn-outline-white.active:focus,html[data-netbox-color-mode=dark] .btn-outline-white.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffffff80}html[data-netbox-color-mode=dark] .btn-outline-white:disabled,html[data-netbox-color-mode=dark] .btn-outline-white.disabled{color:#fff;background-color:transparent}html[data-netbox-color-mode=dark] .btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}html[data-netbox-color-mode=dark] .btn-link:hover{color:#0a58ca}html[data-netbox-color-mode=dark] .btn-link:disabled,html[data-netbox-color-mode=dark] .btn-link.disabled{color:#dee2e6}html[data-netbox-color-mode=dark] .btn-lg,html[data-netbox-color-mode=dark] .btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .btn-sm,html[data-netbox-color-mode=dark] .btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .fade{transition:none}}html[data-netbox-color-mode=dark] .fade:not(.show){opacity:0}html[data-netbox-color-mode=dark] .collapse:not(.show){display:none}html[data-netbox-color-mode=dark] .collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .collapsing{transition:none}}html[data-netbox-color-mode=dark] .dropup,html[data-netbox-color-mode=dark] .dropend,html[data-netbox-color-mode=dark] .dropdown,html[data-netbox-color-mode=dark] .dropstart{position:relative}html[data-netbox-color-mode=dark] .dropdown-toggle{white-space:nowrap}html[data-netbox-color-mode=dark] .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}html[data-netbox-color-mode=dark] .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#fff;text-align:left;list-style:none;background-color:#212529;background-clip:padding-box;border:1px solid rgba(255,255,255,.15);border-radius:.375rem}html[data-netbox-color-mode=dark] .dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}html[data-netbox-color-mode=dark] .dropdown-menu-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .dropdown-menu-sm-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-sm-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .dropdown-menu-md-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-md-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .dropdown-menu-lg-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-lg-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .dropdown-menu-xl-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-xl-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}html[data-netbox-color-mode=dark] .dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after{vertical-align:0}html[data-netbox-color-mode=dark] .dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after{display:none}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before{vertical-align:0}html[data-netbox-color-mode=dark] .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}html[data-netbox-color-mode=dark] .dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#f8f9fa;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}html[data-netbox-color-mode=dark] .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-item:focus{color:#fff;background-color:#6c757d}html[data-netbox-color-mode=dark] .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}html[data-netbox-color-mode=dark] .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-item:disabled{color:#343a40;pointer-events:none;background-color:transparent}html[data-netbox-color-mode=dark] .dropdown-menu.show{display:block}html[data-netbox-color-mode=dark] .dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}html[data-netbox-color-mode=dark] .dropdown-item-text{display:block;padding:.25rem 1rem;color:#f8f9fa}html[data-netbox-color-mode=dark] .dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item{color:#dee2e6}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-divider{border-color:#00000026}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item-text{color:#dee2e6}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-header{color:#adb5bd}html[data-netbox-color-mode=dark] .btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}html[data-netbox-color-mode=dark] .btn-group>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn{position:relative;flex:1 1 auto}html[data-netbox-color-mode=dark] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:hover,html[data-netbox-color-mode=dark] .btn-group>.btn:focus,html[data-netbox-color-mode=dark] .btn-group>.btn:active,html[data-netbox-color-mode=dark] .btn-group>.btn.active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn.active{z-index:1}html[data-netbox-color-mode=dark] .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .btn-toolbar .input-group{width:auto}html[data-netbox-color-mode=dark] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child){margin-left:-1px}html[data-netbox-color-mode=dark] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=dark] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=dark] .dropdown-toggle-split:after{margin-left:0}.dropstart html[data-netbox-color-mode=dark] .dropdown-toggle-split:before{margin-right:0}html[data-netbox-color-mode=dark] .btn-sm+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}html[data-netbox-color-mode=dark] .btn-lg+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}html[data-netbox-color-mode=dark] .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group{width:100%}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}html[data-netbox-color-mode=dark] .nav-link{display:block;padding:.5rem 1rem;color:#fff;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .nav-link{transition:none}}html[data-netbox-color-mode=dark] .nav-link.disabled{color:#343a40;pointer-events:none;cursor:default}html[data-netbox-color-mode=dark] .nav-tabs{border-bottom:1px solid #495057}html[data-netbox-color-mode=dark] .nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:focus{border-color:rgba(52,58,64,.5) rgba(52,58,64,.5) #495057;isolation:isolate}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.disabled{color:#343a40;background-color:transparent;border-color:transparent}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-item.show .nav-link{color:#f8f9fa;background-color:#1b1f22;border-color:#343a40 #343a40 #1b1f22}html[data-netbox-color-mode=dark] .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .nav-pills .nav-link{background:none;border:0;border-radius:.375rem}html[data-netbox-color-mode=dark] .nav-pills .nav-link.active,html[data-netbox-color-mode=dark] .nav-pills .show>.nav-link{color:#000;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .nav-fill>.nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item{flex:1 1 auto;text-align:center}html[data-netbox-color-mode=dark] .nav-justified>.nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}html[data-netbox-color-mode=dark] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item .nav-link{width:100%}html[data-netbox-color-mode=dark] .tab-content>.tab-pane{display:none}html[data-netbox-color-mode=dark] .tab-content>.active{display:block}html[data-netbox-color-mode=dark] .navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar>.container,html[data-netbox-color-mode=dark] .navbar>.container-fluid,html[data-netbox-color-mode=dark] .navbar>.container-sm,html[data-netbox-color-mode=dark] .navbar>.container-md,html[data-netbox-color-mode=dark] .navbar>.container-lg,html[data-netbox-color-mode=dark] .navbar>.container-xl,html[data-netbox-color-mode=dark] .navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}html[data-netbox-color-mode=dark] .navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}html[data-netbox-color-mode=dark] .navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}html[data-netbox-color-mode=dark] .navbar-nav .nav-link{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] .navbar-nav .dropdown-menu{position:static}html[data-netbox-color-mode=dark] .navbar-text{padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}html[data-netbox-color-mode=dark] .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .navbar-toggler{transition:none}}html[data-netbox-color-mode=dark] .navbar-toggler:hover{text-decoration:none}html[data-netbox-color-mode=dark] .navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}html[data-netbox-color-mode=dark] .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}html[data-netbox-color-mode=dark] .navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-toggler{display:none}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-toggler{display:none}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-toggler{display:none}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-toggler{display:none}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-toggler{display:none}}html[data-netbox-color-mode=dark] .navbar-expand{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand .navbar-toggler{display:none}html[data-netbox-color-mode=dark] .navbar-light .navbar-brand{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:focus{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link{color:#1b1f22}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:focus{color:#000000b3}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.active{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler{color:#1b1f22;border-color:#495057}html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23495057' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .navbar-light .navbar-text{color:#1b1f22}html[data-netbox-color-mode=dark] .navbar-light .navbar-text a,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:focus{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:focus{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link{color:#ffffff8c}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.active{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .navbar-dark .navbar-text{color:#ffffff8c}html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:focus{color:#fff}html[data-netbox-color-mode=dark] .card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#212529;background-clip:border-box;border:1px solid rgba(255,255,255,.125);border-radius:.375rem}html[data-netbox-color-mode=dark] .card>hr{margin-right:0;margin-left:0}html[data-netbox-color-mode=dark] .card>.list-group{border-top:inherit;border-bottom:inherit}html[data-netbox-color-mode=dark] .card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card>.card-header+.list-group,html[data-netbox-color-mode=dark] .card>.list-group+.card-footer{border-top:0}html[data-netbox-color-mode=dark] .card-body{flex:1 1 auto;padding:1rem}html[data-netbox-color-mode=dark] .card-title{margin-bottom:.5rem}html[data-netbox-color-mode=dark] .card-subtitle{margin-top:-.25rem;margin-bottom:0}html[data-netbox-color-mode=dark] .card-text:last-child{margin-bottom:0}html[data-netbox-color-mode=dark] .card-link:hover{text-decoration:none}html[data-netbox-color-mode=dark] .card-link+.card-link{margin-left:1rem}html[data-netbox-color-mode=dark] .card-header{padding:.5rem 1rem;margin-bottom:0;background-color:"unset";border-bottom:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .card-header:first-child{border-radius:calc(0.375rem - 1px) calc(0.375rem - 1px) 0 0}html[data-netbox-color-mode=dark] .card-footer{padding:.5rem 1rem;background-color:"unset";border-top:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .card-footer:last-child{border-radius:0 0 calc(0.375rem - 1px) calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}html[data-netbox-color-mode=dark] .card-header-tabs .nav-link.active{background-color:#212529;border-bottom-color:#212529}html[data-netbox-color-mode=dark] .card-header-pills{margin-right:-.5rem;margin-left:-.5rem}html[data-netbox-color-mode=dark] .card-img-overlay{position:absolute;inset:0;padding:1rem;border-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=dark] .card-img-bottom{width:100%}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-bottom{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .card-group{display:flex;flex-flow:row wrap}html[data-netbox-color-mode=dark] .card-group>.card{flex:1 0 0%;margin-bottom:0}html[data-netbox-color-mode=dark] .card-group>.card+.card{margin-left:0;border-left:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}html[data-netbox-color-mode=dark] .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#fff;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .accordion-button{transition:none}}html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed){color:#000;background-color:#6397e5;box-shadow:inset 0 -1px #495057}html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}html[data-netbox-color-mode=dark] .accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .accordion-button:after{transition:none}}html[data-netbox-color-mode=dark] .accordion-button:hover{z-index:2}html[data-netbox-color-mode=dark] .accordion-button:focus{z-index:3;border-color:#7db1fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .accordion-header{margin-bottom:0}html[data-netbox-color-mode=dark] .accordion-item{background-color:transparent;border:1px solid #495057}html[data-netbox-color-mode=dark] .accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .accordion-item:not(:first-of-type){border-top:0}html[data-netbox-color-mode=dark] .accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-body{padding:1rem 1.25rem}html[data-netbox-color-mode=dark] .accordion-flush .accordion-collapse{border-width:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:first-child{border-top:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:last-child{border-bottom:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item .accordion-button{border-radius:0}html[data-netbox-color-mode=dark] .breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#f8f9fa;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='%23f8f9fa'/%3E%3C/svg%3E"))}html[data-netbox-color-mode=dark] .breadcrumb-item.active{color:#fff}html[data-netbox-color-mode=dark] .pagination{display:flex;padding-left:0;list-style:none}html[data-netbox-color-mode=dark] .page-link{position:relative;display:block;color:#9ec5fe;text-decoration:none;background-color:#343a40;border:1px solid #6c757d;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .page-link{transition:none}}html[data-netbox-color-mode=dark] .page-link:hover{z-index:2;color:#cfe2ff;background-color:#ced4da;border-color:#adb5bd}html[data-netbox-color-mode=dark] .page-link:focus{z-index:3;color:#cfe2ff;background-color:#ced4da;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .page-item:not(:first-child) .page-link{margin-left:-1px}html[data-netbox-color-mode=dark] .page-item.active .page-link{z-index:3;color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#343a40;border-color:#6c757d}html[data-netbox-color-mode=dark] .page-link{padding:.375rem .75rem}html[data-netbox-color-mode=dark] .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}html[data-netbox-color-mode=dark] .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}html[data-netbox-color-mode=dark] .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}html[data-netbox-color-mode=dark] .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}html[data-netbox-color-mode=dark] .badge:empty{display:none}html[data-netbox-color-mode=dark] .btn .badge{position:relative;top:-1px}html[data-netbox-color-mode=dark] .alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}html[data-netbox-color-mode=dark] .alert-heading{color:inherit}html[data-netbox-color-mode=dark] .alert-link{font-weight:700}html[data-netbox-color-mode=dark] .alert-dismissible{padding-right:3rem}html[data-netbox-color-mode=dark] .alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}html[data-netbox-color-mode=dark] .alert-primary{color:#162233;background-color:#75acfe;border-color:#8bb9fe}html[data-netbox-color-mode=dark] .alert-primary .alert-link{color:#121b29}html[data-netbox-color-mode=dark] .alert-secondary{color:#232426;background-color:#b1b9c0;border-color:#bdc4ca}html[data-netbox-color-mode=dark] .alert-secondary .alert-link{color:#1c1d1e}html[data-netbox-color-mode=dark] .alert-success{color:#17251e;background-color:#7cbb9d;border-color:#91c5ad}html[data-netbox-color-mode=dark] .alert-success .alert-link{color:#121e18}html[data-netbox-color-mode=dark] .alert-info{color:#162d31;background-color:#75e1f6;border-color:#8be5f8}html[data-netbox-color-mode=dark] .alert-info .alert-link{color:#122427}html[data-netbox-color-mode=dark] .alert-warning{color:#332c15;background-color:#ffdc71;border-color:#ffe188}html[data-netbox-color-mode=dark] .alert-warning .alert-link{color:#292311}html[data-netbox-color-mode=dark] .alert-danger{color:#2f1b1d;background-color:#eb8c95;border-color:#ee9ea5}html[data-netbox-color-mode=dark] .alert-danger .alert-link{color:#261617}html[data-netbox-color-mode=dark] .alert-light{color:#2c2d2e;background-color:#e0e3e7;border-color:#e5e8eb}html[data-netbox-color-mode=dark] .alert-light .alert-link{color:#232425}html[data-netbox-color-mode=dark] .alert-dark{color:#232426;background-color:#b1b9c0;border-color:#bdc4ca}html[data-netbox-color-mode=dark] .alert-dark .alert-link{color:#1c1d1e}html[data-netbox-color-mode=dark] .alert-blue{color:#162233;background-color:#75acfe;border-color:#8bb9fe}html[data-netbox-color-mode=dark] .alert-blue .alert-link{color:#121b29}html[data-netbox-color-mode=dark] .alert-indigo{color:#211631;background-color:#a877f7;border-color:#b58df9}html[data-netbox-color-mode=dark] .alert-indigo .alert-link{color:#1a1227}html[data-netbox-color-mode=dark] .alert-purple{color:#221c2c;background-color:#ad94dc;border-color:#baa5e1}html[data-netbox-color-mode=dark] .alert-purple .alert-link{color:#1b1623}html[data-netbox-color-mode=dark] .alert-pink{color:#2e1b24;background-color:#e78bb9;border-color:#eb9dc4}html[data-netbox-color-mode=dark] .alert-pink .alert-link{color:#25161d}html[data-netbox-color-mode=dark] .alert-red{color:#2f1b1d;background-color:#eb8c95;border-color:#ee9ea5}html[data-netbox-color-mode=dark] .alert-red .alert-link{color:#261617}html[data-netbox-color-mode=dark] .alert-orange{color:#332417;background-color:#feb679;border-color:#fec18e}html[data-netbox-color-mode=dark] .alert-orange .alert-link{color:#291d12}html[data-netbox-color-mode=dark] .alert-yellow{color:#332c15;background-color:#ffdc71;border-color:#ffe188}html[data-netbox-color-mode=dark] .alert-yellow .alert-link{color:#292311}html[data-netbox-color-mode=dark] .alert-green{color:#17251e;background-color:#7cbb9d;border-color:#91c5ad}html[data-netbox-color-mode=dark] .alert-green .alert-link{color:#121e18}html[data-netbox-color-mode=dark] .alert-teal{color:#182d27;background-color:#80e1c4;border-color:#94e5cd}html[data-netbox-color-mode=dark] .alert-teal .alert-link{color:#13241f}html[data-netbox-color-mode=dark] .alert-cyan{color:#162d31;background-color:#75e1f6;border-color:#8be5f8}html[data-netbox-color-mode=dark] .alert-cyan .alert-link{color:#122427}html[data-netbox-color-mode=dark] .alert-gray{color:#2c2d2e;background-color:#e0e3e7;border-color:#e5e8eb}html[data-netbox-color-mode=dark] .alert-gray .alert-link{color:#232425}html[data-netbox-color-mode=dark] .alert-black{color:#ccc;background-color:#0d0d0d;border-color:#333}html[data-netbox-color-mode=dark] .alert-black .alert-link{color:#a3a3a3}html[data-netbox-color-mode=dark] .alert-white{color:#333;background-color:#fff;border-color:#fff}html[data-netbox-color-mode=dark] .alert-white .alert-link{color:#292929}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}html[data-netbox-color-mode=dark] .progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#6c757d;border-radius:.375rem}html[data-netbox-color-mode=dark] .progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#6ea8fe;transition:width .6s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .progress-bar{transition:none}}html[data-netbox-color-mode=dark] .progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}html[data-netbox-color-mode=dark] .progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .progress-bar-animated{animation:none}}html[data-netbox-color-mode=dark] .list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}html[data-netbox-color-mode=dark] .list-group-numbered{list-style-type:none;counter-reset:section}html[data-netbox-color-mode=dark] .list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}html[data-netbox-color-mode=dark] .list-group-item-action{width:100%;color:#dee2e6;text-align:inherit}html[data-netbox-color-mode=dark] .list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-action:focus{z-index:1;color:#fff;text-decoration:none;background-color:#f8f9fa26}html[data-netbox-color-mode=dark] .list-group-item-action:active{color:#fff;background-color:#dee2e620}html[data-netbox-color-mode=dark] .list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#fff;text-decoration:none;background-color:#212529;border:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}html[data-netbox-color-mode=dark] .list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}html[data-netbox-color-mode=dark] .list-group-item.disabled,html[data-netbox-color-mode=dark] .list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#212529}html[data-netbox-color-mode=dark] .list-group-item.active{z-index:2;color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item{border-top-width:0}html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active{margin-top:-1px;border-top-width:1px}html[data-netbox-color-mode=dark] .list-group-horizontal{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){html[data-netbox-color-mode=dark] .list-group-horizontal-sm{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .list-group-horizontal-md{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .list-group-horizontal-lg{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .list-group-horizontal-xl{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .list-group-horizontal-xxl{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}html[data-netbox-color-mode=dark] .list-group-flush{border-radius:0}html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item{border-width:0 0 1px}html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item:last-child{border-bottom-width:0}html[data-netbox-color-mode=dark] .list-group-item-primary{color:#426598;background-color:#e2eeff}html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}html[data-netbox-color-mode=dark] .list-group-item-secondary{color:#686d71;background-color:#eff0f2}html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}html[data-netbox-color-mode=dark] .list-group-item-success{color:#466e5b;background-color:#e3f1ea}html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}html[data-netbox-color-mode=dark] .list-group-item-info{color:#2c5962;background-color:#e2f9fd}html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}html[data-netbox-color-mode=dark] .list-group-item-warning{color:#66572a;background-color:#fff8e1}html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}html[data-netbox-color-mode=dark] .list-group-item-danger{color:#8c5056;background-color:#fbe7e9}html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}html[data-netbox-color-mode=dark] .list-group-item-light{color:#595a5c;background-color:#f8f9fa}html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}html[data-netbox-color-mode=dark] .list-group-item-dark{color:#686d71;background-color:#eff0f2}html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}html[data-netbox-color-mode=dark] .list-group-item-blue{color:#426598;background-color:#e2eeff}html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}html[data-netbox-color-mode=dark] .list-group-item-indigo{color:#624394;background-color:#ede2fd}html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:focus{color:#624394;background-color:#d5cbe4}html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#624394;border-color:#624394}html[data-netbox-color-mode=dark] .list-group-item-purple{color:#655583;background-color:#eee8f8}html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:focus{color:#655583;background-color:#d6d1df}html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#655583;border-color:#655583}html[data-netbox-color-mode=dark] .list-group-item-pink{color:#8a506d;background-color:#fae7f0}html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:focus{color:#8a506d;background-color:#e1d0d8}html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#8a506d;border-color:#8a506d}html[data-netbox-color-mode=dark] .list-group-item-red{color:#8c5056;background-color:#fbe7e9}html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}html[data-netbox-color-mode=dark] .list-group-item-orange{color:#66472e;background-color:#fff0e3}html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action:focus{color:#66472e;background-color:#e6d8cc}html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action.active{color:#fff;background-color:#66472e;border-color:#66472e}html[data-netbox-color-mode=dark] .list-group-item-yellow{color:#66572a;background-color:#fff8e1}html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}html[data-netbox-color-mode=dark] .list-group-item-green{color:#466e5b;background-color:#e3f1ea}html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}html[data-netbox-color-mode=dark] .list-group-item-teal{color:#30594d;background-color:#e4f9f3}html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action:focus{color:#30594d;background-color:#cde0db}html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action.active{color:#fff;background-color:#30594d;border-color:#30594d}html[data-netbox-color-mode=dark] .list-group-item-cyan{color:#2c5962;background-color:#e2f9fd}html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}html[data-netbox-color-mode=dark] .list-group-item-gray{color:#595a5c;background-color:#f8f9fa}html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}html[data-netbox-color-mode=dark] .list-group-item-black{color:#000;background-color:#ccc}html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action:focus{color:#000;background-color:#b8b8b8}html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action.active{color:#fff;background-color:#000;border-color:#000}html[data-netbox-color-mode=dark] .list-group-item-white{color:#666;background-color:#fff}html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action:focus{color:#666;background-color:#e6e6e6}html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action.active{color:#fff;background-color:#666;border-color:#666}html[data-netbox-color-mode=dark] .btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#fff;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}html[data-netbox-color-mode=dark] .btn-close:hover{color:#fff;text-decoration:none;opacity:.75}html[data-netbox-color-mode=dark] .btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}html[data-netbox-color-mode=dark] .btn-close:disabled,html[data-netbox-color-mode=dark] .btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}html[data-netbox-color-mode=dark] .btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}html[data-netbox-color-mode=dark] .toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}html[data-netbox-color-mode=dark] .toast:not(.showing):not(.show){opacity:0}html[data-netbox-color-mode=dark] .toast.hide{display:none}html[data-netbox-color-mode=dark] .toast-container{width:max-content;max-width:100%;pointer-events:none}html[data-netbox-color-mode=dark] .toast-container>:not(:last-child){margin-bottom:.75rem}html[data-netbox-color-mode=dark] .toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}html[data-netbox-color-mode=dark] .toast-body{padding:.75rem;word-wrap:break-word}html[data-netbox-color-mode=dark] .modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}html[data-netbox-color-mode=dark] .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade html[data-netbox-color-mode=dark] .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade html[data-netbox-color-mode=dark] .modal-dialog{transition:none}}.modal.show html[data-netbox-color-mode=dark] .modal-dialog{transform:none}.modal.modal-static html[data-netbox-color-mode=dark] .modal-dialog{transform:scale(1.02)}html[data-netbox-color-mode=dark] .modal-dialog-scrollable{height:calc(100% - 1rem)}html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}html[data-netbox-color-mode=dark] .modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#343a40;background-clip:padding-box;border:1px solid rgba(255,255,255,.2);border-radius:.75rem;outline:0}html[data-netbox-color-mode=dark] .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}html[data-netbox-color-mode=dark] .modal-backdrop.fade{opacity:0}html[data-netbox-color-mode=dark] .modal-backdrop.show{opacity:.5}html[data-netbox-color-mode=dark] .modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #495057;border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}html[data-netbox-color-mode=dark] .modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}html[data-netbox-color-mode=dark] .modal-title{margin-bottom:0;line-height:1.5}html[data-netbox-color-mode=dark] .modal-body{position:relative;flex:1 1 auto;padding:1rem}html[data-netbox-color-mode=dark] .modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #495057;border-bottom-right-radius:calc(0.75rem - 1px);border-bottom-left-radius:calc(0.75rem - 1px)}html[data-netbox-color-mode=dark] .modal-footer>*{margin:.25rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .modal-dialog{max-width:500px;margin:1.75rem auto}html[data-netbox-color-mode=dark] .modal-dialog-scrollable{height:calc(100% - 3.5rem)}html[data-netbox-color-mode=dark] .modal-dialog-centered{min-height:calc(100% - 3.5rem)}html[data-netbox-color-mode=dark] .modal-sm{max-width:300px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .modal-lg,html[data-netbox-color-mode=dark] .modal-xl{max-width:800px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .modal-xl{max-width:1140px}}html[data-netbox-color-mode=dark] .modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-footer{border-radius:0}@media (max-width: 575.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width: 1199.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width: 1399.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-footer{border-radius:0}}html[data-netbox-color-mode=dark] .tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}html[data-netbox-color-mode=dark] .tooltip.show{opacity:.9}html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}html[data-netbox-color-mode=dark] .bs-tooltip-top,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-end,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-bottom,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-start,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#495057}html[data-netbox-color-mode=dark] .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#495057;border-radius:.375rem}html[data-netbox-color-mode=dark] .popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#495057;background-clip:padding-box;border:1px solid rgba(255,255,255,.2);border-radius:.75rem}html[data-netbox-color-mode=dark] .popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}html[data-netbox-color-mode=dark] .popover .popover-arrow:before,html[data-netbox-color-mode=dark] .popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-bottom .popover-header:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #454b52}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#495057}html[data-netbox-color-mode=dark] .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#454b52;border-bottom:1px solid rgba(255,255,255,.2);border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}html[data-netbox-color-mode=dark] .popover-header:empty{display:none}html[data-netbox-color-mode=dark] .popover-body{padding:1rem;color:#fff}html[data-netbox-color-mode=dark] .carousel{position:relative}html[data-netbox-color-mode=dark] .carousel.pointer-event{touch-action:pan-y}html[data-netbox-color-mode=dark] .carousel-inner{position:relative;width:100%;overflow:hidden}html[data-netbox-color-mode=dark] .carousel-inner:after{display:block;clear:both;content:""}html[data-netbox-color-mode=dark] .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-item{transition:none}}html[data-netbox-color-mode=dark] .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-item-next,html[data-netbox-color-mode=dark] .carousel-item-prev{display:block}html[data-netbox-color-mode=dark] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=dark] .active.carousel-item-end{transform:translate(100%)}html[data-netbox-color-mode=dark] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=dark] .active.carousel-item-start{transform:translate(-100%)}html[data-netbox-color-mode=dark] .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}html[data-netbox-color-mode=dark] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end{transition:none}}html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next{transition:none}}html[data-netbox-color-mode=dark] .carousel-control-prev:hover,html[data-netbox-color-mode=dark] .carousel-control-prev:focus,html[data-netbox-color-mode=dark] .carousel-control-next:hover,html[data-netbox-color-mode=dark] .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}html[data-netbox-color-mode=dark] .carousel-control-prev{left:0}html[data-netbox-color-mode=dark] .carousel-control-next{right:0}html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}html[data-netbox-color-mode=dark] .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target]{transition:none}}html[data-netbox-color-mode=dark] .carousel-indicators .active{opacity:1}html[data-netbox-color-mode=dark] .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}html[data-netbox-color-mode=dark] .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}html[data-netbox-color-mode=dark] .carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg)}}html[data-netbox-color-mode=dark] .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}html[data-netbox-color-mode=dark] .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}html[data-netbox-color-mode=dark] .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}html[data-netbox-color-mode=dark] .spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=dark] .spinner-grow{animation-duration:1.5s}}html[data-netbox-color-mode=dark] .clearfix:after{display:block;clear:both;content:""}html[data-netbox-color-mode=dark] .link-primary{color:#6ea8fe}html[data-netbox-color-mode=dark] .link-primary:hover,html[data-netbox-color-mode=dark] .link-primary:focus{color:#8bb9fe}html[data-netbox-color-mode=dark] .link-secondary{color:#adb5bd}html[data-netbox-color-mode=dark] .link-secondary:hover,html[data-netbox-color-mode=dark] .link-secondary:focus{color:#bdc4ca}html[data-netbox-color-mode=dark] .link-success{color:#75b798}html[data-netbox-color-mode=dark] .link-success:hover,html[data-netbox-color-mode=dark] .link-success:focus{color:#91c5ad}html[data-netbox-color-mode=dark] .link-info{color:#6edff6}html[data-netbox-color-mode=dark] .link-info:hover,html[data-netbox-color-mode=dark] .link-info:focus{color:#8be5f8}html[data-netbox-color-mode=dark] .link-warning{color:#ffda6a}html[data-netbox-color-mode=dark] .link-warning:hover,html[data-netbox-color-mode=dark] .link-warning:focus{color:#ffe188}html[data-netbox-color-mode=dark] .link-danger{color:#ea868f}html[data-netbox-color-mode=dark] .link-danger:hover,html[data-netbox-color-mode=dark] .link-danger:focus{color:#ee9ea5}html[data-netbox-color-mode=dark] .link-light{color:#dee2e6}html[data-netbox-color-mode=dark] .link-light:hover,html[data-netbox-color-mode=dark] .link-light:focus{color:#e5e8eb}html[data-netbox-color-mode=dark] .link-dark{color:#adb5bd}html[data-netbox-color-mode=dark] .link-dark:hover,html[data-netbox-color-mode=dark] .link-dark:focus{color:#bdc4ca}html[data-netbox-color-mode=dark] .link-blue{color:#6ea8fe}html[data-netbox-color-mode=dark] .link-blue:hover,html[data-netbox-color-mode=dark] .link-blue:focus{color:#8bb9fe}html[data-netbox-color-mode=dark] .link-indigo{color:#a370f7}html[data-netbox-color-mode=dark] .link-indigo:hover,html[data-netbox-color-mode=dark] .link-indigo:focus{color:#b58df9}html[data-netbox-color-mode=dark] .link-purple{color:#a98eda}html[data-netbox-color-mode=dark] .link-purple:hover,html[data-netbox-color-mode=dark] .link-purple:focus{color:#baa5e1}html[data-netbox-color-mode=dark] .link-pink{color:#e685b5}html[data-netbox-color-mode=dark] .link-pink:hover,html[data-netbox-color-mode=dark] .link-pink:focus{color:#eb9dc4}html[data-netbox-color-mode=dark] .link-red{color:#ea868f}html[data-netbox-color-mode=dark] .link-red:hover,html[data-netbox-color-mode=dark] .link-red:focus{color:#ee9ea5}html[data-netbox-color-mode=dark] .link-orange{color:#feb272}html[data-netbox-color-mode=dark] .link-orange:hover,html[data-netbox-color-mode=dark] .link-orange:focus{color:#fec18e}html[data-netbox-color-mode=dark] .link-yellow{color:#ffda6a}html[data-netbox-color-mode=dark] .link-yellow:hover,html[data-netbox-color-mode=dark] .link-yellow:focus{color:#ffe188}html[data-netbox-color-mode=dark] .link-green{color:#75b798}html[data-netbox-color-mode=dark] .link-green:hover,html[data-netbox-color-mode=dark] .link-green:focus{color:#91c5ad}html[data-netbox-color-mode=dark] .link-teal{color:#79dfc1}html[data-netbox-color-mode=dark] .link-teal:hover,html[data-netbox-color-mode=dark] .link-teal:focus{color:#94e5cd}html[data-netbox-color-mode=dark] .link-cyan{color:#6edff6}html[data-netbox-color-mode=dark] .link-cyan:hover,html[data-netbox-color-mode=dark] .link-cyan:focus{color:#8be5f8}html[data-netbox-color-mode=dark] .link-gray{color:#dee2e6}html[data-netbox-color-mode=dark] .link-gray:hover,html[data-netbox-color-mode=dark] .link-gray:focus{color:#e5e8eb}html[data-netbox-color-mode=dark] .link-black{color:#000}html[data-netbox-color-mode=dark] .link-black:hover,html[data-netbox-color-mode=dark] .link-black:focus{color:#000}html[data-netbox-color-mode=dark] .link-white{color:#fff}html[data-netbox-color-mode=dark] .link-white:hover,html[data-netbox-color-mode=dark] .link-white:focus{color:#fff}html[data-netbox-color-mode=dark] .ratio{position:relative;width:100%}html[data-netbox-color-mode=dark] .ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}html[data-netbox-color-mode=dark] .ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}html[data-netbox-color-mode=dark] .ratio-1x1{--bs-aspect-ratio: 100%}html[data-netbox-color-mode=dark] .ratio-4x3{--bs-aspect-ratio: 75%}html[data-netbox-color-mode=dark] .ratio-16x9{--bs-aspect-ratio: 56.25%}html[data-netbox-color-mode=dark] .ratio-21x9{--bs-aspect-ratio: 42.8571428571%}html[data-netbox-color-mode=dark] .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}html[data-netbox-color-mode=dark] .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}html[data-netbox-color-mode=dark] .sticky-top{position:sticky;top:0;z-index:1020}@media (min-width: 576px){html[data-netbox-color-mode=dark] .sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .sticky-xxl-top{position:sticky;top:0;z-index:1020}}html[data-netbox-color-mode=dark] .visually-hidden,html[data-netbox-color-mode=dark] .visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}html[data-netbox-color-mode=dark] .stretched-link:after{position:absolute;inset:0;z-index:1;content:""}html[data-netbox-color-mode=dark] .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html[data-netbox-color-mode=dark] .align-baseline{vertical-align:baseline!important}html[data-netbox-color-mode=dark] .align-top{vertical-align:top!important}html[data-netbox-color-mode=dark] .align-middle{vertical-align:middle!important}html[data-netbox-color-mode=dark] .align-bottom{vertical-align:bottom!important}html[data-netbox-color-mode=dark] .align-text-bottom{vertical-align:text-bottom!important}html[data-netbox-color-mode=dark] .align-text-top{vertical-align:text-top!important}html[data-netbox-color-mode=dark] .float-start{float:left!important}html[data-netbox-color-mode=dark] .float-end{float:right!important}html[data-netbox-color-mode=dark] .float-none{float:none!important}html[data-netbox-color-mode=dark] .overflow-auto{overflow:auto!important}html[data-netbox-color-mode=dark] .overflow-hidden{overflow:hidden!important}html[data-netbox-color-mode=dark] .overflow-visible{overflow:visible!important}html[data-netbox-color-mode=dark] .overflow-scroll{overflow:scroll!important}html[data-netbox-color-mode=dark] .d-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-block{display:block!important}html[data-netbox-color-mode=dark] .d-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-table{display:table!important}html[data-netbox-color-mode=dark] .d-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-none{display:none!important}html[data-netbox-color-mode=dark] .shadow{box-shadow:0 .5rem 1rem #00000026!important}html[data-netbox-color-mode=dark] .shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}html[data-netbox-color-mode=dark] .shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}html[data-netbox-color-mode=dark] .shadow-none{box-shadow:none!important}html[data-netbox-color-mode=dark] .position-static{position:static!important}html[data-netbox-color-mode=dark] .position-relative{position:relative!important}html[data-netbox-color-mode=dark] .position-absolute{position:absolute!important}html[data-netbox-color-mode=dark] .position-fixed{position:fixed!important}html[data-netbox-color-mode=dark] .position-sticky{position:sticky!important}html[data-netbox-color-mode=dark] .top-0{top:0!important}html[data-netbox-color-mode=dark] .top-50{top:50%!important}html[data-netbox-color-mode=dark] .top-100{top:100%!important}html[data-netbox-color-mode=dark] .bottom-0{bottom:0!important}html[data-netbox-color-mode=dark] .bottom-50{bottom:50%!important}html[data-netbox-color-mode=dark] .bottom-100{bottom:100%!important}html[data-netbox-color-mode=dark] .start-0{left:0!important}html[data-netbox-color-mode=dark] .start-50{left:50%!important}html[data-netbox-color-mode=dark] .start-100{left:100%!important}html[data-netbox-color-mode=dark] .end-0{right:0!important}html[data-netbox-color-mode=dark] .end-50{right:50%!important}html[data-netbox-color-mode=dark] .end-100{right:100%!important}html[data-netbox-color-mode=dark] .translate-middle{transform:translate(-50%,-50%)!important}html[data-netbox-color-mode=dark] .translate-middle-x{transform:translate(-50%)!important}html[data-netbox-color-mode=dark] .translate-middle-y{transform:translateY(-50%)!important}html[data-netbox-color-mode=dark] .border{border:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-0{border:0!important}html[data-netbox-color-mode=dark] .border-top{border-top:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-top-0{border-top:0!important}html[data-netbox-color-mode=dark] .border-end{border-right:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-end-0{border-right:0!important}html[data-netbox-color-mode=dark] .border-bottom{border-bottom:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-bottom-0{border-bottom:0!important}html[data-netbox-color-mode=dark] .border-start{border-left:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-start-0{border-left:0!important}html[data-netbox-color-mode=dark] .border-primary{border-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .border-secondary{border-color:#adb5bd!important}html[data-netbox-color-mode=dark] .border-success{border-color:#75b798!important}html[data-netbox-color-mode=dark] .border-info{border-color:#6edff6!important}html[data-netbox-color-mode=dark] .border-warning{border-color:#ffda6a!important}html[data-netbox-color-mode=dark] .border-danger{border-color:#ea868f!important}html[data-netbox-color-mode=dark] .border-light{border-color:#dee2e6!important}html[data-netbox-color-mode=dark] .border-dark{border-color:#adb5bd!important}html[data-netbox-color-mode=dark] .border-blue{border-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .border-indigo{border-color:#a370f7!important}html[data-netbox-color-mode=dark] .border-purple{border-color:#a98eda!important}html[data-netbox-color-mode=dark] .border-pink{border-color:#e685b5!important}html[data-netbox-color-mode=dark] .border-red{border-color:#ea868f!important}html[data-netbox-color-mode=dark] .border-orange{border-color:#feb272!important}html[data-netbox-color-mode=dark] .border-yellow{border-color:#ffda6a!important}html[data-netbox-color-mode=dark] .border-green{border-color:#75b798!important}html[data-netbox-color-mode=dark] .border-teal{border-color:#79dfc1!important}html[data-netbox-color-mode=dark] .border-cyan{border-color:#6edff6!important}html[data-netbox-color-mode=dark] .border-gray{border-color:#dee2e6!important}html[data-netbox-color-mode=dark] .border-black{border-color:#000!important}html[data-netbox-color-mode=dark] .border-white{border-color:#fff!important}html[data-netbox-color-mode=dark] .border-1{border-width:1px!important}html[data-netbox-color-mode=dark] .border-2{border-width:2px!important}html[data-netbox-color-mode=dark] .border-3{border-width:3px!important}html[data-netbox-color-mode=dark] .border-4{border-width:4px!important}html[data-netbox-color-mode=dark] .border-5{border-width:5px!important}html[data-netbox-color-mode=dark] .w-25{width:25%!important}html[data-netbox-color-mode=dark] .w-50{width:50%!important}html[data-netbox-color-mode=dark] .w-75{width:75%!important}html[data-netbox-color-mode=dark] .w-100{width:100%!important}html[data-netbox-color-mode=dark] .w-auto{width:auto!important}html[data-netbox-color-mode=dark] .mw-100{max-width:100%!important}html[data-netbox-color-mode=dark] .vw-100{width:100vw!important}html[data-netbox-color-mode=dark] .min-vw-100{min-width:100vw!important}html[data-netbox-color-mode=dark] .h-25{height:25%!important}html[data-netbox-color-mode=dark] .h-50{height:50%!important}html[data-netbox-color-mode=dark] .h-75{height:75%!important}html[data-netbox-color-mode=dark] .h-100{height:100%!important}html[data-netbox-color-mode=dark] .h-auto{height:auto!important}html[data-netbox-color-mode=dark] .mh-100{max-height:100%!important}html[data-netbox-color-mode=dark] .vh-100{height:100vh!important}html[data-netbox-color-mode=dark] .min-vh-100{min-height:100vh!important}html[data-netbox-color-mode=dark] .flex-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-first{order:-1!important}html[data-netbox-color-mode=dark] .order-0{order:0!important}html[data-netbox-color-mode=dark] .order-1{order:1!important}html[data-netbox-color-mode=dark] .order-2{order:2!important}html[data-netbox-color-mode=dark] .order-3{order:3!important}html[data-netbox-color-mode=dark] .order-4{order:4!important}html[data-netbox-color-mode=dark] .order-5{order:5!important}html[data-netbox-color-mode=dark] .order-last{order:6!important}html[data-netbox-color-mode=dark] .m-0{margin:0!important}html[data-netbox-color-mode=dark] .m-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-0{padding:0!important}html[data-netbox-color-mode=dark] .p-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .font-monospace{font-family:var(--bs-font-monospace)!important}html[data-netbox-color-mode=dark] .fs-1{font-size:calc(1.375rem + 1.5vw)!important}html[data-netbox-color-mode=dark] .fs-2{font-size:calc(1.325rem + 0.9vw)!important}html[data-netbox-color-mode=dark] .fs-3{font-size:calc(1.3rem + 0.6vw)!important}html[data-netbox-color-mode=dark] .fs-4{font-size:calc(1.275rem + 0.3vw)!important}html[data-netbox-color-mode=dark] .fs-5{font-size:1.25rem!important}html[data-netbox-color-mode=dark] .fs-6{font-size:1rem!important}html[data-netbox-color-mode=dark] .fst-italic{font-style:italic!important}html[data-netbox-color-mode=dark] .fst-normal{font-style:normal!important}html[data-netbox-color-mode=dark] .fw-light{font-weight:300!important}html[data-netbox-color-mode=dark] .fw-lighter{font-weight:200!important}html[data-netbox-color-mode=dark] .fw-normal{font-weight:400!important}html[data-netbox-color-mode=dark] .fw-bold{font-weight:700!important}html[data-netbox-color-mode=dark] .fw-bolder{font-weight:800!important}html[data-netbox-color-mode=dark] .lh-1{line-height:1!important}html[data-netbox-color-mode=dark] .lh-sm{line-height:1.25!important}html[data-netbox-color-mode=dark] .lh-base{line-height:1.5!important}html[data-netbox-color-mode=dark] .lh-lg{line-height:1.75!important}html[data-netbox-color-mode=dark] .text-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-center{text-align:center!important}html[data-netbox-color-mode=dark] .text-decoration-none{text-decoration:none!important}html[data-netbox-color-mode=dark] .text-decoration-underline{text-decoration:underline!important}html[data-netbox-color-mode=dark] .text-decoration-line-through{text-decoration:line-through!important}html[data-netbox-color-mode=dark] .text-lowercase{text-transform:lowercase!important}html[data-netbox-color-mode=dark] .text-uppercase{text-transform:uppercase!important}html[data-netbox-color-mode=dark] .text-capitalize{text-transform:capitalize!important}html[data-netbox-color-mode=dark] .text-wrap{white-space:normal!important}html[data-netbox-color-mode=dark] .text-nowrap{white-space:nowrap!important}html[data-netbox-color-mode=dark] .text-break{word-wrap:break-word!important;word-break:break-word!important}html[data-netbox-color-mode=dark] .text-primary{color:#6ea8fe!important}html[data-netbox-color-mode=dark] .text-secondary{color:#adb5bd!important}html[data-netbox-color-mode=dark] .text-success{color:#75b798!important}html[data-netbox-color-mode=dark] .text-info{color:#6edff6!important}html[data-netbox-color-mode=dark] .text-warning{color:#ffda6a!important}html[data-netbox-color-mode=dark] .text-danger{color:#ea868f!important}html[data-netbox-color-mode=dark] .text-light{color:#dee2e6!important}html[data-netbox-color-mode=dark] .text-dark{color:#adb5bd!important}html[data-netbox-color-mode=dark] .text-blue{color:#6ea8fe!important}html[data-netbox-color-mode=dark] .text-indigo{color:#a370f7!important}html[data-netbox-color-mode=dark] .text-purple{color:#a98eda!important}html[data-netbox-color-mode=dark] .text-pink{color:#e685b5!important}html[data-netbox-color-mode=dark] .text-red{color:#ea868f!important}html[data-netbox-color-mode=dark] .text-orange{color:#feb272!important}html[data-netbox-color-mode=dark] .text-yellow{color:#ffda6a!important}html[data-netbox-color-mode=dark] .text-green{color:#75b798!important}html[data-netbox-color-mode=dark] .text-teal{color:#79dfc1!important}html[data-netbox-color-mode=dark] .text-cyan{color:#6edff6!important}html[data-netbox-color-mode=dark] .text-gray{color:#dee2e6!important}html[data-netbox-color-mode=dark] .text-black{color:#000!important}html[data-netbox-color-mode=dark] .text-white,html[data-netbox-color-mode=dark] .text-body{color:#fff!important}html[data-netbox-color-mode=dark] .text-muted{color:#ced4da!important}html[data-netbox-color-mode=dark] .text-black-50{color:#00000080!important}html[data-netbox-color-mode=dark] .text-white-50{color:#ffffff80!important}html[data-netbox-color-mode=dark] .text-reset{color:inherit!important}html[data-netbox-color-mode=dark] .bg-primary{background-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .bg-secondary{background-color:#adb5bd!important}html[data-netbox-color-mode=dark] .bg-success{background-color:#75b798!important}html[data-netbox-color-mode=dark] .bg-info{background-color:#6edff6!important}html[data-netbox-color-mode=dark] .bg-warning{background-color:#ffda6a!important}html[data-netbox-color-mode=dark] .bg-danger{background-color:#ea868f!important}html[data-netbox-color-mode=dark] .bg-light{background-color:#dee2e6!important}html[data-netbox-color-mode=dark] .bg-dark{background-color:#adb5bd!important}html[data-netbox-color-mode=dark] .bg-blue{background-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .bg-indigo{background-color:#a370f7!important}html[data-netbox-color-mode=dark] .bg-purple{background-color:#a98eda!important}html[data-netbox-color-mode=dark] .bg-pink{background-color:#e685b5!important}html[data-netbox-color-mode=dark] .bg-red{background-color:#ea868f!important}html[data-netbox-color-mode=dark] .bg-orange{background-color:#feb272!important}html[data-netbox-color-mode=dark] .bg-yellow{background-color:#ffda6a!important}html[data-netbox-color-mode=dark] .bg-green{background-color:#75b798!important}html[data-netbox-color-mode=dark] .bg-teal{background-color:#79dfc1!important}html[data-netbox-color-mode=dark] .bg-cyan{background-color:#6edff6!important}html[data-netbox-color-mode=dark] .bg-gray{background-color:#dee2e6!important}html[data-netbox-color-mode=dark] .bg-black{background-color:#000!important}html[data-netbox-color-mode=dark] .bg-white{background-color:#fff!important}html[data-netbox-color-mode=dark] .bg-body{background-color:#1b1f22!important}html[data-netbox-color-mode=dark] .bg-transparent{background-color:transparent!important}html[data-netbox-color-mode=dark] .bg-gradient{background-image:var(--bs-gradient)!important}html[data-netbox-color-mode=dark] .user-select-all{user-select:all!important}html[data-netbox-color-mode=dark] .user-select-auto{user-select:auto!important}html[data-netbox-color-mode=dark] .user-select-none{user-select:none!important}html[data-netbox-color-mode=dark] .pe-none{pointer-events:none!important}html[data-netbox-color-mode=dark] .pe-auto{pointer-events:auto!important}html[data-netbox-color-mode=dark] .rounded{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-0{border-radius:0!important}html[data-netbox-color-mode=dark] .rounded-1,html[data-netbox-color-mode=dark] .rounded-2{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-3{border-radius:.75rem!important}html[data-netbox-color-mode=dark] .rounded-circle{border-radius:50%!important}html[data-netbox-color-mode=dark] .rounded-pill{border-radius:50rem!important}html[data-netbox-color-mode=dark] .rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}html[data-netbox-color-mode=dark] .visible{visibility:visible!important}html[data-netbox-color-mode=dark] .invisible{visibility:hidden!important}@media (min-width: 576px){html[data-netbox-color-mode=dark] .float-sm-start{float:left!important}html[data-netbox-color-mode=dark] .float-sm-end{float:right!important}html[data-netbox-color-mode=dark] .float-sm-none{float:none!important}html[data-netbox-color-mode=dark] .d-sm-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-sm-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-sm-block{display:block!important}html[data-netbox-color-mode=dark] .d-sm-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-sm-table{display:table!important}html[data-netbox-color-mode=dark] .d-sm-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-sm-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-sm-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-sm-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-sm-none{display:none!important}html[data-netbox-color-mode=dark] .flex-sm-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-sm-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-sm-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-sm-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-sm-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-sm-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-sm-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-sm-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-sm-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-sm-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-sm-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-sm-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-sm-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-sm-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-sm-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-sm-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-sm-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-sm-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-sm-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-sm-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-sm-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-sm-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-sm-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-sm-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-sm-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-sm-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-sm-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-sm-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-sm-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-sm-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-sm-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-sm-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-sm-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-sm-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-sm-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-sm-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-sm-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-sm-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-sm-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-sm-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-sm-first{order:-1!important}html[data-netbox-color-mode=dark] .order-sm-0{order:0!important}html[data-netbox-color-mode=dark] .order-sm-1{order:1!important}html[data-netbox-color-mode=dark] .order-sm-2{order:2!important}html[data-netbox-color-mode=dark] .order-sm-3{order:3!important}html[data-netbox-color-mode=dark] .order-sm-4{order:4!important}html[data-netbox-color-mode=dark] .order-sm-5{order:5!important}html[data-netbox-color-mode=dark] .order-sm-last{order:6!important}html[data-netbox-color-mode=dark] .m-sm-0{margin:0!important}html[data-netbox-color-mode=dark] .m-sm-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-sm-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-sm-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-sm-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-sm-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-sm-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-sm-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-sm-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-sm-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-sm-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-sm-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-sm-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-sm-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-sm-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-sm-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-sm-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-sm-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-sm-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-sm-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-sm-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-sm-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-sm-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-sm-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-sm-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-sm-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-sm-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-sm-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-sm-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-sm-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-sm-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-sm-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-sm-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-sm-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-sm-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-sm-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-sm-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-sm-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-sm-0{padding:0!important}html[data-netbox-color-mode=dark] .p-sm-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-sm-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-sm-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-sm-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-sm-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-sm-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-sm-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-sm-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-sm-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-sm-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-sm-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-sm-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-sm-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-sm-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-sm-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-sm-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-sm-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-sm-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-sm-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-sm-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-sm-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-sm-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-sm-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-sm-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-sm-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-sm-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-sm-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-sm-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-sm-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-sm-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-sm-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-sm-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-sm-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-sm-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-sm-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-sm-center{text-align:center!important}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .float-md-start{float:left!important}html[data-netbox-color-mode=dark] .float-md-end{float:right!important}html[data-netbox-color-mode=dark] .float-md-none{float:none!important}html[data-netbox-color-mode=dark] .d-md-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-md-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-md-block{display:block!important}html[data-netbox-color-mode=dark] .d-md-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-md-table{display:table!important}html[data-netbox-color-mode=dark] .d-md-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-md-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-md-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-md-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-md-none{display:none!important}html[data-netbox-color-mode=dark] .flex-md-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-md-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-md-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-md-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-md-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-md-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-md-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-md-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-md-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-md-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-md-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-md-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-md-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-md-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-md-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-md-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-md-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-md-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-md-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-md-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-md-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-md-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-md-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-md-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-md-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-md-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-md-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-md-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-md-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-md-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-md-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-md-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-md-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-md-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-md-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-md-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-md-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-md-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-md-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-md-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-md-first{order:-1!important}html[data-netbox-color-mode=dark] .order-md-0{order:0!important}html[data-netbox-color-mode=dark] .order-md-1{order:1!important}html[data-netbox-color-mode=dark] .order-md-2{order:2!important}html[data-netbox-color-mode=dark] .order-md-3{order:3!important}html[data-netbox-color-mode=dark] .order-md-4{order:4!important}html[data-netbox-color-mode=dark] .order-md-5{order:5!important}html[data-netbox-color-mode=dark] .order-md-last{order:6!important}html[data-netbox-color-mode=dark] .m-md-0{margin:0!important}html[data-netbox-color-mode=dark] .m-md-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-md-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-md-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-md-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-md-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-md-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-md-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-md-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-md-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-md-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-md-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-md-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-md-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-md-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-md-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-md-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-md-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-md-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-md-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-md-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-md-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-md-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-md-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-md-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-md-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-md-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-md-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-md-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-md-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-md-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-md-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-md-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-md-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-md-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-md-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-md-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-md-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-md-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-md-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-md-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-md-0{padding:0!important}html[data-netbox-color-mode=dark] .p-md-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-md-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-md-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-md-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-md-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-md-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-md-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-md-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-md-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-md-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-md-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-md-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-md-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-md-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-md-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-md-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-md-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-md-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-md-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-md-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-md-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-md-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-md-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-md-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-md-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-md-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-md-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-md-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-md-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-md-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-md-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-md-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-md-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-md-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-md-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-md-center{text-align:center!important}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .float-lg-start{float:left!important}html[data-netbox-color-mode=dark] .float-lg-end{float:right!important}html[data-netbox-color-mode=dark] .float-lg-none{float:none!important}html[data-netbox-color-mode=dark] .d-lg-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-lg-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-lg-block{display:block!important}html[data-netbox-color-mode=dark] .d-lg-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-lg-table{display:table!important}html[data-netbox-color-mode=dark] .d-lg-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-lg-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-lg-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-lg-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-lg-none{display:none!important}html[data-netbox-color-mode=dark] .flex-lg-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-lg-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-lg-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-lg-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-lg-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-lg-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-lg-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-lg-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-lg-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-lg-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-lg-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-lg-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-lg-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-lg-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-lg-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-lg-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-lg-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-lg-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-lg-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-lg-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-lg-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-lg-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-lg-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-lg-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-lg-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-lg-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-lg-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-lg-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-lg-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-lg-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-lg-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-lg-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-lg-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-lg-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-lg-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-lg-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-lg-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-lg-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-lg-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-lg-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-lg-first{order:-1!important}html[data-netbox-color-mode=dark] .order-lg-0{order:0!important}html[data-netbox-color-mode=dark] .order-lg-1{order:1!important}html[data-netbox-color-mode=dark] .order-lg-2{order:2!important}html[data-netbox-color-mode=dark] .order-lg-3{order:3!important}html[data-netbox-color-mode=dark] .order-lg-4{order:4!important}html[data-netbox-color-mode=dark] .order-lg-5{order:5!important}html[data-netbox-color-mode=dark] .order-lg-last{order:6!important}html[data-netbox-color-mode=dark] .m-lg-0{margin:0!important}html[data-netbox-color-mode=dark] .m-lg-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-lg-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-lg-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-lg-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-lg-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-lg-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-lg-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-lg-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-lg-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-lg-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-lg-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-lg-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-lg-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-lg-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-lg-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-lg-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-lg-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-lg-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-lg-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-lg-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-lg-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-lg-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-lg-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-lg-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-lg-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-lg-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-lg-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-lg-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-lg-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-lg-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-lg-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-lg-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-lg-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-lg-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-lg-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-lg-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-lg-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-lg-0{padding:0!important}html[data-netbox-color-mode=dark] .p-lg-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-lg-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-lg-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-lg-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-lg-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-lg-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-lg-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-lg-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-lg-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-lg-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-lg-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-lg-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-lg-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-lg-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-lg-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-lg-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-lg-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-lg-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-lg-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-lg-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-lg-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-lg-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-lg-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-lg-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-lg-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-lg-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-lg-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-lg-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-lg-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-lg-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-lg-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-lg-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-lg-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-lg-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-lg-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-lg-center{text-align:center!important}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .float-xl-start{float:left!important}html[data-netbox-color-mode=dark] .float-xl-end{float:right!important}html[data-netbox-color-mode=dark] .float-xl-none{float:none!important}html[data-netbox-color-mode=dark] .d-xl-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-xl-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-xl-block{display:block!important}html[data-netbox-color-mode=dark] .d-xl-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-xl-table{display:table!important}html[data-netbox-color-mode=dark] .d-xl-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-xl-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-xl-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-xl-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-xl-none{display:none!important}html[data-netbox-color-mode=dark] .flex-xl-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-xl-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-xl-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-xl-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-xl-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-xl-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-xl-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-xl-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-xl-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-xl-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-xl-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-xl-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-xl-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-xl-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-xl-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-xl-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-xl-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-xl-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-xl-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-xl-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-xl-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-xl-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-xl-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-xl-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-xl-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-xl-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-xl-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-xl-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-xl-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-xl-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-xl-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-xl-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-xl-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-xl-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-xl-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-xl-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-xl-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-xl-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-xl-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-xl-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-xl-first{order:-1!important}html[data-netbox-color-mode=dark] .order-xl-0{order:0!important}html[data-netbox-color-mode=dark] .order-xl-1{order:1!important}html[data-netbox-color-mode=dark] .order-xl-2{order:2!important}html[data-netbox-color-mode=dark] .order-xl-3{order:3!important}html[data-netbox-color-mode=dark] .order-xl-4{order:4!important}html[data-netbox-color-mode=dark] .order-xl-5{order:5!important}html[data-netbox-color-mode=dark] .order-xl-last{order:6!important}html[data-netbox-color-mode=dark] .m-xl-0{margin:0!important}html[data-netbox-color-mode=dark] .m-xl-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-xl-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-xl-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-xl-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-xl-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-xl-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-xl-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-xl-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-xl-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-xl-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-xl-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-xl-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-xl-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-xl-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-xl-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-xl-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-xl-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-xl-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-xl-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-xl-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-xl-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-xl-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-xl-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-xl-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-xl-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-xl-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-xl-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-xl-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-xl-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-xl-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-xl-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-xl-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-xl-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-xl-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-xl-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-xl-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-xl-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-xl-0{padding:0!important}html[data-netbox-color-mode=dark] .p-xl-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-xl-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-xl-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-xl-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-xl-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-xl-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-xl-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-xl-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-xl-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-xl-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-xl-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-xl-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-xl-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-xl-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-xl-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-xl-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-xl-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-xl-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-xl-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-xl-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-xl-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-xl-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-xl-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-xl-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-xl-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-xl-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-xl-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-xl-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-xl-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-xl-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-xl-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-xl-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-xl-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-xl-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-xl-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-xl-center{text-align:center!important}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .float-xxl-start{float:left!important}html[data-netbox-color-mode=dark] .float-xxl-end{float:right!important}html[data-netbox-color-mode=dark] .float-xxl-none{float:none!important}html[data-netbox-color-mode=dark] .d-xxl-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-xxl-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-xxl-block{display:block!important}html[data-netbox-color-mode=dark] .d-xxl-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-xxl-table{display:table!important}html[data-netbox-color-mode=dark] .d-xxl-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-xxl-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-xxl-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-xxl-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-xxl-none{display:none!important}html[data-netbox-color-mode=dark] .flex-xxl-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-xxl-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-xxl-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-xxl-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-xxl-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-xxl-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-xxl-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-xxl-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-xxl-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-xxl-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-xxl-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-xxl-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-xxl-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-xxl-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-xxl-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-xxl-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-xxl-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-xxl-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-xxl-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-xxl-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-xxl-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-xxl-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-xxl-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-xxl-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-xxl-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-xxl-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-xxl-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-xxl-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-xxl-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-xxl-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-xxl-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-xxl-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-xxl-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-xxl-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-xxl-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-xxl-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-xxl-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-xxl-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-xxl-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-xxl-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-xxl-first{order:-1!important}html[data-netbox-color-mode=dark] .order-xxl-0{order:0!important}html[data-netbox-color-mode=dark] .order-xxl-1{order:1!important}html[data-netbox-color-mode=dark] .order-xxl-2{order:2!important}html[data-netbox-color-mode=dark] .order-xxl-3{order:3!important}html[data-netbox-color-mode=dark] .order-xxl-4{order:4!important}html[data-netbox-color-mode=dark] .order-xxl-5{order:5!important}html[data-netbox-color-mode=dark] .order-xxl-last{order:6!important}html[data-netbox-color-mode=dark] .m-xxl-0{margin:0!important}html[data-netbox-color-mode=dark] .m-xxl-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-xxl-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-xxl-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-xxl-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-xxl-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-xxl-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-xxl-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-xxl-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-xxl-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-xxl-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-xxl-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-xxl-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-xxl-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-xxl-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-xxl-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-xxl-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-xxl-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-xxl-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-xxl-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-xxl-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-xxl-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-xxl-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-xxl-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-xxl-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-xxl-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-xxl-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-xxl-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-xxl-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-xxl-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-xxl-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-xxl-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-xxl-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-xxl-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-xxl-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-xxl-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-xxl-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-xxl-0{padding:0!important}html[data-netbox-color-mode=dark] .p-xxl-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-xxl-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-xxl-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-xxl-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-xxl-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-xxl-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-xxl-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-xxl-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-xxl-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-xxl-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-xxl-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-xxl-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-xxl-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-xxl-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-xxl-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-xxl-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-xxl-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-xxl-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-xxl-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-xxl-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-xxl-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-xxl-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-xxl-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-xxl-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-xxl-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-xxl-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-xxl-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-xxl-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-xxl-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-xxl-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-xxl-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-xxl-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-xxl-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-xxl-center{text-align:center!important}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .fs-1{font-size:2.5rem!important}html[data-netbox-color-mode=dark] .fs-2{font-size:2rem!important}html[data-netbox-color-mode=dark] .fs-3{font-size:1.75rem!important}html[data-netbox-color-mode=dark] .fs-4{font-size:1.5rem!important}}@media print{html[data-netbox-color-mode=dark] .d-print-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-print-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-print-block{display:block!important}html[data-netbox-color-mode=dark] .d-print-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-print-table{display:table!important}html[data-netbox-color-mode=dark] .d-print-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-print-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-print-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-print-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-print-none{display:none!important}}html[data-netbox-color-mode=dark] :root{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}html[data-netbox-color-mode=dark] .ss-main{position:relative;display:inline-block;user-select:none;color:#f8f9fa;width:100%}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + 0.75rem + 2px);padding:.75rem;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-disabled{background-color:#495057;cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .ss-disabled{color:#adb5bd}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:700}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span{border:solid #f8f9fa;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + 0.75rem + 2px);width:100%;padding:0 0 0 3px;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled{background-color:#495057;cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#f8f9fa}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#adb5bd;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#6ea8fe;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#f8f9fa;position:relative;height:10px;width:2px;transition:transform .2s}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#f8f9fa;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}html[data-netbox-color-mode=dark] .ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #495057;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}html[data-netbox-color-mode=dark] .ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}html[data-netbox-color-mode=dark] .ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide,html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}html[data-netbox-color-mode=dark] .ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}html[data-netbox-color-mode=dark] .ss-content .ss-search input::placeholder{color:#495057;vertical-align:middle}html[data-netbox-color-mode=dark] .ss-content .ss-search input:focus{box-shadow:0 0 5px #6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:700;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #495057;border-radius:.375rem;box-sizing:border-box}html[data-netbox-color-mode=dark] .ss-content .ss-addable{padding-top:0}html[data-netbox-color-mode=dark] .ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:700}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option *{display:inline-block}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#adb5bd;background-color:#fff}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#f8f9fa;background-color:#6ea8fe1a}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-hide{display:none}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}html[data-netbox-color-mode=dark] .ss-main{color:#f8f9fa}html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-multi-selected{border-color:#198754}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#212529;border:1px solid #495057}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected[disabled]{color:#adb5bd;background-color:#495057}html[data-netbox-color-mode=dark] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#ced4da}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .depth{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder{line-height:1.5}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add{margin:0 .75rem}html[data-netbox-color-mode=dark] .ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#fff;background-color:var(--nbx-select-option-selected-bg)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#adb5bd}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search{padding-right:.5rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search button{margin-left:.75rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]{color:#f8f9fa;background-color:#212529;border:1px solid #495057}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .flatpickr-calendar{color:#fff;background:#343a40;border-radius:.375rem;box-shadow:1px 0 #495057,-1px 0 #495057,0 1px #495057,0 -1px #495057,0 3px 13px #00000014}html[data-netbox-color-mode=dark] .flatpickr-calendar.arrowTop:before,html[data-netbox-color-mode=dark] .flatpickr-calendar.arrowTop:after{border-bottom-color:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar span.flatpickr-weekday{color:#dee2e6}html[data-netbox-color-mode=dark] .flatpickr-calendar .numInputWrapper span.arrowUp:after{border-bottom-color:#f8f9fa}html[data-netbox-color-mode=dark] .flatpickr-calendar .numInputWrapper span.arrowDown:after{border-top-color:#f8f9fa}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-month,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-next-month,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-prev-month{color:#fff;fill:#fff}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-next-month:hover svg,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-prev-month:hover svg{fill:#ea868f}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-current-month select{background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day{color:#fff}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.nextMonthDay{color:#000;background:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day:hover{color:#000;background:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.nextMonthDay{color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.prevMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.nextMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.prevMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.nextMonthDay:hover{color:#000;background:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input{color:#f8f9fa;background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input:active{background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time .flatpickr-time-separator{color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{border-top:1px solid #495057}html[data-netbox-color-mode=dark] .sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #495057;transition:all .1s ease-in-out}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .sidenav{transform:translate(-3rem)}html[data-netbox-color-mode=dark] .sidenav+.content-container[class]{margin-left:0}html[data-netbox-color-mode=dark] .sidenav .profile-button-container[class]{display:block}}html[data-netbox-color-mode=dark] .sidenav .profile-button-container{display:none;padding:.5rem 1rem}html[data-netbox-color-mode=dark] .sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sidenav .sidenav-inner{padding-right:0;padding-left:0}}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand>img{max-width:100%;max-height:15rem}html[data-netbox-color-mode=dark] .sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}html[data-netbox-color-mode=dark] .sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse>*{min-width:100%}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse{margin-right:0;margin-left:0}}html[data-netbox-color-mode=dark] .sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}html[data-netbox-color-mode=dark] .sidenav .nav{margin-bottom:.5rem}html[data-netbox-color-mode=dark] .sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}html[data-netbox-color-mode=dark] .sidenav .nav .nav-item.no-buttons{padding-right:.5rem}html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:Material Design Icons;font-style:normal;font-weight:700;font-variant:normal;color:#ced4da;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#000}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#6ea8fe;transform:rotate(90deg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition-duration:0ms}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:22.5px;text-align:center}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}html[data-netbox-color-mode=dark] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav{max-width:16rem}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav{transform:translate(0)}}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand{display:block}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}@media (min-width: 992px){html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}html[data-netbox-color-mode=dark] body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}html[data-netbox-color-mode=dark] pre{white-space:pre}html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=dark] .small{font-size:smaller!important}html[data-netbox-color-mode=dark] a[type=button]{-webkit-appearance:unset!important}html[data-netbox-color-mode=dark] *[data-href]{cursor:pointer}html[data-netbox-color-mode=dark] .form-control:not([type=file]){font-size:inherit}html[data-netbox-color-mode=dark] .badge{font-size:.75rem}html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-decoration,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-cancel-button,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-results-button,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none!important}html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=dark] .mark{padding-left:0;padding-right:0}html[data-netbox-color-mode=dark] .text-xs{font-size:.75rem!important;line-height:1.25!important}html[data-netbox-color-mode=dark] .border-input{border:1px solid #495057!important}html[data-netbox-color-mode=dark] .ws-nowrap{white-space:nowrap!important}html[data-netbox-color-mode=dark] table tr .vertical-align,html[data-netbox-color-mode=dark] table td .vertical-align{vertical-align:middle}@media print{html[data-netbox-color-mode=dark] .noprint{display:none!important;visibility:hidden!important}}html[data-netbox-color-mode=dark] .printonly{display:none!important;visibility:hidden!important}@media print{html[data-netbox-color-mode=dark] .printonly{display:block!important;visibility:visible!important}}html[data-netbox-color-mode=dark] .hide-last-child :last-child{visibility:hidden;opacity:0}html[data-netbox-color-mode=dark] :root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #9cc8f8;--nbx-sidebar-title-color: #ced4da;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #dee2e6;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #6ea8fe;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}html[data-netbox-color-mode=dark] .bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162233'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-primary{color:#6ea8fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-primary:hover{background-color:#6ea8fe1f}html[data-netbox-color-mode=dark] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=dark] .table-primary a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-primary .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-primary a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .badge.bg-primary,html[data-netbox-color-mode=dark] .toast.bg-primary,html[data-netbox-color-mode=dark] .toast-header.bg-primary,html[data-netbox-color-mode=dark] .progress-bar.bg-primary{color:#000}html[data-netbox-color-mode=dark] .bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23232426'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary{color:#adb5bd}html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary:hover{background-color:#adb5bd1f}html[data-netbox-color-mode=dark] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=dark] .table-secondary a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-secondary .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-secondary a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .badge.bg-secondary,html[data-netbox-color-mode=dark] .toast.bg-secondary,html[data-netbox-color-mode=dark] .toast-header.bg-secondary,html[data-netbox-color-mode=dark] .progress-bar.bg-secondary{color:#000}html[data-netbox-color-mode=dark] .bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2317251e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-success{color:#75b798}html[data-netbox-color-mode=dark] .btn.btn-ghost-success:hover{background-color:#75b7981f}html[data-netbox-color-mode=dark] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=dark] .table-success a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-success .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-success a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .badge.bg-success,html[data-netbox-color-mode=dark] .toast.bg-success,html[data-netbox-color-mode=dark] .toast-header.bg-success,html[data-netbox-color-mode=dark] .progress-bar.bg-success{color:#000}html[data-netbox-color-mode=dark] .bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162d31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-info{color:#6edff6}html[data-netbox-color-mode=dark] .btn.btn-ghost-info:hover{background-color:#6edff61f}html[data-netbox-color-mode=dark] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=dark] .table-info a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-info .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-info a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .badge.bg-info,html[data-netbox-color-mode=dark] .toast.bg-info,html[data-netbox-color-mode=dark] .toast-header.bg-info,html[data-netbox-color-mode=dark] .progress-bar.bg-info{color:#000}html[data-netbox-color-mode=dark] .bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332c15'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-warning{color:#ffda6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-warning:hover{background-color:#ffda6a1f}html[data-netbox-color-mode=dark] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=dark] .table-warning a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-warning .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-warning a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .badge.bg-warning,html[data-netbox-color-mode=dark] .toast.bg-warning,html[data-netbox-color-mode=dark] .toast-header.bg-warning,html[data-netbox-color-mode=dark] .progress-bar.bg-warning{color:#000}html[data-netbox-color-mode=dark] .bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f1b1d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-danger{color:#ea868f}html[data-netbox-color-mode=dark] .btn.btn-ghost-danger:hover{background-color:#ea868f1f}html[data-netbox-color-mode=dark] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=dark] .table-danger a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-danger .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-danger a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .badge.bg-danger,html[data-netbox-color-mode=dark] .toast.bg-danger,html[data-netbox-color-mode=dark] .toast-header.bg-danger,html[data-netbox-color-mode=dark] .progress-bar.bg-danger{color:#000}html[data-netbox-color-mode=dark] .bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c2d2e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-light{color:#dee2e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-light:hover{background-color:#dee2e61f}html[data-netbox-color-mode=dark] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=dark] .table-light a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-light .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-light a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .badge.bg-light,html[data-netbox-color-mode=dark] .toast.bg-light,html[data-netbox-color-mode=dark] .toast-header.bg-light,html[data-netbox-color-mode=dark] .progress-bar.bg-light{color:#000}html[data-netbox-color-mode=dark] .bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23232426'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-dark{color:#adb5bd}html[data-netbox-color-mode=dark] .btn.btn-ghost-dark:hover{background-color:#adb5bd1f}html[data-netbox-color-mode=dark] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=dark] .table-dark a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-dark .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-dark a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .badge.bg-dark,html[data-netbox-color-mode=dark] .toast.bg-dark,html[data-netbox-color-mode=dark] .toast-header.bg-dark,html[data-netbox-color-mode=dark] .progress-bar.bg-dark{color:#000}html[data-netbox-color-mode=dark] .bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162233'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue{color:#6ea8fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue:hover{background-color:#6ea8fe1f}html[data-netbox-color-mode=dark] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=dark] .table-blue a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .badge.bg-blue,html[data-netbox-color-mode=dark] .toast.bg-blue,html[data-netbox-color-mode=dark] .toast-header.bg-blue,html[data-netbox-color-mode=dark] .progress-bar.bg-blue{color:#000}html[data-netbox-color-mode=dark] .bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23211631'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo{color:#a370f7}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo:hover{background-color:#a370f71f}html[data-netbox-color-mode=dark] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .badge.bg-indigo,html[data-netbox-color-mode=dark] .toast.bg-indigo,html[data-netbox-color-mode=dark] .toast-header.bg-indigo,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo{color:#000}html[data-netbox-color-mode=dark] .bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23221c2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple{color:#a98eda}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple:hover{background-color:#a98eda1f}html[data-netbox-color-mode=dark] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=dark] .table-purple a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .badge.bg-purple,html[data-netbox-color-mode=dark] .toast.bg-purple,html[data-netbox-color-mode=dark] .toast-header.bg-purple,html[data-netbox-color-mode=dark] .progress-bar.bg-purple{color:#000}html[data-netbox-color-mode=dark] .bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232e1b24'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink{color:#e685b5}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink:hover{background-color:#e685b51f}html[data-netbox-color-mode=dark] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=dark] .table-pink a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .badge.bg-pink,html[data-netbox-color-mode=dark] .toast.bg-pink,html[data-netbox-color-mode=dark] .toast-header.bg-pink,html[data-netbox-color-mode=dark] .progress-bar.bg-pink{color:#000}html[data-netbox-color-mode=dark] .bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f1b1d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red{color:#ea868f}html[data-netbox-color-mode=dark] .btn.btn-ghost-red:hover{background-color:#ea868f1f}html[data-netbox-color-mode=dark] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=dark] .table-red a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .badge.bg-red,html[data-netbox-color-mode=dark] .toast.bg-red,html[data-netbox-color-mode=dark] .toast-header.bg-red,html[data-netbox-color-mode=dark] .progress-bar.bg-red{color:#000}html[data-netbox-color-mode=dark] .bg-orange button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332417'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-orange{color:#feb272}html[data-netbox-color-mode=dark] .btn.btn-ghost-orange:hover{background-color:#feb2721f}html[data-netbox-color-mode=dark] .alert.alert-orange a:not(.btn),html[data-netbox-color-mode=dark] .table-orange a:not(.btn){font-weight:700;color:#332417}html[data-netbox-color-mode=dark] .alert.alert-orange .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-orange .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-orange a:not(.btn){font-weight:700;color:#332417}html[data-netbox-color-mode=dark] .badge.bg-orange,html[data-netbox-color-mode=dark] .toast.bg-orange,html[data-netbox-color-mode=dark] .toast-header.bg-orange,html[data-netbox-color-mode=dark] .progress-bar.bg-orange{color:#000}html[data-netbox-color-mode=dark] .bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332c15'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow{color:#ffda6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow:hover{background-color:#ffda6a1f}html[data-netbox-color-mode=dark] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .badge.bg-yellow,html[data-netbox-color-mode=dark] .toast.bg-yellow,html[data-netbox-color-mode=dark] .toast-header.bg-yellow,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow{color:#000}html[data-netbox-color-mode=dark] .bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2317251e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green{color:#75b798}html[data-netbox-color-mode=dark] .btn.btn-ghost-green:hover{background-color:#75b7981f}html[data-netbox-color-mode=dark] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=dark] .table-green a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .badge.bg-green,html[data-netbox-color-mode=dark] .toast.bg-green,html[data-netbox-color-mode=dark] .toast-header.bg-green,html[data-netbox-color-mode=dark] .progress-bar.bg-green{color:#000}html[data-netbox-color-mode=dark] .bg-teal button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182d27'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-teal{color:#79dfc1}html[data-netbox-color-mode=dark] .btn.btn-ghost-teal:hover{background-color:#79dfc11f}html[data-netbox-color-mode=dark] .alert.alert-teal a:not(.btn),html[data-netbox-color-mode=dark] .table-teal a:not(.btn){font-weight:700;color:#182d27}html[data-netbox-color-mode=dark] .alert.alert-teal .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-teal .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-teal a:not(.btn){font-weight:700;color:#182d27}html[data-netbox-color-mode=dark] .badge.bg-teal,html[data-netbox-color-mode=dark] .toast.bg-teal,html[data-netbox-color-mode=dark] .toast-header.bg-teal,html[data-netbox-color-mode=dark] .progress-bar.bg-teal{color:#000}html[data-netbox-color-mode=dark] .bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162d31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan{color:#6edff6}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan:hover{background-color:#6edff61f}html[data-netbox-color-mode=dark] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .badge.bg-cyan,html[data-netbox-color-mode=dark] .toast.bg-cyan,html[data-netbox-color-mode=dark] .toast-header.bg-cyan,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan{color:#000}html[data-netbox-color-mode=dark] .bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c2d2e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray{color:#dee2e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray:hover{background-color:#dee2e61f}html[data-netbox-color-mode=dark] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=dark] .table-gray a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .badge.bg-gray,html[data-netbox-color-mode=dark] .toast.bg-gray,html[data-netbox-color-mode=dark] .toast-header.bg-gray,html[data-netbox-color-mode=dark] .progress-bar.bg-gray{color:#000}html[data-netbox-color-mode=dark] .bg-black button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cccccc'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-black{color:#000}html[data-netbox-color-mode=dark] .btn.btn-ghost-black:hover{background-color:#0000001f}html[data-netbox-color-mode=dark] .alert.alert-black a:not(.btn),html[data-netbox-color-mode=dark] .table-black a:not(.btn){font-weight:700;color:#ccc}html[data-netbox-color-mode=dark] .alert.alert-black .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-black .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-black a:not(.btn){font-weight:700;color:#ccc}html[data-netbox-color-mode=dark] .badge.bg-black,html[data-netbox-color-mode=dark] .toast.bg-black,html[data-netbox-color-mode=dark] .toast-header.bg-black,html[data-netbox-color-mode=dark] .progress-bar.bg-black{color:#fff}html[data-netbox-color-mode=dark] .bg-white button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23333333'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-white{color:#fff}html[data-netbox-color-mode=dark] .btn.btn-ghost-white:hover{background-color:#ffffff1f}html[data-netbox-color-mode=dark] .alert.alert-white a:not(.btn),html[data-netbox-color-mode=dark] .table-white a:not(.btn){font-weight:700;color:#333}html[data-netbox-color-mode=dark] .alert.alert-white .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-white .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-white a:not(.btn){font-weight:700;color:#333}html[data-netbox-color-mode=dark] .badge.bg-white,html[data-netbox-color-mode=dark] .toast.bg-white,html[data-netbox-color-mode=dark] .toast-header.bg-white,html[data-netbox-color-mode=dark] .progress-bar.bg-white{color:#000}html[data-netbox-color-mode=dark] table td>.progress{min-width:6rem}html[data-netbox-color-mode=dark] .small .form-control{font-size:.875rem}html[data-netbox-color-mode=dark] :not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}html[data-netbox-color-mode=dark] .nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .nav-mobile{display:flex}}html[data-netbox-color-mode=dark] .nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}html[data-netbox-color-mode=dark] .card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#495057;border-top:1px solid rgba(255,255,255,.125);border-bottom-color:#ffffff20}html[data-netbox-color-mode=dark] .card>.table.table-flush th,html[data-netbox-color-mode=dark] .card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]{border-color:#ffffff20!important}html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}html[data-netbox-color-mode=dark] .header-alert-container .alert{width:100%}@media (min-width: 768px){html[data-netbox-color-mode=dark] .header-alert-container .alert{max-width:75%}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .header-alert-container .alert{max-width:50%}}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}html[data-netbox-color-mode=dark] div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}html[data-netbox-color-mode=dark] table td a{text-decoration:none}html[data-netbox-color-mode=dark] table td a:hover{text-decoration:underline}html[data-netbox-color-mode=dark] table td .dropdown{position:static}html[data-netbox-color-mode=dark] table th a,html[data-netbox-color-mode=dark] table th a:hover{color:#fff;text-decoration:none}html[data-netbox-color-mode=dark] table td,html[data-netbox-color-mode=dark] table th{font-size:.875rem;line-height:1.25;vertical-align:middle}html[data-netbox-color-mode=dark] table td.min-width,html[data-netbox-color-mode=dark] table th.min-width{width:1%}html[data-netbox-color-mode=dark] table td .form-check-input,html[data-netbox-color-mode=dark] table th .form-check-input{margin-top:.125em;font-size:1rem}html[data-netbox-color-mode=dark] table td .btn-sm,html[data-netbox-color-mode=dark] table td .btn-group-sm>.btn,html[data-netbox-color-mode=dark] table th .btn-sm,html[data-netbox-color-mode=dark] table th .btn-group-sm>.btn{line-height:1}html[data-netbox-color-mode=dark] table td p,html[data-netbox-color-mode=dark] table th p{margin-bottom:.5em}html[data-netbox-color-mode=dark] table td p:last-child,html[data-netbox-color-mode=dark] table th p:last-child{margin-bottom:0}html[data-netbox-color-mode=dark] table th.asc>a:after{content:"\f0140";font-family:Material Design Icons}html[data-netbox-color-mode=dark] table th.desc>a:after{content:"\f0143";font-family:Material Design Icons}html[data-netbox-color-mode=dark] table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}html[data-netbox-color-mode=dark] table.attr-table th{font-weight:400;width:25%}html[data-netbox-color-mode=dark] div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}@media (min-width: 992px){html[data-netbox-color-mode=dark] div.title-container{flex-direction:row}}html[data-netbox-color-mode=dark] div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .controls{margin-bottom:.5rem}@media print{html[data-netbox-color-mode=dark] .controls{display:none!important}}html[data-netbox-color-mode=dark] .controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}@media (min-width: 992px){html[data-netbox-color-mode=dark] .controls .control-group{justify-content:flex-end}}html[data-netbox-color-mode=dark] .controls .control-group>*{margin:.25rem}html[data-netbox-color-mode=dark] .controls .control-group>*:first-child{margin-left:0}html[data-netbox-color-mode=dark] .controls .control-group>*:last-child{margin-right:0}html[data-netbox-color-mode=dark] .object-subtitle{display:block;font-size:.875rem;color:#ced4da}@media (min-width: 768px){html[data-netbox-color-mode=dark] .object-subtitle{display:inline-block}}html[data-netbox-color-mode=dark] .object-subtitle>span{display:block}html[data-netbox-color-mode=dark] .object-subtitle>span.separator{display:none}@media (min-width: 768px){html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span.separator{display:inline-block}}html[data-netbox-color-mode=dark] nav.search{z-index:999;justify-content:center;background-color:#1b1f22}html[data-netbox-color-mode=dark] nav.search .search-container{display:flex;width:100%}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] nav.search .search-container{display:none}}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selected{border-color:#495057}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle{color:#fff;border-color:#495057;margin-left:0;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#495057;border:1px solid #495057;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:hover{color:#fff;background-color:#3e444a;border-color:#3a4046}.btn-check:focus+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus{color:#fff;background-color:#3e444a;border-color:#3a4046;box-shadow:0 0 0 .25rem #646a7080}.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#fff;background-color:#3a4046;border-color:#373c41}.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #646a7080}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.disabled{color:#fff;background-color:#495057;border-color:#495057}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:after{display:none}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}html[data-netbox-color-mode=dark] .quicksearch input[type=search]{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .quicksearch button{margin-left:-32px!important;z-index:100!important;outline:none!important;border-radius:.375rem!important;transition:visibility 0s,opacity .2s linear}html[data-netbox-color-mode=dark] .quicksearch button :hover{opacity:50%;transition:visibility 0s,opacity .1s linear}html[data-netbox-color-mode=dark] main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}@media print{html[data-netbox-color-mode=dark] main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}html[data-netbox-color-mode=dark] main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}html[data-netbox-color-mode=dark] main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}html[data-netbox-color-mode=dark] .footer{background-color:#171b1d;padding:0}html[data-netbox-color-mode=dark] .footer .nav-link{padding:.5rem}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .footer{margin-bottom:8rem}}html[data-netbox-color-mode=dark] footer.login-footer{height:4rem;margin-top:auto}html[data-netbox-color-mode=dark] footer.login-footer .container-fluid,html[data-netbox-color-mode=dark] footer.login-footer .container-sm,html[data-netbox-color-mode=dark] footer.login-footer .container-md,html[data-netbox-color-mode=dark] footer.login-footer .container-lg,html[data-netbox-color-mode=dark] footer.login-footer .container-xl,html[data-netbox-color-mode=dark] footer.login-footer .container-xxl{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}html[data-netbox-color-mode=dark] h1.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h1,html[data-netbox-color-mode=dark] h2.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h2,html[data-netbox-color-mode=dark] h3.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h3,html[data-netbox-color-mode=dark] h4.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h4,html[data-netbox-color-mode=dark] h5.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h5,html[data-netbox-color-mode=dark] h6.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h6{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}html[data-netbox-color-mode=dark] .form-login{width:100%;max-width:330px;padding:15px}html[data-netbox-color-mode=dark] .form-login input:focus{z-index:1}html[data-netbox-color-mode=dark] .form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}html[data-netbox-color-mode=dark] .navbar{border-bottom:1px solid #495057}html[data-netbox-color-mode=dark] .navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link:hover{color:#000;background-color:#6397e5}html[data-netbox-color-mode=dark] div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}html[data-netbox-color-mode=dark] div.content-container:focus,html[data-netbox-color-mode=dark] div.content-container:focus-visible{outline:0}html[data-netbox-color-mode=dark] div.content-container div.content{background-color:#171b1d;flex:1}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] div.content-container{width:100%}}@media print{html[data-netbox-color-mode=dark] div.content-container{width:100%!important;margin-left:0!important}}@media (max-width: 768px){html[data-netbox-color-mode=dark] .sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}html[data-netbox-color-mode=dark] .tooltip{pointer-events:none}html[data-netbox-color-mode=dark] span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}html[data-netbox-color-mode=dark] .badge a{color:inherit}html[data-netbox-color-mode=dark] .btn{white-space:nowrap}html[data-netbox-color-mode=dark] .card{box-shadow:0 .125rem .25rem #00000013}html[data-netbox-color-mode=dark] .card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}html[data-netbox-color-mode=dark] .card .card-header+.card-body{padding-top:0}html[data-netbox-color-mode=dark] .card .card-body.small .form-control,html[data-netbox-color-mode=dark] .card .card-body.small .form-select{font-size:.875rem}html[data-netbox-color-mode=dark] .card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(255,255,255,.125);opacity:.25}@media print{html[data-netbox-color-mode=dark] .card{box-shadow:unset!important}}html[data-netbox-color-mode=dark] .form-floating{position:relative}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-floating>.input-group>label{transition:none}}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control::placeholder{color:transparent}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=dark] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=dark] .form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.choices~label,html[data-netbox-color-mode=dark] .form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .form-object-edit{margin:0 auto;max-width:800px}html[data-netbox-color-mode=dark] textarea.form-control[rows="10"]{height:18rem}html[data-netbox-color-mode=dark] textarea.markdown,html[data-netbox-color-mode=dark] textarea.form-control[name=csv]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}html[data-netbox-color-mode=dark] .card:not(:only-of-type){margin-bottom:1rem}html[data-netbox-color-mode=dark] .stat-btn{min-width:3rem}html[data-netbox-color-mode=dark] nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}html[data-netbox-color-mode=dark] label.required{font-weight:700}html[data-netbox-color-mode=dark] label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:Material Design Icons;font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}html[data-netbox-color-mode=dark] div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}html[data-netbox-color-mode=dark] table tbody tr.primary{background-color:#6ea8fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.secondary{background-color:#adb5bd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.success{background-color:#75b79826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.info{background-color:#6edff626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.warning{background-color:#ffda6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.danger{background-color:#ea868f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.light{background-color:#dee2e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.dark{background-color:#adb5bd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue{background-color:#6ea8fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo{background-color:#a370f726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple{background-color:#a98eda26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink{background-color:#e685b526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red{background-color:#ea868f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.orange{background-color:#feb27226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow{background-color:#ffda6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green{background-color:#75b79826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.teal{background-color:#79dfc126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan{background-color:#6edff626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray{background-color:#dee2e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.black{background-color:#00000026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.white{background-color:#ffffff26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge:not(.badge){padding:0 .65em}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.25rem}html[data-netbox-color-mode=dark] pre.change-data{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}html[data-netbox-color-mode=dark] pre.change-data>span.added{background-color:var(--nbx-change-added)}html[data-netbox-color-mode=dark] pre.change-data>span.removed{background-color:var(--nbx-change-removed)}html[data-netbox-color-mode=dark] pre.change-diff{border-color:transparent}html[data-netbox-color-mode=dark] pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}html[data-netbox-color-mode=dark] pre.change-diff.change-added{background-color:var(--nbx-change-added)}html[data-netbox-color-mode=dark] div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}html[data-netbox-color-mode=dark] div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#adb5bd}html[data-netbox-color-mode=dark] .table-controls{display:flex}@media (min-width: 768px){html[data-netbox-color-mode=dark] .table-controls{margin-top:0!important;margin-bottom:0!important}}html[data-netbox-color-mode=dark] .table-controls .table-configure{justify-content:flex-start}@media (min-width: 768px){html[data-netbox-color-mode=dark] .table-controls .table-configure{justify-content:flex-end}}html[data-netbox-color-mode=dark] .table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}html[data-netbox-color-mode=dark] .nav-tabs{background-color:#1b1f22}html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover{border-bottom-color:transparent}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active{background-color:#171b1d;border-bottom-color:#171b1d;transform:translateY(1px)}html[data-netbox-color-mode=dark] .tab-content{display:flex;flex-direction:column;padding:1rem}@media print{html[data-netbox-color-mode=dark] .masonry{position:static!important;display:block!important;height:unset!important}}@media print{html[data-netbox-color-mode=dark] .masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}html[data-netbox-color-mode=dark] .record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}html[data-netbox-color-mode=dark] .record-depth span:only-of-type,html[data-netbox-color-mode=dark] .record-depth span:last-of-type{margin-right:.25rem}html[data-netbox-color-mode=dark] .popover.image-preview-popover{max-width:unset}html[data-netbox-color-mode=dark] .rendered-markdown table{width:100%}html[data-netbox-color-mode=dark] .rendered-markdown th{border-bottom:2px solid #dddddd;padding:8px}html[data-netbox-color-mode=dark] .rendered-markdown td{border-top:1px solid #dddddd;padding:8px}html[data-netbox-color-mode=dark] th[align=left]{text-align:left}html[data-netbox-color-mode=dark] th[align=center]{text-align:center}html[data-netbox-color-mode=dark] th[align=right]{text-align:right}html[data-netbox-color-mode=dark] .markdown-widget .nav-link{border-bottom:0}html[data-netbox-color-mode=dark] .markdown-widget .nav-link.active{background-color:var(--nbx-body-bg)}html[data-netbox-color-mode=dark] .markdown-widget .nav-tabs{background-color:var(--nbx-pre-bg)}html[data-netbox-color-mode=dark] td pre{margin-bottom:0}html[data-netbox-color-mode=dark] pre.block{padding:1rem;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}html[data-netbox-color-mode=dark] #django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}html[data-netbox-color-mode=dark] html[data-netbox-url-name=login] #django-messages{display:none} +@charset "UTF-8";html[data-netbox-color-mode=dark] input{color-scheme:dark}html[data-netbox-color-mode=dark] :root{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #6ea8fe;--bs-secondary: #adb5bd;--bs-success: #75b798;--bs-info: #6edff6;--bs-warning: #ffda6a;--bs-danger: #ea868f;--bs-light: #dee2e6;--bs-dark: #adb5bd;--bs-blue: #6ea8fe;--bs-indigo: #a370f7;--bs-purple: #a98eda;--bs-pink: #e685b5;--bs-red: #ea868f;--bs-orange: #feb272;--bs-yellow: #ffda6a;--bs-green: #75b798;--bs-teal: #79dfc1;--bs-cyan: #6edff6;--bs-gray: #dee2e6;--bs-black: #000;--bs-white: #fff;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}html[data-netbox-color-mode=dark] *,html[data-netbox-color-mode=dark] *:before,html[data-netbox-color-mode=dark] *:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){html[data-netbox-color-mode=dark] :root{scroll-behavior:smooth}}html[data-netbox-color-mode=dark] body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#fff;background-color:#1b1f22;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}html[data-netbox-color-mode=dark] hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}html[data-netbox-color-mode=dark] hr:not([size]){height:1px}html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=dark] .h1{font-size:2.5rem}}html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2{font-size:calc(1.325rem + 0.9vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=dark] .h2{font-size:2rem}}html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3{font-size:calc(1.3rem + 0.6vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=dark] .h3{font-size:1.75rem}}html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4{font-size:calc(1.275rem + 0.3vw)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=dark] .h4{font-size:1.5rem}}html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=dark] .h5{font-size:1.25rem}html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=dark] .h6{font-size:1rem}html[data-netbox-color-mode=dark] p{margin-top:0;margin-bottom:1rem}html[data-netbox-color-mode=dark] abbr[title],html[data-netbox-color-mode=dark] abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}html[data-netbox-color-mode=dark] address{margin-bottom:1rem;font-style:normal;line-height:inherit}html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul{padding-left:2rem}html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=dark] dl{margin-top:0;margin-bottom:1rem}html[data-netbox-color-mode=dark] ol ol,html[data-netbox-color-mode=dark] ul ul,html[data-netbox-color-mode=dark] ol ul,html[data-netbox-color-mode=dark] ul ol{margin-bottom:0}html[data-netbox-color-mode=dark] dt{font-weight:700}html[data-netbox-color-mode=dark] dd{margin-bottom:.5rem;margin-left:0}html[data-netbox-color-mode=dark] blockquote{margin:0 0 1rem}html[data-netbox-color-mode=dark] b,html[data-netbox-color-mode=dark] strong{font-weight:800}html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=dark] .small{font-size:.875em}html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=dark] .mark{padding:.2em;background-color:#fcf8e3}html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=dark] sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}html[data-netbox-color-mode=dark] sub{bottom:-.25em}html[data-netbox-color-mode=dark] sup{top:-.5em}html[data-netbox-color-mode=dark] a{color:#9ec5fe;text-decoration:underline}html[data-netbox-color-mode=dark] a:hover{color:#cfe2ff}html[data-netbox-color-mode=dark] a:not([href]):not([class]),html[data-netbox-color-mode=dark] a:not([href]):not([class]):hover{color:inherit;text-decoration:none}html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=dark] samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}html[data-netbox-color-mode=dark] pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}html[data-netbox-color-mode=dark] pre code{font-size:inherit;color:inherit;word-break:normal}html[data-netbox-color-mode=dark] code{font-size:.875em;color:#e9ecef;word-wrap:break-word}a>html[data-netbox-color-mode=dark] code{color:inherit}html[data-netbox-color-mode=dark] kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#dee2e6;border-radius:.375rem}html[data-netbox-color-mode=dark] kbd kbd{padding:0;font-size:1em;font-weight:700}html[data-netbox-color-mode=dark] figure{margin:0 0 1rem}html[data-netbox-color-mode=dark] img,html[data-netbox-color-mode=dark] svg{vertical-align:middle}html[data-netbox-color-mode=dark] table{caption-side:bottom;border-collapse:collapse}html[data-netbox-color-mode=dark] caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}html[data-netbox-color-mode=dark] th{text-align:inherit;text-align:-webkit-match-parent}html[data-netbox-color-mode=dark] thead,html[data-netbox-color-mode=dark] tbody,html[data-netbox-color-mode=dark] tfoot,html[data-netbox-color-mode=dark] tr,html[data-netbox-color-mode=dark] td,html[data-netbox-color-mode=dark] th{border-color:inherit;border-style:solid;border-width:0}html[data-netbox-color-mode=dark] label{display:inline-block}html[data-netbox-color-mode=dark] button{border-radius:0}html[data-netbox-color-mode=dark] button:focus:not(:focus-visible){outline:0}html[data-netbox-color-mode=dark] input,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=dark] optgroup,html[data-netbox-color-mode=dark] textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select{text-transform:none}html[data-netbox-color-mode=dark] [role=button]{cursor:pointer}html[data-netbox-color-mode=dark] select{word-wrap:normal}html[data-netbox-color-mode=dark] select:disabled{opacity:1}html[data-netbox-color-mode=dark] [list]::-webkit-calendar-picker-indicator{display:none}html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] [type=button],html[data-netbox-color-mode=dark] [type=reset],html[data-netbox-color-mode=dark] [type=submit]{-webkit-appearance:button}html[data-netbox-color-mode=dark] button:not(:disabled),html[data-netbox-color-mode=dark] [type=button]:not(:disabled),html[data-netbox-color-mode=dark] [type=reset]:not(:disabled),html[data-netbox-color-mode=dark] [type=submit]:not(:disabled){cursor:pointer}html[data-netbox-color-mode=dark] ::-moz-focus-inner{padding:0;border-style:none}html[data-netbox-color-mode=dark] textarea{resize:vertical}html[data-netbox-color-mode=dark] fieldset{min-width:0;padding:0;margin:0;border:0}html[data-netbox-color-mode=dark] legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media (min-width: 1200px){html[data-netbox-color-mode=dark] legend{font-size:1.5rem}}html[data-netbox-color-mode=dark] legend+*{clear:left}html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-year-field{padding:0}html[data-netbox-color-mode=dark] ::-webkit-inner-spin-button{height:auto}html[data-netbox-color-mode=dark] [type=search]{outline-offset:-2px;-webkit-appearance:textfield}html[data-netbox-color-mode=dark] ::-webkit-search-decoration{-webkit-appearance:none}html[data-netbox-color-mode=dark] ::-webkit-color-swatch-wrapper{padding:0}html[data-netbox-color-mode=dark] ::file-selector-button{font:inherit}html[data-netbox-color-mode=dark] ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}html[data-netbox-color-mode=dark] output{display:inline-block}html[data-netbox-color-mode=dark] iframe{border:0}html[data-netbox-color-mode=dark] summary{display:list-item;cursor:pointer}html[data-netbox-color-mode=dark] progress{vertical-align:baseline}html[data-netbox-color-mode=dark] [hidden]{display:none!important}html[data-netbox-color-mode=dark] .lead{font-size:1.25rem;font-weight:300}html[data-netbox-color-mode=dark] .display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-1{font-size:5rem}}html[data-netbox-color-mode=dark] .display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-2{font-size:4.5rem}}html[data-netbox-color-mode=dark] .display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-3{font-size:4rem}}html[data-netbox-color-mode=dark] .display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-4{font-size:3.5rem}}html[data-netbox-color-mode=dark] .display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-5{font-size:3rem}}html[data-netbox-color-mode=dark] .display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .display-6{font-size:2.5rem}}html[data-netbox-color-mode=dark] .list-unstyled,html[data-netbox-color-mode=dark] .list-inline{padding-left:0;list-style:none}html[data-netbox-color-mode=dark] .list-inline-item{display:inline-block}html[data-netbox-color-mode=dark] .list-inline-item:not(:last-child){margin-right:.5rem}html[data-netbox-color-mode=dark] .initialism{font-size:.875em;text-transform:uppercase}html[data-netbox-color-mode=dark] .blockquote{margin-bottom:1rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .blockquote>:last-child{margin-bottom:0}html[data-netbox-color-mode=dark] .blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}html[data-netbox-color-mode=dark] .blockquote-footer:before{content:"\2014\a0"}html[data-netbox-color-mode=dark] .img-fluid{max-width:100%;height:auto}html[data-netbox-color-mode=dark] .img-thumbnail{padding:.25rem;background-color:#1b1f22;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}html[data-netbox-color-mode=dark] .figure{display:inline-block}html[data-netbox-color-mode=dark] .figure-img{margin-bottom:.5rem;line-height:1}html[data-netbox-color-mode=dark] .figure-caption{font-size:.875em;color:#6c757d}html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=dark] .container-fluid,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:540px}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:720px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:960px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:1140px}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=dark] .container{max-width:1320px}}html[data-netbox-color-mode=dark] .row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}html[data-netbox-color-mode=dark] .row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}html[data-netbox-color-mode=dark] .col{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width: 576px){html[data-netbox-color-mode=dark] .col-sm{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-sm-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-sm-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-sm-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-sm-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-sm-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .col-md{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-md-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-md-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-md-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-md-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-md-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .col-lg{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-lg-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-lg-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-lg-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-lg-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-lg-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .col-xl{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-xl-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-xl-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-xl-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-xl-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-xl-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .col-xxl{flex:1 0 0%}html[data-netbox-color-mode=dark] .row-cols-xxl-auto>*{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .row-cols-xxl-1>*{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .row-cols-xxl-2>*{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}html[data-netbox-color-mode=dark] .row-cols-xxl-4>*{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .row-cols-xxl-5>*{flex:0 0 auto;width:20%}html[data-netbox-color-mode=dark] .row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}html[data-netbox-color-mode=dark] .col-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gx-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gy-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gx-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gy-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gx-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gy-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gx-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gy-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gx-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gy-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gx-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .col-sm-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-sm-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-sm-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-sm-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-sm-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-sm-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-sm-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-sm-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-sm-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-sm-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-sm-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-sm-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-sm-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-sm-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-sm-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-sm-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-sm-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-sm-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-sm-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-sm-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-sm-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-sm-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-sm-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-sm-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-sm-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gx-sm-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gy-sm-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gx-sm-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gy-sm-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gx-sm-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gy-sm-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gx-sm-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gy-sm-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gx-sm-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gy-sm-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gx-sm-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .col-md-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-md-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-md-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-md-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-md-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-md-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-md-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-md-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-md-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-md-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-md-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-md-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-md-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-md-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-md-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-md-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-md-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-md-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-md-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-md-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-md-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-md-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-md-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-md-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-md-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gx-md-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gy-md-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gx-md-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gy-md-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gx-md-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gy-md-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gx-md-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gy-md-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gx-md-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gy-md-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gx-md-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .col-lg-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-lg-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-lg-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-lg-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-lg-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-lg-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-lg-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-lg-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-lg-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-lg-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-lg-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-lg-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-lg-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-lg-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-lg-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-lg-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-lg-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-lg-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-lg-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-lg-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-lg-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-lg-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-lg-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-lg-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-lg-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gx-lg-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gy-lg-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gx-lg-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gy-lg-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gx-lg-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gy-lg-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gx-lg-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gy-lg-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gx-lg-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gy-lg-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gx-lg-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .col-xl-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-xl-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-xl-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-xl-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-xl-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-xl-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-xl-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-xl-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-xl-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-xl-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-xl-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-xl-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-xl-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-xl-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-xl-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-xl-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-xl-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-xl-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-xl-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-xl-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-xl-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-xl-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-xl-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-xl-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-xl-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gx-xl-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gy-xl-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gx-xl-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gy-xl-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gx-xl-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gy-xl-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gx-xl-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gy-xl-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gx-xl-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gy-xl-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gx-xl-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .col-xxl-auto{flex:0 0 auto;width:auto}html[data-netbox-color-mode=dark] .col-xxl-1{flex:0 0 auto;width:8.33333333%}html[data-netbox-color-mode=dark] .col-xxl-2{flex:0 0 auto;width:16.66666667%}html[data-netbox-color-mode=dark] .col-xxl-3{flex:0 0 auto;width:25%}html[data-netbox-color-mode=dark] .col-xxl-4{flex:0 0 auto;width:33.33333333%}html[data-netbox-color-mode=dark] .col-xxl-5{flex:0 0 auto;width:41.66666667%}html[data-netbox-color-mode=dark] .col-xxl-6{flex:0 0 auto;width:50%}html[data-netbox-color-mode=dark] .col-xxl-7{flex:0 0 auto;width:58.33333333%}html[data-netbox-color-mode=dark] .col-xxl-8{flex:0 0 auto;width:66.66666667%}html[data-netbox-color-mode=dark] .col-xxl-9{flex:0 0 auto;width:75%}html[data-netbox-color-mode=dark] .col-xxl-10{flex:0 0 auto;width:83.33333333%}html[data-netbox-color-mode=dark] .col-xxl-11{flex:0 0 auto;width:91.66666667%}html[data-netbox-color-mode=dark] .col-xxl-12{flex:0 0 auto;width:100%}html[data-netbox-color-mode=dark] .offset-xxl-0{margin-left:0}html[data-netbox-color-mode=dark] .offset-xxl-1{margin-left:8.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-2{margin-left:16.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-3{margin-left:25%}html[data-netbox-color-mode=dark] .offset-xxl-4{margin-left:33.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-5{margin-left:41.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-6{margin-left:50%}html[data-netbox-color-mode=dark] .offset-xxl-7{margin-left:58.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-8{margin-left:66.66666667%}html[data-netbox-color-mode=dark] .offset-xxl-9{margin-left:75%}html[data-netbox-color-mode=dark] .offset-xxl-10{margin-left:83.33333333%}html[data-netbox-color-mode=dark] .offset-xxl-11{margin-left:91.66666667%}html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gx-xxl-0{--bs-gutter-x: 0}html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gy-xxl-0{--bs-gutter-y: 0}html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gx-xxl-1{--bs-gutter-x: .25rem}html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gy-xxl-1{--bs-gutter-y: .25rem}html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gx-xxl-2{--bs-gutter-x: .5rem}html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gy-xxl-2{--bs-gutter-y: .5rem}html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gx-xxl-3{--bs-gutter-x: 1rem}html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gy-xxl-3{--bs-gutter-y: 1rem}html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gx-xxl-4{--bs-gutter-x: 1.5rem}html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gy-xxl-4{--bs-gutter-y: 1.5rem}html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gx-xxl-5{--bs-gutter-x: 3rem}html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gy-xxl-5{--bs-gutter-y: 3rem}}html[data-netbox-color-mode=dark] .table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #f8f9fa;--bs-table-striped-bg: rgba(255, 255, 255, .05);--bs-table-active-color: #f8f9fa;--bs-table-active-bg: rgba(255, 255, 255, .1);--bs-table-hover-color: #f8f9fa;--bs-table-hover-bg: rgba(255, 255, 255, .075);width:100%;margin-bottom:1rem;color:#f8f9fa;vertical-align:top;border-color:#495057}html[data-netbox-color-mode=dark] .table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}html[data-netbox-color-mode=dark] .table>tbody{vertical-align:inherit}html[data-netbox-color-mode=dark] .table>thead{vertical-align:bottom}html[data-netbox-color-mode=dark] .table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}html[data-netbox-color-mode=dark] .caption-top{caption-side:top}html[data-netbox-color-mode=dark] .table-sm>:not(caption)>*>*{padding:.25rem}html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*{border-width:1px 0}html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*>*{border-width:0 1px}html[data-netbox-color-mode=dark] .table-borderless>:not(caption)>*>*{border-bottom-width:0}html[data-netbox-color-mode=dark] .table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}html[data-netbox-color-mode=dark] .table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}html[data-netbox-color-mode=dark] .table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}html[data-netbox-color-mode=dark] .table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}html[data-netbox-color-mode=dark] .table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}html[data-netbox-color-mode=dark] .table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}html[data-netbox-color-mode=dark] .table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}html[data-netbox-color-mode=dark] .table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}html[data-netbox-color-mode=dark] .table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}html[data-netbox-color-mode=dark] .table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}html[data-netbox-color-mode=dark] .table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}html[data-netbox-color-mode=dark] .table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){html[data-netbox-color-mode=dark] .table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){html[data-netbox-color-mode=dark] .table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){html[data-netbox-color-mode=dark] .table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}html[data-netbox-color-mode=dark] .form-label{margin-bottom:.5rem}html[data-netbox-color-mode=dark] .col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}html[data-netbox-color-mode=dark] .col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}html[data-netbox-color-mode=dark] .col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:.875rem}html[data-netbox-color-mode=dark] .form-text{margin-top:.25rem;font-size:.875em;color:#ced4da}html[data-netbox-color-mode=dark] .form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#212529;background-clip:padding-box;border:1px solid #495057;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control{transition:none}}html[data-netbox-color-mode=dark] .form-control[type=file]{overflow:hidden}html[data-netbox-color-mode=dark] .form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}html[data-netbox-color-mode=dark] .form-control:focus{color:#f8f9fa;background-color:#212529;border-color:#7db1fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-control::-webkit-date-and-time-value{height:1.5em}html[data-netbox-color-mode=dark] .form-control::placeholder{color:#495057;opacity:1}html[data-netbox-color-mode=dark] .form-control:disabled,html[data-netbox-color-mode=dark] .form-control[readonly]{background-color:#495057;opacity:1}html[data-netbox-color-mode=dark] .form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#f8f9fa;background-color:#495057;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control::file-selector-button{transition:none}}html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#454c53}html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#f8f9fa;background-color:#495057;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button{transition:none}}html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#454c53}html[data-netbox-color-mode=dark] .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#fff;background-color:transparent;border:solid transparent;border-width:1px 0}html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] .form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html[data-netbox-color-mode=dark] .form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html[data-netbox-color-mode=dark] .form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html[data-netbox-color-mode=dark] .form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html[data-netbox-color-mode=dark] textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}html[data-netbox-color-mode=dark] textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}html[data-netbox-color-mode=dark] textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}html[data-netbox-color-mode=dark] .form-control-color{max-width:3rem;height:auto;padding:.375rem}html[data-netbox-color-mode=dark] .form-control-color:not(:disabled):not([readonly]){cursor:pointer}html[data-netbox-color-mode=dark] .form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}html[data-netbox-color-mode=dark] .form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#212529;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #495057;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-select{transition:none}}html[data-netbox-color-mode=dark] .form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-select[multiple],html[data-netbox-color-mode=dark] .form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}html[data-netbox-color-mode=dark] .form-select:disabled{color:#adb5bd;background-color:#495057}html[data-netbox-color-mode=dark] .form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #f8f9fa}html[data-netbox-color-mode=dark] .form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}html[data-netbox-color-mode=dark] .form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}html[data-netbox-color-mode=dark] .form-check .form-check-input{float:left;margin-left:-1.5em}html[data-netbox-color-mode=dark] .form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#212529;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(255,255,255,.25);appearance:none;color-adjust:exact}html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]{border-radius:.25em}html[data-netbox-color-mode=dark] .form-check-input[type=radio]{border-radius:50%}html[data-netbox-color-mode=dark] .form-check-input:active{filter:brightness(90%)}html[data-netbox-color-mode=dark] .form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-check-input:checked{background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]:indeterminate{background-color:#6ea8fe;border-color:#6ea8fe;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}html[data-netbox-color-mode=dark] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input:disabled~.form-check-label{opacity:.5}html[data-netbox-color-mode=dark] .form-switch{padding-left:2.5em}html[data-netbox-color-mode=dark] .form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-switch .form-check-input{transition:none}}html[data-netbox-color-mode=dark] .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .form-check-inline{display:inline-block;margin-right:1rem}html[data-netbox-color-mode=dark] .btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}html[data-netbox-color-mode=dark] .btn-check[disabled]+.btn,html[data-netbox-color-mode=dark] .btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}html[data-netbox-color-mode=dark] .form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}html[data-netbox-color-mode=dark] .form-range:focus{outline:0}html[data-netbox-color-mode=dark] .form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #1b1f22,0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #1b1f22,0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .form-range::-moz-focus-outer{border:0}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#6ea8fe;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb{transition:none}}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb:active{background-color:#d4e5ff}html[data-netbox-color-mode=dark] .form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#6ea8fe;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb{transition:none}}html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb:active{background-color:#d4e5ff}html[data-netbox-color-mode=dark] .form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}html[data-netbox-color-mode=dark] .form-range:disabled{pointer-events:none}html[data-netbox-color-mode=dark] .form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}html[data-netbox-color-mode=dark] .form-range:disabled::-moz-range-thumb{background-color:#adb5bd}html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}html[data-netbox-color-mode=dark] .form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-floating>label{transition:none}}html[data-netbox-color-mode=dark] .form-floating>.form-control{padding:1rem .75rem}html[data-netbox-color-mode=dark] .form-floating>.form-control::placeholder{color:transparent}html[data-netbox-color-mode=dark] .form-floating>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}html[data-netbox-color-mode=dark] .input-group>.form-control,html[data-netbox-color-mode=dark] .input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}html[data-netbox-color-mode=dark] .input-group>.form-control:focus,html[data-netbox-color-mode=dark] .input-group>.form-select:focus{z-index:3}html[data-netbox-color-mode=dark] .input-group .btn{position:relative;z-index:2}html[data-netbox-color-mode=dark] .input-group .btn:focus{z-index:3}html[data-netbox-color-mode=dark] .input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#f8f9fa;text-align:center;white-space:nowrap;background-color:#495057;border:1px solid #495057;border-radius:.375rem}html[data-netbox-color-mode=dark] .input-group-lg>.form-control,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.input-group-text,html[data-netbox-color-mode=dark] .input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .input-group-sm>.form-control,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.input-group-text,html[data-netbox-color-mode=dark] .input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.form-select{padding-right:3rem}html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}html[data-netbox-color-mode=dark] .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.was-validated html[data-netbox-color-mode=dark]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-tooltip,html[data-netbox-color-mode=dark].is-valid~.valid-feedback,html[data-netbox-color-mode=dark].is-valid~.valid-tooltip{display:block}.was-validated html[data-netbox-color-mode=dark] .form-control:valid,html[data-netbox-color-mode=dark] .form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html[data-netbox-color-mode=dark] .form-control:valid:focus,html[data-netbox-color-mode=dark] .form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] textarea.form-control:valid,html[data-netbox-color-mode=dark] textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:valid,html[data-netbox-color-mode=dark] .form-select.is-valid{border-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:valid:focus,html[data-netbox-color-mode=dark] .form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid,html[data-netbox-color-mode=dark] .form-check-input.is-valid{border-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-valid:checked{background-color:#198754}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-valid~.form-check-label{color:#198754}html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid{z-index:1}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid:focus{z-index:3}html[data-netbox-color-mode=dark] .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}html[data-netbox-color-mode=dark] .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-tooltip,html[data-netbox-color-mode=dark].is-invalid~.invalid-feedback,html[data-netbox-color-mode=dark].is-invalid~.invalid-tooltip{display:block}.was-validated html[data-netbox-color-mode=dark] .form-control:invalid,html[data-netbox-color-mode=dark] .form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html[data-netbox-color-mode=dark] .form-control:invalid:focus,html[data-netbox-color-mode=dark] .form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] textarea.form-control:invalid,html[data-netbox-color-mode=dark] textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid,html[data-netbox-color-mode=dark] .form-select.is-invalid{border-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f8f9fa' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:focus,html[data-netbox-color-mode=dark] .form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid,html[data-netbox-color-mode=dark] .form-check-input.is-invalid{border-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-invalid~.form-check-label{color:#dc3545}html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid{z-index:2}.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid:focus{z-index:3}html[data-netbox-color-mode=dark] .btn{display:inline-block;font-weight:400;line-height:1.5;color:#fff;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .btn{transition:none}}html[data-netbox-color-mode=dark] .btn:hover{color:#fff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=dark] .btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .btn:disabled,html[data-netbox-color-mode=dark] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=dark] .btn{pointer-events:none;opacity:.65}html[data-netbox-color-mode=dark] .btn-primary{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-primary:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:active,html[data-netbox-color-mode=dark] .btn-primary.active,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary:focus,html[data-netbox-color-mode=dark] .btn-primary:active:focus,html[data-netbox-color-mode=dark] .btn-primary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html[data-netbox-color-mode=dark] .btn-primary:disabled,html[data-netbox-color-mode=dark] .btn-primary.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-secondary{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-secondary:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:active,html[data-netbox-color-mode=dark] .btn-secondary.active,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary:focus,html[data-netbox-color-mode=dark] .btn-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html[data-netbox-color-mode=dark] .btn-secondary:disabled,html[data-netbox-color-mode=dark] .btn-secondary.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-success{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-success:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:active,html[data-netbox-color-mode=dark] .btn-success.active,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success:focus,html[data-netbox-color-mode=dark] .btn-success:active:focus,html[data-netbox-color-mode=dark] .btn-success.active:focus,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html[data-netbox-color-mode=dark] .btn-success:disabled,html[data-netbox-color-mode=dark] .btn-success.disabled{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-info{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-info:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:active,html[data-netbox-color-mode=dark] .btn-info.active,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info:focus,html[data-netbox-color-mode=dark] .btn-info:active:focus,html[data-netbox-color-mode=dark] .btn-info.active:focus,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html[data-netbox-color-mode=dark] .btn-info:disabled,html[data-netbox-color-mode=dark] .btn-info.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-warning{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-warning:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:active,html[data-netbox-color-mode=dark] .btn-warning.active,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning:focus,html[data-netbox-color-mode=dark] .btn-warning:active:focus,html[data-netbox-color-mode=dark] .btn-warning.active:focus,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html[data-netbox-color-mode=dark] .btn-warning:disabled,html[data-netbox-color-mode=dark] .btn-warning.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-danger{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-danger:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:active,html[data-netbox-color-mode=dark] .btn-danger.active,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger:focus,html[data-netbox-color-mode=dark] .btn-danger:active:focus,html[data-netbox-color-mode=dark] .btn-danger.active:focus,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html[data-netbox-color-mode=dark] .btn-danger:disabled,html[data-netbox-color-mode=dark] .btn-danger.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-light{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-light:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:active,html[data-netbox-color-mode=dark] .btn-light.active,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light:focus,html[data-netbox-color-mode=dark] .btn-light:active:focus,html[data-netbox-color-mode=dark] .btn-light.active:focus,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}html[data-netbox-color-mode=dark] .btn-light:disabled,html[data-netbox-color-mode=dark] .btn-light.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-dark{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-dark:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:active,html[data-netbox-color-mode=dark] .btn-dark.active,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark:focus,html[data-netbox-color-mode=dark] .btn-dark:active:focus,html[data-netbox-color-mode=dark] .btn-dark.active:focus,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html[data-netbox-color-mode=dark] .btn-dark:disabled,html[data-netbox-color-mode=dark] .btn-dark.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-blue{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-blue:hover{color:#000;background-color:#84b5fe;border-color:#7db1fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:focus{color:#000;background-color:#84b5fe;border-color:#7db1fe;box-shadow:0 0 0 .25rem #5e8fd880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:active,html[data-netbox-color-mode=dark] .btn-blue.active,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle{color:#000;background-color:#8bb9fe;border-color:#7db1fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue:focus,html[data-netbox-color-mode=dark] .btn-blue:active:focus,html[data-netbox-color-mode=dark] .btn-blue.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5e8fd880}html[data-netbox-color-mode=dark] .btn-blue:disabled,html[data-netbox-color-mode=dark] .btn-blue.disabled{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-indigo{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-indigo:hover{color:#000;background-color:#b185f8;border-color:#ac7ef8}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:focus{color:#000;background-color:#b185f8;border-color:#ac7ef8;box-shadow:0 0 0 .25rem #8b5fd280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:active,html[data-netbox-color-mode=dark] .btn-indigo.active,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle{color:#000;background-color:#b58df9;border-color:#ac7ef8}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo:focus,html[data-netbox-color-mode=dark] .btn-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #8b5fd280}html[data-netbox-color-mode=dark] .btn-indigo:disabled,html[data-netbox-color-mode=dark] .btn-indigo.disabled{color:#000;background-color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-purple{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-purple:hover{color:#000;background-color:#b69fe0;border-color:#b299de}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:focus{color:#000;background-color:#b69fe0;border-color:#b299de;box-shadow:0 0 0 .25rem #9079b980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:active,html[data-netbox-color-mode=dark] .btn-purple.active,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle{color:#000;background-color:#baa5e1;border-color:#b299de}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple:focus,html[data-netbox-color-mode=dark] .btn-purple:active:focus,html[data-netbox-color-mode=dark] .btn-purple.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #9079b980}html[data-netbox-color-mode=dark] .btn-purple:disabled,html[data-netbox-color-mode=dark] .btn-purple.disabled{color:#000;background-color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-pink{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-pink:hover{color:#000;background-color:#ea97c0;border-color:#e991bc}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:focus{color:#000;background-color:#ea97c0;border-color:#e991bc;box-shadow:0 0 0 .25rem #c4719a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:active,html[data-netbox-color-mode=dark] .btn-pink.active,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle{color:#000;background-color:#eb9dc4;border-color:#e991bc}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink:focus,html[data-netbox-color-mode=dark] .btn-pink:active:focus,html[data-netbox-color-mode=dark] .btn-pink.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c4719a80}html[data-netbox-color-mode=dark] .btn-pink:disabled,html[data-netbox-color-mode=dark] .btn-pink.disabled{color:#000;background-color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-red{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-red:hover{color:#000;background-color:#ed98a0;border-color:#ec929a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:focus{color:#000;background-color:#ed98a0;border-color:#ec929a;box-shadow:0 0 0 .25rem #c7727a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:active,html[data-netbox-color-mode=dark] .btn-red.active,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle{color:#000;background-color:#ee9ea5;border-color:#ec929a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red:focus,html[data-netbox-color-mode=dark] .btn-red:active:focus,html[data-netbox-color-mode=dark] .btn-red.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c7727a80}html[data-netbox-color-mode=dark] .btn-red:disabled,html[data-netbox-color-mode=dark] .btn-red.disabled{color:#000;background-color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-orange{color:#000;background-color:#feb272;border-color:#feb272}html[data-netbox-color-mode=dark] .btn-orange:hover{color:#000;background-color:#febe87;border-color:#feba80}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-orange,html[data-netbox-color-mode=dark] .btn-orange:focus{color:#000;background-color:#febe87;border-color:#feba80;box-shadow:0 0 0 .25rem #d8976180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-orange,.btn-check:active+html[data-netbox-color-mode=dark] .btn-orange,html[data-netbox-color-mode=dark] .btn-orange:active,html[data-netbox-color-mode=dark] .btn-orange.active,.show>html[data-netbox-color-mode=dark] .btn-orange.dropdown-toggle{color:#000;background-color:#fec18e;border-color:#feba80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-orange:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-orange:focus,html[data-netbox-color-mode=dark] .btn-orange:active:focus,html[data-netbox-color-mode=dark] .btn-orange.active:focus,.show>html[data-netbox-color-mode=dark] .btn-orange.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d8976180}html[data-netbox-color-mode=dark] .btn-orange:disabled,html[data-netbox-color-mode=dark] .btn-orange.disabled{color:#000;background-color:#feb272;border-color:#feb272}html[data-netbox-color-mode=dark] .btn-yellow{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-yellow:hover{color:#000;background-color:#ffe080;border-color:#ffde79}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:focus{color:#000;background-color:#ffe080;border-color:#ffde79;box-shadow:0 0 0 .25rem #d9b95a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:active,html[data-netbox-color-mode=dark] .btn-yellow.active,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle{color:#000;background-color:#ffe188;border-color:#ffde79}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow:focus,html[data-netbox-color-mode=dark] .btn-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9b95a80}html[data-netbox-color-mode=dark] .btn-yellow:disabled,html[data-netbox-color-mode=dark] .btn-yellow.disabled{color:#000;background-color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-green{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-green:hover{color:#000;background-color:#8ac2a7;border-color:#83bea2}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:focus{color:#000;background-color:#8ac2a7;border-color:#83bea2;box-shadow:0 0 0 .25rem #639c8180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:active,html[data-netbox-color-mode=dark] .btn-green.active,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle{color:#000;background-color:#91c5ad;border-color:#83bea2}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green:focus,html[data-netbox-color-mode=dark] .btn-green:active:focus,html[data-netbox-color-mode=dark] .btn-green.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #639c8180}html[data-netbox-color-mode=dark] .btn-green:disabled,html[data-netbox-color-mode=dark] .btn-green.disabled{color:#000;background-color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-teal{color:#000;background-color:#79dfc1;border-color:#79dfc1}html[data-netbox-color-mode=dark] .btn-teal:hover{color:#000;background-color:#8de4ca;border-color:#86e2c7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-teal,html[data-netbox-color-mode=dark] .btn-teal:focus{color:#000;background-color:#8de4ca;border-color:#86e2c7;box-shadow:0 0 0 .25rem #67bea480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-teal,.btn-check:active+html[data-netbox-color-mode=dark] .btn-teal,html[data-netbox-color-mode=dark] .btn-teal:active,html[data-netbox-color-mode=dark] .btn-teal.active,.show>html[data-netbox-color-mode=dark] .btn-teal.dropdown-toggle{color:#000;background-color:#94e5cd;border-color:#86e2c7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-teal:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-teal:focus,html[data-netbox-color-mode=dark] .btn-teal:active:focus,html[data-netbox-color-mode=dark] .btn-teal.active:focus,.show>html[data-netbox-color-mode=dark] .btn-teal.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #67bea480}html[data-netbox-color-mode=dark] .btn-teal:disabled,html[data-netbox-color-mode=dark] .btn-teal.disabled{color:#000;background-color:#79dfc1;border-color:#79dfc1}html[data-netbox-color-mode=dark] .btn-cyan{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-cyan:hover{color:#000;background-color:#84e4f7;border-color:#7de2f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:focus{color:#000;background-color:#84e4f7;border-color:#7de2f7;box-shadow:0 0 0 .25rem #5ebed180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:active,html[data-netbox-color-mode=dark] .btn-cyan.active,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle{color:#000;background-color:#8be5f8;border-color:#7de2f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan:focus,html[data-netbox-color-mode=dark] .btn-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #5ebed180}html[data-netbox-color-mode=dark] .btn-cyan:disabled,html[data-netbox-color-mode=dark] .btn-cyan.disabled{color:#000;background-color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-gray{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-gray:hover{color:#000;background-color:#e3e6ea;border-color:#e1e5e9}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:focus{color:#000;background-color:#e3e6ea;border-color:#e1e5e9;box-shadow:0 0 0 .25rem #bdc0c480}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:active,html[data-netbox-color-mode=dark] .btn-gray.active,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle{color:#000;background-color:#e5e8eb;border-color:#e1e5e9}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray:focus,html[data-netbox-color-mode=dark] .btn-gray:active:focus,html[data-netbox-color-mode=dark] .btn-gray.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #bdc0c480}html[data-netbox-color-mode=dark] .btn-gray:disabled,html[data-netbox-color-mode=dark] .btn-gray.disabled{color:#000;background-color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=dark] .btn-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=dark] .btn-black:focus{color:#fff;background-color:#000;border-color:#000;box-shadow:0 0 0 .25rem #26262680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-black,.btn-check:active+html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=dark] .btn-black:active,html[data-netbox-color-mode=dark] .btn-black.active,.show>html[data-netbox-color-mode=dark] .btn-black.dropdown-toggle{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-black:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-black:focus,html[data-netbox-color-mode=dark] .btn-black:active:focus,html[data-netbox-color-mode=dark] .btn-black.active:focus,.show>html[data-netbox-color-mode=dark] .btn-black.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #26262680}html[data-netbox-color-mode=dark] .btn-black:disabled,html[data-netbox-color-mode=dark] .btn-black.disabled{color:#fff;background-color:#000;border-color:#000}html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=dark] .btn-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=dark] .btn-white:focus{color:#000;background-color:#fff;border-color:#fff;box-shadow:0 0 0 .25rem #d9d9d980}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-white,.btn-check:active+html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=dark] .btn-white:active,html[data-netbox-color-mode=dark] .btn-white.active,.show>html[data-netbox-color-mode=dark] .btn-white.dropdown-toggle{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-white:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-white:focus,html[data-netbox-color-mode=dark] .btn-white:active:focus,html[data-netbox-color-mode=dark] .btn-white.active:focus,.show>html[data-netbox-color-mode=dark] .btn-white.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9d9d980}html[data-netbox-color-mode=dark] .btn-white:disabled,html[data-netbox-color-mode=dark] .btn-white.disabled{color:#000;background-color:#fff;border-color:#fff}html[data-netbox-color-mode=dark] .btn-outline-primary{color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-outline-primary:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:active,html[data-netbox-color-mode=dark] .btn-outline-primary.active,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,html[data-netbox-color-mode=dark] .btn-outline-primary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html[data-netbox-color-mode=dark] .btn-outline-primary:disabled,html[data-netbox-color-mode=dark] .btn-outline-primary.disabled{color:#6ea8fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-secondary{color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-outline-secondary:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:active,html[data-netbox-color-mode=dark] .btn-outline-secondary.active,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html[data-netbox-color-mode=dark] .btn-outline-secondary:disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary.disabled{color:#adb5bd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-success{color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-outline-success:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:active,html[data-netbox-color-mode=dark] .btn-outline-success.active,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success:focus,html[data-netbox-color-mode=dark] .btn-outline-success:active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html[data-netbox-color-mode=dark] .btn-outline-success:disabled,html[data-netbox-color-mode=dark] .btn-outline-success.disabled{color:#75b798;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-info{color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-outline-info:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:active,html[data-netbox-color-mode=dark] .btn-outline-info.active,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info:focus,html[data-netbox-color-mode=dark] .btn-outline-info:active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html[data-netbox-color-mode=dark] .btn-outline-info:disabled,html[data-netbox-color-mode=dark] .btn-outline-info.disabled{color:#6edff6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-warning{color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-outline-warning:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:active,html[data-netbox-color-mode=dark] .btn-outline-warning.active,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,html[data-netbox-color-mode=dark] .btn-outline-warning:active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html[data-netbox-color-mode=dark] .btn-outline-warning:disabled,html[data-netbox-color-mode=dark] .btn-outline-warning.disabled{color:#ffda6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-danger{color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-outline-danger:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:active,html[data-netbox-color-mode=dark] .btn-outline-danger.active,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,html[data-netbox-color-mode=dark] .btn-outline-danger:active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html[data-netbox-color-mode=dark] .btn-outline-danger:disabled,html[data-netbox-color-mode=dark] .btn-outline-danger.disabled{color:#ea868f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-light{color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-outline-light:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:active,html[data-netbox-color-mode=dark] .btn-outline-light.active,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light:focus,html[data-netbox-color-mode=dark] .btn-outline-light:active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}html[data-netbox-color-mode=dark] .btn-outline-light:disabled,html[data-netbox-color-mode=dark] .btn-outline-light.disabled{color:#dee2e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-dark{color:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .btn-outline-dark:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:active,html[data-netbox-color-mode=dark] .btn-outline-dark.active,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,html[data-netbox-color-mode=dark] .btn-outline-dark:active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html[data-netbox-color-mode=dark] .btn-outline-dark:disabled,html[data-netbox-color-mode=dark] .btn-outline-dark.disabled{color:#adb5bd;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-blue{color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .btn-outline-blue:hover{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:focus{box-shadow:0 0 0 .25rem #6ea8fe80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:active,html[data-netbox-color-mode=dark] .btn-outline-blue.active,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show{color:#000;background-color:#6ea8fe;border-color:#6ea8fe}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,html[data-netbox-color-mode=dark] .btn-outline-blue:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6ea8fe80}html[data-netbox-color-mode=dark] .btn-outline-blue:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue.disabled{color:#6ea8fe;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-indigo{color:#a370f7;border-color:#a370f7}html[data-netbox-color-mode=dark] .btn-outline-indigo:hover{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #a370f780}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:active,html[data-netbox-color-mode=dark] .btn-outline-indigo.active,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show{color:#000;background-color:#a370f7;border-color:#a370f7}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a370f780}html[data-netbox-color-mode=dark] .btn-outline-indigo:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo.disabled{color:#a370f7;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-purple{color:#a98eda;border-color:#a98eda}html[data-netbox-color-mode=dark] .btn-outline-purple:hover{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:focus{box-shadow:0 0 0 .25rem #a98eda80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:active,html[data-netbox-color-mode=dark] .btn-outline-purple.active,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show{color:#000;background-color:#a98eda;border-color:#a98eda}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,html[data-netbox-color-mode=dark] .btn-outline-purple:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #a98eda80}html[data-netbox-color-mode=dark] .btn-outline-purple:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple.disabled{color:#a98eda;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-pink{color:#e685b5;border-color:#e685b5}html[data-netbox-color-mode=dark] .btn-outline-pink:hover{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:focus{box-shadow:0 0 0 .25rem #e685b580}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:active,html[data-netbox-color-mode=dark] .btn-outline-pink.active,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show{color:#000;background-color:#e685b5;border-color:#e685b5}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,html[data-netbox-color-mode=dark] .btn-outline-pink:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e685b580}html[data-netbox-color-mode=dark] .btn-outline-pink:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink.disabled{color:#e685b5;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-red{color:#ea868f;border-color:#ea868f}html[data-netbox-color-mode=dark] .btn-outline-red:hover{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:focus{box-shadow:0 0 0 .25rem #ea868f80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:active,html[data-netbox-color-mode=dark] .btn-outline-red.active,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show{color:#000;background-color:#ea868f;border-color:#ea868f}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red:focus,html[data-netbox-color-mode=dark] .btn-outline-red:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ea868f80}html[data-netbox-color-mode=dark] .btn-outline-red:disabled,html[data-netbox-color-mode=dark] .btn-outline-red.disabled{color:#ea868f;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-orange{color:#feb272;border-color:#feb272}html[data-netbox-color-mode=dark] .btn-outline-orange:hover{color:#000;background-color:#feb272;border-color:#feb272}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-orange,html[data-netbox-color-mode=dark] .btn-outline-orange:focus{box-shadow:0 0 0 .25rem #feb27280}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-orange,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-orange,html[data-netbox-color-mode=dark] .btn-outline-orange:active,html[data-netbox-color-mode=dark] .btn-outline-orange.active,html[data-netbox-color-mode=dark] .btn-outline-orange.dropdown-toggle.show{color:#000;background-color:#feb272;border-color:#feb272}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-orange:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-orange:focus,html[data-netbox-color-mode=dark] .btn-outline-orange:active:focus,html[data-netbox-color-mode=dark] .btn-outline-orange.active:focus,html[data-netbox-color-mode=dark] .btn-outline-orange.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #feb27280}html[data-netbox-color-mode=dark] .btn-outline-orange:disabled,html[data-netbox-color-mode=dark] .btn-outline-orange.disabled{color:#feb272;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-yellow{color:#ffda6a;border-color:#ffda6a}html[data-netbox-color-mode=dark] .btn-outline-yellow:hover{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffda6a80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:active,html[data-netbox-color-mode=dark] .btn-outline-yellow.active,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffda6a;border-color:#ffda6a}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffda6a80}html[data-netbox-color-mode=dark] .btn-outline-yellow:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow.disabled{color:#ffda6a;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-green{color:#75b798;border-color:#75b798}html[data-netbox-color-mode=dark] .btn-outline-green:hover{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:focus{box-shadow:0 0 0 .25rem #75b79880}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:active,html[data-netbox-color-mode=dark] .btn-outline-green.active,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show{color:#000;background-color:#75b798;border-color:#75b798}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green:focus,html[data-netbox-color-mode=dark] .btn-outline-green:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #75b79880}html[data-netbox-color-mode=dark] .btn-outline-green:disabled,html[data-netbox-color-mode=dark] .btn-outline-green.disabled{color:#75b798;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-teal{color:#79dfc1;border-color:#79dfc1}html[data-netbox-color-mode=dark] .btn-outline-teal:hover{color:#000;background-color:#79dfc1;border-color:#79dfc1}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-teal,html[data-netbox-color-mode=dark] .btn-outline-teal:focus{box-shadow:0 0 0 .25rem #79dfc180}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-teal,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-teal,html[data-netbox-color-mode=dark] .btn-outline-teal:active,html[data-netbox-color-mode=dark] .btn-outline-teal.active,html[data-netbox-color-mode=dark] .btn-outline-teal.dropdown-toggle.show{color:#000;background-color:#79dfc1;border-color:#79dfc1}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-teal:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-teal:focus,html[data-netbox-color-mode=dark] .btn-outline-teal:active:focus,html[data-netbox-color-mode=dark] .btn-outline-teal.active:focus,html[data-netbox-color-mode=dark] .btn-outline-teal.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #79dfc180}html[data-netbox-color-mode=dark] .btn-outline-teal:disabled,html[data-netbox-color-mode=dark] .btn-outline-teal.disabled{color:#79dfc1;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-cyan{color:#6edff6;border-color:#6edff6}html[data-netbox-color-mode=dark] .btn-outline-cyan:hover{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #6edff680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:active,html[data-netbox-color-mode=dark] .btn-outline-cyan.active,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#6edff6;border-color:#6edff6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6edff680}html[data-netbox-color-mode=dark] .btn-outline-cyan:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan.disabled{color:#6edff6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-gray{color:#dee2e6;border-color:#dee2e6}html[data-netbox-color-mode=dark] .btn-outline-gray:hover{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:focus{box-shadow:0 0 0 .25rem #dee2e680}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:active,html[data-netbox-color-mode=dark] .btn-outline-gray.active,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#dee2e6;border-color:#dee2e6}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,html[data-netbox-color-mode=dark] .btn-outline-gray:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dee2e680}html[data-netbox-color-mode=dark] .btn-outline-gray:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray.disabled{color:#dee2e6;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-black{color:#000;border-color:#000}html[data-netbox-color-mode=dark] .btn-outline-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-black,html[data-netbox-color-mode=dark] .btn-outline-black:focus{box-shadow:0 0 0 .25rem #00000080}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-black,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-black,html[data-netbox-color-mode=dark] .btn-outline-black:active,html[data-netbox-color-mode=dark] .btn-outline-black.active,html[data-netbox-color-mode=dark] .btn-outline-black.dropdown-toggle.show{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-black:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-black:focus,html[data-netbox-color-mode=dark] .btn-outline-black:active:focus,html[data-netbox-color-mode=dark] .btn-outline-black.active:focus,html[data-netbox-color-mode=dark] .btn-outline-black.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #00000080}html[data-netbox-color-mode=dark] .btn-outline-black:disabled,html[data-netbox-color-mode=dark] .btn-outline-black.disabled{color:#000;background-color:transparent}html[data-netbox-color-mode=dark] .btn-outline-white{color:#fff;border-color:#fff}html[data-netbox-color-mode=dark] .btn-outline-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-white,html[data-netbox-color-mode=dark] .btn-outline-white:focus{box-shadow:0 0 0 .25rem #ffffff80}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-white,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-white,html[data-netbox-color-mode=dark] .btn-outline-white:active,html[data-netbox-color-mode=dark] .btn-outline-white.active,html[data-netbox-color-mode=dark] .btn-outline-white.dropdown-toggle.show{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-white:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-white:focus,html[data-netbox-color-mode=dark] .btn-outline-white:active:focus,html[data-netbox-color-mode=dark] .btn-outline-white.active:focus,html[data-netbox-color-mode=dark] .btn-outline-white.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffffff80}html[data-netbox-color-mode=dark] .btn-outline-white:disabled,html[data-netbox-color-mode=dark] .btn-outline-white.disabled{color:#fff;background-color:transparent}html[data-netbox-color-mode=dark] .btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}html[data-netbox-color-mode=dark] .btn-link:hover{color:#0a58ca}html[data-netbox-color-mode=dark] .btn-link:disabled,html[data-netbox-color-mode=dark] .btn-link.disabled{color:#dee2e6}html[data-netbox-color-mode=dark] .btn-lg,html[data-netbox-color-mode=dark] .btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html[data-netbox-color-mode=dark] .btn-sm,html[data-netbox-color-mode=dark] .btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] .fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .fade{transition:none}}html[data-netbox-color-mode=dark] .fade:not(.show){opacity:0}html[data-netbox-color-mode=dark] .collapse:not(.show){display:none}html[data-netbox-color-mode=dark] .collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .collapsing{transition:none}}html[data-netbox-color-mode=dark] .dropup,html[data-netbox-color-mode=dark] .dropend,html[data-netbox-color-mode=dark] .dropdown,html[data-netbox-color-mode=dark] .dropstart{position:relative}html[data-netbox-color-mode=dark] .dropdown-toggle{white-space:nowrap}html[data-netbox-color-mode=dark] .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}html[data-netbox-color-mode=dark] .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#fff;text-align:left;list-style:none;background-color:#212529;background-clip:padding-box;border:1px solid rgba(255,255,255,.15);border-radius:.375rem}html[data-netbox-color-mode=dark] .dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}html[data-netbox-color-mode=dark] .dropdown-menu-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .dropdown-menu-sm-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-sm-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .dropdown-menu-md-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-md-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .dropdown-menu-lg-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-lg-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .dropdown-menu-xl-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-xl-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start{--bs-position: start}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end{--bs-position: end}html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}html[data-netbox-color-mode=dark] .dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after{vertical-align:0}html[data-netbox-color-mode=dark] .dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after{display:none}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:empty:after{margin-left:0}html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before{vertical-align:0}html[data-netbox-color-mode=dark] .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}html[data-netbox-color-mode=dark] .dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#f8f9fa;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}html[data-netbox-color-mode=dark] .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-item:focus{color:#fff;background-color:#6c757d}html[data-netbox-color-mode=dark] .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}html[data-netbox-color-mode=dark] .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-item:disabled{color:#343a40;pointer-events:none;background-color:transparent}html[data-netbox-color-mode=dark] .dropdown-menu.show{display:block}html[data-netbox-color-mode=dark] .dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}html[data-netbox-color-mode=dark] .dropdown-item-text{display:block;padding:.25rem 1rem;color:#f8f9fa}html[data-netbox-color-mode=dark] .dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item{color:#dee2e6}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-divider{border-color:#00000026}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item-text{color:#dee2e6}html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-header{color:#adb5bd}html[data-netbox-color-mode=dark] .btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}html[data-netbox-color-mode=dark] .btn-group>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn{position:relative;flex:1 1 auto}html[data-netbox-color-mode=dark] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:hover,html[data-netbox-color-mode=dark] .btn-group>.btn:focus,html[data-netbox-color-mode=dark] .btn-group>.btn:active,html[data-netbox-color-mode=dark] .btn-group>.btn.active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn.active{z-index:1}html[data-netbox-color-mode=dark] .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .btn-toolbar .input-group{width:auto}html[data-netbox-color-mode=dark] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child){margin-left:-1px}html[data-netbox-color-mode=dark] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=dark] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=dark] .dropdown-toggle-split:after{margin-left:0}.dropstart html[data-netbox-color-mode=dark] .dropdown-toggle-split:before{margin-right:0}html[data-netbox-color-mode=dark] .btn-sm+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}html[data-netbox-color-mode=dark] .btn-lg+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}html[data-netbox-color-mode=dark] .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group{width:100%}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}html[data-netbox-color-mode=dark] .nav-link{display:block;padding:.5rem 1rem;color:#fff;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .nav-link{transition:none}}html[data-netbox-color-mode=dark] .nav-link.disabled{color:#343a40;pointer-events:none;cursor:default}html[data-netbox-color-mode=dark] .nav-tabs{border-bottom:1px solid #495057}html[data-netbox-color-mode=dark] .nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:focus{border-color:rgba(52,58,64,.5) rgba(52,58,64,.5) #495057;isolation:isolate}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.disabled{color:#343a40;background-color:transparent;border-color:transparent}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-item.show .nav-link{color:#f8f9fa;background-color:#1b1f22;border-color:#343a40 #343a40 #1b1f22}html[data-netbox-color-mode=dark] .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .nav-pills .nav-link{background:none;border:0;border-radius:.375rem}html[data-netbox-color-mode=dark] .nav-pills .nav-link.active,html[data-netbox-color-mode=dark] .nav-pills .show>.nav-link{color:#000;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .nav-fill>.nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item{flex:1 1 auto;text-align:center}html[data-netbox-color-mode=dark] .nav-justified>.nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}html[data-netbox-color-mode=dark] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item .nav-link{width:100%}html[data-netbox-color-mode=dark] .tab-content>.tab-pane{display:none}html[data-netbox-color-mode=dark] .tab-content>.active{display:block}html[data-netbox-color-mode=dark] .navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar>.container,html[data-netbox-color-mode=dark] .navbar>.container-fluid,html[data-netbox-color-mode=dark] .navbar>.container-sm,html[data-netbox-color-mode=dark] .navbar>.container-md,html[data-netbox-color-mode=dark] .navbar>.container-lg,html[data-netbox-color-mode=dark] .navbar>.container-xl,html[data-netbox-color-mode=dark] .navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}html[data-netbox-color-mode=dark] .navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}html[data-netbox-color-mode=dark] .navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}html[data-netbox-color-mode=dark] .navbar-nav .nav-link{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] .navbar-nav .dropdown-menu{position:static}html[data-netbox-color-mode=dark] .navbar-text{padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}html[data-netbox-color-mode=dark] .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .navbar-toggler{transition:none}}html[data-netbox-color-mode=dark] .navbar-toggler:hover{text-decoration:none}html[data-netbox-color-mode=dark] .navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}html[data-netbox-color-mode=dark] .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}html[data-netbox-color-mode=dark] .navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){html[data-netbox-color-mode=dark] .navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-toggler{display:none}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-toggler{display:none}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-toggler{display:none}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-toggler{display:none}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-toggler{display:none}}html[data-netbox-color-mode=dark] .navbar-expand{flex-wrap:nowrap;justify-content:flex-start}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav{flex-direction:row}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .dropdown-menu{position:absolute}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav-scroll{overflow:visible}html[data-netbox-color-mode=dark] .navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}html[data-netbox-color-mode=dark] .navbar-expand .navbar-toggler{display:none}html[data-netbox-color-mode=dark] .navbar-light .navbar-brand{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:focus{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link{color:#1b1f22}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:focus{color:#000000b3}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.active{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler{color:#1b1f22;border-color:#495057}html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23495057' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .navbar-light .navbar-text{color:#1b1f22}html[data-netbox-color-mode=dark] .navbar-light .navbar-text a,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:focus{color:#000000e6}html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:focus{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link{color:#ffffff8c}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.active{color:#fff}html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .navbar-dark .navbar-text{color:#ffffff8c}html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:focus{color:#fff}html[data-netbox-color-mode=dark] .card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#212529;background-clip:border-box;border:1px solid rgba(255,255,255,.125);border-radius:.375rem}html[data-netbox-color-mode=dark] .card>hr{margin-right:0;margin-left:0}html[data-netbox-color-mode=dark] .card>.list-group{border-top:inherit;border-bottom:inherit}html[data-netbox-color-mode=dark] .card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card>.card-header+.list-group,html[data-netbox-color-mode=dark] .card>.list-group+.card-footer{border-top:0}html[data-netbox-color-mode=dark] .card-body{flex:1 1 auto;padding:1rem}html[data-netbox-color-mode=dark] .card-title{margin-bottom:.5rem}html[data-netbox-color-mode=dark] .card-subtitle{margin-top:-.25rem;margin-bottom:0}html[data-netbox-color-mode=dark] .card-text:last-child{margin-bottom:0}html[data-netbox-color-mode=dark] .card-link:hover{text-decoration:none}html[data-netbox-color-mode=dark] .card-link+.card-link{margin-left:1rem}html[data-netbox-color-mode=dark] .card-header{padding:.5rem 1rem;margin-bottom:0;background-color:"unset";border-bottom:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .card-header:first-child{border-radius:calc(0.375rem - 1px) calc(0.375rem - 1px) 0 0}html[data-netbox-color-mode=dark] .card-footer{padding:.5rem 1rem;background-color:"unset";border-top:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .card-footer:last-child{border-radius:0 0 calc(0.375rem - 1px) calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}html[data-netbox-color-mode=dark] .card-header-tabs .nav-link.active{background-color:#212529;border-bottom-color:#212529}html[data-netbox-color-mode=dark] .card-header-pills{margin-right:-.5rem;margin-left:-.5rem}html[data-netbox-color-mode=dark] .card-img-overlay{position:absolute;inset:0;padding:1rem;border-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=dark] .card-img-bottom{width:100%}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-bottom{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .card-group{display:flex;flex-flow:row wrap}html[data-netbox-color-mode=dark] .card-group>.card{flex:1 0 0%;margin-bottom:0}html[data-netbox-color-mode=dark] .card-group>.card+.card{margin-left:0;border-left:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}html[data-netbox-color-mode=dark] .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#fff;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .accordion-button{transition:none}}html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed){color:#000;background-color:#6397e5;box-shadow:inset 0 -1px #495057}html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}html[data-netbox-color-mode=dark] .accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .accordion-button:after{transition:none}}html[data-netbox-color-mode=dark] .accordion-button:hover{z-index:2}html[data-netbox-color-mode=dark] .accordion-button:focus{z-index:3;border-color:#7db1fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .accordion-header{margin-bottom:0}html[data-netbox-color-mode=dark] .accordion-item{background-color:transparent;border:1px solid #495057}html[data-netbox-color-mode=dark] .accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .accordion-item:not(:first-of-type){border-top:0}html[data-netbox-color-mode=dark] .accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .accordion-body{padding:1rem 1.25rem}html[data-netbox-color-mode=dark] .accordion-flush .accordion-collapse{border-width:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:first-child{border-top:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:last-child{border-bottom:0}html[data-netbox-color-mode=dark] .accordion-flush .accordion-item .accordion-button{border-radius:0}html[data-netbox-color-mode=dark] .breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#f8f9fa;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='%23f8f9fa'/%3E%3C/svg%3E"))}html[data-netbox-color-mode=dark] .breadcrumb-item.active{color:#fff}html[data-netbox-color-mode=dark] .pagination{display:flex;padding-left:0;list-style:none}html[data-netbox-color-mode=dark] .page-link{position:relative;display:block;color:#9ec5fe;text-decoration:none;background-color:#343a40;border:1px solid #6c757d;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .page-link{transition:none}}html[data-netbox-color-mode=dark] .page-link:hover{z-index:2;color:#cfe2ff;background-color:#ced4da;border-color:#adb5bd}html[data-netbox-color-mode=dark] .page-link:focus{z-index:3;color:#cfe2ff;background-color:#ced4da;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .page-item:not(:first-child) .page-link{margin-left:-1px}html[data-netbox-color-mode=dark] .page-item.active .page-link{z-index:3;color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#343a40;border-color:#6c757d}html[data-netbox-color-mode=dark] .page-link{padding:.375rem .75rem}html[data-netbox-color-mode=dark] .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}html[data-netbox-color-mode=dark] .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}html[data-netbox-color-mode=dark] .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}html[data-netbox-color-mode=dark] .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}html[data-netbox-color-mode=dark] .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}html[data-netbox-color-mode=dark] .badge:empty{display:none}html[data-netbox-color-mode=dark] .btn .badge{position:relative;top:-1px}html[data-netbox-color-mode=dark] .alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}html[data-netbox-color-mode=dark] .alert-heading{color:inherit}html[data-netbox-color-mode=dark] .alert-link{font-weight:700}html[data-netbox-color-mode=dark] .alert-dismissible{padding-right:3rem}html[data-netbox-color-mode=dark] .alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}html[data-netbox-color-mode=dark] .alert-primary{color:#162233;background-color:#75acfe;border-color:#8bb9fe}html[data-netbox-color-mode=dark] .alert-primary .alert-link{color:#121b29}html[data-netbox-color-mode=dark] .alert-secondary{color:#232426;background-color:#b1b9c0;border-color:#bdc4ca}html[data-netbox-color-mode=dark] .alert-secondary .alert-link{color:#1c1d1e}html[data-netbox-color-mode=dark] .alert-success{color:#17251e;background-color:#7cbb9d;border-color:#91c5ad}html[data-netbox-color-mode=dark] .alert-success .alert-link{color:#121e18}html[data-netbox-color-mode=dark] .alert-info{color:#162d31;background-color:#75e1f6;border-color:#8be5f8}html[data-netbox-color-mode=dark] .alert-info .alert-link{color:#122427}html[data-netbox-color-mode=dark] .alert-warning{color:#332c15;background-color:#ffdc71;border-color:#ffe188}html[data-netbox-color-mode=dark] .alert-warning .alert-link{color:#292311}html[data-netbox-color-mode=dark] .alert-danger{color:#2f1b1d;background-color:#eb8c95;border-color:#ee9ea5}html[data-netbox-color-mode=dark] .alert-danger .alert-link{color:#261617}html[data-netbox-color-mode=dark] .alert-light{color:#2c2d2e;background-color:#e0e3e7;border-color:#e5e8eb}html[data-netbox-color-mode=dark] .alert-light .alert-link{color:#232425}html[data-netbox-color-mode=dark] .alert-dark{color:#232426;background-color:#b1b9c0;border-color:#bdc4ca}html[data-netbox-color-mode=dark] .alert-dark .alert-link{color:#1c1d1e}html[data-netbox-color-mode=dark] .alert-blue{color:#162233;background-color:#75acfe;border-color:#8bb9fe}html[data-netbox-color-mode=dark] .alert-blue .alert-link{color:#121b29}html[data-netbox-color-mode=dark] .alert-indigo{color:#211631;background-color:#a877f7;border-color:#b58df9}html[data-netbox-color-mode=dark] .alert-indigo .alert-link{color:#1a1227}html[data-netbox-color-mode=dark] .alert-purple{color:#221c2c;background-color:#ad94dc;border-color:#baa5e1}html[data-netbox-color-mode=dark] .alert-purple .alert-link{color:#1b1623}html[data-netbox-color-mode=dark] .alert-pink{color:#2e1b24;background-color:#e78bb9;border-color:#eb9dc4}html[data-netbox-color-mode=dark] .alert-pink .alert-link{color:#25161d}html[data-netbox-color-mode=dark] .alert-red{color:#2f1b1d;background-color:#eb8c95;border-color:#ee9ea5}html[data-netbox-color-mode=dark] .alert-red .alert-link{color:#261617}html[data-netbox-color-mode=dark] .alert-orange{color:#332417;background-color:#feb679;border-color:#fec18e}html[data-netbox-color-mode=dark] .alert-orange .alert-link{color:#291d12}html[data-netbox-color-mode=dark] .alert-yellow{color:#332c15;background-color:#ffdc71;border-color:#ffe188}html[data-netbox-color-mode=dark] .alert-yellow .alert-link{color:#292311}html[data-netbox-color-mode=dark] .alert-green{color:#17251e;background-color:#7cbb9d;border-color:#91c5ad}html[data-netbox-color-mode=dark] .alert-green .alert-link{color:#121e18}html[data-netbox-color-mode=dark] .alert-teal{color:#182d27;background-color:#80e1c4;border-color:#94e5cd}html[data-netbox-color-mode=dark] .alert-teal .alert-link{color:#13241f}html[data-netbox-color-mode=dark] .alert-cyan{color:#162d31;background-color:#75e1f6;border-color:#8be5f8}html[data-netbox-color-mode=dark] .alert-cyan .alert-link{color:#122427}html[data-netbox-color-mode=dark] .alert-gray{color:#2c2d2e;background-color:#e0e3e7;border-color:#e5e8eb}html[data-netbox-color-mode=dark] .alert-gray .alert-link{color:#232425}html[data-netbox-color-mode=dark] .alert-black{color:#ccc;background-color:#0d0d0d;border-color:#333}html[data-netbox-color-mode=dark] .alert-black .alert-link{color:#a3a3a3}html[data-netbox-color-mode=dark] .alert-white{color:#333;background-color:#fff;border-color:#fff}html[data-netbox-color-mode=dark] .alert-white .alert-link{color:#292929}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}html[data-netbox-color-mode=dark] .progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#6c757d;border-radius:.375rem}html[data-netbox-color-mode=dark] .progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#6ea8fe;transition:width .6s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .progress-bar{transition:none}}html[data-netbox-color-mode=dark] .progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}html[data-netbox-color-mode=dark] .progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .progress-bar-animated{animation:none}}html[data-netbox-color-mode=dark] .list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}html[data-netbox-color-mode=dark] .list-group-numbered{list-style-type:none;counter-reset:section}html[data-netbox-color-mode=dark] .list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}html[data-netbox-color-mode=dark] .list-group-item-action{width:100%;color:#dee2e6;text-align:inherit}html[data-netbox-color-mode=dark] .list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-action:focus{z-index:1;color:#fff;text-decoration:none;background-color:#f8f9fa26}html[data-netbox-color-mode=dark] .list-group-item-action:active{color:#fff;background-color:#dee2e620}html[data-netbox-color-mode=dark] .list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#fff;text-decoration:none;background-color:#212529;border:1px solid rgba(255,255,255,.125)}html[data-netbox-color-mode=dark] .list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}html[data-netbox-color-mode=dark] .list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}html[data-netbox-color-mode=dark] .list-group-item.disabled,html[data-netbox-color-mode=dark] .list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#212529}html[data-netbox-color-mode=dark] .list-group-item.active{z-index:2;color:#000;background-color:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item{border-top-width:0}html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active{margin-top:-1px;border-top-width:1px}html[data-netbox-color-mode=dark] .list-group-horizontal{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){html[data-netbox-color-mode=dark] .list-group-horizontal-sm{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .list-group-horizontal-md{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .list-group-horizontal-lg{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .list-group-horizontal-xl{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .list-group-horizontal-xxl{flex-direction:row}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item.active{margin-top:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}html[data-netbox-color-mode=dark] .list-group-flush{border-radius:0}html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item{border-width:0 0 1px}html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item:last-child{border-bottom-width:0}html[data-netbox-color-mode=dark] .list-group-item-primary{color:#426598;background-color:#e2eeff}html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}html[data-netbox-color-mode=dark] .list-group-item-secondary{color:#686d71;background-color:#eff0f2}html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}html[data-netbox-color-mode=dark] .list-group-item-success{color:#466e5b;background-color:#e3f1ea}html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}html[data-netbox-color-mode=dark] .list-group-item-info{color:#2c5962;background-color:#e2f9fd}html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}html[data-netbox-color-mode=dark] .list-group-item-warning{color:#66572a;background-color:#fff8e1}html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}html[data-netbox-color-mode=dark] .list-group-item-danger{color:#8c5056;background-color:#fbe7e9}html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}html[data-netbox-color-mode=dark] .list-group-item-light{color:#595a5c;background-color:#f8f9fa}html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}html[data-netbox-color-mode=dark] .list-group-item-dark{color:#686d71;background-color:#eff0f2}html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}html[data-netbox-color-mode=dark] .list-group-item-blue{color:#426598;background-color:#e2eeff}html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:focus{color:#426598;background-color:#cbd6e6}html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#426598;border-color:#426598}html[data-netbox-color-mode=dark] .list-group-item-indigo{color:#624394;background-color:#ede2fd}html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:focus{color:#624394;background-color:#d5cbe4}html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#624394;border-color:#624394}html[data-netbox-color-mode=dark] .list-group-item-purple{color:#655583;background-color:#eee8f8}html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:focus{color:#655583;background-color:#d6d1df}html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#655583;border-color:#655583}html[data-netbox-color-mode=dark] .list-group-item-pink{color:#8a506d;background-color:#fae7f0}html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:focus{color:#8a506d;background-color:#e1d0d8}html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#8a506d;border-color:#8a506d}html[data-netbox-color-mode=dark] .list-group-item-red{color:#8c5056;background-color:#fbe7e9}html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:focus{color:#8c5056;background-color:#e2d0d2}html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action.active{color:#fff;background-color:#8c5056;border-color:#8c5056}html[data-netbox-color-mode=dark] .list-group-item-orange{color:#66472e;background-color:#fff0e3}html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action:focus{color:#66472e;background-color:#e6d8cc}html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action.active{color:#fff;background-color:#66472e;border-color:#66472e}html[data-netbox-color-mode=dark] .list-group-item-yellow{color:#66572a;background-color:#fff8e1}html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:focus{color:#66572a;background-color:#e6dfcb}html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#66572a;border-color:#66572a}html[data-netbox-color-mode=dark] .list-group-item-green{color:#466e5b;background-color:#e3f1ea}html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:focus{color:#466e5b;background-color:#ccd9d3}html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action.active{color:#fff;background-color:#466e5b;border-color:#466e5b}html[data-netbox-color-mode=dark] .list-group-item-teal{color:#30594d;background-color:#e4f9f3}html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action:focus{color:#30594d;background-color:#cde0db}html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action.active{color:#fff;background-color:#30594d;border-color:#30594d}html[data-netbox-color-mode=dark] .list-group-item-cyan{color:#2c5962;background-color:#e2f9fd}html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:focus{color:#2c5962;background-color:#cbe0e4}html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#2c5962;border-color:#2c5962}html[data-netbox-color-mode=dark] .list-group-item-gray{color:#595a5c;background-color:#f8f9fa}html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:focus{color:#595a5c;background-color:#dfe0e1}html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#595a5c;border-color:#595a5c}html[data-netbox-color-mode=dark] .list-group-item-black{color:#000;background-color:#ccc}html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action:focus{color:#000;background-color:#b8b8b8}html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action.active{color:#fff;background-color:#000;border-color:#000}html[data-netbox-color-mode=dark] .list-group-item-white{color:#666;background-color:#fff}html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action:focus{color:#666;background-color:#e6e6e6}html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action.active{color:#fff;background-color:#666;border-color:#666}html[data-netbox-color-mode=dark] .btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#fff;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}html[data-netbox-color-mode=dark] .btn-close:hover{color:#fff;text-decoration:none;opacity:.75}html[data-netbox-color-mode=dark] .btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}html[data-netbox-color-mode=dark] .btn-close:disabled,html[data-netbox-color-mode=dark] .btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}html[data-netbox-color-mode=dark] .btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}html[data-netbox-color-mode=dark] .toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}html[data-netbox-color-mode=dark] .toast:not(.showing):not(.show){opacity:0}html[data-netbox-color-mode=dark] .toast.hide{display:none}html[data-netbox-color-mode=dark] .toast-container{width:max-content;max-width:100%;pointer-events:none}html[data-netbox-color-mode=dark] .toast-container>:not(:last-child){margin-bottom:.75rem}html[data-netbox-color-mode=dark] .toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html[data-netbox-color-mode=dark] .toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}html[data-netbox-color-mode=dark] .toast-body{padding:.75rem;word-wrap:break-word}html[data-netbox-color-mode=dark] .modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}html[data-netbox-color-mode=dark] .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade html[data-netbox-color-mode=dark] .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade html[data-netbox-color-mode=dark] .modal-dialog{transition:none}}.modal.show html[data-netbox-color-mode=dark] .modal-dialog{transform:none}.modal.modal-static html[data-netbox-color-mode=dark] .modal-dialog{transform:scale(1.02)}html[data-netbox-color-mode=dark] .modal-dialog-scrollable{height:calc(100% - 1rem)}html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}html[data-netbox-color-mode=dark] .modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#343a40;background-clip:padding-box;border:1px solid rgba(255,255,255,.2);border-radius:.75rem;outline:0}html[data-netbox-color-mode=dark] .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}html[data-netbox-color-mode=dark] .modal-backdrop.fade{opacity:0}html[data-netbox-color-mode=dark] .modal-backdrop.show{opacity:.5}html[data-netbox-color-mode=dark] .modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #495057;border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}html[data-netbox-color-mode=dark] .modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}html[data-netbox-color-mode=dark] .modal-title{margin-bottom:0;line-height:1.5}html[data-netbox-color-mode=dark] .modal-body{position:relative;flex:1 1 auto;padding:1rem}html[data-netbox-color-mode=dark] .modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #495057;border-bottom-right-radius:calc(0.75rem - 1px);border-bottom-left-radius:calc(0.75rem - 1px)}html[data-netbox-color-mode=dark] .modal-footer>*{margin:.25rem}@media (min-width: 576px){html[data-netbox-color-mode=dark] .modal-dialog{max-width:500px;margin:1.75rem auto}html[data-netbox-color-mode=dark] .modal-dialog-scrollable{height:calc(100% - 3.5rem)}html[data-netbox-color-mode=dark] .modal-dialog-centered{min-height:calc(100% - 3.5rem)}html[data-netbox-color-mode=dark] .modal-sm{max-width:300px}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .modal-lg,html[data-netbox-color-mode=dark] .modal-xl{max-width:800px}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .modal-xl{max-width:1140px}}html[data-netbox-color-mode=dark] .modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen .modal-footer{border-radius:0}@media (max-width: 575.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width: 1199.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width: 1399.98px){html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-header{border-radius:0}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-body{overflow-y:auto}html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-footer{border-radius:0}}html[data-netbox-color-mode=dark] .tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}html[data-netbox-color-mode=dark] .tooltip.show{opacity:.9}html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}html[data-netbox-color-mode=dark] .bs-tooltip-top,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-end,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-bottom,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#495057}html[data-netbox-color-mode=dark] .bs-tooltip-start,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#495057}html[data-netbox-color-mode=dark] .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#495057;border-radius:.375rem}html[data-netbox-color-mode=dark] .popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#495057;background-clip:padding-box;border:1px solid rgba(255,255,255,.2);border-radius:.75rem}html[data-netbox-color-mode=dark] .popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}html[data-netbox-color-mode=dark] .popover .popover-arrow:before,html[data-netbox-color-mode=dark] .popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#495057}html[data-netbox-color-mode=dark] .bs-popover-bottom .popover-header:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #454b52}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#ffffff40}html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#495057}html[data-netbox-color-mode=dark] .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#454b52;border-bottom:1px solid rgba(255,255,255,.2);border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}html[data-netbox-color-mode=dark] .popover-header:empty{display:none}html[data-netbox-color-mode=dark] .popover-body{padding:1rem;color:#fff}html[data-netbox-color-mode=dark] .carousel{position:relative}html[data-netbox-color-mode=dark] .carousel.pointer-event{touch-action:pan-y}html[data-netbox-color-mode=dark] .carousel-inner{position:relative;width:100%;overflow:hidden}html[data-netbox-color-mode=dark] .carousel-inner:after{display:block;clear:both;content:""}html[data-netbox-color-mode=dark] .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-item{transition:none}}html[data-netbox-color-mode=dark] .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-item-next,html[data-netbox-color-mode=dark] .carousel-item-prev{display:block}html[data-netbox-color-mode=dark] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=dark] .active.carousel-item-end{transform:translate(100%)}html[data-netbox-color-mode=dark] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=dark] .active.carousel-item-start{transform:translate(-100%)}html[data-netbox-color-mode=dark] .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}html[data-netbox-color-mode=dark] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end{transition:none}}html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next{transition:none}}html[data-netbox-color-mode=dark] .carousel-control-prev:hover,html[data-netbox-color-mode=dark] .carousel-control-prev:focus,html[data-netbox-color-mode=dark] .carousel-control-next:hover,html[data-netbox-color-mode=dark] .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}html[data-netbox-color-mode=dark] .carousel-control-prev{left:0}html[data-netbox-color-mode=dark] .carousel-control-next{right:0}html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}html[data-netbox-color-mode=dark] .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}html[data-netbox-color-mode=dark] .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target]{transition:none}}html[data-netbox-color-mode=dark] .carousel-indicators .active{opacity:1}html[data-netbox-color-mode=dark] .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}html[data-netbox-color-mode=dark] .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}html[data-netbox-color-mode=dark] .carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg)}}html[data-netbox-color-mode=dark] .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}html[data-netbox-color-mode=dark] .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}html[data-netbox-color-mode=dark] .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}html[data-netbox-color-mode=dark] .spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=dark] .spinner-grow{animation-duration:1.5s}}html[data-netbox-color-mode=dark] .clearfix:after{display:block;clear:both;content:""}html[data-netbox-color-mode=dark] .link-primary{color:#6ea8fe}html[data-netbox-color-mode=dark] .link-primary:hover,html[data-netbox-color-mode=dark] .link-primary:focus{color:#8bb9fe}html[data-netbox-color-mode=dark] .link-secondary{color:#adb5bd}html[data-netbox-color-mode=dark] .link-secondary:hover,html[data-netbox-color-mode=dark] .link-secondary:focus{color:#bdc4ca}html[data-netbox-color-mode=dark] .link-success{color:#75b798}html[data-netbox-color-mode=dark] .link-success:hover,html[data-netbox-color-mode=dark] .link-success:focus{color:#91c5ad}html[data-netbox-color-mode=dark] .link-info{color:#6edff6}html[data-netbox-color-mode=dark] .link-info:hover,html[data-netbox-color-mode=dark] .link-info:focus{color:#8be5f8}html[data-netbox-color-mode=dark] .link-warning{color:#ffda6a}html[data-netbox-color-mode=dark] .link-warning:hover,html[data-netbox-color-mode=dark] .link-warning:focus{color:#ffe188}html[data-netbox-color-mode=dark] .link-danger{color:#ea868f}html[data-netbox-color-mode=dark] .link-danger:hover,html[data-netbox-color-mode=dark] .link-danger:focus{color:#ee9ea5}html[data-netbox-color-mode=dark] .link-light{color:#dee2e6}html[data-netbox-color-mode=dark] .link-light:hover,html[data-netbox-color-mode=dark] .link-light:focus{color:#e5e8eb}html[data-netbox-color-mode=dark] .link-dark{color:#adb5bd}html[data-netbox-color-mode=dark] .link-dark:hover,html[data-netbox-color-mode=dark] .link-dark:focus{color:#bdc4ca}html[data-netbox-color-mode=dark] .link-blue{color:#6ea8fe}html[data-netbox-color-mode=dark] .link-blue:hover,html[data-netbox-color-mode=dark] .link-blue:focus{color:#8bb9fe}html[data-netbox-color-mode=dark] .link-indigo{color:#a370f7}html[data-netbox-color-mode=dark] .link-indigo:hover,html[data-netbox-color-mode=dark] .link-indigo:focus{color:#b58df9}html[data-netbox-color-mode=dark] .link-purple{color:#a98eda}html[data-netbox-color-mode=dark] .link-purple:hover,html[data-netbox-color-mode=dark] .link-purple:focus{color:#baa5e1}html[data-netbox-color-mode=dark] .link-pink{color:#e685b5}html[data-netbox-color-mode=dark] .link-pink:hover,html[data-netbox-color-mode=dark] .link-pink:focus{color:#eb9dc4}html[data-netbox-color-mode=dark] .link-red{color:#ea868f}html[data-netbox-color-mode=dark] .link-red:hover,html[data-netbox-color-mode=dark] .link-red:focus{color:#ee9ea5}html[data-netbox-color-mode=dark] .link-orange{color:#feb272}html[data-netbox-color-mode=dark] .link-orange:hover,html[data-netbox-color-mode=dark] .link-orange:focus{color:#fec18e}html[data-netbox-color-mode=dark] .link-yellow{color:#ffda6a}html[data-netbox-color-mode=dark] .link-yellow:hover,html[data-netbox-color-mode=dark] .link-yellow:focus{color:#ffe188}html[data-netbox-color-mode=dark] .link-green{color:#75b798}html[data-netbox-color-mode=dark] .link-green:hover,html[data-netbox-color-mode=dark] .link-green:focus{color:#91c5ad}html[data-netbox-color-mode=dark] .link-teal{color:#79dfc1}html[data-netbox-color-mode=dark] .link-teal:hover,html[data-netbox-color-mode=dark] .link-teal:focus{color:#94e5cd}html[data-netbox-color-mode=dark] .link-cyan{color:#6edff6}html[data-netbox-color-mode=dark] .link-cyan:hover,html[data-netbox-color-mode=dark] .link-cyan:focus{color:#8be5f8}html[data-netbox-color-mode=dark] .link-gray{color:#dee2e6}html[data-netbox-color-mode=dark] .link-gray:hover,html[data-netbox-color-mode=dark] .link-gray:focus{color:#e5e8eb}html[data-netbox-color-mode=dark] .link-black{color:#000}html[data-netbox-color-mode=dark] .link-black:hover,html[data-netbox-color-mode=dark] .link-black:focus{color:#000}html[data-netbox-color-mode=dark] .link-white{color:#fff}html[data-netbox-color-mode=dark] .link-white:hover,html[data-netbox-color-mode=dark] .link-white:focus{color:#fff}html[data-netbox-color-mode=dark] .ratio{position:relative;width:100%}html[data-netbox-color-mode=dark] .ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}html[data-netbox-color-mode=dark] .ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}html[data-netbox-color-mode=dark] .ratio-1x1{--bs-aspect-ratio: 100%}html[data-netbox-color-mode=dark] .ratio-4x3{--bs-aspect-ratio: 75%}html[data-netbox-color-mode=dark] .ratio-16x9{--bs-aspect-ratio: 56.25%}html[data-netbox-color-mode=dark] .ratio-21x9{--bs-aspect-ratio: 42.8571428571%}html[data-netbox-color-mode=dark] .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}html[data-netbox-color-mode=dark] .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}html[data-netbox-color-mode=dark] .sticky-top{position:sticky;top:0;z-index:1020}@media (min-width: 576px){html[data-netbox-color-mode=dark] .sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .sticky-xxl-top{position:sticky;top:0;z-index:1020}}html[data-netbox-color-mode=dark] .visually-hidden,html[data-netbox-color-mode=dark] .visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}html[data-netbox-color-mode=dark] .stretched-link:after{position:absolute;inset:0;z-index:1;content:""}html[data-netbox-color-mode=dark] .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}html[data-netbox-color-mode=dark] .align-baseline{vertical-align:baseline!important}html[data-netbox-color-mode=dark] .align-top{vertical-align:top!important}html[data-netbox-color-mode=dark] .align-middle{vertical-align:middle!important}html[data-netbox-color-mode=dark] .align-bottom{vertical-align:bottom!important}html[data-netbox-color-mode=dark] .align-text-bottom{vertical-align:text-bottom!important}html[data-netbox-color-mode=dark] .align-text-top{vertical-align:text-top!important}html[data-netbox-color-mode=dark] .float-start{float:left!important}html[data-netbox-color-mode=dark] .float-end{float:right!important}html[data-netbox-color-mode=dark] .float-none{float:none!important}html[data-netbox-color-mode=dark] .overflow-auto{overflow:auto!important}html[data-netbox-color-mode=dark] .overflow-hidden{overflow:hidden!important}html[data-netbox-color-mode=dark] .overflow-visible{overflow:visible!important}html[data-netbox-color-mode=dark] .overflow-scroll{overflow:scroll!important}html[data-netbox-color-mode=dark] .d-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-block{display:block!important}html[data-netbox-color-mode=dark] .d-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-table{display:table!important}html[data-netbox-color-mode=dark] .d-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-none{display:none!important}html[data-netbox-color-mode=dark] .shadow{box-shadow:0 .5rem 1rem #00000026!important}html[data-netbox-color-mode=dark] .shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}html[data-netbox-color-mode=dark] .shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}html[data-netbox-color-mode=dark] .shadow-none{box-shadow:none!important}html[data-netbox-color-mode=dark] .position-static{position:static!important}html[data-netbox-color-mode=dark] .position-relative{position:relative!important}html[data-netbox-color-mode=dark] .position-absolute{position:absolute!important}html[data-netbox-color-mode=dark] .position-fixed{position:fixed!important}html[data-netbox-color-mode=dark] .position-sticky{position:sticky!important}html[data-netbox-color-mode=dark] .top-0{top:0!important}html[data-netbox-color-mode=dark] .top-50{top:50%!important}html[data-netbox-color-mode=dark] .top-100{top:100%!important}html[data-netbox-color-mode=dark] .bottom-0{bottom:0!important}html[data-netbox-color-mode=dark] .bottom-50{bottom:50%!important}html[data-netbox-color-mode=dark] .bottom-100{bottom:100%!important}html[data-netbox-color-mode=dark] .start-0{left:0!important}html[data-netbox-color-mode=dark] .start-50{left:50%!important}html[data-netbox-color-mode=dark] .start-100{left:100%!important}html[data-netbox-color-mode=dark] .end-0{right:0!important}html[data-netbox-color-mode=dark] .end-50{right:50%!important}html[data-netbox-color-mode=dark] .end-100{right:100%!important}html[data-netbox-color-mode=dark] .translate-middle{transform:translate(-50%,-50%)!important}html[data-netbox-color-mode=dark] .translate-middle-x{transform:translate(-50%)!important}html[data-netbox-color-mode=dark] .translate-middle-y{transform:translateY(-50%)!important}html[data-netbox-color-mode=dark] .border{border:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-0{border:0!important}html[data-netbox-color-mode=dark] .border-top{border-top:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-top-0{border-top:0!important}html[data-netbox-color-mode=dark] .border-end{border-right:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-end-0{border-right:0!important}html[data-netbox-color-mode=dark] .border-bottom{border-bottom:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-bottom-0{border-bottom:0!important}html[data-netbox-color-mode=dark] .border-start{border-left:1px solid #495057!important}html[data-netbox-color-mode=dark] .border-start-0{border-left:0!important}html[data-netbox-color-mode=dark] .border-primary{border-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .border-secondary{border-color:#adb5bd!important}html[data-netbox-color-mode=dark] .border-success{border-color:#75b798!important}html[data-netbox-color-mode=dark] .border-info{border-color:#6edff6!important}html[data-netbox-color-mode=dark] .border-warning{border-color:#ffda6a!important}html[data-netbox-color-mode=dark] .border-danger{border-color:#ea868f!important}html[data-netbox-color-mode=dark] .border-light{border-color:#dee2e6!important}html[data-netbox-color-mode=dark] .border-dark{border-color:#adb5bd!important}html[data-netbox-color-mode=dark] .border-blue{border-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .border-indigo{border-color:#a370f7!important}html[data-netbox-color-mode=dark] .border-purple{border-color:#a98eda!important}html[data-netbox-color-mode=dark] .border-pink{border-color:#e685b5!important}html[data-netbox-color-mode=dark] .border-red{border-color:#ea868f!important}html[data-netbox-color-mode=dark] .border-orange{border-color:#feb272!important}html[data-netbox-color-mode=dark] .border-yellow{border-color:#ffda6a!important}html[data-netbox-color-mode=dark] .border-green{border-color:#75b798!important}html[data-netbox-color-mode=dark] .border-teal{border-color:#79dfc1!important}html[data-netbox-color-mode=dark] .border-cyan{border-color:#6edff6!important}html[data-netbox-color-mode=dark] .border-gray{border-color:#dee2e6!important}html[data-netbox-color-mode=dark] .border-black{border-color:#000!important}html[data-netbox-color-mode=dark] .border-white{border-color:#fff!important}html[data-netbox-color-mode=dark] .border-1{border-width:1px!important}html[data-netbox-color-mode=dark] .border-2{border-width:2px!important}html[data-netbox-color-mode=dark] .border-3{border-width:3px!important}html[data-netbox-color-mode=dark] .border-4{border-width:4px!important}html[data-netbox-color-mode=dark] .border-5{border-width:5px!important}html[data-netbox-color-mode=dark] .w-25{width:25%!important}html[data-netbox-color-mode=dark] .w-50{width:50%!important}html[data-netbox-color-mode=dark] .w-75{width:75%!important}html[data-netbox-color-mode=dark] .w-100{width:100%!important}html[data-netbox-color-mode=dark] .w-auto{width:auto!important}html[data-netbox-color-mode=dark] .mw-100{max-width:100%!important}html[data-netbox-color-mode=dark] .vw-100{width:100vw!important}html[data-netbox-color-mode=dark] .min-vw-100{min-width:100vw!important}html[data-netbox-color-mode=dark] .h-25{height:25%!important}html[data-netbox-color-mode=dark] .h-50{height:50%!important}html[data-netbox-color-mode=dark] .h-75{height:75%!important}html[data-netbox-color-mode=dark] .h-100{height:100%!important}html[data-netbox-color-mode=dark] .h-auto{height:auto!important}html[data-netbox-color-mode=dark] .mh-100{max-height:100%!important}html[data-netbox-color-mode=dark] .vh-100{height:100vh!important}html[data-netbox-color-mode=dark] .min-vh-100{min-height:100vh!important}html[data-netbox-color-mode=dark] .flex-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-first{order:-1!important}html[data-netbox-color-mode=dark] .order-0{order:0!important}html[data-netbox-color-mode=dark] .order-1{order:1!important}html[data-netbox-color-mode=dark] .order-2{order:2!important}html[data-netbox-color-mode=dark] .order-3{order:3!important}html[data-netbox-color-mode=dark] .order-4{order:4!important}html[data-netbox-color-mode=dark] .order-5{order:5!important}html[data-netbox-color-mode=dark] .order-last{order:6!important}html[data-netbox-color-mode=dark] .m-0{margin:0!important}html[data-netbox-color-mode=dark] .m-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-0{padding:0!important}html[data-netbox-color-mode=dark] .p-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .font-monospace{font-family:var(--bs-font-monospace)!important}html[data-netbox-color-mode=dark] .fs-1{font-size:calc(1.375rem + 1.5vw)!important}html[data-netbox-color-mode=dark] .fs-2{font-size:calc(1.325rem + 0.9vw)!important}html[data-netbox-color-mode=dark] .fs-3{font-size:calc(1.3rem + 0.6vw)!important}html[data-netbox-color-mode=dark] .fs-4{font-size:calc(1.275rem + 0.3vw)!important}html[data-netbox-color-mode=dark] .fs-5{font-size:1.25rem!important}html[data-netbox-color-mode=dark] .fs-6{font-size:1rem!important}html[data-netbox-color-mode=dark] .fst-italic{font-style:italic!important}html[data-netbox-color-mode=dark] .fst-normal{font-style:normal!important}html[data-netbox-color-mode=dark] .fw-light{font-weight:300!important}html[data-netbox-color-mode=dark] .fw-lighter{font-weight:200!important}html[data-netbox-color-mode=dark] .fw-normal{font-weight:400!important}html[data-netbox-color-mode=dark] .fw-bold{font-weight:700!important}html[data-netbox-color-mode=dark] .fw-bolder{font-weight:800!important}html[data-netbox-color-mode=dark] .lh-1{line-height:1!important}html[data-netbox-color-mode=dark] .lh-sm{line-height:1.25!important}html[data-netbox-color-mode=dark] .lh-base{line-height:1.5!important}html[data-netbox-color-mode=dark] .lh-lg{line-height:1.75!important}html[data-netbox-color-mode=dark] .text-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-center{text-align:center!important}html[data-netbox-color-mode=dark] .text-decoration-none{text-decoration:none!important}html[data-netbox-color-mode=dark] .text-decoration-underline{text-decoration:underline!important}html[data-netbox-color-mode=dark] .text-decoration-line-through{text-decoration:line-through!important}html[data-netbox-color-mode=dark] .text-lowercase{text-transform:lowercase!important}html[data-netbox-color-mode=dark] .text-uppercase{text-transform:uppercase!important}html[data-netbox-color-mode=dark] .text-capitalize{text-transform:capitalize!important}html[data-netbox-color-mode=dark] .text-wrap{white-space:normal!important}html[data-netbox-color-mode=dark] .text-nowrap{white-space:nowrap!important}html[data-netbox-color-mode=dark] .text-break{word-wrap:break-word!important;word-break:break-word!important}html[data-netbox-color-mode=dark] .text-primary{color:#6ea8fe!important}html[data-netbox-color-mode=dark] .text-secondary{color:#adb5bd!important}html[data-netbox-color-mode=dark] .text-success{color:#75b798!important}html[data-netbox-color-mode=dark] .text-info{color:#6edff6!important}html[data-netbox-color-mode=dark] .text-warning{color:#ffda6a!important}html[data-netbox-color-mode=dark] .text-danger{color:#ea868f!important}html[data-netbox-color-mode=dark] .text-light{color:#dee2e6!important}html[data-netbox-color-mode=dark] .text-dark{color:#adb5bd!important}html[data-netbox-color-mode=dark] .text-blue{color:#6ea8fe!important}html[data-netbox-color-mode=dark] .text-indigo{color:#a370f7!important}html[data-netbox-color-mode=dark] .text-purple{color:#a98eda!important}html[data-netbox-color-mode=dark] .text-pink{color:#e685b5!important}html[data-netbox-color-mode=dark] .text-red{color:#ea868f!important}html[data-netbox-color-mode=dark] .text-orange{color:#feb272!important}html[data-netbox-color-mode=dark] .text-yellow{color:#ffda6a!important}html[data-netbox-color-mode=dark] .text-green{color:#75b798!important}html[data-netbox-color-mode=dark] .text-teal{color:#79dfc1!important}html[data-netbox-color-mode=dark] .text-cyan{color:#6edff6!important}html[data-netbox-color-mode=dark] .text-gray{color:#dee2e6!important}html[data-netbox-color-mode=dark] .text-black{color:#000!important}html[data-netbox-color-mode=dark] .text-white,html[data-netbox-color-mode=dark] .text-body{color:#fff!important}html[data-netbox-color-mode=dark] .text-muted{color:#ced4da!important}html[data-netbox-color-mode=dark] .text-black-50{color:#00000080!important}html[data-netbox-color-mode=dark] .text-white-50{color:#ffffff80!important}html[data-netbox-color-mode=dark] .text-reset{color:inherit!important}html[data-netbox-color-mode=dark] .bg-primary{background-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .bg-secondary{background-color:#adb5bd!important}html[data-netbox-color-mode=dark] .bg-success{background-color:#75b798!important}html[data-netbox-color-mode=dark] .bg-info{background-color:#6edff6!important}html[data-netbox-color-mode=dark] .bg-warning{background-color:#ffda6a!important}html[data-netbox-color-mode=dark] .bg-danger{background-color:#ea868f!important}html[data-netbox-color-mode=dark] .bg-light{background-color:#dee2e6!important}html[data-netbox-color-mode=dark] .bg-dark{background-color:#adb5bd!important}html[data-netbox-color-mode=dark] .bg-blue{background-color:#6ea8fe!important}html[data-netbox-color-mode=dark] .bg-indigo{background-color:#a370f7!important}html[data-netbox-color-mode=dark] .bg-purple{background-color:#a98eda!important}html[data-netbox-color-mode=dark] .bg-pink{background-color:#e685b5!important}html[data-netbox-color-mode=dark] .bg-red{background-color:#ea868f!important}html[data-netbox-color-mode=dark] .bg-orange{background-color:#feb272!important}html[data-netbox-color-mode=dark] .bg-yellow{background-color:#ffda6a!important}html[data-netbox-color-mode=dark] .bg-green{background-color:#75b798!important}html[data-netbox-color-mode=dark] .bg-teal{background-color:#79dfc1!important}html[data-netbox-color-mode=dark] .bg-cyan{background-color:#6edff6!important}html[data-netbox-color-mode=dark] .bg-gray{background-color:#dee2e6!important}html[data-netbox-color-mode=dark] .bg-black{background-color:#000!important}html[data-netbox-color-mode=dark] .bg-white{background-color:#fff!important}html[data-netbox-color-mode=dark] .bg-body{background-color:#1b1f22!important}html[data-netbox-color-mode=dark] .bg-transparent{background-color:transparent!important}html[data-netbox-color-mode=dark] .bg-gradient{background-image:var(--bs-gradient)!important}html[data-netbox-color-mode=dark] .user-select-all{user-select:all!important}html[data-netbox-color-mode=dark] .user-select-auto{user-select:auto!important}html[data-netbox-color-mode=dark] .user-select-none{user-select:none!important}html[data-netbox-color-mode=dark] .pe-none{pointer-events:none!important}html[data-netbox-color-mode=dark] .pe-auto{pointer-events:auto!important}html[data-netbox-color-mode=dark] .rounded{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-0{border-radius:0!important}html[data-netbox-color-mode=dark] .rounded-1,html[data-netbox-color-mode=dark] .rounded-2{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-3{border-radius:.75rem!important}html[data-netbox-color-mode=dark] .rounded-circle{border-radius:50%!important}html[data-netbox-color-mode=dark] .rounded-pill{border-radius:50rem!important}html[data-netbox-color-mode=dark] .rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}html[data-netbox-color-mode=dark] .rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}html[data-netbox-color-mode=dark] .visible{visibility:visible!important}html[data-netbox-color-mode=dark] .invisible{visibility:hidden!important}@media (min-width: 576px){html[data-netbox-color-mode=dark] .float-sm-start{float:left!important}html[data-netbox-color-mode=dark] .float-sm-end{float:right!important}html[data-netbox-color-mode=dark] .float-sm-none{float:none!important}html[data-netbox-color-mode=dark] .d-sm-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-sm-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-sm-block{display:block!important}html[data-netbox-color-mode=dark] .d-sm-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-sm-table{display:table!important}html[data-netbox-color-mode=dark] .d-sm-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-sm-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-sm-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-sm-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-sm-none{display:none!important}html[data-netbox-color-mode=dark] .flex-sm-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-sm-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-sm-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-sm-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-sm-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-sm-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-sm-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-sm-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-sm-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-sm-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-sm-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-sm-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-sm-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-sm-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-sm-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-sm-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-sm-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-sm-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-sm-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-sm-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-sm-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-sm-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-sm-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-sm-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-sm-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-sm-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-sm-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-sm-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-sm-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-sm-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-sm-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-sm-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-sm-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-sm-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-sm-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-sm-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-sm-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-sm-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-sm-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-sm-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-sm-first{order:-1!important}html[data-netbox-color-mode=dark] .order-sm-0{order:0!important}html[data-netbox-color-mode=dark] .order-sm-1{order:1!important}html[data-netbox-color-mode=dark] .order-sm-2{order:2!important}html[data-netbox-color-mode=dark] .order-sm-3{order:3!important}html[data-netbox-color-mode=dark] .order-sm-4{order:4!important}html[data-netbox-color-mode=dark] .order-sm-5{order:5!important}html[data-netbox-color-mode=dark] .order-sm-last{order:6!important}html[data-netbox-color-mode=dark] .m-sm-0{margin:0!important}html[data-netbox-color-mode=dark] .m-sm-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-sm-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-sm-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-sm-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-sm-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-sm-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-sm-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-sm-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-sm-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-sm-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-sm-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-sm-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-sm-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-sm-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-sm-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-sm-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-sm-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-sm-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-sm-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-sm-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-sm-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-sm-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-sm-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-sm-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-sm-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-sm-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-sm-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-sm-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-sm-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-sm-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-sm-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-sm-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-sm-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-sm-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-sm-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-sm-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-sm-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-sm-0{padding:0!important}html[data-netbox-color-mode=dark] .p-sm-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-sm-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-sm-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-sm-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-sm-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-sm-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-sm-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-sm-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-sm-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-sm-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-sm-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-sm-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-sm-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-sm-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-sm-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-sm-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-sm-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-sm-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-sm-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-sm-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-sm-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-sm-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-sm-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-sm-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-sm-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-sm-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-sm-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-sm-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-sm-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-sm-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-sm-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-sm-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-sm-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-sm-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-sm-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-sm-center{text-align:center!important}}@media (min-width: 768px){html[data-netbox-color-mode=dark] .float-md-start{float:left!important}html[data-netbox-color-mode=dark] .float-md-end{float:right!important}html[data-netbox-color-mode=dark] .float-md-none{float:none!important}html[data-netbox-color-mode=dark] .d-md-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-md-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-md-block{display:block!important}html[data-netbox-color-mode=dark] .d-md-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-md-table{display:table!important}html[data-netbox-color-mode=dark] .d-md-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-md-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-md-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-md-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-md-none{display:none!important}html[data-netbox-color-mode=dark] .flex-md-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-md-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-md-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-md-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-md-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-md-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-md-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-md-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-md-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-md-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-md-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-md-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-md-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-md-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-md-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-md-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-md-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-md-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-md-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-md-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-md-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-md-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-md-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-md-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-md-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-md-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-md-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-md-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-md-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-md-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-md-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-md-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-md-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-md-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-md-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-md-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-md-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-md-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-md-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-md-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-md-first{order:-1!important}html[data-netbox-color-mode=dark] .order-md-0{order:0!important}html[data-netbox-color-mode=dark] .order-md-1{order:1!important}html[data-netbox-color-mode=dark] .order-md-2{order:2!important}html[data-netbox-color-mode=dark] .order-md-3{order:3!important}html[data-netbox-color-mode=dark] .order-md-4{order:4!important}html[data-netbox-color-mode=dark] .order-md-5{order:5!important}html[data-netbox-color-mode=dark] .order-md-last{order:6!important}html[data-netbox-color-mode=dark] .m-md-0{margin:0!important}html[data-netbox-color-mode=dark] .m-md-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-md-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-md-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-md-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-md-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-md-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-md-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-md-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-md-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-md-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-md-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-md-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-md-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-md-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-md-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-md-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-md-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-md-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-md-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-md-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-md-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-md-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-md-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-md-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-md-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-md-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-md-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-md-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-md-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-md-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-md-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-md-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-md-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-md-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-md-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-md-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-md-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-md-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-md-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-md-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-md-0{padding:0!important}html[data-netbox-color-mode=dark] .p-md-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-md-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-md-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-md-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-md-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-md-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-md-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-md-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-md-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-md-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-md-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-md-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-md-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-md-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-md-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-md-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-md-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-md-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-md-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-md-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-md-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-md-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-md-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-md-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-md-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-md-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-md-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-md-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-md-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-md-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-md-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-md-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-md-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-md-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-md-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-md-center{text-align:center!important}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .float-lg-start{float:left!important}html[data-netbox-color-mode=dark] .float-lg-end{float:right!important}html[data-netbox-color-mode=dark] .float-lg-none{float:none!important}html[data-netbox-color-mode=dark] .d-lg-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-lg-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-lg-block{display:block!important}html[data-netbox-color-mode=dark] .d-lg-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-lg-table{display:table!important}html[data-netbox-color-mode=dark] .d-lg-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-lg-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-lg-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-lg-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-lg-none{display:none!important}html[data-netbox-color-mode=dark] .flex-lg-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-lg-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-lg-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-lg-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-lg-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-lg-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-lg-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-lg-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-lg-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-lg-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-lg-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-lg-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-lg-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-lg-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-lg-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-lg-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-lg-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-lg-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-lg-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-lg-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-lg-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-lg-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-lg-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-lg-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-lg-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-lg-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-lg-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-lg-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-lg-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-lg-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-lg-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-lg-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-lg-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-lg-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-lg-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-lg-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-lg-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-lg-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-lg-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-lg-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-lg-first{order:-1!important}html[data-netbox-color-mode=dark] .order-lg-0{order:0!important}html[data-netbox-color-mode=dark] .order-lg-1{order:1!important}html[data-netbox-color-mode=dark] .order-lg-2{order:2!important}html[data-netbox-color-mode=dark] .order-lg-3{order:3!important}html[data-netbox-color-mode=dark] .order-lg-4{order:4!important}html[data-netbox-color-mode=dark] .order-lg-5{order:5!important}html[data-netbox-color-mode=dark] .order-lg-last{order:6!important}html[data-netbox-color-mode=dark] .m-lg-0{margin:0!important}html[data-netbox-color-mode=dark] .m-lg-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-lg-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-lg-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-lg-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-lg-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-lg-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-lg-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-lg-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-lg-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-lg-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-lg-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-lg-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-lg-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-lg-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-lg-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-lg-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-lg-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-lg-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-lg-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-lg-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-lg-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-lg-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-lg-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-lg-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-lg-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-lg-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-lg-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-lg-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-lg-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-lg-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-lg-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-lg-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-lg-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-lg-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-lg-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-lg-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-lg-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-lg-0{padding:0!important}html[data-netbox-color-mode=dark] .p-lg-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-lg-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-lg-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-lg-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-lg-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-lg-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-lg-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-lg-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-lg-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-lg-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-lg-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-lg-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-lg-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-lg-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-lg-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-lg-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-lg-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-lg-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-lg-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-lg-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-lg-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-lg-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-lg-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-lg-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-lg-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-lg-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-lg-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-lg-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-lg-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-lg-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-lg-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-lg-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-lg-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-lg-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-lg-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-lg-center{text-align:center!important}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .float-xl-start{float:left!important}html[data-netbox-color-mode=dark] .float-xl-end{float:right!important}html[data-netbox-color-mode=dark] .float-xl-none{float:none!important}html[data-netbox-color-mode=dark] .d-xl-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-xl-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-xl-block{display:block!important}html[data-netbox-color-mode=dark] .d-xl-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-xl-table{display:table!important}html[data-netbox-color-mode=dark] .d-xl-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-xl-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-xl-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-xl-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-xl-none{display:none!important}html[data-netbox-color-mode=dark] .flex-xl-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-xl-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-xl-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-xl-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-xl-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-xl-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-xl-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-xl-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-xl-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-xl-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-xl-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-xl-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-xl-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-xl-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-xl-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-xl-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-xl-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-xl-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-xl-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-xl-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-xl-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-xl-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-xl-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-xl-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-xl-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-xl-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-xl-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-xl-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-xl-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-xl-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-xl-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-xl-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-xl-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-xl-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-xl-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-xl-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-xl-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-xl-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-xl-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-xl-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-xl-first{order:-1!important}html[data-netbox-color-mode=dark] .order-xl-0{order:0!important}html[data-netbox-color-mode=dark] .order-xl-1{order:1!important}html[data-netbox-color-mode=dark] .order-xl-2{order:2!important}html[data-netbox-color-mode=dark] .order-xl-3{order:3!important}html[data-netbox-color-mode=dark] .order-xl-4{order:4!important}html[data-netbox-color-mode=dark] .order-xl-5{order:5!important}html[data-netbox-color-mode=dark] .order-xl-last{order:6!important}html[data-netbox-color-mode=dark] .m-xl-0{margin:0!important}html[data-netbox-color-mode=dark] .m-xl-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-xl-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-xl-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-xl-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-xl-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-xl-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-xl-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-xl-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-xl-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-xl-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-xl-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-xl-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-xl-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-xl-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-xl-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-xl-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-xl-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-xl-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-xl-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-xl-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-xl-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-xl-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-xl-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-xl-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-xl-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-xl-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-xl-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-xl-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-xl-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-xl-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-xl-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-xl-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-xl-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-xl-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-xl-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-xl-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-xl-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-xl-0{padding:0!important}html[data-netbox-color-mode=dark] .p-xl-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-xl-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-xl-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-xl-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-xl-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-xl-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-xl-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-xl-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-xl-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-xl-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-xl-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-xl-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-xl-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-xl-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-xl-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-xl-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-xl-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-xl-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-xl-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-xl-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-xl-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-xl-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-xl-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-xl-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-xl-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-xl-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-xl-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-xl-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-xl-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-xl-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-xl-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-xl-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-xl-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-xl-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-xl-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-xl-center{text-align:center!important}}@media (min-width: 1400px){html[data-netbox-color-mode=dark] .float-xxl-start{float:left!important}html[data-netbox-color-mode=dark] .float-xxl-end{float:right!important}html[data-netbox-color-mode=dark] .float-xxl-none{float:none!important}html[data-netbox-color-mode=dark] .d-xxl-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-xxl-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-xxl-block{display:block!important}html[data-netbox-color-mode=dark] .d-xxl-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-xxl-table{display:table!important}html[data-netbox-color-mode=dark] .d-xxl-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-xxl-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-xxl-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-xxl-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-xxl-none{display:none!important}html[data-netbox-color-mode=dark] .flex-xxl-fill{flex:1 1 auto!important}html[data-netbox-color-mode=dark] .flex-xxl-row{flex-direction:row!important}html[data-netbox-color-mode=dark] .flex-xxl-column{flex-direction:column!important}html[data-netbox-color-mode=dark] .flex-xxl-row-reverse{flex-direction:row-reverse!important}html[data-netbox-color-mode=dark] .flex-xxl-column-reverse{flex-direction:column-reverse!important}html[data-netbox-color-mode=dark] .flex-xxl-grow-0{flex-grow:0!important}html[data-netbox-color-mode=dark] .flex-xxl-grow-1{flex-grow:1!important}html[data-netbox-color-mode=dark] .flex-xxl-shrink-0{flex-shrink:0!important}html[data-netbox-color-mode=dark] .flex-xxl-shrink-1{flex-shrink:1!important}html[data-netbox-color-mode=dark] .flex-xxl-wrap{flex-wrap:wrap!important}html[data-netbox-color-mode=dark] .flex-xxl-nowrap{flex-wrap:nowrap!important}html[data-netbox-color-mode=dark] .flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}html[data-netbox-color-mode=dark] .gap-xxl-0{gap:0!important}html[data-netbox-color-mode=dark] .gap-xxl-1{gap:.25rem!important}html[data-netbox-color-mode=dark] .gap-xxl-2{gap:.5rem!important}html[data-netbox-color-mode=dark] .gap-xxl-3{gap:1rem!important}html[data-netbox-color-mode=dark] .gap-xxl-4{gap:1.5rem!important}html[data-netbox-color-mode=dark] .gap-xxl-5{gap:3rem!important}html[data-netbox-color-mode=dark] .justify-content-xxl-start{justify-content:flex-start!important}html[data-netbox-color-mode=dark] .justify-content-xxl-end{justify-content:flex-end!important}html[data-netbox-color-mode=dark] .justify-content-xxl-center{justify-content:center!important}html[data-netbox-color-mode=dark] .justify-content-xxl-between{justify-content:space-between!important}html[data-netbox-color-mode=dark] .justify-content-xxl-around{justify-content:space-around!important}html[data-netbox-color-mode=dark] .justify-content-xxl-evenly{justify-content:space-evenly!important}html[data-netbox-color-mode=dark] .align-items-xxl-start{align-items:flex-start!important}html[data-netbox-color-mode=dark] .align-items-xxl-end{align-items:flex-end!important}html[data-netbox-color-mode=dark] .align-items-xxl-center{align-items:center!important}html[data-netbox-color-mode=dark] .align-items-xxl-baseline{align-items:baseline!important}html[data-netbox-color-mode=dark] .align-items-xxl-stretch{align-items:stretch!important}html[data-netbox-color-mode=dark] .align-content-xxl-start{align-content:flex-start!important}html[data-netbox-color-mode=dark] .align-content-xxl-end{align-content:flex-end!important}html[data-netbox-color-mode=dark] .align-content-xxl-center{align-content:center!important}html[data-netbox-color-mode=dark] .align-content-xxl-between{align-content:space-between!important}html[data-netbox-color-mode=dark] .align-content-xxl-around{align-content:space-around!important}html[data-netbox-color-mode=dark] .align-content-xxl-stretch{align-content:stretch!important}html[data-netbox-color-mode=dark] .align-self-xxl-auto{align-self:auto!important}html[data-netbox-color-mode=dark] .align-self-xxl-start{align-self:flex-start!important}html[data-netbox-color-mode=dark] .align-self-xxl-end{align-self:flex-end!important}html[data-netbox-color-mode=dark] .align-self-xxl-center{align-self:center!important}html[data-netbox-color-mode=dark] .align-self-xxl-baseline{align-self:baseline!important}html[data-netbox-color-mode=dark] .align-self-xxl-stretch{align-self:stretch!important}html[data-netbox-color-mode=dark] .order-xxl-first{order:-1!important}html[data-netbox-color-mode=dark] .order-xxl-0{order:0!important}html[data-netbox-color-mode=dark] .order-xxl-1{order:1!important}html[data-netbox-color-mode=dark] .order-xxl-2{order:2!important}html[data-netbox-color-mode=dark] .order-xxl-3{order:3!important}html[data-netbox-color-mode=dark] .order-xxl-4{order:4!important}html[data-netbox-color-mode=dark] .order-xxl-5{order:5!important}html[data-netbox-color-mode=dark] .order-xxl-last{order:6!important}html[data-netbox-color-mode=dark] .m-xxl-0{margin:0!important}html[data-netbox-color-mode=dark] .m-xxl-1{margin:.25rem!important}html[data-netbox-color-mode=dark] .m-xxl-2{margin:.5rem!important}html[data-netbox-color-mode=dark] .m-xxl-3{margin:1rem!important}html[data-netbox-color-mode=dark] .m-xxl-4{margin:1.5rem!important}html[data-netbox-color-mode=dark] .m-xxl-5{margin:3rem!important}html[data-netbox-color-mode=dark] .m-xxl-auto{margin:auto!important}html[data-netbox-color-mode=dark] .mx-xxl-0{margin-right:0!important;margin-left:0!important}html[data-netbox-color-mode=dark] .mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}html[data-netbox-color-mode=dark] .mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}html[data-netbox-color-mode=dark] .mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}html[data-netbox-color-mode=dark] .mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}html[data-netbox-color-mode=dark] .mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}html[data-netbox-color-mode=dark] .my-xxl-0{margin-top:0!important;margin-bottom:0!important}html[data-netbox-color-mode=dark] .my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}html[data-netbox-color-mode=dark] .mt-xxl-0{margin-top:0!important}html[data-netbox-color-mode=dark] .mt-xxl-1{margin-top:.25rem!important}html[data-netbox-color-mode=dark] .mt-xxl-2{margin-top:.5rem!important}html[data-netbox-color-mode=dark] .mt-xxl-3{margin-top:1rem!important}html[data-netbox-color-mode=dark] .mt-xxl-4{margin-top:1.5rem!important}html[data-netbox-color-mode=dark] .mt-xxl-5{margin-top:3rem!important}html[data-netbox-color-mode=dark] .mt-xxl-auto{margin-top:auto!important}html[data-netbox-color-mode=dark] .me-xxl-0{margin-right:0!important}html[data-netbox-color-mode=dark] .me-xxl-1{margin-right:.25rem!important}html[data-netbox-color-mode=dark] .me-xxl-2{margin-right:.5rem!important}html[data-netbox-color-mode=dark] .me-xxl-3{margin-right:1rem!important}html[data-netbox-color-mode=dark] .me-xxl-4{margin-right:1.5rem!important}html[data-netbox-color-mode=dark] .me-xxl-5{margin-right:3rem!important}html[data-netbox-color-mode=dark] .me-xxl-auto{margin-right:auto!important}html[data-netbox-color-mode=dark] .mb-xxl-0{margin-bottom:0!important}html[data-netbox-color-mode=dark] .mb-xxl-1{margin-bottom:.25rem!important}html[data-netbox-color-mode=dark] .mb-xxl-2{margin-bottom:.5rem!important}html[data-netbox-color-mode=dark] .mb-xxl-3{margin-bottom:1rem!important}html[data-netbox-color-mode=dark] .mb-xxl-4{margin-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .mb-xxl-5{margin-bottom:3rem!important}html[data-netbox-color-mode=dark] .mb-xxl-auto{margin-bottom:auto!important}html[data-netbox-color-mode=dark] .ms-xxl-0{margin-left:0!important}html[data-netbox-color-mode=dark] .ms-xxl-1{margin-left:.25rem!important}html[data-netbox-color-mode=dark] .ms-xxl-2{margin-left:.5rem!important}html[data-netbox-color-mode=dark] .ms-xxl-3{margin-left:1rem!important}html[data-netbox-color-mode=dark] .ms-xxl-4{margin-left:1.5rem!important}html[data-netbox-color-mode=dark] .ms-xxl-5{margin-left:3rem!important}html[data-netbox-color-mode=dark] .ms-xxl-auto{margin-left:auto!important}html[data-netbox-color-mode=dark] .p-xxl-0{padding:0!important}html[data-netbox-color-mode=dark] .p-xxl-1{padding:.25rem!important}html[data-netbox-color-mode=dark] .p-xxl-2{padding:.5rem!important}html[data-netbox-color-mode=dark] .p-xxl-3{padding:1rem!important}html[data-netbox-color-mode=dark] .p-xxl-4{padding:1.5rem!important}html[data-netbox-color-mode=dark] .p-xxl-5{padding:3rem!important}html[data-netbox-color-mode=dark] .px-xxl-0{padding-right:0!important;padding-left:0!important}html[data-netbox-color-mode=dark] .px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] .px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}html[data-netbox-color-mode=dark] .px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}html[data-netbox-color-mode=dark] .px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}html[data-netbox-color-mode=dark] .py-xxl-0{padding-top:0!important;padding-bottom:0!important}html[data-netbox-color-mode=dark] .py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .pt-xxl-0{padding-top:0!important}html[data-netbox-color-mode=dark] .pt-xxl-1{padding-top:.25rem!important}html[data-netbox-color-mode=dark] .pt-xxl-2{padding-top:.5rem!important}html[data-netbox-color-mode=dark] .pt-xxl-3{padding-top:1rem!important}html[data-netbox-color-mode=dark] .pt-xxl-4{padding-top:1.5rem!important}html[data-netbox-color-mode=dark] .pt-xxl-5{padding-top:3rem!important}html[data-netbox-color-mode=dark] .pe-xxl-0{padding-right:0!important}html[data-netbox-color-mode=dark] .pe-xxl-1{padding-right:.25rem!important}html[data-netbox-color-mode=dark] .pe-xxl-2{padding-right:.5rem!important}html[data-netbox-color-mode=dark] .pe-xxl-3{padding-right:1rem!important}html[data-netbox-color-mode=dark] .pe-xxl-4{padding-right:1.5rem!important}html[data-netbox-color-mode=dark] .pe-xxl-5{padding-right:3rem!important}html[data-netbox-color-mode=dark] .pb-xxl-0{padding-bottom:0!important}html[data-netbox-color-mode=dark] .pb-xxl-1{padding-bottom:.25rem!important}html[data-netbox-color-mode=dark] .pb-xxl-2{padding-bottom:.5rem!important}html[data-netbox-color-mode=dark] .pb-xxl-3{padding-bottom:1rem!important}html[data-netbox-color-mode=dark] .pb-xxl-4{padding-bottom:1.5rem!important}html[data-netbox-color-mode=dark] .pb-xxl-5{padding-bottom:3rem!important}html[data-netbox-color-mode=dark] .ps-xxl-0{padding-left:0!important}html[data-netbox-color-mode=dark] .ps-xxl-1{padding-left:.25rem!important}html[data-netbox-color-mode=dark] .ps-xxl-2{padding-left:.5rem!important}html[data-netbox-color-mode=dark] .ps-xxl-3{padding-left:1rem!important}html[data-netbox-color-mode=dark] .ps-xxl-4{padding-left:1.5rem!important}html[data-netbox-color-mode=dark] .ps-xxl-5{padding-left:3rem!important}html[data-netbox-color-mode=dark] .text-xxl-start{text-align:left!important}html[data-netbox-color-mode=dark] .text-xxl-end{text-align:right!important}html[data-netbox-color-mode=dark] .text-xxl-center{text-align:center!important}}@media (min-width: 1200px){html[data-netbox-color-mode=dark] .fs-1{font-size:2.5rem!important}html[data-netbox-color-mode=dark] .fs-2{font-size:2rem!important}html[data-netbox-color-mode=dark] .fs-3{font-size:1.75rem!important}html[data-netbox-color-mode=dark] .fs-4{font-size:1.5rem!important}}@media print{html[data-netbox-color-mode=dark] .d-print-inline{display:inline!important}html[data-netbox-color-mode=dark] .d-print-inline-block{display:inline-block!important}html[data-netbox-color-mode=dark] .d-print-block{display:block!important}html[data-netbox-color-mode=dark] .d-print-grid{display:grid!important}html[data-netbox-color-mode=dark] .d-print-table{display:table!important}html[data-netbox-color-mode=dark] .d-print-table-row{display:table-row!important}html[data-netbox-color-mode=dark] .d-print-table-cell{display:table-cell!important}html[data-netbox-color-mode=dark] .d-print-flex{display:flex!important}html[data-netbox-color-mode=dark] .d-print-inline-flex{display:inline-flex!important}html[data-netbox-color-mode=dark] .d-print-none{display:none!important}}html[data-netbox-color-mode=dark] :root{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}html[data-netbox-color-mode=dark] .ss-main{position:relative;display:inline-block;user-select:none;color:#f8f9fa;width:100%}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + 0.75rem + 2px);padding:.75rem;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-disabled{background-color:#495057;cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .ss-disabled{color:#adb5bd}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:700}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span{border:solid #f8f9fa;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + 0.75rem + 2px);width:100%;padding:0 0 0 3px;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled{background-color:#495057;cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#f8f9fa}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#adb5bd;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#6ea8fe;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#f8f9fa;position:relative;height:10px;width:2px;transition:transform .2s}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#f8f9fa;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}html[data-netbox-color-mode=dark] .ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #495057;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}html[data-netbox-color-mode=dark] .ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}html[data-netbox-color-mode=dark] .ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide,html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}html[data-netbox-color-mode=dark] .ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #495057;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}html[data-netbox-color-mode=dark] .ss-content .ss-search input::placeholder{color:#495057;vertical-align:middle}html[data-netbox-color-mode=dark] .ss-content .ss-search input:focus{box-shadow:0 0 5px #6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:700;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #495057;border-radius:.375rem;box-sizing:border-box}html[data-netbox-color-mode=dark] .ss-content .ss-addable{padding-top:0}html[data-netbox-color-mode=dark] .ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:700}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option *{display:inline-block}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#6ea8fe}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#adb5bd;background-color:#fff}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#f8f9fa;background-color:#6ea8fe1a}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-hide{display:none}html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}html[data-netbox-color-mode=dark] .ss-main{color:#f8f9fa}html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-multi-selected{border-color:#198754}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#212529;border:1px solid #495057}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected[disabled]{color:#adb5bd;background-color:#495057}html[data-netbox-color-mode=dark] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#ced4da}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .depth{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder{line-height:1.5}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add{margin:0 .75rem}html[data-netbox-color-mode=dark] .ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#fff;background-color:var(--nbx-select-option-selected-bg)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#adb5bd}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search{padding-right:.5rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search button{margin-left:.75rem}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]{color:#f8f9fa;background-color:#212529;border:1px solid #495057}html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html[data-netbox-color-mode=dark] .flatpickr-calendar{color:#fff;background:#343a40;border-radius:.375rem;box-shadow:1px 0 #495057,-1px 0 #495057,0 1px #495057,0 -1px #495057,0 3px 13px #00000014}html[data-netbox-color-mode=dark] .flatpickr-calendar.arrowTop:before,html[data-netbox-color-mode=dark] .flatpickr-calendar.arrowTop:after{border-bottom-color:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar span.flatpickr-weekday{color:#dee2e6}html[data-netbox-color-mode=dark] .flatpickr-calendar .numInputWrapper span.arrowUp:after{border-bottom-color:#f8f9fa}html[data-netbox-color-mode=dark] .flatpickr-calendar .numInputWrapper span.arrowDown:after{border-top-color:#f8f9fa}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-month,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-next-month,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-prev-month{color:#fff;fill:#fff}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-next-month:hover svg,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-prev-month:hover svg{fill:#ea868f}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-months .flatpickr-current-month select{background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day{color:#fff}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.inRange,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange:focus,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.selected.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.startRange.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.endRange.nextMonthDay{color:#000;background:#6ea8fe;border-color:#6ea8fe}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day:hover{color:#000;background:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.nextMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.prevMonthDay,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.nextMonthDay{color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.prevMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.nextMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.prevMonthDay:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-day.notAllowed.nextMonthDay:hover{color:#000;background:#adb5bd;border-color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input{color:#f8f9fa;background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input:hover,html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time input:active{background:#343a40}html[data-netbox-color-mode=dark] .flatpickr-calendar .flatpickr-time .flatpickr-time-separator{color:#adb5bd}html[data-netbox-color-mode=dark] .flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{border-top:1px solid #495057}html[data-netbox-color-mode=dark] .sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #495057;transition:all .1s ease-in-out}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .sidenav{transform:translate(-3rem)}html[data-netbox-color-mode=dark] .sidenav+.content-container[class]{margin-left:0}html[data-netbox-color-mode=dark] .sidenav .profile-button-container[class]{display:block}}html[data-netbox-color-mode=dark] .sidenav .profile-button-container{display:none;padding:.5rem 1rem}html[data-netbox-color-mode=dark] .sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sidenav .sidenav-inner{padding-right:0;padding-left:0}}html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand>img{max-width:100%;max-height:15rem}html[data-netbox-color-mode=dark] .sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}html[data-netbox-color-mode=dark] .sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse>*{min-width:100%}@media (min-width: 768px){html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse{margin-right:0;margin-left:0}}html[data-netbox-color-mode=dark] .sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}html[data-netbox-color-mode=dark] .sidenav .nav{margin-bottom:.5rem}html[data-netbox-color-mode=dark] .sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}html[data-netbox-color-mode=dark] .sidenav .nav .nav-item.no-buttons{padding-right:.5rem}html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:Material Design Icons;font-style:normal;font-weight:700;font-variant:normal;color:#ced4da;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#000}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#6ea8fe;transform:rotate(90deg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] .sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition-duration:0ms}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:22.5px;text-align:center}html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}@media (min-width: 1200px){html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}html[data-netbox-color-mode=dark] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav{max-width:16rem}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav{transform:translate(0)}}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand{display:block}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}@media (min-width: 992px){html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}html[data-netbox-color-mode=dark] body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}html[data-netbox-color-mode=dark] pre{white-space:pre}html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=dark] .small{font-size:smaller!important}html[data-netbox-color-mode=dark] a[type=button]{-webkit-appearance:unset!important}html[data-netbox-color-mode=dark] *[data-href]{cursor:pointer}html[data-netbox-color-mode=dark] .form-control:not([type=file]){font-size:inherit}html[data-netbox-color-mode=dark] .badge{font-size:.75rem}html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-decoration,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-cancel-button,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-results-button,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none!important}html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=dark] .mark{padding-left:0;padding-right:0}html[data-netbox-color-mode=dark] .text-xs{font-size:.75rem!important;line-height:1.25!important}html[data-netbox-color-mode=dark] .border-input{border:1px solid #495057!important}html[data-netbox-color-mode=dark] .ws-nowrap{white-space:nowrap!important}html[data-netbox-color-mode=dark] table tr .vertical-align,html[data-netbox-color-mode=dark] table td .vertical-align{vertical-align:middle}@media print{html[data-netbox-color-mode=dark] .noprint{display:none!important;visibility:hidden!important}}html[data-netbox-color-mode=dark] .printonly{display:none!important;visibility:hidden!important}@media print{html[data-netbox-color-mode=dark] .printonly{display:block!important;visibility:visible!important}}html[data-netbox-color-mode=dark] .hide-last-child :last-child{visibility:hidden;opacity:0}html[data-netbox-color-mode=dark] :root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #9cc8f8;--nbx-sidebar-title-color: #ced4da;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #dee2e6;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #6ea8fe;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}html[data-netbox-color-mode=dark] .bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162233'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-primary{color:#6ea8fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-primary:hover{background-color:#6ea8fe1f}html[data-netbox-color-mode=dark] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=dark] .table-primary a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-primary .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-primary a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .badge.bg-primary,html[data-netbox-color-mode=dark] .toast.bg-primary,html[data-netbox-color-mode=dark] .toast-header.bg-primary,html[data-netbox-color-mode=dark] .progress-bar.bg-primary{color:#000}html[data-netbox-color-mode=dark] .bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23232426'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary{color:#adb5bd}html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary:hover{background-color:#adb5bd1f}html[data-netbox-color-mode=dark] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=dark] .table-secondary a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-secondary .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-secondary a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .badge.bg-secondary,html[data-netbox-color-mode=dark] .toast.bg-secondary,html[data-netbox-color-mode=dark] .toast-header.bg-secondary,html[data-netbox-color-mode=dark] .progress-bar.bg-secondary{color:#000}html[data-netbox-color-mode=dark] .bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2317251e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-success{color:#75b798}html[data-netbox-color-mode=dark] .btn.btn-ghost-success:hover{background-color:#75b7981f}html[data-netbox-color-mode=dark] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=dark] .table-success a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-success .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-success a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .badge.bg-success,html[data-netbox-color-mode=dark] .toast.bg-success,html[data-netbox-color-mode=dark] .toast-header.bg-success,html[data-netbox-color-mode=dark] .progress-bar.bg-success{color:#000}html[data-netbox-color-mode=dark] .bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162d31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-info{color:#6edff6}html[data-netbox-color-mode=dark] .btn.btn-ghost-info:hover{background-color:#6edff61f}html[data-netbox-color-mode=dark] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=dark] .table-info a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-info .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-info a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .badge.bg-info,html[data-netbox-color-mode=dark] .toast.bg-info,html[data-netbox-color-mode=dark] .toast-header.bg-info,html[data-netbox-color-mode=dark] .progress-bar.bg-info{color:#000}html[data-netbox-color-mode=dark] .bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332c15'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-warning{color:#ffda6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-warning:hover{background-color:#ffda6a1f}html[data-netbox-color-mode=dark] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=dark] .table-warning a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-warning .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-warning a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .badge.bg-warning,html[data-netbox-color-mode=dark] .toast.bg-warning,html[data-netbox-color-mode=dark] .toast-header.bg-warning,html[data-netbox-color-mode=dark] .progress-bar.bg-warning{color:#000}html[data-netbox-color-mode=dark] .bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f1b1d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-danger{color:#ea868f}html[data-netbox-color-mode=dark] .btn.btn-ghost-danger:hover{background-color:#ea868f1f}html[data-netbox-color-mode=dark] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=dark] .table-danger a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-danger .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-danger a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .badge.bg-danger,html[data-netbox-color-mode=dark] .toast.bg-danger,html[data-netbox-color-mode=dark] .toast-header.bg-danger,html[data-netbox-color-mode=dark] .progress-bar.bg-danger{color:#000}html[data-netbox-color-mode=dark] .bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c2d2e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-light{color:#dee2e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-light:hover{background-color:#dee2e61f}html[data-netbox-color-mode=dark] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=dark] .table-light a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-light .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-light a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .badge.bg-light,html[data-netbox-color-mode=dark] .toast.bg-light,html[data-netbox-color-mode=dark] .toast-header.bg-light,html[data-netbox-color-mode=dark] .progress-bar.bg-light{color:#000}html[data-netbox-color-mode=dark] .bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23232426'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-dark{color:#adb5bd}html[data-netbox-color-mode=dark] .btn.btn-ghost-dark:hover{background-color:#adb5bd1f}html[data-netbox-color-mode=dark] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=dark] .table-dark a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-dark .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-dark a:not(.btn){font-weight:700;color:#232426}html[data-netbox-color-mode=dark] .badge.bg-dark,html[data-netbox-color-mode=dark] .toast.bg-dark,html[data-netbox-color-mode=dark] .toast-header.bg-dark,html[data-netbox-color-mode=dark] .progress-bar.bg-dark{color:#000}html[data-netbox-color-mode=dark] .bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162233'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue{color:#6ea8fe}html[data-netbox-color-mode=dark] .btn.btn-ghost-blue:hover{background-color:#6ea8fe1f}html[data-netbox-color-mode=dark] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=dark] .table-blue a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-blue a:not(.btn){font-weight:700;color:#162233}html[data-netbox-color-mode=dark] .badge.bg-blue,html[data-netbox-color-mode=dark] .toast.bg-blue,html[data-netbox-color-mode=dark] .toast-header.bg-blue,html[data-netbox-color-mode=dark] .progress-bar.bg-blue{color:#000}html[data-netbox-color-mode=dark] .bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23211631'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo{color:#a370f7}html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo:hover{background-color:#a370f71f}html[data-netbox-color-mode=dark] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-indigo a:not(.btn){font-weight:700;color:#211631}html[data-netbox-color-mode=dark] .badge.bg-indigo,html[data-netbox-color-mode=dark] .toast.bg-indigo,html[data-netbox-color-mode=dark] .toast-header.bg-indigo,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo{color:#000}html[data-netbox-color-mode=dark] .bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23221c2c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple{color:#a98eda}html[data-netbox-color-mode=dark] .btn.btn-ghost-purple:hover{background-color:#a98eda1f}html[data-netbox-color-mode=dark] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=dark] .table-purple a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-purple a:not(.btn){font-weight:700;color:#221c2c}html[data-netbox-color-mode=dark] .badge.bg-purple,html[data-netbox-color-mode=dark] .toast.bg-purple,html[data-netbox-color-mode=dark] .toast-header.bg-purple,html[data-netbox-color-mode=dark] .progress-bar.bg-purple{color:#000}html[data-netbox-color-mode=dark] .bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232e1b24'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink{color:#e685b5}html[data-netbox-color-mode=dark] .btn.btn-ghost-pink:hover{background-color:#e685b51f}html[data-netbox-color-mode=dark] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=dark] .table-pink a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-pink a:not(.btn){font-weight:700;color:#2e1b24}html[data-netbox-color-mode=dark] .badge.bg-pink,html[data-netbox-color-mode=dark] .toast.bg-pink,html[data-netbox-color-mode=dark] .toast-header.bg-pink,html[data-netbox-color-mode=dark] .progress-bar.bg-pink{color:#000}html[data-netbox-color-mode=dark] .bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232f1b1d'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-red{color:#ea868f}html[data-netbox-color-mode=dark] .btn.btn-ghost-red:hover{background-color:#ea868f1f}html[data-netbox-color-mode=dark] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=dark] .table-red a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-red a:not(.btn){font-weight:700;color:#2f1b1d}html[data-netbox-color-mode=dark] .badge.bg-red,html[data-netbox-color-mode=dark] .toast.bg-red,html[data-netbox-color-mode=dark] .toast-header.bg-red,html[data-netbox-color-mode=dark] .progress-bar.bg-red{color:#000}html[data-netbox-color-mode=dark] .bg-orange button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332417'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-orange{color:#feb272}html[data-netbox-color-mode=dark] .btn.btn-ghost-orange:hover{background-color:#feb2721f}html[data-netbox-color-mode=dark] .alert.alert-orange a:not(.btn),html[data-netbox-color-mode=dark] .table-orange a:not(.btn){font-weight:700;color:#332417}html[data-netbox-color-mode=dark] .alert.alert-orange .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-orange .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-orange a:not(.btn){font-weight:700;color:#332417}html[data-netbox-color-mode=dark] .badge.bg-orange,html[data-netbox-color-mode=dark] .toast.bg-orange,html[data-netbox-color-mode=dark] .toast-header.bg-orange,html[data-netbox-color-mode=dark] .progress-bar.bg-orange{color:#000}html[data-netbox-color-mode=dark] .bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23332c15'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow{color:#ffda6a}html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow:hover{background-color:#ffda6a1f}html[data-netbox-color-mode=dark] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-yellow a:not(.btn){font-weight:700;color:#332c15}html[data-netbox-color-mode=dark] .badge.bg-yellow,html[data-netbox-color-mode=dark] .toast.bg-yellow,html[data-netbox-color-mode=dark] .toast-header.bg-yellow,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow{color:#000}html[data-netbox-color-mode=dark] .bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2317251e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-green{color:#75b798}html[data-netbox-color-mode=dark] .btn.btn-ghost-green:hover{background-color:#75b7981f}html[data-netbox-color-mode=dark] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=dark] .table-green a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-green a:not(.btn){font-weight:700;color:#17251e}html[data-netbox-color-mode=dark] .badge.bg-green,html[data-netbox-color-mode=dark] .toast.bg-green,html[data-netbox-color-mode=dark] .toast-header.bg-green,html[data-netbox-color-mode=dark] .progress-bar.bg-green{color:#000}html[data-netbox-color-mode=dark] .bg-teal button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23182d27'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-teal{color:#79dfc1}html[data-netbox-color-mode=dark] .btn.btn-ghost-teal:hover{background-color:#79dfc11f}html[data-netbox-color-mode=dark] .alert.alert-teal a:not(.btn),html[data-netbox-color-mode=dark] .table-teal a:not(.btn){font-weight:700;color:#182d27}html[data-netbox-color-mode=dark] .alert.alert-teal .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-teal .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-teal a:not(.btn){font-weight:700;color:#182d27}html[data-netbox-color-mode=dark] .badge.bg-teal,html[data-netbox-color-mode=dark] .toast.bg-teal,html[data-netbox-color-mode=dark] .toast-header.bg-teal,html[data-netbox-color-mode=dark] .progress-bar.bg-teal{color:#000}html[data-netbox-color-mode=dark] .bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23162d31'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan{color:#6edff6}html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan:hover{background-color:#6edff61f}html[data-netbox-color-mode=dark] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-cyan a:not(.btn){font-weight:700;color:#162d31}html[data-netbox-color-mode=dark] .badge.bg-cyan,html[data-netbox-color-mode=dark] .toast.bg-cyan,html[data-netbox-color-mode=dark] .toast-header.bg-cyan,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan{color:#000}html[data-netbox-color-mode=dark] .bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%232c2d2e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray{color:#dee2e6}html[data-netbox-color-mode=dark] .btn.btn-ghost-gray:hover{background-color:#dee2e61f}html[data-netbox-color-mode=dark] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=dark] .table-gray a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-gray a:not(.btn){font-weight:700;color:#2c2d2e}html[data-netbox-color-mode=dark] .badge.bg-gray,html[data-netbox-color-mode=dark] .toast.bg-gray,html[data-netbox-color-mode=dark] .toast-header.bg-gray,html[data-netbox-color-mode=dark] .progress-bar.bg-gray{color:#000}html[data-netbox-color-mode=dark] .bg-black button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23cccccc'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-black{color:#000}html[data-netbox-color-mode=dark] .btn.btn-ghost-black:hover{background-color:#0000001f}html[data-netbox-color-mode=dark] .alert.alert-black a:not(.btn),html[data-netbox-color-mode=dark] .table-black a:not(.btn){font-weight:700;color:#ccc}html[data-netbox-color-mode=dark] .alert.alert-black .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-black .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-black a:not(.btn){font-weight:700;color:#ccc}html[data-netbox-color-mode=dark] .badge.bg-black,html[data-netbox-color-mode=dark] .toast.bg-black,html[data-netbox-color-mode=dark] .toast-header.bg-black,html[data-netbox-color-mode=dark] .progress-bar.bg-black{color:#fff}html[data-netbox-color-mode=dark] .bg-white button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23333333'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}html[data-netbox-color-mode=dark] .btn.btn-ghost-white{color:#fff}html[data-netbox-color-mode=dark] .btn.btn-ghost-white:hover{background-color:#ffffff1f}html[data-netbox-color-mode=dark] .alert.alert-white a:not(.btn),html[data-netbox-color-mode=dark] .table-white a:not(.btn){font-weight:700;color:#333}html[data-netbox-color-mode=dark] .alert.alert-white .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-white .btn:not([class*=btn-outline]){border-color:#495057}html[data-netbox-color-mode=dark] .toast.bg-white a:not(.btn){font-weight:700;color:#333}html[data-netbox-color-mode=dark] .badge.bg-white,html[data-netbox-color-mode=dark] .toast.bg-white,html[data-netbox-color-mode=dark] .toast-header.bg-white,html[data-netbox-color-mode=dark] .progress-bar.bg-white{color:#000}html[data-netbox-color-mode=dark] table td>.progress{min-width:6rem}html[data-netbox-color-mode=dark] .small .form-control{font-size:.875rem}html[data-netbox-color-mode=dark] :not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}html[data-netbox-color-mode=dark] .nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] .nav-mobile{display:flex}}html[data-netbox-color-mode=dark] .nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}html[data-netbox-color-mode=dark] .card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#495057;border-top:1px solid rgba(255,255,255,.125);border-bottom-color:#ffffff20}html[data-netbox-color-mode=dark] .card>.table.table-flush th,html[data-netbox-color-mode=dark] .card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]{border-color:#ffffff20!important}html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html[data-netbox-color-mode=dark] .header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}html[data-netbox-color-mode=dark] .header-alert-container .alert{width:100%}@media (min-width: 768px){html[data-netbox-color-mode=dark] .header-alert-container .alert{max-width:75%}}@media (min-width: 992px){html[data-netbox-color-mode=dark] .header-alert-container .alert{max-width:50%}}html[data-netbox-color-mode=dark] .alert code{color:#6c757d}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}html[data-netbox-color-mode=dark] div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}html[data-netbox-color-mode=dark] table td a{text-decoration:none}html[data-netbox-color-mode=dark] table td a:hover{text-decoration:underline}html[data-netbox-color-mode=dark] table td .dropdown{position:static}html[data-netbox-color-mode=dark] table th a,html[data-netbox-color-mode=dark] table th a:hover{color:#fff;text-decoration:none}html[data-netbox-color-mode=dark] table td,html[data-netbox-color-mode=dark] table th{font-size:.875rem;line-height:1.25;vertical-align:middle}html[data-netbox-color-mode=dark] table td.min-width,html[data-netbox-color-mode=dark] table th.min-width{width:1%}html[data-netbox-color-mode=dark] table td .form-check-input,html[data-netbox-color-mode=dark] table th .form-check-input{margin-top:.125em;font-size:1rem}html[data-netbox-color-mode=dark] table td .btn-sm,html[data-netbox-color-mode=dark] table td .btn-group-sm>.btn,html[data-netbox-color-mode=dark] table th .btn-sm,html[data-netbox-color-mode=dark] table th .btn-group-sm>.btn{line-height:1}html[data-netbox-color-mode=dark] table td p,html[data-netbox-color-mode=dark] table th p{margin-bottom:.5em}html[data-netbox-color-mode=dark] table td p:last-child,html[data-netbox-color-mode=dark] table th p:last-child{margin-bottom:0}html[data-netbox-color-mode=dark] table th.asc>a:after{content:"\f0140";font-family:Material Design Icons}html[data-netbox-color-mode=dark] table th.desc>a:after{content:"\f0143";font-family:Material Design Icons}html[data-netbox-color-mode=dark] table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}html[data-netbox-color-mode=dark] table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}html[data-netbox-color-mode=dark] table.attr-table th{font-weight:400;width:25%}html[data-netbox-color-mode=dark] div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}@media (min-width: 992px){html[data-netbox-color-mode=dark] div.title-container{flex-direction:row}}html[data-netbox-color-mode=dark] div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .controls{margin-bottom:.5rem}@media print{html[data-netbox-color-mode=dark] .controls{display:none!important}}html[data-netbox-color-mode=dark] .controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}@media (min-width: 992px){html[data-netbox-color-mode=dark] .controls .control-group{justify-content:flex-end}}html[data-netbox-color-mode=dark] .controls .control-group>*{margin:.25rem}html[data-netbox-color-mode=dark] .controls .control-group>*:first-child{margin-left:0}html[data-netbox-color-mode=dark] .controls .control-group>*:last-child{margin-right:0}html[data-netbox-color-mode=dark] .object-subtitle{display:block;font-size:.875rem;color:#ced4da}@media (min-width: 768px){html[data-netbox-color-mode=dark] .object-subtitle{display:inline-block}}html[data-netbox-color-mode=dark] .object-subtitle>span{display:block}html[data-netbox-color-mode=dark] .object-subtitle>span.separator{display:none}@media (min-width: 768px){html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span.separator{display:inline-block}}html[data-netbox-color-mode=dark] nav.search{z-index:999;justify-content:center;background-color:#1b1f22}html[data-netbox-color-mode=dark] nav.search .search-container{display:flex;width:100%}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] nav.search .search-container{display:none}}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selected{border-color:#495057}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle{color:#fff;border-color:#495057;margin-left:0;font-weight:400;line-height:1.5;color:#f8f9fa;background-color:#495057;border:1px solid #495057;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:hover{color:#fff;background-color:#3e444a;border-color:#3a4046}.btn-check:focus+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus{color:#fff;background-color:#3e444a;border-color:#3a4046;box-shadow:0 0 0 .25rem #646a7080}.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#fff;background-color:#3a4046;border-color:#373c41}.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #646a7080}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.disabled{color:#fff;background-color:#495057;border-color:#495057}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:after{display:none}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}html[data-netbox-color-mode=dark] .quicksearch input[type=search]{border-radius:.375rem!important}html[data-netbox-color-mode=dark] .quicksearch button{margin-left:-32px!important;z-index:100!important;outline:none!important;border-radius:.375rem!important;transition:visibility 0s,opacity .2s linear}html[data-netbox-color-mode=dark] .quicksearch button :hover{opacity:50%;transition:visibility 0s,opacity .1s linear}html[data-netbox-color-mode=dark] main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}@media print{html[data-netbox-color-mode=dark] main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}html[data-netbox-color-mode=dark] main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}html[data-netbox-color-mode=dark] main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}html[data-netbox-color-mode=dark] .footer{background-color:#171b1d;padding:0}html[data-netbox-color-mode=dark] .footer .nav-link{padding:.5rem}@media (max-width: 767.98px){html[data-netbox-color-mode=dark] .footer{margin-bottom:8rem}}html[data-netbox-color-mode=dark] footer.login-footer{height:4rem;margin-top:auto}html[data-netbox-color-mode=dark] footer.login-footer .container-fluid,html[data-netbox-color-mode=dark] footer.login-footer .container-sm,html[data-netbox-color-mode=dark] footer.login-footer .container-md,html[data-netbox-color-mode=dark] footer.login-footer .container-lg,html[data-netbox-color-mode=dark] footer.login-footer .container-xl,html[data-netbox-color-mode=dark] footer.login-footer .container-xxl{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}html[data-netbox-color-mode=dark] h1.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h1,html[data-netbox-color-mode=dark] h2.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h2,html[data-netbox-color-mode=dark] h3.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h3,html[data-netbox-color-mode=dark] h4.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h4,html[data-netbox-color-mode=dark] h5.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h5,html[data-netbox-color-mode=dark] h6.accordion-item-title,html[data-netbox-color-mode=dark] .accordion-item-title.h6{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}html[data-netbox-color-mode=dark] .form-login{width:100%;max-width:330px;padding:15px}html[data-netbox-color-mode=dark] .form-login input:focus{z-index:1}html[data-netbox-color-mode=dark] .form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}html[data-netbox-color-mode=dark] .form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}html[data-netbox-color-mode=dark] .form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}html[data-netbox-color-mode=dark] .navbar{border-bottom:1px solid #495057}html[data-netbox-color-mode=dark] .navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link:hover{color:#000;background-color:#6397e5}html[data-netbox-color-mode=dark] div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}html[data-netbox-color-mode=dark] div.content-container:focus,html[data-netbox-color-mode=dark] div.content-container:focus-visible{outline:0}html[data-netbox-color-mode=dark] div.content-container div.content{background-color:#171b1d;flex:1}@media (max-width: 991.98px){html[data-netbox-color-mode=dark] div.content-container{width:100%}}@media print{html[data-netbox-color-mode=dark] div.content-container{width:100%!important;margin-left:0!important}}@media (max-width: 768px){html[data-netbox-color-mode=dark] .sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}html[data-netbox-color-mode=dark] .tooltip{pointer-events:none}html[data-netbox-color-mode=dark] span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}html[data-netbox-color-mode=dark] .badge a{color:inherit}html[data-netbox-color-mode=dark] .btn{white-space:nowrap}html[data-netbox-color-mode=dark] .card{box-shadow:0 .125rem .25rem #00000013}html[data-netbox-color-mode=dark] .card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}html[data-netbox-color-mode=dark] .card .card-header+.card-body{padding-top:0}html[data-netbox-color-mode=dark] .card .card-body.small .form-control,html[data-netbox-color-mode=dark] .card .card-body.small .form-select{font-size:.875rem}html[data-netbox-color-mode=dark] .card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(255,255,255,.125);opacity:.25}@media print{html[data-netbox-color-mode=dark] .card{box-shadow:unset!important}}html[data-netbox-color-mode=dark] .form-floating{position:relative}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){html[data-netbox-color-mode=dark] .form-floating>.input-group>label{transition:none}}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control::placeholder{color:transparent}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=dark] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=dark] .form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.choices~label,html[data-netbox-color-mode=dark] .form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}html[data-netbox-color-mode=dark] .form-object-edit{margin:0 auto;max-width:800px}html[data-netbox-color-mode=dark] textarea.form-control[rows="10"]{height:18rem}html[data-netbox-color-mode=dark] textarea.markdown,html[data-netbox-color-mode=dark] textarea.form-control[name=csv]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}html[data-netbox-color-mode=dark] .card:not(:only-of-type){margin-bottom:1rem}html[data-netbox-color-mode=dark] .stat-btn{min-width:3rem}html[data-netbox-color-mode=dark] nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}html[data-netbox-color-mode=dark] label.required{font-weight:700}html[data-netbox-color-mode=dark] label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:Material Design Icons;font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}html[data-netbox-color-mode=dark] div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}html[data-netbox-color-mode=dark] table tbody tr.primary{background-color:#6ea8fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.secondary{background-color:#adb5bd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.success{background-color:#75b79826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.info{background-color:#6edff626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.warning{background-color:#ffda6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.danger{background-color:#ea868f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.light{background-color:#dee2e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.dark{background-color:#adb5bd26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.blue{background-color:#6ea8fe26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.indigo{background-color:#a370f726;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.purple{background-color:#a98eda26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.pink{background-color:#e685b526;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.red{background-color:#ea868f26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.orange{background-color:#feb27226;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.yellow{background-color:#ffda6a26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.green{background-color:#75b79826;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.teal{background-color:#79dfc126;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.cyan{background-color:#6edff626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.gray{background-color:#dee2e626;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.black{background-color:#00000026;border-color:#adb5bd}html[data-netbox-color-mode=dark] table tbody tr.white{background-color:#ffffff26;border-color:#adb5bd}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge:not(.badge){padding:0 .65em}html[data-netbox-color-mode=dark] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.25rem}html[data-netbox-color-mode=dark] pre.change-data{padding-right:0;padding-left:0}html[data-netbox-color-mode=dark] pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}html[data-netbox-color-mode=dark] pre.change-data>span.added{background-color:var(--nbx-change-added)}html[data-netbox-color-mode=dark] pre.change-data>span.removed{background-color:var(--nbx-change-removed)}html[data-netbox-color-mode=dark] pre.change-diff{border-color:transparent}html[data-netbox-color-mode=dark] pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}html[data-netbox-color-mode=dark] pre.change-diff.change-added{background-color:var(--nbx-change-added)}html[data-netbox-color-mode=dark] div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}html[data-netbox-color-mode=dark] div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#adb5bd}html[data-netbox-color-mode=dark] .table-controls{display:flex}@media (min-width: 768px){html[data-netbox-color-mode=dark] .table-controls{margin-top:0!important;margin-bottom:0!important}}html[data-netbox-color-mode=dark] .table-controls .table-configure{justify-content:flex-start}@media (min-width: 768px){html[data-netbox-color-mode=dark] .table-controls .table-configure{justify-content:flex-end}}html[data-netbox-color-mode=dark] .table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}html[data-netbox-color-mode=dark] .nav-tabs{background-color:#1b1f22}html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover{border-bottom-color:transparent}html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active{background-color:#171b1d;border-bottom-color:#171b1d;transform:translateY(1px)}html[data-netbox-color-mode=dark] .tab-content{display:flex;flex-direction:column;padding:1rem}@media print{html[data-netbox-color-mode=dark] .masonry{position:static!important;display:block!important;height:unset!important}}@media print{html[data-netbox-color-mode=dark] .masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}html[data-netbox-color-mode=dark] .record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}html[data-netbox-color-mode=dark] .record-depth span:only-of-type,html[data-netbox-color-mode=dark] .record-depth span:last-of-type{margin-right:.25rem}html[data-netbox-color-mode=dark] .popover.image-preview-popover{max-width:unset}html[data-netbox-color-mode=dark] .rendered-markdown table{width:100%}html[data-netbox-color-mode=dark] .rendered-markdown th{border-bottom:2px solid #dddddd;padding:8px}html[data-netbox-color-mode=dark] .rendered-markdown td{border-top:1px solid #dddddd;padding:8px}html[data-netbox-color-mode=dark] th[align=left]{text-align:left}html[data-netbox-color-mode=dark] th[align=center]{text-align:center}html[data-netbox-color-mode=dark] th[align=right]{text-align:right}html[data-netbox-color-mode=dark] .markdown-widget .nav-link{border-bottom:0}html[data-netbox-color-mode=dark] .markdown-widget .nav-link.active{background-color:var(--nbx-body-bg)}html[data-netbox-color-mode=dark] .markdown-widget .nav-tabs{background-color:var(--nbx-pre-bg)}html[data-netbox-color-mode=dark] td pre{margin-bottom:0}html[data-netbox-color-mode=dark] pre.block{padding:1rem;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}html[data-netbox-color-mode=dark] #django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}html[data-netbox-color-mode=dark] html[data-netbox-url-name=login] #django-messages{display:none} diff --git a/netbox/project-static/dist/netbox-light.css b/netbox/project-static/dist/netbox-light.css index ffdd83285..9048a3286 100644 --- a/netbox/project-static/dist/netbox-light.css +++ b/netbox/project-static/dist/netbox-light.css @@ -1 +1 @@ -@charset "UTF-8";:root{--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #337ab7;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #54d6f0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #e9ecef;--bs-dark: #343a40;--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-gray: #adb5bd;--bs-black: #000;--bs-white: #fff;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + 0.9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + 0.6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + 0.3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:800}small,.small{font-size:.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#212529;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.375rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#adb5bd;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:#6c757d;background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#198754}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#198754}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#198754}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#dc3545}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#dc3545}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-primary:hover{color:#fff;background-color:#2b689c;border-color:#296292}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#2b689c;border-color:#296292;box-shadow:0 0 0 .25rem #528ec280}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#296292;border-color:#265c89}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #528ec280}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-info:hover{color:#000;background-color:#6edcf2;border-color:#65daf2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#6edcf2;border-color:#65daf2;box-shadow:0 0 0 .25rem #47b6cc80}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#76def3;border-color:#65daf2}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #47b6cc80}.btn-info:disabled,.btn-info.disabled{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-warning:disabled,.btn-warning.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-light:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#2c3136;border-color:#2a2e33}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#2c3136;border-color:#2a2e33;box-shadow:0 0 0 .25rem #52585d80}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#2a2e33;border-color:#272c30}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52585d80}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-blue{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-blue:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-blue,.btn-blue:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+.btn-blue,.btn-check:active+.btn-blue,.btn-blue:active,.btn-blue.active,.show>.btn-blue.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+.btn-blue:focus,.btn-check:active+.btn-blue:focus,.btn-blue:active:focus,.btn-blue.active:focus,.show>.btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}.btn-blue:disabled,.btn-blue.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-indigo{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-indigo:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+.btn-indigo,.btn-indigo:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+.btn-indigo,.btn-check:active+.btn-indigo,.btn-indigo:active,.btn-indigo.active,.show>.btn-indigo.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+.btn-indigo:focus,.btn-check:active+.btn-indigo:focus,.btn-indigo:active:focus,.btn-indigo.active:focus,.show>.btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}.btn-indigo:disabled,.btn-indigo.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-purple{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-purple:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+.btn-purple,.btn-purple:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+.btn-purple,.btn-check:active+.btn-purple,.btn-purple:active,.btn-purple.active,.show>.btn-purple.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+.btn-purple:focus,.btn-check:active+.btn-purple:focus,.btn-purple:active:focus,.btn-purple.active:focus,.show>.btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}.btn-purple:disabled,.btn-purple.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-pink{color:#fff;background-color:#d63384;border-color:#d63384}.btn-pink:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+.btn-pink,.btn-pink:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+.btn-pink,.btn-check:active+.btn-pink,.btn-pink:active,.btn-pink.active,.show>.btn-pink.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+.btn-pink:focus,.btn-check:active+.btn-pink:focus,.btn-pink:active:focus,.btn-pink.active:focus,.show>.btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}.btn-pink:disabled,.btn-pink.disabled{color:#fff;background-color:#d63384;border-color:#d63384}.btn-red{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-red:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-red,.btn-red:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+.btn-red,.btn-check:active+.btn-red,.btn-red:active,.btn-red.active,.show>.btn-red.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-red:focus,.btn-check:active+.btn-red:focus,.btn-red:active:focus,.btn-red.active:focus,.show>.btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-red:disabled,.btn-red.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-orange{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-orange:hover{color:#000;background-color:#fd9137;border-color:#fd8b2c}.btn-check:focus+.btn-orange,.btn-orange:focus{color:#000;background-color:#fd9137;border-color:#fd8b2c;box-shadow:0 0 0 .25rem #d76b1180}.btn-check:checked+.btn-orange,.btn-check:active+.btn-orange,.btn-orange:active,.btn-orange.active,.show>.btn-orange.dropdown-toggle{color:#000;background-color:#fd9843;border-color:#fd8b2c}.btn-check:checked+.btn-orange:focus,.btn-check:active+.btn-orange:focus,.btn-orange:active:focus,.btn-orange.active:focus,.show>.btn-orange.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d76b1180}.btn-orange:disabled,.btn-orange.disabled{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-yellow{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-yellow:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-yellow,.btn-yellow:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+.btn-yellow,.btn-check:active+.btn-yellow,.btn-yellow:active,.btn-yellow.active,.show>.btn-yellow.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-yellow:focus,.btn-check:active+.btn-yellow:focus,.btn-yellow:active:focus,.btn-yellow.active:focus,.show>.btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-yellow:disabled,.btn-yellow.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-green{color:#fff;background-color:#198754;border-color:#198754}.btn-green:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-green,.btn-green:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+.btn-green,.btn-check:active+.btn-green,.btn-green:active,.btn-green.active,.show>.btn-green.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-green:focus,.btn-check:active+.btn-green:focus,.btn-green:active:focus,.btn-green.active:focus,.show>.btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-green:disabled,.btn-green.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-teal{color:#000;background-color:#20c997;border-color:#20c997}.btn-teal:hover{color:#000;background-color:#41d1a7;border-color:#36cea1}.btn-check:focus+.btn-teal,.btn-teal:focus{color:#000;background-color:#41d1a7;border-color:#36cea1;box-shadow:0 0 0 .25rem #1bab8080}.btn-check:checked+.btn-teal,.btn-check:active+.btn-teal,.btn-teal:active,.btn-teal.active,.show>.btn-teal.dropdown-toggle{color:#000;background-color:#4dd4ac;border-color:#36cea1}.btn-check:checked+.btn-teal:focus,.btn-check:active+.btn-teal:focus,.btn-teal:active:focus,.btn-teal.active:focus,.show>.btn-teal.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #1bab8080}.btn-teal:disabled,.btn-teal.disabled{color:#000;background-color:#20c997;border-color:#20c997}.btn-cyan{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-cyan:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-cyan,.btn-cyan:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+.btn-cyan,.btn-check:active+.btn-cyan,.btn-cyan:active,.btn-cyan.active,.show>.btn-cyan.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+.btn-cyan:focus,.btn-check:active+.btn-cyan:focus,.btn-cyan:active:focus,.btn-cyan.active:focus,.show>.btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}.btn-cyan:disabled,.btn-cyan.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-gray{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-gray:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+.btn-gray,.btn-gray:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+.btn-gray,.btn-check:active+.btn-gray,.btn-gray:active,.btn-gray.active,.show>.btn-gray.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+.btn-gray:focus,.btn-check:active+.btn-gray:focus,.btn-gray:active:focus,.btn-gray.active:focus,.show>.btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}.btn-gray:disabled,.btn-gray.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-black,.btn-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+.btn-black,.btn-black:focus{color:#fff;background-color:#000;border-color:#000;box-shadow:0 0 0 .25rem #26262680}.btn-check:checked+.btn-black,.btn-check:active+.btn-black,.btn-black:active,.btn-black.active,.show>.btn-black.dropdown-toggle{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+.btn-black:focus,.btn-check:active+.btn-black:focus,.btn-black:active:focus,.btn-black.active:focus,.show>.btn-black.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #26262680}.btn-black:disabled,.btn-black.disabled{color:#fff;background-color:#000;border-color:#000}.btn-white,.btn-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+.btn-white,.btn-white:focus{color:#000;background-color:#fff;border-color:#fff;box-shadow:0 0 0 .25rem #d9d9d980}.btn-check:checked+.btn-white,.btn-check:active+.btn-white,.btn-white:active,.btn-white.active,.show>.btn-white.dropdown-toggle{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+.btn-white:focus,.btn-check:active+.btn-white:focus,.btn-white:active:focus,.btn-white.active:focus,.show>.btn-white.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9d9d980}.btn-white:disabled,.btn-white.disabled{color:#000;background-color:#fff;border-color:#fff}.btn-outline-primary{color:#337ab7;border-color:#337ab7}.btn-outline-primary:hover{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#337ab7;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#54d6f0;border-color:#54d6f0}.btn-outline-info:hover{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem #54d6f080}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #54d6f080}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#54d6f0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#e9ecef;border-color:#e9ecef}.btn-outline-light:hover{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#e9ecef;background-color:transparent}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#343a40;background-color:transparent}.btn-outline-blue{color:#0d6efd;border-color:#0d6efd}.btn-outline-blue:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-blue,.btn-outline-blue:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+.btn-outline-blue,.btn-check:active+.btn-outline-blue,.btn-outline-blue:active,.btn-outline-blue.active,.btn-outline-blue.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+.btn-outline-blue:focus,.btn-check:active+.btn-outline-blue:focus,.btn-outline-blue:active:focus,.btn-outline-blue.active:focus,.btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-outline-blue:disabled,.btn-outline-blue.disabled{color:#0d6efd;background-color:transparent}.btn-outline-indigo{color:#6610f2;border-color:#6610f2}.btn-outline-indigo:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+.btn-outline-indigo,.btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+.btn-outline-indigo,.btn-check:active+.btn-outline-indigo,.btn-outline-indigo:active,.btn-outline-indigo.active,.btn-outline-indigo.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+.btn-outline-indigo:focus,.btn-check:active+.btn-outline-indigo:focus,.btn-outline-indigo:active:focus,.btn-outline-indigo.active:focus,.btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-outline-indigo:disabled,.btn-outline-indigo.disabled{color:#6610f2;background-color:transparent}.btn-outline-purple{color:#6f42c1;border-color:#6f42c1}.btn-outline-purple:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+.btn-outline-purple,.btn-outline-purple:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+.btn-outline-purple,.btn-check:active+.btn-outline-purple,.btn-outline-purple:active,.btn-outline-purple.active,.btn-outline-purple.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+.btn-outline-purple:focus,.btn-check:active+.btn-outline-purple:focus,.btn-outline-purple:active:focus,.btn-outline-purple.active:focus,.btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-outline-purple:disabled,.btn-outline-purple.disabled{color:#6f42c1;background-color:transparent}.btn-outline-pink{color:#d63384;border-color:#d63384}.btn-outline-pink:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+.btn-outline-pink,.btn-outline-pink:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+.btn-outline-pink,.btn-check:active+.btn-outline-pink,.btn-outline-pink:active,.btn-outline-pink.active,.btn-outline-pink.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+.btn-outline-pink:focus,.btn-check:active+.btn-outline-pink:focus,.btn-outline-pink:active:focus,.btn-outline-pink.active:focus,.btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-outline-pink:disabled,.btn-outline-pink.disabled{color:#d63384;background-color:transparent}.btn-outline-red{color:#dc3545;border-color:#dc3545}.btn-outline-red:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-red,.btn-outline-red:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+.btn-outline-red,.btn-check:active+.btn-outline-red,.btn-outline-red:active,.btn-outline-red.active,.btn-outline-red.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-red:focus,.btn-check:active+.btn-outline-red:focus,.btn-outline-red:active:focus,.btn-outline-red.active:focus,.btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-red:disabled,.btn-outline-red.disabled{color:#dc3545;background-color:transparent}.btn-outline-orange{color:#fd7e14;border-color:#fd7e14}.btn-outline-orange:hover{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-check:focus+.btn-outline-orange,.btn-outline-orange:focus{box-shadow:0 0 0 .25rem #fd7e1480}.btn-check:checked+.btn-outline-orange,.btn-check:active+.btn-outline-orange,.btn-outline-orange:active,.btn-outline-orange.active,.btn-outline-orange.dropdown-toggle.show{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-check:checked+.btn-outline-orange:focus,.btn-check:active+.btn-outline-orange:focus,.btn-outline-orange:active:focus,.btn-outline-orange.active:focus,.btn-outline-orange.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #fd7e1480}.btn-outline-orange:disabled,.btn-outline-orange.disabled{color:#fd7e14;background-color:transparent}.btn-outline-yellow{color:#ffc107;border-color:#ffc107}.btn-outline-yellow:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-yellow,.btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+.btn-outline-yellow,.btn-check:active+.btn-outline-yellow,.btn-outline-yellow:active,.btn-outline-yellow.active,.btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-yellow:focus,.btn-check:active+.btn-outline-yellow:focus,.btn-outline-yellow:active:focus,.btn-outline-yellow.active:focus,.btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-yellow:disabled,.btn-outline-yellow.disabled{color:#ffc107;background-color:transparent}.btn-outline-green{color:#198754;border-color:#198754}.btn-outline-green:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-green,.btn-outline-green:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+.btn-outline-green,.btn-check:active+.btn-outline-green,.btn-outline-green:active,.btn-outline-green.active,.btn-outline-green.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-green:focus,.btn-check:active+.btn-outline-green:focus,.btn-outline-green:active:focus,.btn-outline-green.active:focus,.btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-green:disabled,.btn-outline-green.disabled{color:#198754;background-color:transparent}.btn-outline-teal{color:#20c997;border-color:#20c997}.btn-outline-teal:hover{color:#000;background-color:#20c997;border-color:#20c997}.btn-check:focus+.btn-outline-teal,.btn-outline-teal:focus{box-shadow:0 0 0 .25rem #20c99780}.btn-check:checked+.btn-outline-teal,.btn-check:active+.btn-outline-teal,.btn-outline-teal:active,.btn-outline-teal.active,.btn-outline-teal.dropdown-toggle.show{color:#000;background-color:#20c997;border-color:#20c997}.btn-check:checked+.btn-outline-teal:focus,.btn-check:active+.btn-outline-teal:focus,.btn-outline-teal:active:focus,.btn-outline-teal.active:focus,.btn-outline-teal.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #20c99780}.btn-outline-teal:disabled,.btn-outline-teal.disabled{color:#20c997;background-color:transparent}.btn-outline-cyan{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-cyan:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-cyan,.btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+.btn-outline-cyan,.btn-check:active+.btn-outline-cyan,.btn-outline-cyan:active,.btn-outline-cyan.active,.btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+.btn-outline-cyan:focus,.btn-check:active+.btn-outline-cyan:focus,.btn-outline-cyan:active:focus,.btn-outline-cyan.active:focus,.btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-outline-cyan:disabled,.btn-outline-cyan.disabled{color:#0dcaf0;background-color:transparent}.btn-outline-gray{color:#adb5bd;border-color:#adb5bd}.btn-outline-gray:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+.btn-outline-gray,.btn-outline-gray:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+.btn-outline-gray,.btn-check:active+.btn-outline-gray,.btn-outline-gray:active,.btn-outline-gray.active,.btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+.btn-outline-gray:focus,.btn-check:active+.btn-outline-gray:focus,.btn-outline-gray:active:focus,.btn-outline-gray.active:focus,.btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-outline-gray:disabled,.btn-outline-gray.disabled{color:#adb5bd;background-color:transparent}.btn-outline-black{color:#000;border-color:#000}.btn-outline-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+.btn-outline-black,.btn-outline-black:focus{box-shadow:0 0 0 .25rem #00000080}.btn-check:checked+.btn-outline-black,.btn-check:active+.btn-outline-black,.btn-outline-black:active,.btn-outline-black.active,.btn-outline-black.dropdown-toggle.show{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+.btn-outline-black:focus,.btn-check:active+.btn-outline-black:focus,.btn-outline-black:active:focus,.btn-outline-black.active:focus,.btn-outline-black.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #00000080}.btn-outline-black:disabled,.btn-outline-black.disabled{color:#000;background-color:transparent}.btn-outline-white{color:#fff;border-color:#fff}.btn-outline-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+.btn-outline-white,.btn-outline-white:focus{box-shadow:0 0 0 .25rem #ffffff80}.btn-check:checked+.btn-outline-white,.btn-check:active+.btn-outline-white,.btn-outline-white:active,.btn-outline-white.active,.btn-outline-white.dropdown-toggle.show{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+.btn-outline-white:focus,.btn-check:active+.btn-outline-white:focus,.btn-outline-white:active:focus,.btn-outline-white.active:focus,.btn-outline-white.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffffff80}.btn-outline-white:disabled,.btn-outline-white.disabled{color:#fff;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:#00000026}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.375rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:#000000e6}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#000000e6}.navbar-light .navbar-nav .nav-link{color:#f8f9fa}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:#000000b3}.navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#000000e6}.navbar-light .navbar-toggler{color:#f8f9fa;border-color:#0000001a}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#f8f9fa}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#000000e6}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ffffff8c}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}.navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#ffffff8c}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.375rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;color:#343a40;background-color:"unset";border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(0.375rem - 1px) calc(0.375rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;color:#343a40;background-color:"unset";border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(0.375rem - 1px) calc(0.375rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;inset:0;padding:1rem;border-radius:calc(0.375rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#343a40;background-color:#cfe2ff;box-shadow:inset 0 -1px #dee2e6}.accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.accordion-header{margin-bottom:0}.accordion-item{background-color:transparent;border:1px solid #dee2e6}.accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E"))}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#1f496e;background-color:#d6e4f1;border-color:#c2d7e9}.alert-primary .alert-link{color:#193a58}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#225660;background-color:#ddf7fc;border-color:#ccf3fb}.alert-info .alert-link{color:#1b454d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#5d5e60;background-color:#fbfbfc;border-color:#f8f9fa}.alert-light .alert-link{color:#4a4b4d}.alert-dark{color:#1f2326;background-color:#d6d8d9;border-color:#c2c4c6}.alert-dark .alert-link{color:#191c1e}.alert-blue{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-blue .alert-link{color:#06357a}.alert-indigo{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}.alert-indigo .alert-link{color:#310874}.alert-purple{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}.alert-purple .alert-link{color:#36205d}.alert-pink{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}.alert-pink .alert-link{color:#66193f}.alert-red{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-red .alert-link{color:#6a1a21}.alert-orange{color:#984c0c;background-color:#ffe5d0;border-color:#fed8b9}.alert-orange .alert-link{color:#7a3d0a}.alert-yellow{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-yellow .alert-link{color:#523e02}.alert-green{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-green .alert-link{color:#0c4128}.alert-teal{color:#13795b;background-color:#d2f4ea;border-color:#bcefe0}.alert-teal .alert-link{color:#0f6149}.alert-cyan{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-cyan .alert-link{color:#04414d}.alert-gray{color:#686d71;background-color:#eff0f2;border-color:#e6e9eb}.alert-gray .alert-link{color:#53575a}.alert-black{color:#000;background-color:#ccc;border-color:#b3b3b3}.alert-black .alert-link{color:#000}.alert-white{color:#666;background-color:#fff;border-color:#fff}.alert-white .alert-link{color:#525252}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.375rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#495057;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#adb5bd;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#1f496e;background-color:#d6e4f1}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#1f496e;background-color:#c1cdd9}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1f496e;border-color:#1f496e}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#225660;background-color:#ddf7fc}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#225660;background-color:#c7dee3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#225660;border-color:#225660}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#5d5e60;background-color:#fbfbfc}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#5d5e60;background-color:#e2e2e3}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#5d5e60;border-color:#5d5e60}.list-group-item-dark{color:#1f2326;background-color:#d6d8d9}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1f2326;background-color:#c1c2c3}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1f2326;border-color:#1f2326}.list-group-item-blue{color:#084298;background-color:#cfe2ff}.list-group-item-blue.list-group-item-action:hover,.list-group-item-blue.list-group-item-action:focus{color:#084298;background-color:#bacbe6}.list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-indigo{color:#3d0a91;background-color:#e0cffc}.list-group-item-indigo.list-group-item-action:hover,.list-group-item-indigo.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}.list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.list-group-item-purple{color:#432874;background-color:#e2d9f3}.list-group-item-purple.list-group-item-action:hover,.list-group-item-purple.list-group-item-action:focus{color:#432874;background-color:#cbc3db}.list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}.list-group-item-pink{color:#801f4f;background-color:#f7d6e6}.list-group-item-pink.list-group-item-action:hover,.list-group-item-pink.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}.list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}.list-group-item-red{color:#842029;background-color:#f8d7da}.list-group-item-red.list-group-item-action:hover,.list-group-item-red.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-red.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-orange{color:#984c0c;background-color:#ffe5d0}.list-group-item-orange.list-group-item-action:hover,.list-group-item-orange.list-group-item-action:focus{color:#984c0c;background-color:#e6cebb}.list-group-item-orange.list-group-item-action.active{color:#fff;background-color:#984c0c;border-color:#984c0c}.list-group-item-yellow{color:#664d03;background-color:#fff3cd}.list-group-item-yellow.list-group-item-action:hover,.list-group-item-yellow.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-green{color:#0f5132;background-color:#d1e7dd}.list-group-item-green.list-group-item-action:hover,.list-group-item-green.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-green.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-teal{color:#13795b;background-color:#d2f4ea}.list-group-item-teal.list-group-item-action:hover,.list-group-item-teal.list-group-item-action:focus{color:#13795b;background-color:#bddcd3}.list-group-item-teal.list-group-item-action.active{color:#fff;background-color:#13795b;border-color:#13795b}.list-group-item-cyan{color:#055160;background-color:#cff4fc}.list-group-item-cyan.list-group-item-action:hover,.list-group-item-cyan.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-gray{color:#686d71;background-color:#eff0f2}.list-group-item-gray.list-group-item-action:hover,.list-group-item-gray.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}.list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}.list-group-item-black{color:#000;background-color:#ccc}.list-group-item-black.list-group-item-action:hover,.list-group-item-black.list-group-item-action:focus{color:#000;background-color:#b8b8b8}.list-group-item-black.list-group-item-action.active{color:#fff;background-color:#000;border-color:#000}.list-group-item-white{color:#666;background-color:#fff}.list-group-item-white.list-group-item-action:hover,.list-group-item-white.list-group-item-action:focus{color:#666;background-color:#e6e6e6}.list-group-item-white.list-group-item-action.active{color:#fff;background-color:#666;border-color:#666}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}.toast:not(.showing):not(.show){opacity:0}.toast.hide{display:none}.toast-container{width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}.modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(0.75rem - 1px);border-bottom-left-radius:calc(0.75rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.375rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.clearfix:after{display:block;clear:both;content:""}.link-primary{color:#337ab7}.link-primary:hover,.link-primary:focus{color:#296292}.link-secondary{color:#6c757d}.link-secondary:hover,.link-secondary:focus{color:#565e64}.link-success{color:#198754}.link-success:hover,.link-success:focus{color:#146c43}.link-info{color:#54d6f0}.link-info:hover,.link-info:focus{color:#76def3}.link-warning{color:#ffc107}.link-warning:hover,.link-warning:focus{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:hover,.link-danger:focus{color:#b02a37}.link-light{color:#e9ecef}.link-light:hover,.link-light:focus{color:#edf0f2}.link-dark{color:#343a40}.link-dark:hover,.link-dark:focus{color:#2a2e33}.link-blue{color:#0d6efd}.link-blue:hover,.link-blue:focus{color:#0a58ca}.link-indigo{color:#6610f2}.link-indigo:hover,.link-indigo:focus{color:#520dc2}.link-purple{color:#6f42c1}.link-purple:hover,.link-purple:focus{color:#59359a}.link-pink{color:#d63384}.link-pink:hover,.link-pink:focus{color:#ab296a}.link-red{color:#dc3545}.link-red:hover,.link-red:focus{color:#b02a37}.link-orange{color:#fd7e14}.link-orange:hover,.link-orange:focus{color:#fd9843}.link-yellow{color:#ffc107}.link-yellow:hover,.link-yellow:focus{color:#ffcd39}.link-green{color:#198754}.link-green:hover,.link-green:focus{color:#146c43}.link-teal{color:#20c997}.link-teal:hover,.link-teal:focus{color:#4dd4ac}.link-cyan{color:#0dcaf0}.link-cyan:hover,.link-cyan:focus{color:#3dd5f3}.link-gray{color:#adb5bd}.link-gray:hover,.link-gray:focus{color:#bdc4ca}.link-black{color:#000}.link-black:hover,.link-black:focus{color:#000}.link-white{color:#fff}.link-white:hover,.link-white:focus{color:#fff}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#337ab7!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#54d6f0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#e9ecef!important}.border-dark{border-color:#343a40!important}.border-blue{border-color:#0d6efd!important}.border-indigo{border-color:#6610f2!important}.border-purple{border-color:#6f42c1!important}.border-pink{border-color:#d63384!important}.border-red{border-color:#dc3545!important}.border-orange{border-color:#fd7e14!important}.border-yellow{border-color:#ffc107!important}.border-green{border-color:#198754!important}.border-teal{border-color:#20c997!important}.border-cyan{border-color:#0dcaf0!important}.border-gray{border-color:#adb5bd!important}.border-black{border-color:#000!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + 0.9vw)!important}.fs-3{font-size:calc(1.3rem + 0.6vw)!important}.fs-4{font-size:calc(1.275rem + 0.3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:200!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:800!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:1.75!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:#337ab7!important}.text-secondary{color:#6c757d!important}.text-success{color:#198754!important}.text-info{color:#54d6f0!important}.text-warning{color:#ffc107!important}.text-danger{color:#dc3545!important}.text-light{color:#e9ecef!important}.text-dark{color:#343a40!important}.text-blue{color:#0d6efd!important}.text-indigo{color:#6610f2!important}.text-purple{color:#6f42c1!important}.text-pink{color:#d63384!important}.text-red{color:#dc3545!important}.text-orange{color:#fd7e14!important}.text-yellow{color:#ffc107!important}.text-green{color:#198754!important}.text-teal{color:#20c997!important}.text-cyan{color:#0dcaf0!important}.text-gray{color:#adb5bd!important}.text-black{color:#000!important}.text-white{color:#fff!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:#00000080!important}.text-white-50{color:#ffffff80!important}.text-reset{color:inherit!important}.bg-primary{background-color:#337ab7!important}.bg-secondary{background-color:#6c757d!important}.bg-success{background-color:#198754!important}.bg-info{background-color:#54d6f0!important}.bg-warning{background-color:#ffc107!important}.bg-danger{background-color:#dc3545!important}.bg-light{background-color:#e9ecef!important}.bg-dark{background-color:#343a40!important}.bg-blue{background-color:#0d6efd!important}.bg-indigo{background-color:#6610f2!important}.bg-purple{background-color:#6f42c1!important}.bg-pink{background-color:#d63384!important}.bg-red{background-color:#dc3545!important}.bg-orange{background-color:#fd7e14!important}.bg-yellow{background-color:#ffc107!important}.bg-green{background-color:#198754!important}.bg-teal{background-color:#20c997!important}.bg-cyan{background-color:#0dcaf0!important}.bg-gray{background-color:#adb5bd!important}.bg-black{background-color:#000!important}.bg-white,.bg-body{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.375rem!important}.rounded-0{border-radius:0!important}.rounded-1,.rounded-2{border-radius:.375rem!important}.rounded-3{border-radius:.75rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}.rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}.rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}.rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:root{--nbx-select-content-bg: #fff;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}:root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}.ss-main{position:relative;display:inline-block;user-select:none;color:#212529;width:100%}.ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + 0.75rem + 2px);padding:.75rem;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-single-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#6c757d}.ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:700}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}.ss-main .ss-single-selected .ss-arrow span{border:solid #212529;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}.ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}.ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + 0.75rem + 2px);width:100%;padding:0 0 0 3px;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-multi-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#212529}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}.ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#337ab7;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#212529;position:relative;height:10px;width:2px;transition:transform .2s}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#212529;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #ced4da;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}.ss-content .ss-search.ss-hide,.ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}.ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}.ss-content .ss-search input::placeholder{color:#adb5bd;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #337ab7}.ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:700;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #ced4da;border-radius:.375rem;box-sizing:border-box}.ss-content .ss-addable{padding-top:0}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:700}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#337ab7}.ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option:hover,.ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#337ab7}.ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#6c757d;background-color:#fff}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#212529;background-color:#337ab71a}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}.ss-main{color:#212529}.ss-main.is-invalid .ss-single-selected,.ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}.ss-main.is-valid .ss-single-selected,.ss-main.is-valid .ss-multi-selected{border-color:#198754}.ss-main .ss-single-selected,.ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#fff;border:1px solid #ced4da}.ss-main .ss-single-selected[disabled],.ss-main .ss-multi-selected[disabled]{color:#6c757d;background-color:#e9ecef}.ss-main div.ss-multi-selected .ss-values .ss-disabled,.ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}.ss-main .ss-single-selected span.ss-arrow span.arrow-down,.ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#6c757d}.ss-main .ss-single-selected .placeholder .depth{display:none}.ss-main .ss-single-selected span.placeholder>*,.ss-main .ss-single-selected span.placeholder{line-height:1.5}.ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}.ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}.ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}.ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}.ss-main .ss-multi-selected .ss-add{margin:0 .75rem}.ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#212529;background-color:var(--nbx-select-option-selected-bg)}.ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}.ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}.ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#6c757d}.ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}.ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}.ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}.ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}.ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}.ss-main .ss-content .ss-search{padding-right:.5rem}.ss-main .ss-content .ss-search button{margin-left:.75rem}.ss-main .ss-content .ss-search input[type=search]{color:#212529;background-color:#fff;border:1px solid #ced4da}.ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #ced4da;transition:all .1s ease-in-out}@media (max-width: 991.98px){.sidenav{transform:translate(-3rem)}.sidenav+.content-container[class]{margin-left:0}.sidenav .profile-button-container[class]{display:block}}.sidenav .profile-button-container{display:none;padding:.5rem 1rem}.sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}.sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}.sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}.sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}@media (min-width: 768px){.sidenav .sidenav-inner{padding-right:0;padding-left:0}}.sidenav .sidenav-brand-img,.sidenav .sidenav-brand>img{max-width:100%;max-height:15rem}.sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}.sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}.sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}.sidenav .sidenav-collapse>*{min-width:100%}@media (min-width: 768px){.sidenav .sidenav-collapse{margin-right:0;margin-left:0}}.sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}.sidenav .nav{margin-bottom:.5rem}.sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}.sidenav .nav .nav-item.no-buttons{padding-right:.5rem}.sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:Material Design Icons;font-style:normal;font-weight:700;font-variant:normal;color:#6c757d;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#343a40}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#337ab7;transform:rotate(90deg)}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}.sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}.sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}.sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition-duration:0ms}.sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}.sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}.sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:22.5px;text-align:center}.sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}@media (min-width: 1200px){body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}.g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}body[data-sidenav-show] .sidenav,body[data-sidenav-pinned] .sidenav{max-width:16rem}body[data-sidenav-show] .sidenav .sidenav-brand,body[data-sidenav-show] .sidenav .navbar-heading,body[data-sidenav-pinned] .sidenav .sidenav-brand,body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}body[data-sidenav-show] .sidenav .sidenav-brand,body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}body[data-sidenav-show] .sidenav .sidenav-brand-icon,body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}@media (max-width: 991.98px){body[data-sidenav-show] .sidenav,body[data-sidenav-pinned] .sidenav{transform:translate(0)}}body[data-sidenav-hide] .sidenav .sidenav-header,body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}body[data-sidenav-hide] .sidenav .sidenav-brand,body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}body[data-sidenav-hide] .sidenav .sidenav-brand-icon,body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}body[data-sidenav-hide] .sidenav .sidenav-toggle,body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}body[data-sidenav-hide] .sidenav .nav-item .collapse,body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}body[data-sidenav-hide] .sidenav .nav-link-text,body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}body[data-sidenav-show] .sidenav .sidenav-brand{display:block}body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}@media (min-width: 992px){body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}.simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}.simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}.simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}pre{white-space:pre}small,.small{font-size:smaller!important}a[type=button]{-webkit-appearance:unset!important}*[data-href]{cursor:pointer}.form-control:not([type=file]){font-size:inherit}.badge{font-size:.75rem}input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none!important}mark,.mark{padding-left:0;padding-right:0}.text-xs{font-size:.75rem!important;line-height:1.25!important}.border-input{border:1px solid #ced4da!important}.ws-nowrap{white-space:nowrap!important}table tr .vertical-align,table td .vertical-align{vertical-align:middle}@media print{.noprint{display:none!important;visibility:hidden!important}}.printonly{display:none!important;visibility:hidden!important}@media print{.printonly{display:block!important;visibility:visible!important}}.hide-last-child :last-child{visibility:hidden;opacity:0}:root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #9cc8f8;--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #e9ecef;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #337ab7;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}:root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}.bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f496e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-primary{color:#337ab7}.btn.btn-ghost-primary:hover{background-color:#337ab71f}.alert.alert-primary a:not(.btn),.table-primary a:not(.btn){font-weight:700;color:#1f496e}.alert.alert-primary .btn:not([class*=btn-outline]),.table-primary .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-primary a:not(.btn){font-weight:700;color:#adcae2}.badge.bg-primary,.toast.bg-primary,.toast-header.bg-primary,.progress-bar.bg-primary{color:#fff}.bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-secondary{color:#6c757d}.btn.btn-ghost-secondary:hover{background-color:#6c757d1f}.alert.alert-secondary a:not(.btn),.table-secondary a:not(.btn){font-weight:700;color:#41464b}.alert.alert-secondary .btn:not([class*=btn-outline]),.table-secondary .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-secondary a:not(.btn){font-weight:700;color:#c4c8cb}.badge.bg-secondary,.toast.bg-secondary,.toast-header.bg-secondary,.progress-bar.bg-secondary{color:#fff}.bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-success{color:#198754}.btn.btn-ghost-success:hover{background-color:#1987541f}.alert.alert-success a:not(.btn),.table-success a:not(.btn){font-weight:700;color:#0f5132}.alert.alert-success .btn:not([class*=btn-outline]),.table-success .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-success a:not(.btn){font-weight:700;color:#a3cfbb}.badge.bg-success,.toast.bg-success,.toast-header.bg-success,.progress-bar.bg-success{color:#fff}.bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23225660'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-info{color:#54d6f0}.btn.btn-ghost-info:hover{background-color:#54d6f01f}.alert.alert-info a:not(.btn),.table-info a:not(.btn){font-weight:700;color:#225660}.alert.alert-info .btn:not([class*=btn-outline]),.table-info .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-info a:not(.btn){font-weight:700;color:#225660}.badge.bg-info,.toast.bg-info,.toast-header.bg-info,.progress-bar.bg-info{color:#000}.bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-warning{color:#ffc107}.btn.btn-ghost-warning:hover{background-color:#ffc1071f}.alert.alert-warning a:not(.btn),.table-warning a:not(.btn){font-weight:700;color:#664d03}.alert.alert-warning .btn:not([class*=btn-outline]),.table-warning .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-warning a:not(.btn){font-weight:700;color:#664d03}.badge.bg-warning,.toast.bg-warning,.toast-header.bg-warning,.progress-bar.bg-warning{color:#000}.bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-danger{color:#dc3545}.btn.btn-ghost-danger:hover{background-color:#dc35451f}.alert.alert-danger a:not(.btn),.table-danger a:not(.btn){font-weight:700;color:#842029}.alert.alert-danger .btn:not([class*=btn-outline]),.table-danger .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-danger a:not(.btn){font-weight:700;color:#f1aeb5}.badge.bg-danger,.toast.bg-danger,.toast-header.bg-danger,.progress-bar.bg-danger{color:#fff}.bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235d5e60'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-light{color:#e9ecef}.btn.btn-ghost-light:hover{background-color:#e9ecef1f}.alert.alert-light a:not(.btn),.table-light a:not(.btn){font-weight:700;color:#5d5e60}.alert.alert-light .btn:not([class*=btn-outline]),.table-light .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-light a:not(.btn){font-weight:700;color:#5d5e60}.badge.bg-light,.toast.bg-light,.toast-header.bg-light,.progress-bar.bg-light{color:#000}.bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f2326'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-dark{color:#343a40}.btn.btn-ghost-dark:hover{background-color:#343a401f}.alert.alert-dark a:not(.btn),.table-dark a:not(.btn){font-weight:700;color:#1f2326}.alert.alert-dark .btn:not([class*=btn-outline]),.table-dark .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-dark a:not(.btn){font-weight:700;color:#aeb0b3}.badge.bg-dark,.toast.bg-dark,.toast-header.bg-dark,.progress-bar.bg-dark{color:#fff}.bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue{color:#0d6efd}.btn.btn-ghost-blue:hover{background-color:#0d6efd1f}.alert.alert-blue a:not(.btn),.table-blue a:not(.btn){font-weight:700;color:#084298}.alert.alert-blue .btn:not([class*=btn-outline]),.table-blue .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue a:not(.btn){font-weight:700;color:#9ec5fe}.badge.bg-blue,.toast.bg-blue,.toast-header.bg-blue,.progress-bar.bg-blue{color:#fff}.bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo{color:#6610f2}.btn.btn-ghost-indigo:hover{background-color:#6610f21f}.alert.alert-indigo a:not(.btn),.table-indigo a:not(.btn){font-weight:700;color:#3d0a91}.alert.alert-indigo .btn:not([class*=btn-outline]),.table-indigo .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo a:not(.btn){font-weight:700;color:#c29ffa}.badge.bg-indigo,.toast.bg-indigo,.toast-header.bg-indigo,.progress-bar.bg-indigo{color:#fff}.bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple{color:#6f42c1}.btn.btn-ghost-purple:hover{background-color:#6f42c11f}.alert.alert-purple a:not(.btn),.table-purple a:not(.btn){font-weight:700;color:#432874}.alert.alert-purple .btn:not([class*=btn-outline]),.table-purple .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple a:not(.btn){font-weight:700;color:#c5b3e6}.badge.bg-purple,.toast.bg-purple,.toast-header.bg-purple,.progress-bar.bg-purple{color:#fff}.bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink{color:#d63384}.btn.btn-ghost-pink:hover{background-color:#d633841f}.alert.alert-pink a:not(.btn),.table-pink a:not(.btn){font-weight:700;color:#801f4f}.alert.alert-pink .btn:not([class*=btn-outline]),.table-pink .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink a:not(.btn){font-weight:700;color:#efadce}.badge.bg-pink,.toast.bg-pink,.toast-header.bg-pink,.progress-bar.bg-pink{color:#fff}.bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red{color:#dc3545}.btn.btn-ghost-red:hover{background-color:#dc35451f}.alert.alert-red a:not(.btn),.table-red a:not(.btn){font-weight:700;color:#842029}.alert.alert-red .btn:not([class*=btn-outline]),.table-red .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red a:not(.btn){font-weight:700;color:#f1aeb5}.badge.bg-red,.toast.bg-red,.toast-header.bg-red,.progress-bar.bg-red{color:#fff}.bg-orange button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23984c0c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-orange{color:#fd7e14}.btn.btn-ghost-orange:hover{background-color:#fd7e141f}.alert.alert-orange a:not(.btn),.table-orange a:not(.btn){font-weight:700;color:#984c0c}.alert.alert-orange .btn:not([class*=btn-outline]),.table-orange .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-orange a:not(.btn){font-weight:700;color:#653208}.badge.bg-orange,.toast.bg-orange,.toast-header.bg-orange,.progress-bar.bg-orange{color:#000}.bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow{color:#ffc107}.btn.btn-ghost-yellow:hover{background-color:#ffc1071f}.alert.alert-yellow a:not(.btn),.table-yellow a:not(.btn){font-weight:700;color:#664d03}.alert.alert-yellow .btn:not([class*=btn-outline]),.table-yellow .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow a:not(.btn){font-weight:700;color:#664d03}.badge.bg-yellow,.toast.bg-yellow,.toast-header.bg-yellow,.progress-bar.bg-yellow{color:#000}.bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green{color:#198754}.btn.btn-ghost-green:hover{background-color:#1987541f}.alert.alert-green a:not(.btn),.table-green a:not(.btn){font-weight:700;color:#0f5132}.alert.alert-green .btn:not([class*=btn-outline]),.table-green .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green a:not(.btn){font-weight:700;color:#a3cfbb}.badge.bg-green,.toast.bg-green,.toast-header.bg-green,.progress-bar.bg-green{color:#fff}.bg-teal button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2313795b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-teal{color:#20c997}.btn.btn-ghost-teal:hover{background-color:#20c9971f}.alert.alert-teal a:not(.btn),.table-teal a:not(.btn){font-weight:700;color:#13795b}.alert.alert-teal .btn:not([class*=btn-outline]),.table-teal .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-teal a:not(.btn){font-weight:700;color:#0d503c}.badge.bg-teal,.toast.bg-teal,.toast-header.bg-teal,.progress-bar.bg-teal{color:#000}.bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan{color:#0dcaf0}.btn.btn-ghost-cyan:hover{background-color:#0dcaf01f}.alert.alert-cyan a:not(.btn),.table-cyan a:not(.btn){font-weight:700;color:#055160}.alert.alert-cyan .btn:not([class*=btn-outline]),.table-cyan .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan a:not(.btn){font-weight:700;color:#055160}.badge.bg-cyan,.toast.bg-cyan,.toast-header.bg-cyan,.progress-bar.bg-cyan{color:#000}.bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23686d71'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray{color:#adb5bd}.btn.btn-ghost-gray:hover{background-color:#adb5bd1f}.alert.alert-gray a:not(.btn),.table-gray a:not(.btn){font-weight:700;color:#686d71}.alert.alert-gray .btn:not([class*=btn-outline]),.table-gray .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray a:not(.btn){font-weight:700;color:#45484c}.badge.bg-gray,.toast.bg-gray,.toast-header.bg-gray,.progress-bar.bg-gray{color:#000}.bg-black button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='black'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-black{color:#000}.btn.btn-ghost-black:hover{background-color:#0000001f}.alert.alert-black a:not(.btn),.table-black a:not(.btn){font-weight:700;color:#000}.alert.alert-black .btn:not([class*=btn-outline]),.table-black .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-black a:not(.btn){font-weight:700;color:#999}.badge.bg-black,.toast.bg-black,.toast-header.bg-black,.progress-bar.bg-black{color:#fff}.bg-white button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23666666'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-white{color:#fff}.btn.btn-ghost-white:hover{background-color:#ffffff1f}.alert.alert-white a:not(.btn),.table-white a:not(.btn){font-weight:700;color:#666}.alert.alert-white .btn:not([class*=btn-outline]),.table-white .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-white a:not(.btn){font-weight:700;color:#666}.badge.bg-white,.toast.bg-white,.toast-header.bg-white,.progress-bar.bg-white{color:#000}table td>.progress{min-width:6rem}.small .form-control{font-size:.875rem}:not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}.nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}@media (max-width: 991.98px){.nav-mobile{display:flex}}.nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}.card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#f8f9fa;border-top:1px solid rgba(0,0,0,.125);border-bottom-color:#00000020}.card>.table.table-flush th,.card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}.card>.table.table-flush tr[class]{border-color:#00000020!important}.card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}.header-alert-container .alert{width:100%}@media (min-width: 768px){.header-alert-container .alert{max-width:75%}}@media (min-width: 992px){.header-alert-container .alert{max-width:50%}}span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}table td a{text-decoration:none}table td a:hover{text-decoration:underline}table td .dropdown{position:static}table th a,table th a:hover{color:#212529;text-decoration:none}table td,table th{font-size:.875rem;line-height:1.25;vertical-align:middle}table td.min-width,table th.min-width{width:1%}table td .form-check-input,table th .form-check-input{margin-top:.125em;font-size:1rem}table td .btn-sm,table td .btn-group-sm>.btn,table th .btn-sm,table th .btn-group-sm>.btn{line-height:1}table td p,table th p{margin-bottom:.5em}table td p:last-child,table th p:last-child{margin-bottom:0}table th.asc>a:after{content:"\f0140";font-family:Material Design Icons}table th.desc>a:after{content:"\f0143";font-family:Material Design Icons}table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}table.attr-table th{font-weight:400;width:25%}div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}@media (min-width: 992px){div.title-container{flex-direction:row}}div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}.controls{margin-bottom:.5rem}@media print{.controls{display:none!important}}.controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}@media (min-width: 992px){.controls .control-group{justify-content:flex-end}}.controls .control-group>*{margin:.25rem}.controls .control-group>*:first-child{margin-left:0}.controls .control-group>*:last-child{margin-right:0}.object-subtitle{display:block;font-size:.875rem;color:#6c757d}@media (min-width: 768px){.object-subtitle{display:inline-block}}.object-subtitle>span{display:block}.object-subtitle>span.separator{display:none}@media (min-width: 768px){.object-subtitle>span,.object-subtitle>span.separator{display:inline-block}}nav.search{z-index:999;justify-content:center;background-color:#f8f9fa}nav.search .search-container{display:flex;width:100%}@media (max-width: 991.98px){nav.search .search-container{display:none}}nav.search .input-group .search-obj-selected{border-color:#ced4da}nav.search .input-group .dropdown-toggle{color:#000;border-color:#ced4da;margin-left:0;font-weight:400;line-height:1.5;color:#212529;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}nav.search .input-group .dropdown-toggle:hover{color:#000;background-color:#eceff1;border-color:#d3d8de}.btn-check:focus+nav.search .input-group .dropdown-toggle,nav.search .input-group .dropdown-toggle:focus{color:#000;background-color:#eceff1;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+nav.search .input-group .dropdown-toggle,.btn-check:active+nav.search .input-group .dropdown-toggle,nav.search .input-group .dropdown-toggle:active,nav.search .input-group .dropdown-toggle.active,.show>nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#d3d8de}.btn-check:checked+nav.search .input-group .dropdown-toggle:focus,.btn-check:active+nav.search .input-group .dropdown-toggle:focus,nav.search .input-group .dropdown-toggle:active:focus,nav.search .input-group .dropdown-toggle.active:focus,.show>nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}nav.search .input-group .dropdown-toggle:disabled,nav.search .input-group .dropdown-toggle.disabled{color:#000;background-color:#e9ecef;border-color:#ced4da}nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}nav.search .input-group .dropdown-toggle:after{display:none}nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}nav.search .input-group .search-obj-selector .dropdown-item,nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}.quicksearch input[type=search]{border-radius:.375rem!important}.quicksearch button{margin-left:-32px!important;z-index:100!important;outline:none!important;border-radius:.375rem!important;transition:visibility 0s,opacity .2s linear}.quicksearch button :hover{opacity:50%;transition:visibility 0s,opacity .1s linear}main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}@media print{main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}.footer{background-color:#f8f9fa;padding:0}.footer .nav-link{padding:.5rem}@media (max-width: 767.98px){.footer{margin-bottom:8rem}}footer.login-footer{height:4rem;margin-top:auto}footer.login-footer .container-fluid,footer.login-footer .container-sm,footer.login-footer .container-md,footer.login-footer .container-lg,footer.login-footer .container-xl,footer.login-footer .container-xxl{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}h1.accordion-item-title,.accordion-item-title.h1,h2.accordion-item-title,.accordion-item-title.h2,h3.accordion-item-title,.accordion-item-title.h3,h4.accordion-item-title,.accordion-item-title.h4,h5.accordion-item-title,.accordion-item-title.h5,h6.accordion-item-title,.accordion-item-title.h6{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}.form-login{width:100%;max-width:330px;padding:15px}.form-login input:focus{z-index:1}.form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}.form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}.navbar{border-bottom:1px solid #ced4da}.navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}nav.nav.nav-pills .nav-item.nav-link:hover{color:#343a40;background-color:#cfe2ff}div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}div.content-container:focus,div.content-container:focus-visible{outline:0}div.content-container div.content{background-color:#f8f9fa;flex:1}@media (max-width: 991.98px){div.content-container{width:100%}}@media print{div.content-container{width:100%!important;margin-left:0!important}}@media (max-width: 768px){.sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}.tooltip{pointer-events:none}span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}.badge a{color:inherit}.btn{white-space:nowrap}.card{box-shadow:0 .125rem .25rem #00000013}.card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}.card .card-header+.card-body{padding-top:0}.card .card-body.small .form-control,.card .card-body.small .form-select{font-size:.875rem}.card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(0,0,0,.125);opacity:.25}@media print{.card{box-shadow:unset!important}}.form-floating{position:relative}.form-floating>.input-group>.form-control,.form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}.form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>.input-group>label{transition:none}}.form-floating>.input-group>.form-control::placeholder{color:transparent}.form-floating>.input-group>.form-control:focus,.form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-select,.form-floating>.choices>.choices__inner,.form-floating>.ss-main span.placeholder,.form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-control:focus~label,.form-floating>.input-group>.form-control:not(:placeholder-shown)~label,.form-floating>.input-group>.form-select~label,.form-floating>.choices~label,.form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}.form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-object-edit{margin:0 auto;max-width:800px}textarea.form-control[rows="10"]{height:18rem}textarea.markdown,textarea.form-control[name=csv]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.card:not(:only-of-type){margin-bottom:1rem}.stat-btn{min-width:3rem}nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}label.required{font-weight:700}label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:Material Design Icons;font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}table tbody tr.primary{background-color:#337ab726;border-color:#adb5bd}table tbody tr.secondary{background-color:#6c757d26;border-color:#adb5bd}table tbody tr.success{background-color:#19875426;border-color:#adb5bd}table tbody tr.info{background-color:#54d6f026;border-color:#adb5bd}table tbody tr.warning{background-color:#ffc10726;border-color:#adb5bd}table tbody tr.danger{background-color:#dc354526;border-color:#adb5bd}table tbody tr.light{background-color:#e9ecef26;border-color:#adb5bd}table tbody tr.dark{background-color:#343a4026;border-color:#adb5bd}table tbody tr.blue{background-color:#0d6efd26;border-color:#adb5bd}table tbody tr.indigo{background-color:#6610f226;border-color:#adb5bd}table tbody tr.purple{background-color:#6f42c126;border-color:#adb5bd}table tbody tr.pink{background-color:#d6338426;border-color:#adb5bd}table tbody tr.red{background-color:#dc354526;border-color:#adb5bd}table tbody tr.orange{background-color:#fd7e1426;border-color:#adb5bd}table tbody tr.yellow{background-color:#ffc10726;border-color:#adb5bd}table tbody tr.green{background-color:#19875426;border-color:#adb5bd}table tbody tr.teal{background-color:#20c99726;border-color:#adb5bd}table tbody tr.cyan{background-color:#0dcaf026;border-color:#adb5bd}table tbody tr.gray{background-color:#adb5bd26;border-color:#adb5bd}table tbody tr.black{background-color:#00000026;border-color:#adb5bd}table tbody tr.white{background-color:#ffffff26;border-color:#adb5bd}table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}table .table-badge-group .table-badge:not(.badge){padding:0 .65em}table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.25rem}pre.change-data{padding-right:0;padding-left:0}pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}pre.change-data>span.added{background-color:var(--nbx-change-added)}pre.change-data>span.removed{background-color:var(--nbx-change-removed)}pre.change-diff{border-color:transparent}pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}pre.change-diff.change-added{background-color:var(--nbx-change-added)}div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#6c757d}.table-controls{display:flex}@media (min-width: 768px){.table-controls{margin-top:0!important;margin-bottom:0!important}}.table-controls .table-configure{justify-content:flex-start}@media (min-width: 768px){.table-controls .table-configure{justify-content:flex-end}}.table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}.nav-tabs{background-color:#fff}.nav-tabs .nav-link:hover{border-bottom-color:transparent}.nav-tabs .nav-link.active{background-color:#f8f9fa;border-bottom-color:#f8f9fa;transform:translateY(1px)}.tab-content{display:flex;flex-direction:column;padding:1rem}@media print{.masonry{position:static!important;display:block!important;height:unset!important}}@media print{.masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}.record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}.record-depth span:only-of-type,.record-depth span:last-of-type{margin-right:.25rem}.popover.image-preview-popover{max-width:unset}.rendered-markdown table{width:100%}.rendered-markdown th{border-bottom:2px solid #dddddd;padding:8px}.rendered-markdown td{border-top:1px solid #dddddd;padding:8px}th[align=left]{text-align:left}th[align=center]{text-align:center}th[align=right]{text-align:right}.markdown-widget .nav-link{border-bottom:0}.markdown-widget .nav-link.active{background-color:var(--nbx-body-bg)}.markdown-widget .nav-tabs{background-color:var(--nbx-pre-bg)}td pre{margin-bottom:0}pre.block{padding:1rem;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}#django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}html[data-netbox-url-name=home] .content-container,html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}html[data-netbox-url-name=login] #django-messages{display:none} +@charset "UTF-8";:root{--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #337ab7;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #54d6f0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #e9ecef;--bs-dark: #343a40;--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-gray: #adb5bd;--bs-black: #000;--bs-white: #fff;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}*,*:before,*:after{box-sizing:border-box}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width: 1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + 0.9vw)}@media (min-width: 1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + 0.6vw)}@media (min-width: 1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + 0.3vw)}@media (min-width: 1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:800}small,.small{font-size:.875em}mark,.mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#212529;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.375rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media (min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled,.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer:before{content:"\2014\a0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}@media (min-width: 576px){.container-sm,.container{max-width:540px}}@media (min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media (min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media (min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media (min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}.row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}@media (min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media (min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: .25rem}.g-1,.gy-1{--bs-gutter-y: .25rem}.g-2,.gx-2{--bs-gutter-x: .5rem}.g-2,.gy-2{--bs-gutter-y: .5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media (min-width: 576px){.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: .25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: .25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: .5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: .5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media (min-width: 768px){.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: .25rem}.g-md-1,.gy-md-1{--bs-gutter-y: .25rem}.g-md-2,.gx-md-2{--bs-gutter-x: .5rem}.g-md-2,.gy-md-2{--bs-gutter-y: .5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media (min-width: 992px){.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: .25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: .25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: .5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: .5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media (min-width: 1200px){.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: .25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: .25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: .5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: .5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media (min-width: 1400px){.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: .25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: .25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: .5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: .5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}.table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}.table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}.table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}.table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}.table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}.table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:#adb5bd;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:#6c757d;background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control{padding:1rem .75rem}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#198754}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#198754}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#198754}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group .form-control:valid,.input-group .form-control.is-valid,.was-validated .input-group .form-select:valid,.input-group .form-select.is-valid{z-index:1}.was-validated .input-group .form-control:valid:focus,.input-group .form-control.is-valid:focus,.was-validated .input-group .form-select:valid:focus,.input-group .form-select.is-valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#dc3545}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#dc3545}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group .form-control:invalid,.input-group .form-control.is-invalid,.was-validated .input-group .form-select:invalid,.input-group .form-select.is-invalid{z-index:2}.was-validated .input-group .form-control:invalid:focus,.input-group .form-control.is-invalid:focus,.was-validated .input-group .form-select:invalid:focus,.input-group .form-select.is-invalid:focus{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.btn:disabled,.btn.disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-primary:hover{color:#fff;background-color:#2b689c;border-color:#296292}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#2b689c;border-color:#296292;box-shadow:0 0 0 .25rem #528ec280}.btn-check:checked+.btn-primary,.btn-check:active+.btn-primary,.btn-primary:active,.btn-primary.active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#296292;border-color:#265c89}.btn-check:checked+.btn-primary:focus,.btn-check:active+.btn-primary:focus,.btn-primary:active:focus,.btn-primary.active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #528ec280}.btn-primary:disabled,.btn-primary.disabled{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+.btn-secondary,.btn-check:active+.btn-secondary,.btn-secondary:active,.btn-secondary.active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+.btn-secondary:focus,.btn-check:active+.btn-secondary:focus,.btn-secondary:active:focus,.btn-secondary.active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}.btn-secondary:disabled,.btn-secondary.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-success{color:#fff;background-color:#198754;border-color:#198754}.btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-success,.btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+.btn-success,.btn-check:active+.btn-success,.btn-success:active,.btn-success.active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-success:focus,.btn-check:active+.btn-success:focus,.btn-success:active:focus,.btn-success.active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-success:disabled,.btn-success.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-info{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-info:hover{color:#000;background-color:#6edcf2;border-color:#65daf2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#6edcf2;border-color:#65daf2;box-shadow:0 0 0 .25rem #47b6cc80}.btn-check:checked+.btn-info,.btn-check:active+.btn-info,.btn-info:active,.btn-info.active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#76def3;border-color:#65daf2}.btn-check:checked+.btn-info:focus,.btn-check:active+.btn-info:focus,.btn-info:active:focus,.btn-info.active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #47b6cc80}.btn-info:disabled,.btn-info.disabled{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+.btn-warning,.btn-check:active+.btn-warning,.btn-warning:active,.btn-warning.active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-warning:focus,.btn-check:active+.btn-warning:focus,.btn-warning:active:focus,.btn-warning.active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-warning:disabled,.btn-warning.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+.btn-danger,.btn-check:active+.btn-danger,.btn-danger:active,.btn-danger.active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-danger:focus,.btn-check:active+.btn-danger:focus,.btn-danger:active:focus,.btn-danger.active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-danger:disabled,.btn-danger.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-light{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-light:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+.btn-light,.btn-check:active+.btn-light,.btn-light:active,.btn-light.active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+.btn-light:focus,.btn-check:active+.btn-light:focus,.btn-light:active:focus,.btn-light.active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}.btn-light:disabled,.btn-light.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#2c3136;border-color:#2a2e33}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#2c3136;border-color:#2a2e33;box-shadow:0 0 0 .25rem #52585d80}.btn-check:checked+.btn-dark,.btn-check:active+.btn-dark,.btn-dark:active,.btn-dark.active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#2a2e33;border-color:#272c30}.btn-check:checked+.btn-dark:focus,.btn-check:active+.btn-dark:focus,.btn-dark:active:focus,.btn-dark.active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52585d80}.btn-dark:disabled,.btn-dark.disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-blue{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-blue:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+.btn-blue,.btn-blue:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+.btn-blue,.btn-check:active+.btn-blue,.btn-blue:active,.btn-blue.active,.show>.btn-blue.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+.btn-blue:focus,.btn-check:active+.btn-blue:focus,.btn-blue:active:focus,.btn-blue.active:focus,.show>.btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}.btn-blue:disabled,.btn-blue.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-indigo{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-indigo:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+.btn-indigo,.btn-indigo:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+.btn-indigo,.btn-check:active+.btn-indigo,.btn-indigo:active,.btn-indigo.active,.show>.btn-indigo.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+.btn-indigo:focus,.btn-check:active+.btn-indigo:focus,.btn-indigo:active:focus,.btn-indigo.active:focus,.show>.btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}.btn-indigo:disabled,.btn-indigo.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-purple{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-purple:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+.btn-purple,.btn-purple:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+.btn-purple,.btn-check:active+.btn-purple,.btn-purple:active,.btn-purple.active,.show>.btn-purple.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+.btn-purple:focus,.btn-check:active+.btn-purple:focus,.btn-purple:active:focus,.btn-purple.active:focus,.show>.btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}.btn-purple:disabled,.btn-purple.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-pink{color:#fff;background-color:#d63384;border-color:#d63384}.btn-pink:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+.btn-pink,.btn-pink:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+.btn-pink,.btn-check:active+.btn-pink,.btn-pink:active,.btn-pink.active,.show>.btn-pink.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+.btn-pink:focus,.btn-check:active+.btn-pink:focus,.btn-pink:active:focus,.btn-pink.active:focus,.show>.btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}.btn-pink:disabled,.btn-pink.disabled{color:#fff;background-color:#d63384;border-color:#d63384}.btn-red{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-red:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+.btn-red,.btn-red:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+.btn-red,.btn-check:active+.btn-red,.btn-red:active,.btn-red.active,.show>.btn-red.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+.btn-red:focus,.btn-check:active+.btn-red:focus,.btn-red:active:focus,.btn-red.active:focus,.show>.btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}.btn-red:disabled,.btn-red.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-orange{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-orange:hover{color:#000;background-color:#fd9137;border-color:#fd8b2c}.btn-check:focus+.btn-orange,.btn-orange:focus{color:#000;background-color:#fd9137;border-color:#fd8b2c;box-shadow:0 0 0 .25rem #d76b1180}.btn-check:checked+.btn-orange,.btn-check:active+.btn-orange,.btn-orange:active,.btn-orange.active,.show>.btn-orange.dropdown-toggle{color:#000;background-color:#fd9843;border-color:#fd8b2c}.btn-check:checked+.btn-orange:focus,.btn-check:active+.btn-orange:focus,.btn-orange:active:focus,.btn-orange.active:focus,.show>.btn-orange.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d76b1180}.btn-orange:disabled,.btn-orange.disabled{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-yellow{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-yellow:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+.btn-yellow,.btn-yellow:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+.btn-yellow,.btn-check:active+.btn-yellow,.btn-yellow:active,.btn-yellow.active,.show>.btn-yellow.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+.btn-yellow:focus,.btn-check:active+.btn-yellow:focus,.btn-yellow:active:focus,.btn-yellow.active:focus,.show>.btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}.btn-yellow:disabled,.btn-yellow.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-green{color:#fff;background-color:#198754;border-color:#198754}.btn-green:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+.btn-green,.btn-green:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+.btn-green,.btn-check:active+.btn-green,.btn-green:active,.btn-green.active,.show>.btn-green.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+.btn-green:focus,.btn-check:active+.btn-green:focus,.btn-green:active:focus,.btn-green.active:focus,.show>.btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}.btn-green:disabled,.btn-green.disabled{color:#fff;background-color:#198754;border-color:#198754}.btn-teal{color:#000;background-color:#20c997;border-color:#20c997}.btn-teal:hover{color:#000;background-color:#41d1a7;border-color:#36cea1}.btn-check:focus+.btn-teal,.btn-teal:focus{color:#000;background-color:#41d1a7;border-color:#36cea1;box-shadow:0 0 0 .25rem #1bab8080}.btn-check:checked+.btn-teal,.btn-check:active+.btn-teal,.btn-teal:active,.btn-teal.active,.show>.btn-teal.dropdown-toggle{color:#000;background-color:#4dd4ac;border-color:#36cea1}.btn-check:checked+.btn-teal:focus,.btn-check:active+.btn-teal:focus,.btn-teal:active:focus,.btn-teal.active:focus,.show>.btn-teal.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #1bab8080}.btn-teal:disabled,.btn-teal.disabled{color:#000;background-color:#20c997;border-color:#20c997}.btn-cyan{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-cyan:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+.btn-cyan,.btn-cyan:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+.btn-cyan,.btn-check:active+.btn-cyan,.btn-cyan:active,.btn-cyan.active,.show>.btn-cyan.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+.btn-cyan:focus,.btn-check:active+.btn-cyan:focus,.btn-cyan:active:focus,.btn-cyan.active:focus,.show>.btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}.btn-cyan:disabled,.btn-cyan.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-gray{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-gray:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+.btn-gray,.btn-gray:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+.btn-gray,.btn-check:active+.btn-gray,.btn-gray:active,.btn-gray.active,.show>.btn-gray.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+.btn-gray:focus,.btn-check:active+.btn-gray:focus,.btn-gray:active:focus,.btn-gray.active:focus,.show>.btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}.btn-gray:disabled,.btn-gray.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-black,.btn-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+.btn-black,.btn-black:focus{color:#fff;background-color:#000;border-color:#000;box-shadow:0 0 0 .25rem #26262680}.btn-check:checked+.btn-black,.btn-check:active+.btn-black,.btn-black:active,.btn-black.active,.show>.btn-black.dropdown-toggle{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+.btn-black:focus,.btn-check:active+.btn-black:focus,.btn-black:active:focus,.btn-black.active:focus,.show>.btn-black.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #26262680}.btn-black:disabled,.btn-black.disabled{color:#fff;background-color:#000;border-color:#000}.btn-white,.btn-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+.btn-white,.btn-white:focus{color:#000;background-color:#fff;border-color:#fff;box-shadow:0 0 0 .25rem #d9d9d980}.btn-check:checked+.btn-white,.btn-check:active+.btn-white,.btn-white:active,.btn-white.active,.show>.btn-white.dropdown-toggle{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+.btn-white:focus,.btn-check:active+.btn-white:focus,.btn-white:active:focus,.btn-white.active:focus,.show>.btn-white.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9d9d980}.btn-white:disabled,.btn-white.disabled{color:#000;background-color:#fff;border-color:#fff}.btn-outline-primary{color:#337ab7;border-color:#337ab7}.btn-outline-primary:hover{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-check:checked+.btn-outline-primary,.btn-check:active+.btn-outline-primary,.btn-outline-primary:active,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:checked+.btn-outline-primary:focus,.btn-check:active+.btn-outline-primary:focus,.btn-outline-primary:active:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-outline-primary:disabled,.btn-outline-primary.disabled{color:#337ab7;background-color:transparent}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+.btn-outline-secondary,.btn-check:active+.btn-outline-secondary,.btn-outline-secondary:active,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+.btn-outline-secondary:focus,.btn-check:active+.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-outline-secondary:disabled,.btn-outline-secondary.disabled{color:#6c757d;background-color:transparent}.btn-outline-success{color:#198754;border-color:#198754}.btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+.btn-outline-success,.btn-check:active+.btn-outline-success,.btn-outline-success:active,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-success:focus,.btn-check:active+.btn-outline-success:focus,.btn-outline-success:active:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-success:disabled,.btn-outline-success.disabled{color:#198754;background-color:transparent}.btn-outline-info{color:#54d6f0;border-color:#54d6f0}.btn-outline-info:hover{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem #54d6f080}.btn-check:checked+.btn-outline-info,.btn-check:active+.btn-outline-info,.btn-outline-info:active,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-check:checked+.btn-outline-info:focus,.btn-check:active+.btn-outline-info:focus,.btn-outline-info:active:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #54d6f080}.btn-outline-info:disabled,.btn-outline-info.disabled{color:#54d6f0;background-color:transparent}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+.btn-outline-warning,.btn-check:active+.btn-outline-warning,.btn-outline-warning:active,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-warning:focus,.btn-check:active+.btn-outline-warning:focus,.btn-outline-warning:active:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-warning:disabled,.btn-outline-warning.disabled{color:#ffc107;background-color:transparent}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+.btn-outline-danger,.btn-check:active+.btn-outline-danger,.btn-outline-danger:active,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-danger:focus,.btn-check:active+.btn-outline-danger:focus,.btn-outline-danger:active:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-danger:disabled,.btn-outline-danger.disabled{color:#dc3545;background-color:transparent}.btn-outline-light{color:#e9ecef;border-color:#e9ecef}.btn-outline-light:hover{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-check:checked+.btn-outline-light,.btn-check:active+.btn-outline-light,.btn-outline-light:active,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:checked+.btn-outline-light:focus,.btn-check:active+.btn-outline-light:focus,.btn-outline-light:active:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-outline-light:disabled,.btn-outline-light.disabled{color:#e9ecef;background-color:transparent}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-check:checked+.btn-outline-dark,.btn-check:active+.btn-outline-dark,.btn-outline-dark:active,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:checked+.btn-outline-dark:focus,.btn-check:active+.btn-outline-dark:focus,.btn-outline-dark:active:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-outline-dark:disabled,.btn-outline-dark.disabled{color:#343a40;background-color:transparent}.btn-outline-blue{color:#0d6efd;border-color:#0d6efd}.btn-outline-blue:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+.btn-outline-blue,.btn-outline-blue:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+.btn-outline-blue,.btn-check:active+.btn-outline-blue,.btn-outline-blue:active,.btn-outline-blue.active,.btn-outline-blue.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+.btn-outline-blue:focus,.btn-check:active+.btn-outline-blue:focus,.btn-outline-blue:active:focus,.btn-outline-blue.active:focus,.btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-outline-blue:disabled,.btn-outline-blue.disabled{color:#0d6efd;background-color:transparent}.btn-outline-indigo{color:#6610f2;border-color:#6610f2}.btn-outline-indigo:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+.btn-outline-indigo,.btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+.btn-outline-indigo,.btn-check:active+.btn-outline-indigo,.btn-outline-indigo:active,.btn-outline-indigo.active,.btn-outline-indigo.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+.btn-outline-indigo:focus,.btn-check:active+.btn-outline-indigo:focus,.btn-outline-indigo:active:focus,.btn-outline-indigo.active:focus,.btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-outline-indigo:disabled,.btn-outline-indigo.disabled{color:#6610f2;background-color:transparent}.btn-outline-purple{color:#6f42c1;border-color:#6f42c1}.btn-outline-purple:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+.btn-outline-purple,.btn-outline-purple:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+.btn-outline-purple,.btn-check:active+.btn-outline-purple,.btn-outline-purple:active,.btn-outline-purple.active,.btn-outline-purple.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+.btn-outline-purple:focus,.btn-check:active+.btn-outline-purple:focus,.btn-outline-purple:active:focus,.btn-outline-purple.active:focus,.btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-outline-purple:disabled,.btn-outline-purple.disabled{color:#6f42c1;background-color:transparent}.btn-outline-pink{color:#d63384;border-color:#d63384}.btn-outline-pink:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+.btn-outline-pink,.btn-outline-pink:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+.btn-outline-pink,.btn-check:active+.btn-outline-pink,.btn-outline-pink:active,.btn-outline-pink.active,.btn-outline-pink.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+.btn-outline-pink:focus,.btn-check:active+.btn-outline-pink:focus,.btn-outline-pink:active:focus,.btn-outline-pink.active:focus,.btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-outline-pink:disabled,.btn-outline-pink.disabled{color:#d63384;background-color:transparent}.btn-outline-red{color:#dc3545;border-color:#dc3545}.btn-outline-red:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+.btn-outline-red,.btn-outline-red:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+.btn-outline-red,.btn-check:active+.btn-outline-red,.btn-outline-red:active,.btn-outline-red.active,.btn-outline-red.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+.btn-outline-red:focus,.btn-check:active+.btn-outline-red:focus,.btn-outline-red:active:focus,.btn-outline-red.active:focus,.btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-outline-red:disabled,.btn-outline-red.disabled{color:#dc3545;background-color:transparent}.btn-outline-orange{color:#fd7e14;border-color:#fd7e14}.btn-outline-orange:hover{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-check:focus+.btn-outline-orange,.btn-outline-orange:focus{box-shadow:0 0 0 .25rem #fd7e1480}.btn-check:checked+.btn-outline-orange,.btn-check:active+.btn-outline-orange,.btn-outline-orange:active,.btn-outline-orange.active,.btn-outline-orange.dropdown-toggle.show{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-check:checked+.btn-outline-orange:focus,.btn-check:active+.btn-outline-orange:focus,.btn-outline-orange:active:focus,.btn-outline-orange.active:focus,.btn-outline-orange.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #fd7e1480}.btn-outline-orange:disabled,.btn-outline-orange.disabled{color:#fd7e14;background-color:transparent}.btn-outline-yellow{color:#ffc107;border-color:#ffc107}.btn-outline-yellow:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+.btn-outline-yellow,.btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+.btn-outline-yellow,.btn-check:active+.btn-outline-yellow,.btn-outline-yellow:active,.btn-outline-yellow.active,.btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+.btn-outline-yellow:focus,.btn-check:active+.btn-outline-yellow:focus,.btn-outline-yellow:active:focus,.btn-outline-yellow.active:focus,.btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-outline-yellow:disabled,.btn-outline-yellow.disabled{color:#ffc107;background-color:transparent}.btn-outline-green{color:#198754;border-color:#198754}.btn-outline-green:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+.btn-outline-green,.btn-outline-green:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+.btn-outline-green,.btn-check:active+.btn-outline-green,.btn-outline-green:active,.btn-outline-green.active,.btn-outline-green.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+.btn-outline-green:focus,.btn-check:active+.btn-outline-green:focus,.btn-outline-green:active:focus,.btn-outline-green.active:focus,.btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}.btn-outline-green:disabled,.btn-outline-green.disabled{color:#198754;background-color:transparent}.btn-outline-teal{color:#20c997;border-color:#20c997}.btn-outline-teal:hover{color:#000;background-color:#20c997;border-color:#20c997}.btn-check:focus+.btn-outline-teal,.btn-outline-teal:focus{box-shadow:0 0 0 .25rem #20c99780}.btn-check:checked+.btn-outline-teal,.btn-check:active+.btn-outline-teal,.btn-outline-teal:active,.btn-outline-teal.active,.btn-outline-teal.dropdown-toggle.show{color:#000;background-color:#20c997;border-color:#20c997}.btn-check:checked+.btn-outline-teal:focus,.btn-check:active+.btn-outline-teal:focus,.btn-outline-teal:active:focus,.btn-outline-teal.active:focus,.btn-outline-teal.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #20c99780}.btn-outline-teal:disabled,.btn-outline-teal.disabled{color:#20c997;background-color:transparent}.btn-outline-cyan{color:#0dcaf0;border-color:#0dcaf0}.btn-outline-cyan:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+.btn-outline-cyan,.btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+.btn-outline-cyan,.btn-check:active+.btn-outline-cyan,.btn-outline-cyan:active,.btn-outline-cyan.active,.btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+.btn-outline-cyan:focus,.btn-check:active+.btn-outline-cyan:focus,.btn-outline-cyan:active:focus,.btn-outline-cyan.active:focus,.btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-outline-cyan:disabled,.btn-outline-cyan.disabled{color:#0dcaf0;background-color:transparent}.btn-outline-gray{color:#adb5bd;border-color:#adb5bd}.btn-outline-gray:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+.btn-outline-gray,.btn-outline-gray:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+.btn-outline-gray,.btn-check:active+.btn-outline-gray,.btn-outline-gray:active,.btn-outline-gray.active,.btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+.btn-outline-gray:focus,.btn-check:active+.btn-outline-gray:focus,.btn-outline-gray:active:focus,.btn-outline-gray.active:focus,.btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-outline-gray:disabled,.btn-outline-gray.disabled{color:#adb5bd;background-color:transparent}.btn-outline-black{color:#000;border-color:#000}.btn-outline-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+.btn-outline-black,.btn-outline-black:focus{box-shadow:0 0 0 .25rem #00000080}.btn-check:checked+.btn-outline-black,.btn-check:active+.btn-outline-black,.btn-outline-black:active,.btn-outline-black.active,.btn-outline-black.dropdown-toggle.show{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+.btn-outline-black:focus,.btn-check:active+.btn-outline-black:focus,.btn-outline-black:active:focus,.btn-outline-black.active:focus,.btn-outline-black.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #00000080}.btn-outline-black:disabled,.btn-outline-black.disabled{color:#000;background-color:transparent}.btn-outline-white{color:#fff;border-color:#fff}.btn-outline-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+.btn-outline-white,.btn-outline-white:focus{box-shadow:0 0 0 .25rem #ffffff80}.btn-check:checked+.btn-outline-white,.btn-check:active+.btn-outline-white,.btn-outline-white:active,.btn-outline-white.active,.btn-outline-white.dropdown-toggle.show{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+.btn-outline-white:focus,.btn-check:active+.btn-outline-white:focus,.btn-outline-white:active:focus,.btn-outline-white.active:focus,.btn-outline-white.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffffff80}.btn-outline-white:disabled,.btn-outline-white.disabled{color:#fff;background-color:transparent}.btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}.btn-link:hover{color:#0a58ca}.btn-link:disabled,.btn-link.disabled{color:#6c757d}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropend,.dropdown,.dropstart{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#1e2125;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}.dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}.dropdown-menu-dark .dropdown-item{color:#dee2e6}.dropdown-menu-dark .dropdown-item:hover,.dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}.dropdown-menu-dark .dropdown-divider{border-color:#00000026}.dropdown-menu-dark .dropdown-item-text{color:#dee2e6}.dropdown-menu-dark .dropdown-header{color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:#0a58ca}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:none;border:0;border-radius:.375rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media (min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:#000000e6}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:#000000e6}.navbar-light .navbar-nav .nav-link{color:#f8f9fa}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:#000000b3}.navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .nav-link.active{color:#000000e6}.navbar-light .navbar-toggler{color:#f8f9fa;border-color:#0000001a}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:#f8f9fa}.navbar-light .navbar-text a,.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:#000000e6}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:#ffffff8c}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}.navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:#ffffff8c}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.375rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;color:#343a40;background-color:"unset";border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(0.375rem - 1px) calc(0.375rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;color:#343a40;background-color:"unset";border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(0.375rem - 1px) calc(0.375rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;inset:0;padding:1rem;border-radius:calc(0.375rem - 1px)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}.card-group>.card{margin-bottom:.75rem}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#343a40;background-color:#cfe2ff;box-shadow:inset 0 -1px #dee2e6}.accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}.accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion: reduce){.accordion-button:after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.accordion-header{margin-bottom:0}.accordion-item{background-color:transparent;border:1px solid #dee2e6}.accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E"))}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#1f496e;background-color:#d6e4f1;border-color:#c2d7e9}.alert-primary .alert-link{color:#193a58}.alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{color:#225660;background-color:#ddf7fc;border-color:#ccf3fb}.alert-info .alert-link{color:#1b454d}.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{color:#5d5e60;background-color:#fbfbfc;border-color:#f8f9fa}.alert-light .alert-link{color:#4a4b4d}.alert-dark{color:#1f2326;background-color:#d6d8d9;border-color:#c2c4c6}.alert-dark .alert-link{color:#191c1e}.alert-blue{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}.alert-blue .alert-link{color:#06357a}.alert-indigo{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}.alert-indigo .alert-link{color:#310874}.alert-purple{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}.alert-purple .alert-link{color:#36205d}.alert-pink{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}.alert-pink .alert-link{color:#66193f}.alert-red{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}.alert-red .alert-link{color:#6a1a21}.alert-orange{color:#984c0c;background-color:#ffe5d0;border-color:#fed8b9}.alert-orange .alert-link{color:#7a3d0a}.alert-yellow{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.alert-yellow .alert-link{color:#523e02}.alert-green{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}.alert-green .alert-link{color:#0c4128}.alert-teal{color:#13795b;background-color:#d2f4ea;border-color:#bcefe0}.alert-teal .alert-link{color:#0f6149}.alert-cyan{color:#055160;background-color:#cff4fc;border-color:#b6effb}.alert-cyan .alert-link{color:#04414d}.alert-gray{color:#686d71;background-color:#eff0f2;border-color:#e6e9eb}.alert-gray .alert-link{color:#53575a}.alert-black{color:#000;background-color:#ccc;border-color:#b3b3b3}.alert-black .alert-link{color:#000}.alert-white{color:#666;background-color:#fff;border-color:#fff}.alert-white .alert-link{color:#525252}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.375rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#495057;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#adb5bd;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#1f496e;background-color:#d6e4f1}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#1f496e;background-color:#c1cdd9}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1f496e;border-color:#1f496e}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#225660;background-color:#ddf7fc}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#225660;background-color:#c7dee3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#225660;border-color:#225660}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#5d5e60;background-color:#fbfbfc}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#5d5e60;background-color:#e2e2e3}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#5d5e60;border-color:#5d5e60}.list-group-item-dark{color:#1f2326;background-color:#d6d8d9}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1f2326;background-color:#c1c2c3}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1f2326;border-color:#1f2326}.list-group-item-blue{color:#084298;background-color:#cfe2ff}.list-group-item-blue.list-group-item-action:hover,.list-group-item-blue.list-group-item-action:focus{color:#084298;background-color:#bacbe6}.list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-indigo{color:#3d0a91;background-color:#e0cffc}.list-group-item-indigo.list-group-item-action:hover,.list-group-item-indigo.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}.list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}.list-group-item-purple{color:#432874;background-color:#e2d9f3}.list-group-item-purple.list-group-item-action:hover,.list-group-item-purple.list-group-item-action:focus{color:#432874;background-color:#cbc3db}.list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}.list-group-item-pink{color:#801f4f;background-color:#f7d6e6}.list-group-item-pink.list-group-item-action:hover,.list-group-item-pink.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}.list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}.list-group-item-red{color:#842029;background-color:#f8d7da}.list-group-item-red.list-group-item-action:hover,.list-group-item-red.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}.list-group-item-red.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-orange{color:#984c0c;background-color:#ffe5d0}.list-group-item-orange.list-group-item-action:hover,.list-group-item-orange.list-group-item-action:focus{color:#984c0c;background-color:#e6cebb}.list-group-item-orange.list-group-item-action.active{color:#fff;background-color:#984c0c;border-color:#984c0c}.list-group-item-yellow{color:#664d03;background-color:#fff3cd}.list-group-item-yellow.list-group-item-action:hover,.list-group-item-yellow.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}.list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-green{color:#0f5132;background-color:#d1e7dd}.list-group-item-green.list-group-item-action:hover,.list-group-item-green.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}.list-group-item-green.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-teal{color:#13795b;background-color:#d2f4ea}.list-group-item-teal.list-group-item-action:hover,.list-group-item-teal.list-group-item-action:focus{color:#13795b;background-color:#bddcd3}.list-group-item-teal.list-group-item-action.active{color:#fff;background-color:#13795b;border-color:#13795b}.list-group-item-cyan{color:#055160;background-color:#cff4fc}.list-group-item-cyan.list-group-item-action:hover,.list-group-item-cyan.list-group-item-action:focus{color:#055160;background-color:#badce3}.list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-gray{color:#686d71;background-color:#eff0f2}.list-group-item-gray.list-group-item-action:hover,.list-group-item-gray.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}.list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}.list-group-item-black{color:#000;background-color:#ccc}.list-group-item-black.list-group-item-action:hover,.list-group-item-black.list-group-item-action:focus{color:#000;background-color:#b8b8b8}.list-group-item-black.list-group-item-action.active{color:#fff;background-color:#000;border-color:#000}.list-group-item-white{color:#666;background-color:#fff}.list-group-item-white.list-group-item-action:hover,.list-group-item-white.list-group-item-action:focus{color:#666;background-color:#e6e6e6}.list-group-item-white.list-group-item-action.active{color:#fff;background-color:#666;border-color:#666}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}.toast:not(.showing):not(.show){opacity:0}.toast.hide{display:none}.toast-container{width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.75rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}.modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(0.75rem - 1px);border-bottom-left-radius:calc(0.75rem - 1px)}.modal-footer>*{margin:.25rem}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[data-popper-placement^=top]{padding:.4rem 0}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:0}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-end,.bs-tooltip-auto[data-popper-placement^=right]{padding:0 .4rem}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[data-popper-placement^=bottom]{padding:.4rem 0}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:0}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-start,.bs-tooltip-auto[data-popper-placement^=left]{padding:0 .4rem}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.375rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow:before,.popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-0.5rem - 1px)}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-0.5rem - 1px)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translate(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translate(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.clearfix:after{display:block;clear:both;content:""}.link-primary{color:#337ab7}.link-primary:hover,.link-primary:focus{color:#296292}.link-secondary{color:#6c757d}.link-secondary:hover,.link-secondary:focus{color:#565e64}.link-success{color:#198754}.link-success:hover,.link-success:focus{color:#146c43}.link-info{color:#54d6f0}.link-info:hover,.link-info:focus{color:#76def3}.link-warning{color:#ffc107}.link-warning:hover,.link-warning:focus{color:#ffcd39}.link-danger{color:#dc3545}.link-danger:hover,.link-danger:focus{color:#b02a37}.link-light{color:#e9ecef}.link-light:hover,.link-light:focus{color:#edf0f2}.link-dark{color:#343a40}.link-dark:hover,.link-dark:focus{color:#2a2e33}.link-blue{color:#0d6efd}.link-blue:hover,.link-blue:focus{color:#0a58ca}.link-indigo{color:#6610f2}.link-indigo:hover,.link-indigo:focus{color:#520dc2}.link-purple{color:#6f42c1}.link-purple:hover,.link-purple:focus{color:#59359a}.link-pink{color:#d63384}.link-pink:hover,.link-pink:focus{color:#ab296a}.link-red{color:#dc3545}.link-red:hover,.link-red:focus{color:#b02a37}.link-orange{color:#fd7e14}.link-orange:hover,.link-orange:focus{color:#fd9843}.link-yellow{color:#ffc107}.link-yellow:hover,.link-yellow:focus{color:#ffcd39}.link-green{color:#198754}.link-green:hover,.link-green:focus{color:#146c43}.link-teal{color:#20c997}.link-teal:hover,.link-teal:focus{color:#4dd4ac}.link-cyan{color:#0dcaf0}.link-cyan:hover,.link-cyan:focus{color:#3dd5f3}.link-gray{color:#adb5bd}.link-gray:hover,.link-gray:focus{color:#bdc4ca}.link-black{color:#000}.link-black:hover,.link-black:focus{color:#000}.link-white{color:#fff}.link-white:hover,.link-white:focus{color:#fff}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media (min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;inset:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem #00000026!important}.shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}.shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translate(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid #dee2e6!important}.border-0{border:0!important}.border-top{border-top:1px solid #dee2e6!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid #dee2e6!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid #dee2e6!important}.border-start-0{border-left:0!important}.border-primary{border-color:#337ab7!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#198754!important}.border-info{border-color:#54d6f0!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#e9ecef!important}.border-dark{border-color:#343a40!important}.border-blue{border-color:#0d6efd!important}.border-indigo{border-color:#6610f2!important}.border-purple{border-color:#6f42c1!important}.border-pink{border-color:#d63384!important}.border-red{border-color:#dc3545!important}.border-orange{border-color:#fd7e14!important}.border-yellow{border-color:#ffc107!important}.border-green{border-color:#198754!important}.border-teal{border-color:#20c997!important}.border-cyan{border-color:#0dcaf0!important}.border-gray{border-color:#adb5bd!important}.border-black{border-color:#000!important}.border-white{border-color:#fff!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + 0.9vw)!important}.fs-3{font-size:calc(1.3rem + 0.6vw)!important}.fs-4{font-size:calc(1.275rem + 0.3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:200!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:800!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:1.75!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:#337ab7!important}.text-secondary{color:#6c757d!important}.text-success{color:#198754!important}.text-info{color:#54d6f0!important}.text-warning{color:#ffc107!important}.text-danger{color:#dc3545!important}.text-light{color:#e9ecef!important}.text-dark{color:#343a40!important}.text-blue{color:#0d6efd!important}.text-indigo{color:#6610f2!important}.text-purple{color:#6f42c1!important}.text-pink{color:#d63384!important}.text-red{color:#dc3545!important}.text-orange{color:#fd7e14!important}.text-yellow{color:#ffc107!important}.text-green{color:#198754!important}.text-teal{color:#20c997!important}.text-cyan{color:#0dcaf0!important}.text-gray{color:#adb5bd!important}.text-black{color:#000!important}.text-white{color:#fff!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:#00000080!important}.text-white-50{color:#ffffff80!important}.text-reset{color:inherit!important}.bg-primary{background-color:#337ab7!important}.bg-secondary{background-color:#6c757d!important}.bg-success{background-color:#198754!important}.bg-info{background-color:#54d6f0!important}.bg-warning{background-color:#ffc107!important}.bg-danger{background-color:#dc3545!important}.bg-light{background-color:#e9ecef!important}.bg-dark{background-color:#343a40!important}.bg-blue{background-color:#0d6efd!important}.bg-indigo{background-color:#6610f2!important}.bg-purple{background-color:#6f42c1!important}.bg-pink{background-color:#d63384!important}.bg-red{background-color:#dc3545!important}.bg-orange{background-color:#fd7e14!important}.bg-yellow{background-color:#ffc107!important}.bg-green{background-color:#198754!important}.bg-teal{background-color:#20c997!important}.bg-cyan{background-color:#0dcaf0!important}.bg-gray{background-color:#adb5bd!important}.bg-black{background-color:#000!important}.bg-white,.bg-body{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.375rem!important}.rounded-0{border-radius:0!important}.rounded-1,.rounded-2{border-radius:.375rem!important}.rounded-3{border-radius:.75rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}.rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}.rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}.rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width: 576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width: 768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width: 992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width: 1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width: 1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width: 1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}:root{--nbx-select-content-bg: #fff;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}:root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}.ss-main{position:relative;display:inline-block;user-select:none;color:#212529;width:100%}.ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + 0.75rem + 2px);padding:.75rem;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-single-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#6c757d}.ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:700}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}.ss-main .ss-single-selected .ss-arrow span{border:solid #212529;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}.ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}.ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + 0.75rem + 2px);width:100%;padding:0 0 0 3px;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-multi-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#212529}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}.ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#337ab7;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#212529;position:relative;height:10px;width:2px;transition:transform .2s}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#212529;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #ced4da;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}.ss-content .ss-search.ss-hide,.ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}.ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}.ss-content .ss-search input::placeholder{color:#adb5bd;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #337ab7}.ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:700;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #ced4da;border-radius:.375rem;box-sizing:border-box}.ss-content .ss-addable{padding-top:0}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:700}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#337ab7}.ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option:hover,.ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#337ab7}.ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#6c757d;background-color:#fff}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#212529;background-color:#337ab71a}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}.ss-main{color:#212529}.ss-main.is-invalid .ss-single-selected,.ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}.ss-main.is-valid .ss-single-selected,.ss-main.is-valid .ss-multi-selected{border-color:#198754}.ss-main .ss-single-selected,.ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#fff;border:1px solid #ced4da}.ss-main .ss-single-selected[disabled],.ss-main .ss-multi-selected[disabled]{color:#6c757d;background-color:#e9ecef}.ss-main div.ss-multi-selected .ss-values .ss-disabled,.ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}.ss-main .ss-single-selected span.ss-arrow span.arrow-down,.ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#6c757d}.ss-main .ss-single-selected .placeholder .depth{display:none}.ss-main .ss-single-selected span.placeholder>*,.ss-main .ss-single-selected span.placeholder{line-height:1.5}.ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}.ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}.ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}.ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}.ss-main .ss-multi-selected .ss-add{margin:0 .75rem}.ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#212529;background-color:var(--nbx-select-option-selected-bg)}.ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}.ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}.ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#6c757d}.ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}.ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}.ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}.ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}.ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}.ss-main .ss-content .ss-search{padding-right:.5rem}.ss-main .ss-content .ss-search button{margin-left:.75rem}.ss-main .ss-content .ss-search input[type=search]{color:#212529;background-color:#fff;border:1px solid #ced4da}.ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}.sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #ced4da;transition:all .1s ease-in-out}@media (max-width: 991.98px){.sidenav{transform:translate(-3rem)}.sidenav+.content-container[class]{margin-left:0}.sidenav .profile-button-container[class]{display:block}}.sidenav .profile-button-container{display:none;padding:.5rem 1rem}.sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}.sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}.sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}.sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}@media (min-width: 768px){.sidenav .sidenav-inner{padding-right:0;padding-left:0}}.sidenav .sidenav-brand-img,.sidenav .sidenav-brand>img{max-width:100%;max-height:15rem}.sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}.sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}.sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}.sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}.sidenav .sidenav-collapse>*{min-width:100%}@media (min-width: 768px){.sidenav .sidenav-collapse{margin-right:0;margin-left:0}}.sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}.sidenav .nav{margin-bottom:.5rem}.sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}.sidenav .nav .nav-item.no-buttons{padding-right:.5rem}.sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:Material Design Icons;font-style:normal;font-weight:700;font-variant:normal;color:#6c757d;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#343a40}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#337ab7;transform:rotate(90deg)}.sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}.sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}.sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}.sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition-duration:0ms}.sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}.sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}.sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:22.5px;text-align:center}.sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}@media (min-width: 1200px){body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}.g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}body[data-sidenav-show] .sidenav,body[data-sidenav-pinned] .sidenav{max-width:16rem}body[data-sidenav-show] .sidenav .sidenav-brand,body[data-sidenav-show] .sidenav .navbar-heading,body[data-sidenav-pinned] .sidenav .sidenav-brand,body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}body[data-sidenav-show] .sidenav .sidenav-brand,body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}body[data-sidenav-show] .sidenav .sidenav-brand-icon,body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}@media (max-width: 991.98px){body[data-sidenav-show] .sidenav,body[data-sidenav-pinned] .sidenav{transform:translate(0)}}body[data-sidenav-hide] .sidenav .sidenav-header,body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}body[data-sidenav-hide] .sidenav .sidenav-brand,body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}body[data-sidenav-hide] .sidenav .sidenav-brand-icon,body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}body[data-sidenav-hide] .sidenav .sidenav-toggle,body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}body[data-sidenav-hide] .sidenav .nav-item .collapse,body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}body[data-sidenav-hide] .sidenav .nav-link-text,body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}body[data-sidenav-show] .sidenav .sidenav-brand{display:block}body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}@media (min-width: 992px){body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}.simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}.simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}.simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}.simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}pre{white-space:pre}small,.small{font-size:smaller!important}a[type=button]{-webkit-appearance:unset!important}*[data-href]{cursor:pointer}.form-control:not([type=file]){font-size:inherit}.badge{font-size:.75rem}input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none!important}mark,.mark{padding-left:0;padding-right:0}.text-xs{font-size:.75rem!important;line-height:1.25!important}.border-input{border:1px solid #ced4da!important}.ws-nowrap{white-space:nowrap!important}table tr .vertical-align,table td .vertical-align{vertical-align:middle}@media print{.noprint{display:none!important;visibility:hidden!important}}.printonly{display:none!important;visibility:hidden!important}@media print{.printonly{display:block!important;visibility:visible!important}}.hide-last-child :last-child{visibility:hidden;opacity:0}:root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #9cc8f8;--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #e9ecef;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #337ab7;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}:root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}.bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f496e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-primary{color:#337ab7}.btn.btn-ghost-primary:hover{background-color:#337ab71f}.alert.alert-primary a:not(.btn),.table-primary a:not(.btn){font-weight:700;color:#1f496e}.alert.alert-primary .btn:not([class*=btn-outline]),.table-primary .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-primary a:not(.btn){font-weight:700;color:#adcae2}.badge.bg-primary,.toast.bg-primary,.toast-header.bg-primary,.progress-bar.bg-primary{color:#fff}.bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-secondary{color:#6c757d}.btn.btn-ghost-secondary:hover{background-color:#6c757d1f}.alert.alert-secondary a:not(.btn),.table-secondary a:not(.btn){font-weight:700;color:#41464b}.alert.alert-secondary .btn:not([class*=btn-outline]),.table-secondary .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-secondary a:not(.btn){font-weight:700;color:#c4c8cb}.badge.bg-secondary,.toast.bg-secondary,.toast-header.bg-secondary,.progress-bar.bg-secondary{color:#fff}.bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-success{color:#198754}.btn.btn-ghost-success:hover{background-color:#1987541f}.alert.alert-success a:not(.btn),.table-success a:not(.btn){font-weight:700;color:#0f5132}.alert.alert-success .btn:not([class*=btn-outline]),.table-success .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-success a:not(.btn){font-weight:700;color:#a3cfbb}.badge.bg-success,.toast.bg-success,.toast-header.bg-success,.progress-bar.bg-success{color:#fff}.bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23225660'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-info{color:#54d6f0}.btn.btn-ghost-info:hover{background-color:#54d6f01f}.alert.alert-info a:not(.btn),.table-info a:not(.btn){font-weight:700;color:#225660}.alert.alert-info .btn:not([class*=btn-outline]),.table-info .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-info a:not(.btn){font-weight:700;color:#225660}.badge.bg-info,.toast.bg-info,.toast-header.bg-info,.progress-bar.bg-info{color:#000}.bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-warning{color:#ffc107}.btn.btn-ghost-warning:hover{background-color:#ffc1071f}.alert.alert-warning a:not(.btn),.table-warning a:not(.btn){font-weight:700;color:#664d03}.alert.alert-warning .btn:not([class*=btn-outline]),.table-warning .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-warning a:not(.btn){font-weight:700;color:#664d03}.badge.bg-warning,.toast.bg-warning,.toast-header.bg-warning,.progress-bar.bg-warning{color:#000}.bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-danger{color:#dc3545}.btn.btn-ghost-danger:hover{background-color:#dc35451f}.alert.alert-danger a:not(.btn),.table-danger a:not(.btn){font-weight:700;color:#842029}.alert.alert-danger .btn:not([class*=btn-outline]),.table-danger .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-danger a:not(.btn){font-weight:700;color:#f1aeb5}.badge.bg-danger,.toast.bg-danger,.toast-header.bg-danger,.progress-bar.bg-danger{color:#fff}.bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235d5e60'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-light{color:#e9ecef}.btn.btn-ghost-light:hover{background-color:#e9ecef1f}.alert.alert-light a:not(.btn),.table-light a:not(.btn){font-weight:700;color:#5d5e60}.alert.alert-light .btn:not([class*=btn-outline]),.table-light .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-light a:not(.btn){font-weight:700;color:#5d5e60}.badge.bg-light,.toast.bg-light,.toast-header.bg-light,.progress-bar.bg-light{color:#000}.bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f2326'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-dark{color:#343a40}.btn.btn-ghost-dark:hover{background-color:#343a401f}.alert.alert-dark a:not(.btn),.table-dark a:not(.btn){font-weight:700;color:#1f2326}.alert.alert-dark .btn:not([class*=btn-outline]),.table-dark .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-dark a:not(.btn){font-weight:700;color:#aeb0b3}.badge.bg-dark,.toast.bg-dark,.toast-header.bg-dark,.progress-bar.bg-dark{color:#fff}.bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-blue{color:#0d6efd}.btn.btn-ghost-blue:hover{background-color:#0d6efd1f}.alert.alert-blue a:not(.btn),.table-blue a:not(.btn){font-weight:700;color:#084298}.alert.alert-blue .btn:not([class*=btn-outline]),.table-blue .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-blue a:not(.btn){font-weight:700;color:#9ec5fe}.badge.bg-blue,.toast.bg-blue,.toast-header.bg-blue,.progress-bar.bg-blue{color:#fff}.bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-indigo{color:#6610f2}.btn.btn-ghost-indigo:hover{background-color:#6610f21f}.alert.alert-indigo a:not(.btn),.table-indigo a:not(.btn){font-weight:700;color:#3d0a91}.alert.alert-indigo .btn:not([class*=btn-outline]),.table-indigo .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-indigo a:not(.btn){font-weight:700;color:#c29ffa}.badge.bg-indigo,.toast.bg-indigo,.toast-header.bg-indigo,.progress-bar.bg-indigo{color:#fff}.bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-purple{color:#6f42c1}.btn.btn-ghost-purple:hover{background-color:#6f42c11f}.alert.alert-purple a:not(.btn),.table-purple a:not(.btn){font-weight:700;color:#432874}.alert.alert-purple .btn:not([class*=btn-outline]),.table-purple .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-purple a:not(.btn){font-weight:700;color:#c5b3e6}.badge.bg-purple,.toast.bg-purple,.toast-header.bg-purple,.progress-bar.bg-purple{color:#fff}.bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-pink{color:#d63384}.btn.btn-ghost-pink:hover{background-color:#d633841f}.alert.alert-pink a:not(.btn),.table-pink a:not(.btn){font-weight:700;color:#801f4f}.alert.alert-pink .btn:not([class*=btn-outline]),.table-pink .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-pink a:not(.btn){font-weight:700;color:#efadce}.badge.bg-pink,.toast.bg-pink,.toast-header.bg-pink,.progress-bar.bg-pink{color:#fff}.bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-red{color:#dc3545}.btn.btn-ghost-red:hover{background-color:#dc35451f}.alert.alert-red a:not(.btn),.table-red a:not(.btn){font-weight:700;color:#842029}.alert.alert-red .btn:not([class*=btn-outline]),.table-red .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-red a:not(.btn){font-weight:700;color:#f1aeb5}.badge.bg-red,.toast.bg-red,.toast-header.bg-red,.progress-bar.bg-red{color:#fff}.bg-orange button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23984c0c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-orange{color:#fd7e14}.btn.btn-ghost-orange:hover{background-color:#fd7e141f}.alert.alert-orange a:not(.btn),.table-orange a:not(.btn){font-weight:700;color:#984c0c}.alert.alert-orange .btn:not([class*=btn-outline]),.table-orange .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-orange a:not(.btn){font-weight:700;color:#653208}.badge.bg-orange,.toast.bg-orange,.toast-header.bg-orange,.progress-bar.bg-orange{color:#000}.bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-yellow{color:#ffc107}.btn.btn-ghost-yellow:hover{background-color:#ffc1071f}.alert.alert-yellow a:not(.btn),.table-yellow a:not(.btn){font-weight:700;color:#664d03}.alert.alert-yellow .btn:not([class*=btn-outline]),.table-yellow .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-yellow a:not(.btn){font-weight:700;color:#664d03}.badge.bg-yellow,.toast.bg-yellow,.toast-header.bg-yellow,.progress-bar.bg-yellow{color:#000}.bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-green{color:#198754}.btn.btn-ghost-green:hover{background-color:#1987541f}.alert.alert-green a:not(.btn),.table-green a:not(.btn){font-weight:700;color:#0f5132}.alert.alert-green .btn:not([class*=btn-outline]),.table-green .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-green a:not(.btn){font-weight:700;color:#a3cfbb}.badge.bg-green,.toast.bg-green,.toast-header.bg-green,.progress-bar.bg-green{color:#fff}.bg-teal button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2313795b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-teal{color:#20c997}.btn.btn-ghost-teal:hover{background-color:#20c9971f}.alert.alert-teal a:not(.btn),.table-teal a:not(.btn){font-weight:700;color:#13795b}.alert.alert-teal .btn:not([class*=btn-outline]),.table-teal .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-teal a:not(.btn){font-weight:700;color:#0d503c}.badge.bg-teal,.toast.bg-teal,.toast-header.bg-teal,.progress-bar.bg-teal{color:#000}.bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-cyan{color:#0dcaf0}.btn.btn-ghost-cyan:hover{background-color:#0dcaf01f}.alert.alert-cyan a:not(.btn),.table-cyan a:not(.btn){font-weight:700;color:#055160}.alert.alert-cyan .btn:not([class*=btn-outline]),.table-cyan .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-cyan a:not(.btn){font-weight:700;color:#055160}.badge.bg-cyan,.toast.bg-cyan,.toast-header.bg-cyan,.progress-bar.bg-cyan{color:#000}.bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23686d71'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-gray{color:#adb5bd}.btn.btn-ghost-gray:hover{background-color:#adb5bd1f}.alert.alert-gray a:not(.btn),.table-gray a:not(.btn){font-weight:700;color:#686d71}.alert.alert-gray .btn:not([class*=btn-outline]),.table-gray .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-gray a:not(.btn){font-weight:700;color:#45484c}.badge.bg-gray,.toast.bg-gray,.toast-header.bg-gray,.progress-bar.bg-gray{color:#000}.bg-black button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='black'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-black{color:#000}.btn.btn-ghost-black:hover{background-color:#0000001f}.alert.alert-black a:not(.btn),.table-black a:not(.btn){font-weight:700;color:#000}.alert.alert-black .btn:not([class*=btn-outline]),.table-black .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-black a:not(.btn){font-weight:700;color:#999}.badge.bg-black,.toast.bg-black,.toast-header.bg-black,.progress-bar.bg-black{color:#fff}.bg-white button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23666666'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}.btn.btn-ghost-white{color:#fff}.btn.btn-ghost-white:hover{background-color:#ffffff1f}.alert.alert-white a:not(.btn),.table-white a:not(.btn){font-weight:700;color:#666}.alert.alert-white .btn:not([class*=btn-outline]),.table-white .btn:not([class*=btn-outline]){border-color:#495057}.toast.bg-white a:not(.btn){font-weight:700;color:#666}.badge.bg-white,.toast.bg-white,.toast-header.bg-white,.progress-bar.bg-white{color:#000}table td>.progress{min-width:6rem}.small .form-control{font-size:.875rem}:not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}.nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}@media (max-width: 991.98px){.nav-mobile{display:flex}}.nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}.card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#f8f9fa;border-top:1px solid rgba(0,0,0,.125);border-bottom-color:#00000020}.card>.table.table-flush th,.card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}.card>.table.table-flush tr[class]{border-color:#00000020!important}.card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}.header-alert-container .alert{width:100%}@media (min-width: 768px){.header-alert-container .alert{max-width:75%}}@media (min-width: 992px){.header-alert-container .alert{max-width:50%}}.alert code{color:#6c757d}span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}table td a{text-decoration:none}table td a:hover{text-decoration:underline}table td .dropdown{position:static}table th a,table th a:hover{color:#212529;text-decoration:none}table td,table th{font-size:.875rem;line-height:1.25;vertical-align:middle}table td.min-width,table th.min-width{width:1%}table td .form-check-input,table th .form-check-input{margin-top:.125em;font-size:1rem}table td .btn-sm,table td .btn-group-sm>.btn,table th .btn-sm,table th .btn-group-sm>.btn{line-height:1}table td p,table th p{margin-bottom:.5em}table td p:last-child,table th p:last-child{margin-bottom:0}table th.asc>a:after{content:"\f0140";font-family:Material Design Icons}table th.desc>a:after{content:"\f0143";font-family:Material Design Icons}table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}table.attr-table th{font-weight:400;width:25%}div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}@media (min-width: 992px){div.title-container{flex-direction:row}}div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}.controls{margin-bottom:.5rem}@media print{.controls{display:none!important}}.controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}@media (min-width: 992px){.controls .control-group{justify-content:flex-end}}.controls .control-group>*{margin:.25rem}.controls .control-group>*:first-child{margin-left:0}.controls .control-group>*:last-child{margin-right:0}.object-subtitle{display:block;font-size:.875rem;color:#6c757d}@media (min-width: 768px){.object-subtitle{display:inline-block}}.object-subtitle>span{display:block}.object-subtitle>span.separator{display:none}@media (min-width: 768px){.object-subtitle>span,.object-subtitle>span.separator{display:inline-block}}nav.search{z-index:999;justify-content:center;background-color:#f8f9fa}nav.search .search-container{display:flex;width:100%}@media (max-width: 991.98px){nav.search .search-container{display:none}}nav.search .input-group .search-obj-selected{border-color:#ced4da}nav.search .input-group .dropdown-toggle{color:#000;border-color:#ced4da;margin-left:0;font-weight:400;line-height:1.5;color:#212529;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}nav.search .input-group .dropdown-toggle:hover{color:#000;background-color:#eceff1;border-color:#d3d8de}.btn-check:focus+nav.search .input-group .dropdown-toggle,nav.search .input-group .dropdown-toggle:focus{color:#000;background-color:#eceff1;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+nav.search .input-group .dropdown-toggle,.btn-check:active+nav.search .input-group .dropdown-toggle,nav.search .input-group .dropdown-toggle:active,nav.search .input-group .dropdown-toggle.active,.show>nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#d3d8de}.btn-check:checked+nav.search .input-group .dropdown-toggle:focus,.btn-check:active+nav.search .input-group .dropdown-toggle:focus,nav.search .input-group .dropdown-toggle:active:focus,nav.search .input-group .dropdown-toggle.active:focus,.show>nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}nav.search .input-group .dropdown-toggle:disabled,nav.search .input-group .dropdown-toggle.disabled{color:#000;background-color:#e9ecef;border-color:#ced4da}nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}nav.search .input-group .dropdown-toggle:after{display:none}nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}nav.search .input-group .search-obj-selector .dropdown-item,nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}.quicksearch input[type=search]{border-radius:.375rem!important}.quicksearch button{margin-left:-32px!important;z-index:100!important;outline:none!important;border-radius:.375rem!important;transition:visibility 0s,opacity .2s linear}.quicksearch button :hover{opacity:50%;transition:visibility 0s,opacity .1s linear}main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}@media print{main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}.footer{background-color:#f8f9fa;padding:0}.footer .nav-link{padding:.5rem}@media (max-width: 767.98px){.footer{margin-bottom:8rem}}footer.login-footer{height:4rem;margin-top:auto}footer.login-footer .container-fluid,footer.login-footer .container-sm,footer.login-footer .container-md,footer.login-footer .container-lg,footer.login-footer .container-xl,footer.login-footer .container-xxl{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}h1.accordion-item-title,.accordion-item-title.h1,h2.accordion-item-title,.accordion-item-title.h2,h3.accordion-item-title,.accordion-item-title.h3,h4.accordion-item-title,.accordion-item-title.h4,h5.accordion-item-title,.accordion-item-title.h5,h6.accordion-item-title,.accordion-item-title.h6{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}.form-login{width:100%;max-width:330px;padding:15px}.form-login input:focus{z-index:1}.form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}.form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}.navbar{border-bottom:1px solid #ced4da}.navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}nav.nav.nav-pills .nav-item.nav-link:hover{color:#343a40;background-color:#cfe2ff}div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}div.content-container:focus,div.content-container:focus-visible{outline:0}div.content-container div.content{background-color:#f8f9fa;flex:1}@media (max-width: 991.98px){div.content-container{width:100%}}@media print{div.content-container{width:100%!important;margin-left:0!important}}@media (max-width: 768px){.sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}.tooltip{pointer-events:none}span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}.badge a{color:inherit}.btn{white-space:nowrap}.card{box-shadow:0 .125rem .25rem #00000013}.card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}.card .card-header+.card-body{padding-top:0}.card .card-body.small .form-control,.card .card-body.small .form-select{font-size:.875rem}.card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(0,0,0,.125);opacity:.25}@media print{.card{box-shadow:unset!important}}.form-floating{position:relative}.form-floating>.input-group>.form-control,.form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}.form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion: reduce){.form-floating>.input-group>label{transition:none}}.form-floating>.input-group>.form-control::placeholder{color:transparent}.form-floating>.input-group>.form-control:focus,.form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-select,.form-floating>.choices>.choices__inner,.form-floating>.ss-main span.placeholder,.form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.input-group>.form-control:focus~label,.form-floating>.input-group>.form-control:not(:placeholder-shown)~label,.form-floating>.input-group>.form-select~label,.form-floating>.choices~label,.form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}.form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}.form-object-edit{margin:0 auto;max-width:800px}textarea.form-control[rows="10"]{height:18rem}textarea.markdown,textarea.form-control[name=csv]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.card:not(:only-of-type){margin-bottom:1rem}.stat-btn{min-width:3rem}nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}label.required{font-weight:700}label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:Material Design Icons;font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}table tbody tr.primary{background-color:#337ab726;border-color:#adb5bd}table tbody tr.secondary{background-color:#6c757d26;border-color:#adb5bd}table tbody tr.success{background-color:#19875426;border-color:#adb5bd}table tbody tr.info{background-color:#54d6f026;border-color:#adb5bd}table tbody tr.warning{background-color:#ffc10726;border-color:#adb5bd}table tbody tr.danger{background-color:#dc354526;border-color:#adb5bd}table tbody tr.light{background-color:#e9ecef26;border-color:#adb5bd}table tbody tr.dark{background-color:#343a4026;border-color:#adb5bd}table tbody tr.blue{background-color:#0d6efd26;border-color:#adb5bd}table tbody tr.indigo{background-color:#6610f226;border-color:#adb5bd}table tbody tr.purple{background-color:#6f42c126;border-color:#adb5bd}table tbody tr.pink{background-color:#d6338426;border-color:#adb5bd}table tbody tr.red{background-color:#dc354526;border-color:#adb5bd}table tbody tr.orange{background-color:#fd7e1426;border-color:#adb5bd}table tbody tr.yellow{background-color:#ffc10726;border-color:#adb5bd}table tbody tr.green{background-color:#19875426;border-color:#adb5bd}table tbody tr.teal{background-color:#20c99726;border-color:#adb5bd}table tbody tr.cyan{background-color:#0dcaf026;border-color:#adb5bd}table tbody tr.gray{background-color:#adb5bd26;border-color:#adb5bd}table tbody tr.black{background-color:#00000026;border-color:#adb5bd}table tbody tr.white{background-color:#ffffff26;border-color:#adb5bd}table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}table .table-badge-group .table-badge:not(.badge){padding:0 .65em}table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.25rem}pre.change-data{padding-right:0;padding-left:0}pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}pre.change-data>span.added{background-color:var(--nbx-change-added)}pre.change-data>span.removed{background-color:var(--nbx-change-removed)}pre.change-diff{border-color:transparent}pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}pre.change-diff.change-added{background-color:var(--nbx-change-added)}div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#6c757d}.table-controls{display:flex}@media (min-width: 768px){.table-controls{margin-top:0!important;margin-bottom:0!important}}.table-controls .table-configure{justify-content:flex-start}@media (min-width: 768px){.table-controls .table-configure{justify-content:flex-end}}.table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}.nav-tabs{background-color:#fff}.nav-tabs .nav-link:hover{border-bottom-color:transparent}.nav-tabs .nav-link.active{background-color:#f8f9fa;border-bottom-color:#f8f9fa;transform:translateY(1px)}.tab-content{display:flex;flex-direction:column;padding:1rem}@media print{.masonry{position:static!important;display:block!important;height:unset!important}}@media print{.masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}.record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}.record-depth span:only-of-type,.record-depth span:last-of-type{margin-right:.25rem}.popover.image-preview-popover{max-width:unset}.rendered-markdown table{width:100%}.rendered-markdown th{border-bottom:2px solid #dddddd;padding:8px}.rendered-markdown td{border-top:1px solid #dddddd;padding:8px}th[align=left]{text-align:left}th[align=center]{text-align:center}th[align=right]{text-align:right}.markdown-widget .nav-link{border-bottom:0}.markdown-widget .nav-link.active{background-color:var(--nbx-body-bg)}.markdown-widget .nav-tabs{background-color:var(--nbx-pre-bg)}td pre{margin-bottom:0}pre.block{padding:1rem;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}#django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}html[data-netbox-url-name=home] .content-container,html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}html[data-netbox-url-name=login] #django-messages{display:none} diff --git a/netbox/project-static/dist/netbox-print.css b/netbox/project-static/dist/netbox-print.css index b492e4d1d..7a3cd7859 100644 --- a/netbox/project-static/dist/netbox-print.css +++ b/netbox/project-static/dist/netbox-print.css @@ -1 +1 @@ -@charset "UTF-8";@media print{:root{--nbx-body-bg: #fff !important;--nbx-body-color: #000 !important}html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #337ab7;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #54d6f0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #e9ecef;--bs-dark: #343a40;--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-gray: #adb5bd;--bs-black: #000;--bs-white: #fff;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}html *,html *:before,html *:after,html[data-netbox-color-mode=dark] *,html[data-netbox-color-mode=dark] *:before,html[data-netbox-color-mode=dark] *:after,html[data-netbox-color-mode=light] *,html[data-netbox-color-mode=light] *:before,html[data-netbox-color-mode=light] *:after{box-sizing:border-box}}@media print and (prefers-reduced-motion: no-preference){html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{scroll-behavior:smooth}}@media print{html body,html[data-netbox-color-mode=dark] body,html[data-netbox-color-mode=light] body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}}@media print{html hr,html[data-netbox-color-mode=dark] hr,html[data-netbox-color-mode=light] hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}}@media print{html hr:not([size]),html[data-netbox-color-mode=dark] hr:not([size]),html[data-netbox-color-mode=light] hr:not([size]){height:1px}}@media print{html h6,html .h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=light] .h6,html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=light] h6,html h5,html .h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=light] .h5,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=light] h5,html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4,html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3,html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2,html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}}@media print{html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{font-size:calc(1.375rem + 1.5vw)}}@media print and (min-width: 1200px){html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{font-size:2.5rem}}@media print{html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2{font-size:calc(1.325rem + 0.9vw)}}@media print and (min-width: 1200px){html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2{font-size:2rem}}@media print{html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3{font-size:calc(1.3rem + 0.6vw)}}@media print and (min-width: 1200px){html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3{font-size:1.75rem}}@media print{html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4{font-size:calc(1.275rem + 0.3vw)}}@media print and (min-width: 1200px){html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4{font-size:1.5rem}}@media print{html h5,html .h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=light] .h5,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=light] h5{font-size:1.25rem}}@media print{html h6,html .h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=light] .h6,html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=light] h6{font-size:1rem}}@media print{html p,html[data-netbox-color-mode=dark] p,html[data-netbox-color-mode=light] p{margin-top:0;margin-bottom:1rem}}@media print{html abbr[title],html abbr[data-bs-original-title],html[data-netbox-color-mode=dark] abbr[title],html[data-netbox-color-mode=dark] abbr[data-bs-original-title],html[data-netbox-color-mode=light] abbr[title],html[data-netbox-color-mode=light] abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}}@media print{html address,html[data-netbox-color-mode=dark] address,html[data-netbox-color-mode=light] address{margin-bottom:1rem;font-style:normal;line-height:inherit}}@media print{html ol,html ul,html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=light] ol,html[data-netbox-color-mode=light] ul{padding-left:2rem}}@media print{html ol,html ul,html dl,html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=dark] dl,html[data-netbox-color-mode=light] ol,html[data-netbox-color-mode=light] ul,html[data-netbox-color-mode=light] dl{margin-top:0;margin-bottom:1rem}}@media print{html ol ol,html ul ul,html ol ul,html ul ol,html[data-netbox-color-mode=dark] ol ol,html[data-netbox-color-mode=dark] ul ul,html[data-netbox-color-mode=dark] ol ul,html[data-netbox-color-mode=dark] ul ol,html[data-netbox-color-mode=light] ol ol,html[data-netbox-color-mode=light] ul ul,html[data-netbox-color-mode=light] ol ul,html[data-netbox-color-mode=light] ul ol{margin-bottom:0}}@media print{html dt,html[data-netbox-color-mode=dark] dt,html[data-netbox-color-mode=light] dt{font-weight:700}}@media print{html dd,html[data-netbox-color-mode=dark] dd,html[data-netbox-color-mode=light] dd{margin-bottom:.5rem;margin-left:0}}@media print{html blockquote,html[data-netbox-color-mode=dark] blockquote,html[data-netbox-color-mode=light] blockquote{margin:0 0 1rem}}@media print{html b,html strong,html[data-netbox-color-mode=dark] b,html[data-netbox-color-mode=dark] strong,html[data-netbox-color-mode=light] b,html[data-netbox-color-mode=light] strong{font-weight:800}}@media print{html small,html .small,html[data-netbox-color-mode=dark] .small,html[data-netbox-color-mode=light] .small,html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=light] small{font-size:.875em}}@media print{html mark,html .mark,html[data-netbox-color-mode=dark] .mark,html[data-netbox-color-mode=light] .mark,html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=light] mark{padding:.2em;background-color:#fcf8e3}}@media print{html sub,html sup,html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=dark] sup,html[data-netbox-color-mode=light] sub,html[data-netbox-color-mode=light] sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}}@media print{html sub,html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=light] sub{bottom:-.25em}}@media print{html sup,html[data-netbox-color-mode=dark] sup,html[data-netbox-color-mode=light] sup{top:-.5em}}@media print{html a,html[data-netbox-color-mode=dark] a,html[data-netbox-color-mode=light] a{color:#0d6efd;text-decoration:underline}html a:hover,html[data-netbox-color-mode=dark] a:hover,html[data-netbox-color-mode=light] a:hover{color:#0a58ca}}@media print{html a:not([href]):not([class]),html a:not([href]):not([class]):hover,html[data-netbox-color-mode=dark] a:not([href]):not([class]),html[data-netbox-color-mode=dark] a:not([href]):not([class]):hover,html[data-netbox-color-mode=light] a:not([href]):not([class]),html[data-netbox-color-mode=light] a:not([href]):not([class]):hover{color:inherit;text-decoration:none}}@media print{html pre,html code,html kbd,html samp,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=dark] samp,html[data-netbox-color-mode=light] pre,html[data-netbox-color-mode=light] code,html[data-netbox-color-mode=light] kbd,html[data-netbox-color-mode=light] samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}}@media print{html pre,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=light] pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}html pre code,html[data-netbox-color-mode=dark] pre code,html[data-netbox-color-mode=light] pre code{font-size:inherit;color:inherit;word-break:normal}}@media print{html code,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=light] code{font-size:.875em;color:#212529;word-wrap:break-word}a>html code,a>html[data-netbox-color-mode=dark] code,a>html[data-netbox-color-mode=light] code{color:inherit}}@media print{html kbd,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=light] kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.375rem}html kbd kbd,html[data-netbox-color-mode=dark] kbd kbd,html[data-netbox-color-mode=light] kbd kbd{padding:0;font-size:1em;font-weight:700}}@media print{html figure,html[data-netbox-color-mode=dark] figure,html[data-netbox-color-mode=light] figure{margin:0 0 1rem}}@media print{html img,html svg,html[data-netbox-color-mode=dark] img,html[data-netbox-color-mode=dark] svg,html[data-netbox-color-mode=light] img,html[data-netbox-color-mode=light] svg{vertical-align:middle}}@media print{html table,html[data-netbox-color-mode=dark] table,html[data-netbox-color-mode=light] table{caption-side:bottom;border-collapse:collapse}}@media print{html caption,html[data-netbox-color-mode=dark] caption,html[data-netbox-color-mode=light] caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}}@media print{html th,html[data-netbox-color-mode=dark] th,html[data-netbox-color-mode=light] th{text-align:inherit;text-align:-webkit-match-parent}}@media print{html thead,html tbody,html tfoot,html tr,html td,html th,html[data-netbox-color-mode=dark] thead,html[data-netbox-color-mode=dark] tbody,html[data-netbox-color-mode=dark] tfoot,html[data-netbox-color-mode=dark] tr,html[data-netbox-color-mode=dark] td,html[data-netbox-color-mode=dark] th,html[data-netbox-color-mode=light] thead,html[data-netbox-color-mode=light] tbody,html[data-netbox-color-mode=light] tfoot,html[data-netbox-color-mode=light] tr,html[data-netbox-color-mode=light] td,html[data-netbox-color-mode=light] th{border-color:inherit;border-style:solid;border-width:0}}@media print{html label,html[data-netbox-color-mode=dark] label,html[data-netbox-color-mode=light] label{display:inline-block}}@media print{html button,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=light] button{border-radius:0}}@media print{html button:focus:not(:focus-visible),html[data-netbox-color-mode=dark] button:focus:not(:focus-visible),html[data-netbox-color-mode=light] button:focus:not(:focus-visible){outline:0}}@media print{html input,html button,html select,html optgroup,html textarea,html[data-netbox-color-mode=dark] input,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=dark] optgroup,html[data-netbox-color-mode=dark] textarea,html[data-netbox-color-mode=light] input,html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] select,html[data-netbox-color-mode=light] optgroup,html[data-netbox-color-mode=light] textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}}@media print{html button,html select,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] select{text-transform:none}}@media print{html [role=button],html[data-netbox-color-mode=dark] [role=button],html[data-netbox-color-mode=light] [role=button]{cursor:pointer}}@media print{html select,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=light] select{word-wrap:normal}html select:disabled,html[data-netbox-color-mode=dark] select:disabled,html[data-netbox-color-mode=light] select:disabled{opacity:1}}@media print{html [list]::-webkit-calendar-picker-indicator,html[data-netbox-color-mode=dark] [list]::-webkit-calendar-picker-indicator,html[data-netbox-color-mode=light] [list]::-webkit-calendar-picker-indicator{display:none}}@media print{html button,html [type=button],html [type=reset],html [type=submit],html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] [type=button],html[data-netbox-color-mode=dark] [type=reset],html[data-netbox-color-mode=dark] [type=submit],html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] [type=button],html[data-netbox-color-mode=light] [type=reset],html[data-netbox-color-mode=light] [type=submit]{-webkit-appearance:button}html button:not(:disabled),html [type=button]:not(:disabled),html [type=reset]:not(:disabled),html [type=submit]:not(:disabled),html[data-netbox-color-mode=dark] button:not(:disabled),html[data-netbox-color-mode=dark] [type=button]:not(:disabled),html[data-netbox-color-mode=dark] [type=reset]:not(:disabled),html[data-netbox-color-mode=dark] [type=submit]:not(:disabled),html[data-netbox-color-mode=light] button:not(:disabled),html[data-netbox-color-mode=light] [type=button]:not(:disabled),html[data-netbox-color-mode=light] [type=reset]:not(:disabled),html[data-netbox-color-mode=light] [type=submit]:not(:disabled){cursor:pointer}}@media print{html ::-moz-focus-inner,html[data-netbox-color-mode=dark] ::-moz-focus-inner,html[data-netbox-color-mode=light] ::-moz-focus-inner{padding:0;border-style:none}}@media print{html textarea,html[data-netbox-color-mode=dark] textarea,html[data-netbox-color-mode=light] textarea{resize:vertical}}@media print{html fieldset,html[data-netbox-color-mode=dark] fieldset,html[data-netbox-color-mode=light] fieldset{min-width:0;padding:0;margin:0;border:0}}@media print{html legend,html[data-netbox-color-mode=dark] legend,html[data-netbox-color-mode=light] legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}}@media print and (min-width: 1200px){html legend,html[data-netbox-color-mode=dark] legend,html[data-netbox-color-mode=light] legend{font-size:1.5rem}}@media print{html legend+*,html[data-netbox-color-mode=dark] legend+*,html[data-netbox-color-mode=light] legend+*{clear:left}}@media print{html ::-webkit-datetime-edit-fields-wrapper,html ::-webkit-datetime-edit-text,html ::-webkit-datetime-edit-minute,html ::-webkit-datetime-edit-hour-field,html ::-webkit-datetime-edit-day-field,html ::-webkit-datetime-edit-month-field,html ::-webkit-datetime-edit-year-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-year-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-year-field{padding:0}}@media print{html ::-webkit-inner-spin-button,html[data-netbox-color-mode=dark] ::-webkit-inner-spin-button,html[data-netbox-color-mode=light] ::-webkit-inner-spin-button{height:auto}}@media print{html [type=search],html[data-netbox-color-mode=dark] [type=search],html[data-netbox-color-mode=light] [type=search]{outline-offset:-2px;-webkit-appearance:textfield}}@media print{html ::-webkit-search-decoration,html[data-netbox-color-mode=dark] ::-webkit-search-decoration,html[data-netbox-color-mode=light] ::-webkit-search-decoration{-webkit-appearance:none}}@media print{html ::-webkit-color-swatch-wrapper,html[data-netbox-color-mode=dark] ::-webkit-color-swatch-wrapper,html[data-netbox-color-mode=light] ::-webkit-color-swatch-wrapper{padding:0}}@media print{html ::file-selector-button,html[data-netbox-color-mode=dark] ::file-selector-button,html[data-netbox-color-mode=light] ::file-selector-button{font:inherit}}@media print{html ::-webkit-file-upload-button,html[data-netbox-color-mode=dark] ::-webkit-file-upload-button,html[data-netbox-color-mode=light] ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}}@media print{html output,html[data-netbox-color-mode=dark] output,html[data-netbox-color-mode=light] output{display:inline-block}}@media print{html iframe,html[data-netbox-color-mode=dark] iframe,html[data-netbox-color-mode=light] iframe{border:0}}@media print{html summary,html[data-netbox-color-mode=dark] summary,html[data-netbox-color-mode=light] summary{display:list-item;cursor:pointer}}@media print{html progress,html[data-netbox-color-mode=dark] progress,html[data-netbox-color-mode=light] progress{vertical-align:baseline}}@media print{html [hidden],html[data-netbox-color-mode=dark] [hidden],html[data-netbox-color-mode=light] [hidden]{display:none!important}}@media print{html .lead,html[data-netbox-color-mode=dark] .lead,html[data-netbox-color-mode=light] .lead{font-size:1.25rem;font-weight:300}}@media print{html .display-1,html[data-netbox-color-mode=dark] .display-1,html[data-netbox-color-mode=light] .display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-1,html[data-netbox-color-mode=dark] .display-1,html[data-netbox-color-mode=light] .display-1{font-size:5rem}}@media print{html .display-2,html[data-netbox-color-mode=dark] .display-2,html[data-netbox-color-mode=light] .display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-2,html[data-netbox-color-mode=dark] .display-2,html[data-netbox-color-mode=light] .display-2{font-size:4.5rem}}@media print{html .display-3,html[data-netbox-color-mode=dark] .display-3,html[data-netbox-color-mode=light] .display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-3,html[data-netbox-color-mode=dark] .display-3,html[data-netbox-color-mode=light] .display-3{font-size:4rem}}@media print{html .display-4,html[data-netbox-color-mode=dark] .display-4,html[data-netbox-color-mode=light] .display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-4,html[data-netbox-color-mode=dark] .display-4,html[data-netbox-color-mode=light] .display-4{font-size:3.5rem}}@media print{html .display-5,html[data-netbox-color-mode=dark] .display-5,html[data-netbox-color-mode=light] .display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-5,html[data-netbox-color-mode=dark] .display-5,html[data-netbox-color-mode=light] .display-5{font-size:3rem}}@media print{html .display-6,html[data-netbox-color-mode=dark] .display-6,html[data-netbox-color-mode=light] .display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-6,html[data-netbox-color-mode=dark] .display-6,html[data-netbox-color-mode=light] .display-6{font-size:2.5rem}}@media print{html .list-unstyled,html[data-netbox-color-mode=dark] .list-unstyled,html[data-netbox-color-mode=light] .list-unstyled{padding-left:0;list-style:none}}@media print{html .list-inline,html[data-netbox-color-mode=dark] .list-inline,html[data-netbox-color-mode=light] .list-inline{padding-left:0;list-style:none}}@media print{html .list-inline-item,html[data-netbox-color-mode=dark] .list-inline-item,html[data-netbox-color-mode=light] .list-inline-item{display:inline-block}html .list-inline-item:not(:last-child),html[data-netbox-color-mode=dark] .list-inline-item:not(:last-child),html[data-netbox-color-mode=light] .list-inline-item:not(:last-child){margin-right:.5rem}}@media print{html .initialism,html[data-netbox-color-mode=dark] .initialism,html[data-netbox-color-mode=light] .initialism{font-size:.875em;text-transform:uppercase}}@media print{html .blockquote,html[data-netbox-color-mode=dark] .blockquote,html[data-netbox-color-mode=light] .blockquote{margin-bottom:1rem;font-size:1.25rem}html .blockquote>:last-child,html[data-netbox-color-mode=dark] .blockquote>:last-child,html[data-netbox-color-mode=light] .blockquote>:last-child{margin-bottom:0}}@media print{html .blockquote-footer,html[data-netbox-color-mode=dark] .blockquote-footer,html[data-netbox-color-mode=light] .blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}html .blockquote-footer:before,html[data-netbox-color-mode=dark] .blockquote-footer:before,html[data-netbox-color-mode=light] .blockquote-footer:before{content:"\2014\a0"}}@media print{html .img-fluid,html[data-netbox-color-mode=dark] .img-fluid,html[data-netbox-color-mode=light] .img-fluid{max-width:100%;height:auto}}@media print{html .img-thumbnail,html[data-netbox-color-mode=dark] .img-thumbnail,html[data-netbox-color-mode=light] .img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}}@media print{html .figure,html[data-netbox-color-mode=dark] .figure,html[data-netbox-color-mode=light] .figure{display:inline-block}}@media print{html .figure-img,html[data-netbox-color-mode=dark] .figure-img,html[data-netbox-color-mode=light] .figure-img{margin-bottom:.5rem;line-height:1}}@media print{html .figure-caption,html[data-netbox-color-mode=dark] .figure-caption,html[data-netbox-color-mode=light] .figure-caption{font-size:.875em;color:#6c757d}}@media print{html .container,html .container-fluid,html .container-xxl,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=light] .container-xxl,html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=dark] .container-fluid,html[data-netbox-color-mode=light] .container,html[data-netbox-color-mode=light] .container-fluid{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}}@media print and (min-width: 576px){html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:540px}}@media print and (min-width: 768px){html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:720px}}@media print and (min-width: 992px){html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:960px}}@media print and (min-width: 1200px){html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:1140px}}@media print and (min-width: 1400px){html .container-xxl,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=light] .container-xxl,html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:1320px}}@media print{html .row,html[data-netbox-color-mode=dark] .row,html[data-netbox-color-mode=light] .row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}html .row>*,html[data-netbox-color-mode=dark] .row>*,html[data-netbox-color-mode=light] .row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}}@media print{html .col,html[data-netbox-color-mode=dark] .col,html[data-netbox-color-mode=light] .col{flex:1 0 0%}}@media print{html .row-cols-auto>*,html[data-netbox-color-mode=dark] .row-cols-auto>*,html[data-netbox-color-mode=light] .row-cols-auto>*{flex:0 0 auto;width:auto}}@media print{html .row-cols-1>*,html[data-netbox-color-mode=dark] .row-cols-1>*,html[data-netbox-color-mode=light] .row-cols-1>*{flex:0 0 auto;width:100%}}@media print{html .row-cols-2>*,html[data-netbox-color-mode=dark] .row-cols-2>*,html[data-netbox-color-mode=light] .row-cols-2>*{flex:0 0 auto;width:50%}}@media print{html .row-cols-3>*,html[data-netbox-color-mode=dark] .row-cols-3>*,html[data-netbox-color-mode=light] .row-cols-3>*{flex:0 0 auto;width:33.3333333333%}}@media print{html .row-cols-4>*,html[data-netbox-color-mode=dark] .row-cols-4>*,html[data-netbox-color-mode=light] .row-cols-4>*{flex:0 0 auto;width:25%}}@media print{html .row-cols-5>*,html[data-netbox-color-mode=dark] .row-cols-5>*,html[data-netbox-color-mode=light] .row-cols-5>*{flex:0 0 auto;width:20%}}@media print{html .row-cols-6>*,html[data-netbox-color-mode=dark] .row-cols-6>*,html[data-netbox-color-mode=light] .row-cols-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 576px){html .col-sm,html[data-netbox-color-mode=dark] .col-sm,html[data-netbox-color-mode=light] .col-sm{flex:1 0 0%}html .row-cols-sm-auto>*,html[data-netbox-color-mode=dark] .row-cols-sm-auto>*,html[data-netbox-color-mode=light] .row-cols-sm-auto>*{flex:0 0 auto;width:auto}html .row-cols-sm-1>*,html[data-netbox-color-mode=dark] .row-cols-sm-1>*,html[data-netbox-color-mode=light] .row-cols-sm-1>*{flex:0 0 auto;width:100%}html .row-cols-sm-2>*,html[data-netbox-color-mode=dark] .row-cols-sm-2>*,html[data-netbox-color-mode=light] .row-cols-sm-2>*{flex:0 0 auto;width:50%}html .row-cols-sm-3>*,html[data-netbox-color-mode=dark] .row-cols-sm-3>*,html[data-netbox-color-mode=light] .row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-sm-4>*,html[data-netbox-color-mode=dark] .row-cols-sm-4>*,html[data-netbox-color-mode=light] .row-cols-sm-4>*{flex:0 0 auto;width:25%}html .row-cols-sm-5>*,html[data-netbox-color-mode=dark] .row-cols-sm-5>*,html[data-netbox-color-mode=light] .row-cols-sm-5>*{flex:0 0 auto;width:20%}html .row-cols-sm-6>*,html[data-netbox-color-mode=dark] .row-cols-sm-6>*,html[data-netbox-color-mode=light] .row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 768px){html .col-md,html[data-netbox-color-mode=dark] .col-md,html[data-netbox-color-mode=light] .col-md{flex:1 0 0%}html .row-cols-md-auto>*,html[data-netbox-color-mode=dark] .row-cols-md-auto>*,html[data-netbox-color-mode=light] .row-cols-md-auto>*{flex:0 0 auto;width:auto}html .row-cols-md-1>*,html[data-netbox-color-mode=dark] .row-cols-md-1>*,html[data-netbox-color-mode=light] .row-cols-md-1>*{flex:0 0 auto;width:100%}html .row-cols-md-2>*,html[data-netbox-color-mode=dark] .row-cols-md-2>*,html[data-netbox-color-mode=light] .row-cols-md-2>*{flex:0 0 auto;width:50%}html .row-cols-md-3>*,html[data-netbox-color-mode=dark] .row-cols-md-3>*,html[data-netbox-color-mode=light] .row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-md-4>*,html[data-netbox-color-mode=dark] .row-cols-md-4>*,html[data-netbox-color-mode=light] .row-cols-md-4>*{flex:0 0 auto;width:25%}html .row-cols-md-5>*,html[data-netbox-color-mode=dark] .row-cols-md-5>*,html[data-netbox-color-mode=light] .row-cols-md-5>*{flex:0 0 auto;width:20%}html .row-cols-md-6>*,html[data-netbox-color-mode=dark] .row-cols-md-6>*,html[data-netbox-color-mode=light] .row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 992px){html .col-lg,html[data-netbox-color-mode=dark] .col-lg,html[data-netbox-color-mode=light] .col-lg{flex:1 0 0%}html .row-cols-lg-auto>*,html[data-netbox-color-mode=dark] .row-cols-lg-auto>*,html[data-netbox-color-mode=light] .row-cols-lg-auto>*{flex:0 0 auto;width:auto}html .row-cols-lg-1>*,html[data-netbox-color-mode=dark] .row-cols-lg-1>*,html[data-netbox-color-mode=light] .row-cols-lg-1>*{flex:0 0 auto;width:100%}html .row-cols-lg-2>*,html[data-netbox-color-mode=dark] .row-cols-lg-2>*,html[data-netbox-color-mode=light] .row-cols-lg-2>*{flex:0 0 auto;width:50%}html .row-cols-lg-3>*,html[data-netbox-color-mode=dark] .row-cols-lg-3>*,html[data-netbox-color-mode=light] .row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-lg-4>*,html[data-netbox-color-mode=dark] .row-cols-lg-4>*,html[data-netbox-color-mode=light] .row-cols-lg-4>*{flex:0 0 auto;width:25%}html .row-cols-lg-5>*,html[data-netbox-color-mode=dark] .row-cols-lg-5>*,html[data-netbox-color-mode=light] .row-cols-lg-5>*{flex:0 0 auto;width:20%}html .row-cols-lg-6>*,html[data-netbox-color-mode=dark] .row-cols-lg-6>*,html[data-netbox-color-mode=light] .row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 1200px){html .col-xl,html[data-netbox-color-mode=dark] .col-xl,html[data-netbox-color-mode=light] .col-xl{flex:1 0 0%}html .row-cols-xl-auto>*,html[data-netbox-color-mode=dark] .row-cols-xl-auto>*,html[data-netbox-color-mode=light] .row-cols-xl-auto>*{flex:0 0 auto;width:auto}html .row-cols-xl-1>*,html[data-netbox-color-mode=dark] .row-cols-xl-1>*,html[data-netbox-color-mode=light] .row-cols-xl-1>*{flex:0 0 auto;width:100%}html .row-cols-xl-2>*,html[data-netbox-color-mode=dark] .row-cols-xl-2>*,html[data-netbox-color-mode=light] .row-cols-xl-2>*{flex:0 0 auto;width:50%}html .row-cols-xl-3>*,html[data-netbox-color-mode=dark] .row-cols-xl-3>*,html[data-netbox-color-mode=light] .row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-xl-4>*,html[data-netbox-color-mode=dark] .row-cols-xl-4>*,html[data-netbox-color-mode=light] .row-cols-xl-4>*{flex:0 0 auto;width:25%}html .row-cols-xl-5>*,html[data-netbox-color-mode=dark] .row-cols-xl-5>*,html[data-netbox-color-mode=light] .row-cols-xl-5>*{flex:0 0 auto;width:20%}html .row-cols-xl-6>*,html[data-netbox-color-mode=dark] .row-cols-xl-6>*,html[data-netbox-color-mode=light] .row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 1400px){html .col-xxl,html[data-netbox-color-mode=dark] .col-xxl,html[data-netbox-color-mode=light] .col-xxl{flex:1 0 0%}html .row-cols-xxl-auto>*,html[data-netbox-color-mode=dark] .row-cols-xxl-auto>*,html[data-netbox-color-mode=light] .row-cols-xxl-auto>*{flex:0 0 auto;width:auto}html .row-cols-xxl-1>*,html[data-netbox-color-mode=dark] .row-cols-xxl-1>*,html[data-netbox-color-mode=light] .row-cols-xxl-1>*{flex:0 0 auto;width:100%}html .row-cols-xxl-2>*,html[data-netbox-color-mode=dark] .row-cols-xxl-2>*,html[data-netbox-color-mode=light] .row-cols-xxl-2>*{flex:0 0 auto;width:50%}html .row-cols-xxl-3>*,html[data-netbox-color-mode=dark] .row-cols-xxl-3>*,html[data-netbox-color-mode=light] .row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-xxl-4>*,html[data-netbox-color-mode=dark] .row-cols-xxl-4>*,html[data-netbox-color-mode=light] .row-cols-xxl-4>*{flex:0 0 auto;width:25%}html .row-cols-xxl-5>*,html[data-netbox-color-mode=dark] .row-cols-xxl-5>*,html[data-netbox-color-mode=light] .row-cols-xxl-5>*{flex:0 0 auto;width:20%}html .row-cols-xxl-6>*,html[data-netbox-color-mode=dark] .row-cols-xxl-6>*,html[data-netbox-color-mode=light] .row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}@media print{html .col-auto,html[data-netbox-color-mode=dark] .col-auto,html[data-netbox-color-mode=light] .col-auto{flex:0 0 auto;width:auto}}@media print{html .col-1,html[data-netbox-color-mode=dark] .col-1,html[data-netbox-color-mode=light] .col-1{flex:0 0 auto;width:8.33333333%}}@media print{html .col-2,html[data-netbox-color-mode=dark] .col-2,html[data-netbox-color-mode=light] .col-2{flex:0 0 auto;width:16.66666667%}}@media print{html .col-3,html[data-netbox-color-mode=dark] .col-3,html[data-netbox-color-mode=light] .col-3{flex:0 0 auto;width:25%}}@media print{html .col-4,html[data-netbox-color-mode=dark] .col-4,html[data-netbox-color-mode=light] .col-4{flex:0 0 auto;width:33.33333333%}}@media print{html .col-5,html[data-netbox-color-mode=dark] .col-5,html[data-netbox-color-mode=light] .col-5{flex:0 0 auto;width:41.66666667%}}@media print{html .col-6,html[data-netbox-color-mode=dark] .col-6,html[data-netbox-color-mode=light] .col-6{flex:0 0 auto;width:50%}}@media print{html .col-7,html[data-netbox-color-mode=dark] .col-7,html[data-netbox-color-mode=light] .col-7{flex:0 0 auto;width:58.33333333%}}@media print{html .col-8,html[data-netbox-color-mode=dark] .col-8,html[data-netbox-color-mode=light] .col-8{flex:0 0 auto;width:66.66666667%}}@media print{html .col-9,html[data-netbox-color-mode=dark] .col-9,html[data-netbox-color-mode=light] .col-9{flex:0 0 auto;width:75%}}@media print{html .col-10,html[data-netbox-color-mode=dark] .col-10,html[data-netbox-color-mode=light] .col-10{flex:0 0 auto;width:83.33333333%}}@media print{html .col-11,html[data-netbox-color-mode=dark] .col-11,html[data-netbox-color-mode=light] .col-11{flex:0 0 auto;width:91.66666667%}}@media print{html .col-12,html[data-netbox-color-mode=dark] .col-12,html[data-netbox-color-mode=light] .col-12{flex:0 0 auto;width:100%}}@media print{html .offset-1,html[data-netbox-color-mode=dark] .offset-1,html[data-netbox-color-mode=light] .offset-1{margin-left:8.33333333%}}@media print{html .offset-2,html[data-netbox-color-mode=dark] .offset-2,html[data-netbox-color-mode=light] .offset-2{margin-left:16.66666667%}}@media print{html .offset-3,html[data-netbox-color-mode=dark] .offset-3,html[data-netbox-color-mode=light] .offset-3{margin-left:25%}}@media print{html .offset-4,html[data-netbox-color-mode=dark] .offset-4,html[data-netbox-color-mode=light] .offset-4{margin-left:33.33333333%}}@media print{html .offset-5,html[data-netbox-color-mode=dark] .offset-5,html[data-netbox-color-mode=light] .offset-5{margin-left:41.66666667%}}@media print{html .offset-6,html[data-netbox-color-mode=dark] .offset-6,html[data-netbox-color-mode=light] .offset-6{margin-left:50%}}@media print{html .offset-7,html[data-netbox-color-mode=dark] .offset-7,html[data-netbox-color-mode=light] .offset-7{margin-left:58.33333333%}}@media print{html .offset-8,html[data-netbox-color-mode=dark] .offset-8,html[data-netbox-color-mode=light] .offset-8{margin-left:66.66666667%}}@media print{html .offset-9,html[data-netbox-color-mode=dark] .offset-9,html[data-netbox-color-mode=light] .offset-9{margin-left:75%}}@media print{html .offset-10,html[data-netbox-color-mode=dark] .offset-10,html[data-netbox-color-mode=light] .offset-10{margin-left:83.33333333%}}@media print{html .offset-11,html[data-netbox-color-mode=dark] .offset-11,html[data-netbox-color-mode=light] .offset-11{margin-left:91.66666667%}}@media print{html .g-0,html .gx-0,html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gx-0,html[data-netbox-color-mode=light] .g-0,html[data-netbox-color-mode=light] .gx-0{--bs-gutter-x: 0}}@media print{html .g-0,html .gy-0,html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gy-0,html[data-netbox-color-mode=light] .g-0,html[data-netbox-color-mode=light] .gy-0{--bs-gutter-y: 0}}@media print{html .g-1,html .gx-1,html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gx-1,html[data-netbox-color-mode=light] .g-1,html[data-netbox-color-mode=light] .gx-1{--bs-gutter-x: .25rem}}@media print{html .g-1,html .gy-1,html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gy-1,html[data-netbox-color-mode=light] .g-1,html[data-netbox-color-mode=light] .gy-1{--bs-gutter-y: .25rem}}@media print{html .g-2,html .gx-2,html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gx-2,html[data-netbox-color-mode=light] .g-2,html[data-netbox-color-mode=light] .gx-2{--bs-gutter-x: .5rem}}@media print{html .g-2,html .gy-2,html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gy-2,html[data-netbox-color-mode=light] .g-2,html[data-netbox-color-mode=light] .gy-2{--bs-gutter-y: .5rem}}@media print{html .g-3,html .gx-3,html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gx-3,html[data-netbox-color-mode=light] .g-3,html[data-netbox-color-mode=light] .gx-3{--bs-gutter-x: 1rem}}@media print{html .g-3,html .gy-3,html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gy-3,html[data-netbox-color-mode=light] .g-3,html[data-netbox-color-mode=light] .gy-3{--bs-gutter-y: 1rem}}@media print{html .g-4,html .gx-4,html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gx-4,html[data-netbox-color-mode=light] .g-4,html[data-netbox-color-mode=light] .gx-4{--bs-gutter-x: 1.5rem}}@media print{html .g-4,html .gy-4,html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gy-4,html[data-netbox-color-mode=light] .g-4,html[data-netbox-color-mode=light] .gy-4{--bs-gutter-y: 1.5rem}}@media print{html .g-5,html .gx-5,html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gx-5,html[data-netbox-color-mode=light] .g-5,html[data-netbox-color-mode=light] .gx-5{--bs-gutter-x: 3rem}}@media print{html .g-5,html .gy-5,html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gy-5,html[data-netbox-color-mode=light] .g-5,html[data-netbox-color-mode=light] .gy-5{--bs-gutter-y: 3rem}}@media print and (min-width: 576px){html .col-sm-auto,html[data-netbox-color-mode=dark] .col-sm-auto,html[data-netbox-color-mode=light] .col-sm-auto{flex:0 0 auto;width:auto}html .col-sm-1,html[data-netbox-color-mode=dark] .col-sm-1,html[data-netbox-color-mode=light] .col-sm-1{flex:0 0 auto;width:8.33333333%}html .col-sm-2,html[data-netbox-color-mode=dark] .col-sm-2,html[data-netbox-color-mode=light] .col-sm-2{flex:0 0 auto;width:16.66666667%}html .col-sm-3,html[data-netbox-color-mode=dark] .col-sm-3,html[data-netbox-color-mode=light] .col-sm-3{flex:0 0 auto;width:25%}html .col-sm-4,html[data-netbox-color-mode=dark] .col-sm-4,html[data-netbox-color-mode=light] .col-sm-4{flex:0 0 auto;width:33.33333333%}html .col-sm-5,html[data-netbox-color-mode=dark] .col-sm-5,html[data-netbox-color-mode=light] .col-sm-5{flex:0 0 auto;width:41.66666667%}html .col-sm-6,html[data-netbox-color-mode=dark] .col-sm-6,html[data-netbox-color-mode=light] .col-sm-6{flex:0 0 auto;width:50%}html .col-sm-7,html[data-netbox-color-mode=dark] .col-sm-7,html[data-netbox-color-mode=light] .col-sm-7{flex:0 0 auto;width:58.33333333%}html .col-sm-8,html[data-netbox-color-mode=dark] .col-sm-8,html[data-netbox-color-mode=light] .col-sm-8{flex:0 0 auto;width:66.66666667%}html .col-sm-9,html[data-netbox-color-mode=dark] .col-sm-9,html[data-netbox-color-mode=light] .col-sm-9{flex:0 0 auto;width:75%}html .col-sm-10,html[data-netbox-color-mode=dark] .col-sm-10,html[data-netbox-color-mode=light] .col-sm-10{flex:0 0 auto;width:83.33333333%}html .col-sm-11,html[data-netbox-color-mode=dark] .col-sm-11,html[data-netbox-color-mode=light] .col-sm-11{flex:0 0 auto;width:91.66666667%}html .col-sm-12,html[data-netbox-color-mode=dark] .col-sm-12,html[data-netbox-color-mode=light] .col-sm-12{flex:0 0 auto;width:100%}html .offset-sm-0,html[data-netbox-color-mode=dark] .offset-sm-0,html[data-netbox-color-mode=light] .offset-sm-0{margin-left:0}html .offset-sm-1,html[data-netbox-color-mode=dark] .offset-sm-1,html[data-netbox-color-mode=light] .offset-sm-1{margin-left:8.33333333%}html .offset-sm-2,html[data-netbox-color-mode=dark] .offset-sm-2,html[data-netbox-color-mode=light] .offset-sm-2{margin-left:16.66666667%}html .offset-sm-3,html[data-netbox-color-mode=dark] .offset-sm-3,html[data-netbox-color-mode=light] .offset-sm-3{margin-left:25%}html .offset-sm-4,html[data-netbox-color-mode=dark] .offset-sm-4,html[data-netbox-color-mode=light] .offset-sm-4{margin-left:33.33333333%}html .offset-sm-5,html[data-netbox-color-mode=dark] .offset-sm-5,html[data-netbox-color-mode=light] .offset-sm-5{margin-left:41.66666667%}html .offset-sm-6,html[data-netbox-color-mode=dark] .offset-sm-6,html[data-netbox-color-mode=light] .offset-sm-6{margin-left:50%}html .offset-sm-7,html[data-netbox-color-mode=dark] .offset-sm-7,html[data-netbox-color-mode=light] .offset-sm-7{margin-left:58.33333333%}html .offset-sm-8,html[data-netbox-color-mode=dark] .offset-sm-8,html[data-netbox-color-mode=light] .offset-sm-8{margin-left:66.66666667%}html .offset-sm-9,html[data-netbox-color-mode=dark] .offset-sm-9,html[data-netbox-color-mode=light] .offset-sm-9{margin-left:75%}html .offset-sm-10,html[data-netbox-color-mode=dark] .offset-sm-10,html[data-netbox-color-mode=light] .offset-sm-10{margin-left:83.33333333%}html .offset-sm-11,html[data-netbox-color-mode=dark] .offset-sm-11,html[data-netbox-color-mode=light] .offset-sm-11{margin-left:91.66666667%}html .g-sm-0,html .gx-sm-0,html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gx-sm-0,html[data-netbox-color-mode=light] .g-sm-0,html[data-netbox-color-mode=light] .gx-sm-0{--bs-gutter-x: 0}html .g-sm-0,html .gy-sm-0,html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gy-sm-0,html[data-netbox-color-mode=light] .g-sm-0,html[data-netbox-color-mode=light] .gy-sm-0{--bs-gutter-y: 0}html .g-sm-1,html .gx-sm-1,html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gx-sm-1,html[data-netbox-color-mode=light] .g-sm-1,html[data-netbox-color-mode=light] .gx-sm-1{--bs-gutter-x: .25rem}html .g-sm-1,html .gy-sm-1,html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gy-sm-1,html[data-netbox-color-mode=light] .g-sm-1,html[data-netbox-color-mode=light] .gy-sm-1{--bs-gutter-y: .25rem}html .g-sm-2,html .gx-sm-2,html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gx-sm-2,html[data-netbox-color-mode=light] .g-sm-2,html[data-netbox-color-mode=light] .gx-sm-2{--bs-gutter-x: .5rem}html .g-sm-2,html .gy-sm-2,html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gy-sm-2,html[data-netbox-color-mode=light] .g-sm-2,html[data-netbox-color-mode=light] .gy-sm-2{--bs-gutter-y: .5rem}html .g-sm-3,html .gx-sm-3,html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gx-sm-3,html[data-netbox-color-mode=light] .g-sm-3,html[data-netbox-color-mode=light] .gx-sm-3{--bs-gutter-x: 1rem}html .g-sm-3,html .gy-sm-3,html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gy-sm-3,html[data-netbox-color-mode=light] .g-sm-3,html[data-netbox-color-mode=light] .gy-sm-3{--bs-gutter-y: 1rem}html .g-sm-4,html .gx-sm-4,html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gx-sm-4,html[data-netbox-color-mode=light] .g-sm-4,html[data-netbox-color-mode=light] .gx-sm-4{--bs-gutter-x: 1.5rem}html .g-sm-4,html .gy-sm-4,html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gy-sm-4,html[data-netbox-color-mode=light] .g-sm-4,html[data-netbox-color-mode=light] .gy-sm-4{--bs-gutter-y: 1.5rem}html .g-sm-5,html .gx-sm-5,html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gx-sm-5,html[data-netbox-color-mode=light] .g-sm-5,html[data-netbox-color-mode=light] .gx-sm-5{--bs-gutter-x: 3rem}html .g-sm-5,html .gy-sm-5,html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gy-sm-5,html[data-netbox-color-mode=light] .g-sm-5,html[data-netbox-color-mode=light] .gy-sm-5{--bs-gutter-y: 3rem}}@media print and (min-width: 768px){html .col-md-auto,html[data-netbox-color-mode=dark] .col-md-auto,html[data-netbox-color-mode=light] .col-md-auto{flex:0 0 auto;width:auto}html .col-md-1,html[data-netbox-color-mode=dark] .col-md-1,html[data-netbox-color-mode=light] .col-md-1{flex:0 0 auto;width:8.33333333%}html .col-md-2,html[data-netbox-color-mode=dark] .col-md-2,html[data-netbox-color-mode=light] .col-md-2{flex:0 0 auto;width:16.66666667%}html .col-md-3,html[data-netbox-color-mode=dark] .col-md-3,html[data-netbox-color-mode=light] .col-md-3{flex:0 0 auto;width:25%}html .col-md-4,html[data-netbox-color-mode=dark] .col-md-4,html[data-netbox-color-mode=light] .col-md-4{flex:0 0 auto;width:33.33333333%}html .col-md-5,html[data-netbox-color-mode=dark] .col-md-5,html[data-netbox-color-mode=light] .col-md-5{flex:0 0 auto;width:41.66666667%}html .col-md-6,html[data-netbox-color-mode=dark] .col-md-6,html[data-netbox-color-mode=light] .col-md-6{flex:0 0 auto;width:50%}html .col-md-7,html[data-netbox-color-mode=dark] .col-md-7,html[data-netbox-color-mode=light] .col-md-7{flex:0 0 auto;width:58.33333333%}html .col-md-8,html[data-netbox-color-mode=dark] .col-md-8,html[data-netbox-color-mode=light] .col-md-8{flex:0 0 auto;width:66.66666667%}html .col-md-9,html[data-netbox-color-mode=dark] .col-md-9,html[data-netbox-color-mode=light] .col-md-9{flex:0 0 auto;width:75%}html .col-md-10,html[data-netbox-color-mode=dark] .col-md-10,html[data-netbox-color-mode=light] .col-md-10{flex:0 0 auto;width:83.33333333%}html .col-md-11,html[data-netbox-color-mode=dark] .col-md-11,html[data-netbox-color-mode=light] .col-md-11{flex:0 0 auto;width:91.66666667%}html .col-md-12,html[data-netbox-color-mode=dark] .col-md-12,html[data-netbox-color-mode=light] .col-md-12{flex:0 0 auto;width:100%}html .offset-md-0,html[data-netbox-color-mode=dark] .offset-md-0,html[data-netbox-color-mode=light] .offset-md-0{margin-left:0}html .offset-md-1,html[data-netbox-color-mode=dark] .offset-md-1,html[data-netbox-color-mode=light] .offset-md-1{margin-left:8.33333333%}html .offset-md-2,html[data-netbox-color-mode=dark] .offset-md-2,html[data-netbox-color-mode=light] .offset-md-2{margin-left:16.66666667%}html .offset-md-3,html[data-netbox-color-mode=dark] .offset-md-3,html[data-netbox-color-mode=light] .offset-md-3{margin-left:25%}html .offset-md-4,html[data-netbox-color-mode=dark] .offset-md-4,html[data-netbox-color-mode=light] .offset-md-4{margin-left:33.33333333%}html .offset-md-5,html[data-netbox-color-mode=dark] .offset-md-5,html[data-netbox-color-mode=light] .offset-md-5{margin-left:41.66666667%}html .offset-md-6,html[data-netbox-color-mode=dark] .offset-md-6,html[data-netbox-color-mode=light] .offset-md-6{margin-left:50%}html .offset-md-7,html[data-netbox-color-mode=dark] .offset-md-7,html[data-netbox-color-mode=light] .offset-md-7{margin-left:58.33333333%}html .offset-md-8,html[data-netbox-color-mode=dark] .offset-md-8,html[data-netbox-color-mode=light] .offset-md-8{margin-left:66.66666667%}html .offset-md-9,html[data-netbox-color-mode=dark] .offset-md-9,html[data-netbox-color-mode=light] .offset-md-9{margin-left:75%}html .offset-md-10,html[data-netbox-color-mode=dark] .offset-md-10,html[data-netbox-color-mode=light] .offset-md-10{margin-left:83.33333333%}html .offset-md-11,html[data-netbox-color-mode=dark] .offset-md-11,html[data-netbox-color-mode=light] .offset-md-11{margin-left:91.66666667%}html .g-md-0,html .gx-md-0,html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gx-md-0,html[data-netbox-color-mode=light] .g-md-0,html[data-netbox-color-mode=light] .gx-md-0{--bs-gutter-x: 0}html .g-md-0,html .gy-md-0,html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gy-md-0,html[data-netbox-color-mode=light] .g-md-0,html[data-netbox-color-mode=light] .gy-md-0{--bs-gutter-y: 0}html .g-md-1,html .gx-md-1,html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gx-md-1,html[data-netbox-color-mode=light] .g-md-1,html[data-netbox-color-mode=light] .gx-md-1{--bs-gutter-x: .25rem}html .g-md-1,html .gy-md-1,html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gy-md-1,html[data-netbox-color-mode=light] .g-md-1,html[data-netbox-color-mode=light] .gy-md-1{--bs-gutter-y: .25rem}html .g-md-2,html .gx-md-2,html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gx-md-2,html[data-netbox-color-mode=light] .g-md-2,html[data-netbox-color-mode=light] .gx-md-2{--bs-gutter-x: .5rem}html .g-md-2,html .gy-md-2,html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gy-md-2,html[data-netbox-color-mode=light] .g-md-2,html[data-netbox-color-mode=light] .gy-md-2{--bs-gutter-y: .5rem}html .g-md-3,html .gx-md-3,html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gx-md-3,html[data-netbox-color-mode=light] .g-md-3,html[data-netbox-color-mode=light] .gx-md-3{--bs-gutter-x: 1rem}html .g-md-3,html .gy-md-3,html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gy-md-3,html[data-netbox-color-mode=light] .g-md-3,html[data-netbox-color-mode=light] .gy-md-3{--bs-gutter-y: 1rem}html .g-md-4,html .gx-md-4,html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gx-md-4,html[data-netbox-color-mode=light] .g-md-4,html[data-netbox-color-mode=light] .gx-md-4{--bs-gutter-x: 1.5rem}html .g-md-4,html .gy-md-4,html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gy-md-4,html[data-netbox-color-mode=light] .g-md-4,html[data-netbox-color-mode=light] .gy-md-4{--bs-gutter-y: 1.5rem}html .g-md-5,html .gx-md-5,html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gx-md-5,html[data-netbox-color-mode=light] .g-md-5,html[data-netbox-color-mode=light] .gx-md-5{--bs-gutter-x: 3rem}html .g-md-5,html .gy-md-5,html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gy-md-5,html[data-netbox-color-mode=light] .g-md-5,html[data-netbox-color-mode=light] .gy-md-5{--bs-gutter-y: 3rem}}@media print and (min-width: 992px){html .col-lg-auto,html[data-netbox-color-mode=dark] .col-lg-auto,html[data-netbox-color-mode=light] .col-lg-auto{flex:0 0 auto;width:auto}html .col-lg-1,html[data-netbox-color-mode=dark] .col-lg-1,html[data-netbox-color-mode=light] .col-lg-1{flex:0 0 auto;width:8.33333333%}html .col-lg-2,html[data-netbox-color-mode=dark] .col-lg-2,html[data-netbox-color-mode=light] .col-lg-2{flex:0 0 auto;width:16.66666667%}html .col-lg-3,html[data-netbox-color-mode=dark] .col-lg-3,html[data-netbox-color-mode=light] .col-lg-3{flex:0 0 auto;width:25%}html .col-lg-4,html[data-netbox-color-mode=dark] .col-lg-4,html[data-netbox-color-mode=light] .col-lg-4{flex:0 0 auto;width:33.33333333%}html .col-lg-5,html[data-netbox-color-mode=dark] .col-lg-5,html[data-netbox-color-mode=light] .col-lg-5{flex:0 0 auto;width:41.66666667%}html .col-lg-6,html[data-netbox-color-mode=dark] .col-lg-6,html[data-netbox-color-mode=light] .col-lg-6{flex:0 0 auto;width:50%}html .col-lg-7,html[data-netbox-color-mode=dark] .col-lg-7,html[data-netbox-color-mode=light] .col-lg-7{flex:0 0 auto;width:58.33333333%}html .col-lg-8,html[data-netbox-color-mode=dark] .col-lg-8,html[data-netbox-color-mode=light] .col-lg-8{flex:0 0 auto;width:66.66666667%}html .col-lg-9,html[data-netbox-color-mode=dark] .col-lg-9,html[data-netbox-color-mode=light] .col-lg-9{flex:0 0 auto;width:75%}html .col-lg-10,html[data-netbox-color-mode=dark] .col-lg-10,html[data-netbox-color-mode=light] .col-lg-10{flex:0 0 auto;width:83.33333333%}html .col-lg-11,html[data-netbox-color-mode=dark] .col-lg-11,html[data-netbox-color-mode=light] .col-lg-11{flex:0 0 auto;width:91.66666667%}html .col-lg-12,html[data-netbox-color-mode=dark] .col-lg-12,html[data-netbox-color-mode=light] .col-lg-12{flex:0 0 auto;width:100%}html .offset-lg-0,html[data-netbox-color-mode=dark] .offset-lg-0,html[data-netbox-color-mode=light] .offset-lg-0{margin-left:0}html .offset-lg-1,html[data-netbox-color-mode=dark] .offset-lg-1,html[data-netbox-color-mode=light] .offset-lg-1{margin-left:8.33333333%}html .offset-lg-2,html[data-netbox-color-mode=dark] .offset-lg-2,html[data-netbox-color-mode=light] .offset-lg-2{margin-left:16.66666667%}html .offset-lg-3,html[data-netbox-color-mode=dark] .offset-lg-3,html[data-netbox-color-mode=light] .offset-lg-3{margin-left:25%}html .offset-lg-4,html[data-netbox-color-mode=dark] .offset-lg-4,html[data-netbox-color-mode=light] .offset-lg-4{margin-left:33.33333333%}html .offset-lg-5,html[data-netbox-color-mode=dark] .offset-lg-5,html[data-netbox-color-mode=light] .offset-lg-5{margin-left:41.66666667%}html .offset-lg-6,html[data-netbox-color-mode=dark] .offset-lg-6,html[data-netbox-color-mode=light] .offset-lg-6{margin-left:50%}html .offset-lg-7,html[data-netbox-color-mode=dark] .offset-lg-7,html[data-netbox-color-mode=light] .offset-lg-7{margin-left:58.33333333%}html .offset-lg-8,html[data-netbox-color-mode=dark] .offset-lg-8,html[data-netbox-color-mode=light] .offset-lg-8{margin-left:66.66666667%}html .offset-lg-9,html[data-netbox-color-mode=dark] .offset-lg-9,html[data-netbox-color-mode=light] .offset-lg-9{margin-left:75%}html .offset-lg-10,html[data-netbox-color-mode=dark] .offset-lg-10,html[data-netbox-color-mode=light] .offset-lg-10{margin-left:83.33333333%}html .offset-lg-11,html[data-netbox-color-mode=dark] .offset-lg-11,html[data-netbox-color-mode=light] .offset-lg-11{margin-left:91.66666667%}html .g-lg-0,html .gx-lg-0,html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gx-lg-0,html[data-netbox-color-mode=light] .g-lg-0,html[data-netbox-color-mode=light] .gx-lg-0{--bs-gutter-x: 0}html .g-lg-0,html .gy-lg-0,html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gy-lg-0,html[data-netbox-color-mode=light] .g-lg-0,html[data-netbox-color-mode=light] .gy-lg-0{--bs-gutter-y: 0}html .g-lg-1,html .gx-lg-1,html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gx-lg-1,html[data-netbox-color-mode=light] .g-lg-1,html[data-netbox-color-mode=light] .gx-lg-1{--bs-gutter-x: .25rem}html .g-lg-1,html .gy-lg-1,html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gy-lg-1,html[data-netbox-color-mode=light] .g-lg-1,html[data-netbox-color-mode=light] .gy-lg-1{--bs-gutter-y: .25rem}html .g-lg-2,html .gx-lg-2,html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gx-lg-2,html[data-netbox-color-mode=light] .g-lg-2,html[data-netbox-color-mode=light] .gx-lg-2{--bs-gutter-x: .5rem}html .g-lg-2,html .gy-lg-2,html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gy-lg-2,html[data-netbox-color-mode=light] .g-lg-2,html[data-netbox-color-mode=light] .gy-lg-2{--bs-gutter-y: .5rem}html .g-lg-3,html .gx-lg-3,html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gx-lg-3,html[data-netbox-color-mode=light] .g-lg-3,html[data-netbox-color-mode=light] .gx-lg-3{--bs-gutter-x: 1rem}html .g-lg-3,html .gy-lg-3,html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gy-lg-3,html[data-netbox-color-mode=light] .g-lg-3,html[data-netbox-color-mode=light] .gy-lg-3{--bs-gutter-y: 1rem}html .g-lg-4,html .gx-lg-4,html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gx-lg-4,html[data-netbox-color-mode=light] .g-lg-4,html[data-netbox-color-mode=light] .gx-lg-4{--bs-gutter-x: 1.5rem}html .g-lg-4,html .gy-lg-4,html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gy-lg-4,html[data-netbox-color-mode=light] .g-lg-4,html[data-netbox-color-mode=light] .gy-lg-4{--bs-gutter-y: 1.5rem}html .g-lg-5,html .gx-lg-5,html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gx-lg-5,html[data-netbox-color-mode=light] .g-lg-5,html[data-netbox-color-mode=light] .gx-lg-5{--bs-gutter-x: 3rem}html .g-lg-5,html .gy-lg-5,html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gy-lg-5,html[data-netbox-color-mode=light] .g-lg-5,html[data-netbox-color-mode=light] .gy-lg-5{--bs-gutter-y: 3rem}}@media print and (min-width: 1200px){html .col-xl-auto,html[data-netbox-color-mode=dark] .col-xl-auto,html[data-netbox-color-mode=light] .col-xl-auto{flex:0 0 auto;width:auto}html .col-xl-1,html[data-netbox-color-mode=dark] .col-xl-1,html[data-netbox-color-mode=light] .col-xl-1{flex:0 0 auto;width:8.33333333%}html .col-xl-2,html[data-netbox-color-mode=dark] .col-xl-2,html[data-netbox-color-mode=light] .col-xl-2{flex:0 0 auto;width:16.66666667%}html .col-xl-3,html[data-netbox-color-mode=dark] .col-xl-3,html[data-netbox-color-mode=light] .col-xl-3{flex:0 0 auto;width:25%}html .col-xl-4,html[data-netbox-color-mode=dark] .col-xl-4,html[data-netbox-color-mode=light] .col-xl-4{flex:0 0 auto;width:33.33333333%}html .col-xl-5,html[data-netbox-color-mode=dark] .col-xl-5,html[data-netbox-color-mode=light] .col-xl-5{flex:0 0 auto;width:41.66666667%}html .col-xl-6,html[data-netbox-color-mode=dark] .col-xl-6,html[data-netbox-color-mode=light] .col-xl-6{flex:0 0 auto;width:50%}html .col-xl-7,html[data-netbox-color-mode=dark] .col-xl-7,html[data-netbox-color-mode=light] .col-xl-7{flex:0 0 auto;width:58.33333333%}html .col-xl-8,html[data-netbox-color-mode=dark] .col-xl-8,html[data-netbox-color-mode=light] .col-xl-8{flex:0 0 auto;width:66.66666667%}html .col-xl-9,html[data-netbox-color-mode=dark] .col-xl-9,html[data-netbox-color-mode=light] .col-xl-9{flex:0 0 auto;width:75%}html .col-xl-10,html[data-netbox-color-mode=dark] .col-xl-10,html[data-netbox-color-mode=light] .col-xl-10{flex:0 0 auto;width:83.33333333%}html .col-xl-11,html[data-netbox-color-mode=dark] .col-xl-11,html[data-netbox-color-mode=light] .col-xl-11{flex:0 0 auto;width:91.66666667%}html .col-xl-12,html[data-netbox-color-mode=dark] .col-xl-12,html[data-netbox-color-mode=light] .col-xl-12{flex:0 0 auto;width:100%}html .offset-xl-0,html[data-netbox-color-mode=dark] .offset-xl-0,html[data-netbox-color-mode=light] .offset-xl-0{margin-left:0}html .offset-xl-1,html[data-netbox-color-mode=dark] .offset-xl-1,html[data-netbox-color-mode=light] .offset-xl-1{margin-left:8.33333333%}html .offset-xl-2,html[data-netbox-color-mode=dark] .offset-xl-2,html[data-netbox-color-mode=light] .offset-xl-2{margin-left:16.66666667%}html .offset-xl-3,html[data-netbox-color-mode=dark] .offset-xl-3,html[data-netbox-color-mode=light] .offset-xl-3{margin-left:25%}html .offset-xl-4,html[data-netbox-color-mode=dark] .offset-xl-4,html[data-netbox-color-mode=light] .offset-xl-4{margin-left:33.33333333%}html .offset-xl-5,html[data-netbox-color-mode=dark] .offset-xl-5,html[data-netbox-color-mode=light] .offset-xl-5{margin-left:41.66666667%}html .offset-xl-6,html[data-netbox-color-mode=dark] .offset-xl-6,html[data-netbox-color-mode=light] .offset-xl-6{margin-left:50%}html .offset-xl-7,html[data-netbox-color-mode=dark] .offset-xl-7,html[data-netbox-color-mode=light] .offset-xl-7{margin-left:58.33333333%}html .offset-xl-8,html[data-netbox-color-mode=dark] .offset-xl-8,html[data-netbox-color-mode=light] .offset-xl-8{margin-left:66.66666667%}html .offset-xl-9,html[data-netbox-color-mode=dark] .offset-xl-9,html[data-netbox-color-mode=light] .offset-xl-9{margin-left:75%}html .offset-xl-10,html[data-netbox-color-mode=dark] .offset-xl-10,html[data-netbox-color-mode=light] .offset-xl-10{margin-left:83.33333333%}html .offset-xl-11,html[data-netbox-color-mode=dark] .offset-xl-11,html[data-netbox-color-mode=light] .offset-xl-11{margin-left:91.66666667%}html .g-xl-0,html .gx-xl-0,html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gx-xl-0,html[data-netbox-color-mode=light] .g-xl-0,html[data-netbox-color-mode=light] .gx-xl-0{--bs-gutter-x: 0}html .g-xl-0,html .gy-xl-0,html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gy-xl-0,html[data-netbox-color-mode=light] .g-xl-0,html[data-netbox-color-mode=light] .gy-xl-0{--bs-gutter-y: 0}html .g-xl-1,html .gx-xl-1,html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gx-xl-1,html[data-netbox-color-mode=light] .g-xl-1,html[data-netbox-color-mode=light] .gx-xl-1{--bs-gutter-x: .25rem}html .g-xl-1,html .gy-xl-1,html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gy-xl-1,html[data-netbox-color-mode=light] .g-xl-1,html[data-netbox-color-mode=light] .gy-xl-1{--bs-gutter-y: .25rem}html .g-xl-2,html .gx-xl-2,html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gx-xl-2,html[data-netbox-color-mode=light] .g-xl-2,html[data-netbox-color-mode=light] .gx-xl-2{--bs-gutter-x: .5rem}html .g-xl-2,html .gy-xl-2,html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gy-xl-2,html[data-netbox-color-mode=light] .g-xl-2,html[data-netbox-color-mode=light] .gy-xl-2{--bs-gutter-y: .5rem}html .g-xl-3,html .gx-xl-3,html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gx-xl-3,html[data-netbox-color-mode=light] .g-xl-3,html[data-netbox-color-mode=light] .gx-xl-3{--bs-gutter-x: 1rem}html .g-xl-3,html .gy-xl-3,html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gy-xl-3,html[data-netbox-color-mode=light] .g-xl-3,html[data-netbox-color-mode=light] .gy-xl-3{--bs-gutter-y: 1rem}html .g-xl-4,html .gx-xl-4,html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gx-xl-4,html[data-netbox-color-mode=light] .g-xl-4,html[data-netbox-color-mode=light] .gx-xl-4{--bs-gutter-x: 1.5rem}html .g-xl-4,html .gy-xl-4,html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gy-xl-4,html[data-netbox-color-mode=light] .g-xl-4,html[data-netbox-color-mode=light] .gy-xl-4{--bs-gutter-y: 1.5rem}html .g-xl-5,html .gx-xl-5,html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gx-xl-5,html[data-netbox-color-mode=light] .g-xl-5,html[data-netbox-color-mode=light] .gx-xl-5{--bs-gutter-x: 3rem}html .g-xl-5,html .gy-xl-5,html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gy-xl-5,html[data-netbox-color-mode=light] .g-xl-5,html[data-netbox-color-mode=light] .gy-xl-5{--bs-gutter-y: 3rem}}@media print and (min-width: 1400px){html .col-xxl-auto,html[data-netbox-color-mode=dark] .col-xxl-auto,html[data-netbox-color-mode=light] .col-xxl-auto{flex:0 0 auto;width:auto}html .col-xxl-1,html[data-netbox-color-mode=dark] .col-xxl-1,html[data-netbox-color-mode=light] .col-xxl-1{flex:0 0 auto;width:8.33333333%}html .col-xxl-2,html[data-netbox-color-mode=dark] .col-xxl-2,html[data-netbox-color-mode=light] .col-xxl-2{flex:0 0 auto;width:16.66666667%}html .col-xxl-3,html[data-netbox-color-mode=dark] .col-xxl-3,html[data-netbox-color-mode=light] .col-xxl-3{flex:0 0 auto;width:25%}html .col-xxl-4,html[data-netbox-color-mode=dark] .col-xxl-4,html[data-netbox-color-mode=light] .col-xxl-4{flex:0 0 auto;width:33.33333333%}html .col-xxl-5,html[data-netbox-color-mode=dark] .col-xxl-5,html[data-netbox-color-mode=light] .col-xxl-5{flex:0 0 auto;width:41.66666667%}html .col-xxl-6,html[data-netbox-color-mode=dark] .col-xxl-6,html[data-netbox-color-mode=light] .col-xxl-6{flex:0 0 auto;width:50%}html .col-xxl-7,html[data-netbox-color-mode=dark] .col-xxl-7,html[data-netbox-color-mode=light] .col-xxl-7{flex:0 0 auto;width:58.33333333%}html .col-xxl-8,html[data-netbox-color-mode=dark] .col-xxl-8,html[data-netbox-color-mode=light] .col-xxl-8{flex:0 0 auto;width:66.66666667%}html .col-xxl-9,html[data-netbox-color-mode=dark] .col-xxl-9,html[data-netbox-color-mode=light] .col-xxl-9{flex:0 0 auto;width:75%}html .col-xxl-10,html[data-netbox-color-mode=dark] .col-xxl-10,html[data-netbox-color-mode=light] .col-xxl-10{flex:0 0 auto;width:83.33333333%}html .col-xxl-11,html[data-netbox-color-mode=dark] .col-xxl-11,html[data-netbox-color-mode=light] .col-xxl-11{flex:0 0 auto;width:91.66666667%}html .col-xxl-12,html[data-netbox-color-mode=dark] .col-xxl-12,html[data-netbox-color-mode=light] .col-xxl-12{flex:0 0 auto;width:100%}html .offset-xxl-0,html[data-netbox-color-mode=dark] .offset-xxl-0,html[data-netbox-color-mode=light] .offset-xxl-0{margin-left:0}html .offset-xxl-1,html[data-netbox-color-mode=dark] .offset-xxl-1,html[data-netbox-color-mode=light] .offset-xxl-1{margin-left:8.33333333%}html .offset-xxl-2,html[data-netbox-color-mode=dark] .offset-xxl-2,html[data-netbox-color-mode=light] .offset-xxl-2{margin-left:16.66666667%}html .offset-xxl-3,html[data-netbox-color-mode=dark] .offset-xxl-3,html[data-netbox-color-mode=light] .offset-xxl-3{margin-left:25%}html .offset-xxl-4,html[data-netbox-color-mode=dark] .offset-xxl-4,html[data-netbox-color-mode=light] .offset-xxl-4{margin-left:33.33333333%}html .offset-xxl-5,html[data-netbox-color-mode=dark] .offset-xxl-5,html[data-netbox-color-mode=light] .offset-xxl-5{margin-left:41.66666667%}html .offset-xxl-6,html[data-netbox-color-mode=dark] .offset-xxl-6,html[data-netbox-color-mode=light] .offset-xxl-6{margin-left:50%}html .offset-xxl-7,html[data-netbox-color-mode=dark] .offset-xxl-7,html[data-netbox-color-mode=light] .offset-xxl-7{margin-left:58.33333333%}html .offset-xxl-8,html[data-netbox-color-mode=dark] .offset-xxl-8,html[data-netbox-color-mode=light] .offset-xxl-8{margin-left:66.66666667%}html .offset-xxl-9,html[data-netbox-color-mode=dark] .offset-xxl-9,html[data-netbox-color-mode=light] .offset-xxl-9{margin-left:75%}html .offset-xxl-10,html[data-netbox-color-mode=dark] .offset-xxl-10,html[data-netbox-color-mode=light] .offset-xxl-10{margin-left:83.33333333%}html .offset-xxl-11,html[data-netbox-color-mode=dark] .offset-xxl-11,html[data-netbox-color-mode=light] .offset-xxl-11{margin-left:91.66666667%}html .g-xxl-0,html .gx-xxl-0,html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gx-xxl-0,html[data-netbox-color-mode=light] .g-xxl-0,html[data-netbox-color-mode=light] .gx-xxl-0{--bs-gutter-x: 0}html .g-xxl-0,html .gy-xxl-0,html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gy-xxl-0,html[data-netbox-color-mode=light] .g-xxl-0,html[data-netbox-color-mode=light] .gy-xxl-0{--bs-gutter-y: 0}html .g-xxl-1,html .gx-xxl-1,html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gx-xxl-1,html[data-netbox-color-mode=light] .g-xxl-1,html[data-netbox-color-mode=light] .gx-xxl-1{--bs-gutter-x: .25rem}html .g-xxl-1,html .gy-xxl-1,html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gy-xxl-1,html[data-netbox-color-mode=light] .g-xxl-1,html[data-netbox-color-mode=light] .gy-xxl-1{--bs-gutter-y: .25rem}html .g-xxl-2,html .gx-xxl-2,html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gx-xxl-2,html[data-netbox-color-mode=light] .g-xxl-2,html[data-netbox-color-mode=light] .gx-xxl-2{--bs-gutter-x: .5rem}html .g-xxl-2,html .gy-xxl-2,html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gy-xxl-2,html[data-netbox-color-mode=light] .g-xxl-2,html[data-netbox-color-mode=light] .gy-xxl-2{--bs-gutter-y: .5rem}html .g-xxl-3,html .gx-xxl-3,html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gx-xxl-3,html[data-netbox-color-mode=light] .g-xxl-3,html[data-netbox-color-mode=light] .gx-xxl-3{--bs-gutter-x: 1rem}html .g-xxl-3,html .gy-xxl-3,html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gy-xxl-3,html[data-netbox-color-mode=light] .g-xxl-3,html[data-netbox-color-mode=light] .gy-xxl-3{--bs-gutter-y: 1rem}html .g-xxl-4,html .gx-xxl-4,html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gx-xxl-4,html[data-netbox-color-mode=light] .g-xxl-4,html[data-netbox-color-mode=light] .gx-xxl-4{--bs-gutter-x: 1.5rem}html .g-xxl-4,html .gy-xxl-4,html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gy-xxl-4,html[data-netbox-color-mode=light] .g-xxl-4,html[data-netbox-color-mode=light] .gy-xxl-4{--bs-gutter-y: 1.5rem}html .g-xxl-5,html .gx-xxl-5,html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gx-xxl-5,html[data-netbox-color-mode=light] .g-xxl-5,html[data-netbox-color-mode=light] .gx-xxl-5{--bs-gutter-x: 3rem}html .g-xxl-5,html .gy-xxl-5,html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gy-xxl-5,html[data-netbox-color-mode=light] .g-xxl-5,html[data-netbox-color-mode=light] .gy-xxl-5{--bs-gutter-y: 3rem}}@media print{html .table,html[data-netbox-color-mode=dark] .table,html[data-netbox-color-mode=light] .table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}html .table>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table>:not(caption)>*>*,html[data-netbox-color-mode=light] .table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}html .table>tbody,html[data-netbox-color-mode=dark] .table>tbody,html[data-netbox-color-mode=light] .table>tbody{vertical-align:inherit}html .table>thead,html[data-netbox-color-mode=dark] .table>thead,html[data-netbox-color-mode=light] .table>thead{vertical-align:bottom}html .table>:not(:last-child)>:last-child>*,html[data-netbox-color-mode=dark] .table>:not(:last-child)>:last-child>*,html[data-netbox-color-mode=light] .table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}}@media print{html .caption-top,html[data-netbox-color-mode=dark] .caption-top,html[data-netbox-color-mode=light] .caption-top{caption-side:top}}@media print{html .table-sm>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-sm>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-sm>:not(caption)>*>*{padding:.25rem}}@media print{html .table-bordered>:not(caption)>*,html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*,html[data-netbox-color-mode=light] .table-bordered>:not(caption)>*{border-width:1px 0}html .table-bordered>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-bordered>:not(caption)>*>*{border-width:0 1px}}@media print{html .table-borderless>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-borderless>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-borderless>:not(caption)>*>*{border-bottom-width:0}}@media print{html .table-striped>tbody>tr:nth-of-type(odd),html[data-netbox-color-mode=dark] .table-striped>tbody>tr:nth-of-type(odd),html[data-netbox-color-mode=light] .table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}}@media print{html .table-active,html[data-netbox-color-mode=dark] .table-active,html[data-netbox-color-mode=light] .table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}}@media print{html .table-hover>tbody>tr:hover,html[data-netbox-color-mode=dark] .table-hover>tbody>tr:hover,html[data-netbox-color-mode=light] .table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}}@media print{html .table-primary,html[data-netbox-color-mode=dark] .table-primary,html[data-netbox-color-mode=light] .table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}}@media print{html .table-secondary,html[data-netbox-color-mode=dark] .table-secondary,html[data-netbox-color-mode=light] .table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}}@media print{html .table-success,html[data-netbox-color-mode=dark] .table-success,html[data-netbox-color-mode=light] .table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}}@media print{html .table-info,html[data-netbox-color-mode=dark] .table-info,html[data-netbox-color-mode=light] .table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}}@media print{html .table-warning,html[data-netbox-color-mode=dark] .table-warning,html[data-netbox-color-mode=light] .table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}}@media print{html .table-danger,html[data-netbox-color-mode=dark] .table-danger,html[data-netbox-color-mode=light] .table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}}@media print{html .table-light,html[data-netbox-color-mode=dark] .table-light,html[data-netbox-color-mode=light] .table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}}@media print{html .table-dark,html[data-netbox-color-mode=dark] .table-dark,html[data-netbox-color-mode=light] .table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}}@media print{html .table-responsive,html[data-netbox-color-mode=dark] .table-responsive,html[data-netbox-color-mode=light] .table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 575.98px){html .table-responsive-sm,html[data-netbox-color-mode=dark] .table-responsive-sm,html[data-netbox-color-mode=light] .table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 767.98px){html .table-responsive-md,html[data-netbox-color-mode=dark] .table-responsive-md,html[data-netbox-color-mode=light] .table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 991.98px){html .table-responsive-lg,html[data-netbox-color-mode=dark] .table-responsive-lg,html[data-netbox-color-mode=light] .table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 1199.98px){html .table-responsive-xl,html[data-netbox-color-mode=dark] .table-responsive-xl,html[data-netbox-color-mode=light] .table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 1399.98px){html .table-responsive-xxl,html[data-netbox-color-mode=dark] .table-responsive-xxl,html[data-netbox-color-mode=light] .table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print{html .form-label,html[data-netbox-color-mode=dark] .form-label,html[data-netbox-color-mode=light] .form-label{margin-bottom:.5rem}}@media print{html .col-form-label,html[data-netbox-color-mode=dark] .col-form-label,html[data-netbox-color-mode=light] .col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}}@media print{html .col-form-label-lg,html[data-netbox-color-mode=dark] .col-form-label-lg,html[data-netbox-color-mode=light] .col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}}@media print{html .col-form-label-sm,html[data-netbox-color-mode=dark] .col-form-label-sm,html[data-netbox-color-mode=light] .col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:.875rem}}@media print{html .form-text,html[data-netbox-color-mode=dark] .form-text,html[data-netbox-color-mode=light] .form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}}@media print{html .form-control,html[data-netbox-color-mode=dark] .form-control,html[data-netbox-color-mode=light] .form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control,html[data-netbox-color-mode=dark] .form-control,html[data-netbox-color-mode=light] .form-control{transition:none}}@media print{html .form-control[type=file],html[data-netbox-color-mode=dark] .form-control[type=file],html[data-netbox-color-mode=light] .form-control[type=file]{overflow:hidden}html .form-control[type=file]:not(:disabled):not([readonly]),html[data-netbox-color-mode=dark] .form-control[type=file]:not(:disabled):not([readonly]),html[data-netbox-color-mode=light] .form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}}@media print{html .form-control:focus,html[data-netbox-color-mode=dark] .form-control:focus,html[data-netbox-color-mode=light] .form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .form-control::-webkit-date-and-time-value,html[data-netbox-color-mode=dark] .form-control::-webkit-date-and-time-value,html[data-netbox-color-mode=light] .form-control::-webkit-date-and-time-value{height:1.5em}}@media print{html .form-control::placeholder,html[data-netbox-color-mode=dark] .form-control::placeholder,html[data-netbox-color-mode=light] .form-control::placeholder{color:#adb5bd;opacity:1}}@media print{html .form-control:disabled,html .form-control[readonly],html[data-netbox-color-mode=dark] .form-control:disabled,html[data-netbox-color-mode=dark] .form-control[readonly],html[data-netbox-color-mode=light] .form-control:disabled,html[data-netbox-color-mode=light] .form-control[readonly]{background-color:#e9ecef;opacity:1}}@media print{html .form-control::file-selector-button,html[data-netbox-color-mode=dark] .form-control::file-selector-button,html[data-netbox-color-mode=light] .form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control::file-selector-button,html[data-netbox-color-mode=dark] .form-control::file-selector-button,html[data-netbox-color-mode=light] .form-control::file-selector-button{transition:none}}@media print{html .form-control:hover:not(:disabled):not([readonly])::file-selector-button,html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::file-selector-button,html[data-netbox-color-mode=light] .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}}@media print{html .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control::-webkit-file-upload-button{transition:none}}@media print{html .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}}@media print{html .form-control-plaintext,html[data-netbox-color-mode=dark] .form-control-plaintext,html[data-netbox-color-mode=light] .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}html .form-control-plaintext.form-control-sm,html .form-control-plaintext.form-control-lg,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-lg,html[data-netbox-color-mode=light] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=light] .form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}}@media print{html .form-control-sm,html[data-netbox-color-mode=dark] .form-control-sm,html[data-netbox-color-mode=light] .form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html .form-control-sm::file-selector-button,html[data-netbox-color-mode=dark] .form-control-sm::file-selector-button,html[data-netbox-color-mode=light] .form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html .form-control-sm::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control-sm::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}}@media print{html .form-control-lg,html[data-netbox-color-mode=dark] .form-control-lg,html[data-netbox-color-mode=light] .form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html .form-control-lg::file-selector-button,html[data-netbox-color-mode=dark] .form-control-lg::file-selector-button,html[data-netbox-color-mode=light] .form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html .form-control-lg::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control-lg::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}}@media print{html textarea.form-control,html[data-netbox-color-mode=dark] textarea.form-control,html[data-netbox-color-mode=light] textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}html textarea.form-control-sm,html[data-netbox-color-mode=dark] textarea.form-control-sm,html[data-netbox-color-mode=light] textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}html textarea.form-control-lg,html[data-netbox-color-mode=dark] textarea.form-control-lg,html[data-netbox-color-mode=light] textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}}@media print{html .form-control-color,html[data-netbox-color-mode=dark] .form-control-color,html[data-netbox-color-mode=light] .form-control-color{max-width:3rem;height:auto;padding:.375rem}html .form-control-color:not(:disabled):not([readonly]),html[data-netbox-color-mode=dark] .form-control-color:not(:disabled):not([readonly]),html[data-netbox-color-mode=light] .form-control-color:not(:disabled):not([readonly]){cursor:pointer}html .form-control-color::-moz-color-swatch,html[data-netbox-color-mode=dark] .form-control-color::-moz-color-swatch,html[data-netbox-color-mode=light] .form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}html .form-control-color::-webkit-color-swatch,html[data-netbox-color-mode=dark] .form-control-color::-webkit-color-swatch,html[data-netbox-color-mode=light] .form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}}@media print{html .form-select,html[data-netbox-color-mode=dark] .form-select,html[data-netbox-color-mode=light] .form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-select,html[data-netbox-color-mode=dark] .form-select,html[data-netbox-color-mode=light] .form-select{transition:none}}@media print{html .form-select:focus,html[data-netbox-color-mode=dark] .form-select:focus,html[data-netbox-color-mode=light] .form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .form-select[multiple],html .form-select[size]:not([size="1"]),html[data-netbox-color-mode=dark] .form-select[multiple],html[data-netbox-color-mode=dark] .form-select[size]:not([size="1"]),html[data-netbox-color-mode=light] .form-select[multiple],html[data-netbox-color-mode=light] .form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}}@media print{html .form-select:disabled,html[data-netbox-color-mode=dark] .form-select:disabled,html[data-netbox-color-mode=light] .form-select:disabled{color:#6c757d;background-color:#e9ecef}}@media print{html .form-select:-moz-focusring,html[data-netbox-color-mode=dark] .form-select:-moz-focusring,html[data-netbox-color-mode=light] .form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}}@media print{html .form-select-sm,html[data-netbox-color-mode=dark] .form-select-sm,html[data-netbox-color-mode=light] .form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}}@media print{html .form-select-lg,html[data-netbox-color-mode=dark] .form-select-lg,html[data-netbox-color-mode=light] .form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}}@media print{html .form-check,html[data-netbox-color-mode=dark] .form-check,html[data-netbox-color-mode=light] .form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}html .form-check .form-check-input,html[data-netbox-color-mode=dark] .form-check .form-check-input,html[data-netbox-color-mode=light] .form-check .form-check-input{float:left;margin-left:-1.5em}}@media print{html .form-check-input,html[data-netbox-color-mode=dark] .form-check-input,html[data-netbox-color-mode=light] .form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact}html .form-check-input[type=checkbox],html[data-netbox-color-mode=dark] .form-check-input[type=checkbox],html[data-netbox-color-mode=light] .form-check-input[type=checkbox]{border-radius:.25em}html .form-check-input[type=radio],html[data-netbox-color-mode=dark] .form-check-input[type=radio],html[data-netbox-color-mode=light] .form-check-input[type=radio]{border-radius:50%}html .form-check-input:active,html[data-netbox-color-mode=dark] .form-check-input:active,html[data-netbox-color-mode=light] .form-check-input:active{filter:brightness(90%)}html .form-check-input:focus,html[data-netbox-color-mode=dark] .form-check-input:focus,html[data-netbox-color-mode=light] .form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html .form-check-input:checked,html[data-netbox-color-mode=dark] .form-check-input:checked,html[data-netbox-color-mode=light] .form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}html .form-check-input:checked[type=checkbox],html[data-netbox-color-mode=dark] .form-check-input:checked[type=checkbox],html[data-netbox-color-mode=light] .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}html .form-check-input:checked[type=radio],html[data-netbox-color-mode=dark] .form-check-input:checked[type=radio],html[data-netbox-color-mode=light] .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}html .form-check-input[type=checkbox]:indeterminate,html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]:indeterminate,html[data-netbox-color-mode=light] .form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}html .form-check-input:disabled,html[data-netbox-color-mode=dark] .form-check-input:disabled,html[data-netbox-color-mode=light] .form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}html .form-check-input[disabled]~.form-check-label,html .form-check-input:disabled~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input:disabled~.form-check-label,html[data-netbox-color-mode=light] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=light] .form-check-input:disabled~.form-check-label{opacity:.5}}@media print{html .form-switch,html[data-netbox-color-mode=dark] .form-switch,html[data-netbox-color-mode=light] .form-switch{padding-left:2.5em}html .form-switch .form-check-input,html[data-netbox-color-mode=dark] .form-switch .form-check-input,html[data-netbox-color-mode=light] .form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-switch .form-check-input,html[data-netbox-color-mode=dark] .form-switch .form-check-input,html[data-netbox-color-mode=light] .form-switch .form-check-input{transition:none}}@media print{html .form-switch .form-check-input:focus,html[data-netbox-color-mode=dark] .form-switch .form-check-input:focus,html[data-netbox-color-mode=light] .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}}@media print{html .form-switch .form-check-input:checked,html[data-netbox-color-mode=dark] .form-switch .form-check-input:checked,html[data-netbox-color-mode=light] .form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}}@media print{html .form-check-inline,html[data-netbox-color-mode=dark] .form-check-inline,html[data-netbox-color-mode=light] .form-check-inline{display:inline-block;margin-right:1rem}}@media print{html .btn-check,html[data-netbox-color-mode=dark] .btn-check,html[data-netbox-color-mode=light] .btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}html .btn-check[disabled]+.btn,html .btn-check:disabled+.btn,html[data-netbox-color-mode=dark] .btn-check[disabled]+.btn,html[data-netbox-color-mode=dark] .btn-check:disabled+.btn,html[data-netbox-color-mode=light] .btn-check[disabled]+.btn,html[data-netbox-color-mode=light] .btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}}@media print{html .form-range,html[data-netbox-color-mode=dark] .form-range,html[data-netbox-color-mode=light] .form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}html .form-range:focus,html[data-netbox-color-mode=dark] .form-range:focus,html[data-netbox-color-mode=light] .form-range:focus{outline:0}html .form-range:focus::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range:focus::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}html .form-range:focus::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range:focus::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}html .form-range::-moz-focus-outer,html[data-netbox-color-mode=dark] .form-range::-moz-focus-outer,html[data-netbox-color-mode=light] .form-range::-moz-focus-outer{border:0}html .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb{transition:none}}@media print{html .form-range::-webkit-slider-thumb:active,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb:active,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}}@media print{html .form-range::-webkit-slider-runnable-track,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-runnable-track,html[data-netbox-color-mode=light] .form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}}@media print{html .form-range::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-range::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb{transition:none}}@media print{html .form-range::-moz-range-thumb:active,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb:active,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb:active{background-color:#b6d4fe}}@media print{html .form-range::-moz-range-track,html[data-netbox-color-mode=dark] .form-range::-moz-range-track,html[data-netbox-color-mode=light] .form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}}@media print{html .form-range:disabled,html[data-netbox-color-mode=dark] .form-range:disabled,html[data-netbox-color-mode=light] .form-range:disabled{pointer-events:none}html .form-range:disabled::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range:disabled::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}html .form-range:disabled::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range:disabled::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range:disabled::-moz-range-thumb{background-color:#adb5bd}}@media print{html .form-floating,html[data-netbox-color-mode=dark] .form-floating,html[data-netbox-color-mode=light] .form-floating{position:relative}html .form-floating>.form-control,html .form-floating>.form-select,html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-select,html[data-netbox-color-mode=light] .form-floating>.form-control,html[data-netbox-color-mode=light] .form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}html .form-floating>label,html[data-netbox-color-mode=dark] .form-floating>label,html[data-netbox-color-mode=light] .form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-floating>label,html[data-netbox-color-mode=dark] .form-floating>label,html[data-netbox-color-mode=light] .form-floating>label{transition:none}}@media print{html .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=light] .form-floating>.form-control{padding:1rem .75rem}html .form-floating>.form-control::placeholder,html[data-netbox-color-mode=dark] .form-floating>.form-control::placeholder,html[data-netbox-color-mode=light] .form-floating>.form-control::placeholder{color:transparent}html .form-floating>.form-control:focus,html .form-floating>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=dark] .form-floating>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=light] .form-floating>.form-control:focus,html[data-netbox-color-mode=light] .form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html .form-floating>.form-control:-webkit-autofill,html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill,html[data-netbox-color-mode=light] .form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.form-select,html[data-netbox-color-mode=dark] .form-floating>.form-select,html[data-netbox-color-mode=light] .form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.form-control:focus~label,html .form-floating>.form-control:not(:placeholder-shown)~label,html .form-floating>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.form-select~label,html[data-netbox-color-mode=light] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=light] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=light] .form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .form-floating>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=light] .form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .input-group,html[data-netbox-color-mode=dark] .input-group,html[data-netbox-color-mode=light] .input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}html .input-group>.form-control,html .input-group>.form-select,html[data-netbox-color-mode=dark] .input-group>.form-control,html[data-netbox-color-mode=dark] .input-group>.form-select,html[data-netbox-color-mode=light] .input-group>.form-control,html[data-netbox-color-mode=light] .input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}html .input-group>.form-control:focus,html .input-group>.form-select:focus,html[data-netbox-color-mode=dark] .input-group>.form-control:focus,html[data-netbox-color-mode=dark] .input-group>.form-select:focus,html[data-netbox-color-mode=light] .input-group>.form-control:focus,html[data-netbox-color-mode=light] .input-group>.form-select:focus{z-index:3}html .input-group .btn,html[data-netbox-color-mode=dark] .input-group .btn,html[data-netbox-color-mode=light] .input-group .btn{position:relative;z-index:2}html .input-group .btn:focus,html[data-netbox-color-mode=dark] .input-group .btn:focus,html[data-netbox-color-mode=light] .input-group .btn:focus{z-index:3}}@media print{html .input-group-text,html[data-netbox-color-mode=dark] .input-group-text,html[data-netbox-color-mode=light] .input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}}@media print{html .input-group-lg>.form-control,html .input-group-lg>.form-select,html .input-group-lg>.input-group-text,html .input-group-lg>.btn,html[data-netbox-color-mode=dark] .input-group-lg>.form-control,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.input-group-text,html[data-netbox-color-mode=dark] .input-group-lg>.btn,html[data-netbox-color-mode=light] .input-group-lg>.form-control,html[data-netbox-color-mode=light] .input-group-lg>.form-select,html[data-netbox-color-mode=light] .input-group-lg>.input-group-text,html[data-netbox-color-mode=light] .input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}}@media print{html .input-group-sm>.form-control,html .input-group-sm>.form-select,html .input-group-sm>.input-group-text,html .input-group-sm>.btn,html[data-netbox-color-mode=dark] .input-group-sm>.form-control,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.input-group-text,html[data-netbox-color-mode=dark] .input-group-sm>.btn,html[data-netbox-color-mode=light] .input-group-sm>.form-control,html[data-netbox-color-mode=light] .input-group-sm>.form-select,html[data-netbox-color-mode=light] .input-group-sm>.input-group-text,html[data-netbox-color-mode=light] .input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}}@media print{html .input-group-lg>.form-select,html .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=light] .input-group-lg>.form-select,html[data-netbox-color-mode=light] .input-group-sm>.form-select{padding-right:3rem}}@media print{html .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),html[data-netbox-color-mode=light] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=light] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}html .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),html[data-netbox-color-mode=dark] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),html[data-netbox-color-mode=light] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=light] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}html .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback),html[data-netbox-color-mode=dark] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback),html[data-netbox-color-mode=light] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}}@media print{html .valid-feedback,html[data-netbox-color-mode=dark] .valid-feedback,html[data-netbox-color-mode=light] .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}}@media print{html .valid-tooltip,html[data-netbox-color-mode=dark] .valid-tooltip,html[data-netbox-color-mode=light] .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}}@media print{.was-validated html:valid~.valid-feedback,.was-validated html:valid~.valid-tooltip,html.is-valid~.valid-feedback,html.is-valid~.valid-tooltip,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-tooltip,html[data-netbox-color-mode=dark].is-valid~.valid-feedback,html[data-netbox-color-mode=dark].is-valid~.valid-tooltip,.was-validated html[data-netbox-color-mode=light]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=light]:valid~.valid-tooltip,html[data-netbox-color-mode=light].is-valid~.valid-feedback,html[data-netbox-color-mode=light].is-valid~.valid-tooltip{display:block}}@media print{.was-validated html .form-control:valid,html .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-control:valid,html[data-netbox-color-mode=dark] .form-control.is-valid,.was-validated html[data-netbox-color-mode=light] .form-control:valid,html[data-netbox-color-mode=light] .form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html .form-control:valid:focus,html .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-control:valid:focus,html[data-netbox-color-mode=dark] .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-control:valid:focus,html[data-netbox-color-mode=light] .form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}}@media print{.was-validated html textarea.form-control:valid,html textarea.form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] textarea.form-control:valid,html[data-netbox-color-mode=dark] textarea.form-control.is-valid,.was-validated html[data-netbox-color-mode=light] textarea.form-control:valid,html[data-netbox-color-mode=light] textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}}@media print{.was-validated html .form-select:valid,html .form-select.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-select:valid,html[data-netbox-color-mode=dark] .form-select.is-valid,.was-validated html[data-netbox-color-mode=light] .form-select:valid,html[data-netbox-color-mode=light] .form-select.is-valid{border-color:#198754}.was-validated html .form-select:valid:not([multiple]):not([size]),.was-validated html .form-select:valid:not([multiple])[size="1"],html .form-select.is-valid:not([multiple]):not([size]),html .form-select.is-valid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=light] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=light] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=light] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=light] .form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html .form-select:valid:focus,html .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-select:valid:focus,html[data-netbox-color-mode=dark] .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-select:valid:focus,html[data-netbox-color-mode=light] .form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}}@media print{.was-validated html .form-check-input:valid,html .form-check-input.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid,html[data-netbox-color-mode=dark] .form-check-input.is-valid,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid,html[data-netbox-color-mode=light] .form-check-input.is-valid{border-color:#198754}.was-validated html .form-check-input:valid:checked,html .form-check-input.is-valid:checked,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-valid:checked,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid:checked,html[data-netbox-color-mode=light] .form-check-input.is-valid:checked{background-color:#198754}.was-validated html .form-check-input:valid:focus,html .form-check-input.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid:focus,html[data-netbox-color-mode=light] .form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated html .form-check-input:valid~.form-check-label,html .form-check-input.is-valid~.form-check-label,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-valid~.form-check-label,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=light] .form-check-input.is-valid~.form-check-label{color:#198754}}@media print{html .form-check-inline .form-check-input~.valid-feedback,html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.valid-feedback,html[data-netbox-color-mode=light] .form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}}@media print{.was-validated html .input-group .form-control:valid,html .input-group .form-control.is-valid,.was-validated html .input-group .form-select:valid,html .input-group .form-select.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:valid,html[data-netbox-color-mode=light] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:valid,html[data-netbox-color-mode=light] .input-group .form-select.is-valid{z-index:1}.was-validated html .input-group .form-control:valid:focus,html .input-group .form-control.is-valid:focus,.was-validated html .input-group .form-select:valid:focus,html .input-group .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:valid:focus,html[data-netbox-color-mode=light] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:valid:focus,html[data-netbox-color-mode=light] .input-group .form-select.is-valid:focus{z-index:3}}@media print{html .invalid-feedback,html[data-netbox-color-mode=dark] .invalid-feedback,html[data-netbox-color-mode=light] .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}}@media print{html .invalid-tooltip,html[data-netbox-color-mode=dark] .invalid-tooltip,html[data-netbox-color-mode=light] .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}}@media print{.was-validated html:invalid~.invalid-feedback,.was-validated html:invalid~.invalid-tooltip,html.is-invalid~.invalid-feedback,html.is-invalid~.invalid-tooltip,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-tooltip,html[data-netbox-color-mode=dark].is-invalid~.invalid-feedback,html[data-netbox-color-mode=dark].is-invalid~.invalid-tooltip,.was-validated html[data-netbox-color-mode=light]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=light]:invalid~.invalid-tooltip,html[data-netbox-color-mode=light].is-invalid~.invalid-feedback,html[data-netbox-color-mode=light].is-invalid~.invalid-tooltip{display:block}}@media print{.was-validated html .form-control:invalid,html .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-control:invalid,html[data-netbox-color-mode=dark] .form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-control:invalid,html[data-netbox-color-mode=light] .form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html .form-control:invalid:focus,html .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-control:invalid:focus,html[data-netbox-color-mode=dark] .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-control:invalid:focus,html[data-netbox-color-mode=light] .form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}}@media print{.was-validated html textarea.form-control:invalid,html textarea.form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] textarea.form-control:invalid,html[data-netbox-color-mode=dark] textarea.form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] textarea.form-control:invalid,html[data-netbox-color-mode=light] textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}}@media print{.was-validated html .form-select:invalid,html .form-select.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-select:invalid,html[data-netbox-color-mode=dark] .form-select.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-select:invalid,html[data-netbox-color-mode=light] .form-select.is-invalid{border-color:#dc3545}.was-validated html .form-select:invalid:not([multiple]):not([size]),.was-validated html .form-select:invalid:not([multiple])[size="1"],html .form-select.is-invalid:not([multiple]):not([size]),html .form-select.is-invalid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=light] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=light] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=light] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=light] .form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html .form-select:invalid:focus,html .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:focus,html[data-netbox-color-mode=dark] .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-select:invalid:focus,html[data-netbox-color-mode=light] .form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}}@media print{.was-validated html .form-check-input:invalid,html .form-check-input.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid,html[data-netbox-color-mode=dark] .form-check-input.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid,html[data-netbox-color-mode=light] .form-check-input.is-invalid{border-color:#dc3545}.was-validated html .form-check-input:invalid:checked,html .form-check-input.is-invalid:checked,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:checked,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid:checked,html[data-netbox-color-mode=light] .form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated html .form-check-input:invalid:focus,html .form-check-input.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid:focus,html[data-netbox-color-mode=light] .form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated html .form-check-input:invalid~.form-check-label,html .form-check-input.is-invalid~.form-check-label,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-invalid~.form-check-label,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=light] .form-check-input.is-invalid~.form-check-label{color:#dc3545}}@media print{html .form-check-inline .form-check-input~.invalid-feedback,html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.invalid-feedback,html[data-netbox-color-mode=light] .form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}}@media print{.was-validated html .input-group .form-control:invalid,html .input-group .form-control.is-invalid,.was-validated html .input-group .form-select:invalid,html .input-group .form-select.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:invalid,html[data-netbox-color-mode=light] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:invalid,html[data-netbox-color-mode=light] .input-group .form-select.is-invalid{z-index:2}.was-validated html .input-group .form-control:invalid:focus,html .input-group .form-control.is-invalid:focus,.was-validated html .input-group .form-select:invalid:focus,html .input-group .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=light] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=light] .input-group .form-select.is-invalid:focus{z-index:3}}@media print{html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{transition:none}}@media print{html .btn:hover,html[data-netbox-color-mode=dark] .btn:hover,html[data-netbox-color-mode=light] .btn:hover{color:#212529}}@media print{.btn-check:focus+html .btn,html .btn:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=dark] .btn:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn,html[data-netbox-color-mode=light] .btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .btn:disabled,html .btn.disabled,fieldset:disabled html .btn,html[data-netbox-color-mode=dark] .btn:disabled,html[data-netbox-color-mode=dark] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn:disabled,html[data-netbox-color-mode=light] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=light] .btn{pointer-events:none;opacity:.65}}@media print{html .btn-primary,html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=light] .btn-primary{color:#fff;background-color:#337ab7;border-color:#337ab7}html .btn-primary:hover,html[data-netbox-color-mode=dark] .btn-primary:hover,html[data-netbox-color-mode=light] .btn-primary:hover{color:#fff;background-color:#2b689c;border-color:#296292}.btn-check:focus+html .btn-primary,html .btn-primary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-primary,html[data-netbox-color-mode=light] .btn-primary:focus{color:#fff;background-color:#2b689c;border-color:#296292;box-shadow:0 0 0 .25rem #528ec280}.btn-check:checked+html .btn-primary,.btn-check:active+html .btn-primary,html .btn-primary:active,html .btn-primary.active,.show>html .btn-primary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:active,html[data-netbox-color-mode=dark] .btn-primary.active,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-primary,.btn-check:active+html[data-netbox-color-mode=light] .btn-primary,html[data-netbox-color-mode=light] .btn-primary:active,html[data-netbox-color-mode=light] .btn-primary.active,.show>html[data-netbox-color-mode=light] .btn-primary.dropdown-toggle{color:#fff;background-color:#296292;border-color:#265c89}.btn-check:checked+html .btn-primary:focus,.btn-check:active+html .btn-primary:focus,html .btn-primary:active:focus,html .btn-primary.active:focus,.show>html .btn-primary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary:focus,html[data-netbox-color-mode=dark] .btn-primary:active:focus,html[data-netbox-color-mode=dark] .btn-primary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-primary:focus,html[data-netbox-color-mode=light] .btn-primary:active:focus,html[data-netbox-color-mode=light] .btn-primary.active:focus,.show>html[data-netbox-color-mode=light] .btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #528ec280}html .btn-primary:disabled,html .btn-primary.disabled,html[data-netbox-color-mode=dark] .btn-primary:disabled,html[data-netbox-color-mode=dark] .btn-primary.disabled,html[data-netbox-color-mode=light] .btn-primary:disabled,html[data-netbox-color-mode=light] .btn-primary.disabled{color:#fff;background-color:#337ab7;border-color:#337ab7}}@media print{html .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}html .btn-secondary:hover,html[data-netbox-color-mode=dark] .btn-secondary:hover,html[data-netbox-color-mode=light] .btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+html .btn-secondary,html .btn-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+html .btn-secondary,.btn-check:active+html .btn-secondary,html .btn-secondary:active,html .btn-secondary.active,.show>html .btn-secondary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:active,html[data-netbox-color-mode=dark] .btn-secondary.active,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=light] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary:active,html[data-netbox-color-mode=light] .btn-secondary.active,.show>html[data-netbox-color-mode=light] .btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+html .btn-secondary:focus,.btn-check:active+html .btn-secondary:focus,html .btn-secondary:active:focus,html .btn-secondary.active:focus,.show>html .btn-secondary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary:focus,html[data-netbox-color-mode=dark] .btn-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-secondary:focus,html[data-netbox-color-mode=light] .btn-secondary:active:focus,html[data-netbox-color-mode=light] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=light] .btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}html .btn-secondary:disabled,html .btn-secondary.disabled,html[data-netbox-color-mode=dark] .btn-secondary:disabled,html[data-netbox-color-mode=dark] .btn-secondary.disabled,html[data-netbox-color-mode=light] .btn-secondary:disabled,html[data-netbox-color-mode=light] .btn-secondary.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}}@media print{html .btn-success,html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=light] .btn-success{color:#fff;background-color:#198754;border-color:#198754}html .btn-success:hover,html[data-netbox-color-mode=dark] .btn-success:hover,html[data-netbox-color-mode=light] .btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html .btn-success,html .btn-success:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-success,html[data-netbox-color-mode=light] .btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html .btn-success,.btn-check:active+html .btn-success,html .btn-success:active,html .btn-success.active,.show>html .btn-success.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:active,html[data-netbox-color-mode=dark] .btn-success.active,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-success,.btn-check:active+html[data-netbox-color-mode=light] .btn-success,html[data-netbox-color-mode=light] .btn-success:active,html[data-netbox-color-mode=light] .btn-success.active,.show>html[data-netbox-color-mode=light] .btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html .btn-success:focus,.btn-check:active+html .btn-success:focus,html .btn-success:active:focus,html .btn-success.active:focus,.show>html .btn-success.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success:focus,html[data-netbox-color-mode=dark] .btn-success:active:focus,html[data-netbox-color-mode=dark] .btn-success.active:focus,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-success:focus,html[data-netbox-color-mode=light] .btn-success:active:focus,html[data-netbox-color-mode=light] .btn-success.active:focus,.show>html[data-netbox-color-mode=light] .btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html .btn-success:disabled,html .btn-success.disabled,html[data-netbox-color-mode=dark] .btn-success:disabled,html[data-netbox-color-mode=dark] .btn-success.disabled,html[data-netbox-color-mode=light] .btn-success:disabled,html[data-netbox-color-mode=light] .btn-success.disabled{color:#fff;background-color:#198754;border-color:#198754}}@media print{html .btn-info,html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=light] .btn-info{color:#000;background-color:#54d6f0;border-color:#54d6f0}html .btn-info:hover,html[data-netbox-color-mode=dark] .btn-info:hover,html[data-netbox-color-mode=light] .btn-info:hover{color:#000;background-color:#6edcf2;border-color:#65daf2}.btn-check:focus+html .btn-info,html .btn-info:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-info,html[data-netbox-color-mode=light] .btn-info:focus{color:#000;background-color:#6edcf2;border-color:#65daf2;box-shadow:0 0 0 .25rem #47b6cc80}.btn-check:checked+html .btn-info,.btn-check:active+html .btn-info,html .btn-info:active,html .btn-info.active,.show>html .btn-info.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:active,html[data-netbox-color-mode=dark] .btn-info.active,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-info,.btn-check:active+html[data-netbox-color-mode=light] .btn-info,html[data-netbox-color-mode=light] .btn-info:active,html[data-netbox-color-mode=light] .btn-info.active,.show>html[data-netbox-color-mode=light] .btn-info.dropdown-toggle{color:#000;background-color:#76def3;border-color:#65daf2}.btn-check:checked+html .btn-info:focus,.btn-check:active+html .btn-info:focus,html .btn-info:active:focus,html .btn-info.active:focus,.show>html .btn-info.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info:focus,html[data-netbox-color-mode=dark] .btn-info:active:focus,html[data-netbox-color-mode=dark] .btn-info.active:focus,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-info:focus,html[data-netbox-color-mode=light] .btn-info:active:focus,html[data-netbox-color-mode=light] .btn-info.active:focus,.show>html[data-netbox-color-mode=light] .btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #47b6cc80}html .btn-info:disabled,html .btn-info.disabled,html[data-netbox-color-mode=dark] .btn-info:disabled,html[data-netbox-color-mode=dark] .btn-info.disabled,html[data-netbox-color-mode=light] .btn-info:disabled,html[data-netbox-color-mode=light] .btn-info.disabled{color:#000;background-color:#54d6f0;border-color:#54d6f0}}@media print{html .btn-warning,html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=light] .btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}html .btn-warning:hover,html[data-netbox-color-mode=dark] .btn-warning:hover,html[data-netbox-color-mode=light] .btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html .btn-warning,html .btn-warning:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-warning,html[data-netbox-color-mode=light] .btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html .btn-warning,.btn-check:active+html .btn-warning,html .btn-warning:active,html .btn-warning.active,.show>html .btn-warning.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:active,html[data-netbox-color-mode=dark] .btn-warning.active,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-warning,.btn-check:active+html[data-netbox-color-mode=light] .btn-warning,html[data-netbox-color-mode=light] .btn-warning:active,html[data-netbox-color-mode=light] .btn-warning.active,.show>html[data-netbox-color-mode=light] .btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html .btn-warning:focus,.btn-check:active+html .btn-warning:focus,html .btn-warning:active:focus,html .btn-warning.active:focus,.show>html .btn-warning.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning:focus,html[data-netbox-color-mode=dark] .btn-warning:active:focus,html[data-netbox-color-mode=dark] .btn-warning.active:focus,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-warning:focus,html[data-netbox-color-mode=light] .btn-warning:active:focus,html[data-netbox-color-mode=light] .btn-warning.active:focus,.show>html[data-netbox-color-mode=light] .btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html .btn-warning:disabled,html .btn-warning.disabled,html[data-netbox-color-mode=dark] .btn-warning:disabled,html[data-netbox-color-mode=dark] .btn-warning.disabled,html[data-netbox-color-mode=light] .btn-warning:disabled,html[data-netbox-color-mode=light] .btn-warning.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}}@media print{html .btn-danger,html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=light] .btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}html .btn-danger:hover,html[data-netbox-color-mode=dark] .btn-danger:hover,html[data-netbox-color-mode=light] .btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html .btn-danger,html .btn-danger:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-danger,html[data-netbox-color-mode=light] .btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html .btn-danger,.btn-check:active+html .btn-danger,html .btn-danger:active,html .btn-danger.active,.show>html .btn-danger.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:active,html[data-netbox-color-mode=dark] .btn-danger.active,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-danger,.btn-check:active+html[data-netbox-color-mode=light] .btn-danger,html[data-netbox-color-mode=light] .btn-danger:active,html[data-netbox-color-mode=light] .btn-danger.active,.show>html[data-netbox-color-mode=light] .btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html .btn-danger:focus,.btn-check:active+html .btn-danger:focus,html .btn-danger:active:focus,html .btn-danger.active:focus,.show>html .btn-danger.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger:focus,html[data-netbox-color-mode=dark] .btn-danger:active:focus,html[data-netbox-color-mode=dark] .btn-danger.active:focus,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-danger:focus,html[data-netbox-color-mode=light] .btn-danger:active:focus,html[data-netbox-color-mode=light] .btn-danger.active:focus,.show>html[data-netbox-color-mode=light] .btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html .btn-danger:disabled,html .btn-danger.disabled,html[data-netbox-color-mode=dark] .btn-danger:disabled,html[data-netbox-color-mode=dark] .btn-danger.disabled,html[data-netbox-color-mode=light] .btn-danger:disabled,html[data-netbox-color-mode=light] .btn-danger.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}}@media print{html .btn-light,html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=light] .btn-light{color:#000;background-color:#e9ecef;border-color:#e9ecef}html .btn-light:hover,html[data-netbox-color-mode=dark] .btn-light:hover,html[data-netbox-color-mode=light] .btn-light:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+html .btn-light,html .btn-light:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-light,html[data-netbox-color-mode=light] .btn-light:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+html .btn-light,.btn-check:active+html .btn-light,html .btn-light:active,html .btn-light.active,.show>html .btn-light.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:active,html[data-netbox-color-mode=dark] .btn-light.active,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-light,.btn-check:active+html[data-netbox-color-mode=light] .btn-light,html[data-netbox-color-mode=light] .btn-light:active,html[data-netbox-color-mode=light] .btn-light.active,.show>html[data-netbox-color-mode=light] .btn-light.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+html .btn-light:focus,.btn-check:active+html .btn-light:focus,html .btn-light:active:focus,html .btn-light.active:focus,.show>html .btn-light.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light:focus,html[data-netbox-color-mode=dark] .btn-light:active:focus,html[data-netbox-color-mode=dark] .btn-light.active:focus,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-light:focus,html[data-netbox-color-mode=light] .btn-light:active:focus,html[data-netbox-color-mode=light] .btn-light.active:focus,.show>html[data-netbox-color-mode=light] .btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}html .btn-light:disabled,html .btn-light.disabled,html[data-netbox-color-mode=dark] .btn-light:disabled,html[data-netbox-color-mode=dark] .btn-light.disabled,html[data-netbox-color-mode=light] .btn-light:disabled,html[data-netbox-color-mode=light] .btn-light.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}}@media print{html .btn-dark,html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=light] .btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}html .btn-dark:hover,html[data-netbox-color-mode=dark] .btn-dark:hover,html[data-netbox-color-mode=light] .btn-dark:hover{color:#fff;background-color:#2c3136;border-color:#2a2e33}.btn-check:focus+html .btn-dark,html .btn-dark:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-dark,html[data-netbox-color-mode=light] .btn-dark:focus{color:#fff;background-color:#2c3136;border-color:#2a2e33;box-shadow:0 0 0 .25rem #52585d80}.btn-check:checked+html .btn-dark,.btn-check:active+html .btn-dark,html .btn-dark:active,html .btn-dark.active,.show>html .btn-dark.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:active,html[data-netbox-color-mode=dark] .btn-dark.active,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-dark,.btn-check:active+html[data-netbox-color-mode=light] .btn-dark,html[data-netbox-color-mode=light] .btn-dark:active,html[data-netbox-color-mode=light] .btn-dark.active,.show>html[data-netbox-color-mode=light] .btn-dark.dropdown-toggle{color:#fff;background-color:#2a2e33;border-color:#272c30}.btn-check:checked+html .btn-dark:focus,.btn-check:active+html .btn-dark:focus,html .btn-dark:active:focus,html .btn-dark.active:focus,.show>html .btn-dark.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark:focus,html[data-netbox-color-mode=dark] .btn-dark:active:focus,html[data-netbox-color-mode=dark] .btn-dark.active:focus,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-dark:focus,html[data-netbox-color-mode=light] .btn-dark:active:focus,html[data-netbox-color-mode=light] .btn-dark.active:focus,.show>html[data-netbox-color-mode=light] .btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52585d80}html .btn-dark:disabled,html .btn-dark.disabled,html[data-netbox-color-mode=dark] .btn-dark:disabled,html[data-netbox-color-mode=dark] .btn-dark.disabled,html[data-netbox-color-mode=light] .btn-dark:disabled,html[data-netbox-color-mode=light] .btn-dark.disabled{color:#fff;background-color:#343a40;border-color:#343a40}}@media print{html .btn-blue,html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=light] .btn-blue{color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .btn-blue:hover,html[data-netbox-color-mode=dark] .btn-blue:hover,html[data-netbox-color-mode=light] .btn-blue:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+html .btn-blue,html .btn-blue:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue,html[data-netbox-color-mode=light] .btn-blue:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+html .btn-blue,.btn-check:active+html .btn-blue,html .btn-blue:active,html .btn-blue.active,.show>html .btn-blue.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:active,html[data-netbox-color-mode=dark] .btn-blue.active,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue,html[data-netbox-color-mode=light] .btn-blue:active,html[data-netbox-color-mode=light] .btn-blue.active,.show>html[data-netbox-color-mode=light] .btn-blue.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+html .btn-blue:focus,.btn-check:active+html .btn-blue:focus,html .btn-blue:active:focus,html .btn-blue.active:focus,.show>html .btn-blue.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue:focus,html[data-netbox-color-mode=dark] .btn-blue:active:focus,html[data-netbox-color-mode=dark] .btn-blue.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue:focus,html[data-netbox-color-mode=light] .btn-blue:active:focus,html[data-netbox-color-mode=light] .btn-blue.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}html .btn-blue:disabled,html .btn-blue.disabled,html[data-netbox-color-mode=dark] .btn-blue:disabled,html[data-netbox-color-mode=dark] .btn-blue.disabled,html[data-netbox-color-mode=light] .btn-blue:disabled,html[data-netbox-color-mode=light] .btn-blue.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}}@media print{html .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo{color:#fff;background-color:#6610f2;border-color:#6610f2}html .btn-indigo:hover,html[data-netbox-color-mode=dark] .btn-indigo:hover,html[data-netbox-color-mode=light] .btn-indigo:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+html .btn-indigo,html .btn-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+html .btn-indigo,.btn-check:active+html .btn-indigo,html .btn-indigo:active,html .btn-indigo.active,.show>html .btn-indigo.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:active,html[data-netbox-color-mode=dark] .btn-indigo.active,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo:active,html[data-netbox-color-mode=light] .btn-indigo.active,.show>html[data-netbox-color-mode=light] .btn-indigo.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+html .btn-indigo:focus,.btn-check:active+html .btn-indigo:focus,html .btn-indigo:active:focus,html .btn-indigo.active:focus,.show>html .btn-indigo.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo:focus,html[data-netbox-color-mode=dark] .btn-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo:focus,html[data-netbox-color-mode=light] .btn-indigo:active:focus,html[data-netbox-color-mode=light] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}html .btn-indigo:disabled,html .btn-indigo.disabled,html[data-netbox-color-mode=dark] .btn-indigo:disabled,html[data-netbox-color-mode=dark] .btn-indigo.disabled,html[data-netbox-color-mode=light] .btn-indigo:disabled,html[data-netbox-color-mode=light] .btn-indigo.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}}@media print{html .btn-purple,html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=light] .btn-purple{color:#fff;background-color:#6f42c1;border-color:#6f42c1}html .btn-purple:hover,html[data-netbox-color-mode=dark] .btn-purple:hover,html[data-netbox-color-mode=light] .btn-purple:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+html .btn-purple,html .btn-purple:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple,html[data-netbox-color-mode=light] .btn-purple:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+html .btn-purple,.btn-check:active+html .btn-purple,html .btn-purple:active,html .btn-purple.active,.show>html .btn-purple.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:active,html[data-netbox-color-mode=dark] .btn-purple.active,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple,html[data-netbox-color-mode=light] .btn-purple:active,html[data-netbox-color-mode=light] .btn-purple.active,.show>html[data-netbox-color-mode=light] .btn-purple.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+html .btn-purple:focus,.btn-check:active+html .btn-purple:focus,html .btn-purple:active:focus,html .btn-purple.active:focus,.show>html .btn-purple.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple:focus,html[data-netbox-color-mode=dark] .btn-purple:active:focus,html[data-netbox-color-mode=dark] .btn-purple.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple:focus,html[data-netbox-color-mode=light] .btn-purple:active:focus,html[data-netbox-color-mode=light] .btn-purple.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}html .btn-purple:disabled,html .btn-purple.disabled,html[data-netbox-color-mode=dark] .btn-purple:disabled,html[data-netbox-color-mode=dark] .btn-purple.disabled,html[data-netbox-color-mode=light] .btn-purple:disabled,html[data-netbox-color-mode=light] .btn-purple.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}}@media print{html .btn-pink,html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=light] .btn-pink{color:#fff;background-color:#d63384;border-color:#d63384}html .btn-pink:hover,html[data-netbox-color-mode=dark] .btn-pink:hover,html[data-netbox-color-mode=light] .btn-pink:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+html .btn-pink,html .btn-pink:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink,html[data-netbox-color-mode=light] .btn-pink:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+html .btn-pink,.btn-check:active+html .btn-pink,html .btn-pink:active,html .btn-pink.active,.show>html .btn-pink.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:active,html[data-netbox-color-mode=dark] .btn-pink.active,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink,html[data-netbox-color-mode=light] .btn-pink:active,html[data-netbox-color-mode=light] .btn-pink.active,.show>html[data-netbox-color-mode=light] .btn-pink.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+html .btn-pink:focus,.btn-check:active+html .btn-pink:focus,html .btn-pink:active:focus,html .btn-pink.active:focus,.show>html .btn-pink.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink:focus,html[data-netbox-color-mode=dark] .btn-pink:active:focus,html[data-netbox-color-mode=dark] .btn-pink.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink:focus,html[data-netbox-color-mode=light] .btn-pink:active:focus,html[data-netbox-color-mode=light] .btn-pink.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}html .btn-pink:disabled,html .btn-pink.disabled,html[data-netbox-color-mode=dark] .btn-pink:disabled,html[data-netbox-color-mode=dark] .btn-pink.disabled,html[data-netbox-color-mode=light] .btn-pink:disabled,html[data-netbox-color-mode=light] .btn-pink.disabled{color:#fff;background-color:#d63384;border-color:#d63384}}@media print{html .btn-red,html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=light] .btn-red{color:#fff;background-color:#dc3545;border-color:#dc3545}html .btn-red:hover,html[data-netbox-color-mode=dark] .btn-red:hover,html[data-netbox-color-mode=light] .btn-red:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html .btn-red,html .btn-red:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red,html[data-netbox-color-mode=light] .btn-red:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html .btn-red,.btn-check:active+html .btn-red,html .btn-red:active,html .btn-red.active,.show>html .btn-red.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:active,html[data-netbox-color-mode=dark] .btn-red.active,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red,.btn-check:active+html[data-netbox-color-mode=light] .btn-red,html[data-netbox-color-mode=light] .btn-red:active,html[data-netbox-color-mode=light] .btn-red.active,.show>html[data-netbox-color-mode=light] .btn-red.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html .btn-red:focus,.btn-check:active+html .btn-red:focus,html .btn-red:active:focus,html .btn-red.active:focus,.show>html .btn-red.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red:focus,html[data-netbox-color-mode=dark] .btn-red:active:focus,html[data-netbox-color-mode=dark] .btn-red.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red:focus,html[data-netbox-color-mode=light] .btn-red:active:focus,html[data-netbox-color-mode=light] .btn-red.active:focus,.show>html[data-netbox-color-mode=light] .btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html .btn-red:disabled,html .btn-red.disabled,html[data-netbox-color-mode=dark] .btn-red:disabled,html[data-netbox-color-mode=dark] .btn-red.disabled,html[data-netbox-color-mode=light] .btn-red:disabled,html[data-netbox-color-mode=light] .btn-red.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}}@media print{html .btn-orange,html[data-netbox-color-mode=dark] .btn-orange,html[data-netbox-color-mode=light] .btn-orange{color:#000;background-color:#fd7e14;border-color:#fd7e14}html .btn-orange:hover,html[data-netbox-color-mode=dark] .btn-orange:hover,html[data-netbox-color-mode=light] .btn-orange:hover{color:#000;background-color:#fd9137;border-color:#fd8b2c}.btn-check:focus+html .btn-orange,html .btn-orange:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-orange,html[data-netbox-color-mode=dark] .btn-orange:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-orange,html[data-netbox-color-mode=light] .btn-orange:focus{color:#000;background-color:#fd9137;border-color:#fd8b2c;box-shadow:0 0 0 .25rem #d76b1180}.btn-check:checked+html .btn-orange,.btn-check:active+html .btn-orange,html .btn-orange:active,html .btn-orange.active,.show>html .btn-orange.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-orange,.btn-check:active+html[data-netbox-color-mode=dark] .btn-orange,html[data-netbox-color-mode=dark] .btn-orange:active,html[data-netbox-color-mode=dark] .btn-orange.active,.show>html[data-netbox-color-mode=dark] .btn-orange.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-orange,.btn-check:active+html[data-netbox-color-mode=light] .btn-orange,html[data-netbox-color-mode=light] .btn-orange:active,html[data-netbox-color-mode=light] .btn-orange.active,.show>html[data-netbox-color-mode=light] .btn-orange.dropdown-toggle{color:#000;background-color:#fd9843;border-color:#fd8b2c}.btn-check:checked+html .btn-orange:focus,.btn-check:active+html .btn-orange:focus,html .btn-orange:active:focus,html .btn-orange.active:focus,.show>html .btn-orange.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-orange:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-orange:focus,html[data-netbox-color-mode=dark] .btn-orange:active:focus,html[data-netbox-color-mode=dark] .btn-orange.active:focus,.show>html[data-netbox-color-mode=dark] .btn-orange.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-orange:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-orange:focus,html[data-netbox-color-mode=light] .btn-orange:active:focus,html[data-netbox-color-mode=light] .btn-orange.active:focus,.show>html[data-netbox-color-mode=light] .btn-orange.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d76b1180}html .btn-orange:disabled,html .btn-orange.disabled,html[data-netbox-color-mode=dark] .btn-orange:disabled,html[data-netbox-color-mode=dark] .btn-orange.disabled,html[data-netbox-color-mode=light] .btn-orange:disabled,html[data-netbox-color-mode=light] .btn-orange.disabled{color:#000;background-color:#fd7e14;border-color:#fd7e14}}@media print{html .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow{color:#000;background-color:#ffc107;border-color:#ffc107}html .btn-yellow:hover,html[data-netbox-color-mode=dark] .btn-yellow:hover,html[data-netbox-color-mode=light] .btn-yellow:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html .btn-yellow,html .btn-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html .btn-yellow,.btn-check:active+html .btn-yellow,html .btn-yellow:active,html .btn-yellow.active,.show>html .btn-yellow.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:active,html[data-netbox-color-mode=dark] .btn-yellow.active,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow:active,html[data-netbox-color-mode=light] .btn-yellow.active,.show>html[data-netbox-color-mode=light] .btn-yellow.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html .btn-yellow:focus,.btn-check:active+html .btn-yellow:focus,html .btn-yellow:active:focus,html .btn-yellow.active:focus,.show>html .btn-yellow.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow:focus,html[data-netbox-color-mode=dark] .btn-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow:focus,html[data-netbox-color-mode=light] .btn-yellow:active:focus,html[data-netbox-color-mode=light] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html .btn-yellow:disabled,html .btn-yellow.disabled,html[data-netbox-color-mode=dark] .btn-yellow:disabled,html[data-netbox-color-mode=dark] .btn-yellow.disabled,html[data-netbox-color-mode=light] .btn-yellow:disabled,html[data-netbox-color-mode=light] .btn-yellow.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}}@media print{html .btn-green,html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=light] .btn-green{color:#fff;background-color:#198754;border-color:#198754}html .btn-green:hover,html[data-netbox-color-mode=dark] .btn-green:hover,html[data-netbox-color-mode=light] .btn-green:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html .btn-green,html .btn-green:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green,html[data-netbox-color-mode=light] .btn-green:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html .btn-green,.btn-check:active+html .btn-green,html .btn-green:active,html .btn-green.active,.show>html .btn-green.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:active,html[data-netbox-color-mode=dark] .btn-green.active,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green,.btn-check:active+html[data-netbox-color-mode=light] .btn-green,html[data-netbox-color-mode=light] .btn-green:active,html[data-netbox-color-mode=light] .btn-green.active,.show>html[data-netbox-color-mode=light] .btn-green.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html .btn-green:focus,.btn-check:active+html .btn-green:focus,html .btn-green:active:focus,html .btn-green.active:focus,.show>html .btn-green.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green:focus,html[data-netbox-color-mode=dark] .btn-green:active:focus,html[data-netbox-color-mode=dark] .btn-green.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green:focus,html[data-netbox-color-mode=light] .btn-green:active:focus,html[data-netbox-color-mode=light] .btn-green.active:focus,.show>html[data-netbox-color-mode=light] .btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html .btn-green:disabled,html .btn-green.disabled,html[data-netbox-color-mode=dark] .btn-green:disabled,html[data-netbox-color-mode=dark] .btn-green.disabled,html[data-netbox-color-mode=light] .btn-green:disabled,html[data-netbox-color-mode=light] .btn-green.disabled{color:#fff;background-color:#198754;border-color:#198754}}@media print{html .btn-teal,html[data-netbox-color-mode=dark] .btn-teal,html[data-netbox-color-mode=light] .btn-teal{color:#000;background-color:#20c997;border-color:#20c997}html .btn-teal:hover,html[data-netbox-color-mode=dark] .btn-teal:hover,html[data-netbox-color-mode=light] .btn-teal:hover{color:#000;background-color:#41d1a7;border-color:#36cea1}.btn-check:focus+html .btn-teal,html .btn-teal:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-teal,html[data-netbox-color-mode=dark] .btn-teal:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-teal,html[data-netbox-color-mode=light] .btn-teal:focus{color:#000;background-color:#41d1a7;border-color:#36cea1;box-shadow:0 0 0 .25rem #1bab8080}.btn-check:checked+html .btn-teal,.btn-check:active+html .btn-teal,html .btn-teal:active,html .btn-teal.active,.show>html .btn-teal.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-teal,.btn-check:active+html[data-netbox-color-mode=dark] .btn-teal,html[data-netbox-color-mode=dark] .btn-teal:active,html[data-netbox-color-mode=dark] .btn-teal.active,.show>html[data-netbox-color-mode=dark] .btn-teal.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-teal,.btn-check:active+html[data-netbox-color-mode=light] .btn-teal,html[data-netbox-color-mode=light] .btn-teal:active,html[data-netbox-color-mode=light] .btn-teal.active,.show>html[data-netbox-color-mode=light] .btn-teal.dropdown-toggle{color:#000;background-color:#4dd4ac;border-color:#36cea1}.btn-check:checked+html .btn-teal:focus,.btn-check:active+html .btn-teal:focus,html .btn-teal:active:focus,html .btn-teal.active:focus,.show>html .btn-teal.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-teal:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-teal:focus,html[data-netbox-color-mode=dark] .btn-teal:active:focus,html[data-netbox-color-mode=dark] .btn-teal.active:focus,.show>html[data-netbox-color-mode=dark] .btn-teal.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-teal:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-teal:focus,html[data-netbox-color-mode=light] .btn-teal:active:focus,html[data-netbox-color-mode=light] .btn-teal.active:focus,.show>html[data-netbox-color-mode=light] .btn-teal.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #1bab8080}html .btn-teal:disabled,html .btn-teal.disabled,html[data-netbox-color-mode=dark] .btn-teal:disabled,html[data-netbox-color-mode=dark] .btn-teal.disabled,html[data-netbox-color-mode=light] .btn-teal:disabled,html[data-netbox-color-mode=light] .btn-teal.disabled{color:#000;background-color:#20c997;border-color:#20c997}}@media print{html .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html .btn-cyan:hover,html[data-netbox-color-mode=dark] .btn-cyan:hover,html[data-netbox-color-mode=light] .btn-cyan:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+html .btn-cyan,html .btn-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+html .btn-cyan,.btn-check:active+html .btn-cyan,html .btn-cyan:active,html .btn-cyan.active,.show>html .btn-cyan.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:active,html[data-netbox-color-mode=dark] .btn-cyan.active,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan:active,html[data-netbox-color-mode=light] .btn-cyan.active,.show>html[data-netbox-color-mode=light] .btn-cyan.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+html .btn-cyan:focus,.btn-check:active+html .btn-cyan:focus,html .btn-cyan:active:focus,html .btn-cyan.active:focus,.show>html .btn-cyan.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan:focus,html[data-netbox-color-mode=dark] .btn-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan:focus,html[data-netbox-color-mode=light] .btn-cyan:active:focus,html[data-netbox-color-mode=light] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}html .btn-cyan:disabled,html .btn-cyan.disabled,html[data-netbox-color-mode=dark] .btn-cyan:disabled,html[data-netbox-color-mode=dark] .btn-cyan.disabled,html[data-netbox-color-mode=light] .btn-cyan:disabled,html[data-netbox-color-mode=light] .btn-cyan.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}}@media print{html .btn-gray,html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=light] .btn-gray{color:#000;background-color:#adb5bd;border-color:#adb5bd}html .btn-gray:hover,html[data-netbox-color-mode=dark] .btn-gray:hover,html[data-netbox-color-mode=light] .btn-gray:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html .btn-gray,html .btn-gray:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray,html[data-netbox-color-mode=light] .btn-gray:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html .btn-gray,.btn-check:active+html .btn-gray,html .btn-gray:active,html .btn-gray.active,.show>html .btn-gray.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:active,html[data-netbox-color-mode=dark] .btn-gray.active,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray,html[data-netbox-color-mode=light] .btn-gray:active,html[data-netbox-color-mode=light] .btn-gray.active,.show>html[data-netbox-color-mode=light] .btn-gray.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html .btn-gray:focus,.btn-check:active+html .btn-gray:focus,html .btn-gray:active:focus,html .btn-gray.active:focus,.show>html .btn-gray.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray:focus,html[data-netbox-color-mode=dark] .btn-gray:active:focus,html[data-netbox-color-mode=dark] .btn-gray.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray:focus,html[data-netbox-color-mode=light] .btn-gray:active:focus,html[data-netbox-color-mode=light] .btn-gray.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html .btn-gray:disabled,html .btn-gray.disabled,html[data-netbox-color-mode=dark] .btn-gray:disabled,html[data-netbox-color-mode=dark] .btn-gray.disabled,html[data-netbox-color-mode=light] .btn-gray:disabled,html[data-netbox-color-mode=light] .btn-gray.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}}@media print{html .btn-black,html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=light] .btn-black,html .btn-black:hover,html[data-netbox-color-mode=dark] .btn-black:hover,html[data-netbox-color-mode=light] .btn-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+html .btn-black,html .btn-black:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=dark] .btn-black:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-black,html[data-netbox-color-mode=light] .btn-black:focus{color:#fff;background-color:#000;border-color:#000;box-shadow:0 0 0 .25rem #26262680}.btn-check:checked+html .btn-black,.btn-check:active+html .btn-black,html .btn-black:active,html .btn-black.active,.show>html .btn-black.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-black,.btn-check:active+html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=dark] .btn-black:active,html[data-netbox-color-mode=dark] .btn-black.active,.show>html[data-netbox-color-mode=dark] .btn-black.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-black,.btn-check:active+html[data-netbox-color-mode=light] .btn-black,html[data-netbox-color-mode=light] .btn-black:active,html[data-netbox-color-mode=light] .btn-black.active,.show>html[data-netbox-color-mode=light] .btn-black.dropdown-toggle{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+html .btn-black:focus,.btn-check:active+html .btn-black:focus,html .btn-black:active:focus,html .btn-black.active:focus,.show>html .btn-black.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-black:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-black:focus,html[data-netbox-color-mode=dark] .btn-black:active:focus,html[data-netbox-color-mode=dark] .btn-black.active:focus,.show>html[data-netbox-color-mode=dark] .btn-black.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-black:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-black:focus,html[data-netbox-color-mode=light] .btn-black:active:focus,html[data-netbox-color-mode=light] .btn-black.active:focus,.show>html[data-netbox-color-mode=light] .btn-black.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #26262680}html .btn-black:disabled,html .btn-black.disabled,html[data-netbox-color-mode=dark] .btn-black:disabled,html[data-netbox-color-mode=dark] .btn-black.disabled,html[data-netbox-color-mode=light] .btn-black:disabled,html[data-netbox-color-mode=light] .btn-black.disabled{color:#fff;background-color:#000;border-color:#000}}@media print{html .btn-white,html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=light] .btn-white,html .btn-white:hover,html[data-netbox-color-mode=dark] .btn-white:hover,html[data-netbox-color-mode=light] .btn-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+html .btn-white,html .btn-white:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=dark] .btn-white:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-white,html[data-netbox-color-mode=light] .btn-white:focus{color:#000;background-color:#fff;border-color:#fff;box-shadow:0 0 0 .25rem #d9d9d980}.btn-check:checked+html .btn-white,.btn-check:active+html .btn-white,html .btn-white:active,html .btn-white.active,.show>html .btn-white.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-white,.btn-check:active+html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=dark] .btn-white:active,html[data-netbox-color-mode=dark] .btn-white.active,.show>html[data-netbox-color-mode=dark] .btn-white.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-white,.btn-check:active+html[data-netbox-color-mode=light] .btn-white,html[data-netbox-color-mode=light] .btn-white:active,html[data-netbox-color-mode=light] .btn-white.active,.show>html[data-netbox-color-mode=light] .btn-white.dropdown-toggle{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+html .btn-white:focus,.btn-check:active+html .btn-white:focus,html .btn-white:active:focus,html .btn-white.active:focus,.show>html .btn-white.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-white:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-white:focus,html[data-netbox-color-mode=dark] .btn-white:active:focus,html[data-netbox-color-mode=dark] .btn-white.active:focus,.show>html[data-netbox-color-mode=dark] .btn-white.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-white:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-white:focus,html[data-netbox-color-mode=light] .btn-white:active:focus,html[data-netbox-color-mode=light] .btn-white.active:focus,.show>html[data-netbox-color-mode=light] .btn-white.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9d9d980}html .btn-white:disabled,html .btn-white.disabled,html[data-netbox-color-mode=dark] .btn-white:disabled,html[data-netbox-color-mode=dark] .btn-white.disabled,html[data-netbox-color-mode=light] .btn-white:disabled,html[data-netbox-color-mode=light] .btn-white.disabled{color:#000;background-color:#fff;border-color:#fff}}@media print{html .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary{color:#337ab7;border-color:#337ab7}html .btn-outline-primary:hover,html[data-netbox-color-mode=dark] .btn-outline-primary:hover,html[data-netbox-color-mode=light] .btn-outline-primary:hover{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:focus+html .btn-outline-primary,html .btn-outline-primary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-check:checked+html .btn-outline-primary,.btn-check:active+html .btn-outline-primary,html .btn-outline-primary:active,html .btn-outline-primary.active,html .btn-outline-primary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:active,html[data-netbox-color-mode=dark] .btn-outline-primary.active,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary:active,html[data-netbox-color-mode=light] .btn-outline-primary.active,html[data-netbox-color-mode=light] .btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:checked+html .btn-outline-primary:focus,.btn-check:active+html .btn-outline-primary:focus,html .btn-outline-primary:active:focus,html .btn-outline-primary.active:focus,html .btn-outline-primary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,html[data-netbox-color-mode=dark] .btn-outline-primary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-primary:focus,html[data-netbox-color-mode=light] .btn-outline-primary:active:focus,html[data-netbox-color-mode=light] .btn-outline-primary.active:focus,html[data-netbox-color-mode=light] .btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #337ab780}html .btn-outline-primary:disabled,html .btn-outline-primary.disabled,html[data-netbox-color-mode=dark] .btn-outline-primary:disabled,html[data-netbox-color-mode=dark] .btn-outline-primary.disabled,html[data-netbox-color-mode=light] .btn-outline-primary:disabled,html[data-netbox-color-mode=light] .btn-outline-primary.disabled{color:#337ab7;background-color:transparent}}@media print{html .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary{color:#6c757d;border-color:#6c757d}html .btn-outline-secondary:hover,html[data-netbox-color-mode=dark] .btn-outline-secondary:hover,html[data-netbox-color-mode=light] .btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+html .btn-outline-secondary,html .btn-outline-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+html .btn-outline-secondary,.btn-check:active+html .btn-outline-secondary,html .btn-outline-secondary:active,html .btn-outline-secondary.active,html .btn-outline-secondary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:active,html[data-netbox-color-mode=dark] .btn-outline-secondary.active,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary:active,html[data-netbox-color-mode=light] .btn-outline-secondary.active,html[data-netbox-color-mode=light] .btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+html .btn-outline-secondary:focus,.btn-check:active+html .btn-outline-secondary:focus,html .btn-outline-secondary:active:focus,html .btn-outline-secondary.active:focus,html .btn-outline-secondary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-secondary:focus,html[data-netbox-color-mode=light] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=light] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=light] .btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}html .btn-outline-secondary:disabled,html .btn-outline-secondary.disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary:disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary.disabled,html[data-netbox-color-mode=light] .btn-outline-secondary:disabled,html[data-netbox-color-mode=light] .btn-outline-secondary.disabled{color:#6c757d;background-color:transparent}}@media print{html .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success{color:#198754;border-color:#198754}html .btn-outline-success:hover,html[data-netbox-color-mode=dark] .btn-outline-success:hover,html[data-netbox-color-mode=light] .btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html .btn-outline-success,html .btn-outline-success:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html .btn-outline-success,.btn-check:active+html .btn-outline-success,html .btn-outline-success:active,html .btn-outline-success.active,html .btn-outline-success.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:active,html[data-netbox-color-mode=dark] .btn-outline-success.active,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success:active,html[data-netbox-color-mode=light] .btn-outline-success.active,html[data-netbox-color-mode=light] .btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html .btn-outline-success:focus,.btn-check:active+html .btn-outline-success:focus,html .btn-outline-success:active:focus,html .btn-outline-success.active:focus,html .btn-outline-success.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success:focus,html[data-netbox-color-mode=dark] .btn-outline-success:active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-success:focus,html[data-netbox-color-mode=light] .btn-outline-success:active:focus,html[data-netbox-color-mode=light] .btn-outline-success.active:focus,html[data-netbox-color-mode=light] .btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html .btn-outline-success:disabled,html .btn-outline-success.disabled,html[data-netbox-color-mode=dark] .btn-outline-success:disabled,html[data-netbox-color-mode=dark] .btn-outline-success.disabled,html[data-netbox-color-mode=light] .btn-outline-success:disabled,html[data-netbox-color-mode=light] .btn-outline-success.disabled{color:#198754;background-color:transparent}}@media print{html .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info{color:#54d6f0;border-color:#54d6f0}html .btn-outline-info:hover,html[data-netbox-color-mode=dark] .btn-outline-info:hover,html[data-netbox-color-mode=light] .btn-outline-info:hover{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-check:focus+html .btn-outline-info,html .btn-outline-info:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info:focus{box-shadow:0 0 0 .25rem #54d6f080}.btn-check:checked+html .btn-outline-info,.btn-check:active+html .btn-outline-info,html .btn-outline-info:active,html .btn-outline-info.active,html .btn-outline-info.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:active,html[data-netbox-color-mode=dark] .btn-outline-info.active,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info:active,html[data-netbox-color-mode=light] .btn-outline-info.active,html[data-netbox-color-mode=light] .btn-outline-info.dropdown-toggle.show{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-check:checked+html .btn-outline-info:focus,.btn-check:active+html .btn-outline-info:focus,html .btn-outline-info:active:focus,html .btn-outline-info.active:focus,html .btn-outline-info.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info:focus,html[data-netbox-color-mode=dark] .btn-outline-info:active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-info:focus,html[data-netbox-color-mode=light] .btn-outline-info:active:focus,html[data-netbox-color-mode=light] .btn-outline-info.active:focus,html[data-netbox-color-mode=light] .btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #54d6f080}html .btn-outline-info:disabled,html .btn-outline-info.disabled,html[data-netbox-color-mode=dark] .btn-outline-info:disabled,html[data-netbox-color-mode=dark] .btn-outline-info.disabled,html[data-netbox-color-mode=light] .btn-outline-info:disabled,html[data-netbox-color-mode=light] .btn-outline-info.disabled{color:#54d6f0;background-color:transparent}}@media print{html .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning{color:#ffc107;border-color:#ffc107}html .btn-outline-warning:hover,html[data-netbox-color-mode=dark] .btn-outline-warning:hover,html[data-netbox-color-mode=light] .btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html .btn-outline-warning,html .btn-outline-warning:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html .btn-outline-warning,.btn-check:active+html .btn-outline-warning,html .btn-outline-warning:active,html .btn-outline-warning.active,html .btn-outline-warning.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:active,html[data-netbox-color-mode=dark] .btn-outline-warning.active,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning:active,html[data-netbox-color-mode=light] .btn-outline-warning.active,html[data-netbox-color-mode=light] .btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html .btn-outline-warning:focus,.btn-check:active+html .btn-outline-warning:focus,html .btn-outline-warning:active:focus,html .btn-outline-warning.active:focus,html .btn-outline-warning.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,html[data-netbox-color-mode=dark] .btn-outline-warning:active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-warning:focus,html[data-netbox-color-mode=light] .btn-outline-warning:active:focus,html[data-netbox-color-mode=light] .btn-outline-warning.active:focus,html[data-netbox-color-mode=light] .btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html .btn-outline-warning:disabled,html .btn-outline-warning.disabled,html[data-netbox-color-mode=dark] .btn-outline-warning:disabled,html[data-netbox-color-mode=dark] .btn-outline-warning.disabled,html[data-netbox-color-mode=light] .btn-outline-warning:disabled,html[data-netbox-color-mode=light] .btn-outline-warning.disabled{color:#ffc107;background-color:transparent}}@media print{html .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger{color:#dc3545;border-color:#dc3545}html .btn-outline-danger:hover,html[data-netbox-color-mode=dark] .btn-outline-danger:hover,html[data-netbox-color-mode=light] .btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html .btn-outline-danger,html .btn-outline-danger:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html .btn-outline-danger,.btn-check:active+html .btn-outline-danger,html .btn-outline-danger:active,html .btn-outline-danger.active,html .btn-outline-danger.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:active,html[data-netbox-color-mode=dark] .btn-outline-danger.active,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger:active,html[data-netbox-color-mode=light] .btn-outline-danger.active,html[data-netbox-color-mode=light] .btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html .btn-outline-danger:focus,.btn-check:active+html .btn-outline-danger:focus,html .btn-outline-danger:active:focus,html .btn-outline-danger.active:focus,html .btn-outline-danger.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,html[data-netbox-color-mode=dark] .btn-outline-danger:active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-danger:focus,html[data-netbox-color-mode=light] .btn-outline-danger:active:focus,html[data-netbox-color-mode=light] .btn-outline-danger.active:focus,html[data-netbox-color-mode=light] .btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html .btn-outline-danger:disabled,html .btn-outline-danger.disabled,html[data-netbox-color-mode=dark] .btn-outline-danger:disabled,html[data-netbox-color-mode=dark] .btn-outline-danger.disabled,html[data-netbox-color-mode=light] .btn-outline-danger:disabled,html[data-netbox-color-mode=light] .btn-outline-danger.disabled{color:#dc3545;background-color:transparent}}@media print{html .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light{color:#e9ecef;border-color:#e9ecef}html .btn-outline-light:hover,html[data-netbox-color-mode=dark] .btn-outline-light:hover,html[data-netbox-color-mode=light] .btn-outline-light:hover{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:focus+html .btn-outline-light,html .btn-outline-light:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-check:checked+html .btn-outline-light,.btn-check:active+html .btn-outline-light,html .btn-outline-light:active,html .btn-outline-light.active,html .btn-outline-light.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:active,html[data-netbox-color-mode=dark] .btn-outline-light.active,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light:active,html[data-netbox-color-mode=light] .btn-outline-light.active,html[data-netbox-color-mode=light] .btn-outline-light.dropdown-toggle.show{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:checked+html .btn-outline-light:focus,.btn-check:active+html .btn-outline-light:focus,html .btn-outline-light:active:focus,html .btn-outline-light.active:focus,html .btn-outline-light.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light:focus,html[data-netbox-color-mode=dark] .btn-outline-light:active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-light:focus,html[data-netbox-color-mode=light] .btn-outline-light:active:focus,html[data-netbox-color-mode=light] .btn-outline-light.active:focus,html[data-netbox-color-mode=light] .btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e9ecef80}html .btn-outline-light:disabled,html .btn-outline-light.disabled,html[data-netbox-color-mode=dark] .btn-outline-light:disabled,html[data-netbox-color-mode=dark] .btn-outline-light.disabled,html[data-netbox-color-mode=light] .btn-outline-light:disabled,html[data-netbox-color-mode=light] .btn-outline-light.disabled{color:#e9ecef;background-color:transparent}}@media print{html .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark{color:#343a40;border-color:#343a40}html .btn-outline-dark:hover,html[data-netbox-color-mode=dark] .btn-outline-dark:hover,html[data-netbox-color-mode=light] .btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:focus+html .btn-outline-dark,html .btn-outline-dark:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-check:checked+html .btn-outline-dark,.btn-check:active+html .btn-outline-dark,html .btn-outline-dark:active,html .btn-outline-dark.active,html .btn-outline-dark.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:active,html[data-netbox-color-mode=dark] .btn-outline-dark.active,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark:active,html[data-netbox-color-mode=light] .btn-outline-dark.active,html[data-netbox-color-mode=light] .btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:checked+html .btn-outline-dark:focus,.btn-check:active+html .btn-outline-dark:focus,html .btn-outline-dark:active:focus,html .btn-outline-dark.active:focus,html .btn-outline-dark.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,html[data-netbox-color-mode=dark] .btn-outline-dark:active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-dark:focus,html[data-netbox-color-mode=light] .btn-outline-dark:active:focus,html[data-netbox-color-mode=light] .btn-outline-dark.active:focus,html[data-netbox-color-mode=light] .btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #343a4080}html .btn-outline-dark:disabled,html .btn-outline-dark.disabled,html[data-netbox-color-mode=dark] .btn-outline-dark:disabled,html[data-netbox-color-mode=dark] .btn-outline-dark.disabled,html[data-netbox-color-mode=light] .btn-outline-dark:disabled,html[data-netbox-color-mode=light] .btn-outline-dark.disabled{color:#343a40;background-color:transparent}}@media print{html .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue{color:#0d6efd;border-color:#0d6efd}html .btn-outline-blue:hover,html[data-netbox-color-mode=dark] .btn-outline-blue:hover,html[data-netbox-color-mode=light] .btn-outline-blue:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+html .btn-outline-blue,html .btn-outline-blue:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+html .btn-outline-blue,.btn-check:active+html .btn-outline-blue,html .btn-outline-blue:active,html .btn-outline-blue.active,html .btn-outline-blue.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:active,html[data-netbox-color-mode=dark] .btn-outline-blue.active,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue:active,html[data-netbox-color-mode=light] .btn-outline-blue.active,html[data-netbox-color-mode=light] .btn-outline-blue.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+html .btn-outline-blue:focus,.btn-check:active+html .btn-outline-blue:focus,html .btn-outline-blue:active:focus,html .btn-outline-blue.active:focus,html .btn-outline-blue.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,html[data-netbox-color-mode=dark] .btn-outline-blue:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue:focus,html[data-netbox-color-mode=light] .btn-outline-blue:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}html .btn-outline-blue:disabled,html .btn-outline-blue.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue.disabled,html[data-netbox-color-mode=light] .btn-outline-blue:disabled,html[data-netbox-color-mode=light] .btn-outline-blue.disabled{color:#0d6efd;background-color:transparent}}@media print{html .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo{color:#6610f2;border-color:#6610f2}html .btn-outline-indigo:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo:hover,html[data-netbox-color-mode=light] .btn-outline-indigo:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+html .btn-outline-indigo,html .btn-outline-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+html .btn-outline-indigo,.btn-check:active+html .btn-outline-indigo,html .btn-outline-indigo:active,html .btn-outline-indigo.active,html .btn-outline-indigo.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:active,html[data-netbox-color-mode=dark] .btn-outline-indigo.active,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo:active,html[data-netbox-color-mode=light] .btn-outline-indigo.active,html[data-netbox-color-mode=light] .btn-outline-indigo.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+html .btn-outline-indigo:focus,.btn-check:active+html .btn-outline-indigo:focus,html .btn-outline-indigo:active:focus,html .btn-outline-indigo.active:focus,html .btn-outline-indigo.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo:focus,html[data-netbox-color-mode=light] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}html .btn-outline-indigo:disabled,html .btn-outline-indigo.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo.disabled{color:#6610f2;background-color:transparent}}@media print{html .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple{color:#6f42c1;border-color:#6f42c1}html .btn-outline-purple:hover,html[data-netbox-color-mode=dark] .btn-outline-purple:hover,html[data-netbox-color-mode=light] .btn-outline-purple:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+html .btn-outline-purple,html .btn-outline-purple:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+html .btn-outline-purple,.btn-check:active+html .btn-outline-purple,html .btn-outline-purple:active,html .btn-outline-purple.active,html .btn-outline-purple.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:active,html[data-netbox-color-mode=dark] .btn-outline-purple.active,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple:active,html[data-netbox-color-mode=light] .btn-outline-purple.active,html[data-netbox-color-mode=light] .btn-outline-purple.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+html .btn-outline-purple:focus,.btn-check:active+html .btn-outline-purple:focus,html .btn-outline-purple:active:focus,html .btn-outline-purple.active:focus,html .btn-outline-purple.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,html[data-netbox-color-mode=dark] .btn-outline-purple:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple:focus,html[data-netbox-color-mode=light] .btn-outline-purple:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}html .btn-outline-purple:disabled,html .btn-outline-purple.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple.disabled,html[data-netbox-color-mode=light] .btn-outline-purple:disabled,html[data-netbox-color-mode=light] .btn-outline-purple.disabled{color:#6f42c1;background-color:transparent}}@media print{html .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink{color:#d63384;border-color:#d63384}html .btn-outline-pink:hover,html[data-netbox-color-mode=dark] .btn-outline-pink:hover,html[data-netbox-color-mode=light] .btn-outline-pink:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+html .btn-outline-pink,html .btn-outline-pink:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+html .btn-outline-pink,.btn-check:active+html .btn-outline-pink,html .btn-outline-pink:active,html .btn-outline-pink.active,html .btn-outline-pink.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:active,html[data-netbox-color-mode=dark] .btn-outline-pink.active,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink:active,html[data-netbox-color-mode=light] .btn-outline-pink.active,html[data-netbox-color-mode=light] .btn-outline-pink.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+html .btn-outline-pink:focus,.btn-check:active+html .btn-outline-pink:focus,html .btn-outline-pink:active:focus,html .btn-outline-pink.active:focus,html .btn-outline-pink.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,html[data-netbox-color-mode=dark] .btn-outline-pink:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink:focus,html[data-netbox-color-mode=light] .btn-outline-pink:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}html .btn-outline-pink:disabled,html .btn-outline-pink.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink.disabled,html[data-netbox-color-mode=light] .btn-outline-pink:disabled,html[data-netbox-color-mode=light] .btn-outline-pink.disabled{color:#d63384;background-color:transparent}}@media print{html .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red{color:#dc3545;border-color:#dc3545}html .btn-outline-red:hover,html[data-netbox-color-mode=dark] .btn-outline-red:hover,html[data-netbox-color-mode=light] .btn-outline-red:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html .btn-outline-red,html .btn-outline-red:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html .btn-outline-red,.btn-check:active+html .btn-outline-red,html .btn-outline-red:active,html .btn-outline-red.active,html .btn-outline-red.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:active,html[data-netbox-color-mode=dark] .btn-outline-red.active,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red:active,html[data-netbox-color-mode=light] .btn-outline-red.active,html[data-netbox-color-mode=light] .btn-outline-red.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html .btn-outline-red:focus,.btn-check:active+html .btn-outline-red:focus,html .btn-outline-red:active:focus,html .btn-outline-red.active:focus,html .btn-outline-red.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red:focus,html[data-netbox-color-mode=dark] .btn-outline-red:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red:focus,html[data-netbox-color-mode=light] .btn-outline-red:active:focus,html[data-netbox-color-mode=light] .btn-outline-red.active:focus,html[data-netbox-color-mode=light] .btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html .btn-outline-red:disabled,html .btn-outline-red.disabled,html[data-netbox-color-mode=dark] .btn-outline-red:disabled,html[data-netbox-color-mode=dark] .btn-outline-red.disabled,html[data-netbox-color-mode=light] .btn-outline-red:disabled,html[data-netbox-color-mode=light] .btn-outline-red.disabled{color:#dc3545;background-color:transparent}}@media print{html .btn-outline-orange,html[data-netbox-color-mode=dark] .btn-outline-orange,html[data-netbox-color-mode=light] .btn-outline-orange{color:#fd7e14;border-color:#fd7e14}html .btn-outline-orange:hover,html[data-netbox-color-mode=dark] .btn-outline-orange:hover,html[data-netbox-color-mode=light] .btn-outline-orange:hover{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-check:focus+html .btn-outline-orange,html .btn-outline-orange:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-orange,html[data-netbox-color-mode=dark] .btn-outline-orange:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-orange,html[data-netbox-color-mode=light] .btn-outline-orange:focus{box-shadow:0 0 0 .25rem #fd7e1480}.btn-check:checked+html .btn-outline-orange,.btn-check:active+html .btn-outline-orange,html .btn-outline-orange:active,html .btn-outline-orange.active,html .btn-outline-orange.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-orange,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-orange,html[data-netbox-color-mode=dark] .btn-outline-orange:active,html[data-netbox-color-mode=dark] .btn-outline-orange.active,html[data-netbox-color-mode=dark] .btn-outline-orange.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-orange,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-orange,html[data-netbox-color-mode=light] .btn-outline-orange:active,html[data-netbox-color-mode=light] .btn-outline-orange.active,html[data-netbox-color-mode=light] .btn-outline-orange.dropdown-toggle.show{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-check:checked+html .btn-outline-orange:focus,.btn-check:active+html .btn-outline-orange:focus,html .btn-outline-orange:active:focus,html .btn-outline-orange.active:focus,html .btn-outline-orange.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-orange:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-orange:focus,html[data-netbox-color-mode=dark] .btn-outline-orange:active:focus,html[data-netbox-color-mode=dark] .btn-outline-orange.active:focus,html[data-netbox-color-mode=dark] .btn-outline-orange.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-orange:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-orange:focus,html[data-netbox-color-mode=light] .btn-outline-orange:active:focus,html[data-netbox-color-mode=light] .btn-outline-orange.active:focus,html[data-netbox-color-mode=light] .btn-outline-orange.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #fd7e1480}html .btn-outline-orange:disabled,html .btn-outline-orange.disabled,html[data-netbox-color-mode=dark] .btn-outline-orange:disabled,html[data-netbox-color-mode=dark] .btn-outline-orange.disabled,html[data-netbox-color-mode=light] .btn-outline-orange:disabled,html[data-netbox-color-mode=light] .btn-outline-orange.disabled{color:#fd7e14;background-color:transparent}}@media print{html .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow{color:#ffc107;border-color:#ffc107}html .btn-outline-yellow:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow:hover,html[data-netbox-color-mode=light] .btn-outline-yellow:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html .btn-outline-yellow,html .btn-outline-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html .btn-outline-yellow,.btn-check:active+html .btn-outline-yellow,html .btn-outline-yellow:active,html .btn-outline-yellow.active,html .btn-outline-yellow.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:active,html[data-netbox-color-mode=dark] .btn-outline-yellow.active,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow:active,html[data-netbox-color-mode=light] .btn-outline-yellow.active,html[data-netbox-color-mode=light] .btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html .btn-outline-yellow:focus,.btn-check:active+html .btn-outline-yellow:focus,html .btn-outline-yellow:active:focus,html .btn-outline-yellow.active:focus,html .btn-outline-yellow.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow:focus,html[data-netbox-color-mode=light] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html .btn-outline-yellow:disabled,html .btn-outline-yellow.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow.disabled{color:#ffc107;background-color:transparent}}@media print{html .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green{color:#198754;border-color:#198754}html .btn-outline-green:hover,html[data-netbox-color-mode=dark] .btn-outline-green:hover,html[data-netbox-color-mode=light] .btn-outline-green:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html .btn-outline-green,html .btn-outline-green:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html .btn-outline-green,.btn-check:active+html .btn-outline-green,html .btn-outline-green:active,html .btn-outline-green.active,html .btn-outline-green.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:active,html[data-netbox-color-mode=dark] .btn-outline-green.active,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green:active,html[data-netbox-color-mode=light] .btn-outline-green.active,html[data-netbox-color-mode=light] .btn-outline-green.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html .btn-outline-green:focus,.btn-check:active+html .btn-outline-green:focus,html .btn-outline-green:active:focus,html .btn-outline-green.active:focus,html .btn-outline-green.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green:focus,html[data-netbox-color-mode=dark] .btn-outline-green:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green:focus,html[data-netbox-color-mode=light] .btn-outline-green:active:focus,html[data-netbox-color-mode=light] .btn-outline-green.active:focus,html[data-netbox-color-mode=light] .btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html .btn-outline-green:disabled,html .btn-outline-green.disabled,html[data-netbox-color-mode=dark] .btn-outline-green:disabled,html[data-netbox-color-mode=dark] .btn-outline-green.disabled,html[data-netbox-color-mode=light] .btn-outline-green:disabled,html[data-netbox-color-mode=light] .btn-outline-green.disabled{color:#198754;background-color:transparent}}@media print{html .btn-outline-teal,html[data-netbox-color-mode=dark] .btn-outline-teal,html[data-netbox-color-mode=light] .btn-outline-teal{color:#20c997;border-color:#20c997}html .btn-outline-teal:hover,html[data-netbox-color-mode=dark] .btn-outline-teal:hover,html[data-netbox-color-mode=light] .btn-outline-teal:hover{color:#000;background-color:#20c997;border-color:#20c997}.btn-check:focus+html .btn-outline-teal,html .btn-outline-teal:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-teal,html[data-netbox-color-mode=dark] .btn-outline-teal:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-teal,html[data-netbox-color-mode=light] .btn-outline-teal:focus{box-shadow:0 0 0 .25rem #20c99780}.btn-check:checked+html .btn-outline-teal,.btn-check:active+html .btn-outline-teal,html .btn-outline-teal:active,html .btn-outline-teal.active,html .btn-outline-teal.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-teal,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-teal,html[data-netbox-color-mode=dark] .btn-outline-teal:active,html[data-netbox-color-mode=dark] .btn-outline-teal.active,html[data-netbox-color-mode=dark] .btn-outline-teal.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-teal,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-teal,html[data-netbox-color-mode=light] .btn-outline-teal:active,html[data-netbox-color-mode=light] .btn-outline-teal.active,html[data-netbox-color-mode=light] .btn-outline-teal.dropdown-toggle.show{color:#000;background-color:#20c997;border-color:#20c997}.btn-check:checked+html .btn-outline-teal:focus,.btn-check:active+html .btn-outline-teal:focus,html .btn-outline-teal:active:focus,html .btn-outline-teal.active:focus,html .btn-outline-teal.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-teal:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-teal:focus,html[data-netbox-color-mode=dark] .btn-outline-teal:active:focus,html[data-netbox-color-mode=dark] .btn-outline-teal.active:focus,html[data-netbox-color-mode=dark] .btn-outline-teal.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-teal:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-teal:focus,html[data-netbox-color-mode=light] .btn-outline-teal:active:focus,html[data-netbox-color-mode=light] .btn-outline-teal.active:focus,html[data-netbox-color-mode=light] .btn-outline-teal.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #20c99780}html .btn-outline-teal:disabled,html .btn-outline-teal.disabled,html[data-netbox-color-mode=dark] .btn-outline-teal:disabled,html[data-netbox-color-mode=dark] .btn-outline-teal.disabled,html[data-netbox-color-mode=light] .btn-outline-teal:disabled,html[data-netbox-color-mode=light] .btn-outline-teal.disabled{color:#20c997;background-color:transparent}}@media print{html .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan{color:#0dcaf0;border-color:#0dcaf0}html .btn-outline-cyan:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan:hover,html[data-netbox-color-mode=light] .btn-outline-cyan:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+html .btn-outline-cyan,html .btn-outline-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+html .btn-outline-cyan,.btn-check:active+html .btn-outline-cyan,html .btn-outline-cyan:active,html .btn-outline-cyan.active,html .btn-outline-cyan.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:active,html[data-netbox-color-mode=dark] .btn-outline-cyan.active,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan:active,html[data-netbox-color-mode=light] .btn-outline-cyan.active,html[data-netbox-color-mode=light] .btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+html .btn-outline-cyan:focus,.btn-check:active+html .btn-outline-cyan:focus,html .btn-outline-cyan:active:focus,html .btn-outline-cyan.active:focus,html .btn-outline-cyan.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan:focus,html[data-netbox-color-mode=light] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}html .btn-outline-cyan:disabled,html .btn-outline-cyan.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan.disabled{color:#0dcaf0;background-color:transparent}}@media print{html .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray{color:#adb5bd;border-color:#adb5bd}html .btn-outline-gray:hover,html[data-netbox-color-mode=dark] .btn-outline-gray:hover,html[data-netbox-color-mode=light] .btn-outline-gray:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html .btn-outline-gray,html .btn-outline-gray:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html .btn-outline-gray,.btn-check:active+html .btn-outline-gray,html .btn-outline-gray:active,html .btn-outline-gray.active,html .btn-outline-gray.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:active,html[data-netbox-color-mode=dark] .btn-outline-gray.active,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray:active,html[data-netbox-color-mode=light] .btn-outline-gray.active,html[data-netbox-color-mode=light] .btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html .btn-outline-gray:focus,.btn-check:active+html .btn-outline-gray:focus,html .btn-outline-gray:active:focus,html .btn-outline-gray.active:focus,html .btn-outline-gray.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,html[data-netbox-color-mode=dark] .btn-outline-gray:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray:focus,html[data-netbox-color-mode=light] .btn-outline-gray:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html .btn-outline-gray:disabled,html .btn-outline-gray.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray.disabled,html[data-netbox-color-mode=light] .btn-outline-gray:disabled,html[data-netbox-color-mode=light] .btn-outline-gray.disabled{color:#adb5bd;background-color:transparent}}@media print{html .btn-outline-black,html[data-netbox-color-mode=dark] .btn-outline-black,html[data-netbox-color-mode=light] .btn-outline-black{color:#000;border-color:#000}html .btn-outline-black:hover,html[data-netbox-color-mode=dark] .btn-outline-black:hover,html[data-netbox-color-mode=light] .btn-outline-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+html .btn-outline-black,html .btn-outline-black:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-black,html[data-netbox-color-mode=dark] .btn-outline-black:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-black,html[data-netbox-color-mode=light] .btn-outline-black:focus{box-shadow:0 0 0 .25rem #00000080}.btn-check:checked+html .btn-outline-black,.btn-check:active+html .btn-outline-black,html .btn-outline-black:active,html .btn-outline-black.active,html .btn-outline-black.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-black,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-black,html[data-netbox-color-mode=dark] .btn-outline-black:active,html[data-netbox-color-mode=dark] .btn-outline-black.active,html[data-netbox-color-mode=dark] .btn-outline-black.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-black,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-black,html[data-netbox-color-mode=light] .btn-outline-black:active,html[data-netbox-color-mode=light] .btn-outline-black.active,html[data-netbox-color-mode=light] .btn-outline-black.dropdown-toggle.show{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+html .btn-outline-black:focus,.btn-check:active+html .btn-outline-black:focus,html .btn-outline-black:active:focus,html .btn-outline-black.active:focus,html .btn-outline-black.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-black:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-black:focus,html[data-netbox-color-mode=dark] .btn-outline-black:active:focus,html[data-netbox-color-mode=dark] .btn-outline-black.active:focus,html[data-netbox-color-mode=dark] .btn-outline-black.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-black:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-black:focus,html[data-netbox-color-mode=light] .btn-outline-black:active:focus,html[data-netbox-color-mode=light] .btn-outline-black.active:focus,html[data-netbox-color-mode=light] .btn-outline-black.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #00000080}html .btn-outline-black:disabled,html .btn-outline-black.disabled,html[data-netbox-color-mode=dark] .btn-outline-black:disabled,html[data-netbox-color-mode=dark] .btn-outline-black.disabled,html[data-netbox-color-mode=light] .btn-outline-black:disabled,html[data-netbox-color-mode=light] .btn-outline-black.disabled{color:#000;background-color:transparent}}@media print{html .btn-outline-white,html[data-netbox-color-mode=dark] .btn-outline-white,html[data-netbox-color-mode=light] .btn-outline-white{color:#fff;border-color:#fff}html .btn-outline-white:hover,html[data-netbox-color-mode=dark] .btn-outline-white:hover,html[data-netbox-color-mode=light] .btn-outline-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+html .btn-outline-white,html .btn-outline-white:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-white,html[data-netbox-color-mode=dark] .btn-outline-white:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-white,html[data-netbox-color-mode=light] .btn-outline-white:focus{box-shadow:0 0 0 .25rem #ffffff80}.btn-check:checked+html .btn-outline-white,.btn-check:active+html .btn-outline-white,html .btn-outline-white:active,html .btn-outline-white.active,html .btn-outline-white.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-white,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-white,html[data-netbox-color-mode=dark] .btn-outline-white:active,html[data-netbox-color-mode=dark] .btn-outline-white.active,html[data-netbox-color-mode=dark] .btn-outline-white.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-white,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-white,html[data-netbox-color-mode=light] .btn-outline-white:active,html[data-netbox-color-mode=light] .btn-outline-white.active,html[data-netbox-color-mode=light] .btn-outline-white.dropdown-toggle.show{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+html .btn-outline-white:focus,.btn-check:active+html .btn-outline-white:focus,html .btn-outline-white:active:focus,html .btn-outline-white.active:focus,html .btn-outline-white.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-white:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-white:focus,html[data-netbox-color-mode=dark] .btn-outline-white:active:focus,html[data-netbox-color-mode=dark] .btn-outline-white.active:focus,html[data-netbox-color-mode=dark] .btn-outline-white.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-white:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-white:focus,html[data-netbox-color-mode=light] .btn-outline-white:active:focus,html[data-netbox-color-mode=light] .btn-outline-white.active:focus,html[data-netbox-color-mode=light] .btn-outline-white.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffffff80}html .btn-outline-white:disabled,html .btn-outline-white.disabled,html[data-netbox-color-mode=dark] .btn-outline-white:disabled,html[data-netbox-color-mode=dark] .btn-outline-white.disabled,html[data-netbox-color-mode=light] .btn-outline-white:disabled,html[data-netbox-color-mode=light] .btn-outline-white.disabled{color:#fff;background-color:transparent}}@media print{html .btn-link,html[data-netbox-color-mode=dark] .btn-link,html[data-netbox-color-mode=light] .btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}html .btn-link:hover,html[data-netbox-color-mode=dark] .btn-link:hover,html[data-netbox-color-mode=light] .btn-link:hover{color:#0a58ca}html .btn-link:disabled,html .btn-link.disabled,html[data-netbox-color-mode=dark] .btn-link:disabled,html[data-netbox-color-mode=dark] .btn-link.disabled,html[data-netbox-color-mode=light] .btn-link:disabled,html[data-netbox-color-mode=light] .btn-link.disabled{color:#6c757d}}@media print{html .btn-lg,html .btn-group-lg>.btn,html[data-netbox-color-mode=dark] .btn-lg,html[data-netbox-color-mode=light] .btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}}@media print{html .btn-sm,html .btn-group-sm>.btn,html[data-netbox-color-mode=dark] .btn-sm,html[data-netbox-color-mode=light] .btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}}@media print{html .fade,html[data-netbox-color-mode=dark] .fade,html[data-netbox-color-mode=light] .fade{transition:opacity .15s linear}}@media print and (prefers-reduced-motion: reduce){html .fade,html[data-netbox-color-mode=dark] .fade,html[data-netbox-color-mode=light] .fade{transition:none}}@media print{html .fade:not(.show),html[data-netbox-color-mode=dark] .fade:not(.show),html[data-netbox-color-mode=light] .fade:not(.show){opacity:0}}@media print{html .collapse:not(.show),html[data-netbox-color-mode=dark] .collapse:not(.show),html[data-netbox-color-mode=light] .collapse:not(.show){display:none}}@media print{html .collapsing,html[data-netbox-color-mode=dark] .collapsing,html[data-netbox-color-mode=light] .collapsing{height:0;overflow:hidden;transition:height .35s ease}}@media print and (prefers-reduced-motion: reduce){html .collapsing,html[data-netbox-color-mode=dark] .collapsing,html[data-netbox-color-mode=light] .collapsing{transition:none}}@media print{html .dropup,html .dropend,html .dropdown,html .dropstart,html[data-netbox-color-mode=dark] .dropup,html[data-netbox-color-mode=dark] .dropend,html[data-netbox-color-mode=dark] .dropdown,html[data-netbox-color-mode=dark] .dropstart,html[data-netbox-color-mode=light] .dropup,html[data-netbox-color-mode=light] .dropend,html[data-netbox-color-mode=light] .dropdown,html[data-netbox-color-mode=light] .dropstart{position:relative}}@media print{html .dropdown-toggle,html[data-netbox-color-mode=dark] .dropdown-toggle,html[data-netbox-color-mode=light] .dropdown-toggle{white-space:nowrap}html .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}html .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropdown-toggle:empty:after{margin-left:0}}@media print{html .dropdown-menu,html[data-netbox-color-mode=dark] .dropdown-menu,html[data-netbox-color-mode=light] .dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}html .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}}@media print{html .dropdown-menu-start,html[data-netbox-color-mode=dark] .dropdown-menu-start,html[data-netbox-color-mode=light] .dropdown-menu-start{--bs-position: start}html .dropdown-menu-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-start[data-bs-popper]{right:auto;left:0}}@media print{html .dropdown-menu-end,html[data-netbox-color-mode=dark] .dropdown-menu-end,html[data-netbox-color-mode=light] .dropdown-menu-end{--bs-position: end}html .dropdown-menu-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 576px){html .dropdown-menu-sm-start,html[data-netbox-color-mode=dark] .dropdown-menu-sm-start,html[data-netbox-color-mode=light] .dropdown-menu-sm-start{--bs-position: start}html .dropdown-menu-sm-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-sm-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-sm-end,html[data-netbox-color-mode=dark] .dropdown-menu-sm-end,html[data-netbox-color-mode=light] .dropdown-menu-sm-end{--bs-position: end}html .dropdown-menu-sm-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-sm-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 768px){html .dropdown-menu-md-start,html[data-netbox-color-mode=dark] .dropdown-menu-md-start,html[data-netbox-color-mode=light] .dropdown-menu-md-start{--bs-position: start}html .dropdown-menu-md-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-md-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-md-end,html[data-netbox-color-mode=dark] .dropdown-menu-md-end,html[data-netbox-color-mode=light] .dropdown-menu-md-end{--bs-position: end}html .dropdown-menu-md-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-md-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 992px){html .dropdown-menu-lg-start,html[data-netbox-color-mode=dark] .dropdown-menu-lg-start,html[data-netbox-color-mode=light] .dropdown-menu-lg-start{--bs-position: start}html .dropdown-menu-lg-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-lg-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-lg-end,html[data-netbox-color-mode=dark] .dropdown-menu-lg-end,html[data-netbox-color-mode=light] .dropdown-menu-lg-end{--bs-position: end}html .dropdown-menu-lg-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-lg-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 1200px){html .dropdown-menu-xl-start,html[data-netbox-color-mode=dark] .dropdown-menu-xl-start,html[data-netbox-color-mode=light] .dropdown-menu-xl-start{--bs-position: start}html .dropdown-menu-xl-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xl-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-xl-end,html[data-netbox-color-mode=dark] .dropdown-menu-xl-end,html[data-netbox-color-mode=light] .dropdown-menu-xl-end{--bs-position: end}html .dropdown-menu-xl-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xl-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 1400px){html .dropdown-menu-xxl-start,html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start,html[data-netbox-color-mode=light] .dropdown-menu-xxl-start{--bs-position: start}html .dropdown-menu-xxl-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-xxl-end,html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end,html[data-netbox-color-mode=light] .dropdown-menu-xxl-end{--bs-position: end}html .dropdown-menu-xxl-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}@media print{html .dropup .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropup .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}html .dropup .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}html .dropup .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropup .dropdown-toggle:empty:after{margin-left:0}}@media print{html .dropend .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropend .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}html .dropend .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}html .dropend .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:empty:after{margin-left:0}html .dropend .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:after{vertical-align:0}}@media print{html .dropstart .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropstart .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}html .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}html .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:after{display:none}html .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}html .dropstart .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:empty:after{margin-left:0}html .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:before{vertical-align:0}}@media print{html .dropdown-divider,html[data-netbox-color-mode=dark] .dropdown-divider,html[data-netbox-color-mode=light] .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}}@media print{html .dropdown-item,html[data-netbox-color-mode=dark] .dropdown-item,html[data-netbox-color-mode=light] .dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}html .dropdown-item:hover,html .dropdown-item:focus,html[data-netbox-color-mode=dark] .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-item:focus,html[data-netbox-color-mode=light] .dropdown-item:hover,html[data-netbox-color-mode=light] .dropdown-item:focus{color:#1e2125;background-color:#e9ecef}html .dropdown-item.active,html .dropdown-item:active,html[data-netbox-color-mode=dark] .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-item:active,html[data-netbox-color-mode=light] .dropdown-item.active,html[data-netbox-color-mode=light] .dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}html .dropdown-item.disabled,html .dropdown-item:disabled,html[data-netbox-color-mode=dark] .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-item:disabled,html[data-netbox-color-mode=light] .dropdown-item.disabled,html[data-netbox-color-mode=light] .dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}}@media print{html .dropdown-menu.show,html[data-netbox-color-mode=dark] .dropdown-menu.show,html[data-netbox-color-mode=light] .dropdown-menu.show{display:block}}@media print{html .dropdown-header,html[data-netbox-color-mode=dark] .dropdown-header,html[data-netbox-color-mode=light] .dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}}@media print{html .dropdown-item-text,html[data-netbox-color-mode=dark] .dropdown-item-text,html[data-netbox-color-mode=light] .dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}}@media print{html .dropdown-menu-dark,html[data-netbox-color-mode=dark] .dropdown-menu-dark,html[data-netbox-color-mode=light] .dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}html .dropdown-menu-dark .dropdown-item,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item{color:#dee2e6}html .dropdown-menu-dark .dropdown-item:hover,html .dropdown-menu-dark .dropdown-item:focus,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:focus,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}html .dropdown-menu-dark .dropdown-item.active,html .dropdown-menu-dark .dropdown-item:active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:active,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}html .dropdown-menu-dark .dropdown-item.disabled,html .dropdown-menu-dark .dropdown-item:disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:disabled,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}html .dropdown-menu-dark .dropdown-divider,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-divider,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-divider{border-color:#00000026}html .dropdown-menu-dark .dropdown-item-text,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item-text,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item-text{color:#dee2e6}html .dropdown-menu-dark .dropdown-header,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-header,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-header{color:#adb5bd}}@media print{html .btn-group,html .btn-group-vertical,html[data-netbox-color-mode=dark] .btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical,html[data-netbox-color-mode=light] .btn-group,html[data-netbox-color-mode=light] .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}html .btn-group>.btn,html .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=light] .btn-group>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn{position:relative;flex:1 1 auto}html .btn-group>.btn-check:checked+.btn,html .btn-group>.btn-check:focus+.btn,html .btn-group>.btn:hover,html .btn-group>.btn:focus,html .btn-group>.btn:active,html .btn-group>.btn.active,html .btn-group-vertical>.btn-check:checked+.btn,html .btn-group-vertical>.btn-check:focus+.btn,html .btn-group-vertical>.btn:hover,html .btn-group-vertical>.btn:focus,html .btn-group-vertical>.btn:active,html .btn-group-vertical>.btn.active,html[data-netbox-color-mode=dark] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:hover,html[data-netbox-color-mode=dark] .btn-group>.btn:focus,html[data-netbox-color-mode=dark] .btn-group>.btn:active,html[data-netbox-color-mode=dark] .btn-group>.btn.active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn.active,html[data-netbox-color-mode=light] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=light] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=light] .btn-group>.btn:hover,html[data-netbox-color-mode=light] .btn-group>.btn:focus,html[data-netbox-color-mode=light] .btn-group>.btn:active,html[data-netbox-color-mode=light] .btn-group>.btn.active,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=light] .btn-group-vertical>.btn.active{z-index:1}}@media print{html .btn-toolbar,html[data-netbox-color-mode=dark] .btn-toolbar,html[data-netbox-color-mode=light] .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}html .btn-toolbar .input-group,html[data-netbox-color-mode=dark] .btn-toolbar .input-group,html[data-netbox-color-mode=light] .btn-toolbar .input-group{width:auto}}@media print{html .btn-group>.btn:not(:first-child),html .btn-group>.btn-group:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child),html[data-netbox-color-mode=light] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:first-child){margin-left:-1px}html .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html .btn-group>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=light] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}html .btn-group>.btn:nth-child(n+3),html .btn-group>:not(.btn-check)+.btn,html .btn-group>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=dark] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=light] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=light] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}}@media print{html .dropdown-toggle-split,html[data-netbox-color-mode=dark] .dropdown-toggle-split,html[data-netbox-color-mode=light] .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}html .dropdown-toggle-split:after,.dropup html .dropdown-toggle-split:after,.dropend html .dropdown-toggle-split:after,html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,html[data-netbox-color-mode=light] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=light] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=light] .dropdown-toggle-split:after{margin-left:0}.dropstart html .dropdown-toggle-split:before,.dropstart html[data-netbox-color-mode=dark] .dropdown-toggle-split:before,.dropstart html[data-netbox-color-mode=light] .dropdown-toggle-split:before{margin-right:0}}@media print{html .btn-sm+.dropdown-toggle-split,html .btn-group-sm>.btn+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-sm+.dropdown-toggle-split,html[data-netbox-color-mode=light] .btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}}@media print{html .btn-lg+.dropdown-toggle-split,html .btn-group-lg>.btn+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-lg+.dropdown-toggle-split,html[data-netbox-color-mode=light] .btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}}@media print{html .btn-group-vertical,html[data-netbox-color-mode=dark] .btn-group-vertical,html[data-netbox-color-mode=light] .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}html .btn-group-vertical>.btn,html .btn-group-vertical>.btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group,html[data-netbox-color-mode=light] .btn-group-vertical>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group{width:100%}html .btn-group-vertical>.btn:not(:first-child),html .btn-group-vertical>.btn-group:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child),html[data-netbox-color-mode=light] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}html .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html .btn-group-vertical>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}html .btn-group-vertical>.btn~.btn,html .btn-group-vertical>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}}@media print{html .nav,html[data-netbox-color-mode=dark] .nav,html[data-netbox-color-mode=light] .nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}}@media print{html .nav-link,html[data-netbox-color-mode=dark] .nav-link,html[data-netbox-color-mode=light] .nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .nav-link,html[data-netbox-color-mode=dark] .nav-link,html[data-netbox-color-mode=light] .nav-link{transition:none}}@media print{html .nav-link:hover,html .nav-link:focus,html[data-netbox-color-mode=dark] .nav-link:hover,html[data-netbox-color-mode=dark] .nav-link:focus,html[data-netbox-color-mode=light] .nav-link:hover,html[data-netbox-color-mode=light] .nav-link:focus{color:#0a58ca}}@media print{html .nav-link.disabled,html[data-netbox-color-mode=dark] .nav-link.disabled,html[data-netbox-color-mode=light] .nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}}@media print{html .nav-tabs,html[data-netbox-color-mode=dark] .nav-tabs,html[data-netbox-color-mode=light] .nav-tabs{border-bottom:1px solid #dee2e6}html .nav-tabs .nav-link,html[data-netbox-color-mode=dark] .nav-tabs .nav-link,html[data-netbox-color-mode=light] .nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}html .nav-tabs .nav-link:hover,html .nav-tabs .nav-link:focus,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:focus,html[data-netbox-color-mode=light] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=light] .nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}html .nav-tabs .nav-link.disabled,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.disabled,html[data-netbox-color-mode=light] .nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}html .nav-tabs .nav-link.active,html .nav-tabs .nav-item.show .nav-link,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-item.show .nav-link,html[data-netbox-color-mode=light] .nav-tabs .nav-link.active,html[data-netbox-color-mode=light] .nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}html .nav-tabs .dropdown-menu,html[data-netbox-color-mode=dark] .nav-tabs .dropdown-menu,html[data-netbox-color-mode=light] .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}}@media print{html .nav-pills .nav-link,html[data-netbox-color-mode=dark] .nav-pills .nav-link,html[data-netbox-color-mode=light] .nav-pills .nav-link{background:none;border:0;border-radius:.375rem}html .nav-pills .nav-link.active,html .nav-pills .show>.nav-link,html[data-netbox-color-mode=dark] .nav-pills .nav-link.active,html[data-netbox-color-mode=dark] .nav-pills .show>.nav-link,html[data-netbox-color-mode=light] .nav-pills .nav-link.active,html[data-netbox-color-mode=light] .nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}}@media print{html .nav-fill>.nav-link,html .nav-fill .nav-item,html[data-netbox-color-mode=dark] .nav-fill>.nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item,html[data-netbox-color-mode=light] .nav-fill>.nav-link,html[data-netbox-color-mode=light] .nav-fill .nav-item{flex:1 1 auto;text-align:center}}@media print{html .nav-justified>.nav-link,html .nav-justified .nav-item,html[data-netbox-color-mode=dark] .nav-justified>.nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item,html[data-netbox-color-mode=light] .nav-justified>.nav-link,html[data-netbox-color-mode=light] .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}}@media print{html .nav-fill .nav-item .nav-link,html .nav-justified .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item .nav-link,html[data-netbox-color-mode=light] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=light] .nav-justified .nav-item .nav-link{width:100%}}@media print{html .tab-content>.tab-pane,html[data-netbox-color-mode=dark] .tab-content>.tab-pane,html[data-netbox-color-mode=light] .tab-content>.tab-pane{display:none}html .tab-content>.active,html[data-netbox-color-mode=dark] .tab-content>.active,html[data-netbox-color-mode=light] .tab-content>.active{display:block}}@media print{html .navbar,html[data-netbox-color-mode=dark] .navbar,html[data-netbox-color-mode=light] .navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar>.container-xxl,html[data-netbox-color-mode=light] .navbar>.container-xxl,html[data-netbox-color-mode=dark] .navbar>.container-xl,html[data-netbox-color-mode=light] .navbar>.container-xl,html[data-netbox-color-mode=dark] .navbar>.container-lg,html[data-netbox-color-mode=light] .navbar>.container-lg,html[data-netbox-color-mode=dark] .navbar>.container-md,html[data-netbox-color-mode=light] .navbar>.container-md,html[data-netbox-color-mode=dark] .navbar>.container-sm,html[data-netbox-color-mode=light] .navbar>.container-sm,html .navbar>.container,html .navbar>.container-fluid,html .navbar>.container-sm,html .navbar>.container-md,html .navbar>.container-lg,html .navbar>.container-xl,html .navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}}@media print{html .navbar-brand,html[data-netbox-color-mode=dark] .navbar-brand,html[data-netbox-color-mode=light] .navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}}@media print{html .navbar-nav,html[data-netbox-color-mode=dark] .navbar-nav,html[data-netbox-color-mode=light] .navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}html .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-nav .nav-link{padding-right:0;padding-left:0}html .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-nav .dropdown-menu{position:static}}@media print{html .navbar-text,html[data-netbox-color-mode=dark] .navbar-text,html[data-netbox-color-mode=light] .navbar-text{padding-top:.5rem;padding-bottom:.5rem}}@media print{html .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-collapse,html[data-netbox-color-mode=light] .navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}}@media print{html .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-toggler,html[data-netbox-color-mode=light] .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-toggler,html[data-netbox-color-mode=light] .navbar-toggler{transition:none}}@media print{html .navbar-toggler:hover,html[data-netbox-color-mode=dark] .navbar-toggler:hover,html[data-netbox-color-mode=light] .navbar-toggler:hover{text-decoration:none}}@media print{html .navbar-toggler:focus,html[data-netbox-color-mode=dark] .navbar-toggler:focus,html[data-netbox-color-mode=light] .navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}}@media print{html .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}}@media print{html .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}}@media print and (min-width: 576px){html .navbar-expand-sm,html[data-netbox-color-mode=dark] .navbar-expand-sm,html[data-netbox-color-mode=light] .navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-sm .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav{flex-direction:row}html .navbar-expand-sm .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-sm .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-sm .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav-scroll{overflow:visible}html .navbar-expand-sm .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-sm .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-toggler{display:none}}@media print and (min-width: 768px){html .navbar-expand-md,html[data-netbox-color-mode=dark] .navbar-expand-md,html[data-netbox-color-mode=light] .navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-md .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav{flex-direction:row}html .navbar-expand-md .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-md .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-md .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav-scroll{overflow:visible}html .navbar-expand-md .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-md .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-toggler{display:none}}@media print and (min-width: 992px){html .navbar-expand-lg,html[data-netbox-color-mode=dark] .navbar-expand-lg,html[data-netbox-color-mode=light] .navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-lg .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav{flex-direction:row}html .navbar-expand-lg .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-lg .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-lg .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav-scroll{overflow:visible}html .navbar-expand-lg .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-lg .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-toggler{display:none}}@media print and (min-width: 1200px){html .navbar-expand-xl,html[data-netbox-color-mode=dark] .navbar-expand-xl,html[data-netbox-color-mode=light] .navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-xl .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav{flex-direction:row}html .navbar-expand-xl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-xl .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-xl .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav-scroll{overflow:visible}html .navbar-expand-xl .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-xl .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-toggler{display:none}}@media print and (min-width: 1400px){html .navbar-expand-xxl,html[data-netbox-color-mode=dark] .navbar-expand-xxl,html[data-netbox-color-mode=light] .navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-xxl .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav{flex-direction:row}html .navbar-expand-xxl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-xxl .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-xxl .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav-scroll{overflow:visible}html .navbar-expand-xxl .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-xxl .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-toggler{display:none}}@media print{html .navbar-expand,html[data-netbox-color-mode=dark] .navbar-expand,html[data-netbox-color-mode=light] .navbar-expand{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav{flex-direction:row}html .navbar-expand .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav-scroll{overflow:visible}html .navbar-expand .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand .navbar-toggler{display:none}}@media print{html .navbar-light .navbar-brand,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand,html[data-netbox-color-mode=light] .navbar-light .navbar-brand{color:#000000e6}html .navbar-light .navbar-brand:hover,html .navbar-light .navbar-brand:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-brand:focus{color:#000000e6}html .navbar-light .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link{color:#f8f9fa}html .navbar-light .navbar-nav .nav-link:hover,html .navbar-light .navbar-nav .nav-link:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link:focus{color:#000000b3}html .navbar-light .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}html .navbar-light .navbar-nav .show>.nav-link,html .navbar-light .navbar-nav .nav-link.active,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.active,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link.active{color:#000000e6}html .navbar-light .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler,html[data-netbox-color-mode=light] .navbar-light .navbar-toggler{color:#f8f9fa;border-color:#0000001a}html .navbar-light .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html .navbar-light .navbar-text,html[data-netbox-color-mode=dark] .navbar-light .navbar-text,html[data-netbox-color-mode=light] .navbar-light .navbar-text{color:#f8f9fa}html .navbar-light .navbar-text a,html .navbar-light .navbar-text a:hover,html .navbar-light .navbar-text a:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-text a,html[data-netbox-color-mode=light] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-text a:focus{color:#000000e6}}@media print{html .navbar-dark .navbar-brand,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand{color:#fff}html .navbar-dark .navbar-brand:hover,html .navbar-dark .navbar-brand:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand:focus{color:#fff}html .navbar-dark .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link{color:#ffffff8c}html .navbar-dark .navbar-nav .nav-link:hover,html .navbar-dark .navbar-nav .nav-link:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}html .navbar-dark .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}html .navbar-dark .navbar-nav .show>.nav-link,html .navbar-dark .navbar-nav .nav-link.active,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.active,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link.active{color:#fff}html .navbar-dark .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler,html[data-netbox-color-mode=light] .navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}html .navbar-dark .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html .navbar-dark .navbar-text,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text,html[data-netbox-color-mode=light] .navbar-dark .navbar-text{color:#ffffff8c}html .navbar-dark .navbar-text a,html .navbar-dark .navbar-text a:hover,html .navbar-dark .navbar-text a:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a:focus{color:#fff}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.375rem}html .card>hr,html[data-netbox-color-mode=dark] .card>hr,html[data-netbox-color-mode=light] .card>hr{margin-right:0;margin-left:0}html .card>.list-group,html[data-netbox-color-mode=dark] .card>.list-group,html[data-netbox-color-mode=light] .card>.list-group{border-top:inherit;border-bottom:inherit}html .card>.list-group:first-child,html[data-netbox-color-mode=dark] .card>.list-group:first-child,html[data-netbox-color-mode=light] .card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html .card>.list-group:last-child,html[data-netbox-color-mode=dark] .card>.list-group:last-child,html[data-netbox-color-mode=light] .card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}html .card>.card-header+.list-group,html .card>.list-group+.card-footer,html[data-netbox-color-mode=dark] .card>.card-header+.list-group,html[data-netbox-color-mode=dark] .card>.list-group+.card-footer,html[data-netbox-color-mode=light] .card>.card-header+.list-group,html[data-netbox-color-mode=light] .card>.list-group+.card-footer{border-top:0}}@media print{html .card-body,html[data-netbox-color-mode=dark] .card-body,html[data-netbox-color-mode=light] .card-body{flex:1 1 auto;padding:1rem}}@media print{html .card-title,html[data-netbox-color-mode=dark] .card-title,html[data-netbox-color-mode=light] .card-title{margin-bottom:.5rem}}@media print{html .card-subtitle,html[data-netbox-color-mode=dark] .card-subtitle,html[data-netbox-color-mode=light] .card-subtitle{margin-top:-.25rem;margin-bottom:0}}@media print{html .card-text:last-child,html[data-netbox-color-mode=dark] .card-text:last-child,html[data-netbox-color-mode=light] .card-text:last-child{margin-bottom:0}}@media print{html .card-link:hover,html[data-netbox-color-mode=dark] .card-link:hover,html[data-netbox-color-mode=light] .card-link:hover{text-decoration:none}html .card-link+.card-link,html[data-netbox-color-mode=dark] .card-link+.card-link,html[data-netbox-color-mode=light] .card-link+.card-link{margin-left:1rem}}@media print{html .card-header,html[data-netbox-color-mode=dark] .card-header,html[data-netbox-color-mode=light] .card-header{padding:.5rem 1rem;margin-bottom:0;color:#343a40;background-color:"unset";border-bottom:1px solid rgba(0,0,0,.125)}html .card-header:first-child,html[data-netbox-color-mode=dark] .card-header:first-child,html[data-netbox-color-mode=light] .card-header:first-child{border-radius:calc(0.375rem - 1px) calc(0.375rem - 1px) 0 0}}@media print{html .card-footer,html[data-netbox-color-mode=dark] .card-footer,html[data-netbox-color-mode=light] .card-footer{padding:.5rem 1rem;color:#343a40;background-color:"unset";border-top:1px solid rgba(0,0,0,.125)}html .card-footer:last-child,html[data-netbox-color-mode=dark] .card-footer:last-child,html[data-netbox-color-mode=light] .card-footer:last-child{border-radius:0 0 calc(0.375rem - 1px) calc(0.375rem - 1px)}}@media print{html .card-header-tabs,html[data-netbox-color-mode=dark] .card-header-tabs,html[data-netbox-color-mode=light] .card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}}@media print{html .card-header-pills,html[data-netbox-color-mode=dark] .card-header-pills,html[data-netbox-color-mode=light] .card-header-pills{margin-right:-.5rem;margin-left:-.5rem}}@media print{html .card-img-overlay,html[data-netbox-color-mode=dark] .card-img-overlay,html[data-netbox-color-mode=light] .card-img-overlay{position:absolute;inset:0;padding:1rem;border-radius:calc(0.375rem - 1px)}}@media print{html .card-img,html .card-img-top,html .card-img-bottom,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=dark] .card-img-bottom,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-top,html[data-netbox-color-mode=light] .card-img-bottom{width:100%}}@media print{html .card-img,html .card-img-top,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-top{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}}@media print{html .card-img,html .card-img-bottom,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-bottom,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-bottom{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}}@media print{html .card-group>.card,html[data-netbox-color-mode=dark] .card-group>.card,html[data-netbox-color-mode=light] .card-group>.card{margin-bottom:.75rem}}@media print and (min-width: 576px){html .card-group,html[data-netbox-color-mode=dark] .card-group,html[data-netbox-color-mode=light] .card-group{display:flex;flex-flow:row wrap}html .card-group>.card,html[data-netbox-color-mode=dark] .card-group>.card,html[data-netbox-color-mode=light] .card-group>.card{flex:1 0 0%;margin-bottom:0}html .card-group>.card+.card,html[data-netbox-color-mode=dark] .card-group>.card+.card,html[data-netbox-color-mode=light] .card-group>.card+.card{margin-left:0;border-left:0}html .card-group>.card:not(:last-child),html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child),html[data-netbox-color-mode=light] .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html .card-group>.card:not(:last-child) .card-img-top,html .card-group>.card:not(:last-child) .card-header,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-header,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}html .card-group>.card:not(:last-child) .card-img-bottom,html .card-group>.card:not(:last-child) .card-footer,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-footer,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}html .card-group>.card:not(:first-child),html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child),html[data-netbox-color-mode=light] .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}html .card-group>.card:not(:first-child) .card-img-top,html .card-group>.card:not(:first-child) .card-header,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-header,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}html .card-group>.card:not(:first-child) .card-img-bottom,html .card-group>.card:not(:first-child) .card-footer,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-footer,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}@media print{html .accordion-button,html[data-netbox-color-mode=dark] .accordion-button,html[data-netbox-color-mode=light] .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}}@media print and (prefers-reduced-motion: reduce){html .accordion-button,html[data-netbox-color-mode=dark] .accordion-button,html[data-netbox-color-mode=light] .accordion-button{transition:none}}@media print{html .accordion-button:not(.collapsed),html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed),html[data-netbox-color-mode=light] .accordion-button:not(.collapsed){color:#343a40;background-color:#cfe2ff;box-shadow:inset 0 -1px #dee2e6}html .accordion-button:not(.collapsed):after,html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed):after,html[data-netbox-color-mode=light] .accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}}@media print{html .accordion-button:after,html[data-netbox-color-mode=dark] .accordion-button:after,html[data-netbox-color-mode=light] .accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .accordion-button:after,html[data-netbox-color-mode=dark] .accordion-button:after,html[data-netbox-color-mode=light] .accordion-button:after{transition:none}}@media print{html .accordion-button:hover,html[data-netbox-color-mode=dark] .accordion-button:hover,html[data-netbox-color-mode=light] .accordion-button:hover{z-index:2}}@media print{html .accordion-button:focus,html[data-netbox-color-mode=dark] .accordion-button:focus,html[data-netbox-color-mode=light] .accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .accordion-header,html[data-netbox-color-mode=dark] .accordion-header,html[data-netbox-color-mode=light] .accordion-header{margin-bottom:0}}@media print{html .accordion-item,html[data-netbox-color-mode=dark] .accordion-item,html[data-netbox-color-mode=light] .accordion-item{background-color:transparent;border:1px solid #dee2e6}html .accordion-item:first-of-type,html[data-netbox-color-mode=dark] .accordion-item:first-of-type,html[data-netbox-color-mode=light] .accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}html .accordion-item:first-of-type .accordion-button,html[data-netbox-color-mode=dark] .accordion-item:first-of-type .accordion-button,html[data-netbox-color-mode=light] .accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html .accordion-item:not(:first-of-type),html[data-netbox-color-mode=dark] .accordion-item:not(:first-of-type),html[data-netbox-color-mode=light] .accordion-item:not(:first-of-type){border-top:0}html .accordion-item:last-of-type,html[data-netbox-color-mode=dark] .accordion-item:last-of-type,html[data-netbox-color-mode=light] .accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .accordion-item:last-of-type .accordion-button.collapsed,html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-button.collapsed,html[data-netbox-color-mode=light] .accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}html .accordion-item:last-of-type .accordion-collapse,html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-collapse,html[data-netbox-color-mode=light] .accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}}@media print{html .accordion-body,html[data-netbox-color-mode=dark] .accordion-body,html[data-netbox-color-mode=light] .accordion-body{padding:1rem 1.25rem}}@media print{html .accordion-flush .accordion-collapse,html[data-netbox-color-mode=dark] .accordion-flush .accordion-collapse,html[data-netbox-color-mode=light] .accordion-flush .accordion-collapse{border-width:0}html .accordion-flush .accordion-item,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item,html[data-netbox-color-mode=light] .accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}html .accordion-flush .accordion-item:first-child,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:first-child,html[data-netbox-color-mode=light] .accordion-flush .accordion-item:first-child{border-top:0}html .accordion-flush .accordion-item:last-child,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:last-child,html[data-netbox-color-mode=light] .accordion-flush .accordion-item:last-child{border-bottom:0}html .accordion-flush .accordion-item .accordion-button,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item .accordion-button,html[data-netbox-color-mode=light] .accordion-flush .accordion-item .accordion-button{border-radius:0}}@media print{html .breadcrumb,html[data-netbox-color-mode=dark] .breadcrumb,html[data-netbox-color-mode=light] .breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}}@media print{html .breadcrumb-item+.breadcrumb-item,html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item,html[data-netbox-color-mode=light] .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}html .breadcrumb-item+.breadcrumb-item:before,html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item:before,html[data-netbox-color-mode=light] .breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E"))}html .breadcrumb-item.active,html[data-netbox-color-mode=dark] .breadcrumb-item.active,html[data-netbox-color-mode=light] .breadcrumb-item.active{color:#6c757d}}@media print{html .pagination,html[data-netbox-color-mode=dark] .pagination,html[data-netbox-color-mode=light] .pagination{display:flex;padding-left:0;list-style:none}}@media print{html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{transition:none}}@media print{html .page-link:hover,html[data-netbox-color-mode=dark] .page-link:hover,html[data-netbox-color-mode=light] .page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}}@media print{html .page-link:focus,html[data-netbox-color-mode=dark] .page-link:focus,html[data-netbox-color-mode=light] .page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .page-item:not(:first-child) .page-link,html[data-netbox-color-mode=dark] .page-item:not(:first-child) .page-link,html[data-netbox-color-mode=light] .page-item:not(:first-child) .page-link{margin-left:-1px}html .page-item.active .page-link,html[data-netbox-color-mode=dark] .page-item.active .page-link,html[data-netbox-color-mode=light] .page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .page-item.disabled .page-link,html[data-netbox-color-mode=dark] .page-item.disabled .page-link,html[data-netbox-color-mode=light] .page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}}@media print{html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{padding:.375rem .75rem}}@media print{html .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .page-item:first-child .page-link,html[data-netbox-color-mode=light] .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .page-item:last-child .page-link,html[data-netbox-color-mode=light] .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}}@media print{html .pagination-lg .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}html .pagination-lg .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-item:first-child .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}html .pagination-lg .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-item:last-child .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}}@media print{html .pagination-sm .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}html .pagination-sm .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-item:first-child .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html .pagination-sm .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-item:last-child .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}}@media print{html .badge,html[data-netbox-color-mode=dark] .badge,html[data-netbox-color-mode=light] .badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}html .badge:empty,html[data-netbox-color-mode=dark] .badge:empty,html[data-netbox-color-mode=light] .badge:empty{display:none}}@media print{html .btn .badge,html[data-netbox-color-mode=dark] .btn .badge,html[data-netbox-color-mode=light] .btn .badge{position:relative;top:-1px}}@media print{html .alert,html[data-netbox-color-mode=dark] .alert,html[data-netbox-color-mode=light] .alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}}@media print{html .alert-heading,html[data-netbox-color-mode=dark] .alert-heading,html[data-netbox-color-mode=light] .alert-heading{color:inherit}}@media print{html .alert-link,html[data-netbox-color-mode=dark] .alert-link,html[data-netbox-color-mode=light] .alert-link{font-weight:700}}@media print{html .alert-dismissible,html[data-netbox-color-mode=dark] .alert-dismissible,html[data-netbox-color-mode=light] .alert-dismissible{padding-right:3rem}html .alert-dismissible .btn-close,html[data-netbox-color-mode=dark] .alert-dismissible .btn-close,html[data-netbox-color-mode=light] .alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}}@media print{html .alert-primary,html[data-netbox-color-mode=dark] .alert-primary,html[data-netbox-color-mode=light] .alert-primary{color:#1f496e;background-color:#d6e4f1;border-color:#c2d7e9}html .alert-primary .alert-link,html[data-netbox-color-mode=dark] .alert-primary .alert-link,html[data-netbox-color-mode=light] .alert-primary .alert-link{color:#193a58}}@media print{html .alert-secondary,html[data-netbox-color-mode=dark] .alert-secondary,html[data-netbox-color-mode=light] .alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}html .alert-secondary .alert-link,html[data-netbox-color-mode=dark] .alert-secondary .alert-link,html[data-netbox-color-mode=light] .alert-secondary .alert-link{color:#34383c}}@media print{html .alert-success,html[data-netbox-color-mode=dark] .alert-success,html[data-netbox-color-mode=light] .alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}html .alert-success .alert-link,html[data-netbox-color-mode=dark] .alert-success .alert-link,html[data-netbox-color-mode=light] .alert-success .alert-link{color:#0c4128}}@media print{html .alert-info,html[data-netbox-color-mode=dark] .alert-info,html[data-netbox-color-mode=light] .alert-info{color:#225660;background-color:#ddf7fc;border-color:#ccf3fb}html .alert-info .alert-link,html[data-netbox-color-mode=dark] .alert-info .alert-link,html[data-netbox-color-mode=light] .alert-info .alert-link{color:#1b454d}}@media print{html .alert-warning,html[data-netbox-color-mode=dark] .alert-warning,html[data-netbox-color-mode=light] .alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}html .alert-warning .alert-link,html[data-netbox-color-mode=dark] .alert-warning .alert-link,html[data-netbox-color-mode=light] .alert-warning .alert-link{color:#523e02}}@media print{html .alert-danger,html[data-netbox-color-mode=dark] .alert-danger,html[data-netbox-color-mode=light] .alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}html .alert-danger .alert-link,html[data-netbox-color-mode=dark] .alert-danger .alert-link,html[data-netbox-color-mode=light] .alert-danger .alert-link{color:#6a1a21}}@media print{html .alert-light,html[data-netbox-color-mode=dark] .alert-light,html[data-netbox-color-mode=light] .alert-light{color:#5d5e60;background-color:#fbfbfc;border-color:#f8f9fa}html .alert-light .alert-link,html[data-netbox-color-mode=dark] .alert-light .alert-link,html[data-netbox-color-mode=light] .alert-light .alert-link{color:#4a4b4d}}@media print{html .alert-dark,html[data-netbox-color-mode=dark] .alert-dark,html[data-netbox-color-mode=light] .alert-dark{color:#1f2326;background-color:#d6d8d9;border-color:#c2c4c6}html .alert-dark .alert-link,html[data-netbox-color-mode=dark] .alert-dark .alert-link,html[data-netbox-color-mode=light] .alert-dark .alert-link{color:#191c1e}}@media print{html .alert-blue,html[data-netbox-color-mode=dark] .alert-blue,html[data-netbox-color-mode=light] .alert-blue{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}html .alert-blue .alert-link,html[data-netbox-color-mode=dark] .alert-blue .alert-link,html[data-netbox-color-mode=light] .alert-blue .alert-link{color:#06357a}}@media print{html .alert-indigo,html[data-netbox-color-mode=dark] .alert-indigo,html[data-netbox-color-mode=light] .alert-indigo{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}html .alert-indigo .alert-link,html[data-netbox-color-mode=dark] .alert-indigo .alert-link,html[data-netbox-color-mode=light] .alert-indigo .alert-link{color:#310874}}@media print{html .alert-purple,html[data-netbox-color-mode=dark] .alert-purple,html[data-netbox-color-mode=light] .alert-purple{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}html .alert-purple .alert-link,html[data-netbox-color-mode=dark] .alert-purple .alert-link,html[data-netbox-color-mode=light] .alert-purple .alert-link{color:#36205d}}@media print{html .alert-pink,html[data-netbox-color-mode=dark] .alert-pink,html[data-netbox-color-mode=light] .alert-pink{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}html .alert-pink .alert-link,html[data-netbox-color-mode=dark] .alert-pink .alert-link,html[data-netbox-color-mode=light] .alert-pink .alert-link{color:#66193f}}@media print{html .alert-red,html[data-netbox-color-mode=dark] .alert-red,html[data-netbox-color-mode=light] .alert-red{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}html .alert-red .alert-link,html[data-netbox-color-mode=dark] .alert-red .alert-link,html[data-netbox-color-mode=light] .alert-red .alert-link{color:#6a1a21}}@media print{html .alert-orange,html[data-netbox-color-mode=dark] .alert-orange,html[data-netbox-color-mode=light] .alert-orange{color:#984c0c;background-color:#ffe5d0;border-color:#fed8b9}html .alert-orange .alert-link,html[data-netbox-color-mode=dark] .alert-orange .alert-link,html[data-netbox-color-mode=light] .alert-orange .alert-link{color:#7a3d0a}}@media print{html .alert-yellow,html[data-netbox-color-mode=dark] .alert-yellow,html[data-netbox-color-mode=light] .alert-yellow{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}html .alert-yellow .alert-link,html[data-netbox-color-mode=dark] .alert-yellow .alert-link,html[data-netbox-color-mode=light] .alert-yellow .alert-link{color:#523e02}}@media print{html .alert-green,html[data-netbox-color-mode=dark] .alert-green,html[data-netbox-color-mode=light] .alert-green{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}html .alert-green .alert-link,html[data-netbox-color-mode=dark] .alert-green .alert-link,html[data-netbox-color-mode=light] .alert-green .alert-link{color:#0c4128}}@media print{html .alert-teal,html[data-netbox-color-mode=dark] .alert-teal,html[data-netbox-color-mode=light] .alert-teal{color:#13795b;background-color:#d2f4ea;border-color:#bcefe0}html .alert-teal .alert-link,html[data-netbox-color-mode=dark] .alert-teal .alert-link,html[data-netbox-color-mode=light] .alert-teal .alert-link{color:#0f6149}}@media print{html .alert-cyan,html[data-netbox-color-mode=dark] .alert-cyan,html[data-netbox-color-mode=light] .alert-cyan{color:#055160;background-color:#cff4fc;border-color:#b6effb}html .alert-cyan .alert-link,html[data-netbox-color-mode=dark] .alert-cyan .alert-link,html[data-netbox-color-mode=light] .alert-cyan .alert-link{color:#04414d}}@media print{html .alert-gray,html[data-netbox-color-mode=dark] .alert-gray,html[data-netbox-color-mode=light] .alert-gray{color:#686d71;background-color:#eff0f2;border-color:#e6e9eb}html .alert-gray .alert-link,html[data-netbox-color-mode=dark] .alert-gray .alert-link,html[data-netbox-color-mode=light] .alert-gray .alert-link{color:#53575a}}@media print{html .alert-black,html[data-netbox-color-mode=dark] .alert-black,html[data-netbox-color-mode=light] .alert-black{color:#000;background-color:#ccc;border-color:#b3b3b3}html .alert-black .alert-link,html[data-netbox-color-mode=dark] .alert-black .alert-link,html[data-netbox-color-mode=light] .alert-black .alert-link{color:#000}}@media print{html .alert-white,html[data-netbox-color-mode=dark] .alert-white,html[data-netbox-color-mode=light] .alert-white{color:#666;background-color:#fff;border-color:#fff}html .alert-white .alert-link,html[data-netbox-color-mode=dark] .alert-white .alert-link,html[data-netbox-color-mode=light] .alert-white .alert-link{color:#525252}}@media print{@keyframes progress-bar-stripes{0%{background-position-x:1rem}}}@media print{html .progress,html[data-netbox-color-mode=dark] .progress,html[data-netbox-color-mode=light] .progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.375rem}}@media print{html .progress-bar,html[data-netbox-color-mode=dark] .progress-bar,html[data-netbox-color-mode=light] .progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}}@media print and (prefers-reduced-motion: reduce){html .progress-bar,html[data-netbox-color-mode=dark] .progress-bar,html[data-netbox-color-mode=light] .progress-bar{transition:none}}@media print{html .progress-bar-striped,html[data-netbox-color-mode=dark] .progress-bar-striped,html[data-netbox-color-mode=light] .progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}}@media print{html .progress-bar-animated,html[data-netbox-color-mode=dark] .progress-bar-animated,html[data-netbox-color-mode=light] .progress-bar-animated{animation:1s linear infinite progress-bar-stripes}}@media print and (prefers-reduced-motion: reduce){html .progress-bar-animated,html[data-netbox-color-mode=dark] .progress-bar-animated,html[data-netbox-color-mode=light] .progress-bar-animated{animation:none}}@media print{html .list-group,html[data-netbox-color-mode=dark] .list-group,html[data-netbox-color-mode=light] .list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}}@media print{html .list-group-numbered,html[data-netbox-color-mode=dark] .list-group-numbered,html[data-netbox-color-mode=light] .list-group-numbered{list-style-type:none;counter-reset:section}html .list-group-numbered>li:before,html[data-netbox-color-mode=dark] .list-group-numbered>li:before,html[data-netbox-color-mode=light] .list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}}@media print{html .list-group-item-action,html[data-netbox-color-mode=dark] .list-group-item-action,html[data-netbox-color-mode=light] .list-group-item-action{width:100%;color:#495057;text-align:inherit}html .list-group-item-action:hover,html .list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}html .list-group-item-action:active,html[data-netbox-color-mode=dark] .list-group-item-action:active,html[data-netbox-color-mode=light] .list-group-item-action:active{color:#212529;background-color:#e9ecef}}@media print{html .list-group-item,html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=light] .list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#495057;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}html .list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}html .list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}html .list-group-item.disabled,html .list-group-item:disabled,html[data-netbox-color-mode=dark] .list-group-item.disabled,html[data-netbox-color-mode=dark] .list-group-item:disabled,html[data-netbox-color-mode=light] .list-group-item.disabled,html[data-netbox-color-mode=light] .list-group-item:disabled{color:#adb5bd;pointer-events:none;background-color:#fff}html .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .list-group-item+html .list-group-item,html .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html .list-group-item+html[data-netbox-color-mode=light] .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=light] .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=light] .list-group-item{border-top-width:0}html .list-group-item+html .list-group-item.active,html .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active{margin-top:-1px;border-top-width:1px}}@media print{html .list-group-horizontal,html[data-netbox-color-mode=dark] .list-group-horizontal,html[data-netbox-color-mode=light] .list-group-horizontal{flex-direction:row}html .list-group-horizontal>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item.active{margin-top:0}html .list-group-horizontal>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 576px){html .list-group-horizontal-sm,html[data-netbox-color-mode=dark] .list-group-horizontal-sm,html[data-netbox-color-mode=light] .list-group-horizontal-sm{flex-direction:row}html .list-group-horizontal-sm>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-sm>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-sm>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item.active{margin-top:0}html .list-group-horizontal-sm>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-sm>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 768px){html .list-group-horizontal-md,html[data-netbox-color-mode=dark] .list-group-horizontal-md,html[data-netbox-color-mode=light] .list-group-horizontal-md{flex-direction:row}html .list-group-horizontal-md>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-md>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-md>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item.active{margin-top:0}html .list-group-horizontal-md>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-md>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 992px){html .list-group-horizontal-lg,html[data-netbox-color-mode=dark] .list-group-horizontal-lg,html[data-netbox-color-mode=light] .list-group-horizontal-lg{flex-direction:row}html .list-group-horizontal-lg>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-lg>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-lg>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item.active{margin-top:0}html .list-group-horizontal-lg>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-lg>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 1200px){html .list-group-horizontal-xl,html[data-netbox-color-mode=dark] .list-group-horizontal-xl,html[data-netbox-color-mode=light] .list-group-horizontal-xl{flex-direction:row}html .list-group-horizontal-xl>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-xl>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-xl>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item.active{margin-top:0}html .list-group-horizontal-xl>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-xl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 1400px){html .list-group-horizontal-xxl,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl,html[data-netbox-color-mode=light] .list-group-horizontal-xxl{flex-direction:row}html .list-group-horizontal-xxl>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-xxl>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-xxl>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item.active{margin-top:0}html .list-group-horizontal-xxl>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-xxl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print{html .list-group-flush,html[data-netbox-color-mode=dark] .list-group-flush,html[data-netbox-color-mode=light] .list-group-flush{border-radius:0}html .list-group-flush>.list-group-item,html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item,html[data-netbox-color-mode=light] .list-group-flush>.list-group-item{border-width:0 0 1px}html .list-group-flush>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-flush>.list-group-item:last-child{border-bottom-width:0}}@media print{html .list-group-item-primary,html[data-netbox-color-mode=dark] .list-group-item-primary,html[data-netbox-color-mode=light] .list-group-item-primary{color:#1f496e;background-color:#d6e4f1}html .list-group-item-primary.list-group-item-action:hover,html .list-group-item-primary.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action:focus{color:#1f496e;background-color:#c1cdd9}html .list-group-item-primary.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1f496e;border-color:#1f496e}}@media print{html .list-group-item-secondary,html[data-netbox-color-mode=dark] .list-group-item-secondary,html[data-netbox-color-mode=light] .list-group-item-secondary{color:#41464b;background-color:#e2e3e5}html .list-group-item-secondary.list-group-item-action:hover,html .list-group-item-secondary.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}html .list-group-item-secondary.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}}@media print{html .list-group-item-success,html[data-netbox-color-mode=dark] .list-group-item-success,html[data-netbox-color-mode=light] .list-group-item-success{color:#0f5132;background-color:#d1e7dd}html .list-group-item-success.list-group-item-action:hover,html .list-group-item-success.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html .list-group-item-success.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .list-group-item-info,html[data-netbox-color-mode=dark] .list-group-item-info,html[data-netbox-color-mode=light] .list-group-item-info{color:#225660;background-color:#ddf7fc}html .list-group-item-info.list-group-item-action:hover,html .list-group-item-info.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action:focus{color:#225660;background-color:#c7dee3}html .list-group-item-info.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#225660;border-color:#225660}}@media print{html .list-group-item-warning,html[data-netbox-color-mode=dark] .list-group-item-warning,html[data-netbox-color-mode=light] .list-group-item-warning{color:#664d03;background-color:#fff3cd}html .list-group-item-warning.list-group-item-action:hover,html .list-group-item-warning.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html .list-group-item-warning.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .list-group-item-danger,html[data-netbox-color-mode=dark] .list-group-item-danger,html[data-netbox-color-mode=light] .list-group-item-danger{color:#842029;background-color:#f8d7da}html .list-group-item-danger.list-group-item-action:hover,html .list-group-item-danger.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html .list-group-item-danger.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .list-group-item-light,html[data-netbox-color-mode=dark] .list-group-item-light,html[data-netbox-color-mode=light] .list-group-item-light{color:#5d5e60;background-color:#fbfbfc}html .list-group-item-light.list-group-item-action:hover,html .list-group-item-light.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action:focus{color:#5d5e60;background-color:#e2e2e3}html .list-group-item-light.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#5d5e60;border-color:#5d5e60}}@media print{html .list-group-item-dark,html[data-netbox-color-mode=dark] .list-group-item-dark,html[data-netbox-color-mode=light] .list-group-item-dark{color:#1f2326;background-color:#d6d8d9}html .list-group-item-dark.list-group-item-action:hover,html .list-group-item-dark.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action:focus{color:#1f2326;background-color:#c1c2c3}html .list-group-item-dark.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1f2326;border-color:#1f2326}}@media print{html .list-group-item-blue,html[data-netbox-color-mode=dark] .list-group-item-blue,html[data-netbox-color-mode=light] .list-group-item-blue{color:#084298;background-color:#cfe2ff}html .list-group-item-blue.list-group-item-action:hover,html .list-group-item-blue.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action:focus{color:#084298;background-color:#bacbe6}html .list-group-item-blue.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}}@media print{html .list-group-item-indigo,html[data-netbox-color-mode=dark] .list-group-item-indigo,html[data-netbox-color-mode=light] .list-group-item-indigo{color:#3d0a91;background-color:#e0cffc}html .list-group-item-indigo.list-group-item-action:hover,html .list-group-item-indigo.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}html .list-group-item-indigo.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}}@media print{html .list-group-item-purple,html[data-netbox-color-mode=dark] .list-group-item-purple,html[data-netbox-color-mode=light] .list-group-item-purple{color:#432874;background-color:#e2d9f3}html .list-group-item-purple.list-group-item-action:hover,html .list-group-item-purple.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action:focus{color:#432874;background-color:#cbc3db}html .list-group-item-purple.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}}@media print{html .list-group-item-pink,html[data-netbox-color-mode=dark] .list-group-item-pink,html[data-netbox-color-mode=light] .list-group-item-pink{color:#801f4f;background-color:#f7d6e6}html .list-group-item-pink.list-group-item-action:hover,html .list-group-item-pink.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}html .list-group-item-pink.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}}@media print{html .list-group-item-red,html[data-netbox-color-mode=dark] .list-group-item-red,html[data-netbox-color-mode=light] .list-group-item-red{color:#842029;background-color:#f8d7da}html .list-group-item-red.list-group-item-action:hover,html .list-group-item-red.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html .list-group-item-red.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .list-group-item-orange,html[data-netbox-color-mode=dark] .list-group-item-orange,html[data-netbox-color-mode=light] .list-group-item-orange{color:#984c0c;background-color:#ffe5d0}html .list-group-item-orange.list-group-item-action:hover,html .list-group-item-orange.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-orange.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-orange.list-group-item-action:focus{color:#984c0c;background-color:#e6cebb}html .list-group-item-orange.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-orange.list-group-item-action.active{color:#fff;background-color:#984c0c;border-color:#984c0c}}@media print{html .list-group-item-yellow,html[data-netbox-color-mode=dark] .list-group-item-yellow,html[data-netbox-color-mode=light] .list-group-item-yellow{color:#664d03;background-color:#fff3cd}html .list-group-item-yellow.list-group-item-action:hover,html .list-group-item-yellow.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html .list-group-item-yellow.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .list-group-item-green,html[data-netbox-color-mode=dark] .list-group-item-green,html[data-netbox-color-mode=light] .list-group-item-green{color:#0f5132;background-color:#d1e7dd}html .list-group-item-green.list-group-item-action:hover,html .list-group-item-green.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html .list-group-item-green.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .list-group-item-teal,html[data-netbox-color-mode=dark] .list-group-item-teal,html[data-netbox-color-mode=light] .list-group-item-teal{color:#13795b;background-color:#d2f4ea}html .list-group-item-teal.list-group-item-action:hover,html .list-group-item-teal.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-teal.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-teal.list-group-item-action:focus{color:#13795b;background-color:#bddcd3}html .list-group-item-teal.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-teal.list-group-item-action.active{color:#fff;background-color:#13795b;border-color:#13795b}}@media print{html .list-group-item-cyan,html[data-netbox-color-mode=dark] .list-group-item-cyan,html[data-netbox-color-mode=light] .list-group-item-cyan{color:#055160;background-color:#cff4fc}html .list-group-item-cyan.list-group-item-action:hover,html .list-group-item-cyan.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action:focus{color:#055160;background-color:#badce3}html .list-group-item-cyan.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}}@media print{html .list-group-item-gray,html[data-netbox-color-mode=dark] .list-group-item-gray,html[data-netbox-color-mode=light] .list-group-item-gray{color:#686d71;background-color:#eff0f2}html .list-group-item-gray.list-group-item-action:hover,html .list-group-item-gray.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html .list-group-item-gray.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}}@media print{html .list-group-item-black,html[data-netbox-color-mode=dark] .list-group-item-black,html[data-netbox-color-mode=light] .list-group-item-black{color:#000;background-color:#ccc}html .list-group-item-black.list-group-item-action:hover,html .list-group-item-black.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-black.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-black.list-group-item-action:focus{color:#000;background-color:#b8b8b8}html .list-group-item-black.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-black.list-group-item-action.active{color:#fff;background-color:#000;border-color:#000}}@media print{html .list-group-item-white,html[data-netbox-color-mode=dark] .list-group-item-white,html[data-netbox-color-mode=light] .list-group-item-white{color:#666;background-color:#fff}html .list-group-item-white.list-group-item-action:hover,html .list-group-item-white.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-white.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-white.list-group-item-action:focus{color:#666;background-color:#e6e6e6}html .list-group-item-white.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-white.list-group-item-action.active{color:#fff;background-color:#666;border-color:#666}}@media print{html .btn-close,html[data-netbox-color-mode=dark] .btn-close,html[data-netbox-color-mode=light] .btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}html .btn-close:hover,html[data-netbox-color-mode=dark] .btn-close:hover,html[data-netbox-color-mode=light] .btn-close:hover{color:#000;text-decoration:none;opacity:.75}html .btn-close:focus,html[data-netbox-color-mode=dark] .btn-close:focus,html[data-netbox-color-mode=light] .btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}html .btn-close:disabled,html .btn-close.disabled,html[data-netbox-color-mode=dark] .btn-close:disabled,html[data-netbox-color-mode=dark] .btn-close.disabled,html[data-netbox-color-mode=light] .btn-close:disabled,html[data-netbox-color-mode=light] .btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}}@media print{html .btn-close-white,html[data-netbox-color-mode=dark] .btn-close-white,html[data-netbox-color-mode=light] .btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}}@media print{html .toast,html[data-netbox-color-mode=dark] .toast,html[data-netbox-color-mode=light] .toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}html .toast:not(.showing):not(.show),html[data-netbox-color-mode=dark] .toast:not(.showing):not(.show),html[data-netbox-color-mode=light] .toast:not(.showing):not(.show){opacity:0}html .toast.hide,html[data-netbox-color-mode=dark] .toast.hide,html[data-netbox-color-mode=light] .toast.hide{display:none}}@media print{html .toast-container,html[data-netbox-color-mode=dark] .toast-container,html[data-netbox-color-mode=light] .toast-container{width:max-content;max-width:100%;pointer-events:none}html .toast-container>:not(:last-child),html[data-netbox-color-mode=dark] .toast-container>:not(:last-child),html[data-netbox-color-mode=light] .toast-container>:not(:last-child){margin-bottom:.75rem}}@media print{html .toast-header,html[data-netbox-color-mode=dark] .toast-header,html[data-netbox-color-mode=light] .toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html .toast-header .btn-close,html[data-netbox-color-mode=dark] .toast-header .btn-close,html[data-netbox-color-mode=light] .toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}}@media print{html .toast-body,html[data-netbox-color-mode=dark] .toast-body,html[data-netbox-color-mode=light] .toast-body{padding:.75rem;word-wrap:break-word}}@media print{html .modal,html[data-netbox-color-mode=dark] .modal,html[data-netbox-color-mode=light] .modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}}@media print{html .modal-dialog,html[data-netbox-color-mode=dark] .modal-dialog,html[data-netbox-color-mode=light] .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade html .modal-dialog,.modal.fade html[data-netbox-color-mode=dark] .modal-dialog,.modal.fade html[data-netbox-color-mode=light] .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}}@media print and (prefers-reduced-motion: reduce){.modal.fade html .modal-dialog,.modal.fade html[data-netbox-color-mode=dark] .modal-dialog,.modal.fade html[data-netbox-color-mode=light] .modal-dialog{transition:none}}@media print{.modal.show html .modal-dialog,.modal.show html[data-netbox-color-mode=dark] .modal-dialog,.modal.show html[data-netbox-color-mode=light] .modal-dialog{transform:none}}@media print{.modal.modal-static html .modal-dialog,.modal.modal-static html[data-netbox-color-mode=dark] .modal-dialog,.modal.modal-static html[data-netbox-color-mode=light] .modal-dialog{transform:scale(1.02)}}@media print{html .modal-dialog-scrollable,html[data-netbox-color-mode=dark] .modal-dialog-scrollable,html[data-netbox-color-mode=light] .modal-dialog-scrollable{height:calc(100% - 1rem)}html .modal-dialog-scrollable .modal-content,html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-content,html[data-netbox-color-mode=light] .modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}html .modal-dialog-scrollable .modal-body,html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-body,html[data-netbox-color-mode=light] .modal-dialog-scrollable .modal-body{overflow-y:auto}}@media print{html .modal-dialog-centered,html[data-netbox-color-mode=dark] .modal-dialog-centered,html[data-netbox-color-mode=light] .modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}}@media print{html .modal-content,html[data-netbox-color-mode=dark] .modal-content,html[data-netbox-color-mode=light] .modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem;outline:0}}@media print{html .modal-backdrop,html[data-netbox-color-mode=dark] .modal-backdrop,html[data-netbox-color-mode=light] .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}html .modal-backdrop.fade,html[data-netbox-color-mode=dark] .modal-backdrop.fade,html[data-netbox-color-mode=light] .modal-backdrop.fade{opacity:0}html .modal-backdrop.show,html[data-netbox-color-mode=dark] .modal-backdrop.show,html[data-netbox-color-mode=light] .modal-backdrop.show{opacity:.5}}@media print{html .modal-header,html[data-netbox-color-mode=dark] .modal-header,html[data-netbox-color-mode=light] .modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}html .modal-header .btn-close,html[data-netbox-color-mode=dark] .modal-header .btn-close,html[data-netbox-color-mode=light] .modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}}@media print{html .modal-title,html[data-netbox-color-mode=dark] .modal-title,html[data-netbox-color-mode=light] .modal-title{margin-bottom:0;line-height:1.5}}@media print{html .modal-body,html[data-netbox-color-mode=dark] .modal-body,html[data-netbox-color-mode=light] .modal-body{position:relative;flex:1 1 auto;padding:1rem}}@media print{html .modal-footer,html[data-netbox-color-mode=dark] .modal-footer,html[data-netbox-color-mode=light] .modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(0.75rem - 1px);border-bottom-left-radius:calc(0.75rem - 1px)}html .modal-footer>*,html[data-netbox-color-mode=dark] .modal-footer>*,html[data-netbox-color-mode=light] .modal-footer>*{margin:.25rem}}@media print and (min-width: 576px){html .modal-dialog,html[data-netbox-color-mode=dark] .modal-dialog,html[data-netbox-color-mode=light] .modal-dialog{max-width:500px;margin:1.75rem auto}html .modal-dialog-scrollable,html[data-netbox-color-mode=dark] .modal-dialog-scrollable,html[data-netbox-color-mode=light] .modal-dialog-scrollable{height:calc(100% - 3.5rem)}html .modal-dialog-centered,html[data-netbox-color-mode=dark] .modal-dialog-centered,html[data-netbox-color-mode=light] .modal-dialog-centered{min-height:calc(100% - 3.5rem)}html .modal-sm,html[data-netbox-color-mode=dark] .modal-sm,html[data-netbox-color-mode=light] .modal-sm{max-width:300px}}@media print and (min-width: 992px){html .modal-lg,html .modal-xl,html[data-netbox-color-mode=dark] .modal-lg,html[data-netbox-color-mode=dark] .modal-xl,html[data-netbox-color-mode=light] .modal-lg,html[data-netbox-color-mode=light] .modal-xl{max-width:800px}}@media print and (min-width: 1200px){html .modal-xl,html[data-netbox-color-mode=dark] .modal-xl,html[data-netbox-color-mode=light] .modal-xl{max-width:1140px}}@media print{html .modal-fullscreen,html[data-netbox-color-mode=dark] .modal-fullscreen,html[data-netbox-color-mode=light] .modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen .modal-header{border-radius:0}html .modal-fullscreen .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen .modal-body{overflow-y:auto}html .modal-fullscreen .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen .modal-footer{border-radius:0}}@media print and (max-width: 575.98px){html .modal-fullscreen-sm-down,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-sm-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-sm-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-header{border-radius:0}html .modal-fullscreen-sm-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-body{overflow-y:auto}html .modal-fullscreen-sm-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media print and (max-width: 767.98px){html .modal-fullscreen-md-down,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down,html[data-netbox-color-mode=light] .modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-md-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-md-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-header{border-radius:0}html .modal-fullscreen-md-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-body{overflow-y:auto}html .modal-fullscreen-md-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-footer{border-radius:0}}@media print and (max-width: 991.98px){html .modal-fullscreen-lg-down,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-lg-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-lg-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-header{border-radius:0}html .modal-fullscreen-lg-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-body{overflow-y:auto}html .modal-fullscreen-lg-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media print and (max-width: 1199.98px){html .modal-fullscreen-xl-down,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-xl-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-xl-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-header{border-radius:0}html .modal-fullscreen-xl-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-body{overflow-y:auto}html .modal-fullscreen-xl-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media print and (max-width: 1399.98px){html .modal-fullscreen-xxl-down,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-xxl-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-xxl-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-header{border-radius:0}html .modal-fullscreen-xxl-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-body{overflow-y:auto}html .modal-fullscreen-xxl-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-footer{border-radius:0}}@media print{html .tooltip,html[data-netbox-color-mode=dark] .tooltip,html[data-netbox-color-mode=light] .tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}html .tooltip.show,html[data-netbox-color-mode=dark] .tooltip.show,html[data-netbox-color-mode=light] .tooltip.show{opacity:.9}html .tooltip .tooltip-arrow,html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow,html[data-netbox-color-mode=light] .tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}html .tooltip .tooltip-arrow:before,html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow:before,html[data-netbox-color-mode=light] .tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}}@media print{html .bs-tooltip-top,html .bs-tooltip-auto[data-popper-placement^=top],html[data-netbox-color-mode=dark] .bs-tooltip-top,html[data-netbox-color-mode=light] .bs-tooltip-top{padding:.4rem 0}html .bs-tooltip-top .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-top .tooltip-arrow{bottom:0}html .bs-tooltip-top .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}}@media print{html .bs-tooltip-end,html .bs-tooltip-auto[data-popper-placement^=right],html[data-netbox-color-mode=dark] .bs-tooltip-end,html[data-netbox-color-mode=light] .bs-tooltip-end{padding:0 .4rem}html .bs-tooltip-end .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}html .bs-tooltip-end .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}}@media print{html .bs-tooltip-bottom,html .bs-tooltip-auto[data-popper-placement^=bottom],html[data-netbox-color-mode=dark] .bs-tooltip-bottom,html[data-netbox-color-mode=light] .bs-tooltip-bottom{padding:.4rem 0}html .bs-tooltip-bottom .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-bottom .tooltip-arrow{top:0}html .bs-tooltip-bottom .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}}@media print{html .bs-tooltip-start,html .bs-tooltip-auto[data-popper-placement^=left],html[data-netbox-color-mode=dark] .bs-tooltip-start,html[data-netbox-color-mode=light] .bs-tooltip-start{padding:0 .4rem}html .bs-tooltip-start .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}html .bs-tooltip-start .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}}@media print{html .tooltip-inner,html[data-netbox-color-mode=dark] .tooltip-inner,html[data-netbox-color-mode=light] .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.375rem}}@media print{html .popover,html[data-netbox-color-mode=dark] .popover,html[data-netbox-color-mode=light] .popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem}html .popover .popover-arrow,html[data-netbox-color-mode=dark] .popover .popover-arrow,html[data-netbox-color-mode=light] .popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}html .popover .popover-arrow:before,html .popover .popover-arrow:after,html[data-netbox-color-mode=dark] .popover .popover-arrow:before,html[data-netbox-color-mode=dark] .popover .popover-arrow:after,html[data-netbox-color-mode=light] .popover .popover-arrow:before,html[data-netbox-color-mode=light] .popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}}@media print{html .bs-popover-top>.popover-arrow,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow{bottom:calc(-0.5rem - 1px)}html .bs-popover-top>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}html .bs-popover-top>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}}@media print{html .bs-popover-end>.popover-arrow,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}html .bs-popover-end>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}html .bs-popover-end>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}}@media print{html .bs-popover-bottom>.popover-arrow,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow{top:calc(-0.5rem - 1px)}html .bs-popover-bottom>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}html .bs-popover-bottom>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}html .bs-popover-bottom .popover-header:before,html .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,html[data-netbox-color-mode=dark] .bs-popover-bottom .popover-header:before,html[data-netbox-color-mode=light] .bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}}@media print{html .bs-popover-start>.popover-arrow,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}html .bs-popover-start>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}html .bs-popover-start>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}}@media print{html .popover-header,html[data-netbox-color-mode=dark] .popover-header,html[data-netbox-color-mode=light] .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}html .popover-header:empty,html[data-netbox-color-mode=dark] .popover-header:empty,html[data-netbox-color-mode=light] .popover-header:empty{display:none}}@media print{html .popover-body,html[data-netbox-color-mode=dark] .popover-body,html[data-netbox-color-mode=light] .popover-body{padding:1rem;color:#212529}}@media print{html .carousel,html[data-netbox-color-mode=dark] .carousel,html[data-netbox-color-mode=light] .carousel{position:relative}}@media print{html .carousel.pointer-event,html[data-netbox-color-mode=dark] .carousel.pointer-event,html[data-netbox-color-mode=light] .carousel.pointer-event{touch-action:pan-y}}@media print{html .carousel-inner,html[data-netbox-color-mode=dark] .carousel-inner,html[data-netbox-color-mode=light] .carousel-inner{position:relative;width:100%;overflow:hidden}html .carousel-inner:after,html[data-netbox-color-mode=dark] .carousel-inner:after,html[data-netbox-color-mode=light] .carousel-inner:after{display:block;clear:both;content:""}}@media print{html .carousel-item,html[data-netbox-color-mode=dark] .carousel-item,html[data-netbox-color-mode=light] .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .carousel-item,html[data-netbox-color-mode=dark] .carousel-item,html[data-netbox-color-mode=light] .carousel-item{transition:none}}@media print{html .carousel-item.active,html .carousel-item-next,html .carousel-item-prev,html[data-netbox-color-mode=dark] .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-item-next,html[data-netbox-color-mode=dark] .carousel-item-prev,html[data-netbox-color-mode=light] .carousel-item.active,html[data-netbox-color-mode=light] .carousel-item-next,html[data-netbox-color-mode=light] .carousel-item-prev{display:block}}@media print{html .carousel-item-next:not(.carousel-item-start),html .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=dark] .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=light] .active.carousel-item-end{transform:translate(100%)}}@media print{html .carousel-item-prev:not(.carousel-item-end),html .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=dark] .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=light] .active.carousel-item-start{transform:translate(-100%)}}@media print{html .carousel-fade .carousel-item,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item,html[data-netbox-color-mode=light] .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}html .carousel-fade .carousel-item.active,html .carousel-fade .carousel-item-next.carousel-item-start,html .carousel-fade .carousel-item-prev.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-prev.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=light] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}html .carousel-fade .active.carousel-item-start,html .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}}@media print and (prefers-reduced-motion: reduce){html .carousel-fade .active.carousel-item-start,html .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-end{transition:none}}@media print{html .carousel-control-prev,html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}}@media print and (prefers-reduced-motion: reduce){html .carousel-control-prev,html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-next{transition:none}}@media print{html .carousel-control-prev:hover,html .carousel-control-prev:focus,html .carousel-control-next:hover,html .carousel-control-next:focus,html[data-netbox-color-mode=dark] .carousel-control-prev:hover,html[data-netbox-color-mode=dark] .carousel-control-prev:focus,html[data-netbox-color-mode=dark] .carousel-control-next:hover,html[data-netbox-color-mode=dark] .carousel-control-next:focus,html[data-netbox-color-mode=light] .carousel-control-prev:hover,html[data-netbox-color-mode=light] .carousel-control-prev:focus,html[data-netbox-color-mode=light] .carousel-control-next:hover,html[data-netbox-color-mode=light] .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}}@media print{html .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-prev{left:0}}@media print{html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-next{right:0}}@media print{html .carousel-control-prev-icon,html .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}}@media print{html .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}}@media print{html .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}}@media print{html .carousel-indicators,html[data-netbox-color-mode=dark] .carousel-indicators,html[data-netbox-color-mode=light] .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}html .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}}@media print and (prefers-reduced-motion: reduce){html .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-indicators [data-bs-target]{transition:none}}@media print{html .carousel-indicators .active,html[data-netbox-color-mode=dark] .carousel-indicators .active,html[data-netbox-color-mode=light] .carousel-indicators .active{opacity:1}}@media print{html .carousel-caption,html[data-netbox-color-mode=dark] .carousel-caption,html[data-netbox-color-mode=light] .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}}@media print{html .carousel-dark .carousel-control-prev-icon,html .carousel-dark .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}html .carousel-dark .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-dark .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}html .carousel-dark .carousel-caption,html[data-netbox-color-mode=dark] .carousel-dark .carousel-caption,html[data-netbox-color-mode=light] .carousel-dark .carousel-caption{color:#000}}@media print{@keyframes spinner-border{to{transform:rotate(360deg)}}}@media print{html .spinner-border,html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=light] .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}}@media print{html .spinner-border-sm,html[data-netbox-color-mode=dark] .spinner-border-sm,html[data-netbox-color-mode=light] .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}}@media print{@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}}@media print{html .spinner-grow,html[data-netbox-color-mode=dark] .spinner-grow,html[data-netbox-color-mode=light] .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}}@media print{html .spinner-grow-sm,html[data-netbox-color-mode=dark] .spinner-grow-sm,html[data-netbox-color-mode=light] .spinner-grow-sm{width:1rem;height:1rem}}@media print and (prefers-reduced-motion: reduce){html .spinner-border,html .spinner-grow,html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=dark] .spinner-grow,html[data-netbox-color-mode=light] .spinner-border,html[data-netbox-color-mode=light] .spinner-grow{animation-duration:1.5s}}@media print{html .clearfix:after,html[data-netbox-color-mode=dark] .clearfix:after,html[data-netbox-color-mode=light] .clearfix:after{display:block;clear:both;content:""}}@media print{html .link-primary,html[data-netbox-color-mode=dark] .link-primary,html[data-netbox-color-mode=light] .link-primary{color:#337ab7}html .link-primary:hover,html .link-primary:focus,html[data-netbox-color-mode=dark] .link-primary:hover,html[data-netbox-color-mode=dark] .link-primary:focus,html[data-netbox-color-mode=light] .link-primary:hover,html[data-netbox-color-mode=light] .link-primary:focus{color:#296292}}@media print{html .link-secondary,html[data-netbox-color-mode=dark] .link-secondary,html[data-netbox-color-mode=light] .link-secondary{color:#6c757d}html .link-secondary:hover,html .link-secondary:focus,html[data-netbox-color-mode=dark] .link-secondary:hover,html[data-netbox-color-mode=dark] .link-secondary:focus,html[data-netbox-color-mode=light] .link-secondary:hover,html[data-netbox-color-mode=light] .link-secondary:focus{color:#565e64}}@media print{html .link-success,html[data-netbox-color-mode=dark] .link-success,html[data-netbox-color-mode=light] .link-success{color:#198754}html .link-success:hover,html .link-success:focus,html[data-netbox-color-mode=dark] .link-success:hover,html[data-netbox-color-mode=dark] .link-success:focus,html[data-netbox-color-mode=light] .link-success:hover,html[data-netbox-color-mode=light] .link-success:focus{color:#146c43}}@media print{html .link-info,html[data-netbox-color-mode=dark] .link-info,html[data-netbox-color-mode=light] .link-info{color:#54d6f0}html .link-info:hover,html .link-info:focus,html[data-netbox-color-mode=dark] .link-info:hover,html[data-netbox-color-mode=dark] .link-info:focus,html[data-netbox-color-mode=light] .link-info:hover,html[data-netbox-color-mode=light] .link-info:focus{color:#76def3}}@media print{html .link-warning,html[data-netbox-color-mode=dark] .link-warning,html[data-netbox-color-mode=light] .link-warning{color:#ffc107}html .link-warning:hover,html .link-warning:focus,html[data-netbox-color-mode=dark] .link-warning:hover,html[data-netbox-color-mode=dark] .link-warning:focus,html[data-netbox-color-mode=light] .link-warning:hover,html[data-netbox-color-mode=light] .link-warning:focus{color:#ffcd39}}@media print{html .link-danger,html[data-netbox-color-mode=dark] .link-danger,html[data-netbox-color-mode=light] .link-danger{color:#dc3545}html .link-danger:hover,html .link-danger:focus,html[data-netbox-color-mode=dark] .link-danger:hover,html[data-netbox-color-mode=dark] .link-danger:focus,html[data-netbox-color-mode=light] .link-danger:hover,html[data-netbox-color-mode=light] .link-danger:focus{color:#b02a37}}@media print{html .link-light,html[data-netbox-color-mode=dark] .link-light,html[data-netbox-color-mode=light] .link-light{color:#e9ecef}html .link-light:hover,html .link-light:focus,html[data-netbox-color-mode=dark] .link-light:hover,html[data-netbox-color-mode=dark] .link-light:focus,html[data-netbox-color-mode=light] .link-light:hover,html[data-netbox-color-mode=light] .link-light:focus{color:#edf0f2}}@media print{html .link-dark,html[data-netbox-color-mode=dark] .link-dark,html[data-netbox-color-mode=light] .link-dark{color:#343a40}html .link-dark:hover,html .link-dark:focus,html[data-netbox-color-mode=dark] .link-dark:hover,html[data-netbox-color-mode=dark] .link-dark:focus,html[data-netbox-color-mode=light] .link-dark:hover,html[data-netbox-color-mode=light] .link-dark:focus{color:#2a2e33}}@media print{html .link-blue,html[data-netbox-color-mode=dark] .link-blue,html[data-netbox-color-mode=light] .link-blue{color:#0d6efd}html .link-blue:hover,html .link-blue:focus,html[data-netbox-color-mode=dark] .link-blue:hover,html[data-netbox-color-mode=dark] .link-blue:focus,html[data-netbox-color-mode=light] .link-blue:hover,html[data-netbox-color-mode=light] .link-blue:focus{color:#0a58ca}}@media print{html .link-indigo,html[data-netbox-color-mode=dark] .link-indigo,html[data-netbox-color-mode=light] .link-indigo{color:#6610f2}html .link-indigo:hover,html .link-indigo:focus,html[data-netbox-color-mode=dark] .link-indigo:hover,html[data-netbox-color-mode=dark] .link-indigo:focus,html[data-netbox-color-mode=light] .link-indigo:hover,html[data-netbox-color-mode=light] .link-indigo:focus{color:#520dc2}}@media print{html .link-purple,html[data-netbox-color-mode=dark] .link-purple,html[data-netbox-color-mode=light] .link-purple{color:#6f42c1}html .link-purple:hover,html .link-purple:focus,html[data-netbox-color-mode=dark] .link-purple:hover,html[data-netbox-color-mode=dark] .link-purple:focus,html[data-netbox-color-mode=light] .link-purple:hover,html[data-netbox-color-mode=light] .link-purple:focus{color:#59359a}}@media print{html .link-pink,html[data-netbox-color-mode=dark] .link-pink,html[data-netbox-color-mode=light] .link-pink{color:#d63384}html .link-pink:hover,html .link-pink:focus,html[data-netbox-color-mode=dark] .link-pink:hover,html[data-netbox-color-mode=dark] .link-pink:focus,html[data-netbox-color-mode=light] .link-pink:hover,html[data-netbox-color-mode=light] .link-pink:focus{color:#ab296a}}@media print{html .link-red,html[data-netbox-color-mode=dark] .link-red,html[data-netbox-color-mode=light] .link-red{color:#dc3545}html .link-red:hover,html .link-red:focus,html[data-netbox-color-mode=dark] .link-red:hover,html[data-netbox-color-mode=dark] .link-red:focus,html[data-netbox-color-mode=light] .link-red:hover,html[data-netbox-color-mode=light] .link-red:focus{color:#b02a37}}@media print{html .link-orange,html[data-netbox-color-mode=dark] .link-orange,html[data-netbox-color-mode=light] .link-orange{color:#fd7e14}html .link-orange:hover,html .link-orange:focus,html[data-netbox-color-mode=dark] .link-orange:hover,html[data-netbox-color-mode=dark] .link-orange:focus,html[data-netbox-color-mode=light] .link-orange:hover,html[data-netbox-color-mode=light] .link-orange:focus{color:#fd9843}}@media print{html .link-yellow,html[data-netbox-color-mode=dark] .link-yellow,html[data-netbox-color-mode=light] .link-yellow{color:#ffc107}html .link-yellow:hover,html .link-yellow:focus,html[data-netbox-color-mode=dark] .link-yellow:hover,html[data-netbox-color-mode=dark] .link-yellow:focus,html[data-netbox-color-mode=light] .link-yellow:hover,html[data-netbox-color-mode=light] .link-yellow:focus{color:#ffcd39}}@media print{html .link-green,html[data-netbox-color-mode=dark] .link-green,html[data-netbox-color-mode=light] .link-green{color:#198754}html .link-green:hover,html .link-green:focus,html[data-netbox-color-mode=dark] .link-green:hover,html[data-netbox-color-mode=dark] .link-green:focus,html[data-netbox-color-mode=light] .link-green:hover,html[data-netbox-color-mode=light] .link-green:focus{color:#146c43}}@media print{html .link-teal,html[data-netbox-color-mode=dark] .link-teal,html[data-netbox-color-mode=light] .link-teal{color:#20c997}html .link-teal:hover,html .link-teal:focus,html[data-netbox-color-mode=dark] .link-teal:hover,html[data-netbox-color-mode=dark] .link-teal:focus,html[data-netbox-color-mode=light] .link-teal:hover,html[data-netbox-color-mode=light] .link-teal:focus{color:#4dd4ac}}@media print{html .link-cyan,html[data-netbox-color-mode=dark] .link-cyan,html[data-netbox-color-mode=light] .link-cyan{color:#0dcaf0}html .link-cyan:hover,html .link-cyan:focus,html[data-netbox-color-mode=dark] .link-cyan:hover,html[data-netbox-color-mode=dark] .link-cyan:focus,html[data-netbox-color-mode=light] .link-cyan:hover,html[data-netbox-color-mode=light] .link-cyan:focus{color:#3dd5f3}}@media print{html .link-gray,html[data-netbox-color-mode=dark] .link-gray,html[data-netbox-color-mode=light] .link-gray{color:#adb5bd}html .link-gray:hover,html .link-gray:focus,html[data-netbox-color-mode=dark] .link-gray:hover,html[data-netbox-color-mode=dark] .link-gray:focus,html[data-netbox-color-mode=light] .link-gray:hover,html[data-netbox-color-mode=light] .link-gray:focus{color:#bdc4ca}}@media print{html .link-black,html[data-netbox-color-mode=dark] .link-black,html[data-netbox-color-mode=light] .link-black{color:#000}html .link-black:hover,html .link-black:focus,html[data-netbox-color-mode=dark] .link-black:hover,html[data-netbox-color-mode=dark] .link-black:focus,html[data-netbox-color-mode=light] .link-black:hover,html[data-netbox-color-mode=light] .link-black:focus{color:#000}}@media print{html .link-white,html[data-netbox-color-mode=dark] .link-white,html[data-netbox-color-mode=light] .link-white{color:#fff}html .link-white:hover,html .link-white:focus,html[data-netbox-color-mode=dark] .link-white:hover,html[data-netbox-color-mode=dark] .link-white:focus,html[data-netbox-color-mode=light] .link-white:hover,html[data-netbox-color-mode=light] .link-white:focus{color:#fff}}@media print{html .ratio,html[data-netbox-color-mode=dark] .ratio,html[data-netbox-color-mode=light] .ratio{position:relative;width:100%}html .ratio:before,html[data-netbox-color-mode=dark] .ratio:before,html[data-netbox-color-mode=light] .ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}html .ratio>*,html[data-netbox-color-mode=dark] .ratio>*,html[data-netbox-color-mode=light] .ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}}@media print{html .ratio-1x1,html[data-netbox-color-mode=dark] .ratio-1x1,html[data-netbox-color-mode=light] .ratio-1x1{--bs-aspect-ratio: 100%}}@media print{html .ratio-4x3,html[data-netbox-color-mode=dark] .ratio-4x3,html[data-netbox-color-mode=light] .ratio-4x3{--bs-aspect-ratio: 75%}}@media print{html .ratio-16x9,html[data-netbox-color-mode=dark] .ratio-16x9,html[data-netbox-color-mode=light] .ratio-16x9{--bs-aspect-ratio: 56.25%}}@media print{html .ratio-21x9,html[data-netbox-color-mode=dark] .ratio-21x9,html[data-netbox-color-mode=light] .ratio-21x9{--bs-aspect-ratio: 42.8571428571%}}@media print{html .fixed-top,html[data-netbox-color-mode=dark] .fixed-top,html[data-netbox-color-mode=light] .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}}@media print{html .fixed-bottom,html[data-netbox-color-mode=dark] .fixed-bottom,html[data-netbox-color-mode=light] .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}}@media print{html .sticky-top,html[data-netbox-color-mode=dark] .sticky-top,html[data-netbox-color-mode=light] .sticky-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 576px){html .sticky-sm-top,html[data-netbox-color-mode=dark] .sticky-sm-top,html[data-netbox-color-mode=light] .sticky-sm-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 768px){html .sticky-md-top,html[data-netbox-color-mode=dark] .sticky-md-top,html[data-netbox-color-mode=light] .sticky-md-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 992px){html .sticky-lg-top,html[data-netbox-color-mode=dark] .sticky-lg-top,html[data-netbox-color-mode=light] .sticky-lg-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 1200px){html .sticky-xl-top,html[data-netbox-color-mode=dark] .sticky-xl-top,html[data-netbox-color-mode=light] .sticky-xl-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 1400px){html .sticky-xxl-top,html[data-netbox-color-mode=dark] .sticky-xxl-top,html[data-netbox-color-mode=light] .sticky-xxl-top{position:sticky;top:0;z-index:1020}}@media print{html .visually-hidden,html .visually-hidden-focusable:not(:focus):not(:focus-within),html[data-netbox-color-mode=dark] .visually-hidden,html[data-netbox-color-mode=dark] .visually-hidden-focusable:not(:focus):not(:focus-within),html[data-netbox-color-mode=light] .visually-hidden,html[data-netbox-color-mode=light] .visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}}@media print{html .stretched-link:after,html[data-netbox-color-mode=dark] .stretched-link:after,html[data-netbox-color-mode=light] .stretched-link:after{position:absolute;inset:0;z-index:1;content:""}}@media print{html .text-truncate,html[data-netbox-color-mode=dark] .text-truncate,html[data-netbox-color-mode=light] .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media print{html .align-baseline,html[data-netbox-color-mode=dark] .align-baseline,html[data-netbox-color-mode=light] .align-baseline{vertical-align:baseline!important}}@media print{html .align-top,html[data-netbox-color-mode=dark] .align-top,html[data-netbox-color-mode=light] .align-top{vertical-align:top!important}}@media print{html .align-middle,html[data-netbox-color-mode=dark] .align-middle,html[data-netbox-color-mode=light] .align-middle{vertical-align:middle!important}}@media print{html .align-bottom,html[data-netbox-color-mode=dark] .align-bottom,html[data-netbox-color-mode=light] .align-bottom{vertical-align:bottom!important}}@media print{html .align-text-bottom,html[data-netbox-color-mode=dark] .align-text-bottom,html[data-netbox-color-mode=light] .align-text-bottom{vertical-align:text-bottom!important}}@media print{html .align-text-top,html[data-netbox-color-mode=dark] .align-text-top,html[data-netbox-color-mode=light] .align-text-top{vertical-align:text-top!important}}@media print{html .float-start,html[data-netbox-color-mode=dark] .float-start,html[data-netbox-color-mode=light] .float-start{float:left!important}}@media print{html .float-end,html[data-netbox-color-mode=dark] .float-end,html[data-netbox-color-mode=light] .float-end{float:right!important}}@media print{html .float-none,html[data-netbox-color-mode=dark] .float-none,html[data-netbox-color-mode=light] .float-none{float:none!important}}@media print{html .overflow-auto,html[data-netbox-color-mode=dark] .overflow-auto,html[data-netbox-color-mode=light] .overflow-auto{overflow:auto!important}}@media print{html .overflow-hidden,html[data-netbox-color-mode=dark] .overflow-hidden,html[data-netbox-color-mode=light] .overflow-hidden{overflow:hidden!important}}@media print{html .overflow-visible,html[data-netbox-color-mode=dark] .overflow-visible,html[data-netbox-color-mode=light] .overflow-visible{overflow:visible!important}}@media print{html .overflow-scroll,html[data-netbox-color-mode=dark] .overflow-scroll,html[data-netbox-color-mode=light] .overflow-scroll{overflow:scroll!important}}@media print{html .d-inline,html[data-netbox-color-mode=dark] .d-inline,html[data-netbox-color-mode=light] .d-inline{display:inline!important}}@media print{html .d-inline-block,html[data-netbox-color-mode=dark] .d-inline-block,html[data-netbox-color-mode=light] .d-inline-block{display:inline-block!important}}@media print{html .d-block,html[data-netbox-color-mode=dark] .d-block,html[data-netbox-color-mode=light] .d-block{display:block!important}}@media print{html .d-grid,html[data-netbox-color-mode=dark] .d-grid,html[data-netbox-color-mode=light] .d-grid{display:grid!important}}@media print{html .d-table,html[data-netbox-color-mode=dark] .d-table,html[data-netbox-color-mode=light] .d-table{display:table!important}}@media print{html .d-table-row,html[data-netbox-color-mode=dark] .d-table-row,html[data-netbox-color-mode=light] .d-table-row{display:table-row!important}}@media print{html .d-table-cell,html[data-netbox-color-mode=dark] .d-table-cell,html[data-netbox-color-mode=light] .d-table-cell{display:table-cell!important}}@media print{html .d-flex,html[data-netbox-color-mode=dark] .d-flex,html[data-netbox-color-mode=light] .d-flex{display:flex!important}}@media print{html .d-inline-flex,html[data-netbox-color-mode=dark] .d-inline-flex,html[data-netbox-color-mode=light] .d-inline-flex{display:inline-flex!important}}@media print{html .d-none,html[data-netbox-color-mode=dark] .d-none,html[data-netbox-color-mode=light] .d-none{display:none!important}}@media print{html .shadow,html[data-netbox-color-mode=dark] .shadow,html[data-netbox-color-mode=light] .shadow{box-shadow:0 .5rem 1rem #00000026!important}}@media print{html .shadow-sm,html[data-netbox-color-mode=dark] .shadow-sm,html[data-netbox-color-mode=light] .shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}}@media print{html .shadow-lg,html[data-netbox-color-mode=dark] .shadow-lg,html[data-netbox-color-mode=light] .shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}}@media print{html .shadow-none,html[data-netbox-color-mode=dark] .shadow-none,html[data-netbox-color-mode=light] .shadow-none{box-shadow:none!important}}@media print{html .position-static,html[data-netbox-color-mode=dark] .position-static,html[data-netbox-color-mode=light] .position-static{position:static!important}}@media print{html .position-relative,html[data-netbox-color-mode=dark] .position-relative,html[data-netbox-color-mode=light] .position-relative{position:relative!important}}@media print{html .position-absolute,html[data-netbox-color-mode=dark] .position-absolute,html[data-netbox-color-mode=light] .position-absolute{position:absolute!important}}@media print{html .position-fixed,html[data-netbox-color-mode=dark] .position-fixed,html[data-netbox-color-mode=light] .position-fixed{position:fixed!important}}@media print{html .position-sticky,html[data-netbox-color-mode=dark] .position-sticky,html[data-netbox-color-mode=light] .position-sticky{position:sticky!important}}@media print{html .top-0,html[data-netbox-color-mode=dark] .top-0,html[data-netbox-color-mode=light] .top-0{top:0!important}}@media print{html .top-50,html[data-netbox-color-mode=dark] .top-50,html[data-netbox-color-mode=light] .top-50{top:50%!important}}@media print{html .top-100,html[data-netbox-color-mode=dark] .top-100,html[data-netbox-color-mode=light] .top-100{top:100%!important}}@media print{html .bottom-0,html[data-netbox-color-mode=dark] .bottom-0,html[data-netbox-color-mode=light] .bottom-0{bottom:0!important}}@media print{html .bottom-50,html[data-netbox-color-mode=dark] .bottom-50,html[data-netbox-color-mode=light] .bottom-50{bottom:50%!important}}@media print{html .bottom-100,html[data-netbox-color-mode=dark] .bottom-100,html[data-netbox-color-mode=light] .bottom-100{bottom:100%!important}}@media print{html .start-0,html[data-netbox-color-mode=dark] .start-0,html[data-netbox-color-mode=light] .start-0{left:0!important}}@media print{html .start-50,html[data-netbox-color-mode=dark] .start-50,html[data-netbox-color-mode=light] .start-50{left:50%!important}}@media print{html .start-100,html[data-netbox-color-mode=dark] .start-100,html[data-netbox-color-mode=light] .start-100{left:100%!important}}@media print{html .end-0,html[data-netbox-color-mode=dark] .end-0,html[data-netbox-color-mode=light] .end-0{right:0!important}}@media print{html .end-50,html[data-netbox-color-mode=dark] .end-50,html[data-netbox-color-mode=light] .end-50{right:50%!important}}@media print{html .end-100,html[data-netbox-color-mode=dark] .end-100,html[data-netbox-color-mode=light] .end-100{right:100%!important}}@media print{html .translate-middle,html[data-netbox-color-mode=dark] .translate-middle,html[data-netbox-color-mode=light] .translate-middle{transform:translate(-50%,-50%)!important}}@media print{html .translate-middle-x,html[data-netbox-color-mode=dark] .translate-middle-x,html[data-netbox-color-mode=light] .translate-middle-x{transform:translate(-50%)!important}}@media print{html .translate-middle-y,html[data-netbox-color-mode=dark] .translate-middle-y,html[data-netbox-color-mode=light] .translate-middle-y{transform:translateY(-50%)!important}}@media print{html .border,html[data-netbox-color-mode=dark] .border,html[data-netbox-color-mode=light] .border{border:1px solid #dee2e6!important}}@media print{html .border-0,html[data-netbox-color-mode=dark] .border-0,html[data-netbox-color-mode=light] .border-0{border:0!important}}@media print{html .border-top,html[data-netbox-color-mode=dark] .border-top,html[data-netbox-color-mode=light] .border-top{border-top:1px solid #dee2e6!important}}@media print{html .border-top-0,html[data-netbox-color-mode=dark] .border-top-0,html[data-netbox-color-mode=light] .border-top-0{border-top:0!important}}@media print{html .border-end,html[data-netbox-color-mode=dark] .border-end,html[data-netbox-color-mode=light] .border-end{border-right:1px solid #dee2e6!important}}@media print{html .border-end-0,html[data-netbox-color-mode=dark] .border-end-0,html[data-netbox-color-mode=light] .border-end-0{border-right:0!important}}@media print{html .border-bottom,html[data-netbox-color-mode=dark] .border-bottom,html[data-netbox-color-mode=light] .border-bottom{border-bottom:1px solid #dee2e6!important}}@media print{html .border-bottom-0,html[data-netbox-color-mode=dark] .border-bottom-0,html[data-netbox-color-mode=light] .border-bottom-0{border-bottom:0!important}}@media print{html .border-start,html[data-netbox-color-mode=dark] .border-start,html[data-netbox-color-mode=light] .border-start{border-left:1px solid #dee2e6!important}}@media print{html .border-start-0,html[data-netbox-color-mode=dark] .border-start-0,html[data-netbox-color-mode=light] .border-start-0{border-left:0!important}}@media print{html .border-primary,html[data-netbox-color-mode=dark] .border-primary,html[data-netbox-color-mode=light] .border-primary{border-color:#337ab7!important}}@media print{html .border-secondary,html[data-netbox-color-mode=dark] .border-secondary,html[data-netbox-color-mode=light] .border-secondary{border-color:#6c757d!important}}@media print{html .border-success,html[data-netbox-color-mode=dark] .border-success,html[data-netbox-color-mode=light] .border-success{border-color:#198754!important}}@media print{html .border-info,html[data-netbox-color-mode=dark] .border-info,html[data-netbox-color-mode=light] .border-info{border-color:#54d6f0!important}}@media print{html .border-warning,html[data-netbox-color-mode=dark] .border-warning,html[data-netbox-color-mode=light] .border-warning{border-color:#ffc107!important}}@media print{html .border-danger,html[data-netbox-color-mode=dark] .border-danger,html[data-netbox-color-mode=light] .border-danger{border-color:#dc3545!important}}@media print{html .border-light,html[data-netbox-color-mode=dark] .border-light,html[data-netbox-color-mode=light] .border-light{border-color:#e9ecef!important}}@media print{html .border-dark,html[data-netbox-color-mode=dark] .border-dark,html[data-netbox-color-mode=light] .border-dark{border-color:#343a40!important}}@media print{html .border-blue,html[data-netbox-color-mode=dark] .border-blue,html[data-netbox-color-mode=light] .border-blue{border-color:#0d6efd!important}}@media print{html .border-indigo,html[data-netbox-color-mode=dark] .border-indigo,html[data-netbox-color-mode=light] .border-indigo{border-color:#6610f2!important}}@media print{html .border-purple,html[data-netbox-color-mode=dark] .border-purple,html[data-netbox-color-mode=light] .border-purple{border-color:#6f42c1!important}}@media print{html .border-pink,html[data-netbox-color-mode=dark] .border-pink,html[data-netbox-color-mode=light] .border-pink{border-color:#d63384!important}}@media print{html .border-red,html[data-netbox-color-mode=dark] .border-red,html[data-netbox-color-mode=light] .border-red{border-color:#dc3545!important}}@media print{html .border-orange,html[data-netbox-color-mode=dark] .border-orange,html[data-netbox-color-mode=light] .border-orange{border-color:#fd7e14!important}}@media print{html .border-yellow,html[data-netbox-color-mode=dark] .border-yellow,html[data-netbox-color-mode=light] .border-yellow{border-color:#ffc107!important}}@media print{html .border-green,html[data-netbox-color-mode=dark] .border-green,html[data-netbox-color-mode=light] .border-green{border-color:#198754!important}}@media print{html .border-teal,html[data-netbox-color-mode=dark] .border-teal,html[data-netbox-color-mode=light] .border-teal{border-color:#20c997!important}}@media print{html .border-cyan,html[data-netbox-color-mode=dark] .border-cyan,html[data-netbox-color-mode=light] .border-cyan{border-color:#0dcaf0!important}}@media print{html .border-gray,html[data-netbox-color-mode=dark] .border-gray,html[data-netbox-color-mode=light] .border-gray{border-color:#adb5bd!important}}@media print{html .border-black,html[data-netbox-color-mode=dark] .border-black,html[data-netbox-color-mode=light] .border-black{border-color:#000!important}}@media print{html .border-white,html[data-netbox-color-mode=dark] .border-white,html[data-netbox-color-mode=light] .border-white{border-color:#fff!important}}@media print{html .border-1,html[data-netbox-color-mode=dark] .border-1,html[data-netbox-color-mode=light] .border-1{border-width:1px!important}}@media print{html .border-2,html[data-netbox-color-mode=dark] .border-2,html[data-netbox-color-mode=light] .border-2{border-width:2px!important}}@media print{html .border-3,html[data-netbox-color-mode=dark] .border-3,html[data-netbox-color-mode=light] .border-3{border-width:3px!important}}@media print{html .border-4,html[data-netbox-color-mode=dark] .border-4,html[data-netbox-color-mode=light] .border-4{border-width:4px!important}}@media print{html .border-5,html[data-netbox-color-mode=dark] .border-5,html[data-netbox-color-mode=light] .border-5{border-width:5px!important}}@media print{html .w-25,html[data-netbox-color-mode=dark] .w-25,html[data-netbox-color-mode=light] .w-25{width:25%!important}}@media print{html .w-50,html[data-netbox-color-mode=dark] .w-50,html[data-netbox-color-mode=light] .w-50{width:50%!important}}@media print{html .w-75,html[data-netbox-color-mode=dark] .w-75,html[data-netbox-color-mode=light] .w-75{width:75%!important}}@media print{html .w-100,html[data-netbox-color-mode=dark] .w-100,html[data-netbox-color-mode=light] .w-100{width:100%!important}}@media print{html .w-auto,html[data-netbox-color-mode=dark] .w-auto,html[data-netbox-color-mode=light] .w-auto{width:auto!important}}@media print{html .mw-100,html[data-netbox-color-mode=dark] .mw-100,html[data-netbox-color-mode=light] .mw-100{max-width:100%!important}}@media print{html .vw-100,html[data-netbox-color-mode=dark] .vw-100,html[data-netbox-color-mode=light] .vw-100{width:100vw!important}}@media print{html .min-vw-100,html[data-netbox-color-mode=dark] .min-vw-100,html[data-netbox-color-mode=light] .min-vw-100{min-width:100vw!important}}@media print{html .h-25,html[data-netbox-color-mode=dark] .h-25,html[data-netbox-color-mode=light] .h-25{height:25%!important}}@media print{html .h-50,html[data-netbox-color-mode=dark] .h-50,html[data-netbox-color-mode=light] .h-50{height:50%!important}}@media print{html .h-75,html[data-netbox-color-mode=dark] .h-75,html[data-netbox-color-mode=light] .h-75{height:75%!important}}@media print{html .h-100,html[data-netbox-color-mode=dark] .h-100,html[data-netbox-color-mode=light] .h-100{height:100%!important}}@media print{html .h-auto,html[data-netbox-color-mode=dark] .h-auto,html[data-netbox-color-mode=light] .h-auto{height:auto!important}}@media print{html .mh-100,html[data-netbox-color-mode=dark] .mh-100,html[data-netbox-color-mode=light] .mh-100{max-height:100%!important}}@media print{html .vh-100,html[data-netbox-color-mode=dark] .vh-100,html[data-netbox-color-mode=light] .vh-100{height:100vh!important}}@media print{html .min-vh-100,html[data-netbox-color-mode=dark] .min-vh-100,html[data-netbox-color-mode=light] .min-vh-100{min-height:100vh!important}}@media print{html .flex-fill,html[data-netbox-color-mode=dark] .flex-fill,html[data-netbox-color-mode=light] .flex-fill{flex:1 1 auto!important}}@media print{html .flex-row,html[data-netbox-color-mode=dark] .flex-row,html[data-netbox-color-mode=light] .flex-row{flex-direction:row!important}}@media print{html .flex-column,html[data-netbox-color-mode=dark] .flex-column,html[data-netbox-color-mode=light] .flex-column{flex-direction:column!important}}@media print{html .flex-row-reverse,html[data-netbox-color-mode=dark] .flex-row-reverse,html[data-netbox-color-mode=light] .flex-row-reverse{flex-direction:row-reverse!important}}@media print{html .flex-column-reverse,html[data-netbox-color-mode=dark] .flex-column-reverse,html[data-netbox-color-mode=light] .flex-column-reverse{flex-direction:column-reverse!important}}@media print{html .flex-grow-0,html[data-netbox-color-mode=dark] .flex-grow-0,html[data-netbox-color-mode=light] .flex-grow-0{flex-grow:0!important}}@media print{html .flex-grow-1,html[data-netbox-color-mode=dark] .flex-grow-1,html[data-netbox-color-mode=light] .flex-grow-1{flex-grow:1!important}}@media print{html .flex-shrink-0,html[data-netbox-color-mode=dark] .flex-shrink-0,html[data-netbox-color-mode=light] .flex-shrink-0{flex-shrink:0!important}}@media print{html .flex-shrink-1,html[data-netbox-color-mode=dark] .flex-shrink-1,html[data-netbox-color-mode=light] .flex-shrink-1{flex-shrink:1!important}}@media print{html .flex-wrap,html[data-netbox-color-mode=dark] .flex-wrap,html[data-netbox-color-mode=light] .flex-wrap{flex-wrap:wrap!important}}@media print{html .flex-nowrap,html[data-netbox-color-mode=dark] .flex-nowrap,html[data-netbox-color-mode=light] .flex-nowrap{flex-wrap:nowrap!important}}@media print{html .flex-wrap-reverse,html[data-netbox-color-mode=dark] .flex-wrap-reverse,html[data-netbox-color-mode=light] .flex-wrap-reverse{flex-wrap:wrap-reverse!important}}@media print{html .gap-0,html[data-netbox-color-mode=dark] .gap-0,html[data-netbox-color-mode=light] .gap-0{gap:0!important}}@media print{html .gap-1,html[data-netbox-color-mode=dark] .gap-1,html[data-netbox-color-mode=light] .gap-1{gap:.25rem!important}}@media print{html .gap-2,html[data-netbox-color-mode=dark] .gap-2,html[data-netbox-color-mode=light] .gap-2{gap:.5rem!important}}@media print{html .gap-3,html[data-netbox-color-mode=dark] .gap-3,html[data-netbox-color-mode=light] .gap-3{gap:1rem!important}}@media print{html .gap-4,html[data-netbox-color-mode=dark] .gap-4,html[data-netbox-color-mode=light] .gap-4{gap:1.5rem!important}}@media print{html .gap-5,html[data-netbox-color-mode=dark] .gap-5,html[data-netbox-color-mode=light] .gap-5{gap:3rem!important}}@media print{html .justify-content-start,html[data-netbox-color-mode=dark] .justify-content-start,html[data-netbox-color-mode=light] .justify-content-start{justify-content:flex-start!important}}@media print{html .justify-content-end,html[data-netbox-color-mode=dark] .justify-content-end,html[data-netbox-color-mode=light] .justify-content-end{justify-content:flex-end!important}}@media print{html .justify-content-center,html[data-netbox-color-mode=dark] .justify-content-center,html[data-netbox-color-mode=light] .justify-content-center{justify-content:center!important}}@media print{html .justify-content-between,html[data-netbox-color-mode=dark] .justify-content-between,html[data-netbox-color-mode=light] .justify-content-between{justify-content:space-between!important}}@media print{html .justify-content-around,html[data-netbox-color-mode=dark] .justify-content-around,html[data-netbox-color-mode=light] .justify-content-around{justify-content:space-around!important}}@media print{html .justify-content-evenly,html[data-netbox-color-mode=dark] .justify-content-evenly,html[data-netbox-color-mode=light] .justify-content-evenly{justify-content:space-evenly!important}}@media print{html .align-items-start,html[data-netbox-color-mode=dark] .align-items-start,html[data-netbox-color-mode=light] .align-items-start{align-items:flex-start!important}}@media print{html .align-items-end,html[data-netbox-color-mode=dark] .align-items-end,html[data-netbox-color-mode=light] .align-items-end{align-items:flex-end!important}}@media print{html .align-items-center,html[data-netbox-color-mode=dark] .align-items-center,html[data-netbox-color-mode=light] .align-items-center{align-items:center!important}}@media print{html .align-items-baseline,html[data-netbox-color-mode=dark] .align-items-baseline,html[data-netbox-color-mode=light] .align-items-baseline{align-items:baseline!important}}@media print{html .align-items-stretch,html[data-netbox-color-mode=dark] .align-items-stretch,html[data-netbox-color-mode=light] .align-items-stretch{align-items:stretch!important}}@media print{html .align-content-start,html[data-netbox-color-mode=dark] .align-content-start,html[data-netbox-color-mode=light] .align-content-start{align-content:flex-start!important}}@media print{html .align-content-end,html[data-netbox-color-mode=dark] .align-content-end,html[data-netbox-color-mode=light] .align-content-end{align-content:flex-end!important}}@media print{html .align-content-center,html[data-netbox-color-mode=dark] .align-content-center,html[data-netbox-color-mode=light] .align-content-center{align-content:center!important}}@media print{html .align-content-between,html[data-netbox-color-mode=dark] .align-content-between,html[data-netbox-color-mode=light] .align-content-between{align-content:space-between!important}}@media print{html .align-content-around,html[data-netbox-color-mode=dark] .align-content-around,html[data-netbox-color-mode=light] .align-content-around{align-content:space-around!important}}@media print{html .align-content-stretch,html[data-netbox-color-mode=dark] .align-content-stretch,html[data-netbox-color-mode=light] .align-content-stretch{align-content:stretch!important}}@media print{html .align-self-auto,html[data-netbox-color-mode=dark] .align-self-auto,html[data-netbox-color-mode=light] .align-self-auto{align-self:auto!important}}@media print{html .align-self-start,html[data-netbox-color-mode=dark] .align-self-start,html[data-netbox-color-mode=light] .align-self-start{align-self:flex-start!important}}@media print{html .align-self-end,html[data-netbox-color-mode=dark] .align-self-end,html[data-netbox-color-mode=light] .align-self-end{align-self:flex-end!important}}@media print{html .align-self-center,html[data-netbox-color-mode=dark] .align-self-center,html[data-netbox-color-mode=light] .align-self-center{align-self:center!important}}@media print{html .align-self-baseline,html[data-netbox-color-mode=dark] .align-self-baseline,html[data-netbox-color-mode=light] .align-self-baseline{align-self:baseline!important}}@media print{html .align-self-stretch,html[data-netbox-color-mode=dark] .align-self-stretch,html[data-netbox-color-mode=light] .align-self-stretch{align-self:stretch!important}}@media print{html .order-first,html[data-netbox-color-mode=dark] .order-first,html[data-netbox-color-mode=light] .order-first{order:-1!important}}@media print{html .order-0,html[data-netbox-color-mode=dark] .order-0,html[data-netbox-color-mode=light] .order-0{order:0!important}}@media print{html .order-1,html[data-netbox-color-mode=dark] .order-1,html[data-netbox-color-mode=light] .order-1{order:1!important}}@media print{html .order-2,html[data-netbox-color-mode=dark] .order-2,html[data-netbox-color-mode=light] .order-2{order:2!important}}@media print{html .order-3,html[data-netbox-color-mode=dark] .order-3,html[data-netbox-color-mode=light] .order-3{order:3!important}}@media print{html .order-4,html[data-netbox-color-mode=dark] .order-4,html[data-netbox-color-mode=light] .order-4{order:4!important}}@media print{html .order-5,html[data-netbox-color-mode=dark] .order-5,html[data-netbox-color-mode=light] .order-5{order:5!important}}@media print{html .order-last,html[data-netbox-color-mode=dark] .order-last,html[data-netbox-color-mode=light] .order-last{order:6!important}}@media print{html .m-0,html[data-netbox-color-mode=dark] .m-0,html[data-netbox-color-mode=light] .m-0{margin:0!important}}@media print{html .m-1,html[data-netbox-color-mode=dark] .m-1,html[data-netbox-color-mode=light] .m-1{margin:.25rem!important}}@media print{html .m-2,html[data-netbox-color-mode=dark] .m-2,html[data-netbox-color-mode=light] .m-2{margin:.5rem!important}}@media print{html .m-3,html[data-netbox-color-mode=dark] .m-3,html[data-netbox-color-mode=light] .m-3{margin:1rem!important}}@media print{html .m-4,html[data-netbox-color-mode=dark] .m-4,html[data-netbox-color-mode=light] .m-4{margin:1.5rem!important}}@media print{html .m-5,html[data-netbox-color-mode=dark] .m-5,html[data-netbox-color-mode=light] .m-5{margin:3rem!important}}@media print{html .m-auto,html[data-netbox-color-mode=dark] .m-auto,html[data-netbox-color-mode=light] .m-auto{margin:auto!important}}@media print{html .mx-0,html[data-netbox-color-mode=dark] .mx-0,html[data-netbox-color-mode=light] .mx-0{margin-right:0!important;margin-left:0!important}}@media print{html .mx-1,html[data-netbox-color-mode=dark] .mx-1,html[data-netbox-color-mode=light] .mx-1{margin-right:.25rem!important;margin-left:.25rem!important}}@media print{html .mx-2,html[data-netbox-color-mode=dark] .mx-2,html[data-netbox-color-mode=light] .mx-2{margin-right:.5rem!important;margin-left:.5rem!important}}@media print{html .mx-3,html[data-netbox-color-mode=dark] .mx-3,html[data-netbox-color-mode=light] .mx-3{margin-right:1rem!important;margin-left:1rem!important}}@media print{html .mx-4,html[data-netbox-color-mode=dark] .mx-4,html[data-netbox-color-mode=light] .mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}}@media print{html .mx-5,html[data-netbox-color-mode=dark] .mx-5,html[data-netbox-color-mode=light] .mx-5{margin-right:3rem!important;margin-left:3rem!important}}@media print{html .mx-auto,html[data-netbox-color-mode=dark] .mx-auto,html[data-netbox-color-mode=light] .mx-auto{margin-right:auto!important;margin-left:auto!important}}@media print{html .my-0,html[data-netbox-color-mode=dark] .my-0,html[data-netbox-color-mode=light] .my-0{margin-top:0!important;margin-bottom:0!important}}@media print{html .my-1,html[data-netbox-color-mode=dark] .my-1,html[data-netbox-color-mode=light] .my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}}@media print{html .my-2,html[data-netbox-color-mode=dark] .my-2,html[data-netbox-color-mode=light] .my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}}@media print{html .my-3,html[data-netbox-color-mode=dark] .my-3,html[data-netbox-color-mode=light] .my-3{margin-top:1rem!important;margin-bottom:1rem!important}}@media print{html .my-4,html[data-netbox-color-mode=dark] .my-4,html[data-netbox-color-mode=light] .my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}}@media print{html .my-5,html[data-netbox-color-mode=dark] .my-5,html[data-netbox-color-mode=light] .my-5{margin-top:3rem!important;margin-bottom:3rem!important}}@media print{html .my-auto,html[data-netbox-color-mode=dark] .my-auto,html[data-netbox-color-mode=light] .my-auto{margin-top:auto!important;margin-bottom:auto!important}}@media print{html .mt-0,html[data-netbox-color-mode=dark] .mt-0,html[data-netbox-color-mode=light] .mt-0{margin-top:0!important}}@media print{html .mt-1,html[data-netbox-color-mode=dark] .mt-1,html[data-netbox-color-mode=light] .mt-1{margin-top:.25rem!important}}@media print{html .mt-2,html[data-netbox-color-mode=dark] .mt-2,html[data-netbox-color-mode=light] .mt-2{margin-top:.5rem!important}}@media print{html .mt-3,html[data-netbox-color-mode=dark] .mt-3,html[data-netbox-color-mode=light] .mt-3{margin-top:1rem!important}}@media print{html .mt-4,html[data-netbox-color-mode=dark] .mt-4,html[data-netbox-color-mode=light] .mt-4{margin-top:1.5rem!important}}@media print{html .mt-5,html[data-netbox-color-mode=dark] .mt-5,html[data-netbox-color-mode=light] .mt-5{margin-top:3rem!important}}@media print{html .mt-auto,html[data-netbox-color-mode=dark] .mt-auto,html[data-netbox-color-mode=light] .mt-auto{margin-top:auto!important}}@media print{html .me-0,html[data-netbox-color-mode=dark] .me-0,html[data-netbox-color-mode=light] .me-0{margin-right:0!important}}@media print{html .me-1,html[data-netbox-color-mode=dark] .me-1,html[data-netbox-color-mode=light] .me-1{margin-right:.25rem!important}}@media print{html .me-2,html[data-netbox-color-mode=dark] .me-2,html[data-netbox-color-mode=light] .me-2{margin-right:.5rem!important}}@media print{html .me-3,html[data-netbox-color-mode=dark] .me-3,html[data-netbox-color-mode=light] .me-3{margin-right:1rem!important}}@media print{html .me-4,html[data-netbox-color-mode=dark] .me-4,html[data-netbox-color-mode=light] .me-4{margin-right:1.5rem!important}}@media print{html .me-5,html[data-netbox-color-mode=dark] .me-5,html[data-netbox-color-mode=light] .me-5{margin-right:3rem!important}}@media print{html .me-auto,html[data-netbox-color-mode=dark] .me-auto,html[data-netbox-color-mode=light] .me-auto{margin-right:auto!important}}@media print{html .mb-0,html[data-netbox-color-mode=dark] .mb-0,html[data-netbox-color-mode=light] .mb-0{margin-bottom:0!important}}@media print{html .mb-1,html[data-netbox-color-mode=dark] .mb-1,html[data-netbox-color-mode=light] .mb-1{margin-bottom:.25rem!important}}@media print{html .mb-2,html[data-netbox-color-mode=dark] .mb-2,html[data-netbox-color-mode=light] .mb-2{margin-bottom:.5rem!important}}@media print{html .mb-3,html[data-netbox-color-mode=dark] .mb-3,html[data-netbox-color-mode=light] .mb-3{margin-bottom:1rem!important}}@media print{html .mb-4,html[data-netbox-color-mode=dark] .mb-4,html[data-netbox-color-mode=light] .mb-4{margin-bottom:1.5rem!important}}@media print{html .mb-5,html[data-netbox-color-mode=dark] .mb-5,html[data-netbox-color-mode=light] .mb-5{margin-bottom:3rem!important}}@media print{html .mb-auto,html[data-netbox-color-mode=dark] .mb-auto,html[data-netbox-color-mode=light] .mb-auto{margin-bottom:auto!important}}@media print{html .ms-0,html[data-netbox-color-mode=dark] .ms-0,html[data-netbox-color-mode=light] .ms-0{margin-left:0!important}}@media print{html .ms-1,html[data-netbox-color-mode=dark] .ms-1,html[data-netbox-color-mode=light] .ms-1{margin-left:.25rem!important}}@media print{html .ms-2,html[data-netbox-color-mode=dark] .ms-2,html[data-netbox-color-mode=light] .ms-2{margin-left:.5rem!important}}@media print{html .ms-3,html[data-netbox-color-mode=dark] .ms-3,html[data-netbox-color-mode=light] .ms-3{margin-left:1rem!important}}@media print{html .ms-4,html[data-netbox-color-mode=dark] .ms-4,html[data-netbox-color-mode=light] .ms-4{margin-left:1.5rem!important}}@media print{html .ms-5,html[data-netbox-color-mode=dark] .ms-5,html[data-netbox-color-mode=light] .ms-5{margin-left:3rem!important}}@media print{html .ms-auto,html[data-netbox-color-mode=dark] .ms-auto,html[data-netbox-color-mode=light] .ms-auto{margin-left:auto!important}}@media print{html .p-0,html[data-netbox-color-mode=dark] .p-0,html[data-netbox-color-mode=light] .p-0{padding:0!important}}@media print{html .p-1,html[data-netbox-color-mode=dark] .p-1,html[data-netbox-color-mode=light] .p-1{padding:.25rem!important}}@media print{html .p-2,html[data-netbox-color-mode=dark] .p-2,html[data-netbox-color-mode=light] .p-2{padding:.5rem!important}}@media print{html .p-3,html[data-netbox-color-mode=dark] .p-3,html[data-netbox-color-mode=light] .p-3{padding:1rem!important}}@media print{html .p-4,html[data-netbox-color-mode=dark] .p-4,html[data-netbox-color-mode=light] .p-4{padding:1.5rem!important}}@media print{html .p-5,html[data-netbox-color-mode=dark] .p-5,html[data-netbox-color-mode=light] .p-5{padding:3rem!important}}@media print{html .px-0,html[data-netbox-color-mode=dark] .px-0,html[data-netbox-color-mode=light] .px-0{padding-right:0!important;padding-left:0!important}}@media print{html .px-1,html[data-netbox-color-mode=dark] .px-1,html[data-netbox-color-mode=light] .px-1{padding-right:.25rem!important;padding-left:.25rem!important}}@media print{html .px-2,html[data-netbox-color-mode=dark] .px-2,html[data-netbox-color-mode=light] .px-2{padding-right:.5rem!important;padding-left:.5rem!important}}@media print{html .px-3,html[data-netbox-color-mode=dark] .px-3,html[data-netbox-color-mode=light] .px-3{padding-right:1rem!important;padding-left:1rem!important}}@media print{html .px-4,html[data-netbox-color-mode=dark] .px-4,html[data-netbox-color-mode=light] .px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}}@media print{html .px-5,html[data-netbox-color-mode=dark] .px-5,html[data-netbox-color-mode=light] .px-5{padding-right:3rem!important;padding-left:3rem!important}}@media print{html .py-0,html[data-netbox-color-mode=dark] .py-0,html[data-netbox-color-mode=light] .py-0{padding-top:0!important;padding-bottom:0!important}}@media print{html .py-1,html[data-netbox-color-mode=dark] .py-1,html[data-netbox-color-mode=light] .py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}}@media print{html .py-2,html[data-netbox-color-mode=dark] .py-2,html[data-netbox-color-mode=light] .py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}}@media print{html .py-3,html[data-netbox-color-mode=dark] .py-3,html[data-netbox-color-mode=light] .py-3{padding-top:1rem!important;padding-bottom:1rem!important}}@media print{html .py-4,html[data-netbox-color-mode=dark] .py-4,html[data-netbox-color-mode=light] .py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}}@media print{html .py-5,html[data-netbox-color-mode=dark] .py-5,html[data-netbox-color-mode=light] .py-5{padding-top:3rem!important;padding-bottom:3rem!important}}@media print{html .pt-0,html[data-netbox-color-mode=dark] .pt-0,html[data-netbox-color-mode=light] .pt-0{padding-top:0!important}}@media print{html .pt-1,html[data-netbox-color-mode=dark] .pt-1,html[data-netbox-color-mode=light] .pt-1{padding-top:.25rem!important}}@media print{html .pt-2,html[data-netbox-color-mode=dark] .pt-2,html[data-netbox-color-mode=light] .pt-2{padding-top:.5rem!important}}@media print{html .pt-3,html[data-netbox-color-mode=dark] .pt-3,html[data-netbox-color-mode=light] .pt-3{padding-top:1rem!important}}@media print{html .pt-4,html[data-netbox-color-mode=dark] .pt-4,html[data-netbox-color-mode=light] .pt-4{padding-top:1.5rem!important}}@media print{html .pt-5,html[data-netbox-color-mode=dark] .pt-5,html[data-netbox-color-mode=light] .pt-5{padding-top:3rem!important}}@media print{html .pe-0,html[data-netbox-color-mode=dark] .pe-0,html[data-netbox-color-mode=light] .pe-0{padding-right:0!important}}@media print{html .pe-1,html[data-netbox-color-mode=dark] .pe-1,html[data-netbox-color-mode=light] .pe-1{padding-right:.25rem!important}}@media print{html .pe-2,html[data-netbox-color-mode=dark] .pe-2,html[data-netbox-color-mode=light] .pe-2{padding-right:.5rem!important}}@media print{html .pe-3,html[data-netbox-color-mode=dark] .pe-3,html[data-netbox-color-mode=light] .pe-3{padding-right:1rem!important}}@media print{html .pe-4,html[data-netbox-color-mode=dark] .pe-4,html[data-netbox-color-mode=light] .pe-4{padding-right:1.5rem!important}}@media print{html .pe-5,html[data-netbox-color-mode=dark] .pe-5,html[data-netbox-color-mode=light] .pe-5{padding-right:3rem!important}}@media print{html .pb-0,html[data-netbox-color-mode=dark] .pb-0,html[data-netbox-color-mode=light] .pb-0{padding-bottom:0!important}}@media print{html .pb-1,html[data-netbox-color-mode=dark] .pb-1,html[data-netbox-color-mode=light] .pb-1{padding-bottom:.25rem!important}}@media print{html .pb-2,html[data-netbox-color-mode=dark] .pb-2,html[data-netbox-color-mode=light] .pb-2{padding-bottom:.5rem!important}}@media print{html .pb-3,html[data-netbox-color-mode=dark] .pb-3,html[data-netbox-color-mode=light] .pb-3{padding-bottom:1rem!important}}@media print{html .pb-4,html[data-netbox-color-mode=dark] .pb-4,html[data-netbox-color-mode=light] .pb-4{padding-bottom:1.5rem!important}}@media print{html .pb-5,html[data-netbox-color-mode=dark] .pb-5,html[data-netbox-color-mode=light] .pb-5{padding-bottom:3rem!important}}@media print{html .ps-0,html[data-netbox-color-mode=dark] .ps-0,html[data-netbox-color-mode=light] .ps-0{padding-left:0!important}}@media print{html .ps-1,html[data-netbox-color-mode=dark] .ps-1,html[data-netbox-color-mode=light] .ps-1{padding-left:.25rem!important}}@media print{html .ps-2,html[data-netbox-color-mode=dark] .ps-2,html[data-netbox-color-mode=light] .ps-2{padding-left:.5rem!important}}@media print{html .ps-3,html[data-netbox-color-mode=dark] .ps-3,html[data-netbox-color-mode=light] .ps-3{padding-left:1rem!important}}@media print{html .ps-4,html[data-netbox-color-mode=dark] .ps-4,html[data-netbox-color-mode=light] .ps-4{padding-left:1.5rem!important}}@media print{html .ps-5,html[data-netbox-color-mode=dark] .ps-5,html[data-netbox-color-mode=light] .ps-5{padding-left:3rem!important}}@media print{html .font-monospace,html[data-netbox-color-mode=dark] .font-monospace,html[data-netbox-color-mode=light] .font-monospace{font-family:var(--bs-font-monospace)!important}}@media print{html .fs-1,html[data-netbox-color-mode=dark] .fs-1,html[data-netbox-color-mode=light] .fs-1{font-size:calc(1.375rem + 1.5vw)!important}}@media print{html .fs-2,html[data-netbox-color-mode=dark] .fs-2,html[data-netbox-color-mode=light] .fs-2{font-size:calc(1.325rem + 0.9vw)!important}}@media print{html .fs-3,html[data-netbox-color-mode=dark] .fs-3,html[data-netbox-color-mode=light] .fs-3{font-size:calc(1.3rem + 0.6vw)!important}}@media print{html .fs-4,html[data-netbox-color-mode=dark] .fs-4,html[data-netbox-color-mode=light] .fs-4{font-size:calc(1.275rem + 0.3vw)!important}}@media print{html .fs-5,html[data-netbox-color-mode=dark] .fs-5,html[data-netbox-color-mode=light] .fs-5{font-size:1.25rem!important}}@media print{html .fs-6,html[data-netbox-color-mode=dark] .fs-6,html[data-netbox-color-mode=light] .fs-6{font-size:1rem!important}}@media print{html .fst-italic,html[data-netbox-color-mode=dark] .fst-italic,html[data-netbox-color-mode=light] .fst-italic{font-style:italic!important}}@media print{html .fst-normal,html[data-netbox-color-mode=dark] .fst-normal,html[data-netbox-color-mode=light] .fst-normal{font-style:normal!important}}@media print{html .fw-light,html[data-netbox-color-mode=dark] .fw-light,html[data-netbox-color-mode=light] .fw-light{font-weight:300!important}}@media print{html .fw-lighter,html[data-netbox-color-mode=dark] .fw-lighter,html[data-netbox-color-mode=light] .fw-lighter{font-weight:200!important}}@media print{html .fw-normal,html[data-netbox-color-mode=dark] .fw-normal,html[data-netbox-color-mode=light] .fw-normal{font-weight:400!important}}@media print{html .fw-bold,html[data-netbox-color-mode=dark] .fw-bold,html[data-netbox-color-mode=light] .fw-bold{font-weight:700!important}}@media print{html .fw-bolder,html[data-netbox-color-mode=dark] .fw-bolder,html[data-netbox-color-mode=light] .fw-bolder{font-weight:800!important}}@media print{html .lh-1,html[data-netbox-color-mode=dark] .lh-1,html[data-netbox-color-mode=light] .lh-1{line-height:1!important}}@media print{html .lh-sm,html[data-netbox-color-mode=dark] .lh-sm,html[data-netbox-color-mode=light] .lh-sm{line-height:1.25!important}}@media print{html .lh-base,html[data-netbox-color-mode=dark] .lh-base,html[data-netbox-color-mode=light] .lh-base{line-height:1.5!important}}@media print{html .lh-lg,html[data-netbox-color-mode=dark] .lh-lg,html[data-netbox-color-mode=light] .lh-lg{line-height:1.75!important}}@media print{html .text-start,html[data-netbox-color-mode=dark] .text-start,html[data-netbox-color-mode=light] .text-start{text-align:left!important}}@media print{html .text-end,html[data-netbox-color-mode=dark] .text-end,html[data-netbox-color-mode=light] .text-end{text-align:right!important}}@media print{html .text-center,html[data-netbox-color-mode=dark] .text-center,html[data-netbox-color-mode=light] .text-center{text-align:center!important}}@media print{html .text-decoration-none,html[data-netbox-color-mode=dark] .text-decoration-none,html[data-netbox-color-mode=light] .text-decoration-none{text-decoration:none!important}}@media print{html .text-decoration-underline,html[data-netbox-color-mode=dark] .text-decoration-underline,html[data-netbox-color-mode=light] .text-decoration-underline{text-decoration:underline!important}}@media print{html .text-decoration-line-through,html[data-netbox-color-mode=dark] .text-decoration-line-through,html[data-netbox-color-mode=light] .text-decoration-line-through{text-decoration:line-through!important}}@media print{html .text-lowercase,html[data-netbox-color-mode=dark] .text-lowercase,html[data-netbox-color-mode=light] .text-lowercase{text-transform:lowercase!important}}@media print{html .text-uppercase,html[data-netbox-color-mode=dark] .text-uppercase,html[data-netbox-color-mode=light] .text-uppercase{text-transform:uppercase!important}}@media print{html .text-capitalize,html[data-netbox-color-mode=dark] .text-capitalize,html[data-netbox-color-mode=light] .text-capitalize{text-transform:capitalize!important}}@media print{html .text-wrap,html[data-netbox-color-mode=dark] .text-wrap,html[data-netbox-color-mode=light] .text-wrap{white-space:normal!important}}@media print{html .text-nowrap,html[data-netbox-color-mode=dark] .text-nowrap,html[data-netbox-color-mode=light] .text-nowrap{white-space:nowrap!important}}@media print{html .text-break,html[data-netbox-color-mode=dark] .text-break,html[data-netbox-color-mode=light] .text-break{word-wrap:break-word!important;word-break:break-word!important}}@media print{html .text-primary,html[data-netbox-color-mode=dark] .text-primary,html[data-netbox-color-mode=light] .text-primary{color:#337ab7!important}}@media print{html .text-secondary,html[data-netbox-color-mode=dark] .text-secondary,html[data-netbox-color-mode=light] .text-secondary{color:#6c757d!important}}@media print{html .text-success,html[data-netbox-color-mode=dark] .text-success,html[data-netbox-color-mode=light] .text-success{color:#198754!important}}@media print{html .text-info,html[data-netbox-color-mode=dark] .text-info,html[data-netbox-color-mode=light] .text-info{color:#54d6f0!important}}@media print{html .text-warning,html[data-netbox-color-mode=dark] .text-warning,html[data-netbox-color-mode=light] .text-warning{color:#ffc107!important}}@media print{html .text-danger,html[data-netbox-color-mode=dark] .text-danger,html[data-netbox-color-mode=light] .text-danger{color:#dc3545!important}}@media print{html .text-light,html[data-netbox-color-mode=dark] .text-light,html[data-netbox-color-mode=light] .text-light{color:#e9ecef!important}}@media print{html .text-dark,html[data-netbox-color-mode=dark] .text-dark,html[data-netbox-color-mode=light] .text-dark{color:#343a40!important}}@media print{html .text-blue,html[data-netbox-color-mode=dark] .text-blue,html[data-netbox-color-mode=light] .text-blue{color:#0d6efd!important}}@media print{html .text-indigo,html[data-netbox-color-mode=dark] .text-indigo,html[data-netbox-color-mode=light] .text-indigo{color:#6610f2!important}}@media print{html .text-purple,html[data-netbox-color-mode=dark] .text-purple,html[data-netbox-color-mode=light] .text-purple{color:#6f42c1!important}}@media print{html .text-pink,html[data-netbox-color-mode=dark] .text-pink,html[data-netbox-color-mode=light] .text-pink{color:#d63384!important}}@media print{html .text-red,html[data-netbox-color-mode=dark] .text-red,html[data-netbox-color-mode=light] .text-red{color:#dc3545!important}}@media print{html .text-orange,html[data-netbox-color-mode=dark] .text-orange,html[data-netbox-color-mode=light] .text-orange{color:#fd7e14!important}}@media print{html .text-yellow,html[data-netbox-color-mode=dark] .text-yellow,html[data-netbox-color-mode=light] .text-yellow{color:#ffc107!important}}@media print{html .text-green,html[data-netbox-color-mode=dark] .text-green,html[data-netbox-color-mode=light] .text-green{color:#198754!important}}@media print{html .text-teal,html[data-netbox-color-mode=dark] .text-teal,html[data-netbox-color-mode=light] .text-teal{color:#20c997!important}}@media print{html .text-cyan,html[data-netbox-color-mode=dark] .text-cyan,html[data-netbox-color-mode=light] .text-cyan{color:#0dcaf0!important}}@media print{html .text-gray,html[data-netbox-color-mode=dark] .text-gray,html[data-netbox-color-mode=light] .text-gray{color:#adb5bd!important}}@media print{html .text-black,html[data-netbox-color-mode=dark] .text-black,html[data-netbox-color-mode=light] .text-black{color:#000!important}}@media print{html .text-white,html[data-netbox-color-mode=dark] .text-white,html[data-netbox-color-mode=light] .text-white{color:#fff!important}}@media print{html .text-body,html[data-netbox-color-mode=dark] .text-body,html[data-netbox-color-mode=light] .text-body{color:#212529!important}}@media print{html .text-muted,html[data-netbox-color-mode=dark] .text-muted,html[data-netbox-color-mode=light] .text-muted{color:#6c757d!important}}@media print{html .text-black-50,html[data-netbox-color-mode=dark] .text-black-50,html[data-netbox-color-mode=light] .text-black-50{color:#00000080!important}}@media print{html .text-white-50,html[data-netbox-color-mode=dark] .text-white-50,html[data-netbox-color-mode=light] .text-white-50{color:#ffffff80!important}}@media print{html .text-reset,html[data-netbox-color-mode=dark] .text-reset,html[data-netbox-color-mode=light] .text-reset{color:inherit!important}}@media print{html .bg-primary,html[data-netbox-color-mode=dark] .bg-primary,html[data-netbox-color-mode=light] .bg-primary{background-color:#337ab7!important}}@media print{html .bg-secondary,html[data-netbox-color-mode=dark] .bg-secondary,html[data-netbox-color-mode=light] .bg-secondary{background-color:#6c757d!important}}@media print{html .bg-success,html[data-netbox-color-mode=dark] .bg-success,html[data-netbox-color-mode=light] .bg-success{background-color:#198754!important}}@media print{html .bg-info,html[data-netbox-color-mode=dark] .bg-info,html[data-netbox-color-mode=light] .bg-info{background-color:#54d6f0!important}}@media print{html .bg-warning,html[data-netbox-color-mode=dark] .bg-warning,html[data-netbox-color-mode=light] .bg-warning{background-color:#ffc107!important}}@media print{html .bg-danger,html[data-netbox-color-mode=dark] .bg-danger,html[data-netbox-color-mode=light] .bg-danger{background-color:#dc3545!important}}@media print{html .bg-light,html[data-netbox-color-mode=dark] .bg-light,html[data-netbox-color-mode=light] .bg-light{background-color:#e9ecef!important}}@media print{html .bg-dark,html[data-netbox-color-mode=dark] .bg-dark,html[data-netbox-color-mode=light] .bg-dark{background-color:#343a40!important}}@media print{html .bg-blue,html[data-netbox-color-mode=dark] .bg-blue,html[data-netbox-color-mode=light] .bg-blue{background-color:#0d6efd!important}}@media print{html .bg-indigo,html[data-netbox-color-mode=dark] .bg-indigo,html[data-netbox-color-mode=light] .bg-indigo{background-color:#6610f2!important}}@media print{html .bg-purple,html[data-netbox-color-mode=dark] .bg-purple,html[data-netbox-color-mode=light] .bg-purple{background-color:#6f42c1!important}}@media print{html .bg-pink,html[data-netbox-color-mode=dark] .bg-pink,html[data-netbox-color-mode=light] .bg-pink{background-color:#d63384!important}}@media print{html .bg-red,html[data-netbox-color-mode=dark] .bg-red,html[data-netbox-color-mode=light] .bg-red{background-color:#dc3545!important}}@media print{html .bg-orange,html[data-netbox-color-mode=dark] .bg-orange,html[data-netbox-color-mode=light] .bg-orange{background-color:#fd7e14!important}}@media print{html .bg-yellow,html[data-netbox-color-mode=dark] .bg-yellow,html[data-netbox-color-mode=light] .bg-yellow{background-color:#ffc107!important}}@media print{html .bg-green,html[data-netbox-color-mode=dark] .bg-green,html[data-netbox-color-mode=light] .bg-green{background-color:#198754!important}}@media print{html .bg-teal,html[data-netbox-color-mode=dark] .bg-teal,html[data-netbox-color-mode=light] .bg-teal{background-color:#20c997!important}}@media print{html .bg-cyan,html[data-netbox-color-mode=dark] .bg-cyan,html[data-netbox-color-mode=light] .bg-cyan{background-color:#0dcaf0!important}}@media print{html .bg-gray,html[data-netbox-color-mode=dark] .bg-gray,html[data-netbox-color-mode=light] .bg-gray{background-color:#adb5bd!important}}@media print{html .bg-black,html[data-netbox-color-mode=dark] .bg-black,html[data-netbox-color-mode=light] .bg-black{background-color:#000!important}}@media print{html .bg-white,html[data-netbox-color-mode=dark] .bg-white,html[data-netbox-color-mode=light] .bg-white{background-color:#fff!important}}@media print{html .bg-body,html[data-netbox-color-mode=dark] .bg-body,html[data-netbox-color-mode=light] .bg-body{background-color:#fff!important}}@media print{html .bg-transparent,html[data-netbox-color-mode=dark] .bg-transparent,html[data-netbox-color-mode=light] .bg-transparent{background-color:transparent!important}}@media print{html .bg-gradient,html[data-netbox-color-mode=dark] .bg-gradient,html[data-netbox-color-mode=light] .bg-gradient{background-image:var(--bs-gradient)!important}}@media print{html .user-select-all,html[data-netbox-color-mode=dark] .user-select-all,html[data-netbox-color-mode=light] .user-select-all{user-select:all!important}}@media print{html .user-select-auto,html[data-netbox-color-mode=dark] .user-select-auto,html[data-netbox-color-mode=light] .user-select-auto{user-select:auto!important}}@media print{html .user-select-none,html[data-netbox-color-mode=dark] .user-select-none,html[data-netbox-color-mode=light] .user-select-none{user-select:none!important}}@media print{html .pe-none,html[data-netbox-color-mode=dark] .pe-none,html[data-netbox-color-mode=light] .pe-none{pointer-events:none!important}}@media print{html .pe-auto,html[data-netbox-color-mode=dark] .pe-auto,html[data-netbox-color-mode=light] .pe-auto{pointer-events:auto!important}}@media print{html .rounded,html[data-netbox-color-mode=dark] .rounded,html[data-netbox-color-mode=light] .rounded{border-radius:.375rem!important}}@media print{html .rounded-0,html[data-netbox-color-mode=dark] .rounded-0,html[data-netbox-color-mode=light] .rounded-0{border-radius:0!important}}@media print{html .rounded-1,html[data-netbox-color-mode=dark] .rounded-1,html[data-netbox-color-mode=light] .rounded-1{border-radius:.375rem!important}}@media print{html .rounded-2,html[data-netbox-color-mode=dark] .rounded-2,html[data-netbox-color-mode=light] .rounded-2{border-radius:.375rem!important}}@media print{html .rounded-3,html[data-netbox-color-mode=dark] .rounded-3,html[data-netbox-color-mode=light] .rounded-3{border-radius:.75rem!important}}@media print{html .rounded-circle,html[data-netbox-color-mode=dark] .rounded-circle,html[data-netbox-color-mode=light] .rounded-circle{border-radius:50%!important}}@media print{html .rounded-pill,html[data-netbox-color-mode=dark] .rounded-pill,html[data-netbox-color-mode=light] .rounded-pill{border-radius:50rem!important}}@media print{html .rounded-top,html[data-netbox-color-mode=dark] .rounded-top,html[data-netbox-color-mode=light] .rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}}@media print{html .rounded-end,html[data-netbox-color-mode=dark] .rounded-end,html[data-netbox-color-mode=light] .rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}}@media print{html .rounded-bottom,html[data-netbox-color-mode=dark] .rounded-bottom,html[data-netbox-color-mode=light] .rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}}@media print{html .rounded-start,html[data-netbox-color-mode=dark] .rounded-start,html[data-netbox-color-mode=light] .rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}}@media print{html .visible,html[data-netbox-color-mode=dark] .visible,html[data-netbox-color-mode=light] .visible{visibility:visible!important}}@media print{html .invisible,html[data-netbox-color-mode=dark] .invisible,html[data-netbox-color-mode=light] .invisible{visibility:hidden!important}}@media print and (min-width: 576px){html .float-sm-start,html[data-netbox-color-mode=dark] .float-sm-start,html[data-netbox-color-mode=light] .float-sm-start{float:left!important}html .float-sm-end,html[data-netbox-color-mode=dark] .float-sm-end,html[data-netbox-color-mode=light] .float-sm-end{float:right!important}html .float-sm-none,html[data-netbox-color-mode=dark] .float-sm-none,html[data-netbox-color-mode=light] .float-sm-none{float:none!important}html .d-sm-inline,html[data-netbox-color-mode=dark] .d-sm-inline,html[data-netbox-color-mode=light] .d-sm-inline{display:inline!important}html .d-sm-inline-block,html[data-netbox-color-mode=dark] .d-sm-inline-block,html[data-netbox-color-mode=light] .d-sm-inline-block{display:inline-block!important}html .d-sm-block,html[data-netbox-color-mode=dark] .d-sm-block,html[data-netbox-color-mode=light] .d-sm-block{display:block!important}html .d-sm-grid,html[data-netbox-color-mode=dark] .d-sm-grid,html[data-netbox-color-mode=light] .d-sm-grid{display:grid!important}html .d-sm-table,html[data-netbox-color-mode=dark] .d-sm-table,html[data-netbox-color-mode=light] .d-sm-table{display:table!important}html .d-sm-table-row,html[data-netbox-color-mode=dark] .d-sm-table-row,html[data-netbox-color-mode=light] .d-sm-table-row{display:table-row!important}html .d-sm-table-cell,html[data-netbox-color-mode=dark] .d-sm-table-cell,html[data-netbox-color-mode=light] .d-sm-table-cell{display:table-cell!important}html .d-sm-flex,html[data-netbox-color-mode=dark] .d-sm-flex,html[data-netbox-color-mode=light] .d-sm-flex{display:flex!important}html .d-sm-inline-flex,html[data-netbox-color-mode=dark] .d-sm-inline-flex,html[data-netbox-color-mode=light] .d-sm-inline-flex{display:inline-flex!important}html .d-sm-none,html[data-netbox-color-mode=dark] .d-sm-none,html[data-netbox-color-mode=light] .d-sm-none{display:none!important}html .flex-sm-fill,html[data-netbox-color-mode=dark] .flex-sm-fill,html[data-netbox-color-mode=light] .flex-sm-fill{flex:1 1 auto!important}html .flex-sm-row,html[data-netbox-color-mode=dark] .flex-sm-row,html[data-netbox-color-mode=light] .flex-sm-row{flex-direction:row!important}html .flex-sm-column,html[data-netbox-color-mode=dark] .flex-sm-column,html[data-netbox-color-mode=light] .flex-sm-column{flex-direction:column!important}html .flex-sm-row-reverse,html[data-netbox-color-mode=dark] .flex-sm-row-reverse,html[data-netbox-color-mode=light] .flex-sm-row-reverse{flex-direction:row-reverse!important}html .flex-sm-column-reverse,html[data-netbox-color-mode=dark] .flex-sm-column-reverse,html[data-netbox-color-mode=light] .flex-sm-column-reverse{flex-direction:column-reverse!important}html .flex-sm-grow-0,html[data-netbox-color-mode=dark] .flex-sm-grow-0,html[data-netbox-color-mode=light] .flex-sm-grow-0{flex-grow:0!important}html .flex-sm-grow-1,html[data-netbox-color-mode=dark] .flex-sm-grow-1,html[data-netbox-color-mode=light] .flex-sm-grow-1{flex-grow:1!important}html .flex-sm-shrink-0,html[data-netbox-color-mode=dark] .flex-sm-shrink-0,html[data-netbox-color-mode=light] .flex-sm-shrink-0{flex-shrink:0!important}html .flex-sm-shrink-1,html[data-netbox-color-mode=dark] .flex-sm-shrink-1,html[data-netbox-color-mode=light] .flex-sm-shrink-1{flex-shrink:1!important}html .flex-sm-wrap,html[data-netbox-color-mode=dark] .flex-sm-wrap,html[data-netbox-color-mode=light] .flex-sm-wrap{flex-wrap:wrap!important}html .flex-sm-nowrap,html[data-netbox-color-mode=dark] .flex-sm-nowrap,html[data-netbox-color-mode=light] .flex-sm-nowrap{flex-wrap:nowrap!important}html .flex-sm-wrap-reverse,html[data-netbox-color-mode=dark] .flex-sm-wrap-reverse,html[data-netbox-color-mode=light] .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-sm-0,html[data-netbox-color-mode=dark] .gap-sm-0,html[data-netbox-color-mode=light] .gap-sm-0{gap:0!important}html .gap-sm-1,html[data-netbox-color-mode=dark] .gap-sm-1,html[data-netbox-color-mode=light] .gap-sm-1{gap:.25rem!important}html .gap-sm-2,html[data-netbox-color-mode=dark] .gap-sm-2,html[data-netbox-color-mode=light] .gap-sm-2{gap:.5rem!important}html .gap-sm-3,html[data-netbox-color-mode=dark] .gap-sm-3,html[data-netbox-color-mode=light] .gap-sm-3{gap:1rem!important}html .gap-sm-4,html[data-netbox-color-mode=dark] .gap-sm-4,html[data-netbox-color-mode=light] .gap-sm-4{gap:1.5rem!important}html .gap-sm-5,html[data-netbox-color-mode=dark] .gap-sm-5,html[data-netbox-color-mode=light] .gap-sm-5{gap:3rem!important}html .justify-content-sm-start,html[data-netbox-color-mode=dark] .justify-content-sm-start,html[data-netbox-color-mode=light] .justify-content-sm-start{justify-content:flex-start!important}html .justify-content-sm-end,html[data-netbox-color-mode=dark] .justify-content-sm-end,html[data-netbox-color-mode=light] .justify-content-sm-end{justify-content:flex-end!important}html .justify-content-sm-center,html[data-netbox-color-mode=dark] .justify-content-sm-center,html[data-netbox-color-mode=light] .justify-content-sm-center{justify-content:center!important}html .justify-content-sm-between,html[data-netbox-color-mode=dark] .justify-content-sm-between,html[data-netbox-color-mode=light] .justify-content-sm-between{justify-content:space-between!important}html .justify-content-sm-around,html[data-netbox-color-mode=dark] .justify-content-sm-around,html[data-netbox-color-mode=light] .justify-content-sm-around{justify-content:space-around!important}html .justify-content-sm-evenly,html[data-netbox-color-mode=dark] .justify-content-sm-evenly,html[data-netbox-color-mode=light] .justify-content-sm-evenly{justify-content:space-evenly!important}html .align-items-sm-start,html[data-netbox-color-mode=dark] .align-items-sm-start,html[data-netbox-color-mode=light] .align-items-sm-start{align-items:flex-start!important}html .align-items-sm-end,html[data-netbox-color-mode=dark] .align-items-sm-end,html[data-netbox-color-mode=light] .align-items-sm-end{align-items:flex-end!important}html .align-items-sm-center,html[data-netbox-color-mode=dark] .align-items-sm-center,html[data-netbox-color-mode=light] .align-items-sm-center{align-items:center!important}html .align-items-sm-baseline,html[data-netbox-color-mode=dark] .align-items-sm-baseline,html[data-netbox-color-mode=light] .align-items-sm-baseline{align-items:baseline!important}html .align-items-sm-stretch,html[data-netbox-color-mode=dark] .align-items-sm-stretch,html[data-netbox-color-mode=light] .align-items-sm-stretch{align-items:stretch!important}html .align-content-sm-start,html[data-netbox-color-mode=dark] .align-content-sm-start,html[data-netbox-color-mode=light] .align-content-sm-start{align-content:flex-start!important}html .align-content-sm-end,html[data-netbox-color-mode=dark] .align-content-sm-end,html[data-netbox-color-mode=light] .align-content-sm-end{align-content:flex-end!important}html .align-content-sm-center,html[data-netbox-color-mode=dark] .align-content-sm-center,html[data-netbox-color-mode=light] .align-content-sm-center{align-content:center!important}html .align-content-sm-between,html[data-netbox-color-mode=dark] .align-content-sm-between,html[data-netbox-color-mode=light] .align-content-sm-between{align-content:space-between!important}html .align-content-sm-around,html[data-netbox-color-mode=dark] .align-content-sm-around,html[data-netbox-color-mode=light] .align-content-sm-around{align-content:space-around!important}html .align-content-sm-stretch,html[data-netbox-color-mode=dark] .align-content-sm-stretch,html[data-netbox-color-mode=light] .align-content-sm-stretch{align-content:stretch!important}html .align-self-sm-auto,html[data-netbox-color-mode=dark] .align-self-sm-auto,html[data-netbox-color-mode=light] .align-self-sm-auto{align-self:auto!important}html .align-self-sm-start,html[data-netbox-color-mode=dark] .align-self-sm-start,html[data-netbox-color-mode=light] .align-self-sm-start{align-self:flex-start!important}html .align-self-sm-end,html[data-netbox-color-mode=dark] .align-self-sm-end,html[data-netbox-color-mode=light] .align-self-sm-end{align-self:flex-end!important}html .align-self-sm-center,html[data-netbox-color-mode=dark] .align-self-sm-center,html[data-netbox-color-mode=light] .align-self-sm-center{align-self:center!important}html .align-self-sm-baseline,html[data-netbox-color-mode=dark] .align-self-sm-baseline,html[data-netbox-color-mode=light] .align-self-sm-baseline{align-self:baseline!important}html .align-self-sm-stretch,html[data-netbox-color-mode=dark] .align-self-sm-stretch,html[data-netbox-color-mode=light] .align-self-sm-stretch{align-self:stretch!important}html .order-sm-first,html[data-netbox-color-mode=dark] .order-sm-first,html[data-netbox-color-mode=light] .order-sm-first{order:-1!important}html .order-sm-0,html[data-netbox-color-mode=dark] .order-sm-0,html[data-netbox-color-mode=light] .order-sm-0{order:0!important}html .order-sm-1,html[data-netbox-color-mode=dark] .order-sm-1,html[data-netbox-color-mode=light] .order-sm-1{order:1!important}html .order-sm-2,html[data-netbox-color-mode=dark] .order-sm-2,html[data-netbox-color-mode=light] .order-sm-2{order:2!important}html .order-sm-3,html[data-netbox-color-mode=dark] .order-sm-3,html[data-netbox-color-mode=light] .order-sm-3{order:3!important}html .order-sm-4,html[data-netbox-color-mode=dark] .order-sm-4,html[data-netbox-color-mode=light] .order-sm-4{order:4!important}html .order-sm-5,html[data-netbox-color-mode=dark] .order-sm-5,html[data-netbox-color-mode=light] .order-sm-5{order:5!important}html .order-sm-last,html[data-netbox-color-mode=dark] .order-sm-last,html[data-netbox-color-mode=light] .order-sm-last{order:6!important}html .m-sm-0,html[data-netbox-color-mode=dark] .m-sm-0,html[data-netbox-color-mode=light] .m-sm-0{margin:0!important}html .m-sm-1,html[data-netbox-color-mode=dark] .m-sm-1,html[data-netbox-color-mode=light] .m-sm-1{margin:.25rem!important}html .m-sm-2,html[data-netbox-color-mode=dark] .m-sm-2,html[data-netbox-color-mode=light] .m-sm-2{margin:.5rem!important}html .m-sm-3,html[data-netbox-color-mode=dark] .m-sm-3,html[data-netbox-color-mode=light] .m-sm-3{margin:1rem!important}html .m-sm-4,html[data-netbox-color-mode=dark] .m-sm-4,html[data-netbox-color-mode=light] .m-sm-4{margin:1.5rem!important}html .m-sm-5,html[data-netbox-color-mode=dark] .m-sm-5,html[data-netbox-color-mode=light] .m-sm-5{margin:3rem!important}html .m-sm-auto,html[data-netbox-color-mode=dark] .m-sm-auto,html[data-netbox-color-mode=light] .m-sm-auto{margin:auto!important}html .mx-sm-0,html[data-netbox-color-mode=dark] .mx-sm-0,html[data-netbox-color-mode=light] .mx-sm-0{margin-right:0!important;margin-left:0!important}html .mx-sm-1,html[data-netbox-color-mode=dark] .mx-sm-1,html[data-netbox-color-mode=light] .mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-sm-2,html[data-netbox-color-mode=dark] .mx-sm-2,html[data-netbox-color-mode=light] .mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-sm-3,html[data-netbox-color-mode=dark] .mx-sm-3,html[data-netbox-color-mode=light] .mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-sm-4,html[data-netbox-color-mode=dark] .mx-sm-4,html[data-netbox-color-mode=light] .mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-sm-5,html[data-netbox-color-mode=dark] .mx-sm-5,html[data-netbox-color-mode=light] .mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-sm-auto,html[data-netbox-color-mode=dark] .mx-sm-auto,html[data-netbox-color-mode=light] .mx-sm-auto{margin-right:auto!important;margin-left:auto!important}html .my-sm-0,html[data-netbox-color-mode=dark] .my-sm-0,html[data-netbox-color-mode=light] .my-sm-0{margin-top:0!important;margin-bottom:0!important}html .my-sm-1,html[data-netbox-color-mode=dark] .my-sm-1,html[data-netbox-color-mode=light] .my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-sm-2,html[data-netbox-color-mode=dark] .my-sm-2,html[data-netbox-color-mode=light] .my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-sm-3,html[data-netbox-color-mode=dark] .my-sm-3,html[data-netbox-color-mode=light] .my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-sm-4,html[data-netbox-color-mode=dark] .my-sm-4,html[data-netbox-color-mode=light] .my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-sm-5,html[data-netbox-color-mode=dark] .my-sm-5,html[data-netbox-color-mode=light] .my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-sm-auto,html[data-netbox-color-mode=dark] .my-sm-auto,html[data-netbox-color-mode=light] .my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-sm-0,html[data-netbox-color-mode=dark] .mt-sm-0,html[data-netbox-color-mode=light] .mt-sm-0{margin-top:0!important}html .mt-sm-1,html[data-netbox-color-mode=dark] .mt-sm-1,html[data-netbox-color-mode=light] .mt-sm-1{margin-top:.25rem!important}html .mt-sm-2,html[data-netbox-color-mode=dark] .mt-sm-2,html[data-netbox-color-mode=light] .mt-sm-2{margin-top:.5rem!important}html .mt-sm-3,html[data-netbox-color-mode=dark] .mt-sm-3,html[data-netbox-color-mode=light] .mt-sm-3{margin-top:1rem!important}html .mt-sm-4,html[data-netbox-color-mode=dark] .mt-sm-4,html[data-netbox-color-mode=light] .mt-sm-4{margin-top:1.5rem!important}html .mt-sm-5,html[data-netbox-color-mode=dark] .mt-sm-5,html[data-netbox-color-mode=light] .mt-sm-5{margin-top:3rem!important}html .mt-sm-auto,html[data-netbox-color-mode=dark] .mt-sm-auto,html[data-netbox-color-mode=light] .mt-sm-auto{margin-top:auto!important}html .me-sm-0,html[data-netbox-color-mode=dark] .me-sm-0,html[data-netbox-color-mode=light] .me-sm-0{margin-right:0!important}html .me-sm-1,html[data-netbox-color-mode=dark] .me-sm-1,html[data-netbox-color-mode=light] .me-sm-1{margin-right:.25rem!important}html .me-sm-2,html[data-netbox-color-mode=dark] .me-sm-2,html[data-netbox-color-mode=light] .me-sm-2{margin-right:.5rem!important}html .me-sm-3,html[data-netbox-color-mode=dark] .me-sm-3,html[data-netbox-color-mode=light] .me-sm-3{margin-right:1rem!important}html .me-sm-4,html[data-netbox-color-mode=dark] .me-sm-4,html[data-netbox-color-mode=light] .me-sm-4{margin-right:1.5rem!important}html .me-sm-5,html[data-netbox-color-mode=dark] .me-sm-5,html[data-netbox-color-mode=light] .me-sm-5{margin-right:3rem!important}html .me-sm-auto,html[data-netbox-color-mode=dark] .me-sm-auto,html[data-netbox-color-mode=light] .me-sm-auto{margin-right:auto!important}html .mb-sm-0,html[data-netbox-color-mode=dark] .mb-sm-0,html[data-netbox-color-mode=light] .mb-sm-0{margin-bottom:0!important}html .mb-sm-1,html[data-netbox-color-mode=dark] .mb-sm-1,html[data-netbox-color-mode=light] .mb-sm-1{margin-bottom:.25rem!important}html .mb-sm-2,html[data-netbox-color-mode=dark] .mb-sm-2,html[data-netbox-color-mode=light] .mb-sm-2{margin-bottom:.5rem!important}html .mb-sm-3,html[data-netbox-color-mode=dark] .mb-sm-3,html[data-netbox-color-mode=light] .mb-sm-3{margin-bottom:1rem!important}html .mb-sm-4,html[data-netbox-color-mode=dark] .mb-sm-4,html[data-netbox-color-mode=light] .mb-sm-4{margin-bottom:1.5rem!important}html .mb-sm-5,html[data-netbox-color-mode=dark] .mb-sm-5,html[data-netbox-color-mode=light] .mb-sm-5{margin-bottom:3rem!important}html .mb-sm-auto,html[data-netbox-color-mode=dark] .mb-sm-auto,html[data-netbox-color-mode=light] .mb-sm-auto{margin-bottom:auto!important}html .ms-sm-0,html[data-netbox-color-mode=dark] .ms-sm-0,html[data-netbox-color-mode=light] .ms-sm-0{margin-left:0!important}html .ms-sm-1,html[data-netbox-color-mode=dark] .ms-sm-1,html[data-netbox-color-mode=light] .ms-sm-1{margin-left:.25rem!important}html .ms-sm-2,html[data-netbox-color-mode=dark] .ms-sm-2,html[data-netbox-color-mode=light] .ms-sm-2{margin-left:.5rem!important}html .ms-sm-3,html[data-netbox-color-mode=dark] .ms-sm-3,html[data-netbox-color-mode=light] .ms-sm-3{margin-left:1rem!important}html .ms-sm-4,html[data-netbox-color-mode=dark] .ms-sm-4,html[data-netbox-color-mode=light] .ms-sm-4{margin-left:1.5rem!important}html .ms-sm-5,html[data-netbox-color-mode=dark] .ms-sm-5,html[data-netbox-color-mode=light] .ms-sm-5{margin-left:3rem!important}html .ms-sm-auto,html[data-netbox-color-mode=dark] .ms-sm-auto,html[data-netbox-color-mode=light] .ms-sm-auto{margin-left:auto!important}html .p-sm-0,html[data-netbox-color-mode=dark] .p-sm-0,html[data-netbox-color-mode=light] .p-sm-0{padding:0!important}html .p-sm-1,html[data-netbox-color-mode=dark] .p-sm-1,html[data-netbox-color-mode=light] .p-sm-1{padding:.25rem!important}html .p-sm-2,html[data-netbox-color-mode=dark] .p-sm-2,html[data-netbox-color-mode=light] .p-sm-2{padding:.5rem!important}html .p-sm-3,html[data-netbox-color-mode=dark] .p-sm-3,html[data-netbox-color-mode=light] .p-sm-3{padding:1rem!important}html .p-sm-4,html[data-netbox-color-mode=dark] .p-sm-4,html[data-netbox-color-mode=light] .p-sm-4{padding:1.5rem!important}html .p-sm-5,html[data-netbox-color-mode=dark] .p-sm-5,html[data-netbox-color-mode=light] .p-sm-5{padding:3rem!important}html .px-sm-0,html[data-netbox-color-mode=dark] .px-sm-0,html[data-netbox-color-mode=light] .px-sm-0{padding-right:0!important;padding-left:0!important}html .px-sm-1,html[data-netbox-color-mode=dark] .px-sm-1,html[data-netbox-color-mode=light] .px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-sm-2,html[data-netbox-color-mode=dark] .px-sm-2,html[data-netbox-color-mode=light] .px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-sm-3,html[data-netbox-color-mode=dark] .px-sm-3,html[data-netbox-color-mode=light] .px-sm-3{padding-right:1rem!important;padding-left:1rem!important}html .px-sm-4,html[data-netbox-color-mode=dark] .px-sm-4,html[data-netbox-color-mode=light] .px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-sm-5,html[data-netbox-color-mode=dark] .px-sm-5,html[data-netbox-color-mode=light] .px-sm-5{padding-right:3rem!important;padding-left:3rem!important}html .py-sm-0,html[data-netbox-color-mode=dark] .py-sm-0,html[data-netbox-color-mode=light] .py-sm-0{padding-top:0!important;padding-bottom:0!important}html .py-sm-1,html[data-netbox-color-mode=dark] .py-sm-1,html[data-netbox-color-mode=light] .py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-sm-2,html[data-netbox-color-mode=dark] .py-sm-2,html[data-netbox-color-mode=light] .py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-sm-3,html[data-netbox-color-mode=dark] .py-sm-3,html[data-netbox-color-mode=light] .py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-sm-4,html[data-netbox-color-mode=dark] .py-sm-4,html[data-netbox-color-mode=light] .py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-sm-5,html[data-netbox-color-mode=dark] .py-sm-5,html[data-netbox-color-mode=light] .py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-sm-0,html[data-netbox-color-mode=dark] .pt-sm-0,html[data-netbox-color-mode=light] .pt-sm-0{padding-top:0!important}html .pt-sm-1,html[data-netbox-color-mode=dark] .pt-sm-1,html[data-netbox-color-mode=light] .pt-sm-1{padding-top:.25rem!important}html .pt-sm-2,html[data-netbox-color-mode=dark] .pt-sm-2,html[data-netbox-color-mode=light] .pt-sm-2{padding-top:.5rem!important}html .pt-sm-3,html[data-netbox-color-mode=dark] .pt-sm-3,html[data-netbox-color-mode=light] .pt-sm-3{padding-top:1rem!important}html .pt-sm-4,html[data-netbox-color-mode=dark] .pt-sm-4,html[data-netbox-color-mode=light] .pt-sm-4{padding-top:1.5rem!important}html .pt-sm-5,html[data-netbox-color-mode=dark] .pt-sm-5,html[data-netbox-color-mode=light] .pt-sm-5{padding-top:3rem!important}html .pe-sm-0,html[data-netbox-color-mode=dark] .pe-sm-0,html[data-netbox-color-mode=light] .pe-sm-0{padding-right:0!important}html .pe-sm-1,html[data-netbox-color-mode=dark] .pe-sm-1,html[data-netbox-color-mode=light] .pe-sm-1{padding-right:.25rem!important}html .pe-sm-2,html[data-netbox-color-mode=dark] .pe-sm-2,html[data-netbox-color-mode=light] .pe-sm-2{padding-right:.5rem!important}html .pe-sm-3,html[data-netbox-color-mode=dark] .pe-sm-3,html[data-netbox-color-mode=light] .pe-sm-3{padding-right:1rem!important}html .pe-sm-4,html[data-netbox-color-mode=dark] .pe-sm-4,html[data-netbox-color-mode=light] .pe-sm-4{padding-right:1.5rem!important}html .pe-sm-5,html[data-netbox-color-mode=dark] .pe-sm-5,html[data-netbox-color-mode=light] .pe-sm-5{padding-right:3rem!important}html .pb-sm-0,html[data-netbox-color-mode=dark] .pb-sm-0,html[data-netbox-color-mode=light] .pb-sm-0{padding-bottom:0!important}html .pb-sm-1,html[data-netbox-color-mode=dark] .pb-sm-1,html[data-netbox-color-mode=light] .pb-sm-1{padding-bottom:.25rem!important}html .pb-sm-2,html[data-netbox-color-mode=dark] .pb-sm-2,html[data-netbox-color-mode=light] .pb-sm-2{padding-bottom:.5rem!important}html .pb-sm-3,html[data-netbox-color-mode=dark] .pb-sm-3,html[data-netbox-color-mode=light] .pb-sm-3{padding-bottom:1rem!important}html .pb-sm-4,html[data-netbox-color-mode=dark] .pb-sm-4,html[data-netbox-color-mode=light] .pb-sm-4{padding-bottom:1.5rem!important}html .pb-sm-5,html[data-netbox-color-mode=dark] .pb-sm-5,html[data-netbox-color-mode=light] .pb-sm-5{padding-bottom:3rem!important}html .ps-sm-0,html[data-netbox-color-mode=dark] .ps-sm-0,html[data-netbox-color-mode=light] .ps-sm-0{padding-left:0!important}html .ps-sm-1,html[data-netbox-color-mode=dark] .ps-sm-1,html[data-netbox-color-mode=light] .ps-sm-1{padding-left:.25rem!important}html .ps-sm-2,html[data-netbox-color-mode=dark] .ps-sm-2,html[data-netbox-color-mode=light] .ps-sm-2{padding-left:.5rem!important}html .ps-sm-3,html[data-netbox-color-mode=dark] .ps-sm-3,html[data-netbox-color-mode=light] .ps-sm-3{padding-left:1rem!important}html .ps-sm-4,html[data-netbox-color-mode=dark] .ps-sm-4,html[data-netbox-color-mode=light] .ps-sm-4{padding-left:1.5rem!important}html .ps-sm-5,html[data-netbox-color-mode=dark] .ps-sm-5,html[data-netbox-color-mode=light] .ps-sm-5{padding-left:3rem!important}html .text-sm-start,html[data-netbox-color-mode=dark] .text-sm-start,html[data-netbox-color-mode=light] .text-sm-start{text-align:left!important}html .text-sm-end,html[data-netbox-color-mode=dark] .text-sm-end,html[data-netbox-color-mode=light] .text-sm-end{text-align:right!important}html .text-sm-center,html[data-netbox-color-mode=dark] .text-sm-center,html[data-netbox-color-mode=light] .text-sm-center{text-align:center!important}}@media print and (min-width: 768px){html .float-md-start,html[data-netbox-color-mode=dark] .float-md-start,html[data-netbox-color-mode=light] .float-md-start{float:left!important}html .float-md-end,html[data-netbox-color-mode=dark] .float-md-end,html[data-netbox-color-mode=light] .float-md-end{float:right!important}html .float-md-none,html[data-netbox-color-mode=dark] .float-md-none,html[data-netbox-color-mode=light] .float-md-none{float:none!important}html .d-md-inline,html[data-netbox-color-mode=dark] .d-md-inline,html[data-netbox-color-mode=light] .d-md-inline{display:inline!important}html .d-md-inline-block,html[data-netbox-color-mode=dark] .d-md-inline-block,html[data-netbox-color-mode=light] .d-md-inline-block{display:inline-block!important}html .d-md-block,html[data-netbox-color-mode=dark] .d-md-block,html[data-netbox-color-mode=light] .d-md-block{display:block!important}html .d-md-grid,html[data-netbox-color-mode=dark] .d-md-grid,html[data-netbox-color-mode=light] .d-md-grid{display:grid!important}html .d-md-table,html[data-netbox-color-mode=dark] .d-md-table,html[data-netbox-color-mode=light] .d-md-table{display:table!important}html .d-md-table-row,html[data-netbox-color-mode=dark] .d-md-table-row,html[data-netbox-color-mode=light] .d-md-table-row{display:table-row!important}html .d-md-table-cell,html[data-netbox-color-mode=dark] .d-md-table-cell,html[data-netbox-color-mode=light] .d-md-table-cell{display:table-cell!important}html .d-md-flex,html[data-netbox-color-mode=dark] .d-md-flex,html[data-netbox-color-mode=light] .d-md-flex{display:flex!important}html .d-md-inline-flex,html[data-netbox-color-mode=dark] .d-md-inline-flex,html[data-netbox-color-mode=light] .d-md-inline-flex{display:inline-flex!important}html .d-md-none,html[data-netbox-color-mode=dark] .d-md-none,html[data-netbox-color-mode=light] .d-md-none{display:none!important}html .flex-md-fill,html[data-netbox-color-mode=dark] .flex-md-fill,html[data-netbox-color-mode=light] .flex-md-fill{flex:1 1 auto!important}html .flex-md-row,html[data-netbox-color-mode=dark] .flex-md-row,html[data-netbox-color-mode=light] .flex-md-row{flex-direction:row!important}html .flex-md-column,html[data-netbox-color-mode=dark] .flex-md-column,html[data-netbox-color-mode=light] .flex-md-column{flex-direction:column!important}html .flex-md-row-reverse,html[data-netbox-color-mode=dark] .flex-md-row-reverse,html[data-netbox-color-mode=light] .flex-md-row-reverse{flex-direction:row-reverse!important}html .flex-md-column-reverse,html[data-netbox-color-mode=dark] .flex-md-column-reverse,html[data-netbox-color-mode=light] .flex-md-column-reverse{flex-direction:column-reverse!important}html .flex-md-grow-0,html[data-netbox-color-mode=dark] .flex-md-grow-0,html[data-netbox-color-mode=light] .flex-md-grow-0{flex-grow:0!important}html .flex-md-grow-1,html[data-netbox-color-mode=dark] .flex-md-grow-1,html[data-netbox-color-mode=light] .flex-md-grow-1{flex-grow:1!important}html .flex-md-shrink-0,html[data-netbox-color-mode=dark] .flex-md-shrink-0,html[data-netbox-color-mode=light] .flex-md-shrink-0{flex-shrink:0!important}html .flex-md-shrink-1,html[data-netbox-color-mode=dark] .flex-md-shrink-1,html[data-netbox-color-mode=light] .flex-md-shrink-1{flex-shrink:1!important}html .flex-md-wrap,html[data-netbox-color-mode=dark] .flex-md-wrap,html[data-netbox-color-mode=light] .flex-md-wrap{flex-wrap:wrap!important}html .flex-md-nowrap,html[data-netbox-color-mode=dark] .flex-md-nowrap,html[data-netbox-color-mode=light] .flex-md-nowrap{flex-wrap:nowrap!important}html .flex-md-wrap-reverse,html[data-netbox-color-mode=dark] .flex-md-wrap-reverse,html[data-netbox-color-mode=light] .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-md-0,html[data-netbox-color-mode=dark] .gap-md-0,html[data-netbox-color-mode=light] .gap-md-0{gap:0!important}html .gap-md-1,html[data-netbox-color-mode=dark] .gap-md-1,html[data-netbox-color-mode=light] .gap-md-1{gap:.25rem!important}html .gap-md-2,html[data-netbox-color-mode=dark] .gap-md-2,html[data-netbox-color-mode=light] .gap-md-2{gap:.5rem!important}html .gap-md-3,html[data-netbox-color-mode=dark] .gap-md-3,html[data-netbox-color-mode=light] .gap-md-3{gap:1rem!important}html .gap-md-4,html[data-netbox-color-mode=dark] .gap-md-4,html[data-netbox-color-mode=light] .gap-md-4{gap:1.5rem!important}html .gap-md-5,html[data-netbox-color-mode=dark] .gap-md-5,html[data-netbox-color-mode=light] .gap-md-5{gap:3rem!important}html .justify-content-md-start,html[data-netbox-color-mode=dark] .justify-content-md-start,html[data-netbox-color-mode=light] .justify-content-md-start{justify-content:flex-start!important}html .justify-content-md-end,html[data-netbox-color-mode=dark] .justify-content-md-end,html[data-netbox-color-mode=light] .justify-content-md-end{justify-content:flex-end!important}html .justify-content-md-center,html[data-netbox-color-mode=dark] .justify-content-md-center,html[data-netbox-color-mode=light] .justify-content-md-center{justify-content:center!important}html .justify-content-md-between,html[data-netbox-color-mode=dark] .justify-content-md-between,html[data-netbox-color-mode=light] .justify-content-md-between{justify-content:space-between!important}html .justify-content-md-around,html[data-netbox-color-mode=dark] .justify-content-md-around,html[data-netbox-color-mode=light] .justify-content-md-around{justify-content:space-around!important}html .justify-content-md-evenly,html[data-netbox-color-mode=dark] .justify-content-md-evenly,html[data-netbox-color-mode=light] .justify-content-md-evenly{justify-content:space-evenly!important}html .align-items-md-start,html[data-netbox-color-mode=dark] .align-items-md-start,html[data-netbox-color-mode=light] .align-items-md-start{align-items:flex-start!important}html .align-items-md-end,html[data-netbox-color-mode=dark] .align-items-md-end,html[data-netbox-color-mode=light] .align-items-md-end{align-items:flex-end!important}html .align-items-md-center,html[data-netbox-color-mode=dark] .align-items-md-center,html[data-netbox-color-mode=light] .align-items-md-center{align-items:center!important}html .align-items-md-baseline,html[data-netbox-color-mode=dark] .align-items-md-baseline,html[data-netbox-color-mode=light] .align-items-md-baseline{align-items:baseline!important}html .align-items-md-stretch,html[data-netbox-color-mode=dark] .align-items-md-stretch,html[data-netbox-color-mode=light] .align-items-md-stretch{align-items:stretch!important}html .align-content-md-start,html[data-netbox-color-mode=dark] .align-content-md-start,html[data-netbox-color-mode=light] .align-content-md-start{align-content:flex-start!important}html .align-content-md-end,html[data-netbox-color-mode=dark] .align-content-md-end,html[data-netbox-color-mode=light] .align-content-md-end{align-content:flex-end!important}html .align-content-md-center,html[data-netbox-color-mode=dark] .align-content-md-center,html[data-netbox-color-mode=light] .align-content-md-center{align-content:center!important}html .align-content-md-between,html[data-netbox-color-mode=dark] .align-content-md-between,html[data-netbox-color-mode=light] .align-content-md-between{align-content:space-between!important}html .align-content-md-around,html[data-netbox-color-mode=dark] .align-content-md-around,html[data-netbox-color-mode=light] .align-content-md-around{align-content:space-around!important}html .align-content-md-stretch,html[data-netbox-color-mode=dark] .align-content-md-stretch,html[data-netbox-color-mode=light] .align-content-md-stretch{align-content:stretch!important}html .align-self-md-auto,html[data-netbox-color-mode=dark] .align-self-md-auto,html[data-netbox-color-mode=light] .align-self-md-auto{align-self:auto!important}html .align-self-md-start,html[data-netbox-color-mode=dark] .align-self-md-start,html[data-netbox-color-mode=light] .align-self-md-start{align-self:flex-start!important}html .align-self-md-end,html[data-netbox-color-mode=dark] .align-self-md-end,html[data-netbox-color-mode=light] .align-self-md-end{align-self:flex-end!important}html .align-self-md-center,html[data-netbox-color-mode=dark] .align-self-md-center,html[data-netbox-color-mode=light] .align-self-md-center{align-self:center!important}html .align-self-md-baseline,html[data-netbox-color-mode=dark] .align-self-md-baseline,html[data-netbox-color-mode=light] .align-self-md-baseline{align-self:baseline!important}html .align-self-md-stretch,html[data-netbox-color-mode=dark] .align-self-md-stretch,html[data-netbox-color-mode=light] .align-self-md-stretch{align-self:stretch!important}html .order-md-first,html[data-netbox-color-mode=dark] .order-md-first,html[data-netbox-color-mode=light] .order-md-first{order:-1!important}html .order-md-0,html[data-netbox-color-mode=dark] .order-md-0,html[data-netbox-color-mode=light] .order-md-0{order:0!important}html .order-md-1,html[data-netbox-color-mode=dark] .order-md-1,html[data-netbox-color-mode=light] .order-md-1{order:1!important}html .order-md-2,html[data-netbox-color-mode=dark] .order-md-2,html[data-netbox-color-mode=light] .order-md-2{order:2!important}html .order-md-3,html[data-netbox-color-mode=dark] .order-md-3,html[data-netbox-color-mode=light] .order-md-3{order:3!important}html .order-md-4,html[data-netbox-color-mode=dark] .order-md-4,html[data-netbox-color-mode=light] .order-md-4{order:4!important}html .order-md-5,html[data-netbox-color-mode=dark] .order-md-5,html[data-netbox-color-mode=light] .order-md-5{order:5!important}html .order-md-last,html[data-netbox-color-mode=dark] .order-md-last,html[data-netbox-color-mode=light] .order-md-last{order:6!important}html .m-md-0,html[data-netbox-color-mode=dark] .m-md-0,html[data-netbox-color-mode=light] .m-md-0{margin:0!important}html .m-md-1,html[data-netbox-color-mode=dark] .m-md-1,html[data-netbox-color-mode=light] .m-md-1{margin:.25rem!important}html .m-md-2,html[data-netbox-color-mode=dark] .m-md-2,html[data-netbox-color-mode=light] .m-md-2{margin:.5rem!important}html .m-md-3,html[data-netbox-color-mode=dark] .m-md-3,html[data-netbox-color-mode=light] .m-md-3{margin:1rem!important}html .m-md-4,html[data-netbox-color-mode=dark] .m-md-4,html[data-netbox-color-mode=light] .m-md-4{margin:1.5rem!important}html .m-md-5,html[data-netbox-color-mode=dark] .m-md-5,html[data-netbox-color-mode=light] .m-md-5{margin:3rem!important}html .m-md-auto,html[data-netbox-color-mode=dark] .m-md-auto,html[data-netbox-color-mode=light] .m-md-auto{margin:auto!important}html .mx-md-0,html[data-netbox-color-mode=dark] .mx-md-0,html[data-netbox-color-mode=light] .mx-md-0{margin-right:0!important;margin-left:0!important}html .mx-md-1,html[data-netbox-color-mode=dark] .mx-md-1,html[data-netbox-color-mode=light] .mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-md-2,html[data-netbox-color-mode=dark] .mx-md-2,html[data-netbox-color-mode=light] .mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-md-3,html[data-netbox-color-mode=dark] .mx-md-3,html[data-netbox-color-mode=light] .mx-md-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-md-4,html[data-netbox-color-mode=dark] .mx-md-4,html[data-netbox-color-mode=light] .mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-md-5,html[data-netbox-color-mode=dark] .mx-md-5,html[data-netbox-color-mode=light] .mx-md-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-md-auto,html[data-netbox-color-mode=dark] .mx-md-auto,html[data-netbox-color-mode=light] .mx-md-auto{margin-right:auto!important;margin-left:auto!important}html .my-md-0,html[data-netbox-color-mode=dark] .my-md-0,html[data-netbox-color-mode=light] .my-md-0{margin-top:0!important;margin-bottom:0!important}html .my-md-1,html[data-netbox-color-mode=dark] .my-md-1,html[data-netbox-color-mode=light] .my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-md-2,html[data-netbox-color-mode=dark] .my-md-2,html[data-netbox-color-mode=light] .my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-md-3,html[data-netbox-color-mode=dark] .my-md-3,html[data-netbox-color-mode=light] .my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-md-4,html[data-netbox-color-mode=dark] .my-md-4,html[data-netbox-color-mode=light] .my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-md-5,html[data-netbox-color-mode=dark] .my-md-5,html[data-netbox-color-mode=light] .my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-md-auto,html[data-netbox-color-mode=dark] .my-md-auto,html[data-netbox-color-mode=light] .my-md-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-md-0,html[data-netbox-color-mode=dark] .mt-md-0,html[data-netbox-color-mode=light] .mt-md-0{margin-top:0!important}html .mt-md-1,html[data-netbox-color-mode=dark] .mt-md-1,html[data-netbox-color-mode=light] .mt-md-1{margin-top:.25rem!important}html .mt-md-2,html[data-netbox-color-mode=dark] .mt-md-2,html[data-netbox-color-mode=light] .mt-md-2{margin-top:.5rem!important}html .mt-md-3,html[data-netbox-color-mode=dark] .mt-md-3,html[data-netbox-color-mode=light] .mt-md-3{margin-top:1rem!important}html .mt-md-4,html[data-netbox-color-mode=dark] .mt-md-4,html[data-netbox-color-mode=light] .mt-md-4{margin-top:1.5rem!important}html .mt-md-5,html[data-netbox-color-mode=dark] .mt-md-5,html[data-netbox-color-mode=light] .mt-md-5{margin-top:3rem!important}html .mt-md-auto,html[data-netbox-color-mode=dark] .mt-md-auto,html[data-netbox-color-mode=light] .mt-md-auto{margin-top:auto!important}html .me-md-0,html[data-netbox-color-mode=dark] .me-md-0,html[data-netbox-color-mode=light] .me-md-0{margin-right:0!important}html .me-md-1,html[data-netbox-color-mode=dark] .me-md-1,html[data-netbox-color-mode=light] .me-md-1{margin-right:.25rem!important}html .me-md-2,html[data-netbox-color-mode=dark] .me-md-2,html[data-netbox-color-mode=light] .me-md-2{margin-right:.5rem!important}html .me-md-3,html[data-netbox-color-mode=dark] .me-md-3,html[data-netbox-color-mode=light] .me-md-3{margin-right:1rem!important}html .me-md-4,html[data-netbox-color-mode=dark] .me-md-4,html[data-netbox-color-mode=light] .me-md-4{margin-right:1.5rem!important}html .me-md-5,html[data-netbox-color-mode=dark] .me-md-5,html[data-netbox-color-mode=light] .me-md-5{margin-right:3rem!important}html .me-md-auto,html[data-netbox-color-mode=dark] .me-md-auto,html[data-netbox-color-mode=light] .me-md-auto{margin-right:auto!important}html .mb-md-0,html[data-netbox-color-mode=dark] .mb-md-0,html[data-netbox-color-mode=light] .mb-md-0{margin-bottom:0!important}html .mb-md-1,html[data-netbox-color-mode=dark] .mb-md-1,html[data-netbox-color-mode=light] .mb-md-1{margin-bottom:.25rem!important}html .mb-md-2,html[data-netbox-color-mode=dark] .mb-md-2,html[data-netbox-color-mode=light] .mb-md-2{margin-bottom:.5rem!important}html .mb-md-3,html[data-netbox-color-mode=dark] .mb-md-3,html[data-netbox-color-mode=light] .mb-md-3{margin-bottom:1rem!important}html .mb-md-4,html[data-netbox-color-mode=dark] .mb-md-4,html[data-netbox-color-mode=light] .mb-md-4{margin-bottom:1.5rem!important}html .mb-md-5,html[data-netbox-color-mode=dark] .mb-md-5,html[data-netbox-color-mode=light] .mb-md-5{margin-bottom:3rem!important}html .mb-md-auto,html[data-netbox-color-mode=dark] .mb-md-auto,html[data-netbox-color-mode=light] .mb-md-auto{margin-bottom:auto!important}html .ms-md-0,html[data-netbox-color-mode=dark] .ms-md-0,html[data-netbox-color-mode=light] .ms-md-0{margin-left:0!important}html .ms-md-1,html[data-netbox-color-mode=dark] .ms-md-1,html[data-netbox-color-mode=light] .ms-md-1{margin-left:.25rem!important}html .ms-md-2,html[data-netbox-color-mode=dark] .ms-md-2,html[data-netbox-color-mode=light] .ms-md-2{margin-left:.5rem!important}html .ms-md-3,html[data-netbox-color-mode=dark] .ms-md-3,html[data-netbox-color-mode=light] .ms-md-3{margin-left:1rem!important}html .ms-md-4,html[data-netbox-color-mode=dark] .ms-md-4,html[data-netbox-color-mode=light] .ms-md-4{margin-left:1.5rem!important}html .ms-md-5,html[data-netbox-color-mode=dark] .ms-md-5,html[data-netbox-color-mode=light] .ms-md-5{margin-left:3rem!important}html .ms-md-auto,html[data-netbox-color-mode=dark] .ms-md-auto,html[data-netbox-color-mode=light] .ms-md-auto{margin-left:auto!important}html .p-md-0,html[data-netbox-color-mode=dark] .p-md-0,html[data-netbox-color-mode=light] .p-md-0{padding:0!important}html .p-md-1,html[data-netbox-color-mode=dark] .p-md-1,html[data-netbox-color-mode=light] .p-md-1{padding:.25rem!important}html .p-md-2,html[data-netbox-color-mode=dark] .p-md-2,html[data-netbox-color-mode=light] .p-md-2{padding:.5rem!important}html .p-md-3,html[data-netbox-color-mode=dark] .p-md-3,html[data-netbox-color-mode=light] .p-md-3{padding:1rem!important}html .p-md-4,html[data-netbox-color-mode=dark] .p-md-4,html[data-netbox-color-mode=light] .p-md-4{padding:1.5rem!important}html .p-md-5,html[data-netbox-color-mode=dark] .p-md-5,html[data-netbox-color-mode=light] .p-md-5{padding:3rem!important}html .px-md-0,html[data-netbox-color-mode=dark] .px-md-0,html[data-netbox-color-mode=light] .px-md-0{padding-right:0!important;padding-left:0!important}html .px-md-1,html[data-netbox-color-mode=dark] .px-md-1,html[data-netbox-color-mode=light] .px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-md-2,html[data-netbox-color-mode=dark] .px-md-2,html[data-netbox-color-mode=light] .px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-md-3,html[data-netbox-color-mode=dark] .px-md-3,html[data-netbox-color-mode=light] .px-md-3{padding-right:1rem!important;padding-left:1rem!important}html .px-md-4,html[data-netbox-color-mode=dark] .px-md-4,html[data-netbox-color-mode=light] .px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-md-5,html[data-netbox-color-mode=dark] .px-md-5,html[data-netbox-color-mode=light] .px-md-5{padding-right:3rem!important;padding-left:3rem!important}html .py-md-0,html[data-netbox-color-mode=dark] .py-md-0,html[data-netbox-color-mode=light] .py-md-0{padding-top:0!important;padding-bottom:0!important}html .py-md-1,html[data-netbox-color-mode=dark] .py-md-1,html[data-netbox-color-mode=light] .py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-md-2,html[data-netbox-color-mode=dark] .py-md-2,html[data-netbox-color-mode=light] .py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-md-3,html[data-netbox-color-mode=dark] .py-md-3,html[data-netbox-color-mode=light] .py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-md-4,html[data-netbox-color-mode=dark] .py-md-4,html[data-netbox-color-mode=light] .py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-md-5,html[data-netbox-color-mode=dark] .py-md-5,html[data-netbox-color-mode=light] .py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-md-0,html[data-netbox-color-mode=dark] .pt-md-0,html[data-netbox-color-mode=light] .pt-md-0{padding-top:0!important}html .pt-md-1,html[data-netbox-color-mode=dark] .pt-md-1,html[data-netbox-color-mode=light] .pt-md-1{padding-top:.25rem!important}html .pt-md-2,html[data-netbox-color-mode=dark] .pt-md-2,html[data-netbox-color-mode=light] .pt-md-2{padding-top:.5rem!important}html .pt-md-3,html[data-netbox-color-mode=dark] .pt-md-3,html[data-netbox-color-mode=light] .pt-md-3{padding-top:1rem!important}html .pt-md-4,html[data-netbox-color-mode=dark] .pt-md-4,html[data-netbox-color-mode=light] .pt-md-4{padding-top:1.5rem!important}html .pt-md-5,html[data-netbox-color-mode=dark] .pt-md-5,html[data-netbox-color-mode=light] .pt-md-5{padding-top:3rem!important}html .pe-md-0,html[data-netbox-color-mode=dark] .pe-md-0,html[data-netbox-color-mode=light] .pe-md-0{padding-right:0!important}html .pe-md-1,html[data-netbox-color-mode=dark] .pe-md-1,html[data-netbox-color-mode=light] .pe-md-1{padding-right:.25rem!important}html .pe-md-2,html[data-netbox-color-mode=dark] .pe-md-2,html[data-netbox-color-mode=light] .pe-md-2{padding-right:.5rem!important}html .pe-md-3,html[data-netbox-color-mode=dark] .pe-md-3,html[data-netbox-color-mode=light] .pe-md-3{padding-right:1rem!important}html .pe-md-4,html[data-netbox-color-mode=dark] .pe-md-4,html[data-netbox-color-mode=light] .pe-md-4{padding-right:1.5rem!important}html .pe-md-5,html[data-netbox-color-mode=dark] .pe-md-5,html[data-netbox-color-mode=light] .pe-md-5{padding-right:3rem!important}html .pb-md-0,html[data-netbox-color-mode=dark] .pb-md-0,html[data-netbox-color-mode=light] .pb-md-0{padding-bottom:0!important}html .pb-md-1,html[data-netbox-color-mode=dark] .pb-md-1,html[data-netbox-color-mode=light] .pb-md-1{padding-bottom:.25rem!important}html .pb-md-2,html[data-netbox-color-mode=dark] .pb-md-2,html[data-netbox-color-mode=light] .pb-md-2{padding-bottom:.5rem!important}html .pb-md-3,html[data-netbox-color-mode=dark] .pb-md-3,html[data-netbox-color-mode=light] .pb-md-3{padding-bottom:1rem!important}html .pb-md-4,html[data-netbox-color-mode=dark] .pb-md-4,html[data-netbox-color-mode=light] .pb-md-4{padding-bottom:1.5rem!important}html .pb-md-5,html[data-netbox-color-mode=dark] .pb-md-5,html[data-netbox-color-mode=light] .pb-md-5{padding-bottom:3rem!important}html .ps-md-0,html[data-netbox-color-mode=dark] .ps-md-0,html[data-netbox-color-mode=light] .ps-md-0{padding-left:0!important}html .ps-md-1,html[data-netbox-color-mode=dark] .ps-md-1,html[data-netbox-color-mode=light] .ps-md-1{padding-left:.25rem!important}html .ps-md-2,html[data-netbox-color-mode=dark] .ps-md-2,html[data-netbox-color-mode=light] .ps-md-2{padding-left:.5rem!important}html .ps-md-3,html[data-netbox-color-mode=dark] .ps-md-3,html[data-netbox-color-mode=light] .ps-md-3{padding-left:1rem!important}html .ps-md-4,html[data-netbox-color-mode=dark] .ps-md-4,html[data-netbox-color-mode=light] .ps-md-4{padding-left:1.5rem!important}html .ps-md-5,html[data-netbox-color-mode=dark] .ps-md-5,html[data-netbox-color-mode=light] .ps-md-5{padding-left:3rem!important}html .text-md-start,html[data-netbox-color-mode=dark] .text-md-start,html[data-netbox-color-mode=light] .text-md-start{text-align:left!important}html .text-md-end,html[data-netbox-color-mode=dark] .text-md-end,html[data-netbox-color-mode=light] .text-md-end{text-align:right!important}html .text-md-center,html[data-netbox-color-mode=dark] .text-md-center,html[data-netbox-color-mode=light] .text-md-center{text-align:center!important}}@media print and (min-width: 992px){html .float-lg-start,html[data-netbox-color-mode=dark] .float-lg-start,html[data-netbox-color-mode=light] .float-lg-start{float:left!important}html .float-lg-end,html[data-netbox-color-mode=dark] .float-lg-end,html[data-netbox-color-mode=light] .float-lg-end{float:right!important}html .float-lg-none,html[data-netbox-color-mode=dark] .float-lg-none,html[data-netbox-color-mode=light] .float-lg-none{float:none!important}html .d-lg-inline,html[data-netbox-color-mode=dark] .d-lg-inline,html[data-netbox-color-mode=light] .d-lg-inline{display:inline!important}html .d-lg-inline-block,html[data-netbox-color-mode=dark] .d-lg-inline-block,html[data-netbox-color-mode=light] .d-lg-inline-block{display:inline-block!important}html .d-lg-block,html[data-netbox-color-mode=dark] .d-lg-block,html[data-netbox-color-mode=light] .d-lg-block{display:block!important}html .d-lg-grid,html[data-netbox-color-mode=dark] .d-lg-grid,html[data-netbox-color-mode=light] .d-lg-grid{display:grid!important}html .d-lg-table,html[data-netbox-color-mode=dark] .d-lg-table,html[data-netbox-color-mode=light] .d-lg-table{display:table!important}html .d-lg-table-row,html[data-netbox-color-mode=dark] .d-lg-table-row,html[data-netbox-color-mode=light] .d-lg-table-row{display:table-row!important}html .d-lg-table-cell,html[data-netbox-color-mode=dark] .d-lg-table-cell,html[data-netbox-color-mode=light] .d-lg-table-cell{display:table-cell!important}html .d-lg-flex,html[data-netbox-color-mode=dark] .d-lg-flex,html[data-netbox-color-mode=light] .d-lg-flex{display:flex!important}html .d-lg-inline-flex,html[data-netbox-color-mode=dark] .d-lg-inline-flex,html[data-netbox-color-mode=light] .d-lg-inline-flex{display:inline-flex!important}html .d-lg-none,html[data-netbox-color-mode=dark] .d-lg-none,html[data-netbox-color-mode=light] .d-lg-none{display:none!important}html .flex-lg-fill,html[data-netbox-color-mode=dark] .flex-lg-fill,html[data-netbox-color-mode=light] .flex-lg-fill{flex:1 1 auto!important}html .flex-lg-row,html[data-netbox-color-mode=dark] .flex-lg-row,html[data-netbox-color-mode=light] .flex-lg-row{flex-direction:row!important}html .flex-lg-column,html[data-netbox-color-mode=dark] .flex-lg-column,html[data-netbox-color-mode=light] .flex-lg-column{flex-direction:column!important}html .flex-lg-row-reverse,html[data-netbox-color-mode=dark] .flex-lg-row-reverse,html[data-netbox-color-mode=light] .flex-lg-row-reverse{flex-direction:row-reverse!important}html .flex-lg-column-reverse,html[data-netbox-color-mode=dark] .flex-lg-column-reverse,html[data-netbox-color-mode=light] .flex-lg-column-reverse{flex-direction:column-reverse!important}html .flex-lg-grow-0,html[data-netbox-color-mode=dark] .flex-lg-grow-0,html[data-netbox-color-mode=light] .flex-lg-grow-0{flex-grow:0!important}html .flex-lg-grow-1,html[data-netbox-color-mode=dark] .flex-lg-grow-1,html[data-netbox-color-mode=light] .flex-lg-grow-1{flex-grow:1!important}html .flex-lg-shrink-0,html[data-netbox-color-mode=dark] .flex-lg-shrink-0,html[data-netbox-color-mode=light] .flex-lg-shrink-0{flex-shrink:0!important}html .flex-lg-shrink-1,html[data-netbox-color-mode=dark] .flex-lg-shrink-1,html[data-netbox-color-mode=light] .flex-lg-shrink-1{flex-shrink:1!important}html .flex-lg-wrap,html[data-netbox-color-mode=dark] .flex-lg-wrap,html[data-netbox-color-mode=light] .flex-lg-wrap{flex-wrap:wrap!important}html .flex-lg-nowrap,html[data-netbox-color-mode=dark] .flex-lg-nowrap,html[data-netbox-color-mode=light] .flex-lg-nowrap{flex-wrap:nowrap!important}html .flex-lg-wrap-reverse,html[data-netbox-color-mode=dark] .flex-lg-wrap-reverse,html[data-netbox-color-mode=light] .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-lg-0,html[data-netbox-color-mode=dark] .gap-lg-0,html[data-netbox-color-mode=light] .gap-lg-0{gap:0!important}html .gap-lg-1,html[data-netbox-color-mode=dark] .gap-lg-1,html[data-netbox-color-mode=light] .gap-lg-1{gap:.25rem!important}html .gap-lg-2,html[data-netbox-color-mode=dark] .gap-lg-2,html[data-netbox-color-mode=light] .gap-lg-2{gap:.5rem!important}html .gap-lg-3,html[data-netbox-color-mode=dark] .gap-lg-3,html[data-netbox-color-mode=light] .gap-lg-3{gap:1rem!important}html .gap-lg-4,html[data-netbox-color-mode=dark] .gap-lg-4,html[data-netbox-color-mode=light] .gap-lg-4{gap:1.5rem!important}html .gap-lg-5,html[data-netbox-color-mode=dark] .gap-lg-5,html[data-netbox-color-mode=light] .gap-lg-5{gap:3rem!important}html .justify-content-lg-start,html[data-netbox-color-mode=dark] .justify-content-lg-start,html[data-netbox-color-mode=light] .justify-content-lg-start{justify-content:flex-start!important}html .justify-content-lg-end,html[data-netbox-color-mode=dark] .justify-content-lg-end,html[data-netbox-color-mode=light] .justify-content-lg-end{justify-content:flex-end!important}html .justify-content-lg-center,html[data-netbox-color-mode=dark] .justify-content-lg-center,html[data-netbox-color-mode=light] .justify-content-lg-center{justify-content:center!important}html .justify-content-lg-between,html[data-netbox-color-mode=dark] .justify-content-lg-between,html[data-netbox-color-mode=light] .justify-content-lg-between{justify-content:space-between!important}html .justify-content-lg-around,html[data-netbox-color-mode=dark] .justify-content-lg-around,html[data-netbox-color-mode=light] .justify-content-lg-around{justify-content:space-around!important}html .justify-content-lg-evenly,html[data-netbox-color-mode=dark] .justify-content-lg-evenly,html[data-netbox-color-mode=light] .justify-content-lg-evenly{justify-content:space-evenly!important}html .align-items-lg-start,html[data-netbox-color-mode=dark] .align-items-lg-start,html[data-netbox-color-mode=light] .align-items-lg-start{align-items:flex-start!important}html .align-items-lg-end,html[data-netbox-color-mode=dark] .align-items-lg-end,html[data-netbox-color-mode=light] .align-items-lg-end{align-items:flex-end!important}html .align-items-lg-center,html[data-netbox-color-mode=dark] .align-items-lg-center,html[data-netbox-color-mode=light] .align-items-lg-center{align-items:center!important}html .align-items-lg-baseline,html[data-netbox-color-mode=dark] .align-items-lg-baseline,html[data-netbox-color-mode=light] .align-items-lg-baseline{align-items:baseline!important}html .align-items-lg-stretch,html[data-netbox-color-mode=dark] .align-items-lg-stretch,html[data-netbox-color-mode=light] .align-items-lg-stretch{align-items:stretch!important}html .align-content-lg-start,html[data-netbox-color-mode=dark] .align-content-lg-start,html[data-netbox-color-mode=light] .align-content-lg-start{align-content:flex-start!important}html .align-content-lg-end,html[data-netbox-color-mode=dark] .align-content-lg-end,html[data-netbox-color-mode=light] .align-content-lg-end{align-content:flex-end!important}html .align-content-lg-center,html[data-netbox-color-mode=dark] .align-content-lg-center,html[data-netbox-color-mode=light] .align-content-lg-center{align-content:center!important}html .align-content-lg-between,html[data-netbox-color-mode=dark] .align-content-lg-between,html[data-netbox-color-mode=light] .align-content-lg-between{align-content:space-between!important}html .align-content-lg-around,html[data-netbox-color-mode=dark] .align-content-lg-around,html[data-netbox-color-mode=light] .align-content-lg-around{align-content:space-around!important}html .align-content-lg-stretch,html[data-netbox-color-mode=dark] .align-content-lg-stretch,html[data-netbox-color-mode=light] .align-content-lg-stretch{align-content:stretch!important}html .align-self-lg-auto,html[data-netbox-color-mode=dark] .align-self-lg-auto,html[data-netbox-color-mode=light] .align-self-lg-auto{align-self:auto!important}html .align-self-lg-start,html[data-netbox-color-mode=dark] .align-self-lg-start,html[data-netbox-color-mode=light] .align-self-lg-start{align-self:flex-start!important}html .align-self-lg-end,html[data-netbox-color-mode=dark] .align-self-lg-end,html[data-netbox-color-mode=light] .align-self-lg-end{align-self:flex-end!important}html .align-self-lg-center,html[data-netbox-color-mode=dark] .align-self-lg-center,html[data-netbox-color-mode=light] .align-self-lg-center{align-self:center!important}html .align-self-lg-baseline,html[data-netbox-color-mode=dark] .align-self-lg-baseline,html[data-netbox-color-mode=light] .align-self-lg-baseline{align-self:baseline!important}html .align-self-lg-stretch,html[data-netbox-color-mode=dark] .align-self-lg-stretch,html[data-netbox-color-mode=light] .align-self-lg-stretch{align-self:stretch!important}html .order-lg-first,html[data-netbox-color-mode=dark] .order-lg-first,html[data-netbox-color-mode=light] .order-lg-first{order:-1!important}html .order-lg-0,html[data-netbox-color-mode=dark] .order-lg-0,html[data-netbox-color-mode=light] .order-lg-0{order:0!important}html .order-lg-1,html[data-netbox-color-mode=dark] .order-lg-1,html[data-netbox-color-mode=light] .order-lg-1{order:1!important}html .order-lg-2,html[data-netbox-color-mode=dark] .order-lg-2,html[data-netbox-color-mode=light] .order-lg-2{order:2!important}html .order-lg-3,html[data-netbox-color-mode=dark] .order-lg-3,html[data-netbox-color-mode=light] .order-lg-3{order:3!important}html .order-lg-4,html[data-netbox-color-mode=dark] .order-lg-4,html[data-netbox-color-mode=light] .order-lg-4{order:4!important}html .order-lg-5,html[data-netbox-color-mode=dark] .order-lg-5,html[data-netbox-color-mode=light] .order-lg-5{order:5!important}html .order-lg-last,html[data-netbox-color-mode=dark] .order-lg-last,html[data-netbox-color-mode=light] .order-lg-last{order:6!important}html .m-lg-0,html[data-netbox-color-mode=dark] .m-lg-0,html[data-netbox-color-mode=light] .m-lg-0{margin:0!important}html .m-lg-1,html[data-netbox-color-mode=dark] .m-lg-1,html[data-netbox-color-mode=light] .m-lg-1{margin:.25rem!important}html .m-lg-2,html[data-netbox-color-mode=dark] .m-lg-2,html[data-netbox-color-mode=light] .m-lg-2{margin:.5rem!important}html .m-lg-3,html[data-netbox-color-mode=dark] .m-lg-3,html[data-netbox-color-mode=light] .m-lg-3{margin:1rem!important}html .m-lg-4,html[data-netbox-color-mode=dark] .m-lg-4,html[data-netbox-color-mode=light] .m-lg-4{margin:1.5rem!important}html .m-lg-5,html[data-netbox-color-mode=dark] .m-lg-5,html[data-netbox-color-mode=light] .m-lg-5{margin:3rem!important}html .m-lg-auto,html[data-netbox-color-mode=dark] .m-lg-auto,html[data-netbox-color-mode=light] .m-lg-auto{margin:auto!important}html .mx-lg-0,html[data-netbox-color-mode=dark] .mx-lg-0,html[data-netbox-color-mode=light] .mx-lg-0{margin-right:0!important;margin-left:0!important}html .mx-lg-1,html[data-netbox-color-mode=dark] .mx-lg-1,html[data-netbox-color-mode=light] .mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-lg-2,html[data-netbox-color-mode=dark] .mx-lg-2,html[data-netbox-color-mode=light] .mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-lg-3,html[data-netbox-color-mode=dark] .mx-lg-3,html[data-netbox-color-mode=light] .mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-lg-4,html[data-netbox-color-mode=dark] .mx-lg-4,html[data-netbox-color-mode=light] .mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-lg-5,html[data-netbox-color-mode=dark] .mx-lg-5,html[data-netbox-color-mode=light] .mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-lg-auto,html[data-netbox-color-mode=dark] .mx-lg-auto,html[data-netbox-color-mode=light] .mx-lg-auto{margin-right:auto!important;margin-left:auto!important}html .my-lg-0,html[data-netbox-color-mode=dark] .my-lg-0,html[data-netbox-color-mode=light] .my-lg-0{margin-top:0!important;margin-bottom:0!important}html .my-lg-1,html[data-netbox-color-mode=dark] .my-lg-1,html[data-netbox-color-mode=light] .my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-lg-2,html[data-netbox-color-mode=dark] .my-lg-2,html[data-netbox-color-mode=light] .my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-lg-3,html[data-netbox-color-mode=dark] .my-lg-3,html[data-netbox-color-mode=light] .my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-lg-4,html[data-netbox-color-mode=dark] .my-lg-4,html[data-netbox-color-mode=light] .my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-lg-5,html[data-netbox-color-mode=dark] .my-lg-5,html[data-netbox-color-mode=light] .my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-lg-auto,html[data-netbox-color-mode=dark] .my-lg-auto,html[data-netbox-color-mode=light] .my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-lg-0,html[data-netbox-color-mode=dark] .mt-lg-0,html[data-netbox-color-mode=light] .mt-lg-0{margin-top:0!important}html .mt-lg-1,html[data-netbox-color-mode=dark] .mt-lg-1,html[data-netbox-color-mode=light] .mt-lg-1{margin-top:.25rem!important}html .mt-lg-2,html[data-netbox-color-mode=dark] .mt-lg-2,html[data-netbox-color-mode=light] .mt-lg-2{margin-top:.5rem!important}html .mt-lg-3,html[data-netbox-color-mode=dark] .mt-lg-3,html[data-netbox-color-mode=light] .mt-lg-3{margin-top:1rem!important}html .mt-lg-4,html[data-netbox-color-mode=dark] .mt-lg-4,html[data-netbox-color-mode=light] .mt-lg-4{margin-top:1.5rem!important}html .mt-lg-5,html[data-netbox-color-mode=dark] .mt-lg-5,html[data-netbox-color-mode=light] .mt-lg-5{margin-top:3rem!important}html .mt-lg-auto,html[data-netbox-color-mode=dark] .mt-lg-auto,html[data-netbox-color-mode=light] .mt-lg-auto{margin-top:auto!important}html .me-lg-0,html[data-netbox-color-mode=dark] .me-lg-0,html[data-netbox-color-mode=light] .me-lg-0{margin-right:0!important}html .me-lg-1,html[data-netbox-color-mode=dark] .me-lg-1,html[data-netbox-color-mode=light] .me-lg-1{margin-right:.25rem!important}html .me-lg-2,html[data-netbox-color-mode=dark] .me-lg-2,html[data-netbox-color-mode=light] .me-lg-2{margin-right:.5rem!important}html .me-lg-3,html[data-netbox-color-mode=dark] .me-lg-3,html[data-netbox-color-mode=light] .me-lg-3{margin-right:1rem!important}html .me-lg-4,html[data-netbox-color-mode=dark] .me-lg-4,html[data-netbox-color-mode=light] .me-lg-4{margin-right:1.5rem!important}html .me-lg-5,html[data-netbox-color-mode=dark] .me-lg-5,html[data-netbox-color-mode=light] .me-lg-5{margin-right:3rem!important}html .me-lg-auto,html[data-netbox-color-mode=dark] .me-lg-auto,html[data-netbox-color-mode=light] .me-lg-auto{margin-right:auto!important}html .mb-lg-0,html[data-netbox-color-mode=dark] .mb-lg-0,html[data-netbox-color-mode=light] .mb-lg-0{margin-bottom:0!important}html .mb-lg-1,html[data-netbox-color-mode=dark] .mb-lg-1,html[data-netbox-color-mode=light] .mb-lg-1{margin-bottom:.25rem!important}html .mb-lg-2,html[data-netbox-color-mode=dark] .mb-lg-2,html[data-netbox-color-mode=light] .mb-lg-2{margin-bottom:.5rem!important}html .mb-lg-3,html[data-netbox-color-mode=dark] .mb-lg-3,html[data-netbox-color-mode=light] .mb-lg-3{margin-bottom:1rem!important}html .mb-lg-4,html[data-netbox-color-mode=dark] .mb-lg-4,html[data-netbox-color-mode=light] .mb-lg-4{margin-bottom:1.5rem!important}html .mb-lg-5,html[data-netbox-color-mode=dark] .mb-lg-5,html[data-netbox-color-mode=light] .mb-lg-5{margin-bottom:3rem!important}html .mb-lg-auto,html[data-netbox-color-mode=dark] .mb-lg-auto,html[data-netbox-color-mode=light] .mb-lg-auto{margin-bottom:auto!important}html .ms-lg-0,html[data-netbox-color-mode=dark] .ms-lg-0,html[data-netbox-color-mode=light] .ms-lg-0{margin-left:0!important}html .ms-lg-1,html[data-netbox-color-mode=dark] .ms-lg-1,html[data-netbox-color-mode=light] .ms-lg-1{margin-left:.25rem!important}html .ms-lg-2,html[data-netbox-color-mode=dark] .ms-lg-2,html[data-netbox-color-mode=light] .ms-lg-2{margin-left:.5rem!important}html .ms-lg-3,html[data-netbox-color-mode=dark] .ms-lg-3,html[data-netbox-color-mode=light] .ms-lg-3{margin-left:1rem!important}html .ms-lg-4,html[data-netbox-color-mode=dark] .ms-lg-4,html[data-netbox-color-mode=light] .ms-lg-4{margin-left:1.5rem!important}html .ms-lg-5,html[data-netbox-color-mode=dark] .ms-lg-5,html[data-netbox-color-mode=light] .ms-lg-5{margin-left:3rem!important}html .ms-lg-auto,html[data-netbox-color-mode=dark] .ms-lg-auto,html[data-netbox-color-mode=light] .ms-lg-auto{margin-left:auto!important}html .p-lg-0,html[data-netbox-color-mode=dark] .p-lg-0,html[data-netbox-color-mode=light] .p-lg-0{padding:0!important}html .p-lg-1,html[data-netbox-color-mode=dark] .p-lg-1,html[data-netbox-color-mode=light] .p-lg-1{padding:.25rem!important}html .p-lg-2,html[data-netbox-color-mode=dark] .p-lg-2,html[data-netbox-color-mode=light] .p-lg-2{padding:.5rem!important}html .p-lg-3,html[data-netbox-color-mode=dark] .p-lg-3,html[data-netbox-color-mode=light] .p-lg-3{padding:1rem!important}html .p-lg-4,html[data-netbox-color-mode=dark] .p-lg-4,html[data-netbox-color-mode=light] .p-lg-4{padding:1.5rem!important}html .p-lg-5,html[data-netbox-color-mode=dark] .p-lg-5,html[data-netbox-color-mode=light] .p-lg-5{padding:3rem!important}html .px-lg-0,html[data-netbox-color-mode=dark] .px-lg-0,html[data-netbox-color-mode=light] .px-lg-0{padding-right:0!important;padding-left:0!important}html .px-lg-1,html[data-netbox-color-mode=dark] .px-lg-1,html[data-netbox-color-mode=light] .px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-lg-2,html[data-netbox-color-mode=dark] .px-lg-2,html[data-netbox-color-mode=light] .px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-lg-3,html[data-netbox-color-mode=dark] .px-lg-3,html[data-netbox-color-mode=light] .px-lg-3{padding-right:1rem!important;padding-left:1rem!important}html .px-lg-4,html[data-netbox-color-mode=dark] .px-lg-4,html[data-netbox-color-mode=light] .px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-lg-5,html[data-netbox-color-mode=dark] .px-lg-5,html[data-netbox-color-mode=light] .px-lg-5{padding-right:3rem!important;padding-left:3rem!important}html .py-lg-0,html[data-netbox-color-mode=dark] .py-lg-0,html[data-netbox-color-mode=light] .py-lg-0{padding-top:0!important;padding-bottom:0!important}html .py-lg-1,html[data-netbox-color-mode=dark] .py-lg-1,html[data-netbox-color-mode=light] .py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-lg-2,html[data-netbox-color-mode=dark] .py-lg-2,html[data-netbox-color-mode=light] .py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-lg-3,html[data-netbox-color-mode=dark] .py-lg-3,html[data-netbox-color-mode=light] .py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-lg-4,html[data-netbox-color-mode=dark] .py-lg-4,html[data-netbox-color-mode=light] .py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-lg-5,html[data-netbox-color-mode=dark] .py-lg-5,html[data-netbox-color-mode=light] .py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-lg-0,html[data-netbox-color-mode=dark] .pt-lg-0,html[data-netbox-color-mode=light] .pt-lg-0{padding-top:0!important}html .pt-lg-1,html[data-netbox-color-mode=dark] .pt-lg-1,html[data-netbox-color-mode=light] .pt-lg-1{padding-top:.25rem!important}html .pt-lg-2,html[data-netbox-color-mode=dark] .pt-lg-2,html[data-netbox-color-mode=light] .pt-lg-2{padding-top:.5rem!important}html .pt-lg-3,html[data-netbox-color-mode=dark] .pt-lg-3,html[data-netbox-color-mode=light] .pt-lg-3{padding-top:1rem!important}html .pt-lg-4,html[data-netbox-color-mode=dark] .pt-lg-4,html[data-netbox-color-mode=light] .pt-lg-4{padding-top:1.5rem!important}html .pt-lg-5,html[data-netbox-color-mode=dark] .pt-lg-5,html[data-netbox-color-mode=light] .pt-lg-5{padding-top:3rem!important}html .pe-lg-0,html[data-netbox-color-mode=dark] .pe-lg-0,html[data-netbox-color-mode=light] .pe-lg-0{padding-right:0!important}html .pe-lg-1,html[data-netbox-color-mode=dark] .pe-lg-1,html[data-netbox-color-mode=light] .pe-lg-1{padding-right:.25rem!important}html .pe-lg-2,html[data-netbox-color-mode=dark] .pe-lg-2,html[data-netbox-color-mode=light] .pe-lg-2{padding-right:.5rem!important}html .pe-lg-3,html[data-netbox-color-mode=dark] .pe-lg-3,html[data-netbox-color-mode=light] .pe-lg-3{padding-right:1rem!important}html .pe-lg-4,html[data-netbox-color-mode=dark] .pe-lg-4,html[data-netbox-color-mode=light] .pe-lg-4{padding-right:1.5rem!important}html .pe-lg-5,html[data-netbox-color-mode=dark] .pe-lg-5,html[data-netbox-color-mode=light] .pe-lg-5{padding-right:3rem!important}html .pb-lg-0,html[data-netbox-color-mode=dark] .pb-lg-0,html[data-netbox-color-mode=light] .pb-lg-0{padding-bottom:0!important}html .pb-lg-1,html[data-netbox-color-mode=dark] .pb-lg-1,html[data-netbox-color-mode=light] .pb-lg-1{padding-bottom:.25rem!important}html .pb-lg-2,html[data-netbox-color-mode=dark] .pb-lg-2,html[data-netbox-color-mode=light] .pb-lg-2{padding-bottom:.5rem!important}html .pb-lg-3,html[data-netbox-color-mode=dark] .pb-lg-3,html[data-netbox-color-mode=light] .pb-lg-3{padding-bottom:1rem!important}html .pb-lg-4,html[data-netbox-color-mode=dark] .pb-lg-4,html[data-netbox-color-mode=light] .pb-lg-4{padding-bottom:1.5rem!important}html .pb-lg-5,html[data-netbox-color-mode=dark] .pb-lg-5,html[data-netbox-color-mode=light] .pb-lg-5{padding-bottom:3rem!important}html .ps-lg-0,html[data-netbox-color-mode=dark] .ps-lg-0,html[data-netbox-color-mode=light] .ps-lg-0{padding-left:0!important}html .ps-lg-1,html[data-netbox-color-mode=dark] .ps-lg-1,html[data-netbox-color-mode=light] .ps-lg-1{padding-left:.25rem!important}html .ps-lg-2,html[data-netbox-color-mode=dark] .ps-lg-2,html[data-netbox-color-mode=light] .ps-lg-2{padding-left:.5rem!important}html .ps-lg-3,html[data-netbox-color-mode=dark] .ps-lg-3,html[data-netbox-color-mode=light] .ps-lg-3{padding-left:1rem!important}html .ps-lg-4,html[data-netbox-color-mode=dark] .ps-lg-4,html[data-netbox-color-mode=light] .ps-lg-4{padding-left:1.5rem!important}html .ps-lg-5,html[data-netbox-color-mode=dark] .ps-lg-5,html[data-netbox-color-mode=light] .ps-lg-5{padding-left:3rem!important}html .text-lg-start,html[data-netbox-color-mode=dark] .text-lg-start,html[data-netbox-color-mode=light] .text-lg-start{text-align:left!important}html .text-lg-end,html[data-netbox-color-mode=dark] .text-lg-end,html[data-netbox-color-mode=light] .text-lg-end{text-align:right!important}html .text-lg-center,html[data-netbox-color-mode=dark] .text-lg-center,html[data-netbox-color-mode=light] .text-lg-center{text-align:center!important}}@media print and (min-width: 1200px){html .float-xl-start,html[data-netbox-color-mode=dark] .float-xl-start,html[data-netbox-color-mode=light] .float-xl-start{float:left!important}html .float-xl-end,html[data-netbox-color-mode=dark] .float-xl-end,html[data-netbox-color-mode=light] .float-xl-end{float:right!important}html .float-xl-none,html[data-netbox-color-mode=dark] .float-xl-none,html[data-netbox-color-mode=light] .float-xl-none{float:none!important}html .d-xl-inline,html[data-netbox-color-mode=dark] .d-xl-inline,html[data-netbox-color-mode=light] .d-xl-inline{display:inline!important}html .d-xl-inline-block,html[data-netbox-color-mode=dark] .d-xl-inline-block,html[data-netbox-color-mode=light] .d-xl-inline-block{display:inline-block!important}html .d-xl-block,html[data-netbox-color-mode=dark] .d-xl-block,html[data-netbox-color-mode=light] .d-xl-block{display:block!important}html .d-xl-grid,html[data-netbox-color-mode=dark] .d-xl-grid,html[data-netbox-color-mode=light] .d-xl-grid{display:grid!important}html .d-xl-table,html[data-netbox-color-mode=dark] .d-xl-table,html[data-netbox-color-mode=light] .d-xl-table{display:table!important}html .d-xl-table-row,html[data-netbox-color-mode=dark] .d-xl-table-row,html[data-netbox-color-mode=light] .d-xl-table-row{display:table-row!important}html .d-xl-table-cell,html[data-netbox-color-mode=dark] .d-xl-table-cell,html[data-netbox-color-mode=light] .d-xl-table-cell{display:table-cell!important}html .d-xl-flex,html[data-netbox-color-mode=dark] .d-xl-flex,html[data-netbox-color-mode=light] .d-xl-flex{display:flex!important}html .d-xl-inline-flex,html[data-netbox-color-mode=dark] .d-xl-inline-flex,html[data-netbox-color-mode=light] .d-xl-inline-flex{display:inline-flex!important}html .d-xl-none,html[data-netbox-color-mode=dark] .d-xl-none,html[data-netbox-color-mode=light] .d-xl-none{display:none!important}html .flex-xl-fill,html[data-netbox-color-mode=dark] .flex-xl-fill,html[data-netbox-color-mode=light] .flex-xl-fill{flex:1 1 auto!important}html .flex-xl-row,html[data-netbox-color-mode=dark] .flex-xl-row,html[data-netbox-color-mode=light] .flex-xl-row{flex-direction:row!important}html .flex-xl-column,html[data-netbox-color-mode=dark] .flex-xl-column,html[data-netbox-color-mode=light] .flex-xl-column{flex-direction:column!important}html .flex-xl-row-reverse,html[data-netbox-color-mode=dark] .flex-xl-row-reverse,html[data-netbox-color-mode=light] .flex-xl-row-reverse{flex-direction:row-reverse!important}html .flex-xl-column-reverse,html[data-netbox-color-mode=dark] .flex-xl-column-reverse,html[data-netbox-color-mode=light] .flex-xl-column-reverse{flex-direction:column-reverse!important}html .flex-xl-grow-0,html[data-netbox-color-mode=dark] .flex-xl-grow-0,html[data-netbox-color-mode=light] .flex-xl-grow-0{flex-grow:0!important}html .flex-xl-grow-1,html[data-netbox-color-mode=dark] .flex-xl-grow-1,html[data-netbox-color-mode=light] .flex-xl-grow-1{flex-grow:1!important}html .flex-xl-shrink-0,html[data-netbox-color-mode=dark] .flex-xl-shrink-0,html[data-netbox-color-mode=light] .flex-xl-shrink-0{flex-shrink:0!important}html .flex-xl-shrink-1,html[data-netbox-color-mode=dark] .flex-xl-shrink-1,html[data-netbox-color-mode=light] .flex-xl-shrink-1{flex-shrink:1!important}html .flex-xl-wrap,html[data-netbox-color-mode=dark] .flex-xl-wrap,html[data-netbox-color-mode=light] .flex-xl-wrap{flex-wrap:wrap!important}html .flex-xl-nowrap,html[data-netbox-color-mode=dark] .flex-xl-nowrap,html[data-netbox-color-mode=light] .flex-xl-nowrap{flex-wrap:nowrap!important}html .flex-xl-wrap-reverse,html[data-netbox-color-mode=dark] .flex-xl-wrap-reverse,html[data-netbox-color-mode=light] .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-xl-0,html[data-netbox-color-mode=dark] .gap-xl-0,html[data-netbox-color-mode=light] .gap-xl-0{gap:0!important}html .gap-xl-1,html[data-netbox-color-mode=dark] .gap-xl-1,html[data-netbox-color-mode=light] .gap-xl-1{gap:.25rem!important}html .gap-xl-2,html[data-netbox-color-mode=dark] .gap-xl-2,html[data-netbox-color-mode=light] .gap-xl-2{gap:.5rem!important}html .gap-xl-3,html[data-netbox-color-mode=dark] .gap-xl-3,html[data-netbox-color-mode=light] .gap-xl-3{gap:1rem!important}html .gap-xl-4,html[data-netbox-color-mode=dark] .gap-xl-4,html[data-netbox-color-mode=light] .gap-xl-4{gap:1.5rem!important}html .gap-xl-5,html[data-netbox-color-mode=dark] .gap-xl-5,html[data-netbox-color-mode=light] .gap-xl-5{gap:3rem!important}html .justify-content-xl-start,html[data-netbox-color-mode=dark] .justify-content-xl-start,html[data-netbox-color-mode=light] .justify-content-xl-start{justify-content:flex-start!important}html .justify-content-xl-end,html[data-netbox-color-mode=dark] .justify-content-xl-end,html[data-netbox-color-mode=light] .justify-content-xl-end{justify-content:flex-end!important}html .justify-content-xl-center,html[data-netbox-color-mode=dark] .justify-content-xl-center,html[data-netbox-color-mode=light] .justify-content-xl-center{justify-content:center!important}html .justify-content-xl-between,html[data-netbox-color-mode=dark] .justify-content-xl-between,html[data-netbox-color-mode=light] .justify-content-xl-between{justify-content:space-between!important}html .justify-content-xl-around,html[data-netbox-color-mode=dark] .justify-content-xl-around,html[data-netbox-color-mode=light] .justify-content-xl-around{justify-content:space-around!important}html .justify-content-xl-evenly,html[data-netbox-color-mode=dark] .justify-content-xl-evenly,html[data-netbox-color-mode=light] .justify-content-xl-evenly{justify-content:space-evenly!important}html .align-items-xl-start,html[data-netbox-color-mode=dark] .align-items-xl-start,html[data-netbox-color-mode=light] .align-items-xl-start{align-items:flex-start!important}html .align-items-xl-end,html[data-netbox-color-mode=dark] .align-items-xl-end,html[data-netbox-color-mode=light] .align-items-xl-end{align-items:flex-end!important}html .align-items-xl-center,html[data-netbox-color-mode=dark] .align-items-xl-center,html[data-netbox-color-mode=light] .align-items-xl-center{align-items:center!important}html .align-items-xl-baseline,html[data-netbox-color-mode=dark] .align-items-xl-baseline,html[data-netbox-color-mode=light] .align-items-xl-baseline{align-items:baseline!important}html .align-items-xl-stretch,html[data-netbox-color-mode=dark] .align-items-xl-stretch,html[data-netbox-color-mode=light] .align-items-xl-stretch{align-items:stretch!important}html .align-content-xl-start,html[data-netbox-color-mode=dark] .align-content-xl-start,html[data-netbox-color-mode=light] .align-content-xl-start{align-content:flex-start!important}html .align-content-xl-end,html[data-netbox-color-mode=dark] .align-content-xl-end,html[data-netbox-color-mode=light] .align-content-xl-end{align-content:flex-end!important}html .align-content-xl-center,html[data-netbox-color-mode=dark] .align-content-xl-center,html[data-netbox-color-mode=light] .align-content-xl-center{align-content:center!important}html .align-content-xl-between,html[data-netbox-color-mode=dark] .align-content-xl-between,html[data-netbox-color-mode=light] .align-content-xl-between{align-content:space-between!important}html .align-content-xl-around,html[data-netbox-color-mode=dark] .align-content-xl-around,html[data-netbox-color-mode=light] .align-content-xl-around{align-content:space-around!important}html .align-content-xl-stretch,html[data-netbox-color-mode=dark] .align-content-xl-stretch,html[data-netbox-color-mode=light] .align-content-xl-stretch{align-content:stretch!important}html .align-self-xl-auto,html[data-netbox-color-mode=dark] .align-self-xl-auto,html[data-netbox-color-mode=light] .align-self-xl-auto{align-self:auto!important}html .align-self-xl-start,html[data-netbox-color-mode=dark] .align-self-xl-start,html[data-netbox-color-mode=light] .align-self-xl-start{align-self:flex-start!important}html .align-self-xl-end,html[data-netbox-color-mode=dark] .align-self-xl-end,html[data-netbox-color-mode=light] .align-self-xl-end{align-self:flex-end!important}html .align-self-xl-center,html[data-netbox-color-mode=dark] .align-self-xl-center,html[data-netbox-color-mode=light] .align-self-xl-center{align-self:center!important}html .align-self-xl-baseline,html[data-netbox-color-mode=dark] .align-self-xl-baseline,html[data-netbox-color-mode=light] .align-self-xl-baseline{align-self:baseline!important}html .align-self-xl-stretch,html[data-netbox-color-mode=dark] .align-self-xl-stretch,html[data-netbox-color-mode=light] .align-self-xl-stretch{align-self:stretch!important}html .order-xl-first,html[data-netbox-color-mode=dark] .order-xl-first,html[data-netbox-color-mode=light] .order-xl-first{order:-1!important}html .order-xl-0,html[data-netbox-color-mode=dark] .order-xl-0,html[data-netbox-color-mode=light] .order-xl-0{order:0!important}html .order-xl-1,html[data-netbox-color-mode=dark] .order-xl-1,html[data-netbox-color-mode=light] .order-xl-1{order:1!important}html .order-xl-2,html[data-netbox-color-mode=dark] .order-xl-2,html[data-netbox-color-mode=light] .order-xl-2{order:2!important}html .order-xl-3,html[data-netbox-color-mode=dark] .order-xl-3,html[data-netbox-color-mode=light] .order-xl-3{order:3!important}html .order-xl-4,html[data-netbox-color-mode=dark] .order-xl-4,html[data-netbox-color-mode=light] .order-xl-4{order:4!important}html .order-xl-5,html[data-netbox-color-mode=dark] .order-xl-5,html[data-netbox-color-mode=light] .order-xl-5{order:5!important}html .order-xl-last,html[data-netbox-color-mode=dark] .order-xl-last,html[data-netbox-color-mode=light] .order-xl-last{order:6!important}html .m-xl-0,html[data-netbox-color-mode=dark] .m-xl-0,html[data-netbox-color-mode=light] .m-xl-0{margin:0!important}html .m-xl-1,html[data-netbox-color-mode=dark] .m-xl-1,html[data-netbox-color-mode=light] .m-xl-1{margin:.25rem!important}html .m-xl-2,html[data-netbox-color-mode=dark] .m-xl-2,html[data-netbox-color-mode=light] .m-xl-2{margin:.5rem!important}html .m-xl-3,html[data-netbox-color-mode=dark] .m-xl-3,html[data-netbox-color-mode=light] .m-xl-3{margin:1rem!important}html .m-xl-4,html[data-netbox-color-mode=dark] .m-xl-4,html[data-netbox-color-mode=light] .m-xl-4{margin:1.5rem!important}html .m-xl-5,html[data-netbox-color-mode=dark] .m-xl-5,html[data-netbox-color-mode=light] .m-xl-5{margin:3rem!important}html .m-xl-auto,html[data-netbox-color-mode=dark] .m-xl-auto,html[data-netbox-color-mode=light] .m-xl-auto{margin:auto!important}html .mx-xl-0,html[data-netbox-color-mode=dark] .mx-xl-0,html[data-netbox-color-mode=light] .mx-xl-0{margin-right:0!important;margin-left:0!important}html .mx-xl-1,html[data-netbox-color-mode=dark] .mx-xl-1,html[data-netbox-color-mode=light] .mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-xl-2,html[data-netbox-color-mode=dark] .mx-xl-2,html[data-netbox-color-mode=light] .mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-xl-3,html[data-netbox-color-mode=dark] .mx-xl-3,html[data-netbox-color-mode=light] .mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-xl-4,html[data-netbox-color-mode=dark] .mx-xl-4,html[data-netbox-color-mode=light] .mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-xl-5,html[data-netbox-color-mode=dark] .mx-xl-5,html[data-netbox-color-mode=light] .mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-xl-auto,html[data-netbox-color-mode=dark] .mx-xl-auto,html[data-netbox-color-mode=light] .mx-xl-auto{margin-right:auto!important;margin-left:auto!important}html .my-xl-0,html[data-netbox-color-mode=dark] .my-xl-0,html[data-netbox-color-mode=light] .my-xl-0{margin-top:0!important;margin-bottom:0!important}html .my-xl-1,html[data-netbox-color-mode=dark] .my-xl-1,html[data-netbox-color-mode=light] .my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-xl-2,html[data-netbox-color-mode=dark] .my-xl-2,html[data-netbox-color-mode=light] .my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-xl-3,html[data-netbox-color-mode=dark] .my-xl-3,html[data-netbox-color-mode=light] .my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-xl-4,html[data-netbox-color-mode=dark] .my-xl-4,html[data-netbox-color-mode=light] .my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-xl-5,html[data-netbox-color-mode=dark] .my-xl-5,html[data-netbox-color-mode=light] .my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-xl-auto,html[data-netbox-color-mode=dark] .my-xl-auto,html[data-netbox-color-mode=light] .my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-xl-0,html[data-netbox-color-mode=dark] .mt-xl-0,html[data-netbox-color-mode=light] .mt-xl-0{margin-top:0!important}html .mt-xl-1,html[data-netbox-color-mode=dark] .mt-xl-1,html[data-netbox-color-mode=light] .mt-xl-1{margin-top:.25rem!important}html .mt-xl-2,html[data-netbox-color-mode=dark] .mt-xl-2,html[data-netbox-color-mode=light] .mt-xl-2{margin-top:.5rem!important}html .mt-xl-3,html[data-netbox-color-mode=dark] .mt-xl-3,html[data-netbox-color-mode=light] .mt-xl-3{margin-top:1rem!important}html .mt-xl-4,html[data-netbox-color-mode=dark] .mt-xl-4,html[data-netbox-color-mode=light] .mt-xl-4{margin-top:1.5rem!important}html .mt-xl-5,html[data-netbox-color-mode=dark] .mt-xl-5,html[data-netbox-color-mode=light] .mt-xl-5{margin-top:3rem!important}html .mt-xl-auto,html[data-netbox-color-mode=dark] .mt-xl-auto,html[data-netbox-color-mode=light] .mt-xl-auto{margin-top:auto!important}html .me-xl-0,html[data-netbox-color-mode=dark] .me-xl-0,html[data-netbox-color-mode=light] .me-xl-0{margin-right:0!important}html .me-xl-1,html[data-netbox-color-mode=dark] .me-xl-1,html[data-netbox-color-mode=light] .me-xl-1{margin-right:.25rem!important}html .me-xl-2,html[data-netbox-color-mode=dark] .me-xl-2,html[data-netbox-color-mode=light] .me-xl-2{margin-right:.5rem!important}html .me-xl-3,html[data-netbox-color-mode=dark] .me-xl-3,html[data-netbox-color-mode=light] .me-xl-3{margin-right:1rem!important}html .me-xl-4,html[data-netbox-color-mode=dark] .me-xl-4,html[data-netbox-color-mode=light] .me-xl-4{margin-right:1.5rem!important}html .me-xl-5,html[data-netbox-color-mode=dark] .me-xl-5,html[data-netbox-color-mode=light] .me-xl-5{margin-right:3rem!important}html .me-xl-auto,html[data-netbox-color-mode=dark] .me-xl-auto,html[data-netbox-color-mode=light] .me-xl-auto{margin-right:auto!important}html .mb-xl-0,html[data-netbox-color-mode=dark] .mb-xl-0,html[data-netbox-color-mode=light] .mb-xl-0{margin-bottom:0!important}html .mb-xl-1,html[data-netbox-color-mode=dark] .mb-xl-1,html[data-netbox-color-mode=light] .mb-xl-1{margin-bottom:.25rem!important}html .mb-xl-2,html[data-netbox-color-mode=dark] .mb-xl-2,html[data-netbox-color-mode=light] .mb-xl-2{margin-bottom:.5rem!important}html .mb-xl-3,html[data-netbox-color-mode=dark] .mb-xl-3,html[data-netbox-color-mode=light] .mb-xl-3{margin-bottom:1rem!important}html .mb-xl-4,html[data-netbox-color-mode=dark] .mb-xl-4,html[data-netbox-color-mode=light] .mb-xl-4{margin-bottom:1.5rem!important}html .mb-xl-5,html[data-netbox-color-mode=dark] .mb-xl-5,html[data-netbox-color-mode=light] .mb-xl-5{margin-bottom:3rem!important}html .mb-xl-auto,html[data-netbox-color-mode=dark] .mb-xl-auto,html[data-netbox-color-mode=light] .mb-xl-auto{margin-bottom:auto!important}html .ms-xl-0,html[data-netbox-color-mode=dark] .ms-xl-0,html[data-netbox-color-mode=light] .ms-xl-0{margin-left:0!important}html .ms-xl-1,html[data-netbox-color-mode=dark] .ms-xl-1,html[data-netbox-color-mode=light] .ms-xl-1{margin-left:.25rem!important}html .ms-xl-2,html[data-netbox-color-mode=dark] .ms-xl-2,html[data-netbox-color-mode=light] .ms-xl-2{margin-left:.5rem!important}html .ms-xl-3,html[data-netbox-color-mode=dark] .ms-xl-3,html[data-netbox-color-mode=light] .ms-xl-3{margin-left:1rem!important}html .ms-xl-4,html[data-netbox-color-mode=dark] .ms-xl-4,html[data-netbox-color-mode=light] .ms-xl-4{margin-left:1.5rem!important}html .ms-xl-5,html[data-netbox-color-mode=dark] .ms-xl-5,html[data-netbox-color-mode=light] .ms-xl-5{margin-left:3rem!important}html .ms-xl-auto,html[data-netbox-color-mode=dark] .ms-xl-auto,html[data-netbox-color-mode=light] .ms-xl-auto{margin-left:auto!important}html .p-xl-0,html[data-netbox-color-mode=dark] .p-xl-0,html[data-netbox-color-mode=light] .p-xl-0{padding:0!important}html .p-xl-1,html[data-netbox-color-mode=dark] .p-xl-1,html[data-netbox-color-mode=light] .p-xl-1{padding:.25rem!important}html .p-xl-2,html[data-netbox-color-mode=dark] .p-xl-2,html[data-netbox-color-mode=light] .p-xl-2{padding:.5rem!important}html .p-xl-3,html[data-netbox-color-mode=dark] .p-xl-3,html[data-netbox-color-mode=light] .p-xl-3{padding:1rem!important}html .p-xl-4,html[data-netbox-color-mode=dark] .p-xl-4,html[data-netbox-color-mode=light] .p-xl-4{padding:1.5rem!important}html .p-xl-5,html[data-netbox-color-mode=dark] .p-xl-5,html[data-netbox-color-mode=light] .p-xl-5{padding:3rem!important}html .px-xl-0,html[data-netbox-color-mode=dark] .px-xl-0,html[data-netbox-color-mode=light] .px-xl-0{padding-right:0!important;padding-left:0!important}html .px-xl-1,html[data-netbox-color-mode=dark] .px-xl-1,html[data-netbox-color-mode=light] .px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-xl-2,html[data-netbox-color-mode=dark] .px-xl-2,html[data-netbox-color-mode=light] .px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-xl-3,html[data-netbox-color-mode=dark] .px-xl-3,html[data-netbox-color-mode=light] .px-xl-3{padding-right:1rem!important;padding-left:1rem!important}html .px-xl-4,html[data-netbox-color-mode=dark] .px-xl-4,html[data-netbox-color-mode=light] .px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-xl-5,html[data-netbox-color-mode=dark] .px-xl-5,html[data-netbox-color-mode=light] .px-xl-5{padding-right:3rem!important;padding-left:3rem!important}html .py-xl-0,html[data-netbox-color-mode=dark] .py-xl-0,html[data-netbox-color-mode=light] .py-xl-0{padding-top:0!important;padding-bottom:0!important}html .py-xl-1,html[data-netbox-color-mode=dark] .py-xl-1,html[data-netbox-color-mode=light] .py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-xl-2,html[data-netbox-color-mode=dark] .py-xl-2,html[data-netbox-color-mode=light] .py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-xl-3,html[data-netbox-color-mode=dark] .py-xl-3,html[data-netbox-color-mode=light] .py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-xl-4,html[data-netbox-color-mode=dark] .py-xl-4,html[data-netbox-color-mode=light] .py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-xl-5,html[data-netbox-color-mode=dark] .py-xl-5,html[data-netbox-color-mode=light] .py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-xl-0,html[data-netbox-color-mode=dark] .pt-xl-0,html[data-netbox-color-mode=light] .pt-xl-0{padding-top:0!important}html .pt-xl-1,html[data-netbox-color-mode=dark] .pt-xl-1,html[data-netbox-color-mode=light] .pt-xl-1{padding-top:.25rem!important}html .pt-xl-2,html[data-netbox-color-mode=dark] .pt-xl-2,html[data-netbox-color-mode=light] .pt-xl-2{padding-top:.5rem!important}html .pt-xl-3,html[data-netbox-color-mode=dark] .pt-xl-3,html[data-netbox-color-mode=light] .pt-xl-3{padding-top:1rem!important}html .pt-xl-4,html[data-netbox-color-mode=dark] .pt-xl-4,html[data-netbox-color-mode=light] .pt-xl-4{padding-top:1.5rem!important}html .pt-xl-5,html[data-netbox-color-mode=dark] .pt-xl-5,html[data-netbox-color-mode=light] .pt-xl-5{padding-top:3rem!important}html .pe-xl-0,html[data-netbox-color-mode=dark] .pe-xl-0,html[data-netbox-color-mode=light] .pe-xl-0{padding-right:0!important}html .pe-xl-1,html[data-netbox-color-mode=dark] .pe-xl-1,html[data-netbox-color-mode=light] .pe-xl-1{padding-right:.25rem!important}html .pe-xl-2,html[data-netbox-color-mode=dark] .pe-xl-2,html[data-netbox-color-mode=light] .pe-xl-2{padding-right:.5rem!important}html .pe-xl-3,html[data-netbox-color-mode=dark] .pe-xl-3,html[data-netbox-color-mode=light] .pe-xl-3{padding-right:1rem!important}html .pe-xl-4,html[data-netbox-color-mode=dark] .pe-xl-4,html[data-netbox-color-mode=light] .pe-xl-4{padding-right:1.5rem!important}html .pe-xl-5,html[data-netbox-color-mode=dark] .pe-xl-5,html[data-netbox-color-mode=light] .pe-xl-5{padding-right:3rem!important}html .pb-xl-0,html[data-netbox-color-mode=dark] .pb-xl-0,html[data-netbox-color-mode=light] .pb-xl-0{padding-bottom:0!important}html .pb-xl-1,html[data-netbox-color-mode=dark] .pb-xl-1,html[data-netbox-color-mode=light] .pb-xl-1{padding-bottom:.25rem!important}html .pb-xl-2,html[data-netbox-color-mode=dark] .pb-xl-2,html[data-netbox-color-mode=light] .pb-xl-2{padding-bottom:.5rem!important}html .pb-xl-3,html[data-netbox-color-mode=dark] .pb-xl-3,html[data-netbox-color-mode=light] .pb-xl-3{padding-bottom:1rem!important}html .pb-xl-4,html[data-netbox-color-mode=dark] .pb-xl-4,html[data-netbox-color-mode=light] .pb-xl-4{padding-bottom:1.5rem!important}html .pb-xl-5,html[data-netbox-color-mode=dark] .pb-xl-5,html[data-netbox-color-mode=light] .pb-xl-5{padding-bottom:3rem!important}html .ps-xl-0,html[data-netbox-color-mode=dark] .ps-xl-0,html[data-netbox-color-mode=light] .ps-xl-0{padding-left:0!important}html .ps-xl-1,html[data-netbox-color-mode=dark] .ps-xl-1,html[data-netbox-color-mode=light] .ps-xl-1{padding-left:.25rem!important}html .ps-xl-2,html[data-netbox-color-mode=dark] .ps-xl-2,html[data-netbox-color-mode=light] .ps-xl-2{padding-left:.5rem!important}html .ps-xl-3,html[data-netbox-color-mode=dark] .ps-xl-3,html[data-netbox-color-mode=light] .ps-xl-3{padding-left:1rem!important}html .ps-xl-4,html[data-netbox-color-mode=dark] .ps-xl-4,html[data-netbox-color-mode=light] .ps-xl-4{padding-left:1.5rem!important}html .ps-xl-5,html[data-netbox-color-mode=dark] .ps-xl-5,html[data-netbox-color-mode=light] .ps-xl-5{padding-left:3rem!important}html .text-xl-start,html[data-netbox-color-mode=dark] .text-xl-start,html[data-netbox-color-mode=light] .text-xl-start{text-align:left!important}html .text-xl-end,html[data-netbox-color-mode=dark] .text-xl-end,html[data-netbox-color-mode=light] .text-xl-end{text-align:right!important}html .text-xl-center,html[data-netbox-color-mode=dark] .text-xl-center,html[data-netbox-color-mode=light] .text-xl-center{text-align:center!important}}@media print and (min-width: 1400px){html .float-xxl-start,html[data-netbox-color-mode=dark] .float-xxl-start,html[data-netbox-color-mode=light] .float-xxl-start{float:left!important}html .float-xxl-end,html[data-netbox-color-mode=dark] .float-xxl-end,html[data-netbox-color-mode=light] .float-xxl-end{float:right!important}html .float-xxl-none,html[data-netbox-color-mode=dark] .float-xxl-none,html[data-netbox-color-mode=light] .float-xxl-none{float:none!important}html .d-xxl-inline,html[data-netbox-color-mode=dark] .d-xxl-inline,html[data-netbox-color-mode=light] .d-xxl-inline{display:inline!important}html .d-xxl-inline-block,html[data-netbox-color-mode=dark] .d-xxl-inline-block,html[data-netbox-color-mode=light] .d-xxl-inline-block{display:inline-block!important}html .d-xxl-block,html[data-netbox-color-mode=dark] .d-xxl-block,html[data-netbox-color-mode=light] .d-xxl-block{display:block!important}html .d-xxl-grid,html[data-netbox-color-mode=dark] .d-xxl-grid,html[data-netbox-color-mode=light] .d-xxl-grid{display:grid!important}html .d-xxl-table,html[data-netbox-color-mode=dark] .d-xxl-table,html[data-netbox-color-mode=light] .d-xxl-table{display:table!important}html .d-xxl-table-row,html[data-netbox-color-mode=dark] .d-xxl-table-row,html[data-netbox-color-mode=light] .d-xxl-table-row{display:table-row!important}html .d-xxl-table-cell,html[data-netbox-color-mode=dark] .d-xxl-table-cell,html[data-netbox-color-mode=light] .d-xxl-table-cell{display:table-cell!important}html .d-xxl-flex,html[data-netbox-color-mode=dark] .d-xxl-flex,html[data-netbox-color-mode=light] .d-xxl-flex{display:flex!important}html .d-xxl-inline-flex,html[data-netbox-color-mode=dark] .d-xxl-inline-flex,html[data-netbox-color-mode=light] .d-xxl-inline-flex{display:inline-flex!important}html .d-xxl-none,html[data-netbox-color-mode=dark] .d-xxl-none,html[data-netbox-color-mode=light] .d-xxl-none{display:none!important}html .flex-xxl-fill,html[data-netbox-color-mode=dark] .flex-xxl-fill,html[data-netbox-color-mode=light] .flex-xxl-fill{flex:1 1 auto!important}html .flex-xxl-row,html[data-netbox-color-mode=dark] .flex-xxl-row,html[data-netbox-color-mode=light] .flex-xxl-row{flex-direction:row!important}html .flex-xxl-column,html[data-netbox-color-mode=dark] .flex-xxl-column,html[data-netbox-color-mode=light] .flex-xxl-column{flex-direction:column!important}html .flex-xxl-row-reverse,html[data-netbox-color-mode=dark] .flex-xxl-row-reverse,html[data-netbox-color-mode=light] .flex-xxl-row-reverse{flex-direction:row-reverse!important}html .flex-xxl-column-reverse,html[data-netbox-color-mode=dark] .flex-xxl-column-reverse,html[data-netbox-color-mode=light] .flex-xxl-column-reverse{flex-direction:column-reverse!important}html .flex-xxl-grow-0,html[data-netbox-color-mode=dark] .flex-xxl-grow-0,html[data-netbox-color-mode=light] .flex-xxl-grow-0{flex-grow:0!important}html .flex-xxl-grow-1,html[data-netbox-color-mode=dark] .flex-xxl-grow-1,html[data-netbox-color-mode=light] .flex-xxl-grow-1{flex-grow:1!important}html .flex-xxl-shrink-0,html[data-netbox-color-mode=dark] .flex-xxl-shrink-0,html[data-netbox-color-mode=light] .flex-xxl-shrink-0{flex-shrink:0!important}html .flex-xxl-shrink-1,html[data-netbox-color-mode=dark] .flex-xxl-shrink-1,html[data-netbox-color-mode=light] .flex-xxl-shrink-1{flex-shrink:1!important}html .flex-xxl-wrap,html[data-netbox-color-mode=dark] .flex-xxl-wrap,html[data-netbox-color-mode=light] .flex-xxl-wrap{flex-wrap:wrap!important}html .flex-xxl-nowrap,html[data-netbox-color-mode=dark] .flex-xxl-nowrap,html[data-netbox-color-mode=light] .flex-xxl-nowrap{flex-wrap:nowrap!important}html .flex-xxl-wrap-reverse,html[data-netbox-color-mode=dark] .flex-xxl-wrap-reverse,html[data-netbox-color-mode=light] .flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-xxl-0,html[data-netbox-color-mode=dark] .gap-xxl-0,html[data-netbox-color-mode=light] .gap-xxl-0{gap:0!important}html .gap-xxl-1,html[data-netbox-color-mode=dark] .gap-xxl-1,html[data-netbox-color-mode=light] .gap-xxl-1{gap:.25rem!important}html .gap-xxl-2,html[data-netbox-color-mode=dark] .gap-xxl-2,html[data-netbox-color-mode=light] .gap-xxl-2{gap:.5rem!important}html .gap-xxl-3,html[data-netbox-color-mode=dark] .gap-xxl-3,html[data-netbox-color-mode=light] .gap-xxl-3{gap:1rem!important}html .gap-xxl-4,html[data-netbox-color-mode=dark] .gap-xxl-4,html[data-netbox-color-mode=light] .gap-xxl-4{gap:1.5rem!important}html .gap-xxl-5,html[data-netbox-color-mode=dark] .gap-xxl-5,html[data-netbox-color-mode=light] .gap-xxl-5{gap:3rem!important}html .justify-content-xxl-start,html[data-netbox-color-mode=dark] .justify-content-xxl-start,html[data-netbox-color-mode=light] .justify-content-xxl-start{justify-content:flex-start!important}html .justify-content-xxl-end,html[data-netbox-color-mode=dark] .justify-content-xxl-end,html[data-netbox-color-mode=light] .justify-content-xxl-end{justify-content:flex-end!important}html .justify-content-xxl-center,html[data-netbox-color-mode=dark] .justify-content-xxl-center,html[data-netbox-color-mode=light] .justify-content-xxl-center{justify-content:center!important}html .justify-content-xxl-between,html[data-netbox-color-mode=dark] .justify-content-xxl-between,html[data-netbox-color-mode=light] .justify-content-xxl-between{justify-content:space-between!important}html .justify-content-xxl-around,html[data-netbox-color-mode=dark] .justify-content-xxl-around,html[data-netbox-color-mode=light] .justify-content-xxl-around{justify-content:space-around!important}html .justify-content-xxl-evenly,html[data-netbox-color-mode=dark] .justify-content-xxl-evenly,html[data-netbox-color-mode=light] .justify-content-xxl-evenly{justify-content:space-evenly!important}html .align-items-xxl-start,html[data-netbox-color-mode=dark] .align-items-xxl-start,html[data-netbox-color-mode=light] .align-items-xxl-start{align-items:flex-start!important}html .align-items-xxl-end,html[data-netbox-color-mode=dark] .align-items-xxl-end,html[data-netbox-color-mode=light] .align-items-xxl-end{align-items:flex-end!important}html .align-items-xxl-center,html[data-netbox-color-mode=dark] .align-items-xxl-center,html[data-netbox-color-mode=light] .align-items-xxl-center{align-items:center!important}html .align-items-xxl-baseline,html[data-netbox-color-mode=dark] .align-items-xxl-baseline,html[data-netbox-color-mode=light] .align-items-xxl-baseline{align-items:baseline!important}html .align-items-xxl-stretch,html[data-netbox-color-mode=dark] .align-items-xxl-stretch,html[data-netbox-color-mode=light] .align-items-xxl-stretch{align-items:stretch!important}html .align-content-xxl-start,html[data-netbox-color-mode=dark] .align-content-xxl-start,html[data-netbox-color-mode=light] .align-content-xxl-start{align-content:flex-start!important}html .align-content-xxl-end,html[data-netbox-color-mode=dark] .align-content-xxl-end,html[data-netbox-color-mode=light] .align-content-xxl-end{align-content:flex-end!important}html .align-content-xxl-center,html[data-netbox-color-mode=dark] .align-content-xxl-center,html[data-netbox-color-mode=light] .align-content-xxl-center{align-content:center!important}html .align-content-xxl-between,html[data-netbox-color-mode=dark] .align-content-xxl-between,html[data-netbox-color-mode=light] .align-content-xxl-between{align-content:space-between!important}html .align-content-xxl-around,html[data-netbox-color-mode=dark] .align-content-xxl-around,html[data-netbox-color-mode=light] .align-content-xxl-around{align-content:space-around!important}html .align-content-xxl-stretch,html[data-netbox-color-mode=dark] .align-content-xxl-stretch,html[data-netbox-color-mode=light] .align-content-xxl-stretch{align-content:stretch!important}html .align-self-xxl-auto,html[data-netbox-color-mode=dark] .align-self-xxl-auto,html[data-netbox-color-mode=light] .align-self-xxl-auto{align-self:auto!important}html .align-self-xxl-start,html[data-netbox-color-mode=dark] .align-self-xxl-start,html[data-netbox-color-mode=light] .align-self-xxl-start{align-self:flex-start!important}html .align-self-xxl-end,html[data-netbox-color-mode=dark] .align-self-xxl-end,html[data-netbox-color-mode=light] .align-self-xxl-end{align-self:flex-end!important}html .align-self-xxl-center,html[data-netbox-color-mode=dark] .align-self-xxl-center,html[data-netbox-color-mode=light] .align-self-xxl-center{align-self:center!important}html .align-self-xxl-baseline,html[data-netbox-color-mode=dark] .align-self-xxl-baseline,html[data-netbox-color-mode=light] .align-self-xxl-baseline{align-self:baseline!important}html .align-self-xxl-stretch,html[data-netbox-color-mode=dark] .align-self-xxl-stretch,html[data-netbox-color-mode=light] .align-self-xxl-stretch{align-self:stretch!important}html .order-xxl-first,html[data-netbox-color-mode=dark] .order-xxl-first,html[data-netbox-color-mode=light] .order-xxl-first{order:-1!important}html .order-xxl-0,html[data-netbox-color-mode=dark] .order-xxl-0,html[data-netbox-color-mode=light] .order-xxl-0{order:0!important}html .order-xxl-1,html[data-netbox-color-mode=dark] .order-xxl-1,html[data-netbox-color-mode=light] .order-xxl-1{order:1!important}html .order-xxl-2,html[data-netbox-color-mode=dark] .order-xxl-2,html[data-netbox-color-mode=light] .order-xxl-2{order:2!important}html .order-xxl-3,html[data-netbox-color-mode=dark] .order-xxl-3,html[data-netbox-color-mode=light] .order-xxl-3{order:3!important}html .order-xxl-4,html[data-netbox-color-mode=dark] .order-xxl-4,html[data-netbox-color-mode=light] .order-xxl-4{order:4!important}html .order-xxl-5,html[data-netbox-color-mode=dark] .order-xxl-5,html[data-netbox-color-mode=light] .order-xxl-5{order:5!important}html .order-xxl-last,html[data-netbox-color-mode=dark] .order-xxl-last,html[data-netbox-color-mode=light] .order-xxl-last{order:6!important}html .m-xxl-0,html[data-netbox-color-mode=dark] .m-xxl-0,html[data-netbox-color-mode=light] .m-xxl-0{margin:0!important}html .m-xxl-1,html[data-netbox-color-mode=dark] .m-xxl-1,html[data-netbox-color-mode=light] .m-xxl-1{margin:.25rem!important}html .m-xxl-2,html[data-netbox-color-mode=dark] .m-xxl-2,html[data-netbox-color-mode=light] .m-xxl-2{margin:.5rem!important}html .m-xxl-3,html[data-netbox-color-mode=dark] .m-xxl-3,html[data-netbox-color-mode=light] .m-xxl-3{margin:1rem!important}html .m-xxl-4,html[data-netbox-color-mode=dark] .m-xxl-4,html[data-netbox-color-mode=light] .m-xxl-4{margin:1.5rem!important}html .m-xxl-5,html[data-netbox-color-mode=dark] .m-xxl-5,html[data-netbox-color-mode=light] .m-xxl-5{margin:3rem!important}html .m-xxl-auto,html[data-netbox-color-mode=dark] .m-xxl-auto,html[data-netbox-color-mode=light] .m-xxl-auto{margin:auto!important}html .mx-xxl-0,html[data-netbox-color-mode=dark] .mx-xxl-0,html[data-netbox-color-mode=light] .mx-xxl-0{margin-right:0!important;margin-left:0!important}html .mx-xxl-1,html[data-netbox-color-mode=dark] .mx-xxl-1,html[data-netbox-color-mode=light] .mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-xxl-2,html[data-netbox-color-mode=dark] .mx-xxl-2,html[data-netbox-color-mode=light] .mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-xxl-3,html[data-netbox-color-mode=dark] .mx-xxl-3,html[data-netbox-color-mode=light] .mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-xxl-4,html[data-netbox-color-mode=dark] .mx-xxl-4,html[data-netbox-color-mode=light] .mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-xxl-5,html[data-netbox-color-mode=dark] .mx-xxl-5,html[data-netbox-color-mode=light] .mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-xxl-auto,html[data-netbox-color-mode=dark] .mx-xxl-auto,html[data-netbox-color-mode=light] .mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}html .my-xxl-0,html[data-netbox-color-mode=dark] .my-xxl-0,html[data-netbox-color-mode=light] .my-xxl-0{margin-top:0!important;margin-bottom:0!important}html .my-xxl-1,html[data-netbox-color-mode=dark] .my-xxl-1,html[data-netbox-color-mode=light] .my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-xxl-2,html[data-netbox-color-mode=dark] .my-xxl-2,html[data-netbox-color-mode=light] .my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-xxl-3,html[data-netbox-color-mode=dark] .my-xxl-3,html[data-netbox-color-mode=light] .my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-xxl-4,html[data-netbox-color-mode=dark] .my-xxl-4,html[data-netbox-color-mode=light] .my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-xxl-5,html[data-netbox-color-mode=dark] .my-xxl-5,html[data-netbox-color-mode=light] .my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-xxl-auto,html[data-netbox-color-mode=dark] .my-xxl-auto,html[data-netbox-color-mode=light] .my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-xxl-0,html[data-netbox-color-mode=dark] .mt-xxl-0,html[data-netbox-color-mode=light] .mt-xxl-0{margin-top:0!important}html .mt-xxl-1,html[data-netbox-color-mode=dark] .mt-xxl-1,html[data-netbox-color-mode=light] .mt-xxl-1{margin-top:.25rem!important}html .mt-xxl-2,html[data-netbox-color-mode=dark] .mt-xxl-2,html[data-netbox-color-mode=light] .mt-xxl-2{margin-top:.5rem!important}html .mt-xxl-3,html[data-netbox-color-mode=dark] .mt-xxl-3,html[data-netbox-color-mode=light] .mt-xxl-3{margin-top:1rem!important}html .mt-xxl-4,html[data-netbox-color-mode=dark] .mt-xxl-4,html[data-netbox-color-mode=light] .mt-xxl-4{margin-top:1.5rem!important}html .mt-xxl-5,html[data-netbox-color-mode=dark] .mt-xxl-5,html[data-netbox-color-mode=light] .mt-xxl-5{margin-top:3rem!important}html .mt-xxl-auto,html[data-netbox-color-mode=dark] .mt-xxl-auto,html[data-netbox-color-mode=light] .mt-xxl-auto{margin-top:auto!important}html .me-xxl-0,html[data-netbox-color-mode=dark] .me-xxl-0,html[data-netbox-color-mode=light] .me-xxl-0{margin-right:0!important}html .me-xxl-1,html[data-netbox-color-mode=dark] .me-xxl-1,html[data-netbox-color-mode=light] .me-xxl-1{margin-right:.25rem!important}html .me-xxl-2,html[data-netbox-color-mode=dark] .me-xxl-2,html[data-netbox-color-mode=light] .me-xxl-2{margin-right:.5rem!important}html .me-xxl-3,html[data-netbox-color-mode=dark] .me-xxl-3,html[data-netbox-color-mode=light] .me-xxl-3{margin-right:1rem!important}html .me-xxl-4,html[data-netbox-color-mode=dark] .me-xxl-4,html[data-netbox-color-mode=light] .me-xxl-4{margin-right:1.5rem!important}html .me-xxl-5,html[data-netbox-color-mode=dark] .me-xxl-5,html[data-netbox-color-mode=light] .me-xxl-5{margin-right:3rem!important}html .me-xxl-auto,html[data-netbox-color-mode=dark] .me-xxl-auto,html[data-netbox-color-mode=light] .me-xxl-auto{margin-right:auto!important}html .mb-xxl-0,html[data-netbox-color-mode=dark] .mb-xxl-0,html[data-netbox-color-mode=light] .mb-xxl-0{margin-bottom:0!important}html .mb-xxl-1,html[data-netbox-color-mode=dark] .mb-xxl-1,html[data-netbox-color-mode=light] .mb-xxl-1{margin-bottom:.25rem!important}html .mb-xxl-2,html[data-netbox-color-mode=dark] .mb-xxl-2,html[data-netbox-color-mode=light] .mb-xxl-2{margin-bottom:.5rem!important}html .mb-xxl-3,html[data-netbox-color-mode=dark] .mb-xxl-3,html[data-netbox-color-mode=light] .mb-xxl-3{margin-bottom:1rem!important}html .mb-xxl-4,html[data-netbox-color-mode=dark] .mb-xxl-4,html[data-netbox-color-mode=light] .mb-xxl-4{margin-bottom:1.5rem!important}html .mb-xxl-5,html[data-netbox-color-mode=dark] .mb-xxl-5,html[data-netbox-color-mode=light] .mb-xxl-5{margin-bottom:3rem!important}html .mb-xxl-auto,html[data-netbox-color-mode=dark] .mb-xxl-auto,html[data-netbox-color-mode=light] .mb-xxl-auto{margin-bottom:auto!important}html .ms-xxl-0,html[data-netbox-color-mode=dark] .ms-xxl-0,html[data-netbox-color-mode=light] .ms-xxl-0{margin-left:0!important}html .ms-xxl-1,html[data-netbox-color-mode=dark] .ms-xxl-1,html[data-netbox-color-mode=light] .ms-xxl-1{margin-left:.25rem!important}html .ms-xxl-2,html[data-netbox-color-mode=dark] .ms-xxl-2,html[data-netbox-color-mode=light] .ms-xxl-2{margin-left:.5rem!important}html .ms-xxl-3,html[data-netbox-color-mode=dark] .ms-xxl-3,html[data-netbox-color-mode=light] .ms-xxl-3{margin-left:1rem!important}html .ms-xxl-4,html[data-netbox-color-mode=dark] .ms-xxl-4,html[data-netbox-color-mode=light] .ms-xxl-4{margin-left:1.5rem!important}html .ms-xxl-5,html[data-netbox-color-mode=dark] .ms-xxl-5,html[data-netbox-color-mode=light] .ms-xxl-5{margin-left:3rem!important}html .ms-xxl-auto,html[data-netbox-color-mode=dark] .ms-xxl-auto,html[data-netbox-color-mode=light] .ms-xxl-auto{margin-left:auto!important}html .p-xxl-0,html[data-netbox-color-mode=dark] .p-xxl-0,html[data-netbox-color-mode=light] .p-xxl-0{padding:0!important}html .p-xxl-1,html[data-netbox-color-mode=dark] .p-xxl-1,html[data-netbox-color-mode=light] .p-xxl-1{padding:.25rem!important}html .p-xxl-2,html[data-netbox-color-mode=dark] .p-xxl-2,html[data-netbox-color-mode=light] .p-xxl-2{padding:.5rem!important}html .p-xxl-3,html[data-netbox-color-mode=dark] .p-xxl-3,html[data-netbox-color-mode=light] .p-xxl-3{padding:1rem!important}html .p-xxl-4,html[data-netbox-color-mode=dark] .p-xxl-4,html[data-netbox-color-mode=light] .p-xxl-4{padding:1.5rem!important}html .p-xxl-5,html[data-netbox-color-mode=dark] .p-xxl-5,html[data-netbox-color-mode=light] .p-xxl-5{padding:3rem!important}html .px-xxl-0,html[data-netbox-color-mode=dark] .px-xxl-0,html[data-netbox-color-mode=light] .px-xxl-0{padding-right:0!important;padding-left:0!important}html .px-xxl-1,html[data-netbox-color-mode=dark] .px-xxl-1,html[data-netbox-color-mode=light] .px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-xxl-2,html[data-netbox-color-mode=dark] .px-xxl-2,html[data-netbox-color-mode=light] .px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-xxl-3,html[data-netbox-color-mode=dark] .px-xxl-3,html[data-netbox-color-mode=light] .px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}html .px-xxl-4,html[data-netbox-color-mode=dark] .px-xxl-4,html[data-netbox-color-mode=light] .px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-xxl-5,html[data-netbox-color-mode=dark] .px-xxl-5,html[data-netbox-color-mode=light] .px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}html .py-xxl-0,html[data-netbox-color-mode=dark] .py-xxl-0,html[data-netbox-color-mode=light] .py-xxl-0{padding-top:0!important;padding-bottom:0!important}html .py-xxl-1,html[data-netbox-color-mode=dark] .py-xxl-1,html[data-netbox-color-mode=light] .py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-xxl-2,html[data-netbox-color-mode=dark] .py-xxl-2,html[data-netbox-color-mode=light] .py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-xxl-3,html[data-netbox-color-mode=dark] .py-xxl-3,html[data-netbox-color-mode=light] .py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-xxl-4,html[data-netbox-color-mode=dark] .py-xxl-4,html[data-netbox-color-mode=light] .py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-xxl-5,html[data-netbox-color-mode=dark] .py-xxl-5,html[data-netbox-color-mode=light] .py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-xxl-0,html[data-netbox-color-mode=dark] .pt-xxl-0,html[data-netbox-color-mode=light] .pt-xxl-0{padding-top:0!important}html .pt-xxl-1,html[data-netbox-color-mode=dark] .pt-xxl-1,html[data-netbox-color-mode=light] .pt-xxl-1{padding-top:.25rem!important}html .pt-xxl-2,html[data-netbox-color-mode=dark] .pt-xxl-2,html[data-netbox-color-mode=light] .pt-xxl-2{padding-top:.5rem!important}html .pt-xxl-3,html[data-netbox-color-mode=dark] .pt-xxl-3,html[data-netbox-color-mode=light] .pt-xxl-3{padding-top:1rem!important}html .pt-xxl-4,html[data-netbox-color-mode=dark] .pt-xxl-4,html[data-netbox-color-mode=light] .pt-xxl-4{padding-top:1.5rem!important}html .pt-xxl-5,html[data-netbox-color-mode=dark] .pt-xxl-5,html[data-netbox-color-mode=light] .pt-xxl-5{padding-top:3rem!important}html .pe-xxl-0,html[data-netbox-color-mode=dark] .pe-xxl-0,html[data-netbox-color-mode=light] .pe-xxl-0{padding-right:0!important}html .pe-xxl-1,html[data-netbox-color-mode=dark] .pe-xxl-1,html[data-netbox-color-mode=light] .pe-xxl-1{padding-right:.25rem!important}html .pe-xxl-2,html[data-netbox-color-mode=dark] .pe-xxl-2,html[data-netbox-color-mode=light] .pe-xxl-2{padding-right:.5rem!important}html .pe-xxl-3,html[data-netbox-color-mode=dark] .pe-xxl-3,html[data-netbox-color-mode=light] .pe-xxl-3{padding-right:1rem!important}html .pe-xxl-4,html[data-netbox-color-mode=dark] .pe-xxl-4,html[data-netbox-color-mode=light] .pe-xxl-4{padding-right:1.5rem!important}html .pe-xxl-5,html[data-netbox-color-mode=dark] .pe-xxl-5,html[data-netbox-color-mode=light] .pe-xxl-5{padding-right:3rem!important}html .pb-xxl-0,html[data-netbox-color-mode=dark] .pb-xxl-0,html[data-netbox-color-mode=light] .pb-xxl-0{padding-bottom:0!important}html .pb-xxl-1,html[data-netbox-color-mode=dark] .pb-xxl-1,html[data-netbox-color-mode=light] .pb-xxl-1{padding-bottom:.25rem!important}html .pb-xxl-2,html[data-netbox-color-mode=dark] .pb-xxl-2,html[data-netbox-color-mode=light] .pb-xxl-2{padding-bottom:.5rem!important}html .pb-xxl-3,html[data-netbox-color-mode=dark] .pb-xxl-3,html[data-netbox-color-mode=light] .pb-xxl-3{padding-bottom:1rem!important}html .pb-xxl-4,html[data-netbox-color-mode=dark] .pb-xxl-4,html[data-netbox-color-mode=light] .pb-xxl-4{padding-bottom:1.5rem!important}html .pb-xxl-5,html[data-netbox-color-mode=dark] .pb-xxl-5,html[data-netbox-color-mode=light] .pb-xxl-5{padding-bottom:3rem!important}html .ps-xxl-0,html[data-netbox-color-mode=dark] .ps-xxl-0,html[data-netbox-color-mode=light] .ps-xxl-0{padding-left:0!important}html .ps-xxl-1,html[data-netbox-color-mode=dark] .ps-xxl-1,html[data-netbox-color-mode=light] .ps-xxl-1{padding-left:.25rem!important}html .ps-xxl-2,html[data-netbox-color-mode=dark] .ps-xxl-2,html[data-netbox-color-mode=light] .ps-xxl-2{padding-left:.5rem!important}html .ps-xxl-3,html[data-netbox-color-mode=dark] .ps-xxl-3,html[data-netbox-color-mode=light] .ps-xxl-3{padding-left:1rem!important}html .ps-xxl-4,html[data-netbox-color-mode=dark] .ps-xxl-4,html[data-netbox-color-mode=light] .ps-xxl-4{padding-left:1.5rem!important}html .ps-xxl-5,html[data-netbox-color-mode=dark] .ps-xxl-5,html[data-netbox-color-mode=light] .ps-xxl-5{padding-left:3rem!important}html .text-xxl-start,html[data-netbox-color-mode=dark] .text-xxl-start,html[data-netbox-color-mode=light] .text-xxl-start{text-align:left!important}html .text-xxl-end,html[data-netbox-color-mode=dark] .text-xxl-end,html[data-netbox-color-mode=light] .text-xxl-end{text-align:right!important}html .text-xxl-center,html[data-netbox-color-mode=dark] .text-xxl-center,html[data-netbox-color-mode=light] .text-xxl-center{text-align:center!important}}@media print and (min-width: 1200px){html .fs-1,html[data-netbox-color-mode=dark] .fs-1,html[data-netbox-color-mode=light] .fs-1{font-size:2.5rem!important}html .fs-2,html[data-netbox-color-mode=dark] .fs-2,html[data-netbox-color-mode=light] .fs-2{font-size:2rem!important}html .fs-3,html[data-netbox-color-mode=dark] .fs-3,html[data-netbox-color-mode=light] .fs-3{font-size:1.75rem!important}html .fs-4,html[data-netbox-color-mode=dark] .fs-4,html[data-netbox-color-mode=light] .fs-4{font-size:1.5rem!important}}@media print{html .d-print-inline,html[data-netbox-color-mode=dark] .d-print-inline,html[data-netbox-color-mode=light] .d-print-inline{display:inline!important}html .d-print-inline-block,html[data-netbox-color-mode=dark] .d-print-inline-block,html[data-netbox-color-mode=light] .d-print-inline-block{display:inline-block!important}html .d-print-block,html[data-netbox-color-mode=dark] .d-print-block,html[data-netbox-color-mode=light] .d-print-block{display:block!important}html .d-print-grid,html[data-netbox-color-mode=dark] .d-print-grid,html[data-netbox-color-mode=light] .d-print-grid{display:grid!important}html .d-print-table,html[data-netbox-color-mode=dark] .d-print-table,html[data-netbox-color-mode=light] .d-print-table{display:table!important}html .d-print-table-row,html[data-netbox-color-mode=dark] .d-print-table-row,html[data-netbox-color-mode=light] .d-print-table-row{display:table-row!important}html .d-print-table-cell,html[data-netbox-color-mode=dark] .d-print-table-cell,html[data-netbox-color-mode=light] .d-print-table-cell{display:table-cell!important}html .d-print-flex,html[data-netbox-color-mode=dark] .d-print-flex,html[data-netbox-color-mode=light] .d-print-flex{display:flex!important}html .d-print-inline-flex,html[data-netbox-color-mode=dark] .d-print-inline-flex,html[data-netbox-color-mode=light] .d-print-inline-flex{display:inline-flex!important}html .d-print-none,html[data-netbox-color-mode=dark] .d-print-none,html[data-netbox-color-mode=light] .d-print-none{display:none!important}}@media print{html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--nbx-select-content-bg: #fff;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}html :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=light] :root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}}@media print{html .ss-main,html[data-netbox-color-mode=dark] .ss-main,html[data-netbox-color-mode=light] .ss-main{position:relative;display:inline-block;user-select:none;color:#212529;width:100%}html .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=light] .ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + 0.75rem + 2px);padding:.75rem;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html .ss-main .ss-single-selected.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}html .ss-main .ss-single-selected.ss-open-above,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-above,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html .ss-main .ss-single-selected.ss-open-below,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-below,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html .ss-main .ss-single-selected .placeholder,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html .ss-main .ss-single-selected .placeholder *,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder *,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}html .ss-main .ss-single-selected .placeholder .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder .ss-disabled{color:#6c757d}html .ss-main .ss-single-selected .ss-deselect,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:700}html .ss-main .ss-single-selected .ss-deselect.ss-hide,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect.ss-hide,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}html .ss-main .ss-single-selected .ss-arrow,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}html .ss-main .ss-single-selected .ss-arrow span,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span{border:solid #212529;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}html .ss-main .ss-single-selected .ss-arrow span.arrow-up,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-up,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}html .ss-main .ss-single-selected .ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-down,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + 0.75rem + 2px);width:100%;padding:0 0 0 3px;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html .ss-main .ss-multi-selected.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}html .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#212529}html .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}html .ss-main .ss-multi-selected.ss-open-above,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-above,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html .ss-main .ss-multi-selected.ss-open-below,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-below,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html .ss-main .ss-multi-selected .ss-values,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}html .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}html .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#337ab7;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}html .ss-main .ss-multi-selected .ss-values .ss-value.ss-out,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}html .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}html .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}html .ss-main .ss-multi-selected .ss-add .ss-plus,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#212529;position:relative;height:10px;width:2px;transition:transform .2s}html .ss-main .ss-multi-selected .ss-add .ss-plus:after,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus:after,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#212529;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}html .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}}@media print{html .ss-content,html[data-netbox-color-mode=dark] .ss-content,html[data-netbox-color-mode=light] .ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #ced4da;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}html .ss-content.ss-open,html[data-netbox-color-mode=dark] .ss-content.ss-open,html[data-netbox-color-mode=light] .ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}html .ss-content .ss-search,html[data-netbox-color-mode=dark] .ss-content .ss-search,html[data-netbox-color-mode=light] .ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}html .ss-content .ss-search.ss-hide,html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide,html[data-netbox-color-mode=light] .ss-content .ss-search.ss-hide,html .ss-content .ss-search.ss-hide input,html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide input,html[data-netbox-color-mode=light] .ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}html .ss-content .ss-search input,html[data-netbox-color-mode=dark] .ss-content .ss-search input,html[data-netbox-color-mode=light] .ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}html .ss-content .ss-search input::placeholder,html[data-netbox-color-mode=dark] .ss-content .ss-search input::placeholder,html[data-netbox-color-mode=light] .ss-content .ss-search input::placeholder{color:#adb5bd;vertical-align:middle}html .ss-content .ss-search input:focus,html[data-netbox-color-mode=dark] .ss-content .ss-search input:focus,html[data-netbox-color-mode=light] .ss-content .ss-search input:focus{box-shadow:0 0 5px #337ab7}html .ss-content .ss-search .ss-addable,html[data-netbox-color-mode=dark] .ss-content .ss-search .ss-addable,html[data-netbox-color-mode=light] .ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:700;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #ced4da;border-radius:.375rem;box-sizing:border-box}html .ss-content .ss-addable,html[data-netbox-color-mode=dark] .ss-content .ss-addable,html[data-netbox-color-mode=light] .ss-content .ss-addable{padding-top:0}html .ss-content .ss-list,html[data-netbox-color-mode=dark] .ss-content .ss-list,html[data-netbox-color-mode=light] .ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}html .ss-content .ss-list .ss-optgroup .ss-optgroup-label,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-optgroup-label,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:700}html .ss-content .ss-list .ss-optgroup .ss-option,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-option,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}html .ss-content .ss-list .ss-optgroup-label-selectable,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}html .ss-content .ss-list .ss-optgroup-label-selectable:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable:hover,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#337ab7}html .ss-content .ss-list .ss-option,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}html .ss-content .ss-list .ss-option *,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option *,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option *{display:inline-block}html .ss-content .ss-list .ss-option:hover,html .ss-content .ss-list .ss-option.ss-highlighted,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-highlighted,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#337ab7}html .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#6c757d;background-color:#fff}html .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#212529;background-color:#337ab71a}html .ss-content .ss-list .ss-option.ss-hide,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-hide,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-hide{display:none}html .ss-content .ss-list .ss-option .ss-search-highlight,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option .ss-search-highlight,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}}@media print{html .ss-main,html[data-netbox-color-mode=dark] .ss-main,html[data-netbox-color-mode=light] .ss-main{color:#212529}html .ss-main.is-invalid .ss-single-selected,html .ss-main.is-invalid .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=light] .ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}html .ss-main.is-valid .ss-single-selected,html .ss-main.is-valid .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=light] .ss-main.is-valid .ss-multi-selected{border-color:#198754}html .ss-main .ss-single-selected,html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-single-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#fff;border:1px solid #ced4da}html .ss-main .ss-single-selected[disabled],html .ss-main .ss-multi-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected[disabled],html[data-netbox-color-mode=light] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=light] .ss-main .ss-multi-selected[disabled]{color:#6c757d;background-color:#e9ecef}html .ss-main div.ss-multi-selected .ss-values .ss-disabled,html .ss-main div.ss-single-selected span.placeholder .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-single-selected span.placeholder .ss-disabled,html[data-netbox-color-mode=light] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}html .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html .ss-main .ss-single-selected span.ss-arrow span.arrow-up,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-up,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#6c757d}html .ss-main .ss-single-selected .placeholder .depth,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .depth,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder .depth{display:none}html .ss-main .ss-single-selected span.placeholder>*,html .ss-main .ss-single-selected span.placeholder,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.placeholder{line-height:1.5}html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}html .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}html .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}html .ss-main .ss-multi-selected .ss-values .ss-value .depth,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .depth,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}html .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add{margin:0 .75rem}html .ss-main .ss-content,html[data-netbox-color-mode=dark] .ss-main .ss-content,html[data-netbox-color-mode=light] .ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .ss-main .ss-content .ss-list .ss-option.ss-option-selected,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-option-selected,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#212529;background-color:var(--nbx-select-option-selected-bg)}html .ss-main .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}html .ss-main .ss-content .ss-list .ss-option:last-child,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:last-child,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .ss-main .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}html .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#6c757d}html .ss-main .ss-content .ss-list .ss-option .depth,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option .depth,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}html .ss-main .ss-content .ss-list::-webkit-scrollbar,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}html .ss-main .ss-content .ss-list::-webkit-scrollbar:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}html .ss-main .ss-content .ss-list::-webkit-scrollbar-track,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-track,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}html .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}html .ss-main .ss-content .ss-search,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search{padding-right:.5rem}html .ss-main .ss-content .ss-search button,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search button,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search button{margin-left:.75rem}html .ss-main .ss-content .ss-search input[type=search],html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search],html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search input[type=search]{color:#212529;background-color:#fff;border:1px solid #ced4da}html .ss-main .ss-content .ss-search input[type=search]:focus,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]:focus,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .sidenav,html[data-netbox-color-mode=dark] .sidenav,html[data-netbox-color-mode=light] .sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #ced4da;transition:all .1s ease-in-out}}@media print and (max-width: 991.98px){html .sidenav,html[data-netbox-color-mode=dark] .sidenav,html[data-netbox-color-mode=light] .sidenav{transform:translate(-3rem)}html .sidenav+.content-container[class],html[data-netbox-color-mode=dark] .sidenav+.content-container[class],html[data-netbox-color-mode=light] .sidenav+.content-container[class]{margin-left:0}html .sidenav .profile-button-container[class],html[data-netbox-color-mode=dark] .sidenav .profile-button-container[class],html[data-netbox-color-mode=light] .sidenav .profile-button-container[class]{display:block}}@media print{html .sidenav .profile-button-container,html[data-netbox-color-mode=dark] .sidenav .profile-button-container,html[data-netbox-color-mode=light] .sidenav .profile-button-container{display:none;padding:.5rem 1rem}}@media print{html .sidenav+.content-container,html[data-netbox-color-mode=dark] .sidenav+.content-container,html[data-netbox-color-mode=light] .sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}}@media print{html .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] .sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}}@media print{html .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] .sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}}@media print{html .sidenav .sidenav-inner,html[data-netbox-color-mode=dark] .sidenav .sidenav-inner,html[data-netbox-color-mode=light] .sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}}@media print and (min-width: 768px){html .sidenav .sidenav-inner,html[data-netbox-color-mode=dark] .sidenav .sidenav-inner,html[data-netbox-color-mode=light] .sidenav .sidenav-inner{padding-right:0;padding-left:0}}@media print{html .sidenav .sidenav-brand-img,html .sidenav .sidenav-brand>img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand>img,html[data-netbox-color-mode=light] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=light] .sidenav .sidenav-brand>img{max-width:100%;max-height:15rem}}@media print{html .sidenav .navbar-heading,html[data-netbox-color-mode=dark] .sidenav .navbar-heading,html[data-netbox-color-mode=light] .sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}}@media print{html .sidenav .sidenav-header,html[data-netbox-color-mode=dark] .sidenav .sidenav-header,html[data-netbox-color-mode=light] .sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}}@media print{html .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] .sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}}@media print{html .sidenav .sidenav-collapse,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}html .sidenav .sidenav-collapse>*,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse>*,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse>*{min-width:100%}}@media print and (min-width: 768px){html .sidenav .sidenav-collapse,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse{margin-right:0;margin-left:0}}@media print{html .sidenav .nav-group-header,html[data-netbox-color-mode=dark] .sidenav .nav-group-header,html[data-netbox-color-mode=light] .sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}}@media print{html .sidenav .nav,html[data-netbox-color-mode=dark] .sidenav .nav,html[data-netbox-color-mode=light] .sidenav .nav{margin-bottom:.5rem}}@media print{html .sidenav .nav .nav-item,html[data-netbox-color-mode=dark] .sidenav .nav .nav-item,html[data-netbox-color-mode=light] .sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}html .sidenav .nav .nav-item.no-buttons,html[data-netbox-color-mode=dark] .sidenav .nav .nav-item.no-buttons,html[data-netbox-color-mode=light] .sidenav .nav .nav-item.no-buttons{padding-right:.5rem}}@media print{html .sidenav .collapse .nav .nav-item .nav-link,html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link,html[data-netbox-color-mode=light] .sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon,html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon,html[data-netbox-color-mode=light] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle],html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle],html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:Material Design Icons;font-style:normal;font-weight:700;font-variant:normal;color:#6c757d;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#343a40}html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#337ab7;transform:rotate(90deg)}html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav,html[data-netbox-color-mode=dark] .sidenav .navbar-nav,html[data-netbox-color-mode=light] .sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}html .sidenav .navbar-nav .nav-item.disabled,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item.disabled,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}html .sidenav .navbar-nav .nav-item .nav-link,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition-duration:0ms}html .sidenav .navbar-nav .nav-item .nav-link.active,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link.active,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}html .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active),html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active),html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}html .sidenav .navbar-nav .nav-item .nav-link>i,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link>i,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:22.5px;text-align:center}html .sidenav .navbar-nav .nav-group-label,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-group-label,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}}@media print{html body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}}@media print and (min-width: 1200px){html body[data-sidenav-pinned] .sidenav+.content-container,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav+.content-container,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}@media print{html .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=dark] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=light] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}}@media print{html body[data-sidenav-show] .sidenav,html body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav{max-width:16rem}html body[data-sidenav-show] .sidenav .sidenav-brand,html body[data-sidenav-show] .sidenav .navbar-heading,html body[data-sidenav-pinned] .sidenav .sidenav-brand,html body[data-sidenav-pinned] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .navbar-heading,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}html body[data-sidenav-show] .sidenav .sidenav-brand,html body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}html body[data-sidenav-show] .sidenav .sidenav-brand-icon,html body[data-sidenav-pinned] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}}@media print and (max-width: 991.98px){html body[data-sidenav-show] .sidenav,html body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav{transform:translate(0)}}@media print{html body[data-sidenav-hide] .sidenav .sidenav-header,html body[data-sidenav-hidden] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-header,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}html body[data-sidenav-hide] .sidenav .sidenav-brand,html body[data-sidenav-hidden] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}html body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html body[data-sidenav-hidden] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}html body[data-sidenav-hide] .sidenav .sidenav-toggle,html body[data-sidenav-hidden] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}html body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}html body[data-sidenav-hide] .sidenav .nav-item .collapse,html body[data-sidenav-hidden] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}html body[data-sidenav-hide] .sidenav .nav-link-text,html body[data-sidenav-hidden] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}html body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}}@media print{html body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand{display:block}html body[data-sidenav-show] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}html body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}html body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}}@media print and (min-width: 992px){html body[data-sidenav-show] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}@media print{html .simplebar-track.simplebar-vertical,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}html .simplebar-track.simplebar-vertical .simplebar-scrollbar,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}html .simplebar-track.simplebar-vertical .simplebar-scrollbar:before,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}html .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}}@media print{html body,html[data-netbox-color-mode=dark] body,html[data-netbox-color-mode=light] body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}}@media print{html pre,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=light] pre{white-space:pre}}@media print{html small,html .small,html[data-netbox-color-mode=dark] .small,html[data-netbox-color-mode=light] .small,html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=light] small{font-size:smaller!important}}@media print{html a[type=button],html[data-netbox-color-mode=dark] a[type=button],html[data-netbox-color-mode=light] a[type=button]{-webkit-appearance:unset!important}}@media print{html *[data-href],html[data-netbox-color-mode=dark] *[data-href],html[data-netbox-color-mode=light] *[data-href]{cursor:pointer}}@media print{html .form-control:not([type=file]),html[data-netbox-color-mode=dark] .form-control:not([type=file]),html[data-netbox-color-mode=light] .form-control:not([type=file]){font-size:inherit}}@media print{html .badge,html[data-netbox-color-mode=dark] .badge,html[data-netbox-color-mode=light] .badge{font-size:.75rem}}@media print{html input[type=search]::-webkit-search-decoration,html input[type=search]::-webkit-search-cancel-button,html input[type=search]::-webkit-search-results-button,html input[type=search]::-webkit-search-results-decoration,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-decoration,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-cancel-button,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-results-button,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-results-decoration,html[data-netbox-color-mode=light] input[type=search]::-webkit-search-decoration,html[data-netbox-color-mode=light] input[type=search]::-webkit-search-cancel-button,html[data-netbox-color-mode=light] input[type=search]::-webkit-search-results-button,html[data-netbox-color-mode=light] input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none!important}}@media print{html mark,html .mark,html[data-netbox-color-mode=dark] .mark,html[data-netbox-color-mode=light] .mark,html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=light] mark{padding-left:0;padding-right:0}}@media print{html .text-xs,html[data-netbox-color-mode=dark] .text-xs,html[data-netbox-color-mode=light] .text-xs{font-size:.75rem!important;line-height:1.25!important}}@media print{html .border-input,html[data-netbox-color-mode=dark] .border-input,html[data-netbox-color-mode=light] .border-input{border:1px solid #ced4da!important}}@media print{html .ws-nowrap,html[data-netbox-color-mode=dark] .ws-nowrap,html[data-netbox-color-mode=light] .ws-nowrap{white-space:nowrap!important}}@media print{html table tr .vertical-align,html table td .vertical-align,html[data-netbox-color-mode=dark] table tr .vertical-align,html[data-netbox-color-mode=dark] table td .vertical-align,html[data-netbox-color-mode=light] table tr .vertical-align,html[data-netbox-color-mode=light] table td .vertical-align{vertical-align:middle}}@media print{html .noprint,html[data-netbox-color-mode=dark] .noprint,html[data-netbox-color-mode=light] .noprint{display:none!important;visibility:hidden!important}}@media print{html .printonly,html[data-netbox-color-mode=dark] .printonly,html[data-netbox-color-mode=light] .printonly{display:none!important;visibility:hidden!important}}@media print{html .printonly,html[data-netbox-color-mode=dark] .printonly,html[data-netbox-color-mode=light] .printonly{display:block!important;visibility:visible!important}}@media print{html .hide-last-child :last-child,html[data-netbox-color-mode=dark] .hide-last-child :last-child,html[data-netbox-color-mode=light] .hide-last-child :last-child{visibility:hidden;opacity:0}}@media print{html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #9cc8f8;--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #e9ecef;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #337ab7;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}html :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=light] :root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}}@media print{html .bg-primary button.btn-close,html[data-netbox-color-mode=dark] .bg-primary button.btn-close,html[data-netbox-color-mode=light] .bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f496e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-primary,html[data-netbox-color-mode=dark] .btn.btn-ghost-primary,html[data-netbox-color-mode=light] .btn.btn-ghost-primary{color:#337ab7}html .btn.btn-ghost-primary:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-primary:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-primary:hover{background-color:#337ab71f}}@media print{html .alert.alert-primary a:not(.btn),html .table-primary a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=dark] .table-primary a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=light] .table-primary a:not(.btn){font-weight:700;color:#1f496e}html .alert.alert-primary .btn:not([class*=btn-outline]),html .table-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-primary .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-primary a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-primary a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-primary a:not(.btn){font-weight:700;color:#adcae2}}@media print{html .badge.bg-primary,html .toast.bg-primary,html .toast-header.bg-primary,html .progress-bar.bg-primary,html[data-netbox-color-mode=dark] .badge.bg-primary,html[data-netbox-color-mode=dark] .toast.bg-primary,html[data-netbox-color-mode=dark] .toast-header.bg-primary,html[data-netbox-color-mode=dark] .progress-bar.bg-primary,html[data-netbox-color-mode=light] .badge.bg-primary,html[data-netbox-color-mode=light] .toast.bg-primary,html[data-netbox-color-mode=light] .toast-header.bg-primary,html[data-netbox-color-mode=light] .progress-bar.bg-primary{color:#fff}}@media print{html .bg-secondary button.btn-close,html[data-netbox-color-mode=dark] .bg-secondary button.btn-close,html[data-netbox-color-mode=light] .bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-secondary,html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary,html[data-netbox-color-mode=light] .btn.btn-ghost-secondary{color:#6c757d}html .btn.btn-ghost-secondary:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-secondary:hover{background-color:#6c757d1f}}@media print{html .alert.alert-secondary a:not(.btn),html .table-secondary a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=dark] .table-secondary a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=light] .table-secondary a:not(.btn){font-weight:700;color:#41464b}html .alert.alert-secondary .btn:not([class*=btn-outline]),html .table-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-secondary .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-secondary a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-secondary a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-secondary a:not(.btn){font-weight:700;color:#c4c8cb}}@media print{html .badge.bg-secondary,html .toast.bg-secondary,html .toast-header.bg-secondary,html .progress-bar.bg-secondary,html[data-netbox-color-mode=dark] .badge.bg-secondary,html[data-netbox-color-mode=dark] .toast.bg-secondary,html[data-netbox-color-mode=dark] .toast-header.bg-secondary,html[data-netbox-color-mode=dark] .progress-bar.bg-secondary,html[data-netbox-color-mode=light] .badge.bg-secondary,html[data-netbox-color-mode=light] .toast.bg-secondary,html[data-netbox-color-mode=light] .toast-header.bg-secondary,html[data-netbox-color-mode=light] .progress-bar.bg-secondary{color:#fff}}@media print{html .bg-success button.btn-close,html[data-netbox-color-mode=dark] .bg-success button.btn-close,html[data-netbox-color-mode=light] .bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-success,html[data-netbox-color-mode=dark] .btn.btn-ghost-success,html[data-netbox-color-mode=light] .btn.btn-ghost-success{color:#198754}html .btn.btn-ghost-success:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-success:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-success:hover{background-color:#1987541f}}@media print{html .alert.alert-success a:not(.btn),html .table-success a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=dark] .table-success a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=light] .table-success a:not(.btn){font-weight:700;color:#0f5132}html .alert.alert-success .btn:not([class*=btn-outline]),html .table-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-success .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-success a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-success a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-success a:not(.btn){font-weight:700;color:#a3cfbb}}@media print{html .badge.bg-success,html .toast.bg-success,html .toast-header.bg-success,html .progress-bar.bg-success,html[data-netbox-color-mode=dark] .badge.bg-success,html[data-netbox-color-mode=dark] .toast.bg-success,html[data-netbox-color-mode=dark] .toast-header.bg-success,html[data-netbox-color-mode=dark] .progress-bar.bg-success,html[data-netbox-color-mode=light] .badge.bg-success,html[data-netbox-color-mode=light] .toast.bg-success,html[data-netbox-color-mode=light] .toast-header.bg-success,html[data-netbox-color-mode=light] .progress-bar.bg-success{color:#fff}}@media print{html .bg-info button.btn-close,html[data-netbox-color-mode=dark] .bg-info button.btn-close,html[data-netbox-color-mode=light] .bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23225660'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-info,html[data-netbox-color-mode=dark] .btn.btn-ghost-info,html[data-netbox-color-mode=light] .btn.btn-ghost-info{color:#54d6f0}html .btn.btn-ghost-info:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-info:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-info:hover{background-color:#54d6f01f}}@media print{html .alert.alert-info a:not(.btn),html .table-info a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=dark] .table-info a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=light] .table-info a:not(.btn){font-weight:700;color:#225660}html .alert.alert-info .btn:not([class*=btn-outline]),html .table-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-info .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-info a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-info a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-info a:not(.btn){font-weight:700;color:#225660}}@media print{html .badge.bg-info,html .toast.bg-info,html .toast-header.bg-info,html .progress-bar.bg-info,html[data-netbox-color-mode=dark] .badge.bg-info,html[data-netbox-color-mode=dark] .toast.bg-info,html[data-netbox-color-mode=dark] .toast-header.bg-info,html[data-netbox-color-mode=dark] .progress-bar.bg-info,html[data-netbox-color-mode=light] .badge.bg-info,html[data-netbox-color-mode=light] .toast.bg-info,html[data-netbox-color-mode=light] .toast-header.bg-info,html[data-netbox-color-mode=light] .progress-bar.bg-info{color:#000}}@media print{html .bg-warning button.btn-close,html[data-netbox-color-mode=dark] .bg-warning button.btn-close,html[data-netbox-color-mode=light] .bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-warning,html[data-netbox-color-mode=dark] .btn.btn-ghost-warning,html[data-netbox-color-mode=light] .btn.btn-ghost-warning{color:#ffc107}html .btn.btn-ghost-warning:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-warning:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-warning:hover{background-color:#ffc1071f}}@media print{html .alert.alert-warning a:not(.btn),html .table-warning a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=dark] .table-warning a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=light] .table-warning a:not(.btn){font-weight:700;color:#664d03}html .alert.alert-warning .btn:not([class*=btn-outline]),html .table-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-warning .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-warning a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-warning a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-warning a:not(.btn){font-weight:700;color:#664d03}}@media print{html .badge.bg-warning,html .toast.bg-warning,html .toast-header.bg-warning,html .progress-bar.bg-warning,html[data-netbox-color-mode=dark] .badge.bg-warning,html[data-netbox-color-mode=dark] .toast.bg-warning,html[data-netbox-color-mode=dark] .toast-header.bg-warning,html[data-netbox-color-mode=dark] .progress-bar.bg-warning,html[data-netbox-color-mode=light] .badge.bg-warning,html[data-netbox-color-mode=light] .toast.bg-warning,html[data-netbox-color-mode=light] .toast-header.bg-warning,html[data-netbox-color-mode=light] .progress-bar.bg-warning{color:#000}}@media print{html .bg-danger button.btn-close,html[data-netbox-color-mode=dark] .bg-danger button.btn-close,html[data-netbox-color-mode=light] .bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-danger,html[data-netbox-color-mode=dark] .btn.btn-ghost-danger,html[data-netbox-color-mode=light] .btn.btn-ghost-danger{color:#dc3545}html .btn.btn-ghost-danger:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-danger:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-danger:hover{background-color:#dc35451f}}@media print{html .alert.alert-danger a:not(.btn),html .table-danger a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=dark] .table-danger a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=light] .table-danger a:not(.btn){font-weight:700;color:#842029}html .alert.alert-danger .btn:not([class*=btn-outline]),html .table-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-danger .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-danger a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-danger a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-danger a:not(.btn){font-weight:700;color:#f1aeb5}}@media print{html .badge.bg-danger,html .toast.bg-danger,html .toast-header.bg-danger,html .progress-bar.bg-danger,html[data-netbox-color-mode=dark] .badge.bg-danger,html[data-netbox-color-mode=dark] .toast.bg-danger,html[data-netbox-color-mode=dark] .toast-header.bg-danger,html[data-netbox-color-mode=dark] .progress-bar.bg-danger,html[data-netbox-color-mode=light] .badge.bg-danger,html[data-netbox-color-mode=light] .toast.bg-danger,html[data-netbox-color-mode=light] .toast-header.bg-danger,html[data-netbox-color-mode=light] .progress-bar.bg-danger{color:#fff}}@media print{html .bg-light button.btn-close,html[data-netbox-color-mode=dark] .bg-light button.btn-close,html[data-netbox-color-mode=light] .bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235d5e60'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-light,html[data-netbox-color-mode=dark] .btn.btn-ghost-light,html[data-netbox-color-mode=light] .btn.btn-ghost-light{color:#e9ecef}html .btn.btn-ghost-light:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-light:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-light:hover{background-color:#e9ecef1f}}@media print{html .alert.alert-light a:not(.btn),html .table-light a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=dark] .table-light a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=light] .table-light a:not(.btn){font-weight:700;color:#5d5e60}html .alert.alert-light .btn:not([class*=btn-outline]),html .table-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-light .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-light a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-light a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-light a:not(.btn){font-weight:700;color:#5d5e60}}@media print{html .badge.bg-light,html .toast.bg-light,html .toast-header.bg-light,html .progress-bar.bg-light,html[data-netbox-color-mode=dark] .badge.bg-light,html[data-netbox-color-mode=dark] .toast.bg-light,html[data-netbox-color-mode=dark] .toast-header.bg-light,html[data-netbox-color-mode=dark] .progress-bar.bg-light,html[data-netbox-color-mode=light] .badge.bg-light,html[data-netbox-color-mode=light] .toast.bg-light,html[data-netbox-color-mode=light] .toast-header.bg-light,html[data-netbox-color-mode=light] .progress-bar.bg-light{color:#000}}@media print{html .bg-dark button.btn-close,html[data-netbox-color-mode=dark] .bg-dark button.btn-close,html[data-netbox-color-mode=light] .bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f2326'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-dark,html[data-netbox-color-mode=dark] .btn.btn-ghost-dark,html[data-netbox-color-mode=light] .btn.btn-ghost-dark{color:#343a40}html .btn.btn-ghost-dark:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-dark:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-dark:hover{background-color:#343a401f}}@media print{html .alert.alert-dark a:not(.btn),html .table-dark a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=dark] .table-dark a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=light] .table-dark a:not(.btn){font-weight:700;color:#1f2326}html .alert.alert-dark .btn:not([class*=btn-outline]),html .table-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-dark .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-dark a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-dark a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-dark a:not(.btn){font-weight:700;color:#aeb0b3}}@media print{html .badge.bg-dark,html .toast.bg-dark,html .toast-header.bg-dark,html .progress-bar.bg-dark,html[data-netbox-color-mode=dark] .badge.bg-dark,html[data-netbox-color-mode=dark] .toast.bg-dark,html[data-netbox-color-mode=dark] .toast-header.bg-dark,html[data-netbox-color-mode=dark] .progress-bar.bg-dark,html[data-netbox-color-mode=light] .badge.bg-dark,html[data-netbox-color-mode=light] .toast.bg-dark,html[data-netbox-color-mode=light] .toast-header.bg-dark,html[data-netbox-color-mode=light] .progress-bar.bg-dark{color:#fff}}@media print{html .bg-blue button.btn-close,html[data-netbox-color-mode=dark] .bg-blue button.btn-close,html[data-netbox-color-mode=light] .bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue,html[data-netbox-color-mode=light] .btn.btn-ghost-blue{color:#0d6efd}html .btn.btn-ghost-blue:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue:hover{background-color:#0d6efd1f}}@media print{html .alert.alert-blue a:not(.btn),html .table-blue a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=dark] .table-blue a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=light] .table-blue a:not(.btn){font-weight:700;color:#084298}html .alert.alert-blue .btn:not([class*=btn-outline]),html .table-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue a:not(.btn){font-weight:700;color:#9ec5fe}}@media print{html .badge.bg-blue,html .toast.bg-blue,html .toast-header.bg-blue,html .progress-bar.bg-blue,html[data-netbox-color-mode=dark] .badge.bg-blue,html[data-netbox-color-mode=dark] .toast.bg-blue,html[data-netbox-color-mode=dark] .toast-header.bg-blue,html[data-netbox-color-mode=dark] .progress-bar.bg-blue,html[data-netbox-color-mode=light] .badge.bg-blue,html[data-netbox-color-mode=light] .toast.bg-blue,html[data-netbox-color-mode=light] .toast-header.bg-blue,html[data-netbox-color-mode=light] .progress-bar.bg-blue{color:#fff}}@media print{html .bg-indigo button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo button.btn-close,html[data-netbox-color-mode=light] .bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo{color:#6610f2}html .btn.btn-ghost-indigo:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo:hover{background-color:#6610f21f}}@media print{html .alert.alert-indigo a:not(.btn),html .table-indigo a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=light] .table-indigo a:not(.btn){font-weight:700;color:#3d0a91}html .alert.alert-indigo .btn:not([class*=btn-outline]),html .table-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo a:not(.btn){font-weight:700;color:#c29ffa}}@media print{html .badge.bg-indigo,html .toast.bg-indigo,html .toast-header.bg-indigo,html .progress-bar.bg-indigo,html[data-netbox-color-mode=dark] .badge.bg-indigo,html[data-netbox-color-mode=dark] .toast.bg-indigo,html[data-netbox-color-mode=dark] .toast-header.bg-indigo,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo,html[data-netbox-color-mode=light] .badge.bg-indigo,html[data-netbox-color-mode=light] .toast.bg-indigo,html[data-netbox-color-mode=light] .toast-header.bg-indigo,html[data-netbox-color-mode=light] .progress-bar.bg-indigo{color:#fff}}@media print{html .bg-purple button.btn-close,html[data-netbox-color-mode=dark] .bg-purple button.btn-close,html[data-netbox-color-mode=light] .bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple,html[data-netbox-color-mode=light] .btn.btn-ghost-purple{color:#6f42c1}html .btn.btn-ghost-purple:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple:hover{background-color:#6f42c11f}}@media print{html .alert.alert-purple a:not(.btn),html .table-purple a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=dark] .table-purple a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=light] .table-purple a:not(.btn){font-weight:700;color:#432874}html .alert.alert-purple .btn:not([class*=btn-outline]),html .table-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple a:not(.btn){font-weight:700;color:#c5b3e6}}@media print{html .badge.bg-purple,html .toast.bg-purple,html .toast-header.bg-purple,html .progress-bar.bg-purple,html[data-netbox-color-mode=dark] .badge.bg-purple,html[data-netbox-color-mode=dark] .toast.bg-purple,html[data-netbox-color-mode=dark] .toast-header.bg-purple,html[data-netbox-color-mode=dark] .progress-bar.bg-purple,html[data-netbox-color-mode=light] .badge.bg-purple,html[data-netbox-color-mode=light] .toast.bg-purple,html[data-netbox-color-mode=light] .toast-header.bg-purple,html[data-netbox-color-mode=light] .progress-bar.bg-purple{color:#fff}}@media print{html .bg-pink button.btn-close,html[data-netbox-color-mode=dark] .bg-pink button.btn-close,html[data-netbox-color-mode=light] .bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink,html[data-netbox-color-mode=light] .btn.btn-ghost-pink{color:#d63384}html .btn.btn-ghost-pink:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink:hover{background-color:#d633841f}}@media print{html .alert.alert-pink a:not(.btn),html .table-pink a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=dark] .table-pink a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=light] .table-pink a:not(.btn){font-weight:700;color:#801f4f}html .alert.alert-pink .btn:not([class*=btn-outline]),html .table-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink a:not(.btn){font-weight:700;color:#efadce}}@media print{html .badge.bg-pink,html .toast.bg-pink,html .toast-header.bg-pink,html .progress-bar.bg-pink,html[data-netbox-color-mode=dark] .badge.bg-pink,html[data-netbox-color-mode=dark] .toast.bg-pink,html[data-netbox-color-mode=dark] .toast-header.bg-pink,html[data-netbox-color-mode=dark] .progress-bar.bg-pink,html[data-netbox-color-mode=light] .badge.bg-pink,html[data-netbox-color-mode=light] .toast.bg-pink,html[data-netbox-color-mode=light] .toast-header.bg-pink,html[data-netbox-color-mode=light] .progress-bar.bg-pink{color:#fff}}@media print{html .bg-red button.btn-close,html[data-netbox-color-mode=dark] .bg-red button.btn-close,html[data-netbox-color-mode=light] .bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red,html[data-netbox-color-mode=dark] .btn.btn-ghost-red,html[data-netbox-color-mode=light] .btn.btn-ghost-red{color:#dc3545}html .btn.btn-ghost-red:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red:hover{background-color:#dc35451f}}@media print{html .alert.alert-red a:not(.btn),html .table-red a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=dark] .table-red a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=light] .table-red a:not(.btn){font-weight:700;color:#842029}html .alert.alert-red .btn:not([class*=btn-outline]),html .table-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red a:not(.btn){font-weight:700;color:#f1aeb5}}@media print{html .badge.bg-red,html .toast.bg-red,html .toast-header.bg-red,html .progress-bar.bg-red,html[data-netbox-color-mode=dark] .badge.bg-red,html[data-netbox-color-mode=dark] .toast.bg-red,html[data-netbox-color-mode=dark] .toast-header.bg-red,html[data-netbox-color-mode=dark] .progress-bar.bg-red,html[data-netbox-color-mode=light] .badge.bg-red,html[data-netbox-color-mode=light] .toast.bg-red,html[data-netbox-color-mode=light] .toast-header.bg-red,html[data-netbox-color-mode=light] .progress-bar.bg-red{color:#fff}}@media print{html .bg-orange button.btn-close,html[data-netbox-color-mode=dark] .bg-orange button.btn-close,html[data-netbox-color-mode=light] .bg-orange button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23984c0c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-orange,html[data-netbox-color-mode=dark] .btn.btn-ghost-orange,html[data-netbox-color-mode=light] .btn.btn-ghost-orange{color:#fd7e14}html .btn.btn-ghost-orange:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-orange:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-orange:hover{background-color:#fd7e141f}}@media print{html .alert.alert-orange a:not(.btn),html .table-orange a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-orange a:not(.btn),html[data-netbox-color-mode=dark] .table-orange a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-orange a:not(.btn),html[data-netbox-color-mode=light] .table-orange a:not(.btn){font-weight:700;color:#984c0c}html .alert.alert-orange .btn:not([class*=btn-outline]),html .table-orange .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-orange .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-orange .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-orange .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-orange .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-orange a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-orange a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-orange a:not(.btn){font-weight:700;color:#653208}}@media print{html .badge.bg-orange,html .toast.bg-orange,html .toast-header.bg-orange,html .progress-bar.bg-orange,html[data-netbox-color-mode=dark] .badge.bg-orange,html[data-netbox-color-mode=dark] .toast.bg-orange,html[data-netbox-color-mode=dark] .toast-header.bg-orange,html[data-netbox-color-mode=dark] .progress-bar.bg-orange,html[data-netbox-color-mode=light] .badge.bg-orange,html[data-netbox-color-mode=light] .toast.bg-orange,html[data-netbox-color-mode=light] .toast-header.bg-orange,html[data-netbox-color-mode=light] .progress-bar.bg-orange{color:#000}}@media print{html .bg-yellow button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow button.btn-close,html[data-netbox-color-mode=light] .bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow{color:#ffc107}html .btn.btn-ghost-yellow:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow:hover{background-color:#ffc1071f}}@media print{html .alert.alert-yellow a:not(.btn),html .table-yellow a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=light] .table-yellow a:not(.btn){font-weight:700;color:#664d03}html .alert.alert-yellow .btn:not([class*=btn-outline]),html .table-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow a:not(.btn){font-weight:700;color:#664d03}}@media print{html .badge.bg-yellow,html .toast.bg-yellow,html .toast-header.bg-yellow,html .progress-bar.bg-yellow,html[data-netbox-color-mode=dark] .badge.bg-yellow,html[data-netbox-color-mode=dark] .toast.bg-yellow,html[data-netbox-color-mode=dark] .toast-header.bg-yellow,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow,html[data-netbox-color-mode=light] .badge.bg-yellow,html[data-netbox-color-mode=light] .toast.bg-yellow,html[data-netbox-color-mode=light] .toast-header.bg-yellow,html[data-netbox-color-mode=light] .progress-bar.bg-yellow{color:#000}}@media print{html .bg-green button.btn-close,html[data-netbox-color-mode=dark] .bg-green button.btn-close,html[data-netbox-color-mode=light] .bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green,html[data-netbox-color-mode=dark] .btn.btn-ghost-green,html[data-netbox-color-mode=light] .btn.btn-ghost-green{color:#198754}html .btn.btn-ghost-green:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green:hover{background-color:#1987541f}}@media print{html .alert.alert-green a:not(.btn),html .table-green a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=dark] .table-green a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=light] .table-green a:not(.btn){font-weight:700;color:#0f5132}html .alert.alert-green .btn:not([class*=btn-outline]),html .table-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green a:not(.btn){font-weight:700;color:#a3cfbb}}@media print{html .badge.bg-green,html .toast.bg-green,html .toast-header.bg-green,html .progress-bar.bg-green,html[data-netbox-color-mode=dark] .badge.bg-green,html[data-netbox-color-mode=dark] .toast.bg-green,html[data-netbox-color-mode=dark] .toast-header.bg-green,html[data-netbox-color-mode=dark] .progress-bar.bg-green,html[data-netbox-color-mode=light] .badge.bg-green,html[data-netbox-color-mode=light] .toast.bg-green,html[data-netbox-color-mode=light] .toast-header.bg-green,html[data-netbox-color-mode=light] .progress-bar.bg-green{color:#fff}}@media print{html .bg-teal button.btn-close,html[data-netbox-color-mode=dark] .bg-teal button.btn-close,html[data-netbox-color-mode=light] .bg-teal button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2313795b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-teal,html[data-netbox-color-mode=dark] .btn.btn-ghost-teal,html[data-netbox-color-mode=light] .btn.btn-ghost-teal{color:#20c997}html .btn.btn-ghost-teal:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-teal:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-teal:hover{background-color:#20c9971f}}@media print{html .alert.alert-teal a:not(.btn),html .table-teal a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-teal a:not(.btn),html[data-netbox-color-mode=dark] .table-teal a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-teal a:not(.btn),html[data-netbox-color-mode=light] .table-teal a:not(.btn){font-weight:700;color:#13795b}html .alert.alert-teal .btn:not([class*=btn-outline]),html .table-teal .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-teal .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-teal .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-teal .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-teal .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-teal a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-teal a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-teal a:not(.btn){font-weight:700;color:#0d503c}}@media print{html .badge.bg-teal,html .toast.bg-teal,html .toast-header.bg-teal,html .progress-bar.bg-teal,html[data-netbox-color-mode=dark] .badge.bg-teal,html[data-netbox-color-mode=dark] .toast.bg-teal,html[data-netbox-color-mode=dark] .toast-header.bg-teal,html[data-netbox-color-mode=dark] .progress-bar.bg-teal,html[data-netbox-color-mode=light] .badge.bg-teal,html[data-netbox-color-mode=light] .toast.bg-teal,html[data-netbox-color-mode=light] .toast-header.bg-teal,html[data-netbox-color-mode=light] .progress-bar.bg-teal{color:#000}}@media print{html .bg-cyan button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan button.btn-close,html[data-netbox-color-mode=light] .bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan{color:#0dcaf0}html .btn.btn-ghost-cyan:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan:hover{background-color:#0dcaf01f}}@media print{html .alert.alert-cyan a:not(.btn),html .table-cyan a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=light] .table-cyan a:not(.btn){font-weight:700;color:#055160}html .alert.alert-cyan .btn:not([class*=btn-outline]),html .table-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan a:not(.btn){font-weight:700;color:#055160}}@media print{html .badge.bg-cyan,html .toast.bg-cyan,html .toast-header.bg-cyan,html .progress-bar.bg-cyan,html[data-netbox-color-mode=dark] .badge.bg-cyan,html[data-netbox-color-mode=dark] .toast.bg-cyan,html[data-netbox-color-mode=dark] .toast-header.bg-cyan,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan,html[data-netbox-color-mode=light] .badge.bg-cyan,html[data-netbox-color-mode=light] .toast.bg-cyan,html[data-netbox-color-mode=light] .toast-header.bg-cyan,html[data-netbox-color-mode=light] .progress-bar.bg-cyan{color:#000}}@media print{html .bg-gray button.btn-close,html[data-netbox-color-mode=dark] .bg-gray button.btn-close,html[data-netbox-color-mode=light] .bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23686d71'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray,html[data-netbox-color-mode=light] .btn.btn-ghost-gray{color:#adb5bd}html .btn.btn-ghost-gray:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray:hover{background-color:#adb5bd1f}}@media print{html .alert.alert-gray a:not(.btn),html .table-gray a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=dark] .table-gray a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=light] .table-gray a:not(.btn){font-weight:700;color:#686d71}html .alert.alert-gray .btn:not([class*=btn-outline]),html .table-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray a:not(.btn){font-weight:700;color:#45484c}}@media print{html .badge.bg-gray,html .toast.bg-gray,html .toast-header.bg-gray,html .progress-bar.bg-gray,html[data-netbox-color-mode=dark] .badge.bg-gray,html[data-netbox-color-mode=dark] .toast.bg-gray,html[data-netbox-color-mode=dark] .toast-header.bg-gray,html[data-netbox-color-mode=dark] .progress-bar.bg-gray,html[data-netbox-color-mode=light] .badge.bg-gray,html[data-netbox-color-mode=light] .toast.bg-gray,html[data-netbox-color-mode=light] .toast-header.bg-gray,html[data-netbox-color-mode=light] .progress-bar.bg-gray{color:#000}}@media print{html .bg-black button.btn-close,html[data-netbox-color-mode=dark] .bg-black button.btn-close,html[data-netbox-color-mode=light] .bg-black button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='black'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-black,html[data-netbox-color-mode=dark] .btn.btn-ghost-black,html[data-netbox-color-mode=light] .btn.btn-ghost-black{color:#000}html .btn.btn-ghost-black:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-black:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-black:hover{background-color:#0000001f}}@media print{html .alert.alert-black a:not(.btn),html .table-black a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-black a:not(.btn),html[data-netbox-color-mode=dark] .table-black a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-black a:not(.btn),html[data-netbox-color-mode=light] .table-black a:not(.btn){font-weight:700;color:#000}html .alert.alert-black .btn:not([class*=btn-outline]),html .table-black .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-black .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-black .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-black .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-black .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-black a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-black a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-black a:not(.btn){font-weight:700;color:#999}}@media print{html .badge.bg-black,html .toast.bg-black,html .toast-header.bg-black,html .progress-bar.bg-black,html[data-netbox-color-mode=dark] .badge.bg-black,html[data-netbox-color-mode=dark] .toast.bg-black,html[data-netbox-color-mode=dark] .toast-header.bg-black,html[data-netbox-color-mode=dark] .progress-bar.bg-black,html[data-netbox-color-mode=light] .badge.bg-black,html[data-netbox-color-mode=light] .toast.bg-black,html[data-netbox-color-mode=light] .toast-header.bg-black,html[data-netbox-color-mode=light] .progress-bar.bg-black{color:#fff}}@media print{html .bg-white button.btn-close,html[data-netbox-color-mode=dark] .bg-white button.btn-close,html[data-netbox-color-mode=light] .bg-white button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23666666'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-white,html[data-netbox-color-mode=dark] .btn.btn-ghost-white,html[data-netbox-color-mode=light] .btn.btn-ghost-white{color:#fff}html .btn.btn-ghost-white:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-white:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-white:hover{background-color:#ffffff1f}}@media print{html .alert.alert-white a:not(.btn),html .table-white a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-white a:not(.btn),html[data-netbox-color-mode=dark] .table-white a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-white a:not(.btn),html[data-netbox-color-mode=light] .table-white a:not(.btn){font-weight:700;color:#666}html .alert.alert-white .btn:not([class*=btn-outline]),html .table-white .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-white .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-white .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-white .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-white .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-white a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-white a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-white a:not(.btn){font-weight:700;color:#666}}@media print{html .badge.bg-white,html .toast.bg-white,html .toast-header.bg-white,html .progress-bar.bg-white,html[data-netbox-color-mode=dark] .badge.bg-white,html[data-netbox-color-mode=dark] .toast.bg-white,html[data-netbox-color-mode=dark] .toast-header.bg-white,html[data-netbox-color-mode=dark] .progress-bar.bg-white,html[data-netbox-color-mode=light] .badge.bg-white,html[data-netbox-color-mode=light] .toast.bg-white,html[data-netbox-color-mode=light] .toast-header.bg-white,html[data-netbox-color-mode=light] .progress-bar.bg-white{color:#000}}@media print{html table td>.progress,html[data-netbox-color-mode=dark] table td>.progress,html[data-netbox-color-mode=light] table td>.progress{min-width:6rem}}@media print{html .small .form-control,html[data-netbox-color-mode=dark] .small .form-control,html[data-netbox-color-mode=light] .small .form-control{font-size:.875rem}}@media print{html :not(.card-body)>.col:not(:last-child):not(:only-child),html[data-netbox-color-mode=dark] :not(.card-body)>.col:not(:last-child):not(:only-child),html[data-netbox-color-mode=light] :not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}}@media print{html .nav-mobile,html[data-netbox-color-mode=dark] .nav-mobile,html[data-netbox-color-mode=light] .nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}}@media print and (max-width: 991.98px){html .nav-mobile,html[data-netbox-color-mode=dark] .nav-mobile,html[data-netbox-color-mode=light] .nav-mobile{display:flex}}@media print{html .nav-mobile .nav-mobile-top,html[data-netbox-color-mode=dark] .nav-mobile .nav-mobile-top,html[data-netbox-color-mode=light] .nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}}@media print{html .card>.table.table-flush,html[data-netbox-color-mode=dark] .card>.table.table-flush,html[data-netbox-color-mode=light] .card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .card>.table.table-flush thead th[scope=col],html[data-netbox-color-mode=dark] .card>.table.table-flush thead th[scope=col],html[data-netbox-color-mode=light] .card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#f8f9fa;border-top:1px solid rgba(0,0,0,.125);border-bottom-color:#00000020}html .card>.table.table-flush th,html .card>.table.table-flush td,html[data-netbox-color-mode=dark] .card>.table.table-flush th,html[data-netbox-color-mode=dark] .card>.table.table-flush td,html[data-netbox-color-mode=light] .card>.table.table-flush th,html[data-netbox-color-mode=light] .card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}html .card>.table.table-flush tr[class],html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class],html[data-netbox-color-mode=light] .card>.table.table-flush tr[class]{border-color:#00000020!important}html .card>.table.table-flush tr[class]:last-of-type,html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]:last-of-type,html[data-netbox-color-mode=light] .card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}}@media print{html .header-alert-container,html[data-netbox-color-mode=dark] .header-alert-container,html[data-netbox-color-mode=light] .header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{width:100%}}@media print and (min-width: 768px){html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{max-width:75%}}@media print and (min-width: 992px){html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{max-width:50%}}@media print{html span.profile-button .dropdown-menu,html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu,html[data-netbox-color-mode=light] span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}html span.profile-button .dropdown-menu:not(.show),html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu:not(.show),html[data-netbox-color-mode=light] span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}html span.profile-button .dropdown-menu.show,html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu.show,html[data-netbox-color-mode=light] span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}}@media print{html div#advanced-search-content div.card div.card-body div.col:not(:last-child),html[data-netbox-color-mode=dark] div#advanced-search-content div.card div.card-body div.col:not(:last-child),html[data-netbox-color-mode=light] div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}}@media print{html table td a,html[data-netbox-color-mode=dark] table td a,html[data-netbox-color-mode=light] table td a{text-decoration:none}html table td a:hover,html[data-netbox-color-mode=dark] table td a:hover,html[data-netbox-color-mode=light] table td a:hover{text-decoration:underline}html table td .dropdown,html[data-netbox-color-mode=dark] table td .dropdown,html[data-netbox-color-mode=light] table td .dropdown{position:static}html table th a,html table th a:hover,html[data-netbox-color-mode=dark] table th a,html[data-netbox-color-mode=dark] table th a:hover,html[data-netbox-color-mode=light] table th a,html[data-netbox-color-mode=light] table th a:hover{color:#212529;text-decoration:none}html table td,html table th,html[data-netbox-color-mode=dark] table td,html[data-netbox-color-mode=dark] table th,html[data-netbox-color-mode=light] table td,html[data-netbox-color-mode=light] table th{font-size:.875rem;line-height:1.25;vertical-align:middle}html table td.min-width,html table th.min-width,html[data-netbox-color-mode=dark] table td.min-width,html[data-netbox-color-mode=dark] table th.min-width,html[data-netbox-color-mode=light] table td.min-width,html[data-netbox-color-mode=light] table th.min-width{width:1%}html table td .form-check-input,html table th .form-check-input,html[data-netbox-color-mode=dark] table td .form-check-input,html[data-netbox-color-mode=dark] table th .form-check-input,html[data-netbox-color-mode=light] table td .form-check-input,html[data-netbox-color-mode=light] table th .form-check-input{margin-top:.125em;font-size:1rem}html table td .btn-sm,html table td .btn-group-sm>.btn,html table th .btn-sm,html table th .btn-group-sm>.btn,html[data-netbox-color-mode=dark] table td .btn-sm,html[data-netbox-color-mode=dark] table th .btn-sm,html[data-netbox-color-mode=light] table td .btn-sm,html[data-netbox-color-mode=light] table th .btn-sm{line-height:1}html table td p,html table th p,html[data-netbox-color-mode=dark] table td p,html[data-netbox-color-mode=dark] table th p,html[data-netbox-color-mode=light] table td p,html[data-netbox-color-mode=light] table th p{margin-bottom:.5em}html table td p:last-child,html table th p:last-child,html[data-netbox-color-mode=dark] table td p:last-child,html[data-netbox-color-mode=dark] table th p:last-child,html[data-netbox-color-mode=light] table td p:last-child,html[data-netbox-color-mode=light] table th p:last-child{margin-bottom:0}html table th.asc>a:after,html[data-netbox-color-mode=dark] table th.asc>a:after,html[data-netbox-color-mode=light] table th.asc>a:after{content:"\f0140";font-family:Material Design Icons}html table th.desc>a:after,html[data-netbox-color-mode=dark] table th.desc>a:after,html[data-netbox-color-mode=light] table th.desc>a:after{content:"\f0143";font-family:Material Design Icons}html table.table>:not(caption)>*>*,html[data-netbox-color-mode=dark] table.table>:not(caption)>*>*,html[data-netbox-color-mode=light] table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}html table.object-list th,html[data-netbox-color-mode=dark] table.object-list th,html[data-netbox-color-mode=light] table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}html table.attr-table th,html[data-netbox-color-mode=dark] table.attr-table th,html[data-netbox-color-mode=light] table.attr-table th{font-weight:400;width:25%}}@media print{html div.title-container,html[data-netbox-color-mode=dark] div.title-container,html[data-netbox-color-mode=light] div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}}@media print and (min-width: 992px){html div.title-container,html[data-netbox-color-mode=dark] div.title-container,html[data-netbox-color-mode=light] div.title-container{flex-direction:row}}@media print{html div.title-container #content-title,html[data-netbox-color-mode=dark] div.title-container #content-title,html[data-netbox-color-mode=light] div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}}@media print{html .controls,html[data-netbox-color-mode=dark] .controls,html[data-netbox-color-mode=light] .controls{margin-bottom:.5rem}}@media print{html .controls,html[data-netbox-color-mode=dark] .controls,html[data-netbox-color-mode=light] .controls{display:none!important}}@media print{html .controls .control-group,html[data-netbox-color-mode=dark] .controls .control-group,html[data-netbox-color-mode=light] .controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}}@media print and (min-width: 992px){html .controls .control-group,html[data-netbox-color-mode=dark] .controls .control-group,html[data-netbox-color-mode=light] .controls .control-group{justify-content:flex-end}}@media print{html .controls .control-group>*,html[data-netbox-color-mode=dark] .controls .control-group>*,html[data-netbox-color-mode=light] .controls .control-group>*{margin:.25rem}html .controls .control-group>*:first-child,html[data-netbox-color-mode=dark] .controls .control-group>*:first-child,html[data-netbox-color-mode=light] .controls .control-group>*:first-child{margin-left:0}html .controls .control-group>*:last-child,html[data-netbox-color-mode=dark] .controls .control-group>*:last-child,html[data-netbox-color-mode=light] .controls .control-group>*:last-child{margin-right:0}}@media print{html .object-subtitle,html[data-netbox-color-mode=dark] .object-subtitle,html[data-netbox-color-mode=light] .object-subtitle{display:block;font-size:.875rem;color:#6c757d}}@media print and (min-width: 768px){html .object-subtitle,html[data-netbox-color-mode=dark] .object-subtitle,html[data-netbox-color-mode=light] .object-subtitle{display:inline-block}}@media print{html .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=light] .object-subtitle>span{display:block}html .object-subtitle>span.separator,html[data-netbox-color-mode=dark] .object-subtitle>span.separator,html[data-netbox-color-mode=light] .object-subtitle>span.separator{display:none}}@media print and (min-width: 768px){html .object-subtitle>span,html .object-subtitle>span.separator,html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span.separator,html[data-netbox-color-mode=light] .object-subtitle>span,html[data-netbox-color-mode=light] .object-subtitle>span.separator{display:inline-block}}@media print{html nav.search,html[data-netbox-color-mode=dark] nav.search,html[data-netbox-color-mode=light] nav.search{z-index:999;justify-content:center;background-color:#f8f9fa}html nav.search .search-container,html[data-netbox-color-mode=dark] nav.search .search-container,html[data-netbox-color-mode=light] nav.search .search-container{display:flex;width:100%}}@media print and (max-width: 991.98px){html nav.search .search-container,html[data-netbox-color-mode=dark] nav.search .search-container,html[data-netbox-color-mode=light] nav.search .search-container{display:none}}@media print{html nav.search .input-group .search-obj-selected,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selected,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selected{border-color:#ced4da}html nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle{color:#000;border-color:#ced4da;margin-left:0;font-weight:400;line-height:1.5;color:#212529;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}html nav.search .input-group .dropdown-toggle:hover,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:hover,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:hover{color:#000;background-color:#eceff1;border-color:#d3d8de}.btn-check:focus+html nav.search .input-group .dropdown-toggle,html nav.search .input-group .dropdown-toggle:focus,.btn-check:focus+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:focus+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus{color:#000;background-color:#eceff1;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+html nav.search .input-group .dropdown-toggle,.btn-check:active+html nav.search .input-group .dropdown-toggle,html nav.search .input-group .dropdown-toggle:active,html nav.search .input-group .dropdown-toggle.active,.show>html nav.search .input-group .dropdown-toggle.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#d3d8de}.btn-check:checked+html nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html nav.search .input-group .dropdown-toggle:focus,html nav.search .input-group .dropdown-toggle:active:focus,html nav.search .input-group .dropdown-toggle.active:focus,.show>html nav.search .input-group .dropdown-toggle.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}html nav.search .input-group .dropdown-toggle:disabled,html nav.search .input-group .dropdown-toggle.disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.disabled,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.disabled{color:#000;background-color:#e9ecef;border-color:#ced4da}html nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}html nav.search .input-group .dropdown-toggle:after,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:after,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:after{display:none}html nav.search .input-group .search-obj-selector,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}html nav.search .input-group .search-obj-selector .dropdown-item,html nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}html nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}}@media print{html .quicksearch input[type=search],html[data-netbox-color-mode=dark] .quicksearch input[type=search],html[data-netbox-color-mode=light] .quicksearch input[type=search]{border-radius:.375rem!important}html .quicksearch button,html[data-netbox-color-mode=dark] .quicksearch button,html[data-netbox-color-mode=light] .quicksearch button{margin-left:-32px!important;z-index:100!important;outline:none!important;border-radius:.375rem!important;transition:visibility 0s,opacity .2s linear}html .quicksearch button :hover,html[data-netbox-color-mode=dark] .quicksearch button :hover,html[data-netbox-color-mode=light] .quicksearch button :hover{opacity:50%;transition:visibility 0s,opacity .1s linear}}@media print{html main.layout,html[data-netbox-color-mode=dark] main.layout,html[data-netbox-color-mode=light] main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}}@media print{html main.layout,html[data-netbox-color-mode=dark] main.layout,html[data-netbox-color-mode=light] main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}@media print{html main.login-container,html[data-netbox-color-mode=dark] main.login-container,html[data-netbox-color-mode=light] main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}html main.login-container+footer.footer button.color-mode-toggle,html[data-netbox-color-mode=dark] main.login-container+footer.footer button.color-mode-toggle,html[data-netbox-color-mode=light] main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}}@media print{html .footer,html[data-netbox-color-mode=dark] .footer,html[data-netbox-color-mode=light] .footer{background-color:#f8f9fa;padding:0}html .footer .nav-link,html[data-netbox-color-mode=dark] .footer .nav-link,html[data-netbox-color-mode=light] .footer .nav-link{padding:.5rem}}@media print and (max-width: 767.98px){html .footer,html[data-netbox-color-mode=dark] .footer,html[data-netbox-color-mode=light] .footer{margin-bottom:8rem}}@media print{html footer.login-footer,html[data-netbox-color-mode=dark] footer.login-footer,html[data-netbox-color-mode=light] footer.login-footer{height:4rem;margin-top:auto}html footer.login-footer .container-fluid,html footer.login-footer .container-sm,html footer.login-footer .container-md,html footer.login-footer .container-lg,html footer.login-footer .container-xl,html footer.login-footer .container-xxl,html[data-netbox-color-mode=dark] footer.login-footer .container-fluid,html[data-netbox-color-mode=light] footer.login-footer .container-fluid{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}}@media print{html h1.accordion-item-title,html .accordion-item-title.h1,html h2.accordion-item-title,html .accordion-item-title.h2,html h3.accordion-item-title,html .accordion-item-title.h3,html h4.accordion-item-title,html .accordion-item-title.h4,html h5.accordion-item-title,html .accordion-item-title.h5,html h6.accordion-item-title,html .accordion-item-title.h6,html[data-netbox-color-mode=dark] h1.accordion-item-title,html[data-netbox-color-mode=dark] h2.accordion-item-title,html[data-netbox-color-mode=dark] h3.accordion-item-title,html[data-netbox-color-mode=dark] h4.accordion-item-title,html[data-netbox-color-mode=dark] h5.accordion-item-title,html[data-netbox-color-mode=dark] h6.accordion-item-title,html[data-netbox-color-mode=light] h1.accordion-item-title,html[data-netbox-color-mode=light] h2.accordion-item-title,html[data-netbox-color-mode=light] h3.accordion-item-title,html[data-netbox-color-mode=light] h4.accordion-item-title,html[data-netbox-color-mode=light] h5.accordion-item-title,html[data-netbox-color-mode=light] h6.accordion-item-title{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}}@media print{html .form-login,html[data-netbox-color-mode=dark] .form-login,html[data-netbox-color-mode=light] .form-login{width:100%;max-width:330px;padding:15px}html .form-login input:focus,html[data-netbox-color-mode=dark] .form-login input:focus,html[data-netbox-color-mode=light] .form-login input:focus{z-index:1}html .form-login input[type=text],html[data-netbox-color-mode=dark] .form-login input[type=text],html[data-netbox-color-mode=light] .form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}html .form-login input[type=password],html[data-netbox-color-mode=dark] .form-login input[type=password],html[data-netbox-color-mode=light] .form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}html .form-login .form-control,html[data-netbox-color-mode=dark] .form-login .form-control,html[data-netbox-color-mode=light] .form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}}@media print{html .navbar,html[data-netbox-color-mode=dark] .navbar,html[data-netbox-color-mode=light] .navbar{border-bottom:1px solid #ced4da}}@media print{html .navbar-brand,html[data-netbox-color-mode=dark] .navbar-brand,html[data-netbox-color-mode=light] .navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}}@media print{html nav.nav.nav-pills .nav-item.nav-link,html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link,html[data-netbox-color-mode=light] nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html nav.nav.nav-pills .nav-item.nav-link:hover,html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link:hover,html[data-netbox-color-mode=light] nav.nav.nav-pills .nav-item.nav-link:hover{color:#343a40;background-color:#cfe2ff}}@media print{html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}html div.content-container:focus,html div.content-container:focus-visible,html[data-netbox-color-mode=dark] div.content-container:focus,html[data-netbox-color-mode=dark] div.content-container:focus-visible,html[data-netbox-color-mode=light] div.content-container:focus,html[data-netbox-color-mode=light] div.content-container:focus-visible{outline:0}html div.content-container div.content,html[data-netbox-color-mode=dark] div.content-container div.content,html[data-netbox-color-mode=light] div.content-container div.content{background-color:#f8f9fa;flex:1}}@media print and (max-width: 991.98px){html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{width:100%}}@media print{html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{width:100%!important;margin-left:0!important}}@media print and (max-width: 768px){html .sidebar.collapse.show~.content-container>.content,html[data-netbox-color-mode=dark] .sidebar.collapse.show~.content-container>.content,html[data-netbox-color-mode=light] .sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}@media print{html .tooltip,html[data-netbox-color-mode=dark] .tooltip,html[data-netbox-color-mode=light] .tooltip{pointer-events:none}}@media print{html span.color-label,html[data-netbox-color-mode=dark] span.color-label,html[data-netbox-color-mode=light] span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}}@media print{html .badge a,html[data-netbox-color-mode=dark] .badge a,html[data-netbox-color-mode=light] .badge a{color:inherit}}@media print{html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{white-space:nowrap}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{box-shadow:0 .125rem .25rem #00000013}html .card .card-header,html[data-netbox-color-mode=dark] .card .card-header,html[data-netbox-color-mode=light] .card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}html .card .card-header+.card-body,html[data-netbox-color-mode=dark] .card .card-header+.card-body,html[data-netbox-color-mode=light] .card .card-header+.card-body{padding-top:0}html .card .card-body.small .form-control,html .card .card-body.small .form-select,html[data-netbox-color-mode=dark] .card .card-body.small .form-control,html[data-netbox-color-mode=dark] .card .card-body.small .form-select,html[data-netbox-color-mode=light] .card .card-body.small .form-control,html[data-netbox-color-mode=light] .card .card-body.small .form-select{font-size:.875rem}html .card .card-divider,html[data-netbox-color-mode=dark] .card .card-divider,html[data-netbox-color-mode=light] .card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(0,0,0,.125);opacity:.25}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{box-shadow:unset!important}}@media print{html .form-floating,html[data-netbox-color-mode=dark] .form-floating,html[data-netbox-color-mode=light] .form-floating{position:relative}html .form-floating>.input-group>.form-control,html .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}html .form-floating>.input-group>label,html[data-netbox-color-mode=dark] .form-floating>.input-group>label,html[data-netbox-color-mode=light] .form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-floating>.input-group>label,html[data-netbox-color-mode=dark] .form-floating>.input-group>label,html[data-netbox-color-mode=light] .form-floating>.input-group>label{transition:none}}@media print{html .form-floating>.input-group>.form-control::placeholder,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control::placeholder,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control::placeholder{color:transparent}html .form-floating>.input-group>.form-control:focus,html .form-floating>.input-group>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html .form-floating>.input-group>.form-control:-webkit-autofill,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.input-group>.form-select,html .form-floating>.choices>.choices__inner,html .form-floating>.ss-main span.placeholder,html .form-floating>.ss-main div.ss-values,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=dark] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=dark] .form-floating>.ss-main div.ss-values,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=light] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=light] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=light] .form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.input-group>.form-control:focus~label,html .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html .form-floating>.input-group>.form-select~label,html .form-floating>.choices~label,html .form-floating>.ss-main~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.choices~label,html[data-netbox-color-mode=dark] .form-floating>.ss-main~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=light] .form-floating>.choices~label,html[data-netbox-color-mode=light] .form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}}@media print{html .form-floating>.input-group>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .form-object-edit,html[data-netbox-color-mode=dark] .form-object-edit,html[data-netbox-color-mode=light] .form-object-edit{margin:0 auto;max-width:800px}}@media print{html textarea.form-control[rows="10"],html[data-netbox-color-mode=dark] textarea.form-control[rows="10"],html[data-netbox-color-mode=light] textarea.form-control[rows="10"]{height:18rem}}@media print{html textarea.markdown,html textarea.form-control[name=csv],html[data-netbox-color-mode=dark] textarea.markdown,html[data-netbox-color-mode=dark] textarea.form-control[name=csv],html[data-netbox-color-mode=light] textarea.markdown,html[data-netbox-color-mode=light] textarea.form-control[name=csv]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}}@media print{html .card:not(:only-of-type),html[data-netbox-color-mode=dark] .card:not(:only-of-type),html[data-netbox-color-mode=light] .card:not(:only-of-type){margin-bottom:1rem}}@media print{html .stat-btn,html[data-netbox-color-mode=dark] .stat-btn,html[data-netbox-color-mode=light] .stat-btn{min-width:3rem}}@media print{html nav.breadcrumb-container,html[data-netbox-color-mode=dark] nav.breadcrumb-container,html[data-netbox-color-mode=light] nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}html nav.breadcrumb-container ol.breadcrumb,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}html nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}html nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}}@media print{html label.required,html[data-netbox-color-mode=dark] label.required,html[data-netbox-color-mode=light] label.required{font-weight:700}html label.required:after,html[data-netbox-color-mode=dark] label.required:after,html[data-netbox-color-mode=light] label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:Material Design Icons;font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}}@media print{html div.bulk-buttons,html[data-netbox-color-mode=dark] div.bulk-buttons,html[data-netbox-color-mode=light] div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}html div.bulk-buttons>div.bulk-button-group,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}html div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}html div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}html div.bulk-buttons>div.bulk-button-group>*,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group>*,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}}@media print{html table tbody tr.primary,html[data-netbox-color-mode=dark] table tbody tr.primary,html[data-netbox-color-mode=light] table tbody tr.primary{background-color:#337ab726;border-color:#adb5bd}html table tbody tr.secondary,html[data-netbox-color-mode=dark] table tbody tr.secondary,html[data-netbox-color-mode=light] table tbody tr.secondary{background-color:#6c757d26;border-color:#adb5bd}html table tbody tr.success,html[data-netbox-color-mode=dark] table tbody tr.success,html[data-netbox-color-mode=light] table tbody tr.success{background-color:#19875426;border-color:#adb5bd}html table tbody tr.info,html[data-netbox-color-mode=dark] table tbody tr.info,html[data-netbox-color-mode=light] table tbody tr.info{background-color:#54d6f026;border-color:#adb5bd}html table tbody tr.warning,html[data-netbox-color-mode=dark] table tbody tr.warning,html[data-netbox-color-mode=light] table tbody tr.warning{background-color:#ffc10726;border-color:#adb5bd}html table tbody tr.danger,html[data-netbox-color-mode=dark] table tbody tr.danger,html[data-netbox-color-mode=light] table tbody tr.danger{background-color:#dc354526;border-color:#adb5bd}html table tbody tr.light,html[data-netbox-color-mode=dark] table tbody tr.light,html[data-netbox-color-mode=light] table tbody tr.light{background-color:#e9ecef26;border-color:#adb5bd}html table tbody tr.dark,html[data-netbox-color-mode=dark] table tbody tr.dark,html[data-netbox-color-mode=light] table tbody tr.dark{background-color:#343a4026;border-color:#adb5bd}html table tbody tr.blue,html[data-netbox-color-mode=dark] table tbody tr.blue,html[data-netbox-color-mode=light] table tbody tr.blue{background-color:#0d6efd26;border-color:#adb5bd}html table tbody tr.indigo,html[data-netbox-color-mode=dark] table tbody tr.indigo,html[data-netbox-color-mode=light] table tbody tr.indigo{background-color:#6610f226;border-color:#adb5bd}html table tbody tr.purple,html[data-netbox-color-mode=dark] table tbody tr.purple,html[data-netbox-color-mode=light] table tbody tr.purple{background-color:#6f42c126;border-color:#adb5bd}html table tbody tr.pink,html[data-netbox-color-mode=dark] table tbody tr.pink,html[data-netbox-color-mode=light] table tbody tr.pink{background-color:#d6338426;border-color:#adb5bd}html table tbody tr.red,html[data-netbox-color-mode=dark] table tbody tr.red,html[data-netbox-color-mode=light] table tbody tr.red{background-color:#dc354526;border-color:#adb5bd}html table tbody tr.orange,html[data-netbox-color-mode=dark] table tbody tr.orange,html[data-netbox-color-mode=light] table tbody tr.orange{background-color:#fd7e1426;border-color:#adb5bd}html table tbody tr.yellow,html[data-netbox-color-mode=dark] table tbody tr.yellow,html[data-netbox-color-mode=light] table tbody tr.yellow{background-color:#ffc10726;border-color:#adb5bd}html table tbody tr.green,html[data-netbox-color-mode=dark] table tbody tr.green,html[data-netbox-color-mode=light] table tbody tr.green{background-color:#19875426;border-color:#adb5bd}html table tbody tr.teal,html[data-netbox-color-mode=dark] table tbody tr.teal,html[data-netbox-color-mode=light] table tbody tr.teal{background-color:#20c99726;border-color:#adb5bd}html table tbody tr.cyan,html[data-netbox-color-mode=dark] table tbody tr.cyan,html[data-netbox-color-mode=light] table tbody tr.cyan{background-color:#0dcaf026;border-color:#adb5bd}html table tbody tr.gray,html[data-netbox-color-mode=dark] table tbody tr.gray,html[data-netbox-color-mode=light] table tbody tr.gray{background-color:#adb5bd26;border-color:#adb5bd}html table tbody tr.black,html[data-netbox-color-mode=dark] table tbody tr.black,html[data-netbox-color-mode=light] table tbody tr.black{background-color:#00000026;border-color:#adb5bd}html table tbody tr.white,html[data-netbox-color-mode=dark] table tbody tr.white,html[data-netbox-color-mode=light] table tbody tr.white{background-color:#ffffff26;border-color:#adb5bd}}@media print{html table .table-badge-group .table-badge,html[data-netbox-color-mode=dark] table .table-badge-group .table-badge,html[data-netbox-color-mode=light] table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}html table .table-badge-group .table-badge:not(.badge),html[data-netbox-color-mode=dark] table .table-badge-group .table-badge:not(.badge),html[data-netbox-color-mode=light] table .table-badge-group .table-badge:not(.badge){padding:0 .65em}html table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child),html[data-netbox-color-mode=dark] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child),html[data-netbox-color-mode=light] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.25rem}}@media print{html pre.change-data,html[data-netbox-color-mode=dark] pre.change-data,html[data-netbox-color-mode=light] pre.change-data{padding-right:0;padding-left:0}html pre.change-data>span,html[data-netbox-color-mode=dark] pre.change-data>span,html[data-netbox-color-mode=light] pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}html pre.change-data>span.added,html[data-netbox-color-mode=dark] pre.change-data>span.added,html[data-netbox-color-mode=light] pre.change-data>span.added{background-color:var(--nbx-change-added)}html pre.change-data>span.removed,html[data-netbox-color-mode=dark] pre.change-data>span.removed,html[data-netbox-color-mode=light] pre.change-data>span.removed{background-color:var(--nbx-change-removed)}}@media print{html pre.change-diff,html[data-netbox-color-mode=dark] pre.change-diff,html[data-netbox-color-mode=light] pre.change-diff{border-color:transparent}html pre.change-diff.change-removed,html[data-netbox-color-mode=dark] pre.change-diff.change-removed,html[data-netbox-color-mode=light] pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}html pre.change-diff.change-added,html[data-netbox-color-mode=dark] pre.change-diff.change-added,html[data-netbox-color-mode=light] pre.change-diff.change-added{background-color:var(--nbx-change-added)}}@media print{html div.card-overlay,html[data-netbox-color-mode=dark] div.card-overlay,html[data-netbox-color-mode=light] div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}html div.card-overlay>div.spinner-border,html[data-netbox-color-mode=dark] div.card-overlay>div.spinner-border,html[data-netbox-color-mode=light] div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#6c757d}}@media print{html .table-controls,html[data-netbox-color-mode=dark] .table-controls,html[data-netbox-color-mode=light] .table-controls{display:flex}}@media print and (min-width: 768px){html .table-controls,html[data-netbox-color-mode=dark] .table-controls,html[data-netbox-color-mode=light] .table-controls{margin-top:0!important;margin-bottom:0!important}}@media print{html .table-controls .table-configure,html[data-netbox-color-mode=dark] .table-controls .table-configure,html[data-netbox-color-mode=light] .table-controls .table-configure{justify-content:flex-start}}@media print and (min-width: 768px){html .table-controls .table-configure,html[data-netbox-color-mode=dark] .table-controls .table-configure,html[data-netbox-color-mode=light] .table-controls .table-configure{justify-content:flex-end}}@media print{html .table-controls .form-switch.form-check-inline,html[data-netbox-color-mode=dark] .table-controls .form-switch.form-check-inline,html[data-netbox-color-mode=light] .table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}}@media print{html .nav-tabs,html[data-netbox-color-mode=dark] .nav-tabs,html[data-netbox-color-mode=light] .nav-tabs{background-color:#fff}html .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=light] .nav-tabs .nav-link:hover{border-bottom-color:transparent}html .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=light] .nav-tabs .nav-link.active{background-color:#f8f9fa;border-bottom-color:#f8f9fa;transform:translateY(1px)}}@media print{html .tab-content,html[data-netbox-color-mode=dark] .tab-content,html[data-netbox-color-mode=light] .tab-content{display:flex;flex-direction:column;padding:1rem}}@media print{html .masonry,html[data-netbox-color-mode=dark] .masonry,html[data-netbox-color-mode=light] .masonry{position:static!important;display:block!important;height:unset!important}}@media print{html .masonry .masonry-item,html[data-netbox-color-mode=dark] .masonry .masonry-item,html[data-netbox-color-mode=light] .masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}@media print{html .record-depth,html[data-netbox-color-mode=dark] .record-depth,html[data-netbox-color-mode=light] .record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}html .record-depth span:only-of-type,html .record-depth span:last-of-type,html[data-netbox-color-mode=dark] .record-depth span:only-of-type,html[data-netbox-color-mode=dark] .record-depth span:last-of-type,html[data-netbox-color-mode=light] .record-depth span:only-of-type,html[data-netbox-color-mode=light] .record-depth span:last-of-type{margin-right:.25rem}}@media print{html .popover.image-preview-popover,html[data-netbox-color-mode=dark] .popover.image-preview-popover,html[data-netbox-color-mode=light] .popover.image-preview-popover{max-width:unset}}@media print{html .rendered-markdown table,html[data-netbox-color-mode=dark] .rendered-markdown table,html[data-netbox-color-mode=light] .rendered-markdown table{width:100%}}@media print{html .rendered-markdown th,html[data-netbox-color-mode=dark] .rendered-markdown th,html[data-netbox-color-mode=light] .rendered-markdown th{border-bottom:2px solid #dddddd;padding:8px}}@media print{html .rendered-markdown td,html[data-netbox-color-mode=dark] .rendered-markdown td,html[data-netbox-color-mode=light] .rendered-markdown td{border-top:1px solid #dddddd;padding:8px}}@media print{html th[align=left],html[data-netbox-color-mode=dark] th[align=left],html[data-netbox-color-mode=light] th[align=left]{text-align:left}}@media print{html th[align=center],html[data-netbox-color-mode=dark] th[align=center],html[data-netbox-color-mode=light] th[align=center]{text-align:center}}@media print{html th[align=right],html[data-netbox-color-mode=dark] th[align=right],html[data-netbox-color-mode=light] th[align=right]{text-align:right}}@media print{html .markdown-widget .nav-link,html[data-netbox-color-mode=dark] .markdown-widget .nav-link,html[data-netbox-color-mode=light] .markdown-widget .nav-link{border-bottom:0}html .markdown-widget .nav-link.active,html[data-netbox-color-mode=dark] .markdown-widget .nav-link.active,html[data-netbox-color-mode=light] .markdown-widget .nav-link.active{background-color:var(--nbx-body-bg)}html .markdown-widget .nav-tabs,html[data-netbox-color-mode=dark] .markdown-widget .nav-tabs,html[data-netbox-color-mode=light] .markdown-widget .nav-tabs{background-color:var(--nbx-pre-bg)}}@media print{html td pre,html[data-netbox-color-mode=dark] td pre,html[data-netbox-color-mode=light] td pre{margin-bottom:0}}@media print{html pre.block,html[data-netbox-color-mode=dark] pre.block,html[data-netbox-color-mode=light] pre.block{padding:1rem;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}}@media print{html #django-messages,html[data-netbox-color-mode=dark] #django-messages,html[data-netbox-color-mode=light] #django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}}@media print{html html[data-netbox-url-name=home] .content-container,html html[data-netbox-url-name=home] .search,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .search,html[data-netbox-color-mode=light] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=light] html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}html html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search,html[data-netbox-color-mode=light] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=light] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}html html[data-netbox-url-name=login] #django-messages,html[data-netbox-color-mode=dark] html[data-netbox-url-name=login] #django-messages,html[data-netbox-color-mode=light] html[data-netbox-url-name=login] #django-messages{display:none}} +@charset "UTF-8";@media print{:root{--nbx-body-bg: #fff !important;--nbx-body-color: #000 !important}html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-primary: #337ab7;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #54d6f0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #e9ecef;--bs-dark: #343a40;--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-gray: #adb5bd;--bs-black: #000;--bs-white: #fff;--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, .15), rgba(255, 255, 255, 0))}html *,html *:before,html *:after,html[data-netbox-color-mode=dark] *,html[data-netbox-color-mode=dark] *:before,html[data-netbox-color-mode=dark] *:after,html[data-netbox-color-mode=light] *,html[data-netbox-color-mode=light] *:before,html[data-netbox-color-mode=light] *:after{box-sizing:border-box}}@media print and (prefers-reduced-motion: no-preference){html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{scroll-behavior:smooth}}@media print{html body,html[data-netbox-color-mode=dark] body,html[data-netbox-color-mode=light] body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}}@media print{html hr,html[data-netbox-color-mode=dark] hr,html[data-netbox-color-mode=light] hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}}@media print{html hr:not([size]),html[data-netbox-color-mode=dark] hr:not([size]),html[data-netbox-color-mode=light] hr:not([size]){height:1px}}@media print{html h6,html .h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=light] .h6,html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=light] h6,html h5,html .h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=light] .h5,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=light] h5,html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4,html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3,html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2,html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}}@media print{html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{font-size:calc(1.375rem + 1.5vw)}}@media print and (min-width: 1200px){html h1,html .h1,html[data-netbox-color-mode=dark] .h1,html[data-netbox-color-mode=light] .h1,html[data-netbox-color-mode=dark] h1,html[data-netbox-color-mode=light] h1{font-size:2.5rem}}@media print{html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2{font-size:calc(1.325rem + 0.9vw)}}@media print and (min-width: 1200px){html h2,html .h2,html[data-netbox-color-mode=dark] .h2,html[data-netbox-color-mode=light] .h2,html[data-netbox-color-mode=dark] h2,html[data-netbox-color-mode=light] h2{font-size:2rem}}@media print{html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3{font-size:calc(1.3rem + 0.6vw)}}@media print and (min-width: 1200px){html h3,html .h3,html[data-netbox-color-mode=dark] .h3,html[data-netbox-color-mode=light] .h3,html[data-netbox-color-mode=dark] h3,html[data-netbox-color-mode=light] h3{font-size:1.75rem}}@media print{html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4{font-size:calc(1.275rem + 0.3vw)}}@media print and (min-width: 1200px){html h4,html .h4,html[data-netbox-color-mode=dark] .h4,html[data-netbox-color-mode=light] .h4,html[data-netbox-color-mode=dark] h4,html[data-netbox-color-mode=light] h4{font-size:1.5rem}}@media print{html h5,html .h5,html[data-netbox-color-mode=dark] .h5,html[data-netbox-color-mode=light] .h5,html[data-netbox-color-mode=dark] h5,html[data-netbox-color-mode=light] h5{font-size:1.25rem}}@media print{html h6,html .h6,html[data-netbox-color-mode=dark] .h6,html[data-netbox-color-mode=light] .h6,html[data-netbox-color-mode=dark] h6,html[data-netbox-color-mode=light] h6{font-size:1rem}}@media print{html p,html[data-netbox-color-mode=dark] p,html[data-netbox-color-mode=light] p{margin-top:0;margin-bottom:1rem}}@media print{html abbr[title],html abbr[data-bs-original-title],html[data-netbox-color-mode=dark] abbr[title],html[data-netbox-color-mode=dark] abbr[data-bs-original-title],html[data-netbox-color-mode=light] abbr[title],html[data-netbox-color-mode=light] abbr[data-bs-original-title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}}@media print{html address,html[data-netbox-color-mode=dark] address,html[data-netbox-color-mode=light] address{margin-bottom:1rem;font-style:normal;line-height:inherit}}@media print{html ol,html ul,html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=light] ol,html[data-netbox-color-mode=light] ul{padding-left:2rem}}@media print{html ol,html ul,html dl,html[data-netbox-color-mode=dark] ol,html[data-netbox-color-mode=dark] ul,html[data-netbox-color-mode=dark] dl,html[data-netbox-color-mode=light] ol,html[data-netbox-color-mode=light] ul,html[data-netbox-color-mode=light] dl{margin-top:0;margin-bottom:1rem}}@media print{html ol ol,html ul ul,html ol ul,html ul ol,html[data-netbox-color-mode=dark] ol ol,html[data-netbox-color-mode=dark] ul ul,html[data-netbox-color-mode=dark] ol ul,html[data-netbox-color-mode=dark] ul ol,html[data-netbox-color-mode=light] ol ol,html[data-netbox-color-mode=light] ul ul,html[data-netbox-color-mode=light] ol ul,html[data-netbox-color-mode=light] ul ol{margin-bottom:0}}@media print{html dt,html[data-netbox-color-mode=dark] dt,html[data-netbox-color-mode=light] dt{font-weight:700}}@media print{html dd,html[data-netbox-color-mode=dark] dd,html[data-netbox-color-mode=light] dd{margin-bottom:.5rem;margin-left:0}}@media print{html blockquote,html[data-netbox-color-mode=dark] blockquote,html[data-netbox-color-mode=light] blockquote{margin:0 0 1rem}}@media print{html b,html strong,html[data-netbox-color-mode=dark] b,html[data-netbox-color-mode=dark] strong,html[data-netbox-color-mode=light] b,html[data-netbox-color-mode=light] strong{font-weight:800}}@media print{html small,html .small,html[data-netbox-color-mode=dark] .small,html[data-netbox-color-mode=light] .small,html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=light] small{font-size:.875em}}@media print{html mark,html .mark,html[data-netbox-color-mode=dark] .mark,html[data-netbox-color-mode=light] .mark,html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=light] mark{padding:.2em;background-color:#fcf8e3}}@media print{html sub,html sup,html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=dark] sup,html[data-netbox-color-mode=light] sub,html[data-netbox-color-mode=light] sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}}@media print{html sub,html[data-netbox-color-mode=dark] sub,html[data-netbox-color-mode=light] sub{bottom:-.25em}}@media print{html sup,html[data-netbox-color-mode=dark] sup,html[data-netbox-color-mode=light] sup{top:-.5em}}@media print{html a,html[data-netbox-color-mode=dark] a,html[data-netbox-color-mode=light] a{color:#0d6efd;text-decoration:underline}html a:hover,html[data-netbox-color-mode=dark] a:hover,html[data-netbox-color-mode=light] a:hover{color:#0a58ca}}@media print{html a:not([href]):not([class]),html a:not([href]):not([class]):hover,html[data-netbox-color-mode=dark] a:not([href]):not([class]),html[data-netbox-color-mode=dark] a:not([href]):not([class]):hover,html[data-netbox-color-mode=light] a:not([href]):not([class]),html[data-netbox-color-mode=light] a:not([href]):not([class]):hover{color:inherit;text-decoration:none}}@media print{html pre,html code,html kbd,html samp,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=dark] samp,html[data-netbox-color-mode=light] pre,html[data-netbox-color-mode=light] code,html[data-netbox-color-mode=light] kbd,html[data-netbox-color-mode=light] samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}}@media print{html pre,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=light] pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}html pre code,html[data-netbox-color-mode=dark] pre code,html[data-netbox-color-mode=light] pre code{font-size:inherit;color:inherit;word-break:normal}}@media print{html code,html[data-netbox-color-mode=dark] code,html[data-netbox-color-mode=light] code{font-size:.875em;color:#212529;word-wrap:break-word}a>html code,a>html[data-netbox-color-mode=dark] code,a>html[data-netbox-color-mode=light] code{color:inherit}}@media print{html kbd,html[data-netbox-color-mode=dark] kbd,html[data-netbox-color-mode=light] kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.375rem}html kbd kbd,html[data-netbox-color-mode=dark] kbd kbd,html[data-netbox-color-mode=light] kbd kbd{padding:0;font-size:1em;font-weight:700}}@media print{html figure,html[data-netbox-color-mode=dark] figure,html[data-netbox-color-mode=light] figure{margin:0 0 1rem}}@media print{html img,html svg,html[data-netbox-color-mode=dark] img,html[data-netbox-color-mode=dark] svg,html[data-netbox-color-mode=light] img,html[data-netbox-color-mode=light] svg{vertical-align:middle}}@media print{html table,html[data-netbox-color-mode=dark] table,html[data-netbox-color-mode=light] table{caption-side:bottom;border-collapse:collapse}}@media print{html caption,html[data-netbox-color-mode=dark] caption,html[data-netbox-color-mode=light] caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}}@media print{html th,html[data-netbox-color-mode=dark] th,html[data-netbox-color-mode=light] th{text-align:inherit;text-align:-webkit-match-parent}}@media print{html thead,html tbody,html tfoot,html tr,html td,html th,html[data-netbox-color-mode=dark] thead,html[data-netbox-color-mode=dark] tbody,html[data-netbox-color-mode=dark] tfoot,html[data-netbox-color-mode=dark] tr,html[data-netbox-color-mode=dark] td,html[data-netbox-color-mode=dark] th,html[data-netbox-color-mode=light] thead,html[data-netbox-color-mode=light] tbody,html[data-netbox-color-mode=light] tfoot,html[data-netbox-color-mode=light] tr,html[data-netbox-color-mode=light] td,html[data-netbox-color-mode=light] th{border-color:inherit;border-style:solid;border-width:0}}@media print{html label,html[data-netbox-color-mode=dark] label,html[data-netbox-color-mode=light] label{display:inline-block}}@media print{html button,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=light] button{border-radius:0}}@media print{html button:focus:not(:focus-visible),html[data-netbox-color-mode=dark] button:focus:not(:focus-visible),html[data-netbox-color-mode=light] button:focus:not(:focus-visible){outline:0}}@media print{html input,html button,html select,html optgroup,html textarea,html[data-netbox-color-mode=dark] input,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=dark] optgroup,html[data-netbox-color-mode=dark] textarea,html[data-netbox-color-mode=light] input,html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] select,html[data-netbox-color-mode=light] optgroup,html[data-netbox-color-mode=light] textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}}@media print{html button,html select,html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] select{text-transform:none}}@media print{html [role=button],html[data-netbox-color-mode=dark] [role=button],html[data-netbox-color-mode=light] [role=button]{cursor:pointer}}@media print{html select,html[data-netbox-color-mode=dark] select,html[data-netbox-color-mode=light] select{word-wrap:normal}html select:disabled,html[data-netbox-color-mode=dark] select:disabled,html[data-netbox-color-mode=light] select:disabled{opacity:1}}@media print{html [list]::-webkit-calendar-picker-indicator,html[data-netbox-color-mode=dark] [list]::-webkit-calendar-picker-indicator,html[data-netbox-color-mode=light] [list]::-webkit-calendar-picker-indicator{display:none}}@media print{html button,html [type=button],html [type=reset],html [type=submit],html[data-netbox-color-mode=dark] button,html[data-netbox-color-mode=dark] [type=button],html[data-netbox-color-mode=dark] [type=reset],html[data-netbox-color-mode=dark] [type=submit],html[data-netbox-color-mode=light] button,html[data-netbox-color-mode=light] [type=button],html[data-netbox-color-mode=light] [type=reset],html[data-netbox-color-mode=light] [type=submit]{-webkit-appearance:button}html button:not(:disabled),html [type=button]:not(:disabled),html [type=reset]:not(:disabled),html [type=submit]:not(:disabled),html[data-netbox-color-mode=dark] button:not(:disabled),html[data-netbox-color-mode=dark] [type=button]:not(:disabled),html[data-netbox-color-mode=dark] [type=reset]:not(:disabled),html[data-netbox-color-mode=dark] [type=submit]:not(:disabled),html[data-netbox-color-mode=light] button:not(:disabled),html[data-netbox-color-mode=light] [type=button]:not(:disabled),html[data-netbox-color-mode=light] [type=reset]:not(:disabled),html[data-netbox-color-mode=light] [type=submit]:not(:disabled){cursor:pointer}}@media print{html ::-moz-focus-inner,html[data-netbox-color-mode=dark] ::-moz-focus-inner,html[data-netbox-color-mode=light] ::-moz-focus-inner{padding:0;border-style:none}}@media print{html textarea,html[data-netbox-color-mode=dark] textarea,html[data-netbox-color-mode=light] textarea{resize:vertical}}@media print{html fieldset,html[data-netbox-color-mode=dark] fieldset,html[data-netbox-color-mode=light] fieldset{min-width:0;padding:0;margin:0;border:0}}@media print{html legend,html[data-netbox-color-mode=dark] legend,html[data-netbox-color-mode=light] legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}}@media print and (min-width: 1200px){html legend,html[data-netbox-color-mode=dark] legend,html[data-netbox-color-mode=light] legend{font-size:1.5rem}}@media print{html legend+*,html[data-netbox-color-mode=dark] legend+*,html[data-netbox-color-mode=light] legend+*{clear:left}}@media print{html ::-webkit-datetime-edit-fields-wrapper,html ::-webkit-datetime-edit-text,html ::-webkit-datetime-edit-minute,html ::-webkit-datetime-edit-hour-field,html ::-webkit-datetime-edit-day-field,html ::-webkit-datetime-edit-month-field,html ::-webkit-datetime-edit-year-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=dark] ::-webkit-datetime-edit-year-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-fields-wrapper,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-text,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-minute,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-hour-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-day-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-month-field,html[data-netbox-color-mode=light] ::-webkit-datetime-edit-year-field{padding:0}}@media print{html ::-webkit-inner-spin-button,html[data-netbox-color-mode=dark] ::-webkit-inner-spin-button,html[data-netbox-color-mode=light] ::-webkit-inner-spin-button{height:auto}}@media print{html [type=search],html[data-netbox-color-mode=dark] [type=search],html[data-netbox-color-mode=light] [type=search]{outline-offset:-2px;-webkit-appearance:textfield}}@media print{html ::-webkit-search-decoration,html[data-netbox-color-mode=dark] ::-webkit-search-decoration,html[data-netbox-color-mode=light] ::-webkit-search-decoration{-webkit-appearance:none}}@media print{html ::-webkit-color-swatch-wrapper,html[data-netbox-color-mode=dark] ::-webkit-color-swatch-wrapper,html[data-netbox-color-mode=light] ::-webkit-color-swatch-wrapper{padding:0}}@media print{html ::file-selector-button,html[data-netbox-color-mode=dark] ::file-selector-button,html[data-netbox-color-mode=light] ::file-selector-button{font:inherit}}@media print{html ::-webkit-file-upload-button,html[data-netbox-color-mode=dark] ::-webkit-file-upload-button,html[data-netbox-color-mode=light] ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}}@media print{html output,html[data-netbox-color-mode=dark] output,html[data-netbox-color-mode=light] output{display:inline-block}}@media print{html iframe,html[data-netbox-color-mode=dark] iframe,html[data-netbox-color-mode=light] iframe{border:0}}@media print{html summary,html[data-netbox-color-mode=dark] summary,html[data-netbox-color-mode=light] summary{display:list-item;cursor:pointer}}@media print{html progress,html[data-netbox-color-mode=dark] progress,html[data-netbox-color-mode=light] progress{vertical-align:baseline}}@media print{html [hidden],html[data-netbox-color-mode=dark] [hidden],html[data-netbox-color-mode=light] [hidden]{display:none!important}}@media print{html .lead,html[data-netbox-color-mode=dark] .lead,html[data-netbox-color-mode=light] .lead{font-size:1.25rem;font-weight:300}}@media print{html .display-1,html[data-netbox-color-mode=dark] .display-1,html[data-netbox-color-mode=light] .display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-1,html[data-netbox-color-mode=dark] .display-1,html[data-netbox-color-mode=light] .display-1{font-size:5rem}}@media print{html .display-2,html[data-netbox-color-mode=dark] .display-2,html[data-netbox-color-mode=light] .display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-2,html[data-netbox-color-mode=dark] .display-2,html[data-netbox-color-mode=light] .display-2{font-size:4.5rem}}@media print{html .display-3,html[data-netbox-color-mode=dark] .display-3,html[data-netbox-color-mode=light] .display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-3,html[data-netbox-color-mode=dark] .display-3,html[data-netbox-color-mode=light] .display-3{font-size:4rem}}@media print{html .display-4,html[data-netbox-color-mode=dark] .display-4,html[data-netbox-color-mode=light] .display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-4,html[data-netbox-color-mode=dark] .display-4,html[data-netbox-color-mode=light] .display-4{font-size:3.5rem}}@media print{html .display-5,html[data-netbox-color-mode=dark] .display-5,html[data-netbox-color-mode=light] .display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-5,html[data-netbox-color-mode=dark] .display-5,html[data-netbox-color-mode=light] .display-5{font-size:3rem}}@media print{html .display-6,html[data-netbox-color-mode=dark] .display-6,html[data-netbox-color-mode=light] .display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}}@media print and (min-width: 1200px){html .display-6,html[data-netbox-color-mode=dark] .display-6,html[data-netbox-color-mode=light] .display-6{font-size:2.5rem}}@media print{html .list-unstyled,html[data-netbox-color-mode=dark] .list-unstyled,html[data-netbox-color-mode=light] .list-unstyled{padding-left:0;list-style:none}}@media print{html .list-inline,html[data-netbox-color-mode=dark] .list-inline,html[data-netbox-color-mode=light] .list-inline{padding-left:0;list-style:none}}@media print{html .list-inline-item,html[data-netbox-color-mode=dark] .list-inline-item,html[data-netbox-color-mode=light] .list-inline-item{display:inline-block}html .list-inline-item:not(:last-child),html[data-netbox-color-mode=dark] .list-inline-item:not(:last-child),html[data-netbox-color-mode=light] .list-inline-item:not(:last-child){margin-right:.5rem}}@media print{html .initialism,html[data-netbox-color-mode=dark] .initialism,html[data-netbox-color-mode=light] .initialism{font-size:.875em;text-transform:uppercase}}@media print{html .blockquote,html[data-netbox-color-mode=dark] .blockquote,html[data-netbox-color-mode=light] .blockquote{margin-bottom:1rem;font-size:1.25rem}html .blockquote>:last-child,html[data-netbox-color-mode=dark] .blockquote>:last-child,html[data-netbox-color-mode=light] .blockquote>:last-child{margin-bottom:0}}@media print{html .blockquote-footer,html[data-netbox-color-mode=dark] .blockquote-footer,html[data-netbox-color-mode=light] .blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}html .blockquote-footer:before,html[data-netbox-color-mode=dark] .blockquote-footer:before,html[data-netbox-color-mode=light] .blockquote-footer:before{content:"\2014\a0"}}@media print{html .img-fluid,html[data-netbox-color-mode=dark] .img-fluid,html[data-netbox-color-mode=light] .img-fluid{max-width:100%;height:auto}}@media print{html .img-thumbnail,html[data-netbox-color-mode=dark] .img-thumbnail,html[data-netbox-color-mode=light] .img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.375rem;max-width:100%;height:auto}}@media print{html .figure,html[data-netbox-color-mode=dark] .figure,html[data-netbox-color-mode=light] .figure{display:inline-block}}@media print{html .figure-img,html[data-netbox-color-mode=dark] .figure-img,html[data-netbox-color-mode=light] .figure-img{margin-bottom:.5rem;line-height:1}}@media print{html .figure-caption,html[data-netbox-color-mode=dark] .figure-caption,html[data-netbox-color-mode=light] .figure-caption{font-size:.875em;color:#6c757d}}@media print{html .container,html .container-fluid,html .container-xxl,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=light] .container-xxl,html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=dark] .container-fluid,html[data-netbox-color-mode=light] .container,html[data-netbox-color-mode=light] .container-fluid{width:100%;padding-right:var(--bs-gutter-x, .75rem);padding-left:var(--bs-gutter-x, .75rem);margin-right:auto;margin-left:auto}}@media print and (min-width: 576px){html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:540px}}@media print and (min-width: 768px){html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:720px}}@media print and (min-width: 992px){html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:960px}}@media print and (min-width: 1200px){html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:1140px}}@media print and (min-width: 1400px){html .container-xxl,html[data-netbox-color-mode=dark] .container-xxl,html[data-netbox-color-mode=light] .container-xxl,html .container-xl,html[data-netbox-color-mode=dark] .container-xl,html[data-netbox-color-mode=light] .container-xl,html .container-lg,html[data-netbox-color-mode=dark] .container-lg,html[data-netbox-color-mode=light] .container-lg,html .container-md,html[data-netbox-color-mode=dark] .container-md,html[data-netbox-color-mode=light] .container-md,html .container-sm,html[data-netbox-color-mode=dark] .container-sm,html[data-netbox-color-mode=light] .container-sm,html .container,html[data-netbox-color-mode=dark] .container,html[data-netbox-color-mode=light] .container{max-width:1320px}}@media print{html .row,html[data-netbox-color-mode=dark] .row,html[data-netbox-color-mode=light] .row{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(var(--bs-gutter-y) * -1);margin-right:calc(var(--bs-gutter-x) * -.5);margin-left:calc(var(--bs-gutter-x) * -.5)}html .row>*,html[data-netbox-color-mode=dark] .row>*,html[data-netbox-color-mode=light] .row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}}@media print{html .col,html[data-netbox-color-mode=dark] .col,html[data-netbox-color-mode=light] .col{flex:1 0 0%}}@media print{html .row-cols-auto>*,html[data-netbox-color-mode=dark] .row-cols-auto>*,html[data-netbox-color-mode=light] .row-cols-auto>*{flex:0 0 auto;width:auto}}@media print{html .row-cols-1>*,html[data-netbox-color-mode=dark] .row-cols-1>*,html[data-netbox-color-mode=light] .row-cols-1>*{flex:0 0 auto;width:100%}}@media print{html .row-cols-2>*,html[data-netbox-color-mode=dark] .row-cols-2>*,html[data-netbox-color-mode=light] .row-cols-2>*{flex:0 0 auto;width:50%}}@media print{html .row-cols-3>*,html[data-netbox-color-mode=dark] .row-cols-3>*,html[data-netbox-color-mode=light] .row-cols-3>*{flex:0 0 auto;width:33.3333333333%}}@media print{html .row-cols-4>*,html[data-netbox-color-mode=dark] .row-cols-4>*,html[data-netbox-color-mode=light] .row-cols-4>*{flex:0 0 auto;width:25%}}@media print{html .row-cols-5>*,html[data-netbox-color-mode=dark] .row-cols-5>*,html[data-netbox-color-mode=light] .row-cols-5>*{flex:0 0 auto;width:20%}}@media print{html .row-cols-6>*,html[data-netbox-color-mode=dark] .row-cols-6>*,html[data-netbox-color-mode=light] .row-cols-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 576px){html .col-sm,html[data-netbox-color-mode=dark] .col-sm,html[data-netbox-color-mode=light] .col-sm{flex:1 0 0%}html .row-cols-sm-auto>*,html[data-netbox-color-mode=dark] .row-cols-sm-auto>*,html[data-netbox-color-mode=light] .row-cols-sm-auto>*{flex:0 0 auto;width:auto}html .row-cols-sm-1>*,html[data-netbox-color-mode=dark] .row-cols-sm-1>*,html[data-netbox-color-mode=light] .row-cols-sm-1>*{flex:0 0 auto;width:100%}html .row-cols-sm-2>*,html[data-netbox-color-mode=dark] .row-cols-sm-2>*,html[data-netbox-color-mode=light] .row-cols-sm-2>*{flex:0 0 auto;width:50%}html .row-cols-sm-3>*,html[data-netbox-color-mode=dark] .row-cols-sm-3>*,html[data-netbox-color-mode=light] .row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-sm-4>*,html[data-netbox-color-mode=dark] .row-cols-sm-4>*,html[data-netbox-color-mode=light] .row-cols-sm-4>*{flex:0 0 auto;width:25%}html .row-cols-sm-5>*,html[data-netbox-color-mode=dark] .row-cols-sm-5>*,html[data-netbox-color-mode=light] .row-cols-sm-5>*{flex:0 0 auto;width:20%}html .row-cols-sm-6>*,html[data-netbox-color-mode=dark] .row-cols-sm-6>*,html[data-netbox-color-mode=light] .row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 768px){html .col-md,html[data-netbox-color-mode=dark] .col-md,html[data-netbox-color-mode=light] .col-md{flex:1 0 0%}html .row-cols-md-auto>*,html[data-netbox-color-mode=dark] .row-cols-md-auto>*,html[data-netbox-color-mode=light] .row-cols-md-auto>*{flex:0 0 auto;width:auto}html .row-cols-md-1>*,html[data-netbox-color-mode=dark] .row-cols-md-1>*,html[data-netbox-color-mode=light] .row-cols-md-1>*{flex:0 0 auto;width:100%}html .row-cols-md-2>*,html[data-netbox-color-mode=dark] .row-cols-md-2>*,html[data-netbox-color-mode=light] .row-cols-md-2>*{flex:0 0 auto;width:50%}html .row-cols-md-3>*,html[data-netbox-color-mode=dark] .row-cols-md-3>*,html[data-netbox-color-mode=light] .row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-md-4>*,html[data-netbox-color-mode=dark] .row-cols-md-4>*,html[data-netbox-color-mode=light] .row-cols-md-4>*{flex:0 0 auto;width:25%}html .row-cols-md-5>*,html[data-netbox-color-mode=dark] .row-cols-md-5>*,html[data-netbox-color-mode=light] .row-cols-md-5>*{flex:0 0 auto;width:20%}html .row-cols-md-6>*,html[data-netbox-color-mode=dark] .row-cols-md-6>*,html[data-netbox-color-mode=light] .row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 992px){html .col-lg,html[data-netbox-color-mode=dark] .col-lg,html[data-netbox-color-mode=light] .col-lg{flex:1 0 0%}html .row-cols-lg-auto>*,html[data-netbox-color-mode=dark] .row-cols-lg-auto>*,html[data-netbox-color-mode=light] .row-cols-lg-auto>*{flex:0 0 auto;width:auto}html .row-cols-lg-1>*,html[data-netbox-color-mode=dark] .row-cols-lg-1>*,html[data-netbox-color-mode=light] .row-cols-lg-1>*{flex:0 0 auto;width:100%}html .row-cols-lg-2>*,html[data-netbox-color-mode=dark] .row-cols-lg-2>*,html[data-netbox-color-mode=light] .row-cols-lg-2>*{flex:0 0 auto;width:50%}html .row-cols-lg-3>*,html[data-netbox-color-mode=dark] .row-cols-lg-3>*,html[data-netbox-color-mode=light] .row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-lg-4>*,html[data-netbox-color-mode=dark] .row-cols-lg-4>*,html[data-netbox-color-mode=light] .row-cols-lg-4>*{flex:0 0 auto;width:25%}html .row-cols-lg-5>*,html[data-netbox-color-mode=dark] .row-cols-lg-5>*,html[data-netbox-color-mode=light] .row-cols-lg-5>*{flex:0 0 auto;width:20%}html .row-cols-lg-6>*,html[data-netbox-color-mode=dark] .row-cols-lg-6>*,html[data-netbox-color-mode=light] .row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 1200px){html .col-xl,html[data-netbox-color-mode=dark] .col-xl,html[data-netbox-color-mode=light] .col-xl{flex:1 0 0%}html .row-cols-xl-auto>*,html[data-netbox-color-mode=dark] .row-cols-xl-auto>*,html[data-netbox-color-mode=light] .row-cols-xl-auto>*{flex:0 0 auto;width:auto}html .row-cols-xl-1>*,html[data-netbox-color-mode=dark] .row-cols-xl-1>*,html[data-netbox-color-mode=light] .row-cols-xl-1>*{flex:0 0 auto;width:100%}html .row-cols-xl-2>*,html[data-netbox-color-mode=dark] .row-cols-xl-2>*,html[data-netbox-color-mode=light] .row-cols-xl-2>*{flex:0 0 auto;width:50%}html .row-cols-xl-3>*,html[data-netbox-color-mode=dark] .row-cols-xl-3>*,html[data-netbox-color-mode=light] .row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-xl-4>*,html[data-netbox-color-mode=dark] .row-cols-xl-4>*,html[data-netbox-color-mode=light] .row-cols-xl-4>*{flex:0 0 auto;width:25%}html .row-cols-xl-5>*,html[data-netbox-color-mode=dark] .row-cols-xl-5>*,html[data-netbox-color-mode=light] .row-cols-xl-5>*{flex:0 0 auto;width:20%}html .row-cols-xl-6>*,html[data-netbox-color-mode=dark] .row-cols-xl-6>*,html[data-netbox-color-mode=light] .row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}}@media print and (min-width: 1400px){html .col-xxl,html[data-netbox-color-mode=dark] .col-xxl,html[data-netbox-color-mode=light] .col-xxl{flex:1 0 0%}html .row-cols-xxl-auto>*,html[data-netbox-color-mode=dark] .row-cols-xxl-auto>*,html[data-netbox-color-mode=light] .row-cols-xxl-auto>*{flex:0 0 auto;width:auto}html .row-cols-xxl-1>*,html[data-netbox-color-mode=dark] .row-cols-xxl-1>*,html[data-netbox-color-mode=light] .row-cols-xxl-1>*{flex:0 0 auto;width:100%}html .row-cols-xxl-2>*,html[data-netbox-color-mode=dark] .row-cols-xxl-2>*,html[data-netbox-color-mode=light] .row-cols-xxl-2>*{flex:0 0 auto;width:50%}html .row-cols-xxl-3>*,html[data-netbox-color-mode=dark] .row-cols-xxl-3>*,html[data-netbox-color-mode=light] .row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}html .row-cols-xxl-4>*,html[data-netbox-color-mode=dark] .row-cols-xxl-4>*,html[data-netbox-color-mode=light] .row-cols-xxl-4>*{flex:0 0 auto;width:25%}html .row-cols-xxl-5>*,html[data-netbox-color-mode=dark] .row-cols-xxl-5>*,html[data-netbox-color-mode=light] .row-cols-xxl-5>*{flex:0 0 auto;width:20%}html .row-cols-xxl-6>*,html[data-netbox-color-mode=dark] .row-cols-xxl-6>*,html[data-netbox-color-mode=light] .row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}}@media print{html .col-auto,html[data-netbox-color-mode=dark] .col-auto,html[data-netbox-color-mode=light] .col-auto{flex:0 0 auto;width:auto}}@media print{html .col-1,html[data-netbox-color-mode=dark] .col-1,html[data-netbox-color-mode=light] .col-1{flex:0 0 auto;width:8.33333333%}}@media print{html .col-2,html[data-netbox-color-mode=dark] .col-2,html[data-netbox-color-mode=light] .col-2{flex:0 0 auto;width:16.66666667%}}@media print{html .col-3,html[data-netbox-color-mode=dark] .col-3,html[data-netbox-color-mode=light] .col-3{flex:0 0 auto;width:25%}}@media print{html .col-4,html[data-netbox-color-mode=dark] .col-4,html[data-netbox-color-mode=light] .col-4{flex:0 0 auto;width:33.33333333%}}@media print{html .col-5,html[data-netbox-color-mode=dark] .col-5,html[data-netbox-color-mode=light] .col-5{flex:0 0 auto;width:41.66666667%}}@media print{html .col-6,html[data-netbox-color-mode=dark] .col-6,html[data-netbox-color-mode=light] .col-6{flex:0 0 auto;width:50%}}@media print{html .col-7,html[data-netbox-color-mode=dark] .col-7,html[data-netbox-color-mode=light] .col-7{flex:0 0 auto;width:58.33333333%}}@media print{html .col-8,html[data-netbox-color-mode=dark] .col-8,html[data-netbox-color-mode=light] .col-8{flex:0 0 auto;width:66.66666667%}}@media print{html .col-9,html[data-netbox-color-mode=dark] .col-9,html[data-netbox-color-mode=light] .col-9{flex:0 0 auto;width:75%}}@media print{html .col-10,html[data-netbox-color-mode=dark] .col-10,html[data-netbox-color-mode=light] .col-10{flex:0 0 auto;width:83.33333333%}}@media print{html .col-11,html[data-netbox-color-mode=dark] .col-11,html[data-netbox-color-mode=light] .col-11{flex:0 0 auto;width:91.66666667%}}@media print{html .col-12,html[data-netbox-color-mode=dark] .col-12,html[data-netbox-color-mode=light] .col-12{flex:0 0 auto;width:100%}}@media print{html .offset-1,html[data-netbox-color-mode=dark] .offset-1,html[data-netbox-color-mode=light] .offset-1{margin-left:8.33333333%}}@media print{html .offset-2,html[data-netbox-color-mode=dark] .offset-2,html[data-netbox-color-mode=light] .offset-2{margin-left:16.66666667%}}@media print{html .offset-3,html[data-netbox-color-mode=dark] .offset-3,html[data-netbox-color-mode=light] .offset-3{margin-left:25%}}@media print{html .offset-4,html[data-netbox-color-mode=dark] .offset-4,html[data-netbox-color-mode=light] .offset-4{margin-left:33.33333333%}}@media print{html .offset-5,html[data-netbox-color-mode=dark] .offset-5,html[data-netbox-color-mode=light] .offset-5{margin-left:41.66666667%}}@media print{html .offset-6,html[data-netbox-color-mode=dark] .offset-6,html[data-netbox-color-mode=light] .offset-6{margin-left:50%}}@media print{html .offset-7,html[data-netbox-color-mode=dark] .offset-7,html[data-netbox-color-mode=light] .offset-7{margin-left:58.33333333%}}@media print{html .offset-8,html[data-netbox-color-mode=dark] .offset-8,html[data-netbox-color-mode=light] .offset-8{margin-left:66.66666667%}}@media print{html .offset-9,html[data-netbox-color-mode=dark] .offset-9,html[data-netbox-color-mode=light] .offset-9{margin-left:75%}}@media print{html .offset-10,html[data-netbox-color-mode=dark] .offset-10,html[data-netbox-color-mode=light] .offset-10{margin-left:83.33333333%}}@media print{html .offset-11,html[data-netbox-color-mode=dark] .offset-11,html[data-netbox-color-mode=light] .offset-11{margin-left:91.66666667%}}@media print{html .g-0,html .gx-0,html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gx-0,html[data-netbox-color-mode=light] .g-0,html[data-netbox-color-mode=light] .gx-0{--bs-gutter-x: 0}}@media print{html .g-0,html .gy-0,html[data-netbox-color-mode=dark] .g-0,html[data-netbox-color-mode=dark] .gy-0,html[data-netbox-color-mode=light] .g-0,html[data-netbox-color-mode=light] .gy-0{--bs-gutter-y: 0}}@media print{html .g-1,html .gx-1,html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gx-1,html[data-netbox-color-mode=light] .g-1,html[data-netbox-color-mode=light] .gx-1{--bs-gutter-x: .25rem}}@media print{html .g-1,html .gy-1,html[data-netbox-color-mode=dark] .g-1,html[data-netbox-color-mode=dark] .gy-1,html[data-netbox-color-mode=light] .g-1,html[data-netbox-color-mode=light] .gy-1{--bs-gutter-y: .25rem}}@media print{html .g-2,html .gx-2,html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gx-2,html[data-netbox-color-mode=light] .g-2,html[data-netbox-color-mode=light] .gx-2{--bs-gutter-x: .5rem}}@media print{html .g-2,html .gy-2,html[data-netbox-color-mode=dark] .g-2,html[data-netbox-color-mode=dark] .gy-2,html[data-netbox-color-mode=light] .g-2,html[data-netbox-color-mode=light] .gy-2{--bs-gutter-y: .5rem}}@media print{html .g-3,html .gx-3,html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gx-3,html[data-netbox-color-mode=light] .g-3,html[data-netbox-color-mode=light] .gx-3{--bs-gutter-x: 1rem}}@media print{html .g-3,html .gy-3,html[data-netbox-color-mode=dark] .g-3,html[data-netbox-color-mode=dark] .gy-3,html[data-netbox-color-mode=light] .g-3,html[data-netbox-color-mode=light] .gy-3{--bs-gutter-y: 1rem}}@media print{html .g-4,html .gx-4,html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gx-4,html[data-netbox-color-mode=light] .g-4,html[data-netbox-color-mode=light] .gx-4{--bs-gutter-x: 1.5rem}}@media print{html .g-4,html .gy-4,html[data-netbox-color-mode=dark] .g-4,html[data-netbox-color-mode=dark] .gy-4,html[data-netbox-color-mode=light] .g-4,html[data-netbox-color-mode=light] .gy-4{--bs-gutter-y: 1.5rem}}@media print{html .g-5,html .gx-5,html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gx-5,html[data-netbox-color-mode=light] .g-5,html[data-netbox-color-mode=light] .gx-5{--bs-gutter-x: 3rem}}@media print{html .g-5,html .gy-5,html[data-netbox-color-mode=dark] .g-5,html[data-netbox-color-mode=dark] .gy-5,html[data-netbox-color-mode=light] .g-5,html[data-netbox-color-mode=light] .gy-5{--bs-gutter-y: 3rem}}@media print and (min-width: 576px){html .col-sm-auto,html[data-netbox-color-mode=dark] .col-sm-auto,html[data-netbox-color-mode=light] .col-sm-auto{flex:0 0 auto;width:auto}html .col-sm-1,html[data-netbox-color-mode=dark] .col-sm-1,html[data-netbox-color-mode=light] .col-sm-1{flex:0 0 auto;width:8.33333333%}html .col-sm-2,html[data-netbox-color-mode=dark] .col-sm-2,html[data-netbox-color-mode=light] .col-sm-2{flex:0 0 auto;width:16.66666667%}html .col-sm-3,html[data-netbox-color-mode=dark] .col-sm-3,html[data-netbox-color-mode=light] .col-sm-3{flex:0 0 auto;width:25%}html .col-sm-4,html[data-netbox-color-mode=dark] .col-sm-4,html[data-netbox-color-mode=light] .col-sm-4{flex:0 0 auto;width:33.33333333%}html .col-sm-5,html[data-netbox-color-mode=dark] .col-sm-5,html[data-netbox-color-mode=light] .col-sm-5{flex:0 0 auto;width:41.66666667%}html .col-sm-6,html[data-netbox-color-mode=dark] .col-sm-6,html[data-netbox-color-mode=light] .col-sm-6{flex:0 0 auto;width:50%}html .col-sm-7,html[data-netbox-color-mode=dark] .col-sm-7,html[data-netbox-color-mode=light] .col-sm-7{flex:0 0 auto;width:58.33333333%}html .col-sm-8,html[data-netbox-color-mode=dark] .col-sm-8,html[data-netbox-color-mode=light] .col-sm-8{flex:0 0 auto;width:66.66666667%}html .col-sm-9,html[data-netbox-color-mode=dark] .col-sm-9,html[data-netbox-color-mode=light] .col-sm-9{flex:0 0 auto;width:75%}html .col-sm-10,html[data-netbox-color-mode=dark] .col-sm-10,html[data-netbox-color-mode=light] .col-sm-10{flex:0 0 auto;width:83.33333333%}html .col-sm-11,html[data-netbox-color-mode=dark] .col-sm-11,html[data-netbox-color-mode=light] .col-sm-11{flex:0 0 auto;width:91.66666667%}html .col-sm-12,html[data-netbox-color-mode=dark] .col-sm-12,html[data-netbox-color-mode=light] .col-sm-12{flex:0 0 auto;width:100%}html .offset-sm-0,html[data-netbox-color-mode=dark] .offset-sm-0,html[data-netbox-color-mode=light] .offset-sm-0{margin-left:0}html .offset-sm-1,html[data-netbox-color-mode=dark] .offset-sm-1,html[data-netbox-color-mode=light] .offset-sm-1{margin-left:8.33333333%}html .offset-sm-2,html[data-netbox-color-mode=dark] .offset-sm-2,html[data-netbox-color-mode=light] .offset-sm-2{margin-left:16.66666667%}html .offset-sm-3,html[data-netbox-color-mode=dark] .offset-sm-3,html[data-netbox-color-mode=light] .offset-sm-3{margin-left:25%}html .offset-sm-4,html[data-netbox-color-mode=dark] .offset-sm-4,html[data-netbox-color-mode=light] .offset-sm-4{margin-left:33.33333333%}html .offset-sm-5,html[data-netbox-color-mode=dark] .offset-sm-5,html[data-netbox-color-mode=light] .offset-sm-5{margin-left:41.66666667%}html .offset-sm-6,html[data-netbox-color-mode=dark] .offset-sm-6,html[data-netbox-color-mode=light] .offset-sm-6{margin-left:50%}html .offset-sm-7,html[data-netbox-color-mode=dark] .offset-sm-7,html[data-netbox-color-mode=light] .offset-sm-7{margin-left:58.33333333%}html .offset-sm-8,html[data-netbox-color-mode=dark] .offset-sm-8,html[data-netbox-color-mode=light] .offset-sm-8{margin-left:66.66666667%}html .offset-sm-9,html[data-netbox-color-mode=dark] .offset-sm-9,html[data-netbox-color-mode=light] .offset-sm-9{margin-left:75%}html .offset-sm-10,html[data-netbox-color-mode=dark] .offset-sm-10,html[data-netbox-color-mode=light] .offset-sm-10{margin-left:83.33333333%}html .offset-sm-11,html[data-netbox-color-mode=dark] .offset-sm-11,html[data-netbox-color-mode=light] .offset-sm-11{margin-left:91.66666667%}html .g-sm-0,html .gx-sm-0,html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gx-sm-0,html[data-netbox-color-mode=light] .g-sm-0,html[data-netbox-color-mode=light] .gx-sm-0{--bs-gutter-x: 0}html .g-sm-0,html .gy-sm-0,html[data-netbox-color-mode=dark] .g-sm-0,html[data-netbox-color-mode=dark] .gy-sm-0,html[data-netbox-color-mode=light] .g-sm-0,html[data-netbox-color-mode=light] .gy-sm-0{--bs-gutter-y: 0}html .g-sm-1,html .gx-sm-1,html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gx-sm-1,html[data-netbox-color-mode=light] .g-sm-1,html[data-netbox-color-mode=light] .gx-sm-1{--bs-gutter-x: .25rem}html .g-sm-1,html .gy-sm-1,html[data-netbox-color-mode=dark] .g-sm-1,html[data-netbox-color-mode=dark] .gy-sm-1,html[data-netbox-color-mode=light] .g-sm-1,html[data-netbox-color-mode=light] .gy-sm-1{--bs-gutter-y: .25rem}html .g-sm-2,html .gx-sm-2,html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gx-sm-2,html[data-netbox-color-mode=light] .g-sm-2,html[data-netbox-color-mode=light] .gx-sm-2{--bs-gutter-x: .5rem}html .g-sm-2,html .gy-sm-2,html[data-netbox-color-mode=dark] .g-sm-2,html[data-netbox-color-mode=dark] .gy-sm-2,html[data-netbox-color-mode=light] .g-sm-2,html[data-netbox-color-mode=light] .gy-sm-2{--bs-gutter-y: .5rem}html .g-sm-3,html .gx-sm-3,html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gx-sm-3,html[data-netbox-color-mode=light] .g-sm-3,html[data-netbox-color-mode=light] .gx-sm-3{--bs-gutter-x: 1rem}html .g-sm-3,html .gy-sm-3,html[data-netbox-color-mode=dark] .g-sm-3,html[data-netbox-color-mode=dark] .gy-sm-3,html[data-netbox-color-mode=light] .g-sm-3,html[data-netbox-color-mode=light] .gy-sm-3{--bs-gutter-y: 1rem}html .g-sm-4,html .gx-sm-4,html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gx-sm-4,html[data-netbox-color-mode=light] .g-sm-4,html[data-netbox-color-mode=light] .gx-sm-4{--bs-gutter-x: 1.5rem}html .g-sm-4,html .gy-sm-4,html[data-netbox-color-mode=dark] .g-sm-4,html[data-netbox-color-mode=dark] .gy-sm-4,html[data-netbox-color-mode=light] .g-sm-4,html[data-netbox-color-mode=light] .gy-sm-4{--bs-gutter-y: 1.5rem}html .g-sm-5,html .gx-sm-5,html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gx-sm-5,html[data-netbox-color-mode=light] .g-sm-5,html[data-netbox-color-mode=light] .gx-sm-5{--bs-gutter-x: 3rem}html .g-sm-5,html .gy-sm-5,html[data-netbox-color-mode=dark] .g-sm-5,html[data-netbox-color-mode=dark] .gy-sm-5,html[data-netbox-color-mode=light] .g-sm-5,html[data-netbox-color-mode=light] .gy-sm-5{--bs-gutter-y: 3rem}}@media print and (min-width: 768px){html .col-md-auto,html[data-netbox-color-mode=dark] .col-md-auto,html[data-netbox-color-mode=light] .col-md-auto{flex:0 0 auto;width:auto}html .col-md-1,html[data-netbox-color-mode=dark] .col-md-1,html[data-netbox-color-mode=light] .col-md-1{flex:0 0 auto;width:8.33333333%}html .col-md-2,html[data-netbox-color-mode=dark] .col-md-2,html[data-netbox-color-mode=light] .col-md-2{flex:0 0 auto;width:16.66666667%}html .col-md-3,html[data-netbox-color-mode=dark] .col-md-3,html[data-netbox-color-mode=light] .col-md-3{flex:0 0 auto;width:25%}html .col-md-4,html[data-netbox-color-mode=dark] .col-md-4,html[data-netbox-color-mode=light] .col-md-4{flex:0 0 auto;width:33.33333333%}html .col-md-5,html[data-netbox-color-mode=dark] .col-md-5,html[data-netbox-color-mode=light] .col-md-5{flex:0 0 auto;width:41.66666667%}html .col-md-6,html[data-netbox-color-mode=dark] .col-md-6,html[data-netbox-color-mode=light] .col-md-6{flex:0 0 auto;width:50%}html .col-md-7,html[data-netbox-color-mode=dark] .col-md-7,html[data-netbox-color-mode=light] .col-md-7{flex:0 0 auto;width:58.33333333%}html .col-md-8,html[data-netbox-color-mode=dark] .col-md-8,html[data-netbox-color-mode=light] .col-md-8{flex:0 0 auto;width:66.66666667%}html .col-md-9,html[data-netbox-color-mode=dark] .col-md-9,html[data-netbox-color-mode=light] .col-md-9{flex:0 0 auto;width:75%}html .col-md-10,html[data-netbox-color-mode=dark] .col-md-10,html[data-netbox-color-mode=light] .col-md-10{flex:0 0 auto;width:83.33333333%}html .col-md-11,html[data-netbox-color-mode=dark] .col-md-11,html[data-netbox-color-mode=light] .col-md-11{flex:0 0 auto;width:91.66666667%}html .col-md-12,html[data-netbox-color-mode=dark] .col-md-12,html[data-netbox-color-mode=light] .col-md-12{flex:0 0 auto;width:100%}html .offset-md-0,html[data-netbox-color-mode=dark] .offset-md-0,html[data-netbox-color-mode=light] .offset-md-0{margin-left:0}html .offset-md-1,html[data-netbox-color-mode=dark] .offset-md-1,html[data-netbox-color-mode=light] .offset-md-1{margin-left:8.33333333%}html .offset-md-2,html[data-netbox-color-mode=dark] .offset-md-2,html[data-netbox-color-mode=light] .offset-md-2{margin-left:16.66666667%}html .offset-md-3,html[data-netbox-color-mode=dark] .offset-md-3,html[data-netbox-color-mode=light] .offset-md-3{margin-left:25%}html .offset-md-4,html[data-netbox-color-mode=dark] .offset-md-4,html[data-netbox-color-mode=light] .offset-md-4{margin-left:33.33333333%}html .offset-md-5,html[data-netbox-color-mode=dark] .offset-md-5,html[data-netbox-color-mode=light] .offset-md-5{margin-left:41.66666667%}html .offset-md-6,html[data-netbox-color-mode=dark] .offset-md-6,html[data-netbox-color-mode=light] .offset-md-6{margin-left:50%}html .offset-md-7,html[data-netbox-color-mode=dark] .offset-md-7,html[data-netbox-color-mode=light] .offset-md-7{margin-left:58.33333333%}html .offset-md-8,html[data-netbox-color-mode=dark] .offset-md-8,html[data-netbox-color-mode=light] .offset-md-8{margin-left:66.66666667%}html .offset-md-9,html[data-netbox-color-mode=dark] .offset-md-9,html[data-netbox-color-mode=light] .offset-md-9{margin-left:75%}html .offset-md-10,html[data-netbox-color-mode=dark] .offset-md-10,html[data-netbox-color-mode=light] .offset-md-10{margin-left:83.33333333%}html .offset-md-11,html[data-netbox-color-mode=dark] .offset-md-11,html[data-netbox-color-mode=light] .offset-md-11{margin-left:91.66666667%}html .g-md-0,html .gx-md-0,html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gx-md-0,html[data-netbox-color-mode=light] .g-md-0,html[data-netbox-color-mode=light] .gx-md-0{--bs-gutter-x: 0}html .g-md-0,html .gy-md-0,html[data-netbox-color-mode=dark] .g-md-0,html[data-netbox-color-mode=dark] .gy-md-0,html[data-netbox-color-mode=light] .g-md-0,html[data-netbox-color-mode=light] .gy-md-0{--bs-gutter-y: 0}html .g-md-1,html .gx-md-1,html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gx-md-1,html[data-netbox-color-mode=light] .g-md-1,html[data-netbox-color-mode=light] .gx-md-1{--bs-gutter-x: .25rem}html .g-md-1,html .gy-md-1,html[data-netbox-color-mode=dark] .g-md-1,html[data-netbox-color-mode=dark] .gy-md-1,html[data-netbox-color-mode=light] .g-md-1,html[data-netbox-color-mode=light] .gy-md-1{--bs-gutter-y: .25rem}html .g-md-2,html .gx-md-2,html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gx-md-2,html[data-netbox-color-mode=light] .g-md-2,html[data-netbox-color-mode=light] .gx-md-2{--bs-gutter-x: .5rem}html .g-md-2,html .gy-md-2,html[data-netbox-color-mode=dark] .g-md-2,html[data-netbox-color-mode=dark] .gy-md-2,html[data-netbox-color-mode=light] .g-md-2,html[data-netbox-color-mode=light] .gy-md-2{--bs-gutter-y: .5rem}html .g-md-3,html .gx-md-3,html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gx-md-3,html[data-netbox-color-mode=light] .g-md-3,html[data-netbox-color-mode=light] .gx-md-3{--bs-gutter-x: 1rem}html .g-md-3,html .gy-md-3,html[data-netbox-color-mode=dark] .g-md-3,html[data-netbox-color-mode=dark] .gy-md-3,html[data-netbox-color-mode=light] .g-md-3,html[data-netbox-color-mode=light] .gy-md-3{--bs-gutter-y: 1rem}html .g-md-4,html .gx-md-4,html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gx-md-4,html[data-netbox-color-mode=light] .g-md-4,html[data-netbox-color-mode=light] .gx-md-4{--bs-gutter-x: 1.5rem}html .g-md-4,html .gy-md-4,html[data-netbox-color-mode=dark] .g-md-4,html[data-netbox-color-mode=dark] .gy-md-4,html[data-netbox-color-mode=light] .g-md-4,html[data-netbox-color-mode=light] .gy-md-4{--bs-gutter-y: 1.5rem}html .g-md-5,html .gx-md-5,html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gx-md-5,html[data-netbox-color-mode=light] .g-md-5,html[data-netbox-color-mode=light] .gx-md-5{--bs-gutter-x: 3rem}html .g-md-5,html .gy-md-5,html[data-netbox-color-mode=dark] .g-md-5,html[data-netbox-color-mode=dark] .gy-md-5,html[data-netbox-color-mode=light] .g-md-5,html[data-netbox-color-mode=light] .gy-md-5{--bs-gutter-y: 3rem}}@media print and (min-width: 992px){html .col-lg-auto,html[data-netbox-color-mode=dark] .col-lg-auto,html[data-netbox-color-mode=light] .col-lg-auto{flex:0 0 auto;width:auto}html .col-lg-1,html[data-netbox-color-mode=dark] .col-lg-1,html[data-netbox-color-mode=light] .col-lg-1{flex:0 0 auto;width:8.33333333%}html .col-lg-2,html[data-netbox-color-mode=dark] .col-lg-2,html[data-netbox-color-mode=light] .col-lg-2{flex:0 0 auto;width:16.66666667%}html .col-lg-3,html[data-netbox-color-mode=dark] .col-lg-3,html[data-netbox-color-mode=light] .col-lg-3{flex:0 0 auto;width:25%}html .col-lg-4,html[data-netbox-color-mode=dark] .col-lg-4,html[data-netbox-color-mode=light] .col-lg-4{flex:0 0 auto;width:33.33333333%}html .col-lg-5,html[data-netbox-color-mode=dark] .col-lg-5,html[data-netbox-color-mode=light] .col-lg-5{flex:0 0 auto;width:41.66666667%}html .col-lg-6,html[data-netbox-color-mode=dark] .col-lg-6,html[data-netbox-color-mode=light] .col-lg-6{flex:0 0 auto;width:50%}html .col-lg-7,html[data-netbox-color-mode=dark] .col-lg-7,html[data-netbox-color-mode=light] .col-lg-7{flex:0 0 auto;width:58.33333333%}html .col-lg-8,html[data-netbox-color-mode=dark] .col-lg-8,html[data-netbox-color-mode=light] .col-lg-8{flex:0 0 auto;width:66.66666667%}html .col-lg-9,html[data-netbox-color-mode=dark] .col-lg-9,html[data-netbox-color-mode=light] .col-lg-9{flex:0 0 auto;width:75%}html .col-lg-10,html[data-netbox-color-mode=dark] .col-lg-10,html[data-netbox-color-mode=light] .col-lg-10{flex:0 0 auto;width:83.33333333%}html .col-lg-11,html[data-netbox-color-mode=dark] .col-lg-11,html[data-netbox-color-mode=light] .col-lg-11{flex:0 0 auto;width:91.66666667%}html .col-lg-12,html[data-netbox-color-mode=dark] .col-lg-12,html[data-netbox-color-mode=light] .col-lg-12{flex:0 0 auto;width:100%}html .offset-lg-0,html[data-netbox-color-mode=dark] .offset-lg-0,html[data-netbox-color-mode=light] .offset-lg-0{margin-left:0}html .offset-lg-1,html[data-netbox-color-mode=dark] .offset-lg-1,html[data-netbox-color-mode=light] .offset-lg-1{margin-left:8.33333333%}html .offset-lg-2,html[data-netbox-color-mode=dark] .offset-lg-2,html[data-netbox-color-mode=light] .offset-lg-2{margin-left:16.66666667%}html .offset-lg-3,html[data-netbox-color-mode=dark] .offset-lg-3,html[data-netbox-color-mode=light] .offset-lg-3{margin-left:25%}html .offset-lg-4,html[data-netbox-color-mode=dark] .offset-lg-4,html[data-netbox-color-mode=light] .offset-lg-4{margin-left:33.33333333%}html .offset-lg-5,html[data-netbox-color-mode=dark] .offset-lg-5,html[data-netbox-color-mode=light] .offset-lg-5{margin-left:41.66666667%}html .offset-lg-6,html[data-netbox-color-mode=dark] .offset-lg-6,html[data-netbox-color-mode=light] .offset-lg-6{margin-left:50%}html .offset-lg-7,html[data-netbox-color-mode=dark] .offset-lg-7,html[data-netbox-color-mode=light] .offset-lg-7{margin-left:58.33333333%}html .offset-lg-8,html[data-netbox-color-mode=dark] .offset-lg-8,html[data-netbox-color-mode=light] .offset-lg-8{margin-left:66.66666667%}html .offset-lg-9,html[data-netbox-color-mode=dark] .offset-lg-9,html[data-netbox-color-mode=light] .offset-lg-9{margin-left:75%}html .offset-lg-10,html[data-netbox-color-mode=dark] .offset-lg-10,html[data-netbox-color-mode=light] .offset-lg-10{margin-left:83.33333333%}html .offset-lg-11,html[data-netbox-color-mode=dark] .offset-lg-11,html[data-netbox-color-mode=light] .offset-lg-11{margin-left:91.66666667%}html .g-lg-0,html .gx-lg-0,html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gx-lg-0,html[data-netbox-color-mode=light] .g-lg-0,html[data-netbox-color-mode=light] .gx-lg-0{--bs-gutter-x: 0}html .g-lg-0,html .gy-lg-0,html[data-netbox-color-mode=dark] .g-lg-0,html[data-netbox-color-mode=dark] .gy-lg-0,html[data-netbox-color-mode=light] .g-lg-0,html[data-netbox-color-mode=light] .gy-lg-0{--bs-gutter-y: 0}html .g-lg-1,html .gx-lg-1,html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gx-lg-1,html[data-netbox-color-mode=light] .g-lg-1,html[data-netbox-color-mode=light] .gx-lg-1{--bs-gutter-x: .25rem}html .g-lg-1,html .gy-lg-1,html[data-netbox-color-mode=dark] .g-lg-1,html[data-netbox-color-mode=dark] .gy-lg-1,html[data-netbox-color-mode=light] .g-lg-1,html[data-netbox-color-mode=light] .gy-lg-1{--bs-gutter-y: .25rem}html .g-lg-2,html .gx-lg-2,html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gx-lg-2,html[data-netbox-color-mode=light] .g-lg-2,html[data-netbox-color-mode=light] .gx-lg-2{--bs-gutter-x: .5rem}html .g-lg-2,html .gy-lg-2,html[data-netbox-color-mode=dark] .g-lg-2,html[data-netbox-color-mode=dark] .gy-lg-2,html[data-netbox-color-mode=light] .g-lg-2,html[data-netbox-color-mode=light] .gy-lg-2{--bs-gutter-y: .5rem}html .g-lg-3,html .gx-lg-3,html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gx-lg-3,html[data-netbox-color-mode=light] .g-lg-3,html[data-netbox-color-mode=light] .gx-lg-3{--bs-gutter-x: 1rem}html .g-lg-3,html .gy-lg-3,html[data-netbox-color-mode=dark] .g-lg-3,html[data-netbox-color-mode=dark] .gy-lg-3,html[data-netbox-color-mode=light] .g-lg-3,html[data-netbox-color-mode=light] .gy-lg-3{--bs-gutter-y: 1rem}html .g-lg-4,html .gx-lg-4,html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gx-lg-4,html[data-netbox-color-mode=light] .g-lg-4,html[data-netbox-color-mode=light] .gx-lg-4{--bs-gutter-x: 1.5rem}html .g-lg-4,html .gy-lg-4,html[data-netbox-color-mode=dark] .g-lg-4,html[data-netbox-color-mode=dark] .gy-lg-4,html[data-netbox-color-mode=light] .g-lg-4,html[data-netbox-color-mode=light] .gy-lg-4{--bs-gutter-y: 1.5rem}html .g-lg-5,html .gx-lg-5,html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gx-lg-5,html[data-netbox-color-mode=light] .g-lg-5,html[data-netbox-color-mode=light] .gx-lg-5{--bs-gutter-x: 3rem}html .g-lg-5,html .gy-lg-5,html[data-netbox-color-mode=dark] .g-lg-5,html[data-netbox-color-mode=dark] .gy-lg-5,html[data-netbox-color-mode=light] .g-lg-5,html[data-netbox-color-mode=light] .gy-lg-5{--bs-gutter-y: 3rem}}@media print and (min-width: 1200px){html .col-xl-auto,html[data-netbox-color-mode=dark] .col-xl-auto,html[data-netbox-color-mode=light] .col-xl-auto{flex:0 0 auto;width:auto}html .col-xl-1,html[data-netbox-color-mode=dark] .col-xl-1,html[data-netbox-color-mode=light] .col-xl-1{flex:0 0 auto;width:8.33333333%}html .col-xl-2,html[data-netbox-color-mode=dark] .col-xl-2,html[data-netbox-color-mode=light] .col-xl-2{flex:0 0 auto;width:16.66666667%}html .col-xl-3,html[data-netbox-color-mode=dark] .col-xl-3,html[data-netbox-color-mode=light] .col-xl-3{flex:0 0 auto;width:25%}html .col-xl-4,html[data-netbox-color-mode=dark] .col-xl-4,html[data-netbox-color-mode=light] .col-xl-4{flex:0 0 auto;width:33.33333333%}html .col-xl-5,html[data-netbox-color-mode=dark] .col-xl-5,html[data-netbox-color-mode=light] .col-xl-5{flex:0 0 auto;width:41.66666667%}html .col-xl-6,html[data-netbox-color-mode=dark] .col-xl-6,html[data-netbox-color-mode=light] .col-xl-6{flex:0 0 auto;width:50%}html .col-xl-7,html[data-netbox-color-mode=dark] .col-xl-7,html[data-netbox-color-mode=light] .col-xl-7{flex:0 0 auto;width:58.33333333%}html .col-xl-8,html[data-netbox-color-mode=dark] .col-xl-8,html[data-netbox-color-mode=light] .col-xl-8{flex:0 0 auto;width:66.66666667%}html .col-xl-9,html[data-netbox-color-mode=dark] .col-xl-9,html[data-netbox-color-mode=light] .col-xl-9{flex:0 0 auto;width:75%}html .col-xl-10,html[data-netbox-color-mode=dark] .col-xl-10,html[data-netbox-color-mode=light] .col-xl-10{flex:0 0 auto;width:83.33333333%}html .col-xl-11,html[data-netbox-color-mode=dark] .col-xl-11,html[data-netbox-color-mode=light] .col-xl-11{flex:0 0 auto;width:91.66666667%}html .col-xl-12,html[data-netbox-color-mode=dark] .col-xl-12,html[data-netbox-color-mode=light] .col-xl-12{flex:0 0 auto;width:100%}html .offset-xl-0,html[data-netbox-color-mode=dark] .offset-xl-0,html[data-netbox-color-mode=light] .offset-xl-0{margin-left:0}html .offset-xl-1,html[data-netbox-color-mode=dark] .offset-xl-1,html[data-netbox-color-mode=light] .offset-xl-1{margin-left:8.33333333%}html .offset-xl-2,html[data-netbox-color-mode=dark] .offset-xl-2,html[data-netbox-color-mode=light] .offset-xl-2{margin-left:16.66666667%}html .offset-xl-3,html[data-netbox-color-mode=dark] .offset-xl-3,html[data-netbox-color-mode=light] .offset-xl-3{margin-left:25%}html .offset-xl-4,html[data-netbox-color-mode=dark] .offset-xl-4,html[data-netbox-color-mode=light] .offset-xl-4{margin-left:33.33333333%}html .offset-xl-5,html[data-netbox-color-mode=dark] .offset-xl-5,html[data-netbox-color-mode=light] .offset-xl-5{margin-left:41.66666667%}html .offset-xl-6,html[data-netbox-color-mode=dark] .offset-xl-6,html[data-netbox-color-mode=light] .offset-xl-6{margin-left:50%}html .offset-xl-7,html[data-netbox-color-mode=dark] .offset-xl-7,html[data-netbox-color-mode=light] .offset-xl-7{margin-left:58.33333333%}html .offset-xl-8,html[data-netbox-color-mode=dark] .offset-xl-8,html[data-netbox-color-mode=light] .offset-xl-8{margin-left:66.66666667%}html .offset-xl-9,html[data-netbox-color-mode=dark] .offset-xl-9,html[data-netbox-color-mode=light] .offset-xl-9{margin-left:75%}html .offset-xl-10,html[data-netbox-color-mode=dark] .offset-xl-10,html[data-netbox-color-mode=light] .offset-xl-10{margin-left:83.33333333%}html .offset-xl-11,html[data-netbox-color-mode=dark] .offset-xl-11,html[data-netbox-color-mode=light] .offset-xl-11{margin-left:91.66666667%}html .g-xl-0,html .gx-xl-0,html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gx-xl-0,html[data-netbox-color-mode=light] .g-xl-0,html[data-netbox-color-mode=light] .gx-xl-0{--bs-gutter-x: 0}html .g-xl-0,html .gy-xl-0,html[data-netbox-color-mode=dark] .g-xl-0,html[data-netbox-color-mode=dark] .gy-xl-0,html[data-netbox-color-mode=light] .g-xl-0,html[data-netbox-color-mode=light] .gy-xl-0{--bs-gutter-y: 0}html .g-xl-1,html .gx-xl-1,html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gx-xl-1,html[data-netbox-color-mode=light] .g-xl-1,html[data-netbox-color-mode=light] .gx-xl-1{--bs-gutter-x: .25rem}html .g-xl-1,html .gy-xl-1,html[data-netbox-color-mode=dark] .g-xl-1,html[data-netbox-color-mode=dark] .gy-xl-1,html[data-netbox-color-mode=light] .g-xl-1,html[data-netbox-color-mode=light] .gy-xl-1{--bs-gutter-y: .25rem}html .g-xl-2,html .gx-xl-2,html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gx-xl-2,html[data-netbox-color-mode=light] .g-xl-2,html[data-netbox-color-mode=light] .gx-xl-2{--bs-gutter-x: .5rem}html .g-xl-2,html .gy-xl-2,html[data-netbox-color-mode=dark] .g-xl-2,html[data-netbox-color-mode=dark] .gy-xl-2,html[data-netbox-color-mode=light] .g-xl-2,html[data-netbox-color-mode=light] .gy-xl-2{--bs-gutter-y: .5rem}html .g-xl-3,html .gx-xl-3,html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gx-xl-3,html[data-netbox-color-mode=light] .g-xl-3,html[data-netbox-color-mode=light] .gx-xl-3{--bs-gutter-x: 1rem}html .g-xl-3,html .gy-xl-3,html[data-netbox-color-mode=dark] .g-xl-3,html[data-netbox-color-mode=dark] .gy-xl-3,html[data-netbox-color-mode=light] .g-xl-3,html[data-netbox-color-mode=light] .gy-xl-3{--bs-gutter-y: 1rem}html .g-xl-4,html .gx-xl-4,html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gx-xl-4,html[data-netbox-color-mode=light] .g-xl-4,html[data-netbox-color-mode=light] .gx-xl-4{--bs-gutter-x: 1.5rem}html .g-xl-4,html .gy-xl-4,html[data-netbox-color-mode=dark] .g-xl-4,html[data-netbox-color-mode=dark] .gy-xl-4,html[data-netbox-color-mode=light] .g-xl-4,html[data-netbox-color-mode=light] .gy-xl-4{--bs-gutter-y: 1.5rem}html .g-xl-5,html .gx-xl-5,html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gx-xl-5,html[data-netbox-color-mode=light] .g-xl-5,html[data-netbox-color-mode=light] .gx-xl-5{--bs-gutter-x: 3rem}html .g-xl-5,html .gy-xl-5,html[data-netbox-color-mode=dark] .g-xl-5,html[data-netbox-color-mode=dark] .gy-xl-5,html[data-netbox-color-mode=light] .g-xl-5,html[data-netbox-color-mode=light] .gy-xl-5{--bs-gutter-y: 3rem}}@media print and (min-width: 1400px){html .col-xxl-auto,html[data-netbox-color-mode=dark] .col-xxl-auto,html[data-netbox-color-mode=light] .col-xxl-auto{flex:0 0 auto;width:auto}html .col-xxl-1,html[data-netbox-color-mode=dark] .col-xxl-1,html[data-netbox-color-mode=light] .col-xxl-1{flex:0 0 auto;width:8.33333333%}html .col-xxl-2,html[data-netbox-color-mode=dark] .col-xxl-2,html[data-netbox-color-mode=light] .col-xxl-2{flex:0 0 auto;width:16.66666667%}html .col-xxl-3,html[data-netbox-color-mode=dark] .col-xxl-3,html[data-netbox-color-mode=light] .col-xxl-3{flex:0 0 auto;width:25%}html .col-xxl-4,html[data-netbox-color-mode=dark] .col-xxl-4,html[data-netbox-color-mode=light] .col-xxl-4{flex:0 0 auto;width:33.33333333%}html .col-xxl-5,html[data-netbox-color-mode=dark] .col-xxl-5,html[data-netbox-color-mode=light] .col-xxl-5{flex:0 0 auto;width:41.66666667%}html .col-xxl-6,html[data-netbox-color-mode=dark] .col-xxl-6,html[data-netbox-color-mode=light] .col-xxl-6{flex:0 0 auto;width:50%}html .col-xxl-7,html[data-netbox-color-mode=dark] .col-xxl-7,html[data-netbox-color-mode=light] .col-xxl-7{flex:0 0 auto;width:58.33333333%}html .col-xxl-8,html[data-netbox-color-mode=dark] .col-xxl-8,html[data-netbox-color-mode=light] .col-xxl-8{flex:0 0 auto;width:66.66666667%}html .col-xxl-9,html[data-netbox-color-mode=dark] .col-xxl-9,html[data-netbox-color-mode=light] .col-xxl-9{flex:0 0 auto;width:75%}html .col-xxl-10,html[data-netbox-color-mode=dark] .col-xxl-10,html[data-netbox-color-mode=light] .col-xxl-10{flex:0 0 auto;width:83.33333333%}html .col-xxl-11,html[data-netbox-color-mode=dark] .col-xxl-11,html[data-netbox-color-mode=light] .col-xxl-11{flex:0 0 auto;width:91.66666667%}html .col-xxl-12,html[data-netbox-color-mode=dark] .col-xxl-12,html[data-netbox-color-mode=light] .col-xxl-12{flex:0 0 auto;width:100%}html .offset-xxl-0,html[data-netbox-color-mode=dark] .offset-xxl-0,html[data-netbox-color-mode=light] .offset-xxl-0{margin-left:0}html .offset-xxl-1,html[data-netbox-color-mode=dark] .offset-xxl-1,html[data-netbox-color-mode=light] .offset-xxl-1{margin-left:8.33333333%}html .offset-xxl-2,html[data-netbox-color-mode=dark] .offset-xxl-2,html[data-netbox-color-mode=light] .offset-xxl-2{margin-left:16.66666667%}html .offset-xxl-3,html[data-netbox-color-mode=dark] .offset-xxl-3,html[data-netbox-color-mode=light] .offset-xxl-3{margin-left:25%}html .offset-xxl-4,html[data-netbox-color-mode=dark] .offset-xxl-4,html[data-netbox-color-mode=light] .offset-xxl-4{margin-left:33.33333333%}html .offset-xxl-5,html[data-netbox-color-mode=dark] .offset-xxl-5,html[data-netbox-color-mode=light] .offset-xxl-5{margin-left:41.66666667%}html .offset-xxl-6,html[data-netbox-color-mode=dark] .offset-xxl-6,html[data-netbox-color-mode=light] .offset-xxl-6{margin-left:50%}html .offset-xxl-7,html[data-netbox-color-mode=dark] .offset-xxl-7,html[data-netbox-color-mode=light] .offset-xxl-7{margin-left:58.33333333%}html .offset-xxl-8,html[data-netbox-color-mode=dark] .offset-xxl-8,html[data-netbox-color-mode=light] .offset-xxl-8{margin-left:66.66666667%}html .offset-xxl-9,html[data-netbox-color-mode=dark] .offset-xxl-9,html[data-netbox-color-mode=light] .offset-xxl-9{margin-left:75%}html .offset-xxl-10,html[data-netbox-color-mode=dark] .offset-xxl-10,html[data-netbox-color-mode=light] .offset-xxl-10{margin-left:83.33333333%}html .offset-xxl-11,html[data-netbox-color-mode=dark] .offset-xxl-11,html[data-netbox-color-mode=light] .offset-xxl-11{margin-left:91.66666667%}html .g-xxl-0,html .gx-xxl-0,html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gx-xxl-0,html[data-netbox-color-mode=light] .g-xxl-0,html[data-netbox-color-mode=light] .gx-xxl-0{--bs-gutter-x: 0}html .g-xxl-0,html .gy-xxl-0,html[data-netbox-color-mode=dark] .g-xxl-0,html[data-netbox-color-mode=dark] .gy-xxl-0,html[data-netbox-color-mode=light] .g-xxl-0,html[data-netbox-color-mode=light] .gy-xxl-0{--bs-gutter-y: 0}html .g-xxl-1,html .gx-xxl-1,html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gx-xxl-1,html[data-netbox-color-mode=light] .g-xxl-1,html[data-netbox-color-mode=light] .gx-xxl-1{--bs-gutter-x: .25rem}html .g-xxl-1,html .gy-xxl-1,html[data-netbox-color-mode=dark] .g-xxl-1,html[data-netbox-color-mode=dark] .gy-xxl-1,html[data-netbox-color-mode=light] .g-xxl-1,html[data-netbox-color-mode=light] .gy-xxl-1{--bs-gutter-y: .25rem}html .g-xxl-2,html .gx-xxl-2,html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gx-xxl-2,html[data-netbox-color-mode=light] .g-xxl-2,html[data-netbox-color-mode=light] .gx-xxl-2{--bs-gutter-x: .5rem}html .g-xxl-2,html .gy-xxl-2,html[data-netbox-color-mode=dark] .g-xxl-2,html[data-netbox-color-mode=dark] .gy-xxl-2,html[data-netbox-color-mode=light] .g-xxl-2,html[data-netbox-color-mode=light] .gy-xxl-2{--bs-gutter-y: .5rem}html .g-xxl-3,html .gx-xxl-3,html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gx-xxl-3,html[data-netbox-color-mode=light] .g-xxl-3,html[data-netbox-color-mode=light] .gx-xxl-3{--bs-gutter-x: 1rem}html .g-xxl-3,html .gy-xxl-3,html[data-netbox-color-mode=dark] .g-xxl-3,html[data-netbox-color-mode=dark] .gy-xxl-3,html[data-netbox-color-mode=light] .g-xxl-3,html[data-netbox-color-mode=light] .gy-xxl-3{--bs-gutter-y: 1rem}html .g-xxl-4,html .gx-xxl-4,html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gx-xxl-4,html[data-netbox-color-mode=light] .g-xxl-4,html[data-netbox-color-mode=light] .gx-xxl-4{--bs-gutter-x: 1.5rem}html .g-xxl-4,html .gy-xxl-4,html[data-netbox-color-mode=dark] .g-xxl-4,html[data-netbox-color-mode=dark] .gy-xxl-4,html[data-netbox-color-mode=light] .g-xxl-4,html[data-netbox-color-mode=light] .gy-xxl-4{--bs-gutter-y: 1.5rem}html .g-xxl-5,html .gx-xxl-5,html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gx-xxl-5,html[data-netbox-color-mode=light] .g-xxl-5,html[data-netbox-color-mode=light] .gx-xxl-5{--bs-gutter-x: 3rem}html .g-xxl-5,html .gy-xxl-5,html[data-netbox-color-mode=dark] .g-xxl-5,html[data-netbox-color-mode=dark] .gy-xxl-5,html[data-netbox-color-mode=light] .g-xxl-5,html[data-netbox-color-mode=light] .gy-xxl-5{--bs-gutter-y: 3rem}}@media print{html .table,html[data-netbox-color-mode=dark] .table,html[data-netbox-color-mode=light] .table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, .05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, .1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, .075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}html .table>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table>:not(caption)>*>*,html[data-netbox-color-mode=light] .table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}html .table>tbody,html[data-netbox-color-mode=dark] .table>tbody,html[data-netbox-color-mode=light] .table>tbody{vertical-align:inherit}html .table>thead,html[data-netbox-color-mode=dark] .table>thead,html[data-netbox-color-mode=light] .table>thead{vertical-align:bottom}html .table>:not(:last-child)>:last-child>*,html[data-netbox-color-mode=dark] .table>:not(:last-child)>:last-child>*,html[data-netbox-color-mode=light] .table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}}@media print{html .caption-top,html[data-netbox-color-mode=dark] .caption-top,html[data-netbox-color-mode=light] .caption-top{caption-side:top}}@media print{html .table-sm>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-sm>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-sm>:not(caption)>*>*{padding:.25rem}}@media print{html .table-bordered>:not(caption)>*,html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*,html[data-netbox-color-mode=light] .table-bordered>:not(caption)>*{border-width:1px 0}html .table-bordered>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-bordered>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-bordered>:not(caption)>*>*{border-width:0 1px}}@media print{html .table-borderless>:not(caption)>*>*,html[data-netbox-color-mode=dark] .table-borderless>:not(caption)>*>*,html[data-netbox-color-mode=light] .table-borderless>:not(caption)>*>*{border-bottom-width:0}}@media print{html .table-striped>tbody>tr:nth-of-type(odd),html[data-netbox-color-mode=dark] .table-striped>tbody>tr:nth-of-type(odd),html[data-netbox-color-mode=light] .table-striped>tbody>tr:nth-of-type(odd){--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}}@media print{html .table-active,html[data-netbox-color-mode=dark] .table-active,html[data-netbox-color-mode=light] .table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}}@media print{html .table-hover>tbody>tr:hover,html[data-netbox-color-mode=dark] .table-hover>tbody>tr:hover,html[data-netbox-color-mode=light] .table-hover>tbody>tr:hover{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}}@media print{html .table-primary,html[data-netbox-color-mode=dark] .table-primary,html[data-netbox-color-mode=light] .table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}}@media print{html .table-secondary,html[data-netbox-color-mode=dark] .table-secondary,html[data-netbox-color-mode=light] .table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-color:#cbccce}}@media print{html .table-success,html[data-netbox-color-mode=dark] .table-success,html[data-netbox-color-mode=light] .table-success{--bs-table-bg: #d1e7dd;--bs-table-striped-bg: #c7dbd2;--bs-table-striped-color: #000;--bs-table-active-bg: #bcd0c7;--bs-table-active-color: #000;--bs-table-hover-bg: #c1d6cc;--bs-table-hover-color: #000;color:#000;border-color:#bcd0c7}}@media print{html .table-info,html[data-netbox-color-mode=dark] .table-info,html[data-netbox-color-mode=light] .table-info{--bs-table-bg: #cff4fc;--bs-table-striped-bg: #c5e8ef;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #bfe2e9;--bs-table-hover-color: #000;color:#000;border-color:#badce3}}@media print{html .table-warning,html[data-netbox-color-mode=dark] .table-warning,html[data-netbox-color-mode=light] .table-warning{--bs-table-bg: #fff3cd;--bs-table-striped-bg: #f2e7c3;--bs-table-striped-color: #000;--bs-table-active-bg: #e6dbb9;--bs-table-active-color: #000;--bs-table-hover-bg: #ece1be;--bs-table-hover-color: #000;color:#000;border-color:#e6dbb9}}@media print{html .table-danger,html[data-netbox-color-mode=dark] .table-danger,html[data-netbox-color-mode=light] .table-danger{--bs-table-bg: #f8d7da;--bs-table-striped-bg: #eccccf;--bs-table-striped-color: #000;--bs-table-active-bg: #dfc2c4;--bs-table-active-color: #000;--bs-table-hover-bg: #e5c7ca;--bs-table-hover-color: #000;color:#000;border-color:#dfc2c4}}@media print{html .table-light,html[data-netbox-color-mode=dark] .table-light,html[data-netbox-color-mode=light] .table-light{--bs-table-bg: #f8f9fa;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:#000;border-color:#dfe0e1}}@media print{html .table-dark,html[data-netbox-color-mode=dark] .table-dark,html[data-netbox-color-mode=light] .table-dark{--bs-table-bg: #212529;--bs-table-striped-bg: #2c3034;--bs-table-striped-color: #fff;--bs-table-active-bg: #373b3e;--bs-table-active-color: #fff;--bs-table-hover-bg: #323539;--bs-table-hover-color: #fff;color:#fff;border-color:#373b3e}}@media print{html .table-responsive,html[data-netbox-color-mode=dark] .table-responsive,html[data-netbox-color-mode=light] .table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 575.98px){html .table-responsive-sm,html[data-netbox-color-mode=dark] .table-responsive-sm,html[data-netbox-color-mode=light] .table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 767.98px){html .table-responsive-md,html[data-netbox-color-mode=dark] .table-responsive-md,html[data-netbox-color-mode=light] .table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 991.98px){html .table-responsive-lg,html[data-netbox-color-mode=dark] .table-responsive-lg,html[data-netbox-color-mode=light] .table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 1199.98px){html .table-responsive-xl,html[data-netbox-color-mode=dark] .table-responsive-xl,html[data-netbox-color-mode=light] .table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print and (max-width: 1399.98px){html .table-responsive-xxl,html[data-netbox-color-mode=dark] .table-responsive-xxl,html[data-netbox-color-mode=light] .table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media print{html .form-label,html[data-netbox-color-mode=dark] .form-label,html[data-netbox-color-mode=light] .form-label{margin-bottom:.5rem}}@media print{html .col-form-label,html[data-netbox-color-mode=dark] .col-form-label,html[data-netbox-color-mode=light] .col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}}@media print{html .col-form-label-lg,html[data-netbox-color-mode=dark] .col-form-label-lg,html[data-netbox-color-mode=light] .col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}}@media print{html .col-form-label-sm,html[data-netbox-color-mode=dark] .col-form-label-sm,html[data-netbox-color-mode=light] .col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:.875rem}}@media print{html .form-text,html[data-netbox-color-mode=dark] .form-text,html[data-netbox-color-mode=light] .form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}}@media print{html .form-control,html[data-netbox-color-mode=dark] .form-control,html[data-netbox-color-mode=light] .form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control,html[data-netbox-color-mode=dark] .form-control,html[data-netbox-color-mode=light] .form-control{transition:none}}@media print{html .form-control[type=file],html[data-netbox-color-mode=dark] .form-control[type=file],html[data-netbox-color-mode=light] .form-control[type=file]{overflow:hidden}html .form-control[type=file]:not(:disabled):not([readonly]),html[data-netbox-color-mode=dark] .form-control[type=file]:not(:disabled):not([readonly]),html[data-netbox-color-mode=light] .form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}}@media print{html .form-control:focus,html[data-netbox-color-mode=dark] .form-control:focus,html[data-netbox-color-mode=light] .form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .form-control::-webkit-date-and-time-value,html[data-netbox-color-mode=dark] .form-control::-webkit-date-and-time-value,html[data-netbox-color-mode=light] .form-control::-webkit-date-and-time-value{height:1.5em}}@media print{html .form-control::placeholder,html[data-netbox-color-mode=dark] .form-control::placeholder,html[data-netbox-color-mode=light] .form-control::placeholder{color:#adb5bd;opacity:1}}@media print{html .form-control:disabled,html .form-control[readonly],html[data-netbox-color-mode=dark] .form-control:disabled,html[data-netbox-color-mode=dark] .form-control[readonly],html[data-netbox-color-mode=light] .form-control:disabled,html[data-netbox-color-mode=light] .form-control[readonly]{background-color:#e9ecef;opacity:1}}@media print{html .form-control::file-selector-button,html[data-netbox-color-mode=dark] .form-control::file-selector-button,html[data-netbox-color-mode=light] .form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control::file-selector-button,html[data-netbox-color-mode=dark] .form-control::file-selector-button,html[data-netbox-color-mode=light] .form-control::file-selector-button{transition:none}}@media print{html .form-control:hover:not(:disabled):not([readonly])::file-selector-button,html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::file-selector-button,html[data-netbox-color-mode=light] .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}}@media print{html .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control::-webkit-file-upload-button{transition:none}}@media print{html .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}}@media print{html .form-control-plaintext,html[data-netbox-color-mode=dark] .form-control-plaintext,html[data-netbox-color-mode=light] .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}html .form-control-plaintext.form-control-sm,html .form-control-plaintext.form-control-lg,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=dark] .form-control-plaintext.form-control-lg,html[data-netbox-color-mode=light] .form-control-plaintext.form-control-sm,html[data-netbox-color-mode=light] .form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}}@media print{html .form-control-sm,html[data-netbox-color-mode=dark] .form-control-sm,html[data-netbox-color-mode=light] .form-control-sm{min-height:calc(1.5em + 0.5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html .form-control-sm::file-selector-button,html[data-netbox-color-mode=dark] .form-control-sm::file-selector-button,html[data-netbox-color-mode=light] .form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}html .form-control-sm::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control-sm::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}}@media print{html .form-control-lg,html[data-netbox-color-mode=dark] .form-control-lg,html[data-netbox-color-mode=light] .form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}html .form-control-lg::file-selector-button,html[data-netbox-color-mode=dark] .form-control-lg::file-selector-button,html[data-netbox-color-mode=light] .form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}html .form-control-lg::-webkit-file-upload-button,html[data-netbox-color-mode=dark] .form-control-lg::-webkit-file-upload-button,html[data-netbox-color-mode=light] .form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}}@media print{html textarea.form-control,html[data-netbox-color-mode=dark] textarea.form-control,html[data-netbox-color-mode=light] textarea.form-control{min-height:calc(1.5em + 0.75rem + 2px)}html textarea.form-control-sm,html[data-netbox-color-mode=dark] textarea.form-control-sm,html[data-netbox-color-mode=light] textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + 2px)}html textarea.form-control-lg,html[data-netbox-color-mode=dark] textarea.form-control-lg,html[data-netbox-color-mode=light] textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}}@media print{html .form-control-color,html[data-netbox-color-mode=dark] .form-control-color,html[data-netbox-color-mode=light] .form-control-color{max-width:3rem;height:auto;padding:.375rem}html .form-control-color:not(:disabled):not([readonly]),html[data-netbox-color-mode=dark] .form-control-color:not(:disabled):not([readonly]),html[data-netbox-color-mode=light] .form-control-color:not(:disabled):not([readonly]){cursor:pointer}html .form-control-color::-moz-color-swatch,html[data-netbox-color-mode=dark] .form-control-color::-moz-color-swatch,html[data-netbox-color-mode=light] .form-control-color::-moz-color-swatch{height:1.5em;border-radius:.375rem}html .form-control-color::-webkit-color-swatch,html[data-netbox-color-mode=dark] .form-control-color::-webkit-color-swatch,html[data-netbox-color-mode=light] .form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.375rem}}@media print{html .form-select,html[data-netbox-color-mode=dark] .form-select,html[data-netbox-color-mode=light] .form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-select,html[data-netbox-color-mode=dark] .form-select,html[data-netbox-color-mode=light] .form-select{transition:none}}@media print{html .form-select:focus,html[data-netbox-color-mode=dark] .form-select:focus,html[data-netbox-color-mode=light] .form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .form-select[multiple],html .form-select[size]:not([size="1"]),html[data-netbox-color-mode=dark] .form-select[multiple],html[data-netbox-color-mode=dark] .form-select[size]:not([size="1"]),html[data-netbox-color-mode=light] .form-select[multiple],html[data-netbox-color-mode=light] .form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}}@media print{html .form-select:disabled,html[data-netbox-color-mode=dark] .form-select:disabled,html[data-netbox-color-mode=light] .form-select:disabled{color:#6c757d;background-color:#e9ecef}}@media print{html .form-select:-moz-focusring,html[data-netbox-color-mode=dark] .form-select:-moz-focusring,html[data-netbox-color-mode=light] .form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}}@media print{html .form-select-sm,html[data-netbox-color-mode=dark] .form-select-sm,html[data-netbox-color-mode=light] .form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}}@media print{html .form-select-lg,html[data-netbox-color-mode=dark] .form-select-lg,html[data-netbox-color-mode=light] .form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}}@media print{html .form-check,html[data-netbox-color-mode=dark] .form-check,html[data-netbox-color-mode=light] .form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}html .form-check .form-check-input,html[data-netbox-color-mode=dark] .form-check .form-check-input,html[data-netbox-color-mode=light] .form-check .form-check-input{float:left;margin-left:-1.5em}}@media print{html .form-check-input,html[data-netbox-color-mode=dark] .form-check-input,html[data-netbox-color-mode=light] .form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact}html .form-check-input[type=checkbox],html[data-netbox-color-mode=dark] .form-check-input[type=checkbox],html[data-netbox-color-mode=light] .form-check-input[type=checkbox]{border-radius:.25em}html .form-check-input[type=radio],html[data-netbox-color-mode=dark] .form-check-input[type=radio],html[data-netbox-color-mode=light] .form-check-input[type=radio]{border-radius:50%}html .form-check-input:active,html[data-netbox-color-mode=dark] .form-check-input:active,html[data-netbox-color-mode=light] .form-check-input:active{filter:brightness(90%)}html .form-check-input:focus,html[data-netbox-color-mode=dark] .form-check-input:focus,html[data-netbox-color-mode=light] .form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}html .form-check-input:checked,html[data-netbox-color-mode=dark] .form-check-input:checked,html[data-netbox-color-mode=light] .form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}html .form-check-input:checked[type=checkbox],html[data-netbox-color-mode=dark] .form-check-input:checked[type=checkbox],html[data-netbox-color-mode=light] .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}html .form-check-input:checked[type=radio],html[data-netbox-color-mode=dark] .form-check-input:checked[type=radio],html[data-netbox-color-mode=light] .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}html .form-check-input[type=checkbox]:indeterminate,html[data-netbox-color-mode=dark] .form-check-input[type=checkbox]:indeterminate,html[data-netbox-color-mode=light] .form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}html .form-check-input:disabled,html[data-netbox-color-mode=dark] .form-check-input:disabled,html[data-netbox-color-mode=light] .form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}html .form-check-input[disabled]~.form-check-label,html .form-check-input:disabled~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input:disabled~.form-check-label,html[data-netbox-color-mode=light] .form-check-input[disabled]~.form-check-label,html[data-netbox-color-mode=light] .form-check-input:disabled~.form-check-label{opacity:.5}}@media print{html .form-switch,html[data-netbox-color-mode=dark] .form-switch,html[data-netbox-color-mode=light] .form-switch{padding-left:2.5em}html .form-switch .form-check-input,html[data-netbox-color-mode=dark] .form-switch .form-check-input,html[data-netbox-color-mode=light] .form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-switch .form-check-input,html[data-netbox-color-mode=dark] .form-switch .form-check-input,html[data-netbox-color-mode=light] .form-switch .form-check-input{transition:none}}@media print{html .form-switch .form-check-input:focus,html[data-netbox-color-mode=dark] .form-switch .form-check-input:focus,html[data-netbox-color-mode=light] .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}}@media print{html .form-switch .form-check-input:checked,html[data-netbox-color-mode=dark] .form-switch .form-check-input:checked,html[data-netbox-color-mode=light] .form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}}@media print{html .form-check-inline,html[data-netbox-color-mode=dark] .form-check-inline,html[data-netbox-color-mode=light] .form-check-inline{display:inline-block;margin-right:1rem}}@media print{html .btn-check,html[data-netbox-color-mode=dark] .btn-check,html[data-netbox-color-mode=light] .btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}html .btn-check[disabled]+.btn,html .btn-check:disabled+.btn,html[data-netbox-color-mode=dark] .btn-check[disabled]+.btn,html[data-netbox-color-mode=dark] .btn-check:disabled+.btn,html[data-netbox-color-mode=light] .btn-check[disabled]+.btn,html[data-netbox-color-mode=light] .btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}}@media print{html .form-range,html[data-netbox-color-mode=dark] .form-range,html[data-netbox-color-mode=light] .form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}html .form-range:focus,html[data-netbox-color-mode=dark] .form-range:focus,html[data-netbox-color-mode=light] .form-range:focus{outline:0}html .form-range:focus::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range:focus::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}html .form-range:focus::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range:focus::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem #0d6efd40}html .form-range::-moz-focus-outer,html[data-netbox-color-mode=dark] .form-range::-moz-focus-outer,html[data-netbox-color-mode=light] .form-range::-moz-focus-outer{border:0}html .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb{transition:none}}@media print{html .form-range::-webkit-slider-thumb:active,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-thumb:active,html[data-netbox-color-mode=light] .form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}}@media print{html .form-range::-webkit-slider-runnable-track,html[data-netbox-color-mode=dark] .form-range::-webkit-slider-runnable-track,html[data-netbox-color-mode=light] .form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}}@media print{html .form-range::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}}@media print and (prefers-reduced-motion: reduce){html .form-range::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb{transition:none}}@media print{html .form-range::-moz-range-thumb:active,html[data-netbox-color-mode=dark] .form-range::-moz-range-thumb:active,html[data-netbox-color-mode=light] .form-range::-moz-range-thumb:active{background-color:#b6d4fe}}@media print{html .form-range::-moz-range-track,html[data-netbox-color-mode=dark] .form-range::-moz-range-track,html[data-netbox-color-mode=light] .form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}}@media print{html .form-range:disabled,html[data-netbox-color-mode=dark] .form-range:disabled,html[data-netbox-color-mode=light] .form-range:disabled{pointer-events:none}html .form-range:disabled::-webkit-slider-thumb,html[data-netbox-color-mode=dark] .form-range:disabled::-webkit-slider-thumb,html[data-netbox-color-mode=light] .form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}html .form-range:disabled::-moz-range-thumb,html[data-netbox-color-mode=dark] .form-range:disabled::-moz-range-thumb,html[data-netbox-color-mode=light] .form-range:disabled::-moz-range-thumb{background-color:#adb5bd}}@media print{html .form-floating,html[data-netbox-color-mode=dark] .form-floating,html[data-netbox-color-mode=light] .form-floating{position:relative}html .form-floating>.form-control,html .form-floating>.form-select,html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-select,html[data-netbox-color-mode=light] .form-floating>.form-control,html[data-netbox-color-mode=light] .form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}html .form-floating>label,html[data-netbox-color-mode=dark] .form-floating>label,html[data-netbox-color-mode=light] .form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-floating>label,html[data-netbox-color-mode=dark] .form-floating>label,html[data-netbox-color-mode=light] .form-floating>label{transition:none}}@media print{html .form-floating>.form-control,html[data-netbox-color-mode=dark] .form-floating>.form-control,html[data-netbox-color-mode=light] .form-floating>.form-control{padding:1rem .75rem}html .form-floating>.form-control::placeholder,html[data-netbox-color-mode=dark] .form-floating>.form-control::placeholder,html[data-netbox-color-mode=light] .form-floating>.form-control::placeholder{color:transparent}html .form-floating>.form-control:focus,html .form-floating>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=dark] .form-floating>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=light] .form-floating>.form-control:focus,html[data-netbox-color-mode=light] .form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html .form-floating>.form-control:-webkit-autofill,html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill,html[data-netbox-color-mode=light] .form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.form-select,html[data-netbox-color-mode=dark] .form-floating>.form-select,html[data-netbox-color-mode=light] .form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.form-control:focus~label,html .form-floating>.form-control:not(:placeholder-shown)~label,html .form-floating>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.form-select~label,html[data-netbox-color-mode=light] .form-floating>.form-control:focus~label,html[data-netbox-color-mode=light] .form-floating>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=light] .form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .form-floating>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=dark] .form-floating>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=light] .form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .input-group,html[data-netbox-color-mode=dark] .input-group,html[data-netbox-color-mode=light] .input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}html .input-group>.form-control,html .input-group>.form-select,html[data-netbox-color-mode=dark] .input-group>.form-control,html[data-netbox-color-mode=dark] .input-group>.form-select,html[data-netbox-color-mode=light] .input-group>.form-control,html[data-netbox-color-mode=light] .input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}html .input-group>.form-control:focus,html .input-group>.form-select:focus,html[data-netbox-color-mode=dark] .input-group>.form-control:focus,html[data-netbox-color-mode=dark] .input-group>.form-select:focus,html[data-netbox-color-mode=light] .input-group>.form-control:focus,html[data-netbox-color-mode=light] .input-group>.form-select:focus{z-index:3}html .input-group .btn,html[data-netbox-color-mode=dark] .input-group .btn,html[data-netbox-color-mode=light] .input-group .btn{position:relative;z-index:2}html .input-group .btn:focus,html[data-netbox-color-mode=dark] .input-group .btn:focus,html[data-netbox-color-mode=light] .input-group .btn:focus{z-index:3}}@media print{html .input-group-text,html[data-netbox-color-mode=dark] .input-group-text,html[data-netbox-color-mode=light] .input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}}@media print{html .input-group-lg>.form-control,html .input-group-lg>.form-select,html .input-group-lg>.input-group-text,html .input-group-lg>.btn,html[data-netbox-color-mode=dark] .input-group-lg>.form-control,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.input-group-text,html[data-netbox-color-mode=dark] .input-group-lg>.btn,html[data-netbox-color-mode=light] .input-group-lg>.form-control,html[data-netbox-color-mode=light] .input-group-lg>.form-select,html[data-netbox-color-mode=light] .input-group-lg>.input-group-text,html[data-netbox-color-mode=light] .input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}}@media print{html .input-group-sm>.form-control,html .input-group-sm>.form-select,html .input-group-sm>.input-group-text,html .input-group-sm>.btn,html[data-netbox-color-mode=dark] .input-group-sm>.form-control,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.input-group-text,html[data-netbox-color-mode=dark] .input-group-sm>.btn,html[data-netbox-color-mode=light] .input-group-sm>.form-control,html[data-netbox-color-mode=light] .input-group-sm>.form-select,html[data-netbox-color-mode=light] .input-group-sm>.input-group-text,html[data-netbox-color-mode=light] .input-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}}@media print{html .input-group-lg>.form-select,html .input-group-sm>.form-select,html[data-netbox-color-mode=dark] .input-group-lg>.form-select,html[data-netbox-color-mode=dark] .input-group-sm>.form-select,html[data-netbox-color-mode=light] .input-group-lg>.form-select,html[data-netbox-color-mode=light] .input-group-sm>.form-select{padding-right:3rem}}@media print{html .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),html[data-netbox-color-mode=light] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=light] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}html .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),html[data-netbox-color-mode=dark] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=dark] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),html[data-netbox-color-mode=light] .input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),html[data-netbox-color-mode=light] .input-group.has-validation>.dropdown-toggle:nth-last-child(n+4){border-top-right-radius:0;border-bottom-right-radius:0}html .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback),html[data-netbox-color-mode=dark] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback),html[data-netbox-color-mode=light] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}}@media print{html .valid-feedback,html[data-netbox-color-mode=dark] .valid-feedback,html[data-netbox-color-mode=light] .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}}@media print{html .valid-tooltip,html[data-netbox-color-mode=dark] .valid-tooltip,html[data-netbox-color-mode=light] .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#198754e6;border-radius:.375rem}}@media print{.was-validated html:valid~.valid-feedback,.was-validated html:valid~.valid-tooltip,html.is-valid~.valid-feedback,html.is-valid~.valid-tooltip,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=dark]:valid~.valid-tooltip,html[data-netbox-color-mode=dark].is-valid~.valid-feedback,html[data-netbox-color-mode=dark].is-valid~.valid-tooltip,.was-validated html[data-netbox-color-mode=light]:valid~.valid-feedback,.was-validated html[data-netbox-color-mode=light]:valid~.valid-tooltip,html[data-netbox-color-mode=light].is-valid~.valid-feedback,html[data-netbox-color-mode=light].is-valid~.valid-tooltip{display:block}}@media print{.was-validated html .form-control:valid,html .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-control:valid,html[data-netbox-color-mode=dark] .form-control.is-valid,.was-validated html[data-netbox-color-mode=light] .form-control:valid,html[data-netbox-color-mode=light] .form-control.is-valid{border-color:#198754;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html .form-control:valid:focus,html .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-control:valid:focus,html[data-netbox-color-mode=dark] .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-control:valid:focus,html[data-netbox-color-mode=light] .form-control.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}}@media print{.was-validated html textarea.form-control:valid,html textarea.form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] textarea.form-control:valid,html[data-netbox-color-mode=dark] textarea.form-control.is-valid,.was-validated html[data-netbox-color-mode=light] textarea.form-control:valid,html[data-netbox-color-mode=light] textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}}@media print{.was-validated html .form-select:valid,html .form-select.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-select:valid,html[data-netbox-color-mode=dark] .form-select.is-valid,.was-validated html[data-netbox-color-mode=light] .form-select:valid,html[data-netbox-color-mode=light] .form-select.is-valid{border-color:#198754}.was-validated html .form-select:valid:not([multiple]):not([size]),.was-validated html .form-select:valid:not([multiple])[size="1"],html .form-select.is-valid:not([multiple]):not([size]),html .form-select.is-valid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-valid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=light] .form-select:valid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=light] .form-select:valid:not([multiple])[size="1"],html[data-netbox-color-mode=light] .form-select.is-valid:not([multiple]):not([size]),html[data-netbox-color-mode=light] .form-select.is-valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html .form-select:valid:focus,html .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-select:valid:focus,html[data-netbox-color-mode=dark] .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-select:valid:focus,html[data-netbox-color-mode=light] .form-select.is-valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem #19875440}}@media print{.was-validated html .form-check-input:valid,html .form-check-input.is-valid,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid,html[data-netbox-color-mode=dark] .form-check-input.is-valid,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid,html[data-netbox-color-mode=light] .form-check-input.is-valid{border-color:#198754}.was-validated html .form-check-input:valid:checked,html .form-check-input.is-valid:checked,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-valid:checked,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid:checked,html[data-netbox-color-mode=light] .form-check-input.is-valid:checked{background-color:#198754}.was-validated html .form-check-input:valid:focus,html .form-check-input.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid:focus,html[data-netbox-color-mode=light] .form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem #19875440}.was-validated html .form-check-input:valid~.form-check-label,html .form-check-input.is-valid~.form-check-label,.was-validated html[data-netbox-color-mode=dark] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-valid~.form-check-label,.was-validated html[data-netbox-color-mode=light] .form-check-input:valid~.form-check-label,html[data-netbox-color-mode=light] .form-check-input.is-valid~.form-check-label{color:#198754}}@media print{html .form-check-inline .form-check-input~.valid-feedback,html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.valid-feedback,html[data-netbox-color-mode=light] .form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}}@media print{.was-validated html .input-group .form-control:valid,html .input-group .form-control.is-valid,.was-validated html .input-group .form-select:valid,html .input-group .form-select.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:valid,html[data-netbox-color-mode=light] .input-group .form-control.is-valid,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:valid,html[data-netbox-color-mode=light] .input-group .form-select.is-valid{z-index:1}.was-validated html .input-group .form-control:valid:focus,html .input-group .form-control.is-valid:focus,.was-validated html .input-group .form-select:valid:focus,html .input-group .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:valid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:valid:focus,html[data-netbox-color-mode=light] .input-group .form-control.is-valid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:valid:focus,html[data-netbox-color-mode=light] .input-group .form-select.is-valid:focus{z-index:3}}@media print{html .invalid-feedback,html[data-netbox-color-mode=dark] .invalid-feedback,html[data-netbox-color-mode=light] .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}}@media print{html .invalid-tooltip,html[data-netbox-color-mode=dark] .invalid-tooltip,html[data-netbox-color-mode=light] .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:#dc3545e6;border-radius:.375rem}}@media print{.was-validated html:invalid~.invalid-feedback,.was-validated html:invalid~.invalid-tooltip,html.is-invalid~.invalid-feedback,html.is-invalid~.invalid-tooltip,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=dark]:invalid~.invalid-tooltip,html[data-netbox-color-mode=dark].is-invalid~.invalid-feedback,html[data-netbox-color-mode=dark].is-invalid~.invalid-tooltip,.was-validated html[data-netbox-color-mode=light]:invalid~.invalid-feedback,.was-validated html[data-netbox-color-mode=light]:invalid~.invalid-tooltip,html[data-netbox-color-mode=light].is-invalid~.invalid-feedback,html[data-netbox-color-mode=light].is-invalid~.invalid-tooltip{display:block}}@media print{.was-validated html .form-control:invalid,html .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-control:invalid,html[data-netbox-color-mode=dark] .form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-control:invalid,html[data-netbox-color-mode=light] .form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html .form-control:invalid:focus,html .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-control:invalid:focus,html[data-netbox-color-mode=dark] .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-control:invalid:focus,html[data-netbox-color-mode=light] .form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}}@media print{.was-validated html textarea.form-control:invalid,html textarea.form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] textarea.form-control:invalid,html[data-netbox-color-mode=dark] textarea.form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] textarea.form-control:invalid,html[data-netbox-color-mode=light] textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}}@media print{.was-validated html .form-select:invalid,html .form-select.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-select:invalid,html[data-netbox-color-mode=dark] .form-select.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-select:invalid,html[data-netbox-color-mode=light] .form-select.is-invalid{border-color:#dc3545}.was-validated html .form-select:invalid:not([multiple]):not([size]),.was-validated html .form-select:invalid:not([multiple])[size="1"],html .form-select.is-invalid:not([multiple]):not([size]),html .form-select.is-invalid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=dark] .form-select.is-invalid:not([multiple])[size="1"],.was-validated html[data-netbox-color-mode=light] .form-select:invalid:not([multiple]):not([size]),.was-validated html[data-netbox-color-mode=light] .form-select:invalid:not([multiple])[size="1"],html[data-netbox-color-mode=light] .form-select.is-invalid:not([multiple]):not([size]),html[data-netbox-color-mode=light] .form-select.is-invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated html .form-select:invalid:focus,html .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-select:invalid:focus,html[data-netbox-color-mode=dark] .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-select:invalid:focus,html[data-netbox-color-mode=light] .form-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem #dc354540}}@media print{.was-validated html .form-check-input:invalid,html .form-check-input.is-invalid,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid,html[data-netbox-color-mode=dark] .form-check-input.is-invalid,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid,html[data-netbox-color-mode=light] .form-check-input.is-invalid{border-color:#dc3545}.was-validated html .form-check-input:invalid:checked,html .form-check-input.is-invalid:checked,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:checked,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:checked,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid:checked,html[data-netbox-color-mode=light] .form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated html .form-check-input:invalid:focus,html .form-check-input.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid:focus,html[data-netbox-color-mode=dark] .form-check-input.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid:focus,html[data-netbox-color-mode=light] .form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem #dc354540}.was-validated html .form-check-input:invalid~.form-check-label,html .form-check-input.is-invalid~.form-check-label,.was-validated html[data-netbox-color-mode=dark] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=dark] .form-check-input.is-invalid~.form-check-label,.was-validated html[data-netbox-color-mode=light] .form-check-input:invalid~.form-check-label,html[data-netbox-color-mode=light] .form-check-input.is-invalid~.form-check-label{color:#dc3545}}@media print{html .form-check-inline .form-check-input~.invalid-feedback,html[data-netbox-color-mode=dark] .form-check-inline .form-check-input~.invalid-feedback,html[data-netbox-color-mode=light] .form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}}@media print{.was-validated html .input-group .form-control:invalid,html .input-group .form-control.is-invalid,.was-validated html .input-group .form-select:invalid,html .input-group .form-select.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:invalid,html[data-netbox-color-mode=light] .input-group .form-control.is-invalid,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:invalid,html[data-netbox-color-mode=light] .input-group .form-select.is-invalid{z-index:2}.was-validated html .input-group .form-control:invalid:focus,html .input-group .form-control.is-invalid:focus,.was-validated html .input-group .form-select:invalid:focus,html .input-group .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=dark] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=dark] .input-group .form-select.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-control:invalid:focus,html[data-netbox-color-mode=light] .input-group .form-control.is-invalid:focus,.was-validated html[data-netbox-color-mode=light] .input-group .form-select:invalid:focus,html[data-netbox-color-mode=light] .input-group .form-select.is-invalid:focus{z-index:3}}@media print{html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{display:inline-block;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.375rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{transition:none}}@media print{html .btn:hover,html[data-netbox-color-mode=dark] .btn:hover,html[data-netbox-color-mode=light] .btn:hover{color:#212529}}@media print{.btn-check:focus+html .btn,html .btn:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=dark] .btn:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn,html[data-netbox-color-mode=light] .btn:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .btn:disabled,html .btn.disabled,fieldset:disabled html .btn,html[data-netbox-color-mode=dark] .btn:disabled,html[data-netbox-color-mode=dark] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn:disabled,html[data-netbox-color-mode=light] .btn.disabled,fieldset:disabled html[data-netbox-color-mode=light] .btn{pointer-events:none;opacity:.65}}@media print{html .btn-primary,html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=light] .btn-primary{color:#fff;background-color:#337ab7;border-color:#337ab7}html .btn-primary:hover,html[data-netbox-color-mode=dark] .btn-primary:hover,html[data-netbox-color-mode=light] .btn-primary:hover{color:#fff;background-color:#2b689c;border-color:#296292}.btn-check:focus+html .btn-primary,html .btn-primary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-primary,html[data-netbox-color-mode=light] .btn-primary:focus{color:#fff;background-color:#2b689c;border-color:#296292;box-shadow:0 0 0 .25rem #528ec280}.btn-check:checked+html .btn-primary,.btn-check:active+html .btn-primary,html .btn-primary:active,html .btn-primary.active,.show>html .btn-primary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary,html[data-netbox-color-mode=dark] .btn-primary:active,html[data-netbox-color-mode=dark] .btn-primary.active,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-primary,.btn-check:active+html[data-netbox-color-mode=light] .btn-primary,html[data-netbox-color-mode=light] .btn-primary:active,html[data-netbox-color-mode=light] .btn-primary.active,.show>html[data-netbox-color-mode=light] .btn-primary.dropdown-toggle{color:#fff;background-color:#296292;border-color:#265c89}.btn-check:checked+html .btn-primary:focus,.btn-check:active+html .btn-primary:focus,html .btn-primary:active:focus,html .btn-primary.active:focus,.show>html .btn-primary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-primary:focus,html[data-netbox-color-mode=dark] .btn-primary:active:focus,html[data-netbox-color-mode=dark] .btn-primary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-primary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-primary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-primary:focus,html[data-netbox-color-mode=light] .btn-primary:active:focus,html[data-netbox-color-mode=light] .btn-primary.active:focus,.show>html[data-netbox-color-mode=light] .btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #528ec280}html .btn-primary:disabled,html .btn-primary.disabled,html[data-netbox-color-mode=dark] .btn-primary:disabled,html[data-netbox-color-mode=dark] .btn-primary.disabled,html[data-netbox-color-mode=light] .btn-primary:disabled,html[data-netbox-color-mode=light] .btn-primary.disabled{color:#fff;background-color:#337ab7;border-color:#337ab7}}@media print{html .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}html .btn-secondary:hover,html[data-netbox-color-mode=dark] .btn-secondary:hover,html[data-netbox-color-mode=light] .btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}.btn-check:focus+html .btn-secondary,html .btn-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary:focus{color:#fff;background-color:#5c636a;border-color:#565e64;box-shadow:0 0 0 .25rem #828a9180}.btn-check:checked+html .btn-secondary,.btn-check:active+html .btn-secondary,html .btn-secondary:active,html .btn-secondary.active,.show>html .btn-secondary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary,html[data-netbox-color-mode=dark] .btn-secondary:active,html[data-netbox-color-mode=dark] .btn-secondary.active,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-secondary,.btn-check:active+html[data-netbox-color-mode=light] .btn-secondary,html[data-netbox-color-mode=light] .btn-secondary:active,html[data-netbox-color-mode=light] .btn-secondary.active,.show>html[data-netbox-color-mode=light] .btn-secondary.dropdown-toggle{color:#fff;background-color:#565e64;border-color:#51585e}.btn-check:checked+html .btn-secondary:focus,.btn-check:active+html .btn-secondary:focus,html .btn-secondary:active:focus,html .btn-secondary.active:focus,.show>html .btn-secondary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-secondary:focus,html[data-netbox-color-mode=dark] .btn-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=dark] .btn-secondary.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-secondary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-secondary:focus,html[data-netbox-color-mode=light] .btn-secondary:active:focus,html[data-netbox-color-mode=light] .btn-secondary.active:focus,.show>html[data-netbox-color-mode=light] .btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #828a9180}html .btn-secondary:disabled,html .btn-secondary.disabled,html[data-netbox-color-mode=dark] .btn-secondary:disabled,html[data-netbox-color-mode=dark] .btn-secondary.disabled,html[data-netbox-color-mode=light] .btn-secondary:disabled,html[data-netbox-color-mode=light] .btn-secondary.disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}}@media print{html .btn-success,html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=light] .btn-success{color:#fff;background-color:#198754;border-color:#198754}html .btn-success:hover,html[data-netbox-color-mode=dark] .btn-success:hover,html[data-netbox-color-mode=light] .btn-success:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html .btn-success,html .btn-success:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-success,html[data-netbox-color-mode=light] .btn-success:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html .btn-success,.btn-check:active+html .btn-success,html .btn-success:active,html .btn-success.active,.show>html .btn-success.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success,html[data-netbox-color-mode=dark] .btn-success:active,html[data-netbox-color-mode=dark] .btn-success.active,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-success,.btn-check:active+html[data-netbox-color-mode=light] .btn-success,html[data-netbox-color-mode=light] .btn-success:active,html[data-netbox-color-mode=light] .btn-success.active,.show>html[data-netbox-color-mode=light] .btn-success.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html .btn-success:focus,.btn-check:active+html .btn-success:focus,html .btn-success:active:focus,html .btn-success.active:focus,.show>html .btn-success.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-success:focus,html[data-netbox-color-mode=dark] .btn-success:active:focus,html[data-netbox-color-mode=dark] .btn-success.active:focus,.show>html[data-netbox-color-mode=dark] .btn-success.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-success:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-success:focus,html[data-netbox-color-mode=light] .btn-success:active:focus,html[data-netbox-color-mode=light] .btn-success.active:focus,.show>html[data-netbox-color-mode=light] .btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html .btn-success:disabled,html .btn-success.disabled,html[data-netbox-color-mode=dark] .btn-success:disabled,html[data-netbox-color-mode=dark] .btn-success.disabled,html[data-netbox-color-mode=light] .btn-success:disabled,html[data-netbox-color-mode=light] .btn-success.disabled{color:#fff;background-color:#198754;border-color:#198754}}@media print{html .btn-info,html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=light] .btn-info{color:#000;background-color:#54d6f0;border-color:#54d6f0}html .btn-info:hover,html[data-netbox-color-mode=dark] .btn-info:hover,html[data-netbox-color-mode=light] .btn-info:hover{color:#000;background-color:#6edcf2;border-color:#65daf2}.btn-check:focus+html .btn-info,html .btn-info:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-info,html[data-netbox-color-mode=light] .btn-info:focus{color:#000;background-color:#6edcf2;border-color:#65daf2;box-shadow:0 0 0 .25rem #47b6cc80}.btn-check:checked+html .btn-info,.btn-check:active+html .btn-info,html .btn-info:active,html .btn-info.active,.show>html .btn-info.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info,html[data-netbox-color-mode=dark] .btn-info:active,html[data-netbox-color-mode=dark] .btn-info.active,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-info,.btn-check:active+html[data-netbox-color-mode=light] .btn-info,html[data-netbox-color-mode=light] .btn-info:active,html[data-netbox-color-mode=light] .btn-info.active,.show>html[data-netbox-color-mode=light] .btn-info.dropdown-toggle{color:#000;background-color:#76def3;border-color:#65daf2}.btn-check:checked+html .btn-info:focus,.btn-check:active+html .btn-info:focus,html .btn-info:active:focus,html .btn-info.active:focus,.show>html .btn-info.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-info:focus,html[data-netbox-color-mode=dark] .btn-info:active:focus,html[data-netbox-color-mode=dark] .btn-info.active:focus,.show>html[data-netbox-color-mode=dark] .btn-info.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-info:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-info:focus,html[data-netbox-color-mode=light] .btn-info:active:focus,html[data-netbox-color-mode=light] .btn-info.active:focus,.show>html[data-netbox-color-mode=light] .btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #47b6cc80}html .btn-info:disabled,html .btn-info.disabled,html[data-netbox-color-mode=dark] .btn-info:disabled,html[data-netbox-color-mode=dark] .btn-info.disabled,html[data-netbox-color-mode=light] .btn-info:disabled,html[data-netbox-color-mode=light] .btn-info.disabled{color:#000;background-color:#54d6f0;border-color:#54d6f0}}@media print{html .btn-warning,html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=light] .btn-warning{color:#000;background-color:#ffc107;border-color:#ffc107}html .btn-warning:hover,html[data-netbox-color-mode=dark] .btn-warning:hover,html[data-netbox-color-mode=light] .btn-warning:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html .btn-warning,html .btn-warning:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-warning,html[data-netbox-color-mode=light] .btn-warning:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html .btn-warning,.btn-check:active+html .btn-warning,html .btn-warning:active,html .btn-warning.active,.show>html .btn-warning.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning,html[data-netbox-color-mode=dark] .btn-warning:active,html[data-netbox-color-mode=dark] .btn-warning.active,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-warning,.btn-check:active+html[data-netbox-color-mode=light] .btn-warning,html[data-netbox-color-mode=light] .btn-warning:active,html[data-netbox-color-mode=light] .btn-warning.active,.show>html[data-netbox-color-mode=light] .btn-warning.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html .btn-warning:focus,.btn-check:active+html .btn-warning:focus,html .btn-warning:active:focus,html .btn-warning.active:focus,.show>html .btn-warning.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-warning:focus,html[data-netbox-color-mode=dark] .btn-warning:active:focus,html[data-netbox-color-mode=dark] .btn-warning.active:focus,.show>html[data-netbox-color-mode=dark] .btn-warning.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-warning:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-warning:focus,html[data-netbox-color-mode=light] .btn-warning:active:focus,html[data-netbox-color-mode=light] .btn-warning.active:focus,.show>html[data-netbox-color-mode=light] .btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html .btn-warning:disabled,html .btn-warning.disabled,html[data-netbox-color-mode=dark] .btn-warning:disabled,html[data-netbox-color-mode=dark] .btn-warning.disabled,html[data-netbox-color-mode=light] .btn-warning:disabled,html[data-netbox-color-mode=light] .btn-warning.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}}@media print{html .btn-danger,html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=light] .btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}html .btn-danger:hover,html[data-netbox-color-mode=dark] .btn-danger:hover,html[data-netbox-color-mode=light] .btn-danger:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html .btn-danger,html .btn-danger:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-danger,html[data-netbox-color-mode=light] .btn-danger:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html .btn-danger,.btn-check:active+html .btn-danger,html .btn-danger:active,html .btn-danger.active,.show>html .btn-danger.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger,html[data-netbox-color-mode=dark] .btn-danger:active,html[data-netbox-color-mode=dark] .btn-danger.active,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-danger,.btn-check:active+html[data-netbox-color-mode=light] .btn-danger,html[data-netbox-color-mode=light] .btn-danger:active,html[data-netbox-color-mode=light] .btn-danger.active,.show>html[data-netbox-color-mode=light] .btn-danger.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html .btn-danger:focus,.btn-check:active+html .btn-danger:focus,html .btn-danger:active:focus,html .btn-danger.active:focus,.show>html .btn-danger.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-danger:focus,html[data-netbox-color-mode=dark] .btn-danger:active:focus,html[data-netbox-color-mode=dark] .btn-danger.active:focus,.show>html[data-netbox-color-mode=dark] .btn-danger.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-danger:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-danger:focus,html[data-netbox-color-mode=light] .btn-danger:active:focus,html[data-netbox-color-mode=light] .btn-danger.active:focus,.show>html[data-netbox-color-mode=light] .btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html .btn-danger:disabled,html .btn-danger.disabled,html[data-netbox-color-mode=dark] .btn-danger:disabled,html[data-netbox-color-mode=dark] .btn-danger.disabled,html[data-netbox-color-mode=light] .btn-danger:disabled,html[data-netbox-color-mode=light] .btn-danger.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}}@media print{html .btn-light,html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=light] .btn-light{color:#000;background-color:#e9ecef;border-color:#e9ecef}html .btn-light:hover,html[data-netbox-color-mode=dark] .btn-light:hover,html[data-netbox-color-mode=light] .btn-light:hover{color:#000;background-color:#eceff1;border-color:#ebeef1}.btn-check:focus+html .btn-light,html .btn-light:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-light,html[data-netbox-color-mode=light] .btn-light:focus{color:#000;background-color:#eceff1;border-color:#ebeef1;box-shadow:0 0 0 .25rem #c6c9cb80}.btn-check:checked+html .btn-light,.btn-check:active+html .btn-light,html .btn-light:active,html .btn-light.active,.show>html .btn-light.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light,html[data-netbox-color-mode=dark] .btn-light:active,html[data-netbox-color-mode=dark] .btn-light.active,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-light,.btn-check:active+html[data-netbox-color-mode=light] .btn-light,html[data-netbox-color-mode=light] .btn-light:active,html[data-netbox-color-mode=light] .btn-light.active,.show>html[data-netbox-color-mode=light] .btn-light.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#ebeef1}.btn-check:checked+html .btn-light:focus,.btn-check:active+html .btn-light:focus,html .btn-light:active:focus,html .btn-light.active:focus,.show>html .btn-light.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-light:focus,html[data-netbox-color-mode=dark] .btn-light:active:focus,html[data-netbox-color-mode=dark] .btn-light.active:focus,.show>html[data-netbox-color-mode=dark] .btn-light.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-light:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-light:focus,html[data-netbox-color-mode=light] .btn-light:active:focus,html[data-netbox-color-mode=light] .btn-light.active:focus,.show>html[data-netbox-color-mode=light] .btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #c6c9cb80}html .btn-light:disabled,html .btn-light.disabled,html[data-netbox-color-mode=dark] .btn-light:disabled,html[data-netbox-color-mode=dark] .btn-light.disabled,html[data-netbox-color-mode=light] .btn-light:disabled,html[data-netbox-color-mode=light] .btn-light.disabled{color:#000;background-color:#e9ecef;border-color:#e9ecef}}@media print{html .btn-dark,html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=light] .btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}html .btn-dark:hover,html[data-netbox-color-mode=dark] .btn-dark:hover,html[data-netbox-color-mode=light] .btn-dark:hover{color:#fff;background-color:#2c3136;border-color:#2a2e33}.btn-check:focus+html .btn-dark,html .btn-dark:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-dark,html[data-netbox-color-mode=light] .btn-dark:focus{color:#fff;background-color:#2c3136;border-color:#2a2e33;box-shadow:0 0 0 .25rem #52585d80}.btn-check:checked+html .btn-dark,.btn-check:active+html .btn-dark,html .btn-dark:active,html .btn-dark.active,.show>html .btn-dark.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark,html[data-netbox-color-mode=dark] .btn-dark:active,html[data-netbox-color-mode=dark] .btn-dark.active,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-dark,.btn-check:active+html[data-netbox-color-mode=light] .btn-dark,html[data-netbox-color-mode=light] .btn-dark:active,html[data-netbox-color-mode=light] .btn-dark.active,.show>html[data-netbox-color-mode=light] .btn-dark.dropdown-toggle{color:#fff;background-color:#2a2e33;border-color:#272c30}.btn-check:checked+html .btn-dark:focus,.btn-check:active+html .btn-dark:focus,html .btn-dark:active:focus,html .btn-dark.active:focus,.show>html .btn-dark.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-dark:focus,html[data-netbox-color-mode=dark] .btn-dark:active:focus,html[data-netbox-color-mode=dark] .btn-dark.active:focus,.show>html[data-netbox-color-mode=dark] .btn-dark.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-dark:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-dark:focus,html[data-netbox-color-mode=light] .btn-dark:active:focus,html[data-netbox-color-mode=light] .btn-dark.active:focus,.show>html[data-netbox-color-mode=light] .btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #52585d80}html .btn-dark:disabled,html .btn-dark.disabled,html[data-netbox-color-mode=dark] .btn-dark:disabled,html[data-netbox-color-mode=dark] .btn-dark.disabled,html[data-netbox-color-mode=light] .btn-dark:disabled,html[data-netbox-color-mode=light] .btn-dark.disabled{color:#fff;background-color:#343a40;border-color:#343a40}}@media print{html .btn-blue,html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=light] .btn-blue{color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .btn-blue:hover,html[data-netbox-color-mode=dark] .btn-blue:hover,html[data-netbox-color-mode=light] .btn-blue:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}.btn-check:focus+html .btn-blue,html .btn-blue:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-blue,html[data-netbox-color-mode=light] .btn-blue:focus{color:#fff;background-color:#0b5ed7;border-color:#0a58ca;box-shadow:0 0 0 .25rem #3184fd80}.btn-check:checked+html .btn-blue,.btn-check:active+html .btn-blue,html .btn-blue:active,html .btn-blue.active,.show>html .btn-blue.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue,html[data-netbox-color-mode=dark] .btn-blue:active,html[data-netbox-color-mode=dark] .btn-blue.active,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue,html[data-netbox-color-mode=light] .btn-blue:active,html[data-netbox-color-mode=light] .btn-blue.active,.show>html[data-netbox-color-mode=light] .btn-blue.dropdown-toggle{color:#fff;background-color:#0a58ca;border-color:#0a53be}.btn-check:checked+html .btn-blue:focus,.btn-check:active+html .btn-blue:focus,html .btn-blue:active:focus,html .btn-blue.active:focus,.show>html .btn-blue.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-blue:focus,html[data-netbox-color-mode=dark] .btn-blue:active:focus,html[data-netbox-color-mode=dark] .btn-blue.active:focus,.show>html[data-netbox-color-mode=dark] .btn-blue.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-blue:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-blue:focus,html[data-netbox-color-mode=light] .btn-blue:active:focus,html[data-netbox-color-mode=light] .btn-blue.active:focus,.show>html[data-netbox-color-mode=light] .btn-blue.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3184fd80}html .btn-blue:disabled,html .btn-blue.disabled,html[data-netbox-color-mode=dark] .btn-blue:disabled,html[data-netbox-color-mode=dark] .btn-blue.disabled,html[data-netbox-color-mode=light] .btn-blue:disabled,html[data-netbox-color-mode=light] .btn-blue.disabled{color:#fff;background-color:#0d6efd;border-color:#0d6efd}}@media print{html .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo{color:#fff;background-color:#6610f2;border-color:#6610f2}html .btn-indigo:hover,html[data-netbox-color-mode=dark] .btn-indigo:hover,html[data-netbox-color-mode=light] .btn-indigo:hover{color:#fff;background-color:#570ece;border-color:#520dc2}.btn-check:focus+html .btn-indigo,html .btn-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo:focus{color:#fff;background-color:#570ece;border-color:#520dc2;box-shadow:0 0 0 .25rem #7d34f480}.btn-check:checked+html .btn-indigo,.btn-check:active+html .btn-indigo,html .btn-indigo:active,html .btn-indigo.active,.show>html .btn-indigo.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo,html[data-netbox-color-mode=dark] .btn-indigo:active,html[data-netbox-color-mode=dark] .btn-indigo.active,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo,html[data-netbox-color-mode=light] .btn-indigo:active,html[data-netbox-color-mode=light] .btn-indigo.active,.show>html[data-netbox-color-mode=light] .btn-indigo.dropdown-toggle{color:#fff;background-color:#520dc2;border-color:#4d0cb6}.btn-check:checked+html .btn-indigo:focus,.btn-check:active+html .btn-indigo:focus,html .btn-indigo:active:focus,html .btn-indigo.active:focus,.show>html .btn-indigo.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-indigo:focus,html[data-netbox-color-mode=dark] .btn-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=dark] .btn-indigo.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-indigo:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-indigo:focus,html[data-netbox-color-mode=light] .btn-indigo:active:focus,html[data-netbox-color-mode=light] .btn-indigo.active:focus,.show>html[data-netbox-color-mode=light] .btn-indigo.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #7d34f480}html .btn-indigo:disabled,html .btn-indigo.disabled,html[data-netbox-color-mode=dark] .btn-indigo:disabled,html[data-netbox-color-mode=dark] .btn-indigo.disabled,html[data-netbox-color-mode=light] .btn-indigo:disabled,html[data-netbox-color-mode=light] .btn-indigo.disabled{color:#fff;background-color:#6610f2;border-color:#6610f2}}@media print{html .btn-purple,html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=light] .btn-purple{color:#fff;background-color:#6f42c1;border-color:#6f42c1}html .btn-purple:hover,html[data-netbox-color-mode=dark] .btn-purple:hover,html[data-netbox-color-mode=light] .btn-purple:hover{color:#fff;background-color:#5e38a4;border-color:#59359a}.btn-check:focus+html .btn-purple,html .btn-purple:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-purple,html[data-netbox-color-mode=light] .btn-purple:focus{color:#fff;background-color:#5e38a4;border-color:#59359a;box-shadow:0 0 0 .25rem #855eca80}.btn-check:checked+html .btn-purple,.btn-check:active+html .btn-purple,html .btn-purple:active,html .btn-purple.active,.show>html .btn-purple.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple,html[data-netbox-color-mode=dark] .btn-purple:active,html[data-netbox-color-mode=dark] .btn-purple.active,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple,html[data-netbox-color-mode=light] .btn-purple:active,html[data-netbox-color-mode=light] .btn-purple.active,.show>html[data-netbox-color-mode=light] .btn-purple.dropdown-toggle{color:#fff;background-color:#59359a;border-color:#533291}.btn-check:checked+html .btn-purple:focus,.btn-check:active+html .btn-purple:focus,html .btn-purple:active:focus,html .btn-purple.active:focus,.show>html .btn-purple.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-purple:focus,html[data-netbox-color-mode=dark] .btn-purple:active:focus,html[data-netbox-color-mode=dark] .btn-purple.active:focus,.show>html[data-netbox-color-mode=dark] .btn-purple.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-purple:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-purple:focus,html[data-netbox-color-mode=light] .btn-purple:active:focus,html[data-netbox-color-mode=light] .btn-purple.active:focus,.show>html[data-netbox-color-mode=light] .btn-purple.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #855eca80}html .btn-purple:disabled,html .btn-purple.disabled,html[data-netbox-color-mode=dark] .btn-purple:disabled,html[data-netbox-color-mode=dark] .btn-purple.disabled,html[data-netbox-color-mode=light] .btn-purple:disabled,html[data-netbox-color-mode=light] .btn-purple.disabled{color:#fff;background-color:#6f42c1;border-color:#6f42c1}}@media print{html .btn-pink,html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=light] .btn-pink{color:#fff;background-color:#d63384;border-color:#d63384}html .btn-pink:hover,html[data-netbox-color-mode=dark] .btn-pink:hover,html[data-netbox-color-mode=light] .btn-pink:hover{color:#fff;background-color:#b62b70;border-color:#ab296a}.btn-check:focus+html .btn-pink,html .btn-pink:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-pink,html[data-netbox-color-mode=light] .btn-pink:focus{color:#fff;background-color:#b62b70;border-color:#ab296a;box-shadow:0 0 0 .25rem #dc529680}.btn-check:checked+html .btn-pink,.btn-check:active+html .btn-pink,html .btn-pink:active,html .btn-pink.active,.show>html .btn-pink.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink,html[data-netbox-color-mode=dark] .btn-pink:active,html[data-netbox-color-mode=dark] .btn-pink.active,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink,html[data-netbox-color-mode=light] .btn-pink:active,html[data-netbox-color-mode=light] .btn-pink.active,.show>html[data-netbox-color-mode=light] .btn-pink.dropdown-toggle{color:#fff;background-color:#ab296a;border-color:#a12663}.btn-check:checked+html .btn-pink:focus,.btn-check:active+html .btn-pink:focus,html .btn-pink:active:focus,html .btn-pink.active:focus,.show>html .btn-pink.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-pink:focus,html[data-netbox-color-mode=dark] .btn-pink:active:focus,html[data-netbox-color-mode=dark] .btn-pink.active:focus,.show>html[data-netbox-color-mode=dark] .btn-pink.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-pink:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-pink:focus,html[data-netbox-color-mode=light] .btn-pink:active:focus,html[data-netbox-color-mode=light] .btn-pink.active:focus,.show>html[data-netbox-color-mode=light] .btn-pink.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #dc529680}html .btn-pink:disabled,html .btn-pink.disabled,html[data-netbox-color-mode=dark] .btn-pink:disabled,html[data-netbox-color-mode=dark] .btn-pink.disabled,html[data-netbox-color-mode=light] .btn-pink:disabled,html[data-netbox-color-mode=light] .btn-pink.disabled{color:#fff;background-color:#d63384;border-color:#d63384}}@media print{html .btn-red,html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=light] .btn-red{color:#fff;background-color:#dc3545;border-color:#dc3545}html .btn-red:hover,html[data-netbox-color-mode=dark] .btn-red:hover,html[data-netbox-color-mode=light] .btn-red:hover{color:#fff;background-color:#bb2d3b;border-color:#b02a37}.btn-check:focus+html .btn-red,html .btn-red:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-red,html[data-netbox-color-mode=light] .btn-red:focus{color:#fff;background-color:#bb2d3b;border-color:#b02a37;box-shadow:0 0 0 .25rem #e1536180}.btn-check:checked+html .btn-red,.btn-check:active+html .btn-red,html .btn-red:active,html .btn-red.active,.show>html .btn-red.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red,html[data-netbox-color-mode=dark] .btn-red:active,html[data-netbox-color-mode=dark] .btn-red.active,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red,.btn-check:active+html[data-netbox-color-mode=light] .btn-red,html[data-netbox-color-mode=light] .btn-red:active,html[data-netbox-color-mode=light] .btn-red.active,.show>html[data-netbox-color-mode=light] .btn-red.dropdown-toggle{color:#fff;background-color:#b02a37;border-color:#a52834}.btn-check:checked+html .btn-red:focus,.btn-check:active+html .btn-red:focus,html .btn-red:active:focus,html .btn-red.active:focus,.show>html .btn-red.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-red:focus,html[data-netbox-color-mode=dark] .btn-red:active:focus,html[data-netbox-color-mode=dark] .btn-red.active:focus,.show>html[data-netbox-color-mode=dark] .btn-red.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-red:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-red:focus,html[data-netbox-color-mode=light] .btn-red:active:focus,html[data-netbox-color-mode=light] .btn-red.active:focus,.show>html[data-netbox-color-mode=light] .btn-red.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #e1536180}html .btn-red:disabled,html .btn-red.disabled,html[data-netbox-color-mode=dark] .btn-red:disabled,html[data-netbox-color-mode=dark] .btn-red.disabled,html[data-netbox-color-mode=light] .btn-red:disabled,html[data-netbox-color-mode=light] .btn-red.disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}}@media print{html .btn-orange,html[data-netbox-color-mode=dark] .btn-orange,html[data-netbox-color-mode=light] .btn-orange{color:#000;background-color:#fd7e14;border-color:#fd7e14}html .btn-orange:hover,html[data-netbox-color-mode=dark] .btn-orange:hover,html[data-netbox-color-mode=light] .btn-orange:hover{color:#000;background-color:#fd9137;border-color:#fd8b2c}.btn-check:focus+html .btn-orange,html .btn-orange:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-orange,html[data-netbox-color-mode=dark] .btn-orange:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-orange,html[data-netbox-color-mode=light] .btn-orange:focus{color:#000;background-color:#fd9137;border-color:#fd8b2c;box-shadow:0 0 0 .25rem #d76b1180}.btn-check:checked+html .btn-orange,.btn-check:active+html .btn-orange,html .btn-orange:active,html .btn-orange.active,.show>html .btn-orange.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-orange,.btn-check:active+html[data-netbox-color-mode=dark] .btn-orange,html[data-netbox-color-mode=dark] .btn-orange:active,html[data-netbox-color-mode=dark] .btn-orange.active,.show>html[data-netbox-color-mode=dark] .btn-orange.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-orange,.btn-check:active+html[data-netbox-color-mode=light] .btn-orange,html[data-netbox-color-mode=light] .btn-orange:active,html[data-netbox-color-mode=light] .btn-orange.active,.show>html[data-netbox-color-mode=light] .btn-orange.dropdown-toggle{color:#000;background-color:#fd9843;border-color:#fd8b2c}.btn-check:checked+html .btn-orange:focus,.btn-check:active+html .btn-orange:focus,html .btn-orange:active:focus,html .btn-orange.active:focus,.show>html .btn-orange.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-orange:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-orange:focus,html[data-netbox-color-mode=dark] .btn-orange:active:focus,html[data-netbox-color-mode=dark] .btn-orange.active:focus,.show>html[data-netbox-color-mode=dark] .btn-orange.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-orange:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-orange:focus,html[data-netbox-color-mode=light] .btn-orange:active:focus,html[data-netbox-color-mode=light] .btn-orange.active:focus,.show>html[data-netbox-color-mode=light] .btn-orange.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d76b1180}html .btn-orange:disabled,html .btn-orange.disabled,html[data-netbox-color-mode=dark] .btn-orange:disabled,html[data-netbox-color-mode=dark] .btn-orange.disabled,html[data-netbox-color-mode=light] .btn-orange:disabled,html[data-netbox-color-mode=light] .btn-orange.disabled{color:#000;background-color:#fd7e14;border-color:#fd7e14}}@media print{html .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow{color:#000;background-color:#ffc107;border-color:#ffc107}html .btn-yellow:hover,html[data-netbox-color-mode=dark] .btn-yellow:hover,html[data-netbox-color-mode=light] .btn-yellow:hover{color:#000;background-color:#ffca2c;border-color:#ffc720}.btn-check:focus+html .btn-yellow,html .btn-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow:focus{color:#000;background-color:#ffca2c;border-color:#ffc720;box-shadow:0 0 0 .25rem #d9a40680}.btn-check:checked+html .btn-yellow,.btn-check:active+html .btn-yellow,html .btn-yellow:active,html .btn-yellow.active,.show>html .btn-yellow.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow,html[data-netbox-color-mode=dark] .btn-yellow:active,html[data-netbox-color-mode=dark] .btn-yellow.active,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow,html[data-netbox-color-mode=light] .btn-yellow:active,html[data-netbox-color-mode=light] .btn-yellow.active,.show>html[data-netbox-color-mode=light] .btn-yellow.dropdown-toggle{color:#000;background-color:#ffcd39;border-color:#ffc720}.btn-check:checked+html .btn-yellow:focus,.btn-check:active+html .btn-yellow:focus,html .btn-yellow:active:focus,html .btn-yellow.active:focus,.show>html .btn-yellow.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-yellow:focus,html[data-netbox-color-mode=dark] .btn-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=dark] .btn-yellow.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-yellow:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-yellow:focus,html[data-netbox-color-mode=light] .btn-yellow:active:focus,html[data-netbox-color-mode=light] .btn-yellow.active:focus,.show>html[data-netbox-color-mode=light] .btn-yellow.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9a40680}html .btn-yellow:disabled,html .btn-yellow.disabled,html[data-netbox-color-mode=dark] .btn-yellow:disabled,html[data-netbox-color-mode=dark] .btn-yellow.disabled,html[data-netbox-color-mode=light] .btn-yellow:disabled,html[data-netbox-color-mode=light] .btn-yellow.disabled{color:#000;background-color:#ffc107;border-color:#ffc107}}@media print{html .btn-green,html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=light] .btn-green{color:#fff;background-color:#198754;border-color:#198754}html .btn-green:hover,html[data-netbox-color-mode=dark] .btn-green:hover,html[data-netbox-color-mode=light] .btn-green:hover{color:#fff;background-color:#157347;border-color:#146c43}.btn-check:focus+html .btn-green,html .btn-green:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-green,html[data-netbox-color-mode=light] .btn-green:focus{color:#fff;background-color:#157347;border-color:#146c43;box-shadow:0 0 0 .25rem #3c996e80}.btn-check:checked+html .btn-green,.btn-check:active+html .btn-green,html .btn-green:active,html .btn-green.active,.show>html .btn-green.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green,html[data-netbox-color-mode=dark] .btn-green:active,html[data-netbox-color-mode=dark] .btn-green.active,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green,.btn-check:active+html[data-netbox-color-mode=light] .btn-green,html[data-netbox-color-mode=light] .btn-green:active,html[data-netbox-color-mode=light] .btn-green.active,.show>html[data-netbox-color-mode=light] .btn-green.dropdown-toggle{color:#fff;background-color:#146c43;border-color:#13653f}.btn-check:checked+html .btn-green:focus,.btn-check:active+html .btn-green:focus,html .btn-green:active:focus,html .btn-green.active:focus,.show>html .btn-green.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-green:focus,html[data-netbox-color-mode=dark] .btn-green:active:focus,html[data-netbox-color-mode=dark] .btn-green.active:focus,.show>html[data-netbox-color-mode=dark] .btn-green.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-green:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-green:focus,html[data-netbox-color-mode=light] .btn-green:active:focus,html[data-netbox-color-mode=light] .btn-green.active:focus,.show>html[data-netbox-color-mode=light] .btn-green.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #3c996e80}html .btn-green:disabled,html .btn-green.disabled,html[data-netbox-color-mode=dark] .btn-green:disabled,html[data-netbox-color-mode=dark] .btn-green.disabled,html[data-netbox-color-mode=light] .btn-green:disabled,html[data-netbox-color-mode=light] .btn-green.disabled{color:#fff;background-color:#198754;border-color:#198754}}@media print{html .btn-teal,html[data-netbox-color-mode=dark] .btn-teal,html[data-netbox-color-mode=light] .btn-teal{color:#000;background-color:#20c997;border-color:#20c997}html .btn-teal:hover,html[data-netbox-color-mode=dark] .btn-teal:hover,html[data-netbox-color-mode=light] .btn-teal:hover{color:#000;background-color:#41d1a7;border-color:#36cea1}.btn-check:focus+html .btn-teal,html .btn-teal:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-teal,html[data-netbox-color-mode=dark] .btn-teal:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-teal,html[data-netbox-color-mode=light] .btn-teal:focus{color:#000;background-color:#41d1a7;border-color:#36cea1;box-shadow:0 0 0 .25rem #1bab8080}.btn-check:checked+html .btn-teal,.btn-check:active+html .btn-teal,html .btn-teal:active,html .btn-teal.active,.show>html .btn-teal.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-teal,.btn-check:active+html[data-netbox-color-mode=dark] .btn-teal,html[data-netbox-color-mode=dark] .btn-teal:active,html[data-netbox-color-mode=dark] .btn-teal.active,.show>html[data-netbox-color-mode=dark] .btn-teal.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-teal,.btn-check:active+html[data-netbox-color-mode=light] .btn-teal,html[data-netbox-color-mode=light] .btn-teal:active,html[data-netbox-color-mode=light] .btn-teal.active,.show>html[data-netbox-color-mode=light] .btn-teal.dropdown-toggle{color:#000;background-color:#4dd4ac;border-color:#36cea1}.btn-check:checked+html .btn-teal:focus,.btn-check:active+html .btn-teal:focus,html .btn-teal:active:focus,html .btn-teal.active:focus,.show>html .btn-teal.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-teal:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-teal:focus,html[data-netbox-color-mode=dark] .btn-teal:active:focus,html[data-netbox-color-mode=dark] .btn-teal.active:focus,.show>html[data-netbox-color-mode=dark] .btn-teal.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-teal:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-teal:focus,html[data-netbox-color-mode=light] .btn-teal:active:focus,html[data-netbox-color-mode=light] .btn-teal.active:focus,.show>html[data-netbox-color-mode=light] .btn-teal.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #1bab8080}html .btn-teal:disabled,html .btn-teal.disabled,html[data-netbox-color-mode=dark] .btn-teal:disabled,html[data-netbox-color-mode=dark] .btn-teal.disabled,html[data-netbox-color-mode=light] .btn-teal:disabled,html[data-netbox-color-mode=light] .btn-teal.disabled{color:#000;background-color:#20c997;border-color:#20c997}}@media print{html .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}html .btn-cyan:hover,html[data-netbox-color-mode=dark] .btn-cyan:hover,html[data-netbox-color-mode=light] .btn-cyan:hover{color:#000;background-color:#31d2f2;border-color:#25cff2}.btn-check:focus+html .btn-cyan,html .btn-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan:focus{color:#000;background-color:#31d2f2;border-color:#25cff2;box-shadow:0 0 0 .25rem #0baccc80}.btn-check:checked+html .btn-cyan,.btn-check:active+html .btn-cyan,html .btn-cyan:active,html .btn-cyan.active,.show>html .btn-cyan.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan,html[data-netbox-color-mode=dark] .btn-cyan:active,html[data-netbox-color-mode=dark] .btn-cyan.active,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan,html[data-netbox-color-mode=light] .btn-cyan:active,html[data-netbox-color-mode=light] .btn-cyan.active,.show>html[data-netbox-color-mode=light] .btn-cyan.dropdown-toggle{color:#000;background-color:#3dd5f3;border-color:#25cff2}.btn-check:checked+html .btn-cyan:focus,.btn-check:active+html .btn-cyan:focus,html .btn-cyan:active:focus,html .btn-cyan.active:focus,.show>html .btn-cyan.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-cyan:focus,html[data-netbox-color-mode=dark] .btn-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=dark] .btn-cyan.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-cyan:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-cyan:focus,html[data-netbox-color-mode=light] .btn-cyan:active:focus,html[data-netbox-color-mode=light] .btn-cyan.active:focus,.show>html[data-netbox-color-mode=light] .btn-cyan.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #0baccc80}html .btn-cyan:disabled,html .btn-cyan.disabled,html[data-netbox-color-mode=dark] .btn-cyan:disabled,html[data-netbox-color-mode=dark] .btn-cyan.disabled,html[data-netbox-color-mode=light] .btn-cyan:disabled,html[data-netbox-color-mode=light] .btn-cyan.disabled{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}}@media print{html .btn-gray,html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=light] .btn-gray{color:#000;background-color:#adb5bd;border-color:#adb5bd}html .btn-gray:hover,html[data-netbox-color-mode=dark] .btn-gray:hover,html[data-netbox-color-mode=light] .btn-gray:hover{color:#000;background-color:#b9c0c7;border-color:#b5bcc4}.btn-check:focus+html .btn-gray,html .btn-gray:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-gray,html[data-netbox-color-mode=light] .btn-gray:focus{color:#000;background-color:#b9c0c7;border-color:#b5bcc4;box-shadow:0 0 0 .25rem #939aa180}.btn-check:checked+html .btn-gray,.btn-check:active+html .btn-gray,html .btn-gray:active,html .btn-gray.active,.show>html .btn-gray.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray,html[data-netbox-color-mode=dark] .btn-gray:active,html[data-netbox-color-mode=dark] .btn-gray.active,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray,html[data-netbox-color-mode=light] .btn-gray:active,html[data-netbox-color-mode=light] .btn-gray.active,.show>html[data-netbox-color-mode=light] .btn-gray.dropdown-toggle{color:#000;background-color:#bdc4ca;border-color:#b5bcc4}.btn-check:checked+html .btn-gray:focus,.btn-check:active+html .btn-gray:focus,html .btn-gray:active:focus,html .btn-gray.active:focus,.show>html .btn-gray.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-gray:focus,html[data-netbox-color-mode=dark] .btn-gray:active:focus,html[data-netbox-color-mode=dark] .btn-gray.active:focus,.show>html[data-netbox-color-mode=dark] .btn-gray.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-gray:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-gray:focus,html[data-netbox-color-mode=light] .btn-gray:active:focus,html[data-netbox-color-mode=light] .btn-gray.active:focus,.show>html[data-netbox-color-mode=light] .btn-gray.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #939aa180}html .btn-gray:disabled,html .btn-gray.disabled,html[data-netbox-color-mode=dark] .btn-gray:disabled,html[data-netbox-color-mode=dark] .btn-gray.disabled,html[data-netbox-color-mode=light] .btn-gray:disabled,html[data-netbox-color-mode=light] .btn-gray.disabled{color:#000;background-color:#adb5bd;border-color:#adb5bd}}@media print{html .btn-black,html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=light] .btn-black,html .btn-black:hover,html[data-netbox-color-mode=dark] .btn-black:hover,html[data-netbox-color-mode=light] .btn-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+html .btn-black,html .btn-black:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=dark] .btn-black:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-black,html[data-netbox-color-mode=light] .btn-black:focus{color:#fff;background-color:#000;border-color:#000;box-shadow:0 0 0 .25rem #26262680}.btn-check:checked+html .btn-black,.btn-check:active+html .btn-black,html .btn-black:active,html .btn-black.active,.show>html .btn-black.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-black,.btn-check:active+html[data-netbox-color-mode=dark] .btn-black,html[data-netbox-color-mode=dark] .btn-black:active,html[data-netbox-color-mode=dark] .btn-black.active,.show>html[data-netbox-color-mode=dark] .btn-black.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-black,.btn-check:active+html[data-netbox-color-mode=light] .btn-black,html[data-netbox-color-mode=light] .btn-black:active,html[data-netbox-color-mode=light] .btn-black.active,.show>html[data-netbox-color-mode=light] .btn-black.dropdown-toggle{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+html .btn-black:focus,.btn-check:active+html .btn-black:focus,html .btn-black:active:focus,html .btn-black.active:focus,.show>html .btn-black.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-black:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-black:focus,html[data-netbox-color-mode=dark] .btn-black:active:focus,html[data-netbox-color-mode=dark] .btn-black.active:focus,.show>html[data-netbox-color-mode=dark] .btn-black.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-black:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-black:focus,html[data-netbox-color-mode=light] .btn-black:active:focus,html[data-netbox-color-mode=light] .btn-black.active:focus,.show>html[data-netbox-color-mode=light] .btn-black.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #26262680}html .btn-black:disabled,html .btn-black.disabled,html[data-netbox-color-mode=dark] .btn-black:disabled,html[data-netbox-color-mode=dark] .btn-black.disabled,html[data-netbox-color-mode=light] .btn-black:disabled,html[data-netbox-color-mode=light] .btn-black.disabled{color:#fff;background-color:#000;border-color:#000}}@media print{html .btn-white,html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=light] .btn-white,html .btn-white:hover,html[data-netbox-color-mode=dark] .btn-white:hover,html[data-netbox-color-mode=light] .btn-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+html .btn-white,html .btn-white:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=dark] .btn-white:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-white,html[data-netbox-color-mode=light] .btn-white:focus{color:#000;background-color:#fff;border-color:#fff;box-shadow:0 0 0 .25rem #d9d9d980}.btn-check:checked+html .btn-white,.btn-check:active+html .btn-white,html .btn-white:active,html .btn-white.active,.show>html .btn-white.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-white,.btn-check:active+html[data-netbox-color-mode=dark] .btn-white,html[data-netbox-color-mode=dark] .btn-white:active,html[data-netbox-color-mode=dark] .btn-white.active,.show>html[data-netbox-color-mode=dark] .btn-white.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] .btn-white,.btn-check:active+html[data-netbox-color-mode=light] .btn-white,html[data-netbox-color-mode=light] .btn-white:active,html[data-netbox-color-mode=light] .btn-white.active,.show>html[data-netbox-color-mode=light] .btn-white.dropdown-toggle{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+html .btn-white:focus,.btn-check:active+html .btn-white:focus,html .btn-white:active:focus,html .btn-white.active:focus,.show>html .btn-white.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-white:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-white:focus,html[data-netbox-color-mode=dark] .btn-white:active:focus,html[data-netbox-color-mode=dark] .btn-white.active:focus,.show>html[data-netbox-color-mode=dark] .btn-white.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-white:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-white:focus,html[data-netbox-color-mode=light] .btn-white:active:focus,html[data-netbox-color-mode=light] .btn-white.active:focus,.show>html[data-netbox-color-mode=light] .btn-white.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #d9d9d980}html .btn-white:disabled,html .btn-white.disabled,html[data-netbox-color-mode=dark] .btn-white:disabled,html[data-netbox-color-mode=dark] .btn-white.disabled,html[data-netbox-color-mode=light] .btn-white:disabled,html[data-netbox-color-mode=light] .btn-white.disabled{color:#000;background-color:#fff;border-color:#fff}}@media print{html .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary{color:#337ab7;border-color:#337ab7}html .btn-outline-primary:hover,html[data-netbox-color-mode=dark] .btn-outline-primary:hover,html[data-netbox-color-mode=light] .btn-outline-primary:hover{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:focus+html .btn-outline-primary,html .btn-outline-primary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary:focus{box-shadow:0 0 0 .25rem #337ab780}.btn-check:checked+html .btn-outline-primary,.btn-check:active+html .btn-outline-primary,html .btn-outline-primary:active,html .btn-outline-primary.active,html .btn-outline-primary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary,html[data-netbox-color-mode=dark] .btn-outline-primary:active,html[data-netbox-color-mode=dark] .btn-outline-primary.active,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-primary,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-primary,html[data-netbox-color-mode=light] .btn-outline-primary:active,html[data-netbox-color-mode=light] .btn-outline-primary.active,html[data-netbox-color-mode=light] .btn-outline-primary.dropdown-toggle.show{color:#fff;background-color:#337ab7;border-color:#337ab7}.btn-check:checked+html .btn-outline-primary:focus,.btn-check:active+html .btn-outline-primary:focus,html .btn-outline-primary:active:focus,html .btn-outline-primary.active:focus,html .btn-outline-primary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-primary:focus,html[data-netbox-color-mode=dark] .btn-outline-primary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-primary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-primary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-primary:focus,html[data-netbox-color-mode=light] .btn-outline-primary:active:focus,html[data-netbox-color-mode=light] .btn-outline-primary.active:focus,html[data-netbox-color-mode=light] .btn-outline-primary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #337ab780}html .btn-outline-primary:disabled,html .btn-outline-primary.disabled,html[data-netbox-color-mode=dark] .btn-outline-primary:disabled,html[data-netbox-color-mode=dark] .btn-outline-primary.disabled,html[data-netbox-color-mode=light] .btn-outline-primary:disabled,html[data-netbox-color-mode=light] .btn-outline-primary.disabled{color:#337ab7;background-color:transparent}}@media print{html .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary{color:#6c757d;border-color:#6c757d}html .btn-outline-secondary:hover,html[data-netbox-color-mode=dark] .btn-outline-secondary:hover,html[data-netbox-color-mode=light] .btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:focus+html .btn-outline-secondary,html .btn-outline-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary:focus{box-shadow:0 0 0 .25rem #6c757d80}.btn-check:checked+html .btn-outline-secondary,.btn-check:active+html .btn-outline-secondary,html .btn-outline-secondary:active,html .btn-outline-secondary.active,html .btn-outline-secondary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary,html[data-netbox-color-mode=dark] .btn-outline-secondary:active,html[data-netbox-color-mode=dark] .btn-outline-secondary.active,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-secondary,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-secondary,html[data-netbox-color-mode=light] .btn-outline-secondary:active,html[data-netbox-color-mode=light] .btn-outline-secondary.active,html[data-netbox-color-mode=light] .btn-outline-secondary.dropdown-toggle.show{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-check:checked+html .btn-outline-secondary:focus,.btn-check:active+html .btn-outline-secondary:focus,html .btn-outline-secondary:active:focus,html .btn-outline-secondary.active:focus,html .btn-outline-secondary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-secondary:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=dark] .btn-outline-secondary.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-secondary:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-secondary:focus,html[data-netbox-color-mode=light] .btn-outline-secondary:active:focus,html[data-netbox-color-mode=light] .btn-outline-secondary.active:focus,html[data-netbox-color-mode=light] .btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6c757d80}html .btn-outline-secondary:disabled,html .btn-outline-secondary.disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary:disabled,html[data-netbox-color-mode=dark] .btn-outline-secondary.disabled,html[data-netbox-color-mode=light] .btn-outline-secondary:disabled,html[data-netbox-color-mode=light] .btn-outline-secondary.disabled{color:#6c757d;background-color:transparent}}@media print{html .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success{color:#198754;border-color:#198754}html .btn-outline-success:hover,html[data-netbox-color-mode=dark] .btn-outline-success:hover,html[data-netbox-color-mode=light] .btn-outline-success:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html .btn-outline-success,html .btn-outline-success:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html .btn-outline-success,.btn-check:active+html .btn-outline-success,html .btn-outline-success:active,html .btn-outline-success.active,html .btn-outline-success.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success,html[data-netbox-color-mode=dark] .btn-outline-success:active,html[data-netbox-color-mode=dark] .btn-outline-success.active,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-success,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-success,html[data-netbox-color-mode=light] .btn-outline-success:active,html[data-netbox-color-mode=light] .btn-outline-success.active,html[data-netbox-color-mode=light] .btn-outline-success.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html .btn-outline-success:focus,.btn-check:active+html .btn-outline-success:focus,html .btn-outline-success:active:focus,html .btn-outline-success.active:focus,html .btn-outline-success.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-success:focus,html[data-netbox-color-mode=dark] .btn-outline-success:active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.active:focus,html[data-netbox-color-mode=dark] .btn-outline-success.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-success:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-success:focus,html[data-netbox-color-mode=light] .btn-outline-success:active:focus,html[data-netbox-color-mode=light] .btn-outline-success.active:focus,html[data-netbox-color-mode=light] .btn-outline-success.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html .btn-outline-success:disabled,html .btn-outline-success.disabled,html[data-netbox-color-mode=dark] .btn-outline-success:disabled,html[data-netbox-color-mode=dark] .btn-outline-success.disabled,html[data-netbox-color-mode=light] .btn-outline-success:disabled,html[data-netbox-color-mode=light] .btn-outline-success.disabled{color:#198754;background-color:transparent}}@media print{html .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info{color:#54d6f0;border-color:#54d6f0}html .btn-outline-info:hover,html[data-netbox-color-mode=dark] .btn-outline-info:hover,html[data-netbox-color-mode=light] .btn-outline-info:hover{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-check:focus+html .btn-outline-info,html .btn-outline-info:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info:focus{box-shadow:0 0 0 .25rem #54d6f080}.btn-check:checked+html .btn-outline-info,.btn-check:active+html .btn-outline-info,html .btn-outline-info:active,html .btn-outline-info.active,html .btn-outline-info.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info,html[data-netbox-color-mode=dark] .btn-outline-info:active,html[data-netbox-color-mode=dark] .btn-outline-info.active,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-info,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-info,html[data-netbox-color-mode=light] .btn-outline-info:active,html[data-netbox-color-mode=light] .btn-outline-info.active,html[data-netbox-color-mode=light] .btn-outline-info.dropdown-toggle.show{color:#000;background-color:#54d6f0;border-color:#54d6f0}.btn-check:checked+html .btn-outline-info:focus,.btn-check:active+html .btn-outline-info:focus,html .btn-outline-info:active:focus,html .btn-outline-info.active:focus,html .btn-outline-info.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-info:focus,html[data-netbox-color-mode=dark] .btn-outline-info:active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.active:focus,html[data-netbox-color-mode=dark] .btn-outline-info.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-info:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-info:focus,html[data-netbox-color-mode=light] .btn-outline-info:active:focus,html[data-netbox-color-mode=light] .btn-outline-info.active:focus,html[data-netbox-color-mode=light] .btn-outline-info.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #54d6f080}html .btn-outline-info:disabled,html .btn-outline-info.disabled,html[data-netbox-color-mode=dark] .btn-outline-info:disabled,html[data-netbox-color-mode=dark] .btn-outline-info.disabled,html[data-netbox-color-mode=light] .btn-outline-info:disabled,html[data-netbox-color-mode=light] .btn-outline-info.disabled{color:#54d6f0;background-color:transparent}}@media print{html .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning{color:#ffc107;border-color:#ffc107}html .btn-outline-warning:hover,html[data-netbox-color-mode=dark] .btn-outline-warning:hover,html[data-netbox-color-mode=light] .btn-outline-warning:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html .btn-outline-warning,html .btn-outline-warning:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html .btn-outline-warning,.btn-check:active+html .btn-outline-warning,html .btn-outline-warning:active,html .btn-outline-warning.active,html .btn-outline-warning.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning,html[data-netbox-color-mode=dark] .btn-outline-warning:active,html[data-netbox-color-mode=dark] .btn-outline-warning.active,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-warning,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-warning,html[data-netbox-color-mode=light] .btn-outline-warning:active,html[data-netbox-color-mode=light] .btn-outline-warning.active,html[data-netbox-color-mode=light] .btn-outline-warning.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html .btn-outline-warning:focus,.btn-check:active+html .btn-outline-warning:focus,html .btn-outline-warning:active:focus,html .btn-outline-warning.active:focus,html .btn-outline-warning.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-warning:focus,html[data-netbox-color-mode=dark] .btn-outline-warning:active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.active:focus,html[data-netbox-color-mode=dark] .btn-outline-warning.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-warning:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-warning:focus,html[data-netbox-color-mode=light] .btn-outline-warning:active:focus,html[data-netbox-color-mode=light] .btn-outline-warning.active:focus,html[data-netbox-color-mode=light] .btn-outline-warning.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html .btn-outline-warning:disabled,html .btn-outline-warning.disabled,html[data-netbox-color-mode=dark] .btn-outline-warning:disabled,html[data-netbox-color-mode=dark] .btn-outline-warning.disabled,html[data-netbox-color-mode=light] .btn-outline-warning:disabled,html[data-netbox-color-mode=light] .btn-outline-warning.disabled{color:#ffc107;background-color:transparent}}@media print{html .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger{color:#dc3545;border-color:#dc3545}html .btn-outline-danger:hover,html[data-netbox-color-mode=dark] .btn-outline-danger:hover,html[data-netbox-color-mode=light] .btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html .btn-outline-danger,html .btn-outline-danger:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html .btn-outline-danger,.btn-check:active+html .btn-outline-danger,html .btn-outline-danger:active,html .btn-outline-danger.active,html .btn-outline-danger.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger,html[data-netbox-color-mode=dark] .btn-outline-danger:active,html[data-netbox-color-mode=dark] .btn-outline-danger.active,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-danger,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-danger,html[data-netbox-color-mode=light] .btn-outline-danger:active,html[data-netbox-color-mode=light] .btn-outline-danger.active,html[data-netbox-color-mode=light] .btn-outline-danger.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html .btn-outline-danger:focus,.btn-check:active+html .btn-outline-danger:focus,html .btn-outline-danger:active:focus,html .btn-outline-danger.active:focus,html .btn-outline-danger.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-danger:focus,html[data-netbox-color-mode=dark] .btn-outline-danger:active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.active:focus,html[data-netbox-color-mode=dark] .btn-outline-danger.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-danger:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-danger:focus,html[data-netbox-color-mode=light] .btn-outline-danger:active:focus,html[data-netbox-color-mode=light] .btn-outline-danger.active:focus,html[data-netbox-color-mode=light] .btn-outline-danger.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html .btn-outline-danger:disabled,html .btn-outline-danger.disabled,html[data-netbox-color-mode=dark] .btn-outline-danger:disabled,html[data-netbox-color-mode=dark] .btn-outline-danger.disabled,html[data-netbox-color-mode=light] .btn-outline-danger:disabled,html[data-netbox-color-mode=light] .btn-outline-danger.disabled{color:#dc3545;background-color:transparent}}@media print{html .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light{color:#e9ecef;border-color:#e9ecef}html .btn-outline-light:hover,html[data-netbox-color-mode=dark] .btn-outline-light:hover,html[data-netbox-color-mode=light] .btn-outline-light:hover{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:focus+html .btn-outline-light,html .btn-outline-light:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light:focus{box-shadow:0 0 0 .25rem #e9ecef80}.btn-check:checked+html .btn-outline-light,.btn-check:active+html .btn-outline-light,html .btn-outline-light:active,html .btn-outline-light.active,html .btn-outline-light.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light,html[data-netbox-color-mode=dark] .btn-outline-light:active,html[data-netbox-color-mode=dark] .btn-outline-light.active,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-light,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-light,html[data-netbox-color-mode=light] .btn-outline-light:active,html[data-netbox-color-mode=light] .btn-outline-light.active,html[data-netbox-color-mode=light] .btn-outline-light.dropdown-toggle.show{color:#000;background-color:#e9ecef;border-color:#e9ecef}.btn-check:checked+html .btn-outline-light:focus,.btn-check:active+html .btn-outline-light:focus,html .btn-outline-light:active:focus,html .btn-outline-light.active:focus,html .btn-outline-light.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-light:focus,html[data-netbox-color-mode=dark] .btn-outline-light:active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.active:focus,html[data-netbox-color-mode=dark] .btn-outline-light.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-light:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-light:focus,html[data-netbox-color-mode=light] .btn-outline-light:active:focus,html[data-netbox-color-mode=light] .btn-outline-light.active:focus,html[data-netbox-color-mode=light] .btn-outline-light.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #e9ecef80}html .btn-outline-light:disabled,html .btn-outline-light.disabled,html[data-netbox-color-mode=dark] .btn-outline-light:disabled,html[data-netbox-color-mode=dark] .btn-outline-light.disabled,html[data-netbox-color-mode=light] .btn-outline-light:disabled,html[data-netbox-color-mode=light] .btn-outline-light.disabled{color:#e9ecef;background-color:transparent}}@media print{html .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark{color:#343a40;border-color:#343a40}html .btn-outline-dark:hover,html[data-netbox-color-mode=dark] .btn-outline-dark:hover,html[data-netbox-color-mode=light] .btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:focus+html .btn-outline-dark,html .btn-outline-dark:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark:focus{box-shadow:0 0 0 .25rem #343a4080}.btn-check:checked+html .btn-outline-dark,.btn-check:active+html .btn-outline-dark,html .btn-outline-dark:active,html .btn-outline-dark.active,html .btn-outline-dark.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark,html[data-netbox-color-mode=dark] .btn-outline-dark:active,html[data-netbox-color-mode=dark] .btn-outline-dark.active,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-dark,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-dark,html[data-netbox-color-mode=light] .btn-outline-dark:active,html[data-netbox-color-mode=light] .btn-outline-dark.active,html[data-netbox-color-mode=light] .btn-outline-dark.dropdown-toggle.show{color:#fff;background-color:#343a40;border-color:#343a40}.btn-check:checked+html .btn-outline-dark:focus,.btn-check:active+html .btn-outline-dark:focus,html .btn-outline-dark:active:focus,html .btn-outline-dark.active:focus,html .btn-outline-dark.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-dark:focus,html[data-netbox-color-mode=dark] .btn-outline-dark:active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.active:focus,html[data-netbox-color-mode=dark] .btn-outline-dark.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-dark:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-dark:focus,html[data-netbox-color-mode=light] .btn-outline-dark:active:focus,html[data-netbox-color-mode=light] .btn-outline-dark.active:focus,html[data-netbox-color-mode=light] .btn-outline-dark.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #343a4080}html .btn-outline-dark:disabled,html .btn-outline-dark.disabled,html[data-netbox-color-mode=dark] .btn-outline-dark:disabled,html[data-netbox-color-mode=dark] .btn-outline-dark.disabled,html[data-netbox-color-mode=light] .btn-outline-dark:disabled,html[data-netbox-color-mode=light] .btn-outline-dark.disabled{color:#343a40;background-color:transparent}}@media print{html .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue{color:#0d6efd;border-color:#0d6efd}html .btn-outline-blue:hover,html[data-netbox-color-mode=dark] .btn-outline-blue:hover,html[data-netbox-color-mode=light] .btn-outline-blue:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:focus+html .btn-outline-blue,html .btn-outline-blue:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue:focus{box-shadow:0 0 0 .25rem #0d6efd80}.btn-check:checked+html .btn-outline-blue,.btn-check:active+html .btn-outline-blue,html .btn-outline-blue:active,html .btn-outline-blue.active,html .btn-outline-blue.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue,html[data-netbox-color-mode=dark] .btn-outline-blue:active,html[data-netbox-color-mode=dark] .btn-outline-blue.active,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue,html[data-netbox-color-mode=light] .btn-outline-blue:active,html[data-netbox-color-mode=light] .btn-outline-blue.active,html[data-netbox-color-mode=light] .btn-outline-blue.dropdown-toggle.show{color:#fff;background-color:#0d6efd;border-color:#0d6efd}.btn-check:checked+html .btn-outline-blue:focus,.btn-check:active+html .btn-outline-blue:focus,html .btn-outline-blue:active:focus,html .btn-outline-blue.active:focus,html .btn-outline-blue.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-blue:focus,html[data-netbox-color-mode=dark] .btn-outline-blue:active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.active:focus,html[data-netbox-color-mode=dark] .btn-outline-blue.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-blue:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-blue:focus,html[data-netbox-color-mode=light] .btn-outline-blue:active:focus,html[data-netbox-color-mode=light] .btn-outline-blue.active:focus,html[data-netbox-color-mode=light] .btn-outline-blue.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0d6efd80}html .btn-outline-blue:disabled,html .btn-outline-blue.disabled,html[data-netbox-color-mode=dark] .btn-outline-blue:disabled,html[data-netbox-color-mode=dark] .btn-outline-blue.disabled,html[data-netbox-color-mode=light] .btn-outline-blue:disabled,html[data-netbox-color-mode=light] .btn-outline-blue.disabled{color:#0d6efd;background-color:transparent}}@media print{html .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo{color:#6610f2;border-color:#6610f2}html .btn-outline-indigo:hover,html[data-netbox-color-mode=dark] .btn-outline-indigo:hover,html[data-netbox-color-mode=light] .btn-outline-indigo:hover{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:focus+html .btn-outline-indigo,html .btn-outline-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo:focus{box-shadow:0 0 0 .25rem #6610f280}.btn-check:checked+html .btn-outline-indigo,.btn-check:active+html .btn-outline-indigo,html .btn-outline-indigo:active,html .btn-outline-indigo.active,html .btn-outline-indigo.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo,html[data-netbox-color-mode=dark] .btn-outline-indigo:active,html[data-netbox-color-mode=dark] .btn-outline-indigo.active,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo,html[data-netbox-color-mode=light] .btn-outline-indigo:active,html[data-netbox-color-mode=light] .btn-outline-indigo.active,html[data-netbox-color-mode=light] .btn-outline-indigo.dropdown-toggle.show{color:#fff;background-color:#6610f2;border-color:#6610f2}.btn-check:checked+html .btn-outline-indigo:focus,.btn-check:active+html .btn-outline-indigo:focus,html .btn-outline-indigo:active:focus,html .btn-outline-indigo.active:focus,html .btn-outline-indigo.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-indigo:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=dark] .btn-outline-indigo.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-indigo:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-indigo:focus,html[data-netbox-color-mode=light] .btn-outline-indigo:active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo.active:focus,html[data-netbox-color-mode=light] .btn-outline-indigo.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6610f280}html .btn-outline-indigo:disabled,html .btn-outline-indigo.disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo:disabled,html[data-netbox-color-mode=dark] .btn-outline-indigo.disabled,html[data-netbox-color-mode=light] .btn-outline-indigo:disabled,html[data-netbox-color-mode=light] .btn-outline-indigo.disabled{color:#6610f2;background-color:transparent}}@media print{html .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple{color:#6f42c1;border-color:#6f42c1}html .btn-outline-purple:hover,html[data-netbox-color-mode=dark] .btn-outline-purple:hover,html[data-netbox-color-mode=light] .btn-outline-purple:hover{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:focus+html .btn-outline-purple,html .btn-outline-purple:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple:focus{box-shadow:0 0 0 .25rem #6f42c180}.btn-check:checked+html .btn-outline-purple,.btn-check:active+html .btn-outline-purple,html .btn-outline-purple:active,html .btn-outline-purple.active,html .btn-outline-purple.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple,html[data-netbox-color-mode=dark] .btn-outline-purple:active,html[data-netbox-color-mode=dark] .btn-outline-purple.active,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple,html[data-netbox-color-mode=light] .btn-outline-purple:active,html[data-netbox-color-mode=light] .btn-outline-purple.active,html[data-netbox-color-mode=light] .btn-outline-purple.dropdown-toggle.show{color:#fff;background-color:#6f42c1;border-color:#6f42c1}.btn-check:checked+html .btn-outline-purple:focus,.btn-check:active+html .btn-outline-purple:focus,html .btn-outline-purple:active:focus,html .btn-outline-purple.active:focus,html .btn-outline-purple.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-purple:focus,html[data-netbox-color-mode=dark] .btn-outline-purple:active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.active:focus,html[data-netbox-color-mode=dark] .btn-outline-purple.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-purple:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-purple:focus,html[data-netbox-color-mode=light] .btn-outline-purple:active:focus,html[data-netbox-color-mode=light] .btn-outline-purple.active:focus,html[data-netbox-color-mode=light] .btn-outline-purple.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #6f42c180}html .btn-outline-purple:disabled,html .btn-outline-purple.disabled,html[data-netbox-color-mode=dark] .btn-outline-purple:disabled,html[data-netbox-color-mode=dark] .btn-outline-purple.disabled,html[data-netbox-color-mode=light] .btn-outline-purple:disabled,html[data-netbox-color-mode=light] .btn-outline-purple.disabled{color:#6f42c1;background-color:transparent}}@media print{html .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink{color:#d63384;border-color:#d63384}html .btn-outline-pink:hover,html[data-netbox-color-mode=dark] .btn-outline-pink:hover,html[data-netbox-color-mode=light] .btn-outline-pink:hover{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:focus+html .btn-outline-pink,html .btn-outline-pink:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink:focus{box-shadow:0 0 0 .25rem #d6338480}.btn-check:checked+html .btn-outline-pink,.btn-check:active+html .btn-outline-pink,html .btn-outline-pink:active,html .btn-outline-pink.active,html .btn-outline-pink.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink,html[data-netbox-color-mode=dark] .btn-outline-pink:active,html[data-netbox-color-mode=dark] .btn-outline-pink.active,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink,html[data-netbox-color-mode=light] .btn-outline-pink:active,html[data-netbox-color-mode=light] .btn-outline-pink.active,html[data-netbox-color-mode=light] .btn-outline-pink.dropdown-toggle.show{color:#fff;background-color:#d63384;border-color:#d63384}.btn-check:checked+html .btn-outline-pink:focus,.btn-check:active+html .btn-outline-pink:focus,html .btn-outline-pink:active:focus,html .btn-outline-pink.active:focus,html .btn-outline-pink.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-pink:focus,html[data-netbox-color-mode=dark] .btn-outline-pink:active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.active:focus,html[data-netbox-color-mode=dark] .btn-outline-pink.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-pink:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-pink:focus,html[data-netbox-color-mode=light] .btn-outline-pink:active:focus,html[data-netbox-color-mode=light] .btn-outline-pink.active:focus,html[data-netbox-color-mode=light] .btn-outline-pink.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #d6338480}html .btn-outline-pink:disabled,html .btn-outline-pink.disabled,html[data-netbox-color-mode=dark] .btn-outline-pink:disabled,html[data-netbox-color-mode=dark] .btn-outline-pink.disabled,html[data-netbox-color-mode=light] .btn-outline-pink:disabled,html[data-netbox-color-mode=light] .btn-outline-pink.disabled{color:#d63384;background-color:transparent}}@media print{html .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red{color:#dc3545;border-color:#dc3545}html .btn-outline-red:hover,html[data-netbox-color-mode=dark] .btn-outline-red:hover,html[data-netbox-color-mode=light] .btn-outline-red:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:focus+html .btn-outline-red,html .btn-outline-red:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red:focus{box-shadow:0 0 0 .25rem #dc354580}.btn-check:checked+html .btn-outline-red,.btn-check:active+html .btn-outline-red,html .btn-outline-red:active,html .btn-outline-red.active,html .btn-outline-red.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red,html[data-netbox-color-mode=dark] .btn-outline-red:active,html[data-netbox-color-mode=dark] .btn-outline-red.active,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red,html[data-netbox-color-mode=light] .btn-outline-red:active,html[data-netbox-color-mode=light] .btn-outline-red.active,html[data-netbox-color-mode=light] .btn-outline-red.dropdown-toggle.show{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-check:checked+html .btn-outline-red:focus,.btn-check:active+html .btn-outline-red:focus,html .btn-outline-red:active:focus,html .btn-outline-red.active:focus,html .btn-outline-red.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-red:focus,html[data-netbox-color-mode=dark] .btn-outline-red:active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.active:focus,html[data-netbox-color-mode=dark] .btn-outline-red.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-red:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-red:focus,html[data-netbox-color-mode=light] .btn-outline-red:active:focus,html[data-netbox-color-mode=light] .btn-outline-red.active:focus,html[data-netbox-color-mode=light] .btn-outline-red.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #dc354580}html .btn-outline-red:disabled,html .btn-outline-red.disabled,html[data-netbox-color-mode=dark] .btn-outline-red:disabled,html[data-netbox-color-mode=dark] .btn-outline-red.disabled,html[data-netbox-color-mode=light] .btn-outline-red:disabled,html[data-netbox-color-mode=light] .btn-outline-red.disabled{color:#dc3545;background-color:transparent}}@media print{html .btn-outline-orange,html[data-netbox-color-mode=dark] .btn-outline-orange,html[data-netbox-color-mode=light] .btn-outline-orange{color:#fd7e14;border-color:#fd7e14}html .btn-outline-orange:hover,html[data-netbox-color-mode=dark] .btn-outline-orange:hover,html[data-netbox-color-mode=light] .btn-outline-orange:hover{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-check:focus+html .btn-outline-orange,html .btn-outline-orange:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-orange,html[data-netbox-color-mode=dark] .btn-outline-orange:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-orange,html[data-netbox-color-mode=light] .btn-outline-orange:focus{box-shadow:0 0 0 .25rem #fd7e1480}.btn-check:checked+html .btn-outline-orange,.btn-check:active+html .btn-outline-orange,html .btn-outline-orange:active,html .btn-outline-orange.active,html .btn-outline-orange.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-orange,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-orange,html[data-netbox-color-mode=dark] .btn-outline-orange:active,html[data-netbox-color-mode=dark] .btn-outline-orange.active,html[data-netbox-color-mode=dark] .btn-outline-orange.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-orange,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-orange,html[data-netbox-color-mode=light] .btn-outline-orange:active,html[data-netbox-color-mode=light] .btn-outline-orange.active,html[data-netbox-color-mode=light] .btn-outline-orange.dropdown-toggle.show{color:#000;background-color:#fd7e14;border-color:#fd7e14}.btn-check:checked+html .btn-outline-orange:focus,.btn-check:active+html .btn-outline-orange:focus,html .btn-outline-orange:active:focus,html .btn-outline-orange.active:focus,html .btn-outline-orange.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-orange:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-orange:focus,html[data-netbox-color-mode=dark] .btn-outline-orange:active:focus,html[data-netbox-color-mode=dark] .btn-outline-orange.active:focus,html[data-netbox-color-mode=dark] .btn-outline-orange.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-orange:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-orange:focus,html[data-netbox-color-mode=light] .btn-outline-orange:active:focus,html[data-netbox-color-mode=light] .btn-outline-orange.active:focus,html[data-netbox-color-mode=light] .btn-outline-orange.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #fd7e1480}html .btn-outline-orange:disabled,html .btn-outline-orange.disabled,html[data-netbox-color-mode=dark] .btn-outline-orange:disabled,html[data-netbox-color-mode=dark] .btn-outline-orange.disabled,html[data-netbox-color-mode=light] .btn-outline-orange:disabled,html[data-netbox-color-mode=light] .btn-outline-orange.disabled{color:#fd7e14;background-color:transparent}}@media print{html .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow{color:#ffc107;border-color:#ffc107}html .btn-outline-yellow:hover,html[data-netbox-color-mode=dark] .btn-outline-yellow:hover,html[data-netbox-color-mode=light] .btn-outline-yellow:hover{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:focus+html .btn-outline-yellow,html .btn-outline-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow:focus{box-shadow:0 0 0 .25rem #ffc10780}.btn-check:checked+html .btn-outline-yellow,.btn-check:active+html .btn-outline-yellow,html .btn-outline-yellow:active,html .btn-outline-yellow.active,html .btn-outline-yellow.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow,html[data-netbox-color-mode=dark] .btn-outline-yellow:active,html[data-netbox-color-mode=dark] .btn-outline-yellow.active,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow,html[data-netbox-color-mode=light] .btn-outline-yellow:active,html[data-netbox-color-mode=light] .btn-outline-yellow.active,html[data-netbox-color-mode=light] .btn-outline-yellow.dropdown-toggle.show{color:#000;background-color:#ffc107;border-color:#ffc107}.btn-check:checked+html .btn-outline-yellow:focus,.btn-check:active+html .btn-outline-yellow:focus,html .btn-outline-yellow:active:focus,html .btn-outline-yellow.active:focus,html .btn-outline-yellow.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-yellow:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=dark] .btn-outline-yellow.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-yellow:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-yellow:focus,html[data-netbox-color-mode=light] .btn-outline-yellow:active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow.active:focus,html[data-netbox-color-mode=light] .btn-outline-yellow.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffc10780}html .btn-outline-yellow:disabled,html .btn-outline-yellow.disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow:disabled,html[data-netbox-color-mode=dark] .btn-outline-yellow.disabled,html[data-netbox-color-mode=light] .btn-outline-yellow:disabled,html[data-netbox-color-mode=light] .btn-outline-yellow.disabled{color:#ffc107;background-color:transparent}}@media print{html .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green{color:#198754;border-color:#198754}html .btn-outline-green:hover,html[data-netbox-color-mode=dark] .btn-outline-green:hover,html[data-netbox-color-mode=light] .btn-outline-green:hover{color:#fff;background-color:#198754;border-color:#198754}.btn-check:focus+html .btn-outline-green,html .btn-outline-green:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green:focus{box-shadow:0 0 0 .25rem #19875480}.btn-check:checked+html .btn-outline-green,.btn-check:active+html .btn-outline-green,html .btn-outline-green:active,html .btn-outline-green.active,html .btn-outline-green.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green,html[data-netbox-color-mode=dark] .btn-outline-green:active,html[data-netbox-color-mode=dark] .btn-outline-green.active,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green,html[data-netbox-color-mode=light] .btn-outline-green:active,html[data-netbox-color-mode=light] .btn-outline-green.active,html[data-netbox-color-mode=light] .btn-outline-green.dropdown-toggle.show{color:#fff;background-color:#198754;border-color:#198754}.btn-check:checked+html .btn-outline-green:focus,.btn-check:active+html .btn-outline-green:focus,html .btn-outline-green:active:focus,html .btn-outline-green.active:focus,html .btn-outline-green.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-green:focus,html[data-netbox-color-mode=dark] .btn-outline-green:active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.active:focus,html[data-netbox-color-mode=dark] .btn-outline-green.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-green:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-green:focus,html[data-netbox-color-mode=light] .btn-outline-green:active:focus,html[data-netbox-color-mode=light] .btn-outline-green.active:focus,html[data-netbox-color-mode=light] .btn-outline-green.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #19875480}html .btn-outline-green:disabled,html .btn-outline-green.disabled,html[data-netbox-color-mode=dark] .btn-outline-green:disabled,html[data-netbox-color-mode=dark] .btn-outline-green.disabled,html[data-netbox-color-mode=light] .btn-outline-green:disabled,html[data-netbox-color-mode=light] .btn-outline-green.disabled{color:#198754;background-color:transparent}}@media print{html .btn-outline-teal,html[data-netbox-color-mode=dark] .btn-outline-teal,html[data-netbox-color-mode=light] .btn-outline-teal{color:#20c997;border-color:#20c997}html .btn-outline-teal:hover,html[data-netbox-color-mode=dark] .btn-outline-teal:hover,html[data-netbox-color-mode=light] .btn-outline-teal:hover{color:#000;background-color:#20c997;border-color:#20c997}.btn-check:focus+html .btn-outline-teal,html .btn-outline-teal:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-teal,html[data-netbox-color-mode=dark] .btn-outline-teal:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-teal,html[data-netbox-color-mode=light] .btn-outline-teal:focus{box-shadow:0 0 0 .25rem #20c99780}.btn-check:checked+html .btn-outline-teal,.btn-check:active+html .btn-outline-teal,html .btn-outline-teal:active,html .btn-outline-teal.active,html .btn-outline-teal.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-teal,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-teal,html[data-netbox-color-mode=dark] .btn-outline-teal:active,html[data-netbox-color-mode=dark] .btn-outline-teal.active,html[data-netbox-color-mode=dark] .btn-outline-teal.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-teal,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-teal,html[data-netbox-color-mode=light] .btn-outline-teal:active,html[data-netbox-color-mode=light] .btn-outline-teal.active,html[data-netbox-color-mode=light] .btn-outline-teal.dropdown-toggle.show{color:#000;background-color:#20c997;border-color:#20c997}.btn-check:checked+html .btn-outline-teal:focus,.btn-check:active+html .btn-outline-teal:focus,html .btn-outline-teal:active:focus,html .btn-outline-teal.active:focus,html .btn-outline-teal.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-teal:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-teal:focus,html[data-netbox-color-mode=dark] .btn-outline-teal:active:focus,html[data-netbox-color-mode=dark] .btn-outline-teal.active:focus,html[data-netbox-color-mode=dark] .btn-outline-teal.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-teal:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-teal:focus,html[data-netbox-color-mode=light] .btn-outline-teal:active:focus,html[data-netbox-color-mode=light] .btn-outline-teal.active:focus,html[data-netbox-color-mode=light] .btn-outline-teal.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #20c99780}html .btn-outline-teal:disabled,html .btn-outline-teal.disabled,html[data-netbox-color-mode=dark] .btn-outline-teal:disabled,html[data-netbox-color-mode=dark] .btn-outline-teal.disabled,html[data-netbox-color-mode=light] .btn-outline-teal:disabled,html[data-netbox-color-mode=light] .btn-outline-teal.disabled{color:#20c997;background-color:transparent}}@media print{html .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan{color:#0dcaf0;border-color:#0dcaf0}html .btn-outline-cyan:hover,html[data-netbox-color-mode=dark] .btn-outline-cyan:hover,html[data-netbox-color-mode=light] .btn-outline-cyan:hover{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:focus+html .btn-outline-cyan,html .btn-outline-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan:focus{box-shadow:0 0 0 .25rem #0dcaf080}.btn-check:checked+html .btn-outline-cyan,.btn-check:active+html .btn-outline-cyan,html .btn-outline-cyan:active,html .btn-outline-cyan.active,html .btn-outline-cyan.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan,html[data-netbox-color-mode=dark] .btn-outline-cyan:active,html[data-netbox-color-mode=dark] .btn-outline-cyan.active,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan,html[data-netbox-color-mode=light] .btn-outline-cyan:active,html[data-netbox-color-mode=light] .btn-outline-cyan.active,html[data-netbox-color-mode=light] .btn-outline-cyan.dropdown-toggle.show{color:#000;background-color:#0dcaf0;border-color:#0dcaf0}.btn-check:checked+html .btn-outline-cyan:focus,.btn-check:active+html .btn-outline-cyan:focus,html .btn-outline-cyan:active:focus,html .btn-outline-cyan.active:focus,html .btn-outline-cyan.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-cyan:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=dark] .btn-outline-cyan.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-cyan:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-cyan:focus,html[data-netbox-color-mode=light] .btn-outline-cyan:active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan.active:focus,html[data-netbox-color-mode=light] .btn-outline-cyan.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #0dcaf080}html .btn-outline-cyan:disabled,html .btn-outline-cyan.disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan:disabled,html[data-netbox-color-mode=dark] .btn-outline-cyan.disabled,html[data-netbox-color-mode=light] .btn-outline-cyan:disabled,html[data-netbox-color-mode=light] .btn-outline-cyan.disabled{color:#0dcaf0;background-color:transparent}}@media print{html .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray{color:#adb5bd;border-color:#adb5bd}html .btn-outline-gray:hover,html[data-netbox-color-mode=dark] .btn-outline-gray:hover,html[data-netbox-color-mode=light] .btn-outline-gray:hover{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:focus+html .btn-outline-gray,html .btn-outline-gray:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray:focus{box-shadow:0 0 0 .25rem #adb5bd80}.btn-check:checked+html .btn-outline-gray,.btn-check:active+html .btn-outline-gray,html .btn-outline-gray:active,html .btn-outline-gray.active,html .btn-outline-gray.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray,html[data-netbox-color-mode=dark] .btn-outline-gray:active,html[data-netbox-color-mode=dark] .btn-outline-gray.active,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray,html[data-netbox-color-mode=light] .btn-outline-gray:active,html[data-netbox-color-mode=light] .btn-outline-gray.active,html[data-netbox-color-mode=light] .btn-outline-gray.dropdown-toggle.show{color:#000;background-color:#adb5bd;border-color:#adb5bd}.btn-check:checked+html .btn-outline-gray:focus,.btn-check:active+html .btn-outline-gray:focus,html .btn-outline-gray:active:focus,html .btn-outline-gray.active:focus,html .btn-outline-gray.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-gray:focus,html[data-netbox-color-mode=dark] .btn-outline-gray:active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.active:focus,html[data-netbox-color-mode=dark] .btn-outline-gray.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-gray:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-gray:focus,html[data-netbox-color-mode=light] .btn-outline-gray:active:focus,html[data-netbox-color-mode=light] .btn-outline-gray.active:focus,html[data-netbox-color-mode=light] .btn-outline-gray.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #adb5bd80}html .btn-outline-gray:disabled,html .btn-outline-gray.disabled,html[data-netbox-color-mode=dark] .btn-outline-gray:disabled,html[data-netbox-color-mode=dark] .btn-outline-gray.disabled,html[data-netbox-color-mode=light] .btn-outline-gray:disabled,html[data-netbox-color-mode=light] .btn-outline-gray.disabled{color:#adb5bd;background-color:transparent}}@media print{html .btn-outline-black,html[data-netbox-color-mode=dark] .btn-outline-black,html[data-netbox-color-mode=light] .btn-outline-black{color:#000;border-color:#000}html .btn-outline-black:hover,html[data-netbox-color-mode=dark] .btn-outline-black:hover,html[data-netbox-color-mode=light] .btn-outline-black:hover{color:#fff;background-color:#000;border-color:#000}.btn-check:focus+html .btn-outline-black,html .btn-outline-black:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-black,html[data-netbox-color-mode=dark] .btn-outline-black:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-black,html[data-netbox-color-mode=light] .btn-outline-black:focus{box-shadow:0 0 0 .25rem #00000080}.btn-check:checked+html .btn-outline-black,.btn-check:active+html .btn-outline-black,html .btn-outline-black:active,html .btn-outline-black.active,html .btn-outline-black.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-black,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-black,html[data-netbox-color-mode=dark] .btn-outline-black:active,html[data-netbox-color-mode=dark] .btn-outline-black.active,html[data-netbox-color-mode=dark] .btn-outline-black.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-black,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-black,html[data-netbox-color-mode=light] .btn-outline-black:active,html[data-netbox-color-mode=light] .btn-outline-black.active,html[data-netbox-color-mode=light] .btn-outline-black.dropdown-toggle.show{color:#fff;background-color:#000;border-color:#000}.btn-check:checked+html .btn-outline-black:focus,.btn-check:active+html .btn-outline-black:focus,html .btn-outline-black:active:focus,html .btn-outline-black.active:focus,html .btn-outline-black.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-black:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-black:focus,html[data-netbox-color-mode=dark] .btn-outline-black:active:focus,html[data-netbox-color-mode=dark] .btn-outline-black.active:focus,html[data-netbox-color-mode=dark] .btn-outline-black.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-black:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-black:focus,html[data-netbox-color-mode=light] .btn-outline-black:active:focus,html[data-netbox-color-mode=light] .btn-outline-black.active:focus,html[data-netbox-color-mode=light] .btn-outline-black.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #00000080}html .btn-outline-black:disabled,html .btn-outline-black.disabled,html[data-netbox-color-mode=dark] .btn-outline-black:disabled,html[data-netbox-color-mode=dark] .btn-outline-black.disabled,html[data-netbox-color-mode=light] .btn-outline-black:disabled,html[data-netbox-color-mode=light] .btn-outline-black.disabled{color:#000;background-color:transparent}}@media print{html .btn-outline-white,html[data-netbox-color-mode=dark] .btn-outline-white,html[data-netbox-color-mode=light] .btn-outline-white{color:#fff;border-color:#fff}html .btn-outline-white:hover,html[data-netbox-color-mode=dark] .btn-outline-white:hover,html[data-netbox-color-mode=light] .btn-outline-white:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+html .btn-outline-white,html .btn-outline-white:focus,.btn-check:focus+html[data-netbox-color-mode=dark] .btn-outline-white,html[data-netbox-color-mode=dark] .btn-outline-white:focus,.btn-check:focus+html[data-netbox-color-mode=light] .btn-outline-white,html[data-netbox-color-mode=light] .btn-outline-white:focus{box-shadow:0 0 0 .25rem #ffffff80}.btn-check:checked+html .btn-outline-white,.btn-check:active+html .btn-outline-white,html .btn-outline-white:active,html .btn-outline-white.active,html .btn-outline-white.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-white,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-white,html[data-netbox-color-mode=dark] .btn-outline-white:active,html[data-netbox-color-mode=dark] .btn-outline-white.active,html[data-netbox-color-mode=dark] .btn-outline-white.dropdown-toggle.show,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-white,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-white,html[data-netbox-color-mode=light] .btn-outline-white:active,html[data-netbox-color-mode=light] .btn-outline-white.active,html[data-netbox-color-mode=light] .btn-outline-white.dropdown-toggle.show{color:#000;background-color:#fff;border-color:#fff}.btn-check:checked+html .btn-outline-white:focus,.btn-check:active+html .btn-outline-white:focus,html .btn-outline-white:active:focus,html .btn-outline-white.active:focus,html .btn-outline-white.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=dark] .btn-outline-white:focus,.btn-check:active+html[data-netbox-color-mode=dark] .btn-outline-white:focus,html[data-netbox-color-mode=dark] .btn-outline-white:active:focus,html[data-netbox-color-mode=dark] .btn-outline-white.active:focus,html[data-netbox-color-mode=dark] .btn-outline-white.dropdown-toggle.show:focus,.btn-check:checked+html[data-netbox-color-mode=light] .btn-outline-white:focus,.btn-check:active+html[data-netbox-color-mode=light] .btn-outline-white:focus,html[data-netbox-color-mode=light] .btn-outline-white:active:focus,html[data-netbox-color-mode=light] .btn-outline-white.active:focus,html[data-netbox-color-mode=light] .btn-outline-white.dropdown-toggle.show:focus{box-shadow:0 0 0 .25rem #ffffff80}html .btn-outline-white:disabled,html .btn-outline-white.disabled,html[data-netbox-color-mode=dark] .btn-outline-white:disabled,html[data-netbox-color-mode=dark] .btn-outline-white.disabled,html[data-netbox-color-mode=light] .btn-outline-white:disabled,html[data-netbox-color-mode=light] .btn-outline-white.disabled{color:#fff;background-color:transparent}}@media print{html .btn-link,html[data-netbox-color-mode=dark] .btn-link,html[data-netbox-color-mode=light] .btn-link{font-weight:400;color:#0d6efd;text-decoration:underline}html .btn-link:hover,html[data-netbox-color-mode=dark] .btn-link:hover,html[data-netbox-color-mode=light] .btn-link:hover{color:#0a58ca}html .btn-link:disabled,html .btn-link.disabled,html[data-netbox-color-mode=dark] .btn-link:disabled,html[data-netbox-color-mode=dark] .btn-link.disabled,html[data-netbox-color-mode=light] .btn-link:disabled,html[data-netbox-color-mode=light] .btn-link.disabled{color:#6c757d}}@media print{html .btn-lg,html .btn-group-lg>.btn,html[data-netbox-color-mode=dark] .btn-lg,html[data-netbox-color-mode=light] .btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.75rem}}@media print{html .btn-sm,html .btn-group-sm>.btn,html[data-netbox-color-mode=dark] .btn-sm,html[data-netbox-color-mode=light] .btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}}@media print{html .fade,html[data-netbox-color-mode=dark] .fade,html[data-netbox-color-mode=light] .fade{transition:opacity .15s linear}}@media print and (prefers-reduced-motion: reduce){html .fade,html[data-netbox-color-mode=dark] .fade,html[data-netbox-color-mode=light] .fade{transition:none}}@media print{html .fade:not(.show),html[data-netbox-color-mode=dark] .fade:not(.show),html[data-netbox-color-mode=light] .fade:not(.show){opacity:0}}@media print{html .collapse:not(.show),html[data-netbox-color-mode=dark] .collapse:not(.show),html[data-netbox-color-mode=light] .collapse:not(.show){display:none}}@media print{html .collapsing,html[data-netbox-color-mode=dark] .collapsing,html[data-netbox-color-mode=light] .collapsing{height:0;overflow:hidden;transition:height .35s ease}}@media print and (prefers-reduced-motion: reduce){html .collapsing,html[data-netbox-color-mode=dark] .collapsing,html[data-netbox-color-mode=light] .collapsing{transition:none}}@media print{html .dropup,html .dropend,html .dropdown,html .dropstart,html[data-netbox-color-mode=dark] .dropup,html[data-netbox-color-mode=dark] .dropend,html[data-netbox-color-mode=dark] .dropdown,html[data-netbox-color-mode=dark] .dropstart,html[data-netbox-color-mode=light] .dropup,html[data-netbox-color-mode=light] .dropend,html[data-netbox-color-mode=light] .dropdown,html[data-netbox-color-mode=light] .dropstart{position:relative}}@media print{html .dropdown-toggle,html[data-netbox-color-mode=dark] .dropdown-toggle,html[data-netbox-color-mode=light] .dropdown-toggle{white-space:nowrap}html .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}html .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropdown-toggle:empty:after{margin-left:0}}@media print{html .dropdown-menu,html[data-netbox-color-mode=dark] .dropdown-menu,html[data-netbox-color-mode=light] .dropdown-menu{position:absolute;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.375rem}html .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:.125rem}}@media print{html .dropdown-menu-start,html[data-netbox-color-mode=dark] .dropdown-menu-start,html[data-netbox-color-mode=light] .dropdown-menu-start{--bs-position: start}html .dropdown-menu-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-start[data-bs-popper]{right:auto;left:0}}@media print{html .dropdown-menu-end,html[data-netbox-color-mode=dark] .dropdown-menu-end,html[data-netbox-color-mode=light] .dropdown-menu-end{--bs-position: end}html .dropdown-menu-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 576px){html .dropdown-menu-sm-start,html[data-netbox-color-mode=dark] .dropdown-menu-sm-start,html[data-netbox-color-mode=light] .dropdown-menu-sm-start{--bs-position: start}html .dropdown-menu-sm-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-sm-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-sm-end,html[data-netbox-color-mode=dark] .dropdown-menu-sm-end,html[data-netbox-color-mode=light] .dropdown-menu-sm-end{--bs-position: end}html .dropdown-menu-sm-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-sm-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 768px){html .dropdown-menu-md-start,html[data-netbox-color-mode=dark] .dropdown-menu-md-start,html[data-netbox-color-mode=light] .dropdown-menu-md-start{--bs-position: start}html .dropdown-menu-md-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-md-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-md-end,html[data-netbox-color-mode=dark] .dropdown-menu-md-end,html[data-netbox-color-mode=light] .dropdown-menu-md-end{--bs-position: end}html .dropdown-menu-md-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-md-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 992px){html .dropdown-menu-lg-start,html[data-netbox-color-mode=dark] .dropdown-menu-lg-start,html[data-netbox-color-mode=light] .dropdown-menu-lg-start{--bs-position: start}html .dropdown-menu-lg-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-lg-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-lg-end,html[data-netbox-color-mode=dark] .dropdown-menu-lg-end,html[data-netbox-color-mode=light] .dropdown-menu-lg-end{--bs-position: end}html .dropdown-menu-lg-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-lg-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 1200px){html .dropdown-menu-xl-start,html[data-netbox-color-mode=dark] .dropdown-menu-xl-start,html[data-netbox-color-mode=light] .dropdown-menu-xl-start{--bs-position: start}html .dropdown-menu-xl-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xl-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-xl-end,html[data-netbox-color-mode=dark] .dropdown-menu-xl-end,html[data-netbox-color-mode=light] .dropdown-menu-xl-end{--bs-position: end}html .dropdown-menu-xl-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xl-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media print and (min-width: 1400px){html .dropdown-menu-xxl-start,html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start,html[data-netbox-color-mode=light] .dropdown-menu-xxl-start{--bs-position: start}html .dropdown-menu-xxl-start[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xxl-start[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}html .dropdown-menu-xxl-end,html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end,html[data-netbox-color-mode=light] .dropdown-menu-xxl-end{--bs-position: end}html .dropdown-menu-xxl-end[data-bs-popper],html[data-netbox-color-mode=dark] .dropdown-menu-xxl-end[data-bs-popper],html[data-netbox-color-mode=light] .dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}@media print{html .dropup .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropup .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}html .dropup .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}html .dropup .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropup .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropup .dropdown-toggle:empty:after{margin-left:0}}@media print{html .dropend .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropend .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}html .dropend .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}html .dropend .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:empty:after{margin-left:0}html .dropend .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropend .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropend .dropdown-toggle:after{vertical-align:0}}@media print{html .dropstart .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=dark] .dropstart .dropdown-menu[data-bs-popper],html[data-netbox-color-mode=light] .dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}html .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}html .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:after{display:none}html .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}html .dropstart .dropdown-toggle:empty:after,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:empty:after,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:empty:after{margin-left:0}html .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=dark] .dropstart .dropdown-toggle:before,html[data-netbox-color-mode=light] .dropstart .dropdown-toggle:before{vertical-align:0}}@media print{html .dropdown-divider,html[data-netbox-color-mode=dark] .dropdown-divider,html[data-netbox-color-mode=light] .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}}@media print{html .dropdown-item,html[data-netbox-color-mode=dark] .dropdown-item,html[data-netbox-color-mode=light] .dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}html .dropdown-item:hover,html .dropdown-item:focus,html[data-netbox-color-mode=dark] .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-item:focus,html[data-netbox-color-mode=light] .dropdown-item:hover,html[data-netbox-color-mode=light] .dropdown-item:focus{color:#1e2125;background-color:#e9ecef}html .dropdown-item.active,html .dropdown-item:active,html[data-netbox-color-mode=dark] .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-item:active,html[data-netbox-color-mode=light] .dropdown-item.active,html[data-netbox-color-mode=light] .dropdown-item:active{color:#fff;text-decoration:none;background-color:#0d6efd}html .dropdown-item.disabled,html .dropdown-item:disabled,html[data-netbox-color-mode=dark] .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-item:disabled,html[data-netbox-color-mode=light] .dropdown-item.disabled,html[data-netbox-color-mode=light] .dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}}@media print{html .dropdown-menu.show,html[data-netbox-color-mode=dark] .dropdown-menu.show,html[data-netbox-color-mode=light] .dropdown-menu.show{display:block}}@media print{html .dropdown-header,html[data-netbox-color-mode=dark] .dropdown-header,html[data-netbox-color-mode=light] .dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}}@media print{html .dropdown-item-text,html[data-netbox-color-mode=dark] .dropdown-item-text,html[data-netbox-color-mode=light] .dropdown-item-text{display:block;padding:.25rem 1rem;color:#212529}}@media print{html .dropdown-menu-dark,html[data-netbox-color-mode=dark] .dropdown-menu-dark,html[data-netbox-color-mode=light] .dropdown-menu-dark{color:#dee2e6;background-color:#343a40;border-color:#00000026}html .dropdown-menu-dark .dropdown-item,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item{color:#dee2e6}html .dropdown-menu-dark .dropdown-item:hover,html .dropdown-menu-dark .dropdown-item:focus,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:focus,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:hover,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:focus{color:#fff;background-color:#ffffff26}html .dropdown-menu-dark .dropdown-item.active,html .dropdown-menu-dark .dropdown-item:active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:active,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item.active,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#0d6efd}html .dropdown-menu-dark .dropdown-item.disabled,html .dropdown-menu-dark .dropdown-item:disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item:disabled,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item.disabled,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item:disabled{color:#adb5bd}html .dropdown-menu-dark .dropdown-divider,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-divider,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-divider{border-color:#00000026}html .dropdown-menu-dark .dropdown-item-text,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-item-text,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-item-text{color:#dee2e6}html .dropdown-menu-dark .dropdown-header,html[data-netbox-color-mode=dark] .dropdown-menu-dark .dropdown-header,html[data-netbox-color-mode=light] .dropdown-menu-dark .dropdown-header{color:#adb5bd}}@media print{html .btn-group,html .btn-group-vertical,html[data-netbox-color-mode=dark] .btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical,html[data-netbox-color-mode=light] .btn-group,html[data-netbox-color-mode=light] .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}html .btn-group>.btn,html .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=light] .btn-group>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn{position:relative;flex:1 1 auto}html .btn-group>.btn-check:checked+.btn,html .btn-group>.btn-check:focus+.btn,html .btn-group>.btn:hover,html .btn-group>.btn:focus,html .btn-group>.btn:active,html .btn-group>.btn.active,html .btn-group-vertical>.btn-check:checked+.btn,html .btn-group-vertical>.btn-check:focus+.btn,html .btn-group-vertical>.btn:hover,html .btn-group-vertical>.btn:focus,html .btn-group-vertical>.btn:active,html .btn-group-vertical>.btn.active,html[data-netbox-color-mode=dark] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:hover,html[data-netbox-color-mode=dark] .btn-group>.btn:focus,html[data-netbox-color-mode=dark] .btn-group>.btn:active,html[data-netbox-color-mode=dark] .btn-group>.btn.active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn.active,html[data-netbox-color-mode=light] .btn-group>.btn-check:checked+.btn,html[data-netbox-color-mode=light] .btn-group>.btn-check:focus+.btn,html[data-netbox-color-mode=light] .btn-group>.btn:hover,html[data-netbox-color-mode=light] .btn-group>.btn:focus,html[data-netbox-color-mode=light] .btn-group>.btn:active,html[data-netbox-color-mode=light] .btn-group>.btn.active,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-check:checked+.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-check:focus+.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:hover,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:focus,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:active,html[data-netbox-color-mode=light] .btn-group-vertical>.btn.active{z-index:1}}@media print{html .btn-toolbar,html[data-netbox-color-mode=dark] .btn-toolbar,html[data-netbox-color-mode=light] .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}html .btn-toolbar .input-group,html[data-netbox-color-mode=dark] .btn-toolbar .input-group,html[data-netbox-color-mode=light] .btn-toolbar .input-group{width:auto}}@media print{html .btn-group>.btn:not(:first-child),html .btn-group>.btn-group:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child),html[data-netbox-color-mode=light] .btn-group>.btn:not(:first-child),html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:first-child){margin-left:-1px}html .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html .btn-group>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=light] .btn-group>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}html .btn-group>.btn:nth-child(n+3),html .btn-group>:not(.btn-check)+.btn,html .btn-group>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=dark] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=dark] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=dark] .btn-group>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=light] .btn-group>.btn:nth-child(n+3),html[data-netbox-color-mode=light] .btn-group>:not(.btn-check)+.btn,html[data-netbox-color-mode=light] .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}}@media print{html .dropdown-toggle-split,html[data-netbox-color-mode=dark] .dropdown-toggle-split,html[data-netbox-color-mode=light] .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}html .dropdown-toggle-split:after,.dropup html .dropdown-toggle-split:after,.dropend html .dropdown-toggle-split:after,html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=dark] .dropdown-toggle-split:after,html[data-netbox-color-mode=light] .dropdown-toggle-split:after,.dropup html[data-netbox-color-mode=light] .dropdown-toggle-split:after,.dropend html[data-netbox-color-mode=light] .dropdown-toggle-split:after{margin-left:0}.dropstart html .dropdown-toggle-split:before,.dropstart html[data-netbox-color-mode=dark] .dropdown-toggle-split:before,.dropstart html[data-netbox-color-mode=light] .dropdown-toggle-split:before{margin-right:0}}@media print{html .btn-sm+.dropdown-toggle-split,html .btn-group-sm>.btn+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-sm+.dropdown-toggle-split,html[data-netbox-color-mode=light] .btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}}@media print{html .btn-lg+.dropdown-toggle-split,html .btn-group-lg>.btn+.dropdown-toggle-split,html[data-netbox-color-mode=dark] .btn-lg+.dropdown-toggle-split,html[data-netbox-color-mode=light] .btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}}@media print{html .btn-group-vertical,html[data-netbox-color-mode=dark] .btn-group-vertical,html[data-netbox-color-mode=light] .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}html .btn-group-vertical>.btn,html .btn-group-vertical>.btn-group,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group,html[data-netbox-color-mode=light] .btn-group-vertical>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group{width:100%}html .btn-group-vertical>.btn:not(:first-child),html .btn-group-vertical>.btn-group:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child),html[data-netbox-color-mode=light] .btn-group-vertical>.btn:not(:first-child),html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}html .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html .btn-group-vertical>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:last-child)>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}html .btn-group-vertical>.btn~.btn,html .btn-group-vertical>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=dark] .btn-group-vertical>.btn-group:not(:first-child)>.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn~.btn,html[data-netbox-color-mode=light] .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}}@media print{html .nav,html[data-netbox-color-mode=dark] .nav,html[data-netbox-color-mode=light] .nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}}@media print{html .nav-link,html[data-netbox-color-mode=dark] .nav-link,html[data-netbox-color-mode=light] .nav-link{display:block;padding:.5rem 1rem;color:#0d6efd;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .nav-link,html[data-netbox-color-mode=dark] .nav-link,html[data-netbox-color-mode=light] .nav-link{transition:none}}@media print{html .nav-link:hover,html .nav-link:focus,html[data-netbox-color-mode=dark] .nav-link:hover,html[data-netbox-color-mode=dark] .nav-link:focus,html[data-netbox-color-mode=light] .nav-link:hover,html[data-netbox-color-mode=light] .nav-link:focus{color:#0a58ca}}@media print{html .nav-link.disabled,html[data-netbox-color-mode=dark] .nav-link.disabled,html[data-netbox-color-mode=light] .nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}}@media print{html .nav-tabs,html[data-netbox-color-mode=dark] .nav-tabs,html[data-netbox-color-mode=light] .nav-tabs{border-bottom:1px solid #dee2e6}html .nav-tabs .nav-link,html[data-netbox-color-mode=dark] .nav-tabs .nav-link,html[data-netbox-color-mode=light] .nav-tabs .nav-link{margin-bottom:-1px;background:none;border:1px solid transparent;border-top-left-radius:.375rem;border-top-right-radius:.375rem}html .nav-tabs .nav-link:hover,html .nav-tabs .nav-link:focus,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:focus,html[data-netbox-color-mode=light] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=light] .nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6;isolation:isolate}html .nav-tabs .nav-link.disabled,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.disabled,html[data-netbox-color-mode=light] .nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}html .nav-tabs .nav-link.active,html .nav-tabs .nav-item.show .nav-link,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-item.show .nav-link,html[data-netbox-color-mode=light] .nav-tabs .nav-link.active,html[data-netbox-color-mode=light] .nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}html .nav-tabs .dropdown-menu,html[data-netbox-color-mode=dark] .nav-tabs .dropdown-menu,html[data-netbox-color-mode=light] .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}}@media print{html .nav-pills .nav-link,html[data-netbox-color-mode=dark] .nav-pills .nav-link,html[data-netbox-color-mode=light] .nav-pills .nav-link{background:none;border:0;border-radius:.375rem}html .nav-pills .nav-link.active,html .nav-pills .show>.nav-link,html[data-netbox-color-mode=dark] .nav-pills .nav-link.active,html[data-netbox-color-mode=dark] .nav-pills .show>.nav-link,html[data-netbox-color-mode=light] .nav-pills .nav-link.active,html[data-netbox-color-mode=light] .nav-pills .show>.nav-link{color:#fff;background-color:#0d6efd}}@media print{html .nav-fill>.nav-link,html .nav-fill .nav-item,html[data-netbox-color-mode=dark] .nav-fill>.nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item,html[data-netbox-color-mode=light] .nav-fill>.nav-link,html[data-netbox-color-mode=light] .nav-fill .nav-item{flex:1 1 auto;text-align:center}}@media print{html .nav-justified>.nav-link,html .nav-justified .nav-item,html[data-netbox-color-mode=dark] .nav-justified>.nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item,html[data-netbox-color-mode=light] .nav-justified>.nav-link,html[data-netbox-color-mode=light] .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}}@media print{html .nav-fill .nav-item .nav-link,html .nav-justified .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=dark] .nav-justified .nav-item .nav-link,html[data-netbox-color-mode=light] .nav-fill .nav-item .nav-link,html[data-netbox-color-mode=light] .nav-justified .nav-item .nav-link{width:100%}}@media print{html .tab-content>.tab-pane,html[data-netbox-color-mode=dark] .tab-content>.tab-pane,html[data-netbox-color-mode=light] .tab-content>.tab-pane{display:none}html .tab-content>.active,html[data-netbox-color-mode=dark] .tab-content>.active,html[data-netbox-color-mode=light] .tab-content>.active{display:block}}@media print{html .navbar,html[data-netbox-color-mode=dark] .navbar,html[data-netbox-color-mode=light] .navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}html[data-netbox-color-mode=dark] .navbar>.container-xxl,html[data-netbox-color-mode=light] .navbar>.container-xxl,html[data-netbox-color-mode=dark] .navbar>.container-xl,html[data-netbox-color-mode=light] .navbar>.container-xl,html[data-netbox-color-mode=dark] .navbar>.container-lg,html[data-netbox-color-mode=light] .navbar>.container-lg,html[data-netbox-color-mode=dark] .navbar>.container-md,html[data-netbox-color-mode=light] .navbar>.container-md,html[data-netbox-color-mode=dark] .navbar>.container-sm,html[data-netbox-color-mode=light] .navbar>.container-sm,html .navbar>.container,html .navbar>.container-fluid,html .navbar>.container-sm,html .navbar>.container-md,html .navbar>.container-lg,html .navbar>.container-xl,html .navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}}@media print{html .navbar-brand,html[data-netbox-color-mode=dark] .navbar-brand,html[data-netbox-color-mode=light] .navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}}@media print{html .navbar-nav,html[data-netbox-color-mode=dark] .navbar-nav,html[data-netbox-color-mode=light] .navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}html .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-nav .nav-link{padding-right:0;padding-left:0}html .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-nav .dropdown-menu{position:static}}@media print{html .navbar-text,html[data-netbox-color-mode=dark] .navbar-text,html[data-netbox-color-mode=light] .navbar-text{padding-top:.5rem;padding-bottom:.5rem}}@media print{html .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-collapse,html[data-netbox-color-mode=light] .navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}}@media print{html .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-toggler,html[data-netbox-color-mode=light] .navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.375rem;transition:box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-toggler,html[data-netbox-color-mode=light] .navbar-toggler{transition:none}}@media print{html .navbar-toggler:hover,html[data-netbox-color-mode=dark] .navbar-toggler:hover,html[data-netbox-color-mode=light] .navbar-toggler:hover{text-decoration:none}}@media print{html .navbar-toggler:focus,html[data-netbox-color-mode=dark] .navbar-toggler:focus,html[data-netbox-color-mode=light] .navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}}@media print{html .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}}@media print{html .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}}@media print and (min-width: 576px){html .navbar-expand-sm,html[data-netbox-color-mode=dark] .navbar-expand-sm,html[data-netbox-color-mode=light] .navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-sm .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav{flex-direction:row}html .navbar-expand-sm .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-sm .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-sm .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-nav-scroll{overflow:visible}html .navbar-expand-sm .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-sm .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-sm .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-sm .navbar-toggler{display:none}}@media print and (min-width: 768px){html .navbar-expand-md,html[data-netbox-color-mode=dark] .navbar-expand-md,html[data-netbox-color-mode=light] .navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-md .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav{flex-direction:row}html .navbar-expand-md .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-md .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-md .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-nav-scroll{overflow:visible}html .navbar-expand-md .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-md .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-md .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-md .navbar-toggler{display:none}}@media print and (min-width: 992px){html .navbar-expand-lg,html[data-netbox-color-mode=dark] .navbar-expand-lg,html[data-netbox-color-mode=light] .navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-lg .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav{flex-direction:row}html .navbar-expand-lg .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-lg .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-lg .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-nav-scroll{overflow:visible}html .navbar-expand-lg .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-lg .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-lg .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-lg .navbar-toggler{display:none}}@media print and (min-width: 1200px){html .navbar-expand-xl,html[data-netbox-color-mode=dark] .navbar-expand-xl,html[data-netbox-color-mode=light] .navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-xl .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav{flex-direction:row}html .navbar-expand-xl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-xl .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-xl .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-nav-scroll{overflow:visible}html .navbar-expand-xl .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-xl .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-xl .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-xl .navbar-toggler{display:none}}@media print and (min-width: 1400px){html .navbar-expand-xxl,html[data-netbox-color-mode=dark] .navbar-expand-xxl,html[data-netbox-color-mode=light] .navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand-xxl .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav{flex-direction:row}html .navbar-expand-xxl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand-xxl .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand-xxl .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-nav-scroll{overflow:visible}html .navbar-expand-xxl .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand-xxl .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand-xxl .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand-xxl .navbar-toggler{display:none}}@media print{html .navbar-expand,html[data-netbox-color-mode=dark] .navbar-expand,html[data-netbox-color-mode=light] .navbar-expand{flex-wrap:nowrap;justify-content:flex-start}html .navbar-expand .navbar-nav,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav{flex-direction:row}html .navbar-expand .navbar-nav .dropdown-menu,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .dropdown-menu,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav .dropdown-menu{position:absolute}html .navbar-expand .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}html .navbar-expand .navbar-nav-scroll,html[data-netbox-color-mode=dark] .navbar-expand .navbar-nav-scroll,html[data-netbox-color-mode=light] .navbar-expand .navbar-nav-scroll{overflow:visible}html .navbar-expand .navbar-collapse,html[data-netbox-color-mode=dark] .navbar-expand .navbar-collapse,html[data-netbox-color-mode=light] .navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}html .navbar-expand .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-expand .navbar-toggler,html[data-netbox-color-mode=light] .navbar-expand .navbar-toggler{display:none}}@media print{html .navbar-light .navbar-brand,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand,html[data-netbox-color-mode=light] .navbar-light .navbar-brand{color:#000000e6}html .navbar-light .navbar-brand:hover,html .navbar-light .navbar-brand:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-brand:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-brand:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-brand:focus{color:#000000e6}html .navbar-light .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link{color:#f8f9fa}html .navbar-light .navbar-nav .nav-link:hover,html .navbar-light .navbar-nav .nav-link:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link:focus{color:#000000b3}html .navbar-light .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link.disabled{color:#0000004d}html .navbar-light .navbar-nav .show>.nav-link,html .navbar-light .navbar-nav .nav-link.active,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-light .navbar-nav .nav-link.active,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .show>.nav-link,html[data-netbox-color-mode=light] .navbar-light .navbar-nav .nav-link.active{color:#000000e6}html .navbar-light .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler,html[data-netbox-color-mode=light] .navbar-light .navbar-toggler{color:#f8f9fa;border-color:#0000001a}html .navbar-light .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-light .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html .navbar-light .navbar-text,html[data-netbox-color-mode=dark] .navbar-light .navbar-text,html[data-netbox-color-mode=light] .navbar-light .navbar-text{color:#f8f9fa}html .navbar-light .navbar-text a,html .navbar-light .navbar-text a:hover,html .navbar-light .navbar-text a:focus,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-light .navbar-text a:focus,html[data-netbox-color-mode=light] .navbar-light .navbar-text a,html[data-netbox-color-mode=light] .navbar-light .navbar-text a:hover,html[data-netbox-color-mode=light] .navbar-light .navbar-text a:focus{color:#000000e6}}@media print{html .navbar-dark .navbar-brand,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand{color:#fff}html .navbar-dark .navbar-brand:hover,html .navbar-dark .navbar-brand:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-brand:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-brand:focus{color:#fff}html .navbar-dark .navbar-nav .nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link{color:#ffffff8c}html .navbar-dark .navbar-nav .nav-link:hover,html .navbar-dark .navbar-nav .nav-link:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link:focus{color:#ffffffbf}html .navbar-dark .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.disabled,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link.disabled{color:#ffffff40}html .navbar-dark .navbar-nav .show>.nav-link,html .navbar-dark .navbar-nav .nav-link.active,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=dark] .navbar-dark .navbar-nav .nav-link.active,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .show>.nav-link,html[data-netbox-color-mode=light] .navbar-dark .navbar-nav .nav-link.active{color:#fff}html .navbar-dark .navbar-toggler,html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler,html[data-netbox-color-mode=light] .navbar-dark .navbar-toggler{color:#ffffff8c;border-color:#ffffff1a}html .navbar-dark .navbar-toggler-icon,html[data-netbox-color-mode=dark] .navbar-dark .navbar-toggler-icon,html[data-netbox-color-mode=light] .navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}html .navbar-dark .navbar-text,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text,html[data-netbox-color-mode=light] .navbar-dark .navbar-text{color:#ffffff8c}html .navbar-dark .navbar-text a,html .navbar-dark .navbar-text a:hover,html .navbar-dark .navbar-text a:focus,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=dark] .navbar-dark .navbar-text a:focus,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a:hover,html[data-netbox-color-mode=light] .navbar-dark .navbar-text a:focus{color:#fff}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.375rem}html .card>hr,html[data-netbox-color-mode=dark] .card>hr,html[data-netbox-color-mode=light] .card>hr{margin-right:0;margin-left:0}html .card>.list-group,html[data-netbox-color-mode=dark] .card>.list-group,html[data-netbox-color-mode=light] .card>.list-group{border-top:inherit;border-bottom:inherit}html .card>.list-group:first-child,html[data-netbox-color-mode=dark] .card>.list-group:first-child,html[data-netbox-color-mode=light] .card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html .card>.list-group:last-child,html[data-netbox-color-mode=dark] .card>.list-group:last-child,html[data-netbox-color-mode=light] .card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}html .card>.card-header+.list-group,html .card>.list-group+.card-footer,html[data-netbox-color-mode=dark] .card>.card-header+.list-group,html[data-netbox-color-mode=dark] .card>.list-group+.card-footer,html[data-netbox-color-mode=light] .card>.card-header+.list-group,html[data-netbox-color-mode=light] .card>.list-group+.card-footer{border-top:0}}@media print{html .card-body,html[data-netbox-color-mode=dark] .card-body,html[data-netbox-color-mode=light] .card-body{flex:1 1 auto;padding:1rem}}@media print{html .card-title,html[data-netbox-color-mode=dark] .card-title,html[data-netbox-color-mode=light] .card-title{margin-bottom:.5rem}}@media print{html .card-subtitle,html[data-netbox-color-mode=dark] .card-subtitle,html[data-netbox-color-mode=light] .card-subtitle{margin-top:-.25rem;margin-bottom:0}}@media print{html .card-text:last-child,html[data-netbox-color-mode=dark] .card-text:last-child,html[data-netbox-color-mode=light] .card-text:last-child{margin-bottom:0}}@media print{html .card-link:hover,html[data-netbox-color-mode=dark] .card-link:hover,html[data-netbox-color-mode=light] .card-link:hover{text-decoration:none}html .card-link+.card-link,html[data-netbox-color-mode=dark] .card-link+.card-link,html[data-netbox-color-mode=light] .card-link+.card-link{margin-left:1rem}}@media print{html .card-header,html[data-netbox-color-mode=dark] .card-header,html[data-netbox-color-mode=light] .card-header{padding:.5rem 1rem;margin-bottom:0;color:#343a40;background-color:"unset";border-bottom:1px solid rgba(0,0,0,.125)}html .card-header:first-child,html[data-netbox-color-mode=dark] .card-header:first-child,html[data-netbox-color-mode=light] .card-header:first-child{border-radius:calc(0.375rem - 1px) calc(0.375rem - 1px) 0 0}}@media print{html .card-footer,html[data-netbox-color-mode=dark] .card-footer,html[data-netbox-color-mode=light] .card-footer{padding:.5rem 1rem;color:#343a40;background-color:"unset";border-top:1px solid rgba(0,0,0,.125)}html .card-footer:last-child,html[data-netbox-color-mode=dark] .card-footer:last-child,html[data-netbox-color-mode=light] .card-footer:last-child{border-radius:0 0 calc(0.375rem - 1px) calc(0.375rem - 1px)}}@media print{html .card-header-tabs,html[data-netbox-color-mode=dark] .card-header-tabs,html[data-netbox-color-mode=light] .card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}}@media print{html .card-header-pills,html[data-netbox-color-mode=dark] .card-header-pills,html[data-netbox-color-mode=light] .card-header-pills{margin-right:-.5rem;margin-left:-.5rem}}@media print{html .card-img-overlay,html[data-netbox-color-mode=dark] .card-img-overlay,html[data-netbox-color-mode=light] .card-img-overlay{position:absolute;inset:0;padding:1rem;border-radius:calc(0.375rem - 1px)}}@media print{html .card-img,html .card-img-top,html .card-img-bottom,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=dark] .card-img-bottom,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-top,html[data-netbox-color-mode=light] .card-img-bottom{width:100%}}@media print{html .card-img,html .card-img-top,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-top,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-top{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}}@media print{html .card-img,html .card-img-bottom,html[data-netbox-color-mode=dark] .card-img,html[data-netbox-color-mode=dark] .card-img-bottom,html[data-netbox-color-mode=light] .card-img,html[data-netbox-color-mode=light] .card-img-bottom{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}}@media print{html .card-group>.card,html[data-netbox-color-mode=dark] .card-group>.card,html[data-netbox-color-mode=light] .card-group>.card{margin-bottom:.75rem}}@media print and (min-width: 576px){html .card-group,html[data-netbox-color-mode=dark] .card-group,html[data-netbox-color-mode=light] .card-group{display:flex;flex-flow:row wrap}html .card-group>.card,html[data-netbox-color-mode=dark] .card-group>.card,html[data-netbox-color-mode=light] .card-group>.card{flex:1 0 0%;margin-bottom:0}html .card-group>.card+.card,html[data-netbox-color-mode=dark] .card-group>.card+.card,html[data-netbox-color-mode=light] .card-group>.card+.card{margin-left:0;border-left:0}html .card-group>.card:not(:last-child),html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child),html[data-netbox-color-mode=light] .card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html .card-group>.card:not(:last-child) .card-img-top,html .card-group>.card:not(:last-child) .card-header,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-header,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-img-top,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}html .card-group>.card:not(:last-child) .card-img-bottom,html .card-group>.card:not(:last-child) .card-footer,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:last-child) .card-footer,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-img-bottom,html[data-netbox-color-mode=light] .card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}html .card-group>.card:not(:first-child),html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child),html[data-netbox-color-mode=light] .card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}html .card-group>.card:not(:first-child) .card-img-top,html .card-group>.card:not(:first-child) .card-header,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-header,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-img-top,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}html .card-group>.card:not(:first-child) .card-img-bottom,html .card-group>.card:not(:first-child) .card-footer,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=dark] .card-group>.card:not(:first-child) .card-footer,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-img-bottom,html[data-netbox-color-mode=light] .card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}@media print{html .accordion-button,html[data-netbox-color-mode=dark] .accordion-button,html[data-netbox-color-mode=light] .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#212529;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}}@media print and (prefers-reduced-motion: reduce){html .accordion-button,html[data-netbox-color-mode=dark] .accordion-button,html[data-netbox-color-mode=light] .accordion-button{transition:none}}@media print{html .accordion-button:not(.collapsed),html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed),html[data-netbox-color-mode=light] .accordion-button:not(.collapsed){color:#343a40;background-color:#cfe2ff;box-shadow:inset 0 -1px #dee2e6}html .accordion-button:not(.collapsed):after,html[data-netbox-color-mode=dark] .accordion-button:not(.collapsed):after,html[data-netbox-color-mode=light] .accordion-button:not(.collapsed):after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(-180deg)}}@media print{html .accordion-button:after,html[data-netbox-color-mode=dark] .accordion-button:after,html[data-netbox-color-mode=light] .accordion-button:after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .accordion-button:after,html[data-netbox-color-mode=dark] .accordion-button:after,html[data-netbox-color-mode=light] .accordion-button:after{transition:none}}@media print{html .accordion-button:hover,html[data-netbox-color-mode=dark] .accordion-button:hover,html[data-netbox-color-mode=light] .accordion-button:hover{z-index:2}}@media print{html .accordion-button:focus,html[data-netbox-color-mode=dark] .accordion-button:focus,html[data-netbox-color-mode=light] .accordion-button:focus{z-index:3;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .accordion-header,html[data-netbox-color-mode=dark] .accordion-header,html[data-netbox-color-mode=light] .accordion-header{margin-bottom:0}}@media print{html .accordion-item,html[data-netbox-color-mode=dark] .accordion-item,html[data-netbox-color-mode=light] .accordion-item{background-color:transparent;border:1px solid #dee2e6}html .accordion-item:first-of-type,html[data-netbox-color-mode=dark] .accordion-item:first-of-type,html[data-netbox-color-mode=light] .accordion-item:first-of-type{border-top-left-radius:.375rem;border-top-right-radius:.375rem}html .accordion-item:first-of-type .accordion-button,html[data-netbox-color-mode=dark] .accordion-item:first-of-type .accordion-button,html[data-netbox-color-mode=light] .accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html .accordion-item:not(:first-of-type),html[data-netbox-color-mode=dark] .accordion-item:not(:first-of-type),html[data-netbox-color-mode=light] .accordion-item:not(:first-of-type){border-top:0}html .accordion-item:last-of-type,html[data-netbox-color-mode=dark] .accordion-item:last-of-type,html[data-netbox-color-mode=light] .accordion-item:last-of-type{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .accordion-item:last-of-type .accordion-button.collapsed,html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-button.collapsed,html[data-netbox-color-mode=light] .accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(0.375rem - 1px);border-bottom-left-radius:calc(0.375rem - 1px)}html .accordion-item:last-of-type .accordion-collapse,html[data-netbox-color-mode=dark] .accordion-item:last-of-type .accordion-collapse,html[data-netbox-color-mode=light] .accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}}@media print{html .accordion-body,html[data-netbox-color-mode=dark] .accordion-body,html[data-netbox-color-mode=light] .accordion-body{padding:1rem 1.25rem}}@media print{html .accordion-flush .accordion-collapse,html[data-netbox-color-mode=dark] .accordion-flush .accordion-collapse,html[data-netbox-color-mode=light] .accordion-flush .accordion-collapse{border-width:0}html .accordion-flush .accordion-item,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item,html[data-netbox-color-mode=light] .accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}html .accordion-flush .accordion-item:first-child,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:first-child,html[data-netbox-color-mode=light] .accordion-flush .accordion-item:first-child{border-top:0}html .accordion-flush .accordion-item:last-child,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item:last-child,html[data-netbox-color-mode=light] .accordion-flush .accordion-item:last-child{border-bottom:0}html .accordion-flush .accordion-item .accordion-button,html[data-netbox-color-mode=dark] .accordion-flush .accordion-item .accordion-button,html[data-netbox-color-mode=light] .accordion-flush .accordion-item .accordion-button{border-radius:0}}@media print{html .breadcrumb,html[data-netbox-color-mode=dark] .breadcrumb,html[data-netbox-color-mode=light] .breadcrumb{display:flex;flex-wrap:wrap;padding:0;margin-bottom:1rem;list-style:none}}@media print{html .breadcrumb-item+.breadcrumb-item,html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item,html[data-netbox-color-mode=light] .breadcrumb-item+.breadcrumb-item{padding-left:.5rem}html .breadcrumb-item+.breadcrumb-item:before,html[data-netbox-color-mode=dark] .breadcrumb-item+.breadcrumb-item:before,html[data-netbox-color-mode=light] .breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:var(--bs-breadcrumb-divider, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E"))}html .breadcrumb-item.active,html[data-netbox-color-mode=dark] .breadcrumb-item.active,html[data-netbox-color-mode=light] .breadcrumb-item.active{color:#6c757d}}@media print{html .pagination,html[data-netbox-color-mode=dark] .pagination,html[data-netbox-color-mode=light] .pagination{display:flex;padding-left:0;list-style:none}}@media print{html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{position:relative;display:block;color:#0d6efd;text-decoration:none;background-color:#fff;border:1px solid #dee2e6;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{transition:none}}@media print{html .page-link:hover,html[data-netbox-color-mode=dark] .page-link:hover,html[data-netbox-color-mode=light] .page-link:hover{z-index:2;color:#0a58ca;background-color:#e9ecef;border-color:#dee2e6}}@media print{html .page-link:focus,html[data-netbox-color-mode=dark] .page-link:focus,html[data-netbox-color-mode=light] .page-link:focus{z-index:3;color:#0a58ca;background-color:#e9ecef;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .page-item:not(:first-child) .page-link,html[data-netbox-color-mode=dark] .page-item:not(:first-child) .page-link,html[data-netbox-color-mode=light] .page-item:not(:first-child) .page-link{margin-left:-1px}html .page-item.active .page-link,html[data-netbox-color-mode=dark] .page-item.active .page-link,html[data-netbox-color-mode=light] .page-item.active .page-link{z-index:3;color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .page-item.disabled .page-link,html[data-netbox-color-mode=dark] .page-item.disabled .page-link,html[data-netbox-color-mode=light] .page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:#fff;border-color:#dee2e6}}@media print{html .page-link,html[data-netbox-color-mode=dark] .page-link,html[data-netbox-color-mode=light] .page-link{padding:.375rem .75rem}}@media print{html .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .page-item:first-child .page-link,html[data-netbox-color-mode=light] .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .page-item:last-child .page-link,html[data-netbox-color-mode=light] .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}}@media print{html .pagination-lg .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}html .pagination-lg .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-item:first-child .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-item:first-child .page-link{border-top-left-radius:.75rem;border-bottom-left-radius:.75rem}html .pagination-lg .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .pagination-lg .page-item:last-child .page-link,html[data-netbox-color-mode=light] .pagination-lg .page-item:last-child .page-link{border-top-right-radius:.75rem;border-bottom-right-radius:.75rem}}@media print{html .pagination-sm .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}html .pagination-sm .page-item:first-child .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-item:first-child .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-item:first-child .page-link{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}html .pagination-sm .page-item:last-child .page-link,html[data-netbox-color-mode=dark] .pagination-sm .page-item:last-child .page-link,html[data-netbox-color-mode=light] .pagination-sm .page-item:last-child .page-link{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}}@media print{html .badge,html[data-netbox-color-mode=dark] .badge,html[data-netbox-color-mode=light] .badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}html .badge:empty,html[data-netbox-color-mode=dark] .badge:empty,html[data-netbox-color-mode=light] .badge:empty{display:none}}@media print{html .btn .badge,html[data-netbox-color-mode=dark] .btn .badge,html[data-netbox-color-mode=light] .btn .badge{position:relative;top:-1px}}@media print{html .alert,html[data-netbox-color-mode=dark] .alert,html[data-netbox-color-mode=light] .alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.375rem}}@media print{html .alert-heading,html[data-netbox-color-mode=dark] .alert-heading,html[data-netbox-color-mode=light] .alert-heading{color:inherit}}@media print{html .alert-link,html[data-netbox-color-mode=dark] .alert-link,html[data-netbox-color-mode=light] .alert-link{font-weight:700}}@media print{html .alert-dismissible,html[data-netbox-color-mode=dark] .alert-dismissible,html[data-netbox-color-mode=light] .alert-dismissible{padding-right:3rem}html .alert-dismissible .btn-close,html[data-netbox-color-mode=dark] .alert-dismissible .btn-close,html[data-netbox-color-mode=light] .alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}}@media print{html .alert-primary,html[data-netbox-color-mode=dark] .alert-primary,html[data-netbox-color-mode=light] .alert-primary{color:#1f496e;background-color:#d6e4f1;border-color:#c2d7e9}html .alert-primary .alert-link,html[data-netbox-color-mode=dark] .alert-primary .alert-link,html[data-netbox-color-mode=light] .alert-primary .alert-link{color:#193a58}}@media print{html .alert-secondary,html[data-netbox-color-mode=dark] .alert-secondary,html[data-netbox-color-mode=light] .alert-secondary{color:#41464b;background-color:#e2e3e5;border-color:#d3d6d8}html .alert-secondary .alert-link,html[data-netbox-color-mode=dark] .alert-secondary .alert-link,html[data-netbox-color-mode=light] .alert-secondary .alert-link{color:#34383c}}@media print{html .alert-success,html[data-netbox-color-mode=dark] .alert-success,html[data-netbox-color-mode=light] .alert-success{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}html .alert-success .alert-link,html[data-netbox-color-mode=dark] .alert-success .alert-link,html[data-netbox-color-mode=light] .alert-success .alert-link{color:#0c4128}}@media print{html .alert-info,html[data-netbox-color-mode=dark] .alert-info,html[data-netbox-color-mode=light] .alert-info{color:#225660;background-color:#ddf7fc;border-color:#ccf3fb}html .alert-info .alert-link,html[data-netbox-color-mode=dark] .alert-info .alert-link,html[data-netbox-color-mode=light] .alert-info .alert-link{color:#1b454d}}@media print{html .alert-warning,html[data-netbox-color-mode=dark] .alert-warning,html[data-netbox-color-mode=light] .alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}html .alert-warning .alert-link,html[data-netbox-color-mode=dark] .alert-warning .alert-link,html[data-netbox-color-mode=light] .alert-warning .alert-link{color:#523e02}}@media print{html .alert-danger,html[data-netbox-color-mode=dark] .alert-danger,html[data-netbox-color-mode=light] .alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}html .alert-danger .alert-link,html[data-netbox-color-mode=dark] .alert-danger .alert-link,html[data-netbox-color-mode=light] .alert-danger .alert-link{color:#6a1a21}}@media print{html .alert-light,html[data-netbox-color-mode=dark] .alert-light,html[data-netbox-color-mode=light] .alert-light{color:#5d5e60;background-color:#fbfbfc;border-color:#f8f9fa}html .alert-light .alert-link,html[data-netbox-color-mode=dark] .alert-light .alert-link,html[data-netbox-color-mode=light] .alert-light .alert-link{color:#4a4b4d}}@media print{html .alert-dark,html[data-netbox-color-mode=dark] .alert-dark,html[data-netbox-color-mode=light] .alert-dark{color:#1f2326;background-color:#d6d8d9;border-color:#c2c4c6}html .alert-dark .alert-link,html[data-netbox-color-mode=dark] .alert-dark .alert-link,html[data-netbox-color-mode=light] .alert-dark .alert-link{color:#191c1e}}@media print{html .alert-blue,html[data-netbox-color-mode=dark] .alert-blue,html[data-netbox-color-mode=light] .alert-blue{color:#084298;background-color:#cfe2ff;border-color:#b6d4fe}html .alert-blue .alert-link,html[data-netbox-color-mode=dark] .alert-blue .alert-link,html[data-netbox-color-mode=light] .alert-blue .alert-link{color:#06357a}}@media print{html .alert-indigo,html[data-netbox-color-mode=dark] .alert-indigo,html[data-netbox-color-mode=light] .alert-indigo{color:#3d0a91;background-color:#e0cffc;border-color:#d1b7fb}html .alert-indigo .alert-link,html[data-netbox-color-mode=dark] .alert-indigo .alert-link,html[data-netbox-color-mode=light] .alert-indigo .alert-link{color:#310874}}@media print{html .alert-purple,html[data-netbox-color-mode=dark] .alert-purple,html[data-netbox-color-mode=light] .alert-purple{color:#432874;background-color:#e2d9f3;border-color:#d4c6ec}html .alert-purple .alert-link,html[data-netbox-color-mode=dark] .alert-purple .alert-link,html[data-netbox-color-mode=light] .alert-purple .alert-link{color:#36205d}}@media print{html .alert-pink,html[data-netbox-color-mode=dark] .alert-pink,html[data-netbox-color-mode=light] .alert-pink{color:#801f4f;background-color:#f7d6e6;border-color:#f3c2da}html .alert-pink .alert-link,html[data-netbox-color-mode=dark] .alert-pink .alert-link,html[data-netbox-color-mode=light] .alert-pink .alert-link{color:#66193f}}@media print{html .alert-red,html[data-netbox-color-mode=dark] .alert-red,html[data-netbox-color-mode=light] .alert-red{color:#842029;background-color:#f8d7da;border-color:#f5c2c7}html .alert-red .alert-link,html[data-netbox-color-mode=dark] .alert-red .alert-link,html[data-netbox-color-mode=light] .alert-red .alert-link{color:#6a1a21}}@media print{html .alert-orange,html[data-netbox-color-mode=dark] .alert-orange,html[data-netbox-color-mode=light] .alert-orange{color:#984c0c;background-color:#ffe5d0;border-color:#fed8b9}html .alert-orange .alert-link,html[data-netbox-color-mode=dark] .alert-orange .alert-link,html[data-netbox-color-mode=light] .alert-orange .alert-link{color:#7a3d0a}}@media print{html .alert-yellow,html[data-netbox-color-mode=dark] .alert-yellow,html[data-netbox-color-mode=light] .alert-yellow{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}html .alert-yellow .alert-link,html[data-netbox-color-mode=dark] .alert-yellow .alert-link,html[data-netbox-color-mode=light] .alert-yellow .alert-link{color:#523e02}}@media print{html .alert-green,html[data-netbox-color-mode=dark] .alert-green,html[data-netbox-color-mode=light] .alert-green{color:#0f5132;background-color:#d1e7dd;border-color:#badbcc}html .alert-green .alert-link,html[data-netbox-color-mode=dark] .alert-green .alert-link,html[data-netbox-color-mode=light] .alert-green .alert-link{color:#0c4128}}@media print{html .alert-teal,html[data-netbox-color-mode=dark] .alert-teal,html[data-netbox-color-mode=light] .alert-teal{color:#13795b;background-color:#d2f4ea;border-color:#bcefe0}html .alert-teal .alert-link,html[data-netbox-color-mode=dark] .alert-teal .alert-link,html[data-netbox-color-mode=light] .alert-teal .alert-link{color:#0f6149}}@media print{html .alert-cyan,html[data-netbox-color-mode=dark] .alert-cyan,html[data-netbox-color-mode=light] .alert-cyan{color:#055160;background-color:#cff4fc;border-color:#b6effb}html .alert-cyan .alert-link,html[data-netbox-color-mode=dark] .alert-cyan .alert-link,html[data-netbox-color-mode=light] .alert-cyan .alert-link{color:#04414d}}@media print{html .alert-gray,html[data-netbox-color-mode=dark] .alert-gray,html[data-netbox-color-mode=light] .alert-gray{color:#686d71;background-color:#eff0f2;border-color:#e6e9eb}html .alert-gray .alert-link,html[data-netbox-color-mode=dark] .alert-gray .alert-link,html[data-netbox-color-mode=light] .alert-gray .alert-link{color:#53575a}}@media print{html .alert-black,html[data-netbox-color-mode=dark] .alert-black,html[data-netbox-color-mode=light] .alert-black{color:#000;background-color:#ccc;border-color:#b3b3b3}html .alert-black .alert-link,html[data-netbox-color-mode=dark] .alert-black .alert-link,html[data-netbox-color-mode=light] .alert-black .alert-link{color:#000}}@media print{html .alert-white,html[data-netbox-color-mode=dark] .alert-white,html[data-netbox-color-mode=light] .alert-white{color:#666;background-color:#fff;border-color:#fff}html .alert-white .alert-link,html[data-netbox-color-mode=dark] .alert-white .alert-link,html[data-netbox-color-mode=light] .alert-white .alert-link{color:#525252}}@media print{@keyframes progress-bar-stripes{0%{background-position-x:1rem}}}@media print{html .progress,html[data-netbox-color-mode=dark] .progress,html[data-netbox-color-mode=light] .progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.375rem}}@media print{html .progress-bar,html[data-netbox-color-mode=dark] .progress-bar,html[data-netbox-color-mode=light] .progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#0d6efd;transition:width .6s ease}}@media print and (prefers-reduced-motion: reduce){html .progress-bar,html[data-netbox-color-mode=dark] .progress-bar,html[data-netbox-color-mode=light] .progress-bar{transition:none}}@media print{html .progress-bar-striped,html[data-netbox-color-mode=dark] .progress-bar-striped,html[data-netbox-color-mode=light] .progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}}@media print{html .progress-bar-animated,html[data-netbox-color-mode=dark] .progress-bar-animated,html[data-netbox-color-mode=light] .progress-bar-animated{animation:1s linear infinite progress-bar-stripes}}@media print and (prefers-reduced-motion: reduce){html .progress-bar-animated,html[data-netbox-color-mode=dark] .progress-bar-animated,html[data-netbox-color-mode=light] .progress-bar-animated{animation:none}}@media print{html .list-group,html[data-netbox-color-mode=dark] .list-group,html[data-netbox-color-mode=light] .list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.375rem}}@media print{html .list-group-numbered,html[data-netbox-color-mode=dark] .list-group-numbered,html[data-netbox-color-mode=light] .list-group-numbered{list-style-type:none;counter-reset:section}html .list-group-numbered>li:before,html[data-netbox-color-mode=dark] .list-group-numbered>li:before,html[data-netbox-color-mode=light] .list-group-numbered>li:before{content:counters(section,".") ". ";counter-increment:section}}@media print{html .list-group-item-action,html[data-netbox-color-mode=dark] .list-group-item-action,html[data-netbox-color-mode=light] .list-group-item-action{width:100%;color:#495057;text-align:inherit}html .list-group-item-action:hover,html .list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}html .list-group-item-action:active,html[data-netbox-color-mode=dark] .list-group-item-action:active,html[data-netbox-color-mode=light] .list-group-item-action:active{color:#212529;background-color:#e9ecef}}@media print{html .list-group-item,html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=light] .list-group-item{position:relative;display:block;padding:.5rem 1rem;color:#495057;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}html .list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}html .list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}html .list-group-item.disabled,html .list-group-item:disabled,html[data-netbox-color-mode=dark] .list-group-item.disabled,html[data-netbox-color-mode=dark] .list-group-item:disabled,html[data-netbox-color-mode=light] .list-group-item.disabled,html[data-netbox-color-mode=light] .list-group-item:disabled{color:#adb5bd;pointer-events:none;background-color:#fff}html .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item.active{z-index:2;color:#fff;background-color:#0d6efd;border-color:#0d6efd}html .list-group-item+html .list-group-item,html .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html .list-group-item+html[data-netbox-color-mode=light] .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=light] .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=light] .list-group-item{border-top-width:0}html .list-group-item+html .list-group-item.active,html .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=dark] .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=dark] .list-group-item.active,html[data-netbox-color-mode=light] .list-group-item+html[data-netbox-color-mode=light] .list-group-item.active{margin-top:-1px;border-top-width:1px}}@media print{html .list-group-horizontal,html[data-netbox-color-mode=dark] .list-group-horizontal,html[data-netbox-color-mode=light] .list-group-horizontal{flex-direction:row}html .list-group-horizontal>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item.active{margin-top:0}html .list-group-horizontal>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 576px){html .list-group-horizontal-sm,html[data-netbox-color-mode=dark] .list-group-horizontal-sm,html[data-netbox-color-mode=light] .list-group-horizontal-sm{flex-direction:row}html .list-group-horizontal-sm>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-sm>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-sm>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item.active{margin-top:0}html .list-group-horizontal-sm>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-sm>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-sm>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 768px){html .list-group-horizontal-md,html[data-netbox-color-mode=dark] .list-group-horizontal-md,html[data-netbox-color-mode=light] .list-group-horizontal-md{flex-direction:row}html .list-group-horizontal-md>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-md>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-md>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item.active{margin-top:0}html .list-group-horizontal-md>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-md>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-md>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 992px){html .list-group-horizontal-lg,html[data-netbox-color-mode=dark] .list-group-horizontal-lg,html[data-netbox-color-mode=light] .list-group-horizontal-lg{flex-direction:row}html .list-group-horizontal-lg>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-lg>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-lg>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item.active{margin-top:0}html .list-group-horizontal-lg>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-lg>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-lg>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 1200px){html .list-group-horizontal-xl,html[data-netbox-color-mode=dark] .list-group-horizontal-xl,html[data-netbox-color-mode=light] .list-group-horizontal-xl{flex-direction:row}html .list-group-horizontal-xl>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-xl>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-xl>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item.active{margin-top:0}html .list-group-horizontal-xl>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-xl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print and (min-width: 1400px){html .list-group-horizontal-xxl,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl,html[data-netbox-color-mode=light] .list-group-horizontal-xxl{flex-direction:row}html .list-group-horizontal-xxl>.list-group-item:first-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:first-child,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.375rem;border-top-right-radius:0}html .list-group-horizontal-xxl>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.375rem;border-bottom-left-radius:0}html .list-group-horizontal-xxl>.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item.active{margin-top:0}html .list-group-horizontal-xxl>.list-group-item+.list-group-item,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}html .list-group-horizontal-xxl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=dark] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active,html[data-netbox-color-mode=light] .list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media print{html .list-group-flush,html[data-netbox-color-mode=dark] .list-group-flush,html[data-netbox-color-mode=light] .list-group-flush{border-radius:0}html .list-group-flush>.list-group-item,html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item,html[data-netbox-color-mode=light] .list-group-flush>.list-group-item{border-width:0 0 1px}html .list-group-flush>.list-group-item:last-child,html[data-netbox-color-mode=dark] .list-group-flush>.list-group-item:last-child,html[data-netbox-color-mode=light] .list-group-flush>.list-group-item:last-child{border-bottom-width:0}}@media print{html .list-group-item-primary,html[data-netbox-color-mode=dark] .list-group-item-primary,html[data-netbox-color-mode=light] .list-group-item-primary{color:#1f496e;background-color:#d6e4f1}html .list-group-item-primary.list-group-item-action:hover,html .list-group-item-primary.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action:focus{color:#1f496e;background-color:#c1cdd9}html .list-group-item-primary.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-primary.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1f496e;border-color:#1f496e}}@media print{html .list-group-item-secondary,html[data-netbox-color-mode=dark] .list-group-item-secondary,html[data-netbox-color-mode=light] .list-group-item-secondary{color:#41464b;background-color:#e2e3e5}html .list-group-item-secondary.list-group-item-action:hover,html .list-group-item-secondary.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action:focus{color:#41464b;background-color:#cbccce}html .list-group-item-secondary.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-secondary.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}}@media print{html .list-group-item-success,html[data-netbox-color-mode=dark] .list-group-item-success,html[data-netbox-color-mode=light] .list-group-item-success{color:#0f5132;background-color:#d1e7dd}html .list-group-item-success.list-group-item-action:hover,html .list-group-item-success.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html .list-group-item-success.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-success.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .list-group-item-info,html[data-netbox-color-mode=dark] .list-group-item-info,html[data-netbox-color-mode=light] .list-group-item-info{color:#225660;background-color:#ddf7fc}html .list-group-item-info.list-group-item-action:hover,html .list-group-item-info.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action:focus{color:#225660;background-color:#c7dee3}html .list-group-item-info.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-info.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#225660;border-color:#225660}}@media print{html .list-group-item-warning,html[data-netbox-color-mode=dark] .list-group-item-warning,html[data-netbox-color-mode=light] .list-group-item-warning{color:#664d03;background-color:#fff3cd}html .list-group-item-warning.list-group-item-action:hover,html .list-group-item-warning.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html .list-group-item-warning.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-warning.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .list-group-item-danger,html[data-netbox-color-mode=dark] .list-group-item-danger,html[data-netbox-color-mode=light] .list-group-item-danger{color:#842029;background-color:#f8d7da}html .list-group-item-danger.list-group-item-action:hover,html .list-group-item-danger.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html .list-group-item-danger.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-danger.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .list-group-item-light,html[data-netbox-color-mode=dark] .list-group-item-light,html[data-netbox-color-mode=light] .list-group-item-light{color:#5d5e60;background-color:#fbfbfc}html .list-group-item-light.list-group-item-action:hover,html .list-group-item-light.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action:focus{color:#5d5e60;background-color:#e2e2e3}html .list-group-item-light.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-light.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#5d5e60;border-color:#5d5e60}}@media print{html .list-group-item-dark,html[data-netbox-color-mode=dark] .list-group-item-dark,html[data-netbox-color-mode=light] .list-group-item-dark{color:#1f2326;background-color:#d6d8d9}html .list-group-item-dark.list-group-item-action:hover,html .list-group-item-dark.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action:focus{color:#1f2326;background-color:#c1c2c3}html .list-group-item-dark.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-dark.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1f2326;border-color:#1f2326}}@media print{html .list-group-item-blue,html[data-netbox-color-mode=dark] .list-group-item-blue,html[data-netbox-color-mode=light] .list-group-item-blue{color:#084298;background-color:#cfe2ff}html .list-group-item-blue.list-group-item-action:hover,html .list-group-item-blue.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action:focus{color:#084298;background-color:#bacbe6}html .list-group-item-blue.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-blue.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-blue.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}}@media print{html .list-group-item-indigo,html[data-netbox-color-mode=dark] .list-group-item-indigo,html[data-netbox-color-mode=light] .list-group-item-indigo{color:#3d0a91;background-color:#e0cffc}html .list-group-item-indigo.list-group-item-action:hover,html .list-group-item-indigo.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action:focus{color:#3d0a91;background-color:#cabae3}html .list-group-item-indigo.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-indigo.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-indigo.list-group-item-action.active{color:#fff;background-color:#3d0a91;border-color:#3d0a91}}@media print{html .list-group-item-purple,html[data-netbox-color-mode=dark] .list-group-item-purple,html[data-netbox-color-mode=light] .list-group-item-purple{color:#432874;background-color:#e2d9f3}html .list-group-item-purple.list-group-item-action:hover,html .list-group-item-purple.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action:focus{color:#432874;background-color:#cbc3db}html .list-group-item-purple.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-purple.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-purple.list-group-item-action.active{color:#fff;background-color:#432874;border-color:#432874}}@media print{html .list-group-item-pink,html[data-netbox-color-mode=dark] .list-group-item-pink,html[data-netbox-color-mode=light] .list-group-item-pink{color:#801f4f;background-color:#f7d6e6}html .list-group-item-pink.list-group-item-action:hover,html .list-group-item-pink.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action:focus{color:#801f4f;background-color:#dec1cf}html .list-group-item-pink.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-pink.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-pink.list-group-item-action.active{color:#fff;background-color:#801f4f;border-color:#801f4f}}@media print{html .list-group-item-red,html[data-netbox-color-mode=dark] .list-group-item-red,html[data-netbox-color-mode=light] .list-group-item-red{color:#842029;background-color:#f8d7da}html .list-group-item-red.list-group-item-action:hover,html .list-group-item-red.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action:focus{color:#842029;background-color:#dfc2c4}html .list-group-item-red.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-red.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-red.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}}@media print{html .list-group-item-orange,html[data-netbox-color-mode=dark] .list-group-item-orange,html[data-netbox-color-mode=light] .list-group-item-orange{color:#984c0c;background-color:#ffe5d0}html .list-group-item-orange.list-group-item-action:hover,html .list-group-item-orange.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-orange.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-orange.list-group-item-action:focus{color:#984c0c;background-color:#e6cebb}html .list-group-item-orange.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-orange.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-orange.list-group-item-action.active{color:#fff;background-color:#984c0c;border-color:#984c0c}}@media print{html .list-group-item-yellow,html[data-netbox-color-mode=dark] .list-group-item-yellow,html[data-netbox-color-mode=light] .list-group-item-yellow{color:#664d03;background-color:#fff3cd}html .list-group-item-yellow.list-group-item-action:hover,html .list-group-item-yellow.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action:focus{color:#664d03;background-color:#e6dbb9}html .list-group-item-yellow.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-yellow.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-yellow.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}}@media print{html .list-group-item-green,html[data-netbox-color-mode=dark] .list-group-item-green,html[data-netbox-color-mode=light] .list-group-item-green{color:#0f5132;background-color:#d1e7dd}html .list-group-item-green.list-group-item-action:hover,html .list-group-item-green.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action:focus{color:#0f5132;background-color:#bcd0c7}html .list-group-item-green.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-green.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-green.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}}@media print{html .list-group-item-teal,html[data-netbox-color-mode=dark] .list-group-item-teal,html[data-netbox-color-mode=light] .list-group-item-teal{color:#13795b;background-color:#d2f4ea}html .list-group-item-teal.list-group-item-action:hover,html .list-group-item-teal.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-teal.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-teal.list-group-item-action:focus{color:#13795b;background-color:#bddcd3}html .list-group-item-teal.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-teal.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-teal.list-group-item-action.active{color:#fff;background-color:#13795b;border-color:#13795b}}@media print{html .list-group-item-cyan,html[data-netbox-color-mode=dark] .list-group-item-cyan,html[data-netbox-color-mode=light] .list-group-item-cyan{color:#055160;background-color:#cff4fc}html .list-group-item-cyan.list-group-item-action:hover,html .list-group-item-cyan.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action:focus{color:#055160;background-color:#badce3}html .list-group-item-cyan.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-cyan.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-cyan.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}}@media print{html .list-group-item-gray,html[data-netbox-color-mode=dark] .list-group-item-gray,html[data-netbox-color-mode=light] .list-group-item-gray{color:#686d71;background-color:#eff0f2}html .list-group-item-gray.list-group-item-action:hover,html .list-group-item-gray.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action:focus{color:#686d71;background-color:#d7d8da}html .list-group-item-gray.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-gray.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-gray.list-group-item-action.active{color:#fff;background-color:#686d71;border-color:#686d71}}@media print{html .list-group-item-black,html[data-netbox-color-mode=dark] .list-group-item-black,html[data-netbox-color-mode=light] .list-group-item-black{color:#000;background-color:#ccc}html .list-group-item-black.list-group-item-action:hover,html .list-group-item-black.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-black.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-black.list-group-item-action:focus{color:#000;background-color:#b8b8b8}html .list-group-item-black.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-black.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-black.list-group-item-action.active{color:#fff;background-color:#000;border-color:#000}}@media print{html .list-group-item-white,html[data-netbox-color-mode=dark] .list-group-item-white,html[data-netbox-color-mode=light] .list-group-item-white{color:#666;background-color:#fff}html .list-group-item-white.list-group-item-action:hover,html .list-group-item-white.list-group-item-action:focus,html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action:hover,html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action:focus,html[data-netbox-color-mode=light] .list-group-item-white.list-group-item-action:hover,html[data-netbox-color-mode=light] .list-group-item-white.list-group-item-action:focus{color:#666;background-color:#e6e6e6}html .list-group-item-white.list-group-item-action.active,html[data-netbox-color-mode=dark] .list-group-item-white.list-group-item-action.active,html[data-netbox-color-mode=light] .list-group-item-white.list-group-item-action.active{color:#fff;background-color:#666;border-color:#666}}@media print{html .btn-close,html[data-netbox-color-mode=dark] .btn-close,html[data-netbox-color-mode=light] .btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}html .btn-close:hover,html[data-netbox-color-mode=dark] .btn-close:hover,html[data-netbox-color-mode=light] .btn-close:hover{color:#000;text-decoration:none;opacity:.75}html .btn-close:focus,html[data-netbox-color-mode=dark] .btn-close:focus,html[data-netbox-color-mode=light] .btn-close:focus{outline:0;box-shadow:0 0 0 .25rem #0d6efd40;opacity:1}html .btn-close:disabled,html .btn-close.disabled,html[data-netbox-color-mode=dark] .btn-close:disabled,html[data-netbox-color-mode=dark] .btn-close.disabled,html[data-netbox-color-mode=light] .btn-close:disabled,html[data-netbox-color-mode=light] .btn-close.disabled{pointer-events:none;user-select:none;opacity:.25}}@media print{html .btn-close-white,html[data-netbox-color-mode=dark] .btn-close-white,html[data-netbox-color-mode=light] .btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}}@media print{html .toast,html[data-netbox-color-mode=dark] .toast,html[data-netbox-color-mode=light] .toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:#ffffffd9;background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem #00000026;border-radius:.375rem}html .toast:not(.showing):not(.show),html[data-netbox-color-mode=dark] .toast:not(.showing):not(.show),html[data-netbox-color-mode=light] .toast:not(.showing):not(.show){opacity:0}html .toast.hide,html[data-netbox-color-mode=dark] .toast.hide,html[data-netbox-color-mode=light] .toast.hide{display:none}}@media print{html .toast-container,html[data-netbox-color-mode=dark] .toast-container,html[data-netbox-color-mode=light] .toast-container{width:max-content;max-width:100%;pointer-events:none}html .toast-container>:not(:last-child),html[data-netbox-color-mode=dark] .toast-container>:not(:last-child),html[data-netbox-color-mode=light] .toast-container>:not(:last-child){margin-bottom:.75rem}}@media print{html .toast-header,html[data-netbox-color-mode=dark] .toast-header,html[data-netbox-color-mode=light] .toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:#6c757d;background-color:#ffffffd9;background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(0.375rem - 1px);border-top-right-radius:calc(0.375rem - 1px)}html .toast-header .btn-close,html[data-netbox-color-mode=dark] .toast-header .btn-close,html[data-netbox-color-mode=light] .toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}}@media print{html .toast-body,html[data-netbox-color-mode=dark] .toast-body,html[data-netbox-color-mode=light] .toast-body{padding:.75rem;word-wrap:break-word}}@media print{html .modal,html[data-netbox-color-mode=dark] .modal,html[data-netbox-color-mode=light] .modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}}@media print{html .modal-dialog,html[data-netbox-color-mode=dark] .modal-dialog,html[data-netbox-color-mode=light] .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade html .modal-dialog,.modal.fade html[data-netbox-color-mode=dark] .modal-dialog,.modal.fade html[data-netbox-color-mode=light] .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}}@media print and (prefers-reduced-motion: reduce){.modal.fade html .modal-dialog,.modal.fade html[data-netbox-color-mode=dark] .modal-dialog,.modal.fade html[data-netbox-color-mode=light] .modal-dialog{transition:none}}@media print{.modal.show html .modal-dialog,.modal.show html[data-netbox-color-mode=dark] .modal-dialog,.modal.show html[data-netbox-color-mode=light] .modal-dialog{transform:none}}@media print{.modal.modal-static html .modal-dialog,.modal.modal-static html[data-netbox-color-mode=dark] .modal-dialog,.modal.modal-static html[data-netbox-color-mode=light] .modal-dialog{transform:scale(1.02)}}@media print{html .modal-dialog-scrollable,html[data-netbox-color-mode=dark] .modal-dialog-scrollable,html[data-netbox-color-mode=light] .modal-dialog-scrollable{height:calc(100% - 1rem)}html .modal-dialog-scrollable .modal-content,html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-content,html[data-netbox-color-mode=light] .modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}html .modal-dialog-scrollable .modal-body,html[data-netbox-color-mode=dark] .modal-dialog-scrollable .modal-body,html[data-netbox-color-mode=light] .modal-dialog-scrollable .modal-body{overflow-y:auto}}@media print{html .modal-dialog-centered,html[data-netbox-color-mode=dark] .modal-dialog-centered,html[data-netbox-color-mode=light] .modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}}@media print{html .modal-content,html[data-netbox-color-mode=dark] .modal-content,html[data-netbox-color-mode=light] .modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem;outline:0}}@media print{html .modal-backdrop,html[data-netbox-color-mode=dark] .modal-backdrop,html[data-netbox-color-mode=light] .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}html .modal-backdrop.fade,html[data-netbox-color-mode=dark] .modal-backdrop.fade,html[data-netbox-color-mode=light] .modal-backdrop.fade{opacity:0}html .modal-backdrop.show,html[data-netbox-color-mode=dark] .modal-backdrop.show,html[data-netbox-color-mode=light] .modal-backdrop.show{opacity:.5}}@media print{html .modal-header,html[data-netbox-color-mode=dark] .modal-header,html[data-netbox-color-mode=light] .modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}html .modal-header .btn-close,html[data-netbox-color-mode=dark] .modal-header .btn-close,html[data-netbox-color-mode=light] .modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}}@media print{html .modal-title,html[data-netbox-color-mode=dark] .modal-title,html[data-netbox-color-mode=light] .modal-title{margin-bottom:0;line-height:1.5}}@media print{html .modal-body,html[data-netbox-color-mode=dark] .modal-body,html[data-netbox-color-mode=light] .modal-body{position:relative;flex:1 1 auto;padding:1rem}}@media print{html .modal-footer,html[data-netbox-color-mode=dark] .modal-footer,html[data-netbox-color-mode=light] .modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(0.75rem - 1px);border-bottom-left-radius:calc(0.75rem - 1px)}html .modal-footer>*,html[data-netbox-color-mode=dark] .modal-footer>*,html[data-netbox-color-mode=light] .modal-footer>*{margin:.25rem}}@media print and (min-width: 576px){html .modal-dialog,html[data-netbox-color-mode=dark] .modal-dialog,html[data-netbox-color-mode=light] .modal-dialog{max-width:500px;margin:1.75rem auto}html .modal-dialog-scrollable,html[data-netbox-color-mode=dark] .modal-dialog-scrollable,html[data-netbox-color-mode=light] .modal-dialog-scrollable{height:calc(100% - 3.5rem)}html .modal-dialog-centered,html[data-netbox-color-mode=dark] .modal-dialog-centered,html[data-netbox-color-mode=light] .modal-dialog-centered{min-height:calc(100% - 3.5rem)}html .modal-sm,html[data-netbox-color-mode=dark] .modal-sm,html[data-netbox-color-mode=light] .modal-sm{max-width:300px}}@media print and (min-width: 992px){html .modal-lg,html .modal-xl,html[data-netbox-color-mode=dark] .modal-lg,html[data-netbox-color-mode=dark] .modal-xl,html[data-netbox-color-mode=light] .modal-lg,html[data-netbox-color-mode=light] .modal-xl{max-width:800px}}@media print and (min-width: 1200px){html .modal-xl,html[data-netbox-color-mode=dark] .modal-xl,html[data-netbox-color-mode=light] .modal-xl{max-width:1140px}}@media print{html .modal-fullscreen,html[data-netbox-color-mode=dark] .modal-fullscreen,html[data-netbox-color-mode=light] .modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen .modal-header{border-radius:0}html .modal-fullscreen .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen .modal-body{overflow-y:auto}html .modal-fullscreen .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen .modal-footer{border-radius:0}}@media print and (max-width: 575.98px){html .modal-fullscreen-sm-down,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-sm-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-sm-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-header{border-radius:0}html .modal-fullscreen-sm-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-body{overflow-y:auto}html .modal-fullscreen-sm-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-sm-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media print and (max-width: 767.98px){html .modal-fullscreen-md-down,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down,html[data-netbox-color-mode=light] .modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-md-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-md-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-header{border-radius:0}html .modal-fullscreen-md-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-body{overflow-y:auto}html .modal-fullscreen-md-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-md-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-md-down .modal-footer{border-radius:0}}@media print and (max-width: 991.98px){html .modal-fullscreen-lg-down,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-lg-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-lg-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-header{border-radius:0}html .modal-fullscreen-lg-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-body{overflow-y:auto}html .modal-fullscreen-lg-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-lg-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media print and (max-width: 1199.98px){html .modal-fullscreen-xl-down,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-xl-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-xl-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-header{border-radius:0}html .modal-fullscreen-xl-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-body{overflow-y:auto}html .modal-fullscreen-xl-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-xl-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media print and (max-width: 1399.98px){html .modal-fullscreen-xxl-down,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}html .modal-fullscreen-xxl-down .modal-content,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-content,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}html .modal-fullscreen-xxl-down .modal-header,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-header,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-header{border-radius:0}html .modal-fullscreen-xxl-down .modal-body,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-body,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-body{overflow-y:auto}html .modal-fullscreen-xxl-down .modal-footer,html[data-netbox-color-mode=dark] .modal-fullscreen-xxl-down .modal-footer,html[data-netbox-color-mode=light] .modal-fullscreen-xxl-down .modal-footer{border-radius:0}}@media print{html .tooltip,html[data-netbox-color-mode=dark] .tooltip,html[data-netbox-color-mode=light] .tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}html .tooltip.show,html[data-netbox-color-mode=dark] .tooltip.show,html[data-netbox-color-mode=light] .tooltip.show{opacity:.9}html .tooltip .tooltip-arrow,html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow,html[data-netbox-color-mode=light] .tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}html .tooltip .tooltip-arrow:before,html[data-netbox-color-mode=dark] .tooltip .tooltip-arrow:before,html[data-netbox-color-mode=light] .tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}}@media print{html .bs-tooltip-top,html .bs-tooltip-auto[data-popper-placement^=top],html[data-netbox-color-mode=dark] .bs-tooltip-top,html[data-netbox-color-mode=light] .bs-tooltip-top{padding:.4rem 0}html .bs-tooltip-top .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-top .tooltip-arrow{bottom:0}html .bs-tooltip-top .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-top .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}}@media print{html .bs-tooltip-end,html .bs-tooltip-auto[data-popper-placement^=right],html[data-netbox-color-mode=dark] .bs-tooltip-end,html[data-netbox-color-mode=light] .bs-tooltip-end{padding:0 .4rem}html .bs-tooltip-end .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}html .bs-tooltip-end .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-end .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}}@media print{html .bs-tooltip-bottom,html .bs-tooltip-auto[data-popper-placement^=bottom],html[data-netbox-color-mode=dark] .bs-tooltip-bottom,html[data-netbox-color-mode=light] .bs-tooltip-bottom{padding:.4rem 0}html .bs-tooltip-bottom .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-bottom .tooltip-arrow{top:0}html .bs-tooltip-bottom .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-bottom .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}}@media print{html .bs-tooltip-start,html .bs-tooltip-auto[data-popper-placement^=left],html[data-netbox-color-mode=dark] .bs-tooltip-start,html[data-netbox-color-mode=light] .bs-tooltip-start{padding:0 .4rem}html .bs-tooltip-start .tooltip-arrow,html .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow,html[data-netbox-color-mode=light] .bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}html .bs-tooltip-start .tooltip-arrow:before,html .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,html[data-netbox-color-mode=dark] .bs-tooltip-start .tooltip-arrow:before,html[data-netbox-color-mode=light] .bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}}@media print{html .tooltip-inner,html[data-netbox-color-mode=dark] .tooltip-inner,html[data-netbox-color-mode=light] .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.375rem}}@media print{html .popover,html[data-netbox-color-mode=dark] .popover,html[data-netbox-color-mode=light] .popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.75rem}html .popover .popover-arrow,html[data-netbox-color-mode=dark] .popover .popover-arrow,html[data-netbox-color-mode=light] .popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}html .popover .popover-arrow:before,html .popover .popover-arrow:after,html[data-netbox-color-mode=dark] .popover .popover-arrow:before,html[data-netbox-color-mode=dark] .popover .popover-arrow:after,html[data-netbox-color-mode=light] .popover .popover-arrow:before,html[data-netbox-color-mode=light] .popover .popover-arrow:after{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}}@media print{html .bs-popover-top>.popover-arrow,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow{bottom:calc(-0.5rem - 1px)}html .bs-popover-top>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}html .bs-popover-top>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-top>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-top>.popover-arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}}@media print{html .bs-popover-end>.popover-arrow,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow{left:calc(-0.5rem - 1px);width:.5rem;height:1rem}html .bs-popover-end>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}html .bs-popover-end>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-end>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-end>.popover-arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}}@media print{html .bs-popover-bottom>.popover-arrow,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow{top:calc(-0.5rem - 1px)}html .bs-popover-bottom>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}html .bs-popover-bottom>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-bottom>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-bottom>.popover-arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}html .bs-popover-bottom .popover-header:before,html .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,html[data-netbox-color-mode=dark] .bs-popover-bottom .popover-header:before,html[data-netbox-color-mode=light] .bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}}@media print{html .bs-popover-start>.popover-arrow,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow{right:calc(-0.5rem - 1px);width:.5rem;height:1rem}html .bs-popover-start>.popover-arrow:before,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:before,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}html .bs-popover-start>.popover-arrow:after,html .bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,html[data-netbox-color-mode=dark] .bs-popover-start>.popover-arrow:after,html[data-netbox-color-mode=light] .bs-popover-start>.popover-arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}}@media print{html .popover-header,html[data-netbox-color-mode=dark] .popover-header,html[data-netbox-color-mode=light] .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid rgba(0,0,0,.2);border-top-left-radius:calc(0.75rem - 1px);border-top-right-radius:calc(0.75rem - 1px)}html .popover-header:empty,html[data-netbox-color-mode=dark] .popover-header:empty,html[data-netbox-color-mode=light] .popover-header:empty{display:none}}@media print{html .popover-body,html[data-netbox-color-mode=dark] .popover-body,html[data-netbox-color-mode=light] .popover-body{padding:1rem;color:#212529}}@media print{html .carousel,html[data-netbox-color-mode=dark] .carousel,html[data-netbox-color-mode=light] .carousel{position:relative}}@media print{html .carousel.pointer-event,html[data-netbox-color-mode=dark] .carousel.pointer-event,html[data-netbox-color-mode=light] .carousel.pointer-event{touch-action:pan-y}}@media print{html .carousel-inner,html[data-netbox-color-mode=dark] .carousel-inner,html[data-netbox-color-mode=light] .carousel-inner{position:relative;width:100%;overflow:hidden}html .carousel-inner:after,html[data-netbox-color-mode=dark] .carousel-inner:after,html[data-netbox-color-mode=light] .carousel-inner:after{display:block;clear:both;content:""}}@media print{html .carousel-item,html[data-netbox-color-mode=dark] .carousel-item,html[data-netbox-color-mode=light] .carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .carousel-item,html[data-netbox-color-mode=dark] .carousel-item,html[data-netbox-color-mode=light] .carousel-item{transition:none}}@media print{html .carousel-item.active,html .carousel-item-next,html .carousel-item-prev,html[data-netbox-color-mode=dark] .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-item-next,html[data-netbox-color-mode=dark] .carousel-item-prev,html[data-netbox-color-mode=light] .carousel-item.active,html[data-netbox-color-mode=light] .carousel-item-next,html[data-netbox-color-mode=light] .carousel-item-prev{display:block}}@media print{html .carousel-item-next:not(.carousel-item-start),html .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=dark] .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-item-next:not(.carousel-item-start),html[data-netbox-color-mode=light] .active.carousel-item-end{transform:translate(100%)}}@media print{html .carousel-item-prev:not(.carousel-item-end),html .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=dark] .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-item-prev:not(.carousel-item-end),html[data-netbox-color-mode=light] .active.carousel-item-start{transform:translate(-100%)}}@media print{html .carousel-fade .carousel-item,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item,html[data-netbox-color-mode=light] .carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}html .carousel-fade .carousel-item.active,html .carousel-fade .carousel-item-next.carousel-item-start,html .carousel-fade .carousel-item-prev.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .carousel-item-prev.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .carousel-item.active,html[data-netbox-color-mode=light] .carousel-fade .carousel-item-next.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}html .carousel-fade .active.carousel-item-start,html .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}}@media print and (prefers-reduced-motion: reduce){html .carousel-fade .active.carousel-item-start,html .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=dark] .carousel-fade .active.carousel-item-end,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-start,html[data-netbox-color-mode=light] .carousel-fade .active.carousel-item-end{transition:none}}@media print{html .carousel-control-prev,html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}}@media print and (prefers-reduced-motion: reduce){html .carousel-control-prev,html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-next{transition:none}}@media print{html .carousel-control-prev:hover,html .carousel-control-prev:focus,html .carousel-control-next:hover,html .carousel-control-next:focus,html[data-netbox-color-mode=dark] .carousel-control-prev:hover,html[data-netbox-color-mode=dark] .carousel-control-prev:focus,html[data-netbox-color-mode=dark] .carousel-control-next:hover,html[data-netbox-color-mode=dark] .carousel-control-next:focus,html[data-netbox-color-mode=light] .carousel-control-prev:hover,html[data-netbox-color-mode=light] .carousel-control-prev:focus,html[data-netbox-color-mode=light] .carousel-control-next:hover,html[data-netbox-color-mode=light] .carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}}@media print{html .carousel-control-prev,html[data-netbox-color-mode=dark] .carousel-control-prev,html[data-netbox-color-mode=light] .carousel-control-prev{left:0}}@media print{html .carousel-control-next,html[data-netbox-color-mode=dark] .carousel-control-next,html[data-netbox-color-mode=light] .carousel-control-next{right:0}}@media print{html .carousel-control-prev-icon,html .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}}@media print{html .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}}@media print{html .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}}@media print{html .carousel-indicators,html[data-netbox-color-mode=dark] .carousel-indicators,html[data-netbox-color-mode=light] .carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}html .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}}@media print and (prefers-reduced-motion: reduce){html .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-indicators [data-bs-target]{transition:none}}@media print{html .carousel-indicators .active,html[data-netbox-color-mode=dark] .carousel-indicators .active,html[data-netbox-color-mode=light] .carousel-indicators .active{opacity:1}}@media print{html .carousel-caption,html[data-netbox-color-mode=dark] .carousel-caption,html[data-netbox-color-mode=light] .carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}}@media print{html .carousel-dark .carousel-control-prev-icon,html .carousel-dark .carousel-control-next-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=dark] .carousel-dark .carousel-control-next-icon,html[data-netbox-color-mode=light] .carousel-dark .carousel-control-prev-icon,html[data-netbox-color-mode=light] .carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}html .carousel-dark .carousel-indicators [data-bs-target],html[data-netbox-color-mode=dark] .carousel-dark .carousel-indicators [data-bs-target],html[data-netbox-color-mode=light] .carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}html .carousel-dark .carousel-caption,html[data-netbox-color-mode=dark] .carousel-dark .carousel-caption,html[data-netbox-color-mode=light] .carousel-dark .carousel-caption{color:#000}}@media print{@keyframes spinner-border{to{transform:rotate(360deg)}}}@media print{html .spinner-border,html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=light] .spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}}@media print{html .spinner-border-sm,html[data-netbox-color-mode=dark] .spinner-border-sm,html[data-netbox-color-mode=light] .spinner-border-sm{width:1rem;height:1rem;border-width:.2em}}@media print{@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}}@media print{html .spinner-grow,html[data-netbox-color-mode=dark] .spinner-grow,html[data-netbox-color-mode=light] .spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}}@media print{html .spinner-grow-sm,html[data-netbox-color-mode=dark] .spinner-grow-sm,html[data-netbox-color-mode=light] .spinner-grow-sm{width:1rem;height:1rem}}@media print and (prefers-reduced-motion: reduce){html .spinner-border,html .spinner-grow,html[data-netbox-color-mode=dark] .spinner-border,html[data-netbox-color-mode=dark] .spinner-grow,html[data-netbox-color-mode=light] .spinner-border,html[data-netbox-color-mode=light] .spinner-grow{animation-duration:1.5s}}@media print{html .clearfix:after,html[data-netbox-color-mode=dark] .clearfix:after,html[data-netbox-color-mode=light] .clearfix:after{display:block;clear:both;content:""}}@media print{html .link-primary,html[data-netbox-color-mode=dark] .link-primary,html[data-netbox-color-mode=light] .link-primary{color:#337ab7}html .link-primary:hover,html .link-primary:focus,html[data-netbox-color-mode=dark] .link-primary:hover,html[data-netbox-color-mode=dark] .link-primary:focus,html[data-netbox-color-mode=light] .link-primary:hover,html[data-netbox-color-mode=light] .link-primary:focus{color:#296292}}@media print{html .link-secondary,html[data-netbox-color-mode=dark] .link-secondary,html[data-netbox-color-mode=light] .link-secondary{color:#6c757d}html .link-secondary:hover,html .link-secondary:focus,html[data-netbox-color-mode=dark] .link-secondary:hover,html[data-netbox-color-mode=dark] .link-secondary:focus,html[data-netbox-color-mode=light] .link-secondary:hover,html[data-netbox-color-mode=light] .link-secondary:focus{color:#565e64}}@media print{html .link-success,html[data-netbox-color-mode=dark] .link-success,html[data-netbox-color-mode=light] .link-success{color:#198754}html .link-success:hover,html .link-success:focus,html[data-netbox-color-mode=dark] .link-success:hover,html[data-netbox-color-mode=dark] .link-success:focus,html[data-netbox-color-mode=light] .link-success:hover,html[data-netbox-color-mode=light] .link-success:focus{color:#146c43}}@media print{html .link-info,html[data-netbox-color-mode=dark] .link-info,html[data-netbox-color-mode=light] .link-info{color:#54d6f0}html .link-info:hover,html .link-info:focus,html[data-netbox-color-mode=dark] .link-info:hover,html[data-netbox-color-mode=dark] .link-info:focus,html[data-netbox-color-mode=light] .link-info:hover,html[data-netbox-color-mode=light] .link-info:focus{color:#76def3}}@media print{html .link-warning,html[data-netbox-color-mode=dark] .link-warning,html[data-netbox-color-mode=light] .link-warning{color:#ffc107}html .link-warning:hover,html .link-warning:focus,html[data-netbox-color-mode=dark] .link-warning:hover,html[data-netbox-color-mode=dark] .link-warning:focus,html[data-netbox-color-mode=light] .link-warning:hover,html[data-netbox-color-mode=light] .link-warning:focus{color:#ffcd39}}@media print{html .link-danger,html[data-netbox-color-mode=dark] .link-danger,html[data-netbox-color-mode=light] .link-danger{color:#dc3545}html .link-danger:hover,html .link-danger:focus,html[data-netbox-color-mode=dark] .link-danger:hover,html[data-netbox-color-mode=dark] .link-danger:focus,html[data-netbox-color-mode=light] .link-danger:hover,html[data-netbox-color-mode=light] .link-danger:focus{color:#b02a37}}@media print{html .link-light,html[data-netbox-color-mode=dark] .link-light,html[data-netbox-color-mode=light] .link-light{color:#e9ecef}html .link-light:hover,html .link-light:focus,html[data-netbox-color-mode=dark] .link-light:hover,html[data-netbox-color-mode=dark] .link-light:focus,html[data-netbox-color-mode=light] .link-light:hover,html[data-netbox-color-mode=light] .link-light:focus{color:#edf0f2}}@media print{html .link-dark,html[data-netbox-color-mode=dark] .link-dark,html[data-netbox-color-mode=light] .link-dark{color:#343a40}html .link-dark:hover,html .link-dark:focus,html[data-netbox-color-mode=dark] .link-dark:hover,html[data-netbox-color-mode=dark] .link-dark:focus,html[data-netbox-color-mode=light] .link-dark:hover,html[data-netbox-color-mode=light] .link-dark:focus{color:#2a2e33}}@media print{html .link-blue,html[data-netbox-color-mode=dark] .link-blue,html[data-netbox-color-mode=light] .link-blue{color:#0d6efd}html .link-blue:hover,html .link-blue:focus,html[data-netbox-color-mode=dark] .link-blue:hover,html[data-netbox-color-mode=dark] .link-blue:focus,html[data-netbox-color-mode=light] .link-blue:hover,html[data-netbox-color-mode=light] .link-blue:focus{color:#0a58ca}}@media print{html .link-indigo,html[data-netbox-color-mode=dark] .link-indigo,html[data-netbox-color-mode=light] .link-indigo{color:#6610f2}html .link-indigo:hover,html .link-indigo:focus,html[data-netbox-color-mode=dark] .link-indigo:hover,html[data-netbox-color-mode=dark] .link-indigo:focus,html[data-netbox-color-mode=light] .link-indigo:hover,html[data-netbox-color-mode=light] .link-indigo:focus{color:#520dc2}}@media print{html .link-purple,html[data-netbox-color-mode=dark] .link-purple,html[data-netbox-color-mode=light] .link-purple{color:#6f42c1}html .link-purple:hover,html .link-purple:focus,html[data-netbox-color-mode=dark] .link-purple:hover,html[data-netbox-color-mode=dark] .link-purple:focus,html[data-netbox-color-mode=light] .link-purple:hover,html[data-netbox-color-mode=light] .link-purple:focus{color:#59359a}}@media print{html .link-pink,html[data-netbox-color-mode=dark] .link-pink,html[data-netbox-color-mode=light] .link-pink{color:#d63384}html .link-pink:hover,html .link-pink:focus,html[data-netbox-color-mode=dark] .link-pink:hover,html[data-netbox-color-mode=dark] .link-pink:focus,html[data-netbox-color-mode=light] .link-pink:hover,html[data-netbox-color-mode=light] .link-pink:focus{color:#ab296a}}@media print{html .link-red,html[data-netbox-color-mode=dark] .link-red,html[data-netbox-color-mode=light] .link-red{color:#dc3545}html .link-red:hover,html .link-red:focus,html[data-netbox-color-mode=dark] .link-red:hover,html[data-netbox-color-mode=dark] .link-red:focus,html[data-netbox-color-mode=light] .link-red:hover,html[data-netbox-color-mode=light] .link-red:focus{color:#b02a37}}@media print{html .link-orange,html[data-netbox-color-mode=dark] .link-orange,html[data-netbox-color-mode=light] .link-orange{color:#fd7e14}html .link-orange:hover,html .link-orange:focus,html[data-netbox-color-mode=dark] .link-orange:hover,html[data-netbox-color-mode=dark] .link-orange:focus,html[data-netbox-color-mode=light] .link-orange:hover,html[data-netbox-color-mode=light] .link-orange:focus{color:#fd9843}}@media print{html .link-yellow,html[data-netbox-color-mode=dark] .link-yellow,html[data-netbox-color-mode=light] .link-yellow{color:#ffc107}html .link-yellow:hover,html .link-yellow:focus,html[data-netbox-color-mode=dark] .link-yellow:hover,html[data-netbox-color-mode=dark] .link-yellow:focus,html[data-netbox-color-mode=light] .link-yellow:hover,html[data-netbox-color-mode=light] .link-yellow:focus{color:#ffcd39}}@media print{html .link-green,html[data-netbox-color-mode=dark] .link-green,html[data-netbox-color-mode=light] .link-green{color:#198754}html .link-green:hover,html .link-green:focus,html[data-netbox-color-mode=dark] .link-green:hover,html[data-netbox-color-mode=dark] .link-green:focus,html[data-netbox-color-mode=light] .link-green:hover,html[data-netbox-color-mode=light] .link-green:focus{color:#146c43}}@media print{html .link-teal,html[data-netbox-color-mode=dark] .link-teal,html[data-netbox-color-mode=light] .link-teal{color:#20c997}html .link-teal:hover,html .link-teal:focus,html[data-netbox-color-mode=dark] .link-teal:hover,html[data-netbox-color-mode=dark] .link-teal:focus,html[data-netbox-color-mode=light] .link-teal:hover,html[data-netbox-color-mode=light] .link-teal:focus{color:#4dd4ac}}@media print{html .link-cyan,html[data-netbox-color-mode=dark] .link-cyan,html[data-netbox-color-mode=light] .link-cyan{color:#0dcaf0}html .link-cyan:hover,html .link-cyan:focus,html[data-netbox-color-mode=dark] .link-cyan:hover,html[data-netbox-color-mode=dark] .link-cyan:focus,html[data-netbox-color-mode=light] .link-cyan:hover,html[data-netbox-color-mode=light] .link-cyan:focus{color:#3dd5f3}}@media print{html .link-gray,html[data-netbox-color-mode=dark] .link-gray,html[data-netbox-color-mode=light] .link-gray{color:#adb5bd}html .link-gray:hover,html .link-gray:focus,html[data-netbox-color-mode=dark] .link-gray:hover,html[data-netbox-color-mode=dark] .link-gray:focus,html[data-netbox-color-mode=light] .link-gray:hover,html[data-netbox-color-mode=light] .link-gray:focus{color:#bdc4ca}}@media print{html .link-black,html[data-netbox-color-mode=dark] .link-black,html[data-netbox-color-mode=light] .link-black{color:#000}html .link-black:hover,html .link-black:focus,html[data-netbox-color-mode=dark] .link-black:hover,html[data-netbox-color-mode=dark] .link-black:focus,html[data-netbox-color-mode=light] .link-black:hover,html[data-netbox-color-mode=light] .link-black:focus{color:#000}}@media print{html .link-white,html[data-netbox-color-mode=dark] .link-white,html[data-netbox-color-mode=light] .link-white{color:#fff}html .link-white:hover,html .link-white:focus,html[data-netbox-color-mode=dark] .link-white:hover,html[data-netbox-color-mode=dark] .link-white:focus,html[data-netbox-color-mode=light] .link-white:hover,html[data-netbox-color-mode=light] .link-white:focus{color:#fff}}@media print{html .ratio,html[data-netbox-color-mode=dark] .ratio,html[data-netbox-color-mode=light] .ratio{position:relative;width:100%}html .ratio:before,html[data-netbox-color-mode=dark] .ratio:before,html[data-netbox-color-mode=light] .ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}html .ratio>*,html[data-netbox-color-mode=dark] .ratio>*,html[data-netbox-color-mode=light] .ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}}@media print{html .ratio-1x1,html[data-netbox-color-mode=dark] .ratio-1x1,html[data-netbox-color-mode=light] .ratio-1x1{--bs-aspect-ratio: 100%}}@media print{html .ratio-4x3,html[data-netbox-color-mode=dark] .ratio-4x3,html[data-netbox-color-mode=light] .ratio-4x3{--bs-aspect-ratio: 75%}}@media print{html .ratio-16x9,html[data-netbox-color-mode=dark] .ratio-16x9,html[data-netbox-color-mode=light] .ratio-16x9{--bs-aspect-ratio: 56.25%}}@media print{html .ratio-21x9,html[data-netbox-color-mode=dark] .ratio-21x9,html[data-netbox-color-mode=light] .ratio-21x9{--bs-aspect-ratio: 42.8571428571%}}@media print{html .fixed-top,html[data-netbox-color-mode=dark] .fixed-top,html[data-netbox-color-mode=light] .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}}@media print{html .fixed-bottom,html[data-netbox-color-mode=dark] .fixed-bottom,html[data-netbox-color-mode=light] .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}}@media print{html .sticky-top,html[data-netbox-color-mode=dark] .sticky-top,html[data-netbox-color-mode=light] .sticky-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 576px){html .sticky-sm-top,html[data-netbox-color-mode=dark] .sticky-sm-top,html[data-netbox-color-mode=light] .sticky-sm-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 768px){html .sticky-md-top,html[data-netbox-color-mode=dark] .sticky-md-top,html[data-netbox-color-mode=light] .sticky-md-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 992px){html .sticky-lg-top,html[data-netbox-color-mode=dark] .sticky-lg-top,html[data-netbox-color-mode=light] .sticky-lg-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 1200px){html .sticky-xl-top,html[data-netbox-color-mode=dark] .sticky-xl-top,html[data-netbox-color-mode=light] .sticky-xl-top{position:sticky;top:0;z-index:1020}}@media print and (min-width: 1400px){html .sticky-xxl-top,html[data-netbox-color-mode=dark] .sticky-xxl-top,html[data-netbox-color-mode=light] .sticky-xxl-top{position:sticky;top:0;z-index:1020}}@media print{html .visually-hidden,html .visually-hidden-focusable:not(:focus):not(:focus-within),html[data-netbox-color-mode=dark] .visually-hidden,html[data-netbox-color-mode=dark] .visually-hidden-focusable:not(:focus):not(:focus-within),html[data-netbox-color-mode=light] .visually-hidden,html[data-netbox-color-mode=light] .visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}}@media print{html .stretched-link:after,html[data-netbox-color-mode=dark] .stretched-link:after,html[data-netbox-color-mode=light] .stretched-link:after{position:absolute;inset:0;z-index:1;content:""}}@media print{html .text-truncate,html[data-netbox-color-mode=dark] .text-truncate,html[data-netbox-color-mode=light] .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media print{html .align-baseline,html[data-netbox-color-mode=dark] .align-baseline,html[data-netbox-color-mode=light] .align-baseline{vertical-align:baseline!important}}@media print{html .align-top,html[data-netbox-color-mode=dark] .align-top,html[data-netbox-color-mode=light] .align-top{vertical-align:top!important}}@media print{html .align-middle,html[data-netbox-color-mode=dark] .align-middle,html[data-netbox-color-mode=light] .align-middle{vertical-align:middle!important}}@media print{html .align-bottom,html[data-netbox-color-mode=dark] .align-bottom,html[data-netbox-color-mode=light] .align-bottom{vertical-align:bottom!important}}@media print{html .align-text-bottom,html[data-netbox-color-mode=dark] .align-text-bottom,html[data-netbox-color-mode=light] .align-text-bottom{vertical-align:text-bottom!important}}@media print{html .align-text-top,html[data-netbox-color-mode=dark] .align-text-top,html[data-netbox-color-mode=light] .align-text-top{vertical-align:text-top!important}}@media print{html .float-start,html[data-netbox-color-mode=dark] .float-start,html[data-netbox-color-mode=light] .float-start{float:left!important}}@media print{html .float-end,html[data-netbox-color-mode=dark] .float-end,html[data-netbox-color-mode=light] .float-end{float:right!important}}@media print{html .float-none,html[data-netbox-color-mode=dark] .float-none,html[data-netbox-color-mode=light] .float-none{float:none!important}}@media print{html .overflow-auto,html[data-netbox-color-mode=dark] .overflow-auto,html[data-netbox-color-mode=light] .overflow-auto{overflow:auto!important}}@media print{html .overflow-hidden,html[data-netbox-color-mode=dark] .overflow-hidden,html[data-netbox-color-mode=light] .overflow-hidden{overflow:hidden!important}}@media print{html .overflow-visible,html[data-netbox-color-mode=dark] .overflow-visible,html[data-netbox-color-mode=light] .overflow-visible{overflow:visible!important}}@media print{html .overflow-scroll,html[data-netbox-color-mode=dark] .overflow-scroll,html[data-netbox-color-mode=light] .overflow-scroll{overflow:scroll!important}}@media print{html .d-inline,html[data-netbox-color-mode=dark] .d-inline,html[data-netbox-color-mode=light] .d-inline{display:inline!important}}@media print{html .d-inline-block,html[data-netbox-color-mode=dark] .d-inline-block,html[data-netbox-color-mode=light] .d-inline-block{display:inline-block!important}}@media print{html .d-block,html[data-netbox-color-mode=dark] .d-block,html[data-netbox-color-mode=light] .d-block{display:block!important}}@media print{html .d-grid,html[data-netbox-color-mode=dark] .d-grid,html[data-netbox-color-mode=light] .d-grid{display:grid!important}}@media print{html .d-table,html[data-netbox-color-mode=dark] .d-table,html[data-netbox-color-mode=light] .d-table{display:table!important}}@media print{html .d-table-row,html[data-netbox-color-mode=dark] .d-table-row,html[data-netbox-color-mode=light] .d-table-row{display:table-row!important}}@media print{html .d-table-cell,html[data-netbox-color-mode=dark] .d-table-cell,html[data-netbox-color-mode=light] .d-table-cell{display:table-cell!important}}@media print{html .d-flex,html[data-netbox-color-mode=dark] .d-flex,html[data-netbox-color-mode=light] .d-flex{display:flex!important}}@media print{html .d-inline-flex,html[data-netbox-color-mode=dark] .d-inline-flex,html[data-netbox-color-mode=light] .d-inline-flex{display:inline-flex!important}}@media print{html .d-none,html[data-netbox-color-mode=dark] .d-none,html[data-netbox-color-mode=light] .d-none{display:none!important}}@media print{html .shadow,html[data-netbox-color-mode=dark] .shadow,html[data-netbox-color-mode=light] .shadow{box-shadow:0 .5rem 1rem #00000026!important}}@media print{html .shadow-sm,html[data-netbox-color-mode=dark] .shadow-sm,html[data-netbox-color-mode=light] .shadow-sm{box-shadow:0 .125rem .25rem #00000013!important}}@media print{html .shadow-lg,html[data-netbox-color-mode=dark] .shadow-lg,html[data-netbox-color-mode=light] .shadow-lg{box-shadow:0 1rem 3rem #0000002d!important}}@media print{html .shadow-none,html[data-netbox-color-mode=dark] .shadow-none,html[data-netbox-color-mode=light] .shadow-none{box-shadow:none!important}}@media print{html .position-static,html[data-netbox-color-mode=dark] .position-static,html[data-netbox-color-mode=light] .position-static{position:static!important}}@media print{html .position-relative,html[data-netbox-color-mode=dark] .position-relative,html[data-netbox-color-mode=light] .position-relative{position:relative!important}}@media print{html .position-absolute,html[data-netbox-color-mode=dark] .position-absolute,html[data-netbox-color-mode=light] .position-absolute{position:absolute!important}}@media print{html .position-fixed,html[data-netbox-color-mode=dark] .position-fixed,html[data-netbox-color-mode=light] .position-fixed{position:fixed!important}}@media print{html .position-sticky,html[data-netbox-color-mode=dark] .position-sticky,html[data-netbox-color-mode=light] .position-sticky{position:sticky!important}}@media print{html .top-0,html[data-netbox-color-mode=dark] .top-0,html[data-netbox-color-mode=light] .top-0{top:0!important}}@media print{html .top-50,html[data-netbox-color-mode=dark] .top-50,html[data-netbox-color-mode=light] .top-50{top:50%!important}}@media print{html .top-100,html[data-netbox-color-mode=dark] .top-100,html[data-netbox-color-mode=light] .top-100{top:100%!important}}@media print{html .bottom-0,html[data-netbox-color-mode=dark] .bottom-0,html[data-netbox-color-mode=light] .bottom-0{bottom:0!important}}@media print{html .bottom-50,html[data-netbox-color-mode=dark] .bottom-50,html[data-netbox-color-mode=light] .bottom-50{bottom:50%!important}}@media print{html .bottom-100,html[data-netbox-color-mode=dark] .bottom-100,html[data-netbox-color-mode=light] .bottom-100{bottom:100%!important}}@media print{html .start-0,html[data-netbox-color-mode=dark] .start-0,html[data-netbox-color-mode=light] .start-0{left:0!important}}@media print{html .start-50,html[data-netbox-color-mode=dark] .start-50,html[data-netbox-color-mode=light] .start-50{left:50%!important}}@media print{html .start-100,html[data-netbox-color-mode=dark] .start-100,html[data-netbox-color-mode=light] .start-100{left:100%!important}}@media print{html .end-0,html[data-netbox-color-mode=dark] .end-0,html[data-netbox-color-mode=light] .end-0{right:0!important}}@media print{html .end-50,html[data-netbox-color-mode=dark] .end-50,html[data-netbox-color-mode=light] .end-50{right:50%!important}}@media print{html .end-100,html[data-netbox-color-mode=dark] .end-100,html[data-netbox-color-mode=light] .end-100{right:100%!important}}@media print{html .translate-middle,html[data-netbox-color-mode=dark] .translate-middle,html[data-netbox-color-mode=light] .translate-middle{transform:translate(-50%,-50%)!important}}@media print{html .translate-middle-x,html[data-netbox-color-mode=dark] .translate-middle-x,html[data-netbox-color-mode=light] .translate-middle-x{transform:translate(-50%)!important}}@media print{html .translate-middle-y,html[data-netbox-color-mode=dark] .translate-middle-y,html[data-netbox-color-mode=light] .translate-middle-y{transform:translateY(-50%)!important}}@media print{html .border,html[data-netbox-color-mode=dark] .border,html[data-netbox-color-mode=light] .border{border:1px solid #dee2e6!important}}@media print{html .border-0,html[data-netbox-color-mode=dark] .border-0,html[data-netbox-color-mode=light] .border-0{border:0!important}}@media print{html .border-top,html[data-netbox-color-mode=dark] .border-top,html[data-netbox-color-mode=light] .border-top{border-top:1px solid #dee2e6!important}}@media print{html .border-top-0,html[data-netbox-color-mode=dark] .border-top-0,html[data-netbox-color-mode=light] .border-top-0{border-top:0!important}}@media print{html .border-end,html[data-netbox-color-mode=dark] .border-end,html[data-netbox-color-mode=light] .border-end{border-right:1px solid #dee2e6!important}}@media print{html .border-end-0,html[data-netbox-color-mode=dark] .border-end-0,html[data-netbox-color-mode=light] .border-end-0{border-right:0!important}}@media print{html .border-bottom,html[data-netbox-color-mode=dark] .border-bottom,html[data-netbox-color-mode=light] .border-bottom{border-bottom:1px solid #dee2e6!important}}@media print{html .border-bottom-0,html[data-netbox-color-mode=dark] .border-bottom-0,html[data-netbox-color-mode=light] .border-bottom-0{border-bottom:0!important}}@media print{html .border-start,html[data-netbox-color-mode=dark] .border-start,html[data-netbox-color-mode=light] .border-start{border-left:1px solid #dee2e6!important}}@media print{html .border-start-0,html[data-netbox-color-mode=dark] .border-start-0,html[data-netbox-color-mode=light] .border-start-0{border-left:0!important}}@media print{html .border-primary,html[data-netbox-color-mode=dark] .border-primary,html[data-netbox-color-mode=light] .border-primary{border-color:#337ab7!important}}@media print{html .border-secondary,html[data-netbox-color-mode=dark] .border-secondary,html[data-netbox-color-mode=light] .border-secondary{border-color:#6c757d!important}}@media print{html .border-success,html[data-netbox-color-mode=dark] .border-success,html[data-netbox-color-mode=light] .border-success{border-color:#198754!important}}@media print{html .border-info,html[data-netbox-color-mode=dark] .border-info,html[data-netbox-color-mode=light] .border-info{border-color:#54d6f0!important}}@media print{html .border-warning,html[data-netbox-color-mode=dark] .border-warning,html[data-netbox-color-mode=light] .border-warning{border-color:#ffc107!important}}@media print{html .border-danger,html[data-netbox-color-mode=dark] .border-danger,html[data-netbox-color-mode=light] .border-danger{border-color:#dc3545!important}}@media print{html .border-light,html[data-netbox-color-mode=dark] .border-light,html[data-netbox-color-mode=light] .border-light{border-color:#e9ecef!important}}@media print{html .border-dark,html[data-netbox-color-mode=dark] .border-dark,html[data-netbox-color-mode=light] .border-dark{border-color:#343a40!important}}@media print{html .border-blue,html[data-netbox-color-mode=dark] .border-blue,html[data-netbox-color-mode=light] .border-blue{border-color:#0d6efd!important}}@media print{html .border-indigo,html[data-netbox-color-mode=dark] .border-indigo,html[data-netbox-color-mode=light] .border-indigo{border-color:#6610f2!important}}@media print{html .border-purple,html[data-netbox-color-mode=dark] .border-purple,html[data-netbox-color-mode=light] .border-purple{border-color:#6f42c1!important}}@media print{html .border-pink,html[data-netbox-color-mode=dark] .border-pink,html[data-netbox-color-mode=light] .border-pink{border-color:#d63384!important}}@media print{html .border-red,html[data-netbox-color-mode=dark] .border-red,html[data-netbox-color-mode=light] .border-red{border-color:#dc3545!important}}@media print{html .border-orange,html[data-netbox-color-mode=dark] .border-orange,html[data-netbox-color-mode=light] .border-orange{border-color:#fd7e14!important}}@media print{html .border-yellow,html[data-netbox-color-mode=dark] .border-yellow,html[data-netbox-color-mode=light] .border-yellow{border-color:#ffc107!important}}@media print{html .border-green,html[data-netbox-color-mode=dark] .border-green,html[data-netbox-color-mode=light] .border-green{border-color:#198754!important}}@media print{html .border-teal,html[data-netbox-color-mode=dark] .border-teal,html[data-netbox-color-mode=light] .border-teal{border-color:#20c997!important}}@media print{html .border-cyan,html[data-netbox-color-mode=dark] .border-cyan,html[data-netbox-color-mode=light] .border-cyan{border-color:#0dcaf0!important}}@media print{html .border-gray,html[data-netbox-color-mode=dark] .border-gray,html[data-netbox-color-mode=light] .border-gray{border-color:#adb5bd!important}}@media print{html .border-black,html[data-netbox-color-mode=dark] .border-black,html[data-netbox-color-mode=light] .border-black{border-color:#000!important}}@media print{html .border-white,html[data-netbox-color-mode=dark] .border-white,html[data-netbox-color-mode=light] .border-white{border-color:#fff!important}}@media print{html .border-1,html[data-netbox-color-mode=dark] .border-1,html[data-netbox-color-mode=light] .border-1{border-width:1px!important}}@media print{html .border-2,html[data-netbox-color-mode=dark] .border-2,html[data-netbox-color-mode=light] .border-2{border-width:2px!important}}@media print{html .border-3,html[data-netbox-color-mode=dark] .border-3,html[data-netbox-color-mode=light] .border-3{border-width:3px!important}}@media print{html .border-4,html[data-netbox-color-mode=dark] .border-4,html[data-netbox-color-mode=light] .border-4{border-width:4px!important}}@media print{html .border-5,html[data-netbox-color-mode=dark] .border-5,html[data-netbox-color-mode=light] .border-5{border-width:5px!important}}@media print{html .w-25,html[data-netbox-color-mode=dark] .w-25,html[data-netbox-color-mode=light] .w-25{width:25%!important}}@media print{html .w-50,html[data-netbox-color-mode=dark] .w-50,html[data-netbox-color-mode=light] .w-50{width:50%!important}}@media print{html .w-75,html[data-netbox-color-mode=dark] .w-75,html[data-netbox-color-mode=light] .w-75{width:75%!important}}@media print{html .w-100,html[data-netbox-color-mode=dark] .w-100,html[data-netbox-color-mode=light] .w-100{width:100%!important}}@media print{html .w-auto,html[data-netbox-color-mode=dark] .w-auto,html[data-netbox-color-mode=light] .w-auto{width:auto!important}}@media print{html .mw-100,html[data-netbox-color-mode=dark] .mw-100,html[data-netbox-color-mode=light] .mw-100{max-width:100%!important}}@media print{html .vw-100,html[data-netbox-color-mode=dark] .vw-100,html[data-netbox-color-mode=light] .vw-100{width:100vw!important}}@media print{html .min-vw-100,html[data-netbox-color-mode=dark] .min-vw-100,html[data-netbox-color-mode=light] .min-vw-100{min-width:100vw!important}}@media print{html .h-25,html[data-netbox-color-mode=dark] .h-25,html[data-netbox-color-mode=light] .h-25{height:25%!important}}@media print{html .h-50,html[data-netbox-color-mode=dark] .h-50,html[data-netbox-color-mode=light] .h-50{height:50%!important}}@media print{html .h-75,html[data-netbox-color-mode=dark] .h-75,html[data-netbox-color-mode=light] .h-75{height:75%!important}}@media print{html .h-100,html[data-netbox-color-mode=dark] .h-100,html[data-netbox-color-mode=light] .h-100{height:100%!important}}@media print{html .h-auto,html[data-netbox-color-mode=dark] .h-auto,html[data-netbox-color-mode=light] .h-auto{height:auto!important}}@media print{html .mh-100,html[data-netbox-color-mode=dark] .mh-100,html[data-netbox-color-mode=light] .mh-100{max-height:100%!important}}@media print{html .vh-100,html[data-netbox-color-mode=dark] .vh-100,html[data-netbox-color-mode=light] .vh-100{height:100vh!important}}@media print{html .min-vh-100,html[data-netbox-color-mode=dark] .min-vh-100,html[data-netbox-color-mode=light] .min-vh-100{min-height:100vh!important}}@media print{html .flex-fill,html[data-netbox-color-mode=dark] .flex-fill,html[data-netbox-color-mode=light] .flex-fill{flex:1 1 auto!important}}@media print{html .flex-row,html[data-netbox-color-mode=dark] .flex-row,html[data-netbox-color-mode=light] .flex-row{flex-direction:row!important}}@media print{html .flex-column,html[data-netbox-color-mode=dark] .flex-column,html[data-netbox-color-mode=light] .flex-column{flex-direction:column!important}}@media print{html .flex-row-reverse,html[data-netbox-color-mode=dark] .flex-row-reverse,html[data-netbox-color-mode=light] .flex-row-reverse{flex-direction:row-reverse!important}}@media print{html .flex-column-reverse,html[data-netbox-color-mode=dark] .flex-column-reverse,html[data-netbox-color-mode=light] .flex-column-reverse{flex-direction:column-reverse!important}}@media print{html .flex-grow-0,html[data-netbox-color-mode=dark] .flex-grow-0,html[data-netbox-color-mode=light] .flex-grow-0{flex-grow:0!important}}@media print{html .flex-grow-1,html[data-netbox-color-mode=dark] .flex-grow-1,html[data-netbox-color-mode=light] .flex-grow-1{flex-grow:1!important}}@media print{html .flex-shrink-0,html[data-netbox-color-mode=dark] .flex-shrink-0,html[data-netbox-color-mode=light] .flex-shrink-0{flex-shrink:0!important}}@media print{html .flex-shrink-1,html[data-netbox-color-mode=dark] .flex-shrink-1,html[data-netbox-color-mode=light] .flex-shrink-1{flex-shrink:1!important}}@media print{html .flex-wrap,html[data-netbox-color-mode=dark] .flex-wrap,html[data-netbox-color-mode=light] .flex-wrap{flex-wrap:wrap!important}}@media print{html .flex-nowrap,html[data-netbox-color-mode=dark] .flex-nowrap,html[data-netbox-color-mode=light] .flex-nowrap{flex-wrap:nowrap!important}}@media print{html .flex-wrap-reverse,html[data-netbox-color-mode=dark] .flex-wrap-reverse,html[data-netbox-color-mode=light] .flex-wrap-reverse{flex-wrap:wrap-reverse!important}}@media print{html .gap-0,html[data-netbox-color-mode=dark] .gap-0,html[data-netbox-color-mode=light] .gap-0{gap:0!important}}@media print{html .gap-1,html[data-netbox-color-mode=dark] .gap-1,html[data-netbox-color-mode=light] .gap-1{gap:.25rem!important}}@media print{html .gap-2,html[data-netbox-color-mode=dark] .gap-2,html[data-netbox-color-mode=light] .gap-2{gap:.5rem!important}}@media print{html .gap-3,html[data-netbox-color-mode=dark] .gap-3,html[data-netbox-color-mode=light] .gap-3{gap:1rem!important}}@media print{html .gap-4,html[data-netbox-color-mode=dark] .gap-4,html[data-netbox-color-mode=light] .gap-4{gap:1.5rem!important}}@media print{html .gap-5,html[data-netbox-color-mode=dark] .gap-5,html[data-netbox-color-mode=light] .gap-5{gap:3rem!important}}@media print{html .justify-content-start,html[data-netbox-color-mode=dark] .justify-content-start,html[data-netbox-color-mode=light] .justify-content-start{justify-content:flex-start!important}}@media print{html .justify-content-end,html[data-netbox-color-mode=dark] .justify-content-end,html[data-netbox-color-mode=light] .justify-content-end{justify-content:flex-end!important}}@media print{html .justify-content-center,html[data-netbox-color-mode=dark] .justify-content-center,html[data-netbox-color-mode=light] .justify-content-center{justify-content:center!important}}@media print{html .justify-content-between,html[data-netbox-color-mode=dark] .justify-content-between,html[data-netbox-color-mode=light] .justify-content-between{justify-content:space-between!important}}@media print{html .justify-content-around,html[data-netbox-color-mode=dark] .justify-content-around,html[data-netbox-color-mode=light] .justify-content-around{justify-content:space-around!important}}@media print{html .justify-content-evenly,html[data-netbox-color-mode=dark] .justify-content-evenly,html[data-netbox-color-mode=light] .justify-content-evenly{justify-content:space-evenly!important}}@media print{html .align-items-start,html[data-netbox-color-mode=dark] .align-items-start,html[data-netbox-color-mode=light] .align-items-start{align-items:flex-start!important}}@media print{html .align-items-end,html[data-netbox-color-mode=dark] .align-items-end,html[data-netbox-color-mode=light] .align-items-end{align-items:flex-end!important}}@media print{html .align-items-center,html[data-netbox-color-mode=dark] .align-items-center,html[data-netbox-color-mode=light] .align-items-center{align-items:center!important}}@media print{html .align-items-baseline,html[data-netbox-color-mode=dark] .align-items-baseline,html[data-netbox-color-mode=light] .align-items-baseline{align-items:baseline!important}}@media print{html .align-items-stretch,html[data-netbox-color-mode=dark] .align-items-stretch,html[data-netbox-color-mode=light] .align-items-stretch{align-items:stretch!important}}@media print{html .align-content-start,html[data-netbox-color-mode=dark] .align-content-start,html[data-netbox-color-mode=light] .align-content-start{align-content:flex-start!important}}@media print{html .align-content-end,html[data-netbox-color-mode=dark] .align-content-end,html[data-netbox-color-mode=light] .align-content-end{align-content:flex-end!important}}@media print{html .align-content-center,html[data-netbox-color-mode=dark] .align-content-center,html[data-netbox-color-mode=light] .align-content-center{align-content:center!important}}@media print{html .align-content-between,html[data-netbox-color-mode=dark] .align-content-between,html[data-netbox-color-mode=light] .align-content-between{align-content:space-between!important}}@media print{html .align-content-around,html[data-netbox-color-mode=dark] .align-content-around,html[data-netbox-color-mode=light] .align-content-around{align-content:space-around!important}}@media print{html .align-content-stretch,html[data-netbox-color-mode=dark] .align-content-stretch,html[data-netbox-color-mode=light] .align-content-stretch{align-content:stretch!important}}@media print{html .align-self-auto,html[data-netbox-color-mode=dark] .align-self-auto,html[data-netbox-color-mode=light] .align-self-auto{align-self:auto!important}}@media print{html .align-self-start,html[data-netbox-color-mode=dark] .align-self-start,html[data-netbox-color-mode=light] .align-self-start{align-self:flex-start!important}}@media print{html .align-self-end,html[data-netbox-color-mode=dark] .align-self-end,html[data-netbox-color-mode=light] .align-self-end{align-self:flex-end!important}}@media print{html .align-self-center,html[data-netbox-color-mode=dark] .align-self-center,html[data-netbox-color-mode=light] .align-self-center{align-self:center!important}}@media print{html .align-self-baseline,html[data-netbox-color-mode=dark] .align-self-baseline,html[data-netbox-color-mode=light] .align-self-baseline{align-self:baseline!important}}@media print{html .align-self-stretch,html[data-netbox-color-mode=dark] .align-self-stretch,html[data-netbox-color-mode=light] .align-self-stretch{align-self:stretch!important}}@media print{html .order-first,html[data-netbox-color-mode=dark] .order-first,html[data-netbox-color-mode=light] .order-first{order:-1!important}}@media print{html .order-0,html[data-netbox-color-mode=dark] .order-0,html[data-netbox-color-mode=light] .order-0{order:0!important}}@media print{html .order-1,html[data-netbox-color-mode=dark] .order-1,html[data-netbox-color-mode=light] .order-1{order:1!important}}@media print{html .order-2,html[data-netbox-color-mode=dark] .order-2,html[data-netbox-color-mode=light] .order-2{order:2!important}}@media print{html .order-3,html[data-netbox-color-mode=dark] .order-3,html[data-netbox-color-mode=light] .order-3{order:3!important}}@media print{html .order-4,html[data-netbox-color-mode=dark] .order-4,html[data-netbox-color-mode=light] .order-4{order:4!important}}@media print{html .order-5,html[data-netbox-color-mode=dark] .order-5,html[data-netbox-color-mode=light] .order-5{order:5!important}}@media print{html .order-last,html[data-netbox-color-mode=dark] .order-last,html[data-netbox-color-mode=light] .order-last{order:6!important}}@media print{html .m-0,html[data-netbox-color-mode=dark] .m-0,html[data-netbox-color-mode=light] .m-0{margin:0!important}}@media print{html .m-1,html[data-netbox-color-mode=dark] .m-1,html[data-netbox-color-mode=light] .m-1{margin:.25rem!important}}@media print{html .m-2,html[data-netbox-color-mode=dark] .m-2,html[data-netbox-color-mode=light] .m-2{margin:.5rem!important}}@media print{html .m-3,html[data-netbox-color-mode=dark] .m-3,html[data-netbox-color-mode=light] .m-3{margin:1rem!important}}@media print{html .m-4,html[data-netbox-color-mode=dark] .m-4,html[data-netbox-color-mode=light] .m-4{margin:1.5rem!important}}@media print{html .m-5,html[data-netbox-color-mode=dark] .m-5,html[data-netbox-color-mode=light] .m-5{margin:3rem!important}}@media print{html .m-auto,html[data-netbox-color-mode=dark] .m-auto,html[data-netbox-color-mode=light] .m-auto{margin:auto!important}}@media print{html .mx-0,html[data-netbox-color-mode=dark] .mx-0,html[data-netbox-color-mode=light] .mx-0{margin-right:0!important;margin-left:0!important}}@media print{html .mx-1,html[data-netbox-color-mode=dark] .mx-1,html[data-netbox-color-mode=light] .mx-1{margin-right:.25rem!important;margin-left:.25rem!important}}@media print{html .mx-2,html[data-netbox-color-mode=dark] .mx-2,html[data-netbox-color-mode=light] .mx-2{margin-right:.5rem!important;margin-left:.5rem!important}}@media print{html .mx-3,html[data-netbox-color-mode=dark] .mx-3,html[data-netbox-color-mode=light] .mx-3{margin-right:1rem!important;margin-left:1rem!important}}@media print{html .mx-4,html[data-netbox-color-mode=dark] .mx-4,html[data-netbox-color-mode=light] .mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}}@media print{html .mx-5,html[data-netbox-color-mode=dark] .mx-5,html[data-netbox-color-mode=light] .mx-5{margin-right:3rem!important;margin-left:3rem!important}}@media print{html .mx-auto,html[data-netbox-color-mode=dark] .mx-auto,html[data-netbox-color-mode=light] .mx-auto{margin-right:auto!important;margin-left:auto!important}}@media print{html .my-0,html[data-netbox-color-mode=dark] .my-0,html[data-netbox-color-mode=light] .my-0{margin-top:0!important;margin-bottom:0!important}}@media print{html .my-1,html[data-netbox-color-mode=dark] .my-1,html[data-netbox-color-mode=light] .my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}}@media print{html .my-2,html[data-netbox-color-mode=dark] .my-2,html[data-netbox-color-mode=light] .my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}}@media print{html .my-3,html[data-netbox-color-mode=dark] .my-3,html[data-netbox-color-mode=light] .my-3{margin-top:1rem!important;margin-bottom:1rem!important}}@media print{html .my-4,html[data-netbox-color-mode=dark] .my-4,html[data-netbox-color-mode=light] .my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}}@media print{html .my-5,html[data-netbox-color-mode=dark] .my-5,html[data-netbox-color-mode=light] .my-5{margin-top:3rem!important;margin-bottom:3rem!important}}@media print{html .my-auto,html[data-netbox-color-mode=dark] .my-auto,html[data-netbox-color-mode=light] .my-auto{margin-top:auto!important;margin-bottom:auto!important}}@media print{html .mt-0,html[data-netbox-color-mode=dark] .mt-0,html[data-netbox-color-mode=light] .mt-0{margin-top:0!important}}@media print{html .mt-1,html[data-netbox-color-mode=dark] .mt-1,html[data-netbox-color-mode=light] .mt-1{margin-top:.25rem!important}}@media print{html .mt-2,html[data-netbox-color-mode=dark] .mt-2,html[data-netbox-color-mode=light] .mt-2{margin-top:.5rem!important}}@media print{html .mt-3,html[data-netbox-color-mode=dark] .mt-3,html[data-netbox-color-mode=light] .mt-3{margin-top:1rem!important}}@media print{html .mt-4,html[data-netbox-color-mode=dark] .mt-4,html[data-netbox-color-mode=light] .mt-4{margin-top:1.5rem!important}}@media print{html .mt-5,html[data-netbox-color-mode=dark] .mt-5,html[data-netbox-color-mode=light] .mt-5{margin-top:3rem!important}}@media print{html .mt-auto,html[data-netbox-color-mode=dark] .mt-auto,html[data-netbox-color-mode=light] .mt-auto{margin-top:auto!important}}@media print{html .me-0,html[data-netbox-color-mode=dark] .me-0,html[data-netbox-color-mode=light] .me-0{margin-right:0!important}}@media print{html .me-1,html[data-netbox-color-mode=dark] .me-1,html[data-netbox-color-mode=light] .me-1{margin-right:.25rem!important}}@media print{html .me-2,html[data-netbox-color-mode=dark] .me-2,html[data-netbox-color-mode=light] .me-2{margin-right:.5rem!important}}@media print{html .me-3,html[data-netbox-color-mode=dark] .me-3,html[data-netbox-color-mode=light] .me-3{margin-right:1rem!important}}@media print{html .me-4,html[data-netbox-color-mode=dark] .me-4,html[data-netbox-color-mode=light] .me-4{margin-right:1.5rem!important}}@media print{html .me-5,html[data-netbox-color-mode=dark] .me-5,html[data-netbox-color-mode=light] .me-5{margin-right:3rem!important}}@media print{html .me-auto,html[data-netbox-color-mode=dark] .me-auto,html[data-netbox-color-mode=light] .me-auto{margin-right:auto!important}}@media print{html .mb-0,html[data-netbox-color-mode=dark] .mb-0,html[data-netbox-color-mode=light] .mb-0{margin-bottom:0!important}}@media print{html .mb-1,html[data-netbox-color-mode=dark] .mb-1,html[data-netbox-color-mode=light] .mb-1{margin-bottom:.25rem!important}}@media print{html .mb-2,html[data-netbox-color-mode=dark] .mb-2,html[data-netbox-color-mode=light] .mb-2{margin-bottom:.5rem!important}}@media print{html .mb-3,html[data-netbox-color-mode=dark] .mb-3,html[data-netbox-color-mode=light] .mb-3{margin-bottom:1rem!important}}@media print{html .mb-4,html[data-netbox-color-mode=dark] .mb-4,html[data-netbox-color-mode=light] .mb-4{margin-bottom:1.5rem!important}}@media print{html .mb-5,html[data-netbox-color-mode=dark] .mb-5,html[data-netbox-color-mode=light] .mb-5{margin-bottom:3rem!important}}@media print{html .mb-auto,html[data-netbox-color-mode=dark] .mb-auto,html[data-netbox-color-mode=light] .mb-auto{margin-bottom:auto!important}}@media print{html .ms-0,html[data-netbox-color-mode=dark] .ms-0,html[data-netbox-color-mode=light] .ms-0{margin-left:0!important}}@media print{html .ms-1,html[data-netbox-color-mode=dark] .ms-1,html[data-netbox-color-mode=light] .ms-1{margin-left:.25rem!important}}@media print{html .ms-2,html[data-netbox-color-mode=dark] .ms-2,html[data-netbox-color-mode=light] .ms-2{margin-left:.5rem!important}}@media print{html .ms-3,html[data-netbox-color-mode=dark] .ms-3,html[data-netbox-color-mode=light] .ms-3{margin-left:1rem!important}}@media print{html .ms-4,html[data-netbox-color-mode=dark] .ms-4,html[data-netbox-color-mode=light] .ms-4{margin-left:1.5rem!important}}@media print{html .ms-5,html[data-netbox-color-mode=dark] .ms-5,html[data-netbox-color-mode=light] .ms-5{margin-left:3rem!important}}@media print{html .ms-auto,html[data-netbox-color-mode=dark] .ms-auto,html[data-netbox-color-mode=light] .ms-auto{margin-left:auto!important}}@media print{html .p-0,html[data-netbox-color-mode=dark] .p-0,html[data-netbox-color-mode=light] .p-0{padding:0!important}}@media print{html .p-1,html[data-netbox-color-mode=dark] .p-1,html[data-netbox-color-mode=light] .p-1{padding:.25rem!important}}@media print{html .p-2,html[data-netbox-color-mode=dark] .p-2,html[data-netbox-color-mode=light] .p-2{padding:.5rem!important}}@media print{html .p-3,html[data-netbox-color-mode=dark] .p-3,html[data-netbox-color-mode=light] .p-3{padding:1rem!important}}@media print{html .p-4,html[data-netbox-color-mode=dark] .p-4,html[data-netbox-color-mode=light] .p-4{padding:1.5rem!important}}@media print{html .p-5,html[data-netbox-color-mode=dark] .p-5,html[data-netbox-color-mode=light] .p-5{padding:3rem!important}}@media print{html .px-0,html[data-netbox-color-mode=dark] .px-0,html[data-netbox-color-mode=light] .px-0{padding-right:0!important;padding-left:0!important}}@media print{html .px-1,html[data-netbox-color-mode=dark] .px-1,html[data-netbox-color-mode=light] .px-1{padding-right:.25rem!important;padding-left:.25rem!important}}@media print{html .px-2,html[data-netbox-color-mode=dark] .px-2,html[data-netbox-color-mode=light] .px-2{padding-right:.5rem!important;padding-left:.5rem!important}}@media print{html .px-3,html[data-netbox-color-mode=dark] .px-3,html[data-netbox-color-mode=light] .px-3{padding-right:1rem!important;padding-left:1rem!important}}@media print{html .px-4,html[data-netbox-color-mode=dark] .px-4,html[data-netbox-color-mode=light] .px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}}@media print{html .px-5,html[data-netbox-color-mode=dark] .px-5,html[data-netbox-color-mode=light] .px-5{padding-right:3rem!important;padding-left:3rem!important}}@media print{html .py-0,html[data-netbox-color-mode=dark] .py-0,html[data-netbox-color-mode=light] .py-0{padding-top:0!important;padding-bottom:0!important}}@media print{html .py-1,html[data-netbox-color-mode=dark] .py-1,html[data-netbox-color-mode=light] .py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}}@media print{html .py-2,html[data-netbox-color-mode=dark] .py-2,html[data-netbox-color-mode=light] .py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}}@media print{html .py-3,html[data-netbox-color-mode=dark] .py-3,html[data-netbox-color-mode=light] .py-3{padding-top:1rem!important;padding-bottom:1rem!important}}@media print{html .py-4,html[data-netbox-color-mode=dark] .py-4,html[data-netbox-color-mode=light] .py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}}@media print{html .py-5,html[data-netbox-color-mode=dark] .py-5,html[data-netbox-color-mode=light] .py-5{padding-top:3rem!important;padding-bottom:3rem!important}}@media print{html .pt-0,html[data-netbox-color-mode=dark] .pt-0,html[data-netbox-color-mode=light] .pt-0{padding-top:0!important}}@media print{html .pt-1,html[data-netbox-color-mode=dark] .pt-1,html[data-netbox-color-mode=light] .pt-1{padding-top:.25rem!important}}@media print{html .pt-2,html[data-netbox-color-mode=dark] .pt-2,html[data-netbox-color-mode=light] .pt-2{padding-top:.5rem!important}}@media print{html .pt-3,html[data-netbox-color-mode=dark] .pt-3,html[data-netbox-color-mode=light] .pt-3{padding-top:1rem!important}}@media print{html .pt-4,html[data-netbox-color-mode=dark] .pt-4,html[data-netbox-color-mode=light] .pt-4{padding-top:1.5rem!important}}@media print{html .pt-5,html[data-netbox-color-mode=dark] .pt-5,html[data-netbox-color-mode=light] .pt-5{padding-top:3rem!important}}@media print{html .pe-0,html[data-netbox-color-mode=dark] .pe-0,html[data-netbox-color-mode=light] .pe-0{padding-right:0!important}}@media print{html .pe-1,html[data-netbox-color-mode=dark] .pe-1,html[data-netbox-color-mode=light] .pe-1{padding-right:.25rem!important}}@media print{html .pe-2,html[data-netbox-color-mode=dark] .pe-2,html[data-netbox-color-mode=light] .pe-2{padding-right:.5rem!important}}@media print{html .pe-3,html[data-netbox-color-mode=dark] .pe-3,html[data-netbox-color-mode=light] .pe-3{padding-right:1rem!important}}@media print{html .pe-4,html[data-netbox-color-mode=dark] .pe-4,html[data-netbox-color-mode=light] .pe-4{padding-right:1.5rem!important}}@media print{html .pe-5,html[data-netbox-color-mode=dark] .pe-5,html[data-netbox-color-mode=light] .pe-5{padding-right:3rem!important}}@media print{html .pb-0,html[data-netbox-color-mode=dark] .pb-0,html[data-netbox-color-mode=light] .pb-0{padding-bottom:0!important}}@media print{html .pb-1,html[data-netbox-color-mode=dark] .pb-1,html[data-netbox-color-mode=light] .pb-1{padding-bottom:.25rem!important}}@media print{html .pb-2,html[data-netbox-color-mode=dark] .pb-2,html[data-netbox-color-mode=light] .pb-2{padding-bottom:.5rem!important}}@media print{html .pb-3,html[data-netbox-color-mode=dark] .pb-3,html[data-netbox-color-mode=light] .pb-3{padding-bottom:1rem!important}}@media print{html .pb-4,html[data-netbox-color-mode=dark] .pb-4,html[data-netbox-color-mode=light] .pb-4{padding-bottom:1.5rem!important}}@media print{html .pb-5,html[data-netbox-color-mode=dark] .pb-5,html[data-netbox-color-mode=light] .pb-5{padding-bottom:3rem!important}}@media print{html .ps-0,html[data-netbox-color-mode=dark] .ps-0,html[data-netbox-color-mode=light] .ps-0{padding-left:0!important}}@media print{html .ps-1,html[data-netbox-color-mode=dark] .ps-1,html[data-netbox-color-mode=light] .ps-1{padding-left:.25rem!important}}@media print{html .ps-2,html[data-netbox-color-mode=dark] .ps-2,html[data-netbox-color-mode=light] .ps-2{padding-left:.5rem!important}}@media print{html .ps-3,html[data-netbox-color-mode=dark] .ps-3,html[data-netbox-color-mode=light] .ps-3{padding-left:1rem!important}}@media print{html .ps-4,html[data-netbox-color-mode=dark] .ps-4,html[data-netbox-color-mode=light] .ps-4{padding-left:1.5rem!important}}@media print{html .ps-5,html[data-netbox-color-mode=dark] .ps-5,html[data-netbox-color-mode=light] .ps-5{padding-left:3rem!important}}@media print{html .font-monospace,html[data-netbox-color-mode=dark] .font-monospace,html[data-netbox-color-mode=light] .font-monospace{font-family:var(--bs-font-monospace)!important}}@media print{html .fs-1,html[data-netbox-color-mode=dark] .fs-1,html[data-netbox-color-mode=light] .fs-1{font-size:calc(1.375rem + 1.5vw)!important}}@media print{html .fs-2,html[data-netbox-color-mode=dark] .fs-2,html[data-netbox-color-mode=light] .fs-2{font-size:calc(1.325rem + 0.9vw)!important}}@media print{html .fs-3,html[data-netbox-color-mode=dark] .fs-3,html[data-netbox-color-mode=light] .fs-3{font-size:calc(1.3rem + 0.6vw)!important}}@media print{html .fs-4,html[data-netbox-color-mode=dark] .fs-4,html[data-netbox-color-mode=light] .fs-4{font-size:calc(1.275rem + 0.3vw)!important}}@media print{html .fs-5,html[data-netbox-color-mode=dark] .fs-5,html[data-netbox-color-mode=light] .fs-5{font-size:1.25rem!important}}@media print{html .fs-6,html[data-netbox-color-mode=dark] .fs-6,html[data-netbox-color-mode=light] .fs-6{font-size:1rem!important}}@media print{html .fst-italic,html[data-netbox-color-mode=dark] .fst-italic,html[data-netbox-color-mode=light] .fst-italic{font-style:italic!important}}@media print{html .fst-normal,html[data-netbox-color-mode=dark] .fst-normal,html[data-netbox-color-mode=light] .fst-normal{font-style:normal!important}}@media print{html .fw-light,html[data-netbox-color-mode=dark] .fw-light,html[data-netbox-color-mode=light] .fw-light{font-weight:300!important}}@media print{html .fw-lighter,html[data-netbox-color-mode=dark] .fw-lighter,html[data-netbox-color-mode=light] .fw-lighter{font-weight:200!important}}@media print{html .fw-normal,html[data-netbox-color-mode=dark] .fw-normal,html[data-netbox-color-mode=light] .fw-normal{font-weight:400!important}}@media print{html .fw-bold,html[data-netbox-color-mode=dark] .fw-bold,html[data-netbox-color-mode=light] .fw-bold{font-weight:700!important}}@media print{html .fw-bolder,html[data-netbox-color-mode=dark] .fw-bolder,html[data-netbox-color-mode=light] .fw-bolder{font-weight:800!important}}@media print{html .lh-1,html[data-netbox-color-mode=dark] .lh-1,html[data-netbox-color-mode=light] .lh-1{line-height:1!important}}@media print{html .lh-sm,html[data-netbox-color-mode=dark] .lh-sm,html[data-netbox-color-mode=light] .lh-sm{line-height:1.25!important}}@media print{html .lh-base,html[data-netbox-color-mode=dark] .lh-base,html[data-netbox-color-mode=light] .lh-base{line-height:1.5!important}}@media print{html .lh-lg,html[data-netbox-color-mode=dark] .lh-lg,html[data-netbox-color-mode=light] .lh-lg{line-height:1.75!important}}@media print{html .text-start,html[data-netbox-color-mode=dark] .text-start,html[data-netbox-color-mode=light] .text-start{text-align:left!important}}@media print{html .text-end,html[data-netbox-color-mode=dark] .text-end,html[data-netbox-color-mode=light] .text-end{text-align:right!important}}@media print{html .text-center,html[data-netbox-color-mode=dark] .text-center,html[data-netbox-color-mode=light] .text-center{text-align:center!important}}@media print{html .text-decoration-none,html[data-netbox-color-mode=dark] .text-decoration-none,html[data-netbox-color-mode=light] .text-decoration-none{text-decoration:none!important}}@media print{html .text-decoration-underline,html[data-netbox-color-mode=dark] .text-decoration-underline,html[data-netbox-color-mode=light] .text-decoration-underline{text-decoration:underline!important}}@media print{html .text-decoration-line-through,html[data-netbox-color-mode=dark] .text-decoration-line-through,html[data-netbox-color-mode=light] .text-decoration-line-through{text-decoration:line-through!important}}@media print{html .text-lowercase,html[data-netbox-color-mode=dark] .text-lowercase,html[data-netbox-color-mode=light] .text-lowercase{text-transform:lowercase!important}}@media print{html .text-uppercase,html[data-netbox-color-mode=dark] .text-uppercase,html[data-netbox-color-mode=light] .text-uppercase{text-transform:uppercase!important}}@media print{html .text-capitalize,html[data-netbox-color-mode=dark] .text-capitalize,html[data-netbox-color-mode=light] .text-capitalize{text-transform:capitalize!important}}@media print{html .text-wrap,html[data-netbox-color-mode=dark] .text-wrap,html[data-netbox-color-mode=light] .text-wrap{white-space:normal!important}}@media print{html .text-nowrap,html[data-netbox-color-mode=dark] .text-nowrap,html[data-netbox-color-mode=light] .text-nowrap{white-space:nowrap!important}}@media print{html .text-break,html[data-netbox-color-mode=dark] .text-break,html[data-netbox-color-mode=light] .text-break{word-wrap:break-word!important;word-break:break-word!important}}@media print{html .text-primary,html[data-netbox-color-mode=dark] .text-primary,html[data-netbox-color-mode=light] .text-primary{color:#337ab7!important}}@media print{html .text-secondary,html[data-netbox-color-mode=dark] .text-secondary,html[data-netbox-color-mode=light] .text-secondary{color:#6c757d!important}}@media print{html .text-success,html[data-netbox-color-mode=dark] .text-success,html[data-netbox-color-mode=light] .text-success{color:#198754!important}}@media print{html .text-info,html[data-netbox-color-mode=dark] .text-info,html[data-netbox-color-mode=light] .text-info{color:#54d6f0!important}}@media print{html .text-warning,html[data-netbox-color-mode=dark] .text-warning,html[data-netbox-color-mode=light] .text-warning{color:#ffc107!important}}@media print{html .text-danger,html[data-netbox-color-mode=dark] .text-danger,html[data-netbox-color-mode=light] .text-danger{color:#dc3545!important}}@media print{html .text-light,html[data-netbox-color-mode=dark] .text-light,html[data-netbox-color-mode=light] .text-light{color:#e9ecef!important}}@media print{html .text-dark,html[data-netbox-color-mode=dark] .text-dark,html[data-netbox-color-mode=light] .text-dark{color:#343a40!important}}@media print{html .text-blue,html[data-netbox-color-mode=dark] .text-blue,html[data-netbox-color-mode=light] .text-blue{color:#0d6efd!important}}@media print{html .text-indigo,html[data-netbox-color-mode=dark] .text-indigo,html[data-netbox-color-mode=light] .text-indigo{color:#6610f2!important}}@media print{html .text-purple,html[data-netbox-color-mode=dark] .text-purple,html[data-netbox-color-mode=light] .text-purple{color:#6f42c1!important}}@media print{html .text-pink,html[data-netbox-color-mode=dark] .text-pink,html[data-netbox-color-mode=light] .text-pink{color:#d63384!important}}@media print{html .text-red,html[data-netbox-color-mode=dark] .text-red,html[data-netbox-color-mode=light] .text-red{color:#dc3545!important}}@media print{html .text-orange,html[data-netbox-color-mode=dark] .text-orange,html[data-netbox-color-mode=light] .text-orange{color:#fd7e14!important}}@media print{html .text-yellow,html[data-netbox-color-mode=dark] .text-yellow,html[data-netbox-color-mode=light] .text-yellow{color:#ffc107!important}}@media print{html .text-green,html[data-netbox-color-mode=dark] .text-green,html[data-netbox-color-mode=light] .text-green{color:#198754!important}}@media print{html .text-teal,html[data-netbox-color-mode=dark] .text-teal,html[data-netbox-color-mode=light] .text-teal{color:#20c997!important}}@media print{html .text-cyan,html[data-netbox-color-mode=dark] .text-cyan,html[data-netbox-color-mode=light] .text-cyan{color:#0dcaf0!important}}@media print{html .text-gray,html[data-netbox-color-mode=dark] .text-gray,html[data-netbox-color-mode=light] .text-gray{color:#adb5bd!important}}@media print{html .text-black,html[data-netbox-color-mode=dark] .text-black,html[data-netbox-color-mode=light] .text-black{color:#000!important}}@media print{html .text-white,html[data-netbox-color-mode=dark] .text-white,html[data-netbox-color-mode=light] .text-white{color:#fff!important}}@media print{html .text-body,html[data-netbox-color-mode=dark] .text-body,html[data-netbox-color-mode=light] .text-body{color:#212529!important}}@media print{html .text-muted,html[data-netbox-color-mode=dark] .text-muted,html[data-netbox-color-mode=light] .text-muted{color:#6c757d!important}}@media print{html .text-black-50,html[data-netbox-color-mode=dark] .text-black-50,html[data-netbox-color-mode=light] .text-black-50{color:#00000080!important}}@media print{html .text-white-50,html[data-netbox-color-mode=dark] .text-white-50,html[data-netbox-color-mode=light] .text-white-50{color:#ffffff80!important}}@media print{html .text-reset,html[data-netbox-color-mode=dark] .text-reset,html[data-netbox-color-mode=light] .text-reset{color:inherit!important}}@media print{html .bg-primary,html[data-netbox-color-mode=dark] .bg-primary,html[data-netbox-color-mode=light] .bg-primary{background-color:#337ab7!important}}@media print{html .bg-secondary,html[data-netbox-color-mode=dark] .bg-secondary,html[data-netbox-color-mode=light] .bg-secondary{background-color:#6c757d!important}}@media print{html .bg-success,html[data-netbox-color-mode=dark] .bg-success,html[data-netbox-color-mode=light] .bg-success{background-color:#198754!important}}@media print{html .bg-info,html[data-netbox-color-mode=dark] .bg-info,html[data-netbox-color-mode=light] .bg-info{background-color:#54d6f0!important}}@media print{html .bg-warning,html[data-netbox-color-mode=dark] .bg-warning,html[data-netbox-color-mode=light] .bg-warning{background-color:#ffc107!important}}@media print{html .bg-danger,html[data-netbox-color-mode=dark] .bg-danger,html[data-netbox-color-mode=light] .bg-danger{background-color:#dc3545!important}}@media print{html .bg-light,html[data-netbox-color-mode=dark] .bg-light,html[data-netbox-color-mode=light] .bg-light{background-color:#e9ecef!important}}@media print{html .bg-dark,html[data-netbox-color-mode=dark] .bg-dark,html[data-netbox-color-mode=light] .bg-dark{background-color:#343a40!important}}@media print{html .bg-blue,html[data-netbox-color-mode=dark] .bg-blue,html[data-netbox-color-mode=light] .bg-blue{background-color:#0d6efd!important}}@media print{html .bg-indigo,html[data-netbox-color-mode=dark] .bg-indigo,html[data-netbox-color-mode=light] .bg-indigo{background-color:#6610f2!important}}@media print{html .bg-purple,html[data-netbox-color-mode=dark] .bg-purple,html[data-netbox-color-mode=light] .bg-purple{background-color:#6f42c1!important}}@media print{html .bg-pink,html[data-netbox-color-mode=dark] .bg-pink,html[data-netbox-color-mode=light] .bg-pink{background-color:#d63384!important}}@media print{html .bg-red,html[data-netbox-color-mode=dark] .bg-red,html[data-netbox-color-mode=light] .bg-red{background-color:#dc3545!important}}@media print{html .bg-orange,html[data-netbox-color-mode=dark] .bg-orange,html[data-netbox-color-mode=light] .bg-orange{background-color:#fd7e14!important}}@media print{html .bg-yellow,html[data-netbox-color-mode=dark] .bg-yellow,html[data-netbox-color-mode=light] .bg-yellow{background-color:#ffc107!important}}@media print{html .bg-green,html[data-netbox-color-mode=dark] .bg-green,html[data-netbox-color-mode=light] .bg-green{background-color:#198754!important}}@media print{html .bg-teal,html[data-netbox-color-mode=dark] .bg-teal,html[data-netbox-color-mode=light] .bg-teal{background-color:#20c997!important}}@media print{html .bg-cyan,html[data-netbox-color-mode=dark] .bg-cyan,html[data-netbox-color-mode=light] .bg-cyan{background-color:#0dcaf0!important}}@media print{html .bg-gray,html[data-netbox-color-mode=dark] .bg-gray,html[data-netbox-color-mode=light] .bg-gray{background-color:#adb5bd!important}}@media print{html .bg-black,html[data-netbox-color-mode=dark] .bg-black,html[data-netbox-color-mode=light] .bg-black{background-color:#000!important}}@media print{html .bg-white,html[data-netbox-color-mode=dark] .bg-white,html[data-netbox-color-mode=light] .bg-white{background-color:#fff!important}}@media print{html .bg-body,html[data-netbox-color-mode=dark] .bg-body,html[data-netbox-color-mode=light] .bg-body{background-color:#fff!important}}@media print{html .bg-transparent,html[data-netbox-color-mode=dark] .bg-transparent,html[data-netbox-color-mode=light] .bg-transparent{background-color:transparent!important}}@media print{html .bg-gradient,html[data-netbox-color-mode=dark] .bg-gradient,html[data-netbox-color-mode=light] .bg-gradient{background-image:var(--bs-gradient)!important}}@media print{html .user-select-all,html[data-netbox-color-mode=dark] .user-select-all,html[data-netbox-color-mode=light] .user-select-all{user-select:all!important}}@media print{html .user-select-auto,html[data-netbox-color-mode=dark] .user-select-auto,html[data-netbox-color-mode=light] .user-select-auto{user-select:auto!important}}@media print{html .user-select-none,html[data-netbox-color-mode=dark] .user-select-none,html[data-netbox-color-mode=light] .user-select-none{user-select:none!important}}@media print{html .pe-none,html[data-netbox-color-mode=dark] .pe-none,html[data-netbox-color-mode=light] .pe-none{pointer-events:none!important}}@media print{html .pe-auto,html[data-netbox-color-mode=dark] .pe-auto,html[data-netbox-color-mode=light] .pe-auto{pointer-events:auto!important}}@media print{html .rounded,html[data-netbox-color-mode=dark] .rounded,html[data-netbox-color-mode=light] .rounded{border-radius:.375rem!important}}@media print{html .rounded-0,html[data-netbox-color-mode=dark] .rounded-0,html[data-netbox-color-mode=light] .rounded-0{border-radius:0!important}}@media print{html .rounded-1,html[data-netbox-color-mode=dark] .rounded-1,html[data-netbox-color-mode=light] .rounded-1{border-radius:.375rem!important}}@media print{html .rounded-2,html[data-netbox-color-mode=dark] .rounded-2,html[data-netbox-color-mode=light] .rounded-2{border-radius:.375rem!important}}@media print{html .rounded-3,html[data-netbox-color-mode=dark] .rounded-3,html[data-netbox-color-mode=light] .rounded-3{border-radius:.75rem!important}}@media print{html .rounded-circle,html[data-netbox-color-mode=dark] .rounded-circle,html[data-netbox-color-mode=light] .rounded-circle{border-radius:50%!important}}@media print{html .rounded-pill,html[data-netbox-color-mode=dark] .rounded-pill,html[data-netbox-color-mode=light] .rounded-pill{border-radius:50rem!important}}@media print{html .rounded-top,html[data-netbox-color-mode=dark] .rounded-top,html[data-netbox-color-mode=light] .rounded-top{border-top-left-radius:.375rem!important;border-top-right-radius:.375rem!important}}@media print{html .rounded-end,html[data-netbox-color-mode=dark] .rounded-end,html[data-netbox-color-mode=light] .rounded-end{border-top-right-radius:.375rem!important;border-bottom-right-radius:.375rem!important}}@media print{html .rounded-bottom,html[data-netbox-color-mode=dark] .rounded-bottom,html[data-netbox-color-mode=light] .rounded-bottom{border-bottom-right-radius:.375rem!important;border-bottom-left-radius:.375rem!important}}@media print{html .rounded-start,html[data-netbox-color-mode=dark] .rounded-start,html[data-netbox-color-mode=light] .rounded-start{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}}@media print{html .visible,html[data-netbox-color-mode=dark] .visible,html[data-netbox-color-mode=light] .visible{visibility:visible!important}}@media print{html .invisible,html[data-netbox-color-mode=dark] .invisible,html[data-netbox-color-mode=light] .invisible{visibility:hidden!important}}@media print and (min-width: 576px){html .float-sm-start,html[data-netbox-color-mode=dark] .float-sm-start,html[data-netbox-color-mode=light] .float-sm-start{float:left!important}html .float-sm-end,html[data-netbox-color-mode=dark] .float-sm-end,html[data-netbox-color-mode=light] .float-sm-end{float:right!important}html .float-sm-none,html[data-netbox-color-mode=dark] .float-sm-none,html[data-netbox-color-mode=light] .float-sm-none{float:none!important}html .d-sm-inline,html[data-netbox-color-mode=dark] .d-sm-inline,html[data-netbox-color-mode=light] .d-sm-inline{display:inline!important}html .d-sm-inline-block,html[data-netbox-color-mode=dark] .d-sm-inline-block,html[data-netbox-color-mode=light] .d-sm-inline-block{display:inline-block!important}html .d-sm-block,html[data-netbox-color-mode=dark] .d-sm-block,html[data-netbox-color-mode=light] .d-sm-block{display:block!important}html .d-sm-grid,html[data-netbox-color-mode=dark] .d-sm-grid,html[data-netbox-color-mode=light] .d-sm-grid{display:grid!important}html .d-sm-table,html[data-netbox-color-mode=dark] .d-sm-table,html[data-netbox-color-mode=light] .d-sm-table{display:table!important}html .d-sm-table-row,html[data-netbox-color-mode=dark] .d-sm-table-row,html[data-netbox-color-mode=light] .d-sm-table-row{display:table-row!important}html .d-sm-table-cell,html[data-netbox-color-mode=dark] .d-sm-table-cell,html[data-netbox-color-mode=light] .d-sm-table-cell{display:table-cell!important}html .d-sm-flex,html[data-netbox-color-mode=dark] .d-sm-flex,html[data-netbox-color-mode=light] .d-sm-flex{display:flex!important}html .d-sm-inline-flex,html[data-netbox-color-mode=dark] .d-sm-inline-flex,html[data-netbox-color-mode=light] .d-sm-inline-flex{display:inline-flex!important}html .d-sm-none,html[data-netbox-color-mode=dark] .d-sm-none,html[data-netbox-color-mode=light] .d-sm-none{display:none!important}html .flex-sm-fill,html[data-netbox-color-mode=dark] .flex-sm-fill,html[data-netbox-color-mode=light] .flex-sm-fill{flex:1 1 auto!important}html .flex-sm-row,html[data-netbox-color-mode=dark] .flex-sm-row,html[data-netbox-color-mode=light] .flex-sm-row{flex-direction:row!important}html .flex-sm-column,html[data-netbox-color-mode=dark] .flex-sm-column,html[data-netbox-color-mode=light] .flex-sm-column{flex-direction:column!important}html .flex-sm-row-reverse,html[data-netbox-color-mode=dark] .flex-sm-row-reverse,html[data-netbox-color-mode=light] .flex-sm-row-reverse{flex-direction:row-reverse!important}html .flex-sm-column-reverse,html[data-netbox-color-mode=dark] .flex-sm-column-reverse,html[data-netbox-color-mode=light] .flex-sm-column-reverse{flex-direction:column-reverse!important}html .flex-sm-grow-0,html[data-netbox-color-mode=dark] .flex-sm-grow-0,html[data-netbox-color-mode=light] .flex-sm-grow-0{flex-grow:0!important}html .flex-sm-grow-1,html[data-netbox-color-mode=dark] .flex-sm-grow-1,html[data-netbox-color-mode=light] .flex-sm-grow-1{flex-grow:1!important}html .flex-sm-shrink-0,html[data-netbox-color-mode=dark] .flex-sm-shrink-0,html[data-netbox-color-mode=light] .flex-sm-shrink-0{flex-shrink:0!important}html .flex-sm-shrink-1,html[data-netbox-color-mode=dark] .flex-sm-shrink-1,html[data-netbox-color-mode=light] .flex-sm-shrink-1{flex-shrink:1!important}html .flex-sm-wrap,html[data-netbox-color-mode=dark] .flex-sm-wrap,html[data-netbox-color-mode=light] .flex-sm-wrap{flex-wrap:wrap!important}html .flex-sm-nowrap,html[data-netbox-color-mode=dark] .flex-sm-nowrap,html[data-netbox-color-mode=light] .flex-sm-nowrap{flex-wrap:nowrap!important}html .flex-sm-wrap-reverse,html[data-netbox-color-mode=dark] .flex-sm-wrap-reverse,html[data-netbox-color-mode=light] .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-sm-0,html[data-netbox-color-mode=dark] .gap-sm-0,html[data-netbox-color-mode=light] .gap-sm-0{gap:0!important}html .gap-sm-1,html[data-netbox-color-mode=dark] .gap-sm-1,html[data-netbox-color-mode=light] .gap-sm-1{gap:.25rem!important}html .gap-sm-2,html[data-netbox-color-mode=dark] .gap-sm-2,html[data-netbox-color-mode=light] .gap-sm-2{gap:.5rem!important}html .gap-sm-3,html[data-netbox-color-mode=dark] .gap-sm-3,html[data-netbox-color-mode=light] .gap-sm-3{gap:1rem!important}html .gap-sm-4,html[data-netbox-color-mode=dark] .gap-sm-4,html[data-netbox-color-mode=light] .gap-sm-4{gap:1.5rem!important}html .gap-sm-5,html[data-netbox-color-mode=dark] .gap-sm-5,html[data-netbox-color-mode=light] .gap-sm-5{gap:3rem!important}html .justify-content-sm-start,html[data-netbox-color-mode=dark] .justify-content-sm-start,html[data-netbox-color-mode=light] .justify-content-sm-start{justify-content:flex-start!important}html .justify-content-sm-end,html[data-netbox-color-mode=dark] .justify-content-sm-end,html[data-netbox-color-mode=light] .justify-content-sm-end{justify-content:flex-end!important}html .justify-content-sm-center,html[data-netbox-color-mode=dark] .justify-content-sm-center,html[data-netbox-color-mode=light] .justify-content-sm-center{justify-content:center!important}html .justify-content-sm-between,html[data-netbox-color-mode=dark] .justify-content-sm-between,html[data-netbox-color-mode=light] .justify-content-sm-between{justify-content:space-between!important}html .justify-content-sm-around,html[data-netbox-color-mode=dark] .justify-content-sm-around,html[data-netbox-color-mode=light] .justify-content-sm-around{justify-content:space-around!important}html .justify-content-sm-evenly,html[data-netbox-color-mode=dark] .justify-content-sm-evenly,html[data-netbox-color-mode=light] .justify-content-sm-evenly{justify-content:space-evenly!important}html .align-items-sm-start,html[data-netbox-color-mode=dark] .align-items-sm-start,html[data-netbox-color-mode=light] .align-items-sm-start{align-items:flex-start!important}html .align-items-sm-end,html[data-netbox-color-mode=dark] .align-items-sm-end,html[data-netbox-color-mode=light] .align-items-sm-end{align-items:flex-end!important}html .align-items-sm-center,html[data-netbox-color-mode=dark] .align-items-sm-center,html[data-netbox-color-mode=light] .align-items-sm-center{align-items:center!important}html .align-items-sm-baseline,html[data-netbox-color-mode=dark] .align-items-sm-baseline,html[data-netbox-color-mode=light] .align-items-sm-baseline{align-items:baseline!important}html .align-items-sm-stretch,html[data-netbox-color-mode=dark] .align-items-sm-stretch,html[data-netbox-color-mode=light] .align-items-sm-stretch{align-items:stretch!important}html .align-content-sm-start,html[data-netbox-color-mode=dark] .align-content-sm-start,html[data-netbox-color-mode=light] .align-content-sm-start{align-content:flex-start!important}html .align-content-sm-end,html[data-netbox-color-mode=dark] .align-content-sm-end,html[data-netbox-color-mode=light] .align-content-sm-end{align-content:flex-end!important}html .align-content-sm-center,html[data-netbox-color-mode=dark] .align-content-sm-center,html[data-netbox-color-mode=light] .align-content-sm-center{align-content:center!important}html .align-content-sm-between,html[data-netbox-color-mode=dark] .align-content-sm-between,html[data-netbox-color-mode=light] .align-content-sm-between{align-content:space-between!important}html .align-content-sm-around,html[data-netbox-color-mode=dark] .align-content-sm-around,html[data-netbox-color-mode=light] .align-content-sm-around{align-content:space-around!important}html .align-content-sm-stretch,html[data-netbox-color-mode=dark] .align-content-sm-stretch,html[data-netbox-color-mode=light] .align-content-sm-stretch{align-content:stretch!important}html .align-self-sm-auto,html[data-netbox-color-mode=dark] .align-self-sm-auto,html[data-netbox-color-mode=light] .align-self-sm-auto{align-self:auto!important}html .align-self-sm-start,html[data-netbox-color-mode=dark] .align-self-sm-start,html[data-netbox-color-mode=light] .align-self-sm-start{align-self:flex-start!important}html .align-self-sm-end,html[data-netbox-color-mode=dark] .align-self-sm-end,html[data-netbox-color-mode=light] .align-self-sm-end{align-self:flex-end!important}html .align-self-sm-center,html[data-netbox-color-mode=dark] .align-self-sm-center,html[data-netbox-color-mode=light] .align-self-sm-center{align-self:center!important}html .align-self-sm-baseline,html[data-netbox-color-mode=dark] .align-self-sm-baseline,html[data-netbox-color-mode=light] .align-self-sm-baseline{align-self:baseline!important}html .align-self-sm-stretch,html[data-netbox-color-mode=dark] .align-self-sm-stretch,html[data-netbox-color-mode=light] .align-self-sm-stretch{align-self:stretch!important}html .order-sm-first,html[data-netbox-color-mode=dark] .order-sm-first,html[data-netbox-color-mode=light] .order-sm-first{order:-1!important}html .order-sm-0,html[data-netbox-color-mode=dark] .order-sm-0,html[data-netbox-color-mode=light] .order-sm-0{order:0!important}html .order-sm-1,html[data-netbox-color-mode=dark] .order-sm-1,html[data-netbox-color-mode=light] .order-sm-1{order:1!important}html .order-sm-2,html[data-netbox-color-mode=dark] .order-sm-2,html[data-netbox-color-mode=light] .order-sm-2{order:2!important}html .order-sm-3,html[data-netbox-color-mode=dark] .order-sm-3,html[data-netbox-color-mode=light] .order-sm-3{order:3!important}html .order-sm-4,html[data-netbox-color-mode=dark] .order-sm-4,html[data-netbox-color-mode=light] .order-sm-4{order:4!important}html .order-sm-5,html[data-netbox-color-mode=dark] .order-sm-5,html[data-netbox-color-mode=light] .order-sm-5{order:5!important}html .order-sm-last,html[data-netbox-color-mode=dark] .order-sm-last,html[data-netbox-color-mode=light] .order-sm-last{order:6!important}html .m-sm-0,html[data-netbox-color-mode=dark] .m-sm-0,html[data-netbox-color-mode=light] .m-sm-0{margin:0!important}html .m-sm-1,html[data-netbox-color-mode=dark] .m-sm-1,html[data-netbox-color-mode=light] .m-sm-1{margin:.25rem!important}html .m-sm-2,html[data-netbox-color-mode=dark] .m-sm-2,html[data-netbox-color-mode=light] .m-sm-2{margin:.5rem!important}html .m-sm-3,html[data-netbox-color-mode=dark] .m-sm-3,html[data-netbox-color-mode=light] .m-sm-3{margin:1rem!important}html .m-sm-4,html[data-netbox-color-mode=dark] .m-sm-4,html[data-netbox-color-mode=light] .m-sm-4{margin:1.5rem!important}html .m-sm-5,html[data-netbox-color-mode=dark] .m-sm-5,html[data-netbox-color-mode=light] .m-sm-5{margin:3rem!important}html .m-sm-auto,html[data-netbox-color-mode=dark] .m-sm-auto,html[data-netbox-color-mode=light] .m-sm-auto{margin:auto!important}html .mx-sm-0,html[data-netbox-color-mode=dark] .mx-sm-0,html[data-netbox-color-mode=light] .mx-sm-0{margin-right:0!important;margin-left:0!important}html .mx-sm-1,html[data-netbox-color-mode=dark] .mx-sm-1,html[data-netbox-color-mode=light] .mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-sm-2,html[data-netbox-color-mode=dark] .mx-sm-2,html[data-netbox-color-mode=light] .mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-sm-3,html[data-netbox-color-mode=dark] .mx-sm-3,html[data-netbox-color-mode=light] .mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-sm-4,html[data-netbox-color-mode=dark] .mx-sm-4,html[data-netbox-color-mode=light] .mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-sm-5,html[data-netbox-color-mode=dark] .mx-sm-5,html[data-netbox-color-mode=light] .mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-sm-auto,html[data-netbox-color-mode=dark] .mx-sm-auto,html[data-netbox-color-mode=light] .mx-sm-auto{margin-right:auto!important;margin-left:auto!important}html .my-sm-0,html[data-netbox-color-mode=dark] .my-sm-0,html[data-netbox-color-mode=light] .my-sm-0{margin-top:0!important;margin-bottom:0!important}html .my-sm-1,html[data-netbox-color-mode=dark] .my-sm-1,html[data-netbox-color-mode=light] .my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-sm-2,html[data-netbox-color-mode=dark] .my-sm-2,html[data-netbox-color-mode=light] .my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-sm-3,html[data-netbox-color-mode=dark] .my-sm-3,html[data-netbox-color-mode=light] .my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-sm-4,html[data-netbox-color-mode=dark] .my-sm-4,html[data-netbox-color-mode=light] .my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-sm-5,html[data-netbox-color-mode=dark] .my-sm-5,html[data-netbox-color-mode=light] .my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-sm-auto,html[data-netbox-color-mode=dark] .my-sm-auto,html[data-netbox-color-mode=light] .my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-sm-0,html[data-netbox-color-mode=dark] .mt-sm-0,html[data-netbox-color-mode=light] .mt-sm-0{margin-top:0!important}html .mt-sm-1,html[data-netbox-color-mode=dark] .mt-sm-1,html[data-netbox-color-mode=light] .mt-sm-1{margin-top:.25rem!important}html .mt-sm-2,html[data-netbox-color-mode=dark] .mt-sm-2,html[data-netbox-color-mode=light] .mt-sm-2{margin-top:.5rem!important}html .mt-sm-3,html[data-netbox-color-mode=dark] .mt-sm-3,html[data-netbox-color-mode=light] .mt-sm-3{margin-top:1rem!important}html .mt-sm-4,html[data-netbox-color-mode=dark] .mt-sm-4,html[data-netbox-color-mode=light] .mt-sm-4{margin-top:1.5rem!important}html .mt-sm-5,html[data-netbox-color-mode=dark] .mt-sm-5,html[data-netbox-color-mode=light] .mt-sm-5{margin-top:3rem!important}html .mt-sm-auto,html[data-netbox-color-mode=dark] .mt-sm-auto,html[data-netbox-color-mode=light] .mt-sm-auto{margin-top:auto!important}html .me-sm-0,html[data-netbox-color-mode=dark] .me-sm-0,html[data-netbox-color-mode=light] .me-sm-0{margin-right:0!important}html .me-sm-1,html[data-netbox-color-mode=dark] .me-sm-1,html[data-netbox-color-mode=light] .me-sm-1{margin-right:.25rem!important}html .me-sm-2,html[data-netbox-color-mode=dark] .me-sm-2,html[data-netbox-color-mode=light] .me-sm-2{margin-right:.5rem!important}html .me-sm-3,html[data-netbox-color-mode=dark] .me-sm-3,html[data-netbox-color-mode=light] .me-sm-3{margin-right:1rem!important}html .me-sm-4,html[data-netbox-color-mode=dark] .me-sm-4,html[data-netbox-color-mode=light] .me-sm-4{margin-right:1.5rem!important}html .me-sm-5,html[data-netbox-color-mode=dark] .me-sm-5,html[data-netbox-color-mode=light] .me-sm-5{margin-right:3rem!important}html .me-sm-auto,html[data-netbox-color-mode=dark] .me-sm-auto,html[data-netbox-color-mode=light] .me-sm-auto{margin-right:auto!important}html .mb-sm-0,html[data-netbox-color-mode=dark] .mb-sm-0,html[data-netbox-color-mode=light] .mb-sm-0{margin-bottom:0!important}html .mb-sm-1,html[data-netbox-color-mode=dark] .mb-sm-1,html[data-netbox-color-mode=light] .mb-sm-1{margin-bottom:.25rem!important}html .mb-sm-2,html[data-netbox-color-mode=dark] .mb-sm-2,html[data-netbox-color-mode=light] .mb-sm-2{margin-bottom:.5rem!important}html .mb-sm-3,html[data-netbox-color-mode=dark] .mb-sm-3,html[data-netbox-color-mode=light] .mb-sm-3{margin-bottom:1rem!important}html .mb-sm-4,html[data-netbox-color-mode=dark] .mb-sm-4,html[data-netbox-color-mode=light] .mb-sm-4{margin-bottom:1.5rem!important}html .mb-sm-5,html[data-netbox-color-mode=dark] .mb-sm-5,html[data-netbox-color-mode=light] .mb-sm-5{margin-bottom:3rem!important}html .mb-sm-auto,html[data-netbox-color-mode=dark] .mb-sm-auto,html[data-netbox-color-mode=light] .mb-sm-auto{margin-bottom:auto!important}html .ms-sm-0,html[data-netbox-color-mode=dark] .ms-sm-0,html[data-netbox-color-mode=light] .ms-sm-0{margin-left:0!important}html .ms-sm-1,html[data-netbox-color-mode=dark] .ms-sm-1,html[data-netbox-color-mode=light] .ms-sm-1{margin-left:.25rem!important}html .ms-sm-2,html[data-netbox-color-mode=dark] .ms-sm-2,html[data-netbox-color-mode=light] .ms-sm-2{margin-left:.5rem!important}html .ms-sm-3,html[data-netbox-color-mode=dark] .ms-sm-3,html[data-netbox-color-mode=light] .ms-sm-3{margin-left:1rem!important}html .ms-sm-4,html[data-netbox-color-mode=dark] .ms-sm-4,html[data-netbox-color-mode=light] .ms-sm-4{margin-left:1.5rem!important}html .ms-sm-5,html[data-netbox-color-mode=dark] .ms-sm-5,html[data-netbox-color-mode=light] .ms-sm-5{margin-left:3rem!important}html .ms-sm-auto,html[data-netbox-color-mode=dark] .ms-sm-auto,html[data-netbox-color-mode=light] .ms-sm-auto{margin-left:auto!important}html .p-sm-0,html[data-netbox-color-mode=dark] .p-sm-0,html[data-netbox-color-mode=light] .p-sm-0{padding:0!important}html .p-sm-1,html[data-netbox-color-mode=dark] .p-sm-1,html[data-netbox-color-mode=light] .p-sm-1{padding:.25rem!important}html .p-sm-2,html[data-netbox-color-mode=dark] .p-sm-2,html[data-netbox-color-mode=light] .p-sm-2{padding:.5rem!important}html .p-sm-3,html[data-netbox-color-mode=dark] .p-sm-3,html[data-netbox-color-mode=light] .p-sm-3{padding:1rem!important}html .p-sm-4,html[data-netbox-color-mode=dark] .p-sm-4,html[data-netbox-color-mode=light] .p-sm-4{padding:1.5rem!important}html .p-sm-5,html[data-netbox-color-mode=dark] .p-sm-5,html[data-netbox-color-mode=light] .p-sm-5{padding:3rem!important}html .px-sm-0,html[data-netbox-color-mode=dark] .px-sm-0,html[data-netbox-color-mode=light] .px-sm-0{padding-right:0!important;padding-left:0!important}html .px-sm-1,html[data-netbox-color-mode=dark] .px-sm-1,html[data-netbox-color-mode=light] .px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-sm-2,html[data-netbox-color-mode=dark] .px-sm-2,html[data-netbox-color-mode=light] .px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-sm-3,html[data-netbox-color-mode=dark] .px-sm-3,html[data-netbox-color-mode=light] .px-sm-3{padding-right:1rem!important;padding-left:1rem!important}html .px-sm-4,html[data-netbox-color-mode=dark] .px-sm-4,html[data-netbox-color-mode=light] .px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-sm-5,html[data-netbox-color-mode=dark] .px-sm-5,html[data-netbox-color-mode=light] .px-sm-5{padding-right:3rem!important;padding-left:3rem!important}html .py-sm-0,html[data-netbox-color-mode=dark] .py-sm-0,html[data-netbox-color-mode=light] .py-sm-0{padding-top:0!important;padding-bottom:0!important}html .py-sm-1,html[data-netbox-color-mode=dark] .py-sm-1,html[data-netbox-color-mode=light] .py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-sm-2,html[data-netbox-color-mode=dark] .py-sm-2,html[data-netbox-color-mode=light] .py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-sm-3,html[data-netbox-color-mode=dark] .py-sm-3,html[data-netbox-color-mode=light] .py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-sm-4,html[data-netbox-color-mode=dark] .py-sm-4,html[data-netbox-color-mode=light] .py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-sm-5,html[data-netbox-color-mode=dark] .py-sm-5,html[data-netbox-color-mode=light] .py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-sm-0,html[data-netbox-color-mode=dark] .pt-sm-0,html[data-netbox-color-mode=light] .pt-sm-0{padding-top:0!important}html .pt-sm-1,html[data-netbox-color-mode=dark] .pt-sm-1,html[data-netbox-color-mode=light] .pt-sm-1{padding-top:.25rem!important}html .pt-sm-2,html[data-netbox-color-mode=dark] .pt-sm-2,html[data-netbox-color-mode=light] .pt-sm-2{padding-top:.5rem!important}html .pt-sm-3,html[data-netbox-color-mode=dark] .pt-sm-3,html[data-netbox-color-mode=light] .pt-sm-3{padding-top:1rem!important}html .pt-sm-4,html[data-netbox-color-mode=dark] .pt-sm-4,html[data-netbox-color-mode=light] .pt-sm-4{padding-top:1.5rem!important}html .pt-sm-5,html[data-netbox-color-mode=dark] .pt-sm-5,html[data-netbox-color-mode=light] .pt-sm-5{padding-top:3rem!important}html .pe-sm-0,html[data-netbox-color-mode=dark] .pe-sm-0,html[data-netbox-color-mode=light] .pe-sm-0{padding-right:0!important}html .pe-sm-1,html[data-netbox-color-mode=dark] .pe-sm-1,html[data-netbox-color-mode=light] .pe-sm-1{padding-right:.25rem!important}html .pe-sm-2,html[data-netbox-color-mode=dark] .pe-sm-2,html[data-netbox-color-mode=light] .pe-sm-2{padding-right:.5rem!important}html .pe-sm-3,html[data-netbox-color-mode=dark] .pe-sm-3,html[data-netbox-color-mode=light] .pe-sm-3{padding-right:1rem!important}html .pe-sm-4,html[data-netbox-color-mode=dark] .pe-sm-4,html[data-netbox-color-mode=light] .pe-sm-4{padding-right:1.5rem!important}html .pe-sm-5,html[data-netbox-color-mode=dark] .pe-sm-5,html[data-netbox-color-mode=light] .pe-sm-5{padding-right:3rem!important}html .pb-sm-0,html[data-netbox-color-mode=dark] .pb-sm-0,html[data-netbox-color-mode=light] .pb-sm-0{padding-bottom:0!important}html .pb-sm-1,html[data-netbox-color-mode=dark] .pb-sm-1,html[data-netbox-color-mode=light] .pb-sm-1{padding-bottom:.25rem!important}html .pb-sm-2,html[data-netbox-color-mode=dark] .pb-sm-2,html[data-netbox-color-mode=light] .pb-sm-2{padding-bottom:.5rem!important}html .pb-sm-3,html[data-netbox-color-mode=dark] .pb-sm-3,html[data-netbox-color-mode=light] .pb-sm-3{padding-bottom:1rem!important}html .pb-sm-4,html[data-netbox-color-mode=dark] .pb-sm-4,html[data-netbox-color-mode=light] .pb-sm-4{padding-bottom:1.5rem!important}html .pb-sm-5,html[data-netbox-color-mode=dark] .pb-sm-5,html[data-netbox-color-mode=light] .pb-sm-5{padding-bottom:3rem!important}html .ps-sm-0,html[data-netbox-color-mode=dark] .ps-sm-0,html[data-netbox-color-mode=light] .ps-sm-0{padding-left:0!important}html .ps-sm-1,html[data-netbox-color-mode=dark] .ps-sm-1,html[data-netbox-color-mode=light] .ps-sm-1{padding-left:.25rem!important}html .ps-sm-2,html[data-netbox-color-mode=dark] .ps-sm-2,html[data-netbox-color-mode=light] .ps-sm-2{padding-left:.5rem!important}html .ps-sm-3,html[data-netbox-color-mode=dark] .ps-sm-3,html[data-netbox-color-mode=light] .ps-sm-3{padding-left:1rem!important}html .ps-sm-4,html[data-netbox-color-mode=dark] .ps-sm-4,html[data-netbox-color-mode=light] .ps-sm-4{padding-left:1.5rem!important}html .ps-sm-5,html[data-netbox-color-mode=dark] .ps-sm-5,html[data-netbox-color-mode=light] .ps-sm-5{padding-left:3rem!important}html .text-sm-start,html[data-netbox-color-mode=dark] .text-sm-start,html[data-netbox-color-mode=light] .text-sm-start{text-align:left!important}html .text-sm-end,html[data-netbox-color-mode=dark] .text-sm-end,html[data-netbox-color-mode=light] .text-sm-end{text-align:right!important}html .text-sm-center,html[data-netbox-color-mode=dark] .text-sm-center,html[data-netbox-color-mode=light] .text-sm-center{text-align:center!important}}@media print and (min-width: 768px){html .float-md-start,html[data-netbox-color-mode=dark] .float-md-start,html[data-netbox-color-mode=light] .float-md-start{float:left!important}html .float-md-end,html[data-netbox-color-mode=dark] .float-md-end,html[data-netbox-color-mode=light] .float-md-end{float:right!important}html .float-md-none,html[data-netbox-color-mode=dark] .float-md-none,html[data-netbox-color-mode=light] .float-md-none{float:none!important}html .d-md-inline,html[data-netbox-color-mode=dark] .d-md-inline,html[data-netbox-color-mode=light] .d-md-inline{display:inline!important}html .d-md-inline-block,html[data-netbox-color-mode=dark] .d-md-inline-block,html[data-netbox-color-mode=light] .d-md-inline-block{display:inline-block!important}html .d-md-block,html[data-netbox-color-mode=dark] .d-md-block,html[data-netbox-color-mode=light] .d-md-block{display:block!important}html .d-md-grid,html[data-netbox-color-mode=dark] .d-md-grid,html[data-netbox-color-mode=light] .d-md-grid{display:grid!important}html .d-md-table,html[data-netbox-color-mode=dark] .d-md-table,html[data-netbox-color-mode=light] .d-md-table{display:table!important}html .d-md-table-row,html[data-netbox-color-mode=dark] .d-md-table-row,html[data-netbox-color-mode=light] .d-md-table-row{display:table-row!important}html .d-md-table-cell,html[data-netbox-color-mode=dark] .d-md-table-cell,html[data-netbox-color-mode=light] .d-md-table-cell{display:table-cell!important}html .d-md-flex,html[data-netbox-color-mode=dark] .d-md-flex,html[data-netbox-color-mode=light] .d-md-flex{display:flex!important}html .d-md-inline-flex,html[data-netbox-color-mode=dark] .d-md-inline-flex,html[data-netbox-color-mode=light] .d-md-inline-flex{display:inline-flex!important}html .d-md-none,html[data-netbox-color-mode=dark] .d-md-none,html[data-netbox-color-mode=light] .d-md-none{display:none!important}html .flex-md-fill,html[data-netbox-color-mode=dark] .flex-md-fill,html[data-netbox-color-mode=light] .flex-md-fill{flex:1 1 auto!important}html .flex-md-row,html[data-netbox-color-mode=dark] .flex-md-row,html[data-netbox-color-mode=light] .flex-md-row{flex-direction:row!important}html .flex-md-column,html[data-netbox-color-mode=dark] .flex-md-column,html[data-netbox-color-mode=light] .flex-md-column{flex-direction:column!important}html .flex-md-row-reverse,html[data-netbox-color-mode=dark] .flex-md-row-reverse,html[data-netbox-color-mode=light] .flex-md-row-reverse{flex-direction:row-reverse!important}html .flex-md-column-reverse,html[data-netbox-color-mode=dark] .flex-md-column-reverse,html[data-netbox-color-mode=light] .flex-md-column-reverse{flex-direction:column-reverse!important}html .flex-md-grow-0,html[data-netbox-color-mode=dark] .flex-md-grow-0,html[data-netbox-color-mode=light] .flex-md-grow-0{flex-grow:0!important}html .flex-md-grow-1,html[data-netbox-color-mode=dark] .flex-md-grow-1,html[data-netbox-color-mode=light] .flex-md-grow-1{flex-grow:1!important}html .flex-md-shrink-0,html[data-netbox-color-mode=dark] .flex-md-shrink-0,html[data-netbox-color-mode=light] .flex-md-shrink-0{flex-shrink:0!important}html .flex-md-shrink-1,html[data-netbox-color-mode=dark] .flex-md-shrink-1,html[data-netbox-color-mode=light] .flex-md-shrink-1{flex-shrink:1!important}html .flex-md-wrap,html[data-netbox-color-mode=dark] .flex-md-wrap,html[data-netbox-color-mode=light] .flex-md-wrap{flex-wrap:wrap!important}html .flex-md-nowrap,html[data-netbox-color-mode=dark] .flex-md-nowrap,html[data-netbox-color-mode=light] .flex-md-nowrap{flex-wrap:nowrap!important}html .flex-md-wrap-reverse,html[data-netbox-color-mode=dark] .flex-md-wrap-reverse,html[data-netbox-color-mode=light] .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-md-0,html[data-netbox-color-mode=dark] .gap-md-0,html[data-netbox-color-mode=light] .gap-md-0{gap:0!important}html .gap-md-1,html[data-netbox-color-mode=dark] .gap-md-1,html[data-netbox-color-mode=light] .gap-md-1{gap:.25rem!important}html .gap-md-2,html[data-netbox-color-mode=dark] .gap-md-2,html[data-netbox-color-mode=light] .gap-md-2{gap:.5rem!important}html .gap-md-3,html[data-netbox-color-mode=dark] .gap-md-3,html[data-netbox-color-mode=light] .gap-md-3{gap:1rem!important}html .gap-md-4,html[data-netbox-color-mode=dark] .gap-md-4,html[data-netbox-color-mode=light] .gap-md-4{gap:1.5rem!important}html .gap-md-5,html[data-netbox-color-mode=dark] .gap-md-5,html[data-netbox-color-mode=light] .gap-md-5{gap:3rem!important}html .justify-content-md-start,html[data-netbox-color-mode=dark] .justify-content-md-start,html[data-netbox-color-mode=light] .justify-content-md-start{justify-content:flex-start!important}html .justify-content-md-end,html[data-netbox-color-mode=dark] .justify-content-md-end,html[data-netbox-color-mode=light] .justify-content-md-end{justify-content:flex-end!important}html .justify-content-md-center,html[data-netbox-color-mode=dark] .justify-content-md-center,html[data-netbox-color-mode=light] .justify-content-md-center{justify-content:center!important}html .justify-content-md-between,html[data-netbox-color-mode=dark] .justify-content-md-between,html[data-netbox-color-mode=light] .justify-content-md-between{justify-content:space-between!important}html .justify-content-md-around,html[data-netbox-color-mode=dark] .justify-content-md-around,html[data-netbox-color-mode=light] .justify-content-md-around{justify-content:space-around!important}html .justify-content-md-evenly,html[data-netbox-color-mode=dark] .justify-content-md-evenly,html[data-netbox-color-mode=light] .justify-content-md-evenly{justify-content:space-evenly!important}html .align-items-md-start,html[data-netbox-color-mode=dark] .align-items-md-start,html[data-netbox-color-mode=light] .align-items-md-start{align-items:flex-start!important}html .align-items-md-end,html[data-netbox-color-mode=dark] .align-items-md-end,html[data-netbox-color-mode=light] .align-items-md-end{align-items:flex-end!important}html .align-items-md-center,html[data-netbox-color-mode=dark] .align-items-md-center,html[data-netbox-color-mode=light] .align-items-md-center{align-items:center!important}html .align-items-md-baseline,html[data-netbox-color-mode=dark] .align-items-md-baseline,html[data-netbox-color-mode=light] .align-items-md-baseline{align-items:baseline!important}html .align-items-md-stretch,html[data-netbox-color-mode=dark] .align-items-md-stretch,html[data-netbox-color-mode=light] .align-items-md-stretch{align-items:stretch!important}html .align-content-md-start,html[data-netbox-color-mode=dark] .align-content-md-start,html[data-netbox-color-mode=light] .align-content-md-start{align-content:flex-start!important}html .align-content-md-end,html[data-netbox-color-mode=dark] .align-content-md-end,html[data-netbox-color-mode=light] .align-content-md-end{align-content:flex-end!important}html .align-content-md-center,html[data-netbox-color-mode=dark] .align-content-md-center,html[data-netbox-color-mode=light] .align-content-md-center{align-content:center!important}html .align-content-md-between,html[data-netbox-color-mode=dark] .align-content-md-between,html[data-netbox-color-mode=light] .align-content-md-between{align-content:space-between!important}html .align-content-md-around,html[data-netbox-color-mode=dark] .align-content-md-around,html[data-netbox-color-mode=light] .align-content-md-around{align-content:space-around!important}html .align-content-md-stretch,html[data-netbox-color-mode=dark] .align-content-md-stretch,html[data-netbox-color-mode=light] .align-content-md-stretch{align-content:stretch!important}html .align-self-md-auto,html[data-netbox-color-mode=dark] .align-self-md-auto,html[data-netbox-color-mode=light] .align-self-md-auto{align-self:auto!important}html .align-self-md-start,html[data-netbox-color-mode=dark] .align-self-md-start,html[data-netbox-color-mode=light] .align-self-md-start{align-self:flex-start!important}html .align-self-md-end,html[data-netbox-color-mode=dark] .align-self-md-end,html[data-netbox-color-mode=light] .align-self-md-end{align-self:flex-end!important}html .align-self-md-center,html[data-netbox-color-mode=dark] .align-self-md-center,html[data-netbox-color-mode=light] .align-self-md-center{align-self:center!important}html .align-self-md-baseline,html[data-netbox-color-mode=dark] .align-self-md-baseline,html[data-netbox-color-mode=light] .align-self-md-baseline{align-self:baseline!important}html .align-self-md-stretch,html[data-netbox-color-mode=dark] .align-self-md-stretch,html[data-netbox-color-mode=light] .align-self-md-stretch{align-self:stretch!important}html .order-md-first,html[data-netbox-color-mode=dark] .order-md-first,html[data-netbox-color-mode=light] .order-md-first{order:-1!important}html .order-md-0,html[data-netbox-color-mode=dark] .order-md-0,html[data-netbox-color-mode=light] .order-md-0{order:0!important}html .order-md-1,html[data-netbox-color-mode=dark] .order-md-1,html[data-netbox-color-mode=light] .order-md-1{order:1!important}html .order-md-2,html[data-netbox-color-mode=dark] .order-md-2,html[data-netbox-color-mode=light] .order-md-2{order:2!important}html .order-md-3,html[data-netbox-color-mode=dark] .order-md-3,html[data-netbox-color-mode=light] .order-md-3{order:3!important}html .order-md-4,html[data-netbox-color-mode=dark] .order-md-4,html[data-netbox-color-mode=light] .order-md-4{order:4!important}html .order-md-5,html[data-netbox-color-mode=dark] .order-md-5,html[data-netbox-color-mode=light] .order-md-5{order:5!important}html .order-md-last,html[data-netbox-color-mode=dark] .order-md-last,html[data-netbox-color-mode=light] .order-md-last{order:6!important}html .m-md-0,html[data-netbox-color-mode=dark] .m-md-0,html[data-netbox-color-mode=light] .m-md-0{margin:0!important}html .m-md-1,html[data-netbox-color-mode=dark] .m-md-1,html[data-netbox-color-mode=light] .m-md-1{margin:.25rem!important}html .m-md-2,html[data-netbox-color-mode=dark] .m-md-2,html[data-netbox-color-mode=light] .m-md-2{margin:.5rem!important}html .m-md-3,html[data-netbox-color-mode=dark] .m-md-3,html[data-netbox-color-mode=light] .m-md-3{margin:1rem!important}html .m-md-4,html[data-netbox-color-mode=dark] .m-md-4,html[data-netbox-color-mode=light] .m-md-4{margin:1.5rem!important}html .m-md-5,html[data-netbox-color-mode=dark] .m-md-5,html[data-netbox-color-mode=light] .m-md-5{margin:3rem!important}html .m-md-auto,html[data-netbox-color-mode=dark] .m-md-auto,html[data-netbox-color-mode=light] .m-md-auto{margin:auto!important}html .mx-md-0,html[data-netbox-color-mode=dark] .mx-md-0,html[data-netbox-color-mode=light] .mx-md-0{margin-right:0!important;margin-left:0!important}html .mx-md-1,html[data-netbox-color-mode=dark] .mx-md-1,html[data-netbox-color-mode=light] .mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-md-2,html[data-netbox-color-mode=dark] .mx-md-2,html[data-netbox-color-mode=light] .mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-md-3,html[data-netbox-color-mode=dark] .mx-md-3,html[data-netbox-color-mode=light] .mx-md-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-md-4,html[data-netbox-color-mode=dark] .mx-md-4,html[data-netbox-color-mode=light] .mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-md-5,html[data-netbox-color-mode=dark] .mx-md-5,html[data-netbox-color-mode=light] .mx-md-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-md-auto,html[data-netbox-color-mode=dark] .mx-md-auto,html[data-netbox-color-mode=light] .mx-md-auto{margin-right:auto!important;margin-left:auto!important}html .my-md-0,html[data-netbox-color-mode=dark] .my-md-0,html[data-netbox-color-mode=light] .my-md-0{margin-top:0!important;margin-bottom:0!important}html .my-md-1,html[data-netbox-color-mode=dark] .my-md-1,html[data-netbox-color-mode=light] .my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-md-2,html[data-netbox-color-mode=dark] .my-md-2,html[data-netbox-color-mode=light] .my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-md-3,html[data-netbox-color-mode=dark] .my-md-3,html[data-netbox-color-mode=light] .my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-md-4,html[data-netbox-color-mode=dark] .my-md-4,html[data-netbox-color-mode=light] .my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-md-5,html[data-netbox-color-mode=dark] .my-md-5,html[data-netbox-color-mode=light] .my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-md-auto,html[data-netbox-color-mode=dark] .my-md-auto,html[data-netbox-color-mode=light] .my-md-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-md-0,html[data-netbox-color-mode=dark] .mt-md-0,html[data-netbox-color-mode=light] .mt-md-0{margin-top:0!important}html .mt-md-1,html[data-netbox-color-mode=dark] .mt-md-1,html[data-netbox-color-mode=light] .mt-md-1{margin-top:.25rem!important}html .mt-md-2,html[data-netbox-color-mode=dark] .mt-md-2,html[data-netbox-color-mode=light] .mt-md-2{margin-top:.5rem!important}html .mt-md-3,html[data-netbox-color-mode=dark] .mt-md-3,html[data-netbox-color-mode=light] .mt-md-3{margin-top:1rem!important}html .mt-md-4,html[data-netbox-color-mode=dark] .mt-md-4,html[data-netbox-color-mode=light] .mt-md-4{margin-top:1.5rem!important}html .mt-md-5,html[data-netbox-color-mode=dark] .mt-md-5,html[data-netbox-color-mode=light] .mt-md-5{margin-top:3rem!important}html .mt-md-auto,html[data-netbox-color-mode=dark] .mt-md-auto,html[data-netbox-color-mode=light] .mt-md-auto{margin-top:auto!important}html .me-md-0,html[data-netbox-color-mode=dark] .me-md-0,html[data-netbox-color-mode=light] .me-md-0{margin-right:0!important}html .me-md-1,html[data-netbox-color-mode=dark] .me-md-1,html[data-netbox-color-mode=light] .me-md-1{margin-right:.25rem!important}html .me-md-2,html[data-netbox-color-mode=dark] .me-md-2,html[data-netbox-color-mode=light] .me-md-2{margin-right:.5rem!important}html .me-md-3,html[data-netbox-color-mode=dark] .me-md-3,html[data-netbox-color-mode=light] .me-md-3{margin-right:1rem!important}html .me-md-4,html[data-netbox-color-mode=dark] .me-md-4,html[data-netbox-color-mode=light] .me-md-4{margin-right:1.5rem!important}html .me-md-5,html[data-netbox-color-mode=dark] .me-md-5,html[data-netbox-color-mode=light] .me-md-5{margin-right:3rem!important}html .me-md-auto,html[data-netbox-color-mode=dark] .me-md-auto,html[data-netbox-color-mode=light] .me-md-auto{margin-right:auto!important}html .mb-md-0,html[data-netbox-color-mode=dark] .mb-md-0,html[data-netbox-color-mode=light] .mb-md-0{margin-bottom:0!important}html .mb-md-1,html[data-netbox-color-mode=dark] .mb-md-1,html[data-netbox-color-mode=light] .mb-md-1{margin-bottom:.25rem!important}html .mb-md-2,html[data-netbox-color-mode=dark] .mb-md-2,html[data-netbox-color-mode=light] .mb-md-2{margin-bottom:.5rem!important}html .mb-md-3,html[data-netbox-color-mode=dark] .mb-md-3,html[data-netbox-color-mode=light] .mb-md-3{margin-bottom:1rem!important}html .mb-md-4,html[data-netbox-color-mode=dark] .mb-md-4,html[data-netbox-color-mode=light] .mb-md-4{margin-bottom:1.5rem!important}html .mb-md-5,html[data-netbox-color-mode=dark] .mb-md-5,html[data-netbox-color-mode=light] .mb-md-5{margin-bottom:3rem!important}html .mb-md-auto,html[data-netbox-color-mode=dark] .mb-md-auto,html[data-netbox-color-mode=light] .mb-md-auto{margin-bottom:auto!important}html .ms-md-0,html[data-netbox-color-mode=dark] .ms-md-0,html[data-netbox-color-mode=light] .ms-md-0{margin-left:0!important}html .ms-md-1,html[data-netbox-color-mode=dark] .ms-md-1,html[data-netbox-color-mode=light] .ms-md-1{margin-left:.25rem!important}html .ms-md-2,html[data-netbox-color-mode=dark] .ms-md-2,html[data-netbox-color-mode=light] .ms-md-2{margin-left:.5rem!important}html .ms-md-3,html[data-netbox-color-mode=dark] .ms-md-3,html[data-netbox-color-mode=light] .ms-md-3{margin-left:1rem!important}html .ms-md-4,html[data-netbox-color-mode=dark] .ms-md-4,html[data-netbox-color-mode=light] .ms-md-4{margin-left:1.5rem!important}html .ms-md-5,html[data-netbox-color-mode=dark] .ms-md-5,html[data-netbox-color-mode=light] .ms-md-5{margin-left:3rem!important}html .ms-md-auto,html[data-netbox-color-mode=dark] .ms-md-auto,html[data-netbox-color-mode=light] .ms-md-auto{margin-left:auto!important}html .p-md-0,html[data-netbox-color-mode=dark] .p-md-0,html[data-netbox-color-mode=light] .p-md-0{padding:0!important}html .p-md-1,html[data-netbox-color-mode=dark] .p-md-1,html[data-netbox-color-mode=light] .p-md-1{padding:.25rem!important}html .p-md-2,html[data-netbox-color-mode=dark] .p-md-2,html[data-netbox-color-mode=light] .p-md-2{padding:.5rem!important}html .p-md-3,html[data-netbox-color-mode=dark] .p-md-3,html[data-netbox-color-mode=light] .p-md-3{padding:1rem!important}html .p-md-4,html[data-netbox-color-mode=dark] .p-md-4,html[data-netbox-color-mode=light] .p-md-4{padding:1.5rem!important}html .p-md-5,html[data-netbox-color-mode=dark] .p-md-5,html[data-netbox-color-mode=light] .p-md-5{padding:3rem!important}html .px-md-0,html[data-netbox-color-mode=dark] .px-md-0,html[data-netbox-color-mode=light] .px-md-0{padding-right:0!important;padding-left:0!important}html .px-md-1,html[data-netbox-color-mode=dark] .px-md-1,html[data-netbox-color-mode=light] .px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-md-2,html[data-netbox-color-mode=dark] .px-md-2,html[data-netbox-color-mode=light] .px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-md-3,html[data-netbox-color-mode=dark] .px-md-3,html[data-netbox-color-mode=light] .px-md-3{padding-right:1rem!important;padding-left:1rem!important}html .px-md-4,html[data-netbox-color-mode=dark] .px-md-4,html[data-netbox-color-mode=light] .px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-md-5,html[data-netbox-color-mode=dark] .px-md-5,html[data-netbox-color-mode=light] .px-md-5{padding-right:3rem!important;padding-left:3rem!important}html .py-md-0,html[data-netbox-color-mode=dark] .py-md-0,html[data-netbox-color-mode=light] .py-md-0{padding-top:0!important;padding-bottom:0!important}html .py-md-1,html[data-netbox-color-mode=dark] .py-md-1,html[data-netbox-color-mode=light] .py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-md-2,html[data-netbox-color-mode=dark] .py-md-2,html[data-netbox-color-mode=light] .py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-md-3,html[data-netbox-color-mode=dark] .py-md-3,html[data-netbox-color-mode=light] .py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-md-4,html[data-netbox-color-mode=dark] .py-md-4,html[data-netbox-color-mode=light] .py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-md-5,html[data-netbox-color-mode=dark] .py-md-5,html[data-netbox-color-mode=light] .py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-md-0,html[data-netbox-color-mode=dark] .pt-md-0,html[data-netbox-color-mode=light] .pt-md-0{padding-top:0!important}html .pt-md-1,html[data-netbox-color-mode=dark] .pt-md-1,html[data-netbox-color-mode=light] .pt-md-1{padding-top:.25rem!important}html .pt-md-2,html[data-netbox-color-mode=dark] .pt-md-2,html[data-netbox-color-mode=light] .pt-md-2{padding-top:.5rem!important}html .pt-md-3,html[data-netbox-color-mode=dark] .pt-md-3,html[data-netbox-color-mode=light] .pt-md-3{padding-top:1rem!important}html .pt-md-4,html[data-netbox-color-mode=dark] .pt-md-4,html[data-netbox-color-mode=light] .pt-md-4{padding-top:1.5rem!important}html .pt-md-5,html[data-netbox-color-mode=dark] .pt-md-5,html[data-netbox-color-mode=light] .pt-md-5{padding-top:3rem!important}html .pe-md-0,html[data-netbox-color-mode=dark] .pe-md-0,html[data-netbox-color-mode=light] .pe-md-0{padding-right:0!important}html .pe-md-1,html[data-netbox-color-mode=dark] .pe-md-1,html[data-netbox-color-mode=light] .pe-md-1{padding-right:.25rem!important}html .pe-md-2,html[data-netbox-color-mode=dark] .pe-md-2,html[data-netbox-color-mode=light] .pe-md-2{padding-right:.5rem!important}html .pe-md-3,html[data-netbox-color-mode=dark] .pe-md-3,html[data-netbox-color-mode=light] .pe-md-3{padding-right:1rem!important}html .pe-md-4,html[data-netbox-color-mode=dark] .pe-md-4,html[data-netbox-color-mode=light] .pe-md-4{padding-right:1.5rem!important}html .pe-md-5,html[data-netbox-color-mode=dark] .pe-md-5,html[data-netbox-color-mode=light] .pe-md-5{padding-right:3rem!important}html .pb-md-0,html[data-netbox-color-mode=dark] .pb-md-0,html[data-netbox-color-mode=light] .pb-md-0{padding-bottom:0!important}html .pb-md-1,html[data-netbox-color-mode=dark] .pb-md-1,html[data-netbox-color-mode=light] .pb-md-1{padding-bottom:.25rem!important}html .pb-md-2,html[data-netbox-color-mode=dark] .pb-md-2,html[data-netbox-color-mode=light] .pb-md-2{padding-bottom:.5rem!important}html .pb-md-3,html[data-netbox-color-mode=dark] .pb-md-3,html[data-netbox-color-mode=light] .pb-md-3{padding-bottom:1rem!important}html .pb-md-4,html[data-netbox-color-mode=dark] .pb-md-4,html[data-netbox-color-mode=light] .pb-md-4{padding-bottom:1.5rem!important}html .pb-md-5,html[data-netbox-color-mode=dark] .pb-md-5,html[data-netbox-color-mode=light] .pb-md-5{padding-bottom:3rem!important}html .ps-md-0,html[data-netbox-color-mode=dark] .ps-md-0,html[data-netbox-color-mode=light] .ps-md-0{padding-left:0!important}html .ps-md-1,html[data-netbox-color-mode=dark] .ps-md-1,html[data-netbox-color-mode=light] .ps-md-1{padding-left:.25rem!important}html .ps-md-2,html[data-netbox-color-mode=dark] .ps-md-2,html[data-netbox-color-mode=light] .ps-md-2{padding-left:.5rem!important}html .ps-md-3,html[data-netbox-color-mode=dark] .ps-md-3,html[data-netbox-color-mode=light] .ps-md-3{padding-left:1rem!important}html .ps-md-4,html[data-netbox-color-mode=dark] .ps-md-4,html[data-netbox-color-mode=light] .ps-md-4{padding-left:1.5rem!important}html .ps-md-5,html[data-netbox-color-mode=dark] .ps-md-5,html[data-netbox-color-mode=light] .ps-md-5{padding-left:3rem!important}html .text-md-start,html[data-netbox-color-mode=dark] .text-md-start,html[data-netbox-color-mode=light] .text-md-start{text-align:left!important}html .text-md-end,html[data-netbox-color-mode=dark] .text-md-end,html[data-netbox-color-mode=light] .text-md-end{text-align:right!important}html .text-md-center,html[data-netbox-color-mode=dark] .text-md-center,html[data-netbox-color-mode=light] .text-md-center{text-align:center!important}}@media print and (min-width: 992px){html .float-lg-start,html[data-netbox-color-mode=dark] .float-lg-start,html[data-netbox-color-mode=light] .float-lg-start{float:left!important}html .float-lg-end,html[data-netbox-color-mode=dark] .float-lg-end,html[data-netbox-color-mode=light] .float-lg-end{float:right!important}html .float-lg-none,html[data-netbox-color-mode=dark] .float-lg-none,html[data-netbox-color-mode=light] .float-lg-none{float:none!important}html .d-lg-inline,html[data-netbox-color-mode=dark] .d-lg-inline,html[data-netbox-color-mode=light] .d-lg-inline{display:inline!important}html .d-lg-inline-block,html[data-netbox-color-mode=dark] .d-lg-inline-block,html[data-netbox-color-mode=light] .d-lg-inline-block{display:inline-block!important}html .d-lg-block,html[data-netbox-color-mode=dark] .d-lg-block,html[data-netbox-color-mode=light] .d-lg-block{display:block!important}html .d-lg-grid,html[data-netbox-color-mode=dark] .d-lg-grid,html[data-netbox-color-mode=light] .d-lg-grid{display:grid!important}html .d-lg-table,html[data-netbox-color-mode=dark] .d-lg-table,html[data-netbox-color-mode=light] .d-lg-table{display:table!important}html .d-lg-table-row,html[data-netbox-color-mode=dark] .d-lg-table-row,html[data-netbox-color-mode=light] .d-lg-table-row{display:table-row!important}html .d-lg-table-cell,html[data-netbox-color-mode=dark] .d-lg-table-cell,html[data-netbox-color-mode=light] .d-lg-table-cell{display:table-cell!important}html .d-lg-flex,html[data-netbox-color-mode=dark] .d-lg-flex,html[data-netbox-color-mode=light] .d-lg-flex{display:flex!important}html .d-lg-inline-flex,html[data-netbox-color-mode=dark] .d-lg-inline-flex,html[data-netbox-color-mode=light] .d-lg-inline-flex{display:inline-flex!important}html .d-lg-none,html[data-netbox-color-mode=dark] .d-lg-none,html[data-netbox-color-mode=light] .d-lg-none{display:none!important}html .flex-lg-fill,html[data-netbox-color-mode=dark] .flex-lg-fill,html[data-netbox-color-mode=light] .flex-lg-fill{flex:1 1 auto!important}html .flex-lg-row,html[data-netbox-color-mode=dark] .flex-lg-row,html[data-netbox-color-mode=light] .flex-lg-row{flex-direction:row!important}html .flex-lg-column,html[data-netbox-color-mode=dark] .flex-lg-column,html[data-netbox-color-mode=light] .flex-lg-column{flex-direction:column!important}html .flex-lg-row-reverse,html[data-netbox-color-mode=dark] .flex-lg-row-reverse,html[data-netbox-color-mode=light] .flex-lg-row-reverse{flex-direction:row-reverse!important}html .flex-lg-column-reverse,html[data-netbox-color-mode=dark] .flex-lg-column-reverse,html[data-netbox-color-mode=light] .flex-lg-column-reverse{flex-direction:column-reverse!important}html .flex-lg-grow-0,html[data-netbox-color-mode=dark] .flex-lg-grow-0,html[data-netbox-color-mode=light] .flex-lg-grow-0{flex-grow:0!important}html .flex-lg-grow-1,html[data-netbox-color-mode=dark] .flex-lg-grow-1,html[data-netbox-color-mode=light] .flex-lg-grow-1{flex-grow:1!important}html .flex-lg-shrink-0,html[data-netbox-color-mode=dark] .flex-lg-shrink-0,html[data-netbox-color-mode=light] .flex-lg-shrink-0{flex-shrink:0!important}html .flex-lg-shrink-1,html[data-netbox-color-mode=dark] .flex-lg-shrink-1,html[data-netbox-color-mode=light] .flex-lg-shrink-1{flex-shrink:1!important}html .flex-lg-wrap,html[data-netbox-color-mode=dark] .flex-lg-wrap,html[data-netbox-color-mode=light] .flex-lg-wrap{flex-wrap:wrap!important}html .flex-lg-nowrap,html[data-netbox-color-mode=dark] .flex-lg-nowrap,html[data-netbox-color-mode=light] .flex-lg-nowrap{flex-wrap:nowrap!important}html .flex-lg-wrap-reverse,html[data-netbox-color-mode=dark] .flex-lg-wrap-reverse,html[data-netbox-color-mode=light] .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-lg-0,html[data-netbox-color-mode=dark] .gap-lg-0,html[data-netbox-color-mode=light] .gap-lg-0{gap:0!important}html .gap-lg-1,html[data-netbox-color-mode=dark] .gap-lg-1,html[data-netbox-color-mode=light] .gap-lg-1{gap:.25rem!important}html .gap-lg-2,html[data-netbox-color-mode=dark] .gap-lg-2,html[data-netbox-color-mode=light] .gap-lg-2{gap:.5rem!important}html .gap-lg-3,html[data-netbox-color-mode=dark] .gap-lg-3,html[data-netbox-color-mode=light] .gap-lg-3{gap:1rem!important}html .gap-lg-4,html[data-netbox-color-mode=dark] .gap-lg-4,html[data-netbox-color-mode=light] .gap-lg-4{gap:1.5rem!important}html .gap-lg-5,html[data-netbox-color-mode=dark] .gap-lg-5,html[data-netbox-color-mode=light] .gap-lg-5{gap:3rem!important}html .justify-content-lg-start,html[data-netbox-color-mode=dark] .justify-content-lg-start,html[data-netbox-color-mode=light] .justify-content-lg-start{justify-content:flex-start!important}html .justify-content-lg-end,html[data-netbox-color-mode=dark] .justify-content-lg-end,html[data-netbox-color-mode=light] .justify-content-lg-end{justify-content:flex-end!important}html .justify-content-lg-center,html[data-netbox-color-mode=dark] .justify-content-lg-center,html[data-netbox-color-mode=light] .justify-content-lg-center{justify-content:center!important}html .justify-content-lg-between,html[data-netbox-color-mode=dark] .justify-content-lg-between,html[data-netbox-color-mode=light] .justify-content-lg-between{justify-content:space-between!important}html .justify-content-lg-around,html[data-netbox-color-mode=dark] .justify-content-lg-around,html[data-netbox-color-mode=light] .justify-content-lg-around{justify-content:space-around!important}html .justify-content-lg-evenly,html[data-netbox-color-mode=dark] .justify-content-lg-evenly,html[data-netbox-color-mode=light] .justify-content-lg-evenly{justify-content:space-evenly!important}html .align-items-lg-start,html[data-netbox-color-mode=dark] .align-items-lg-start,html[data-netbox-color-mode=light] .align-items-lg-start{align-items:flex-start!important}html .align-items-lg-end,html[data-netbox-color-mode=dark] .align-items-lg-end,html[data-netbox-color-mode=light] .align-items-lg-end{align-items:flex-end!important}html .align-items-lg-center,html[data-netbox-color-mode=dark] .align-items-lg-center,html[data-netbox-color-mode=light] .align-items-lg-center{align-items:center!important}html .align-items-lg-baseline,html[data-netbox-color-mode=dark] .align-items-lg-baseline,html[data-netbox-color-mode=light] .align-items-lg-baseline{align-items:baseline!important}html .align-items-lg-stretch,html[data-netbox-color-mode=dark] .align-items-lg-stretch,html[data-netbox-color-mode=light] .align-items-lg-stretch{align-items:stretch!important}html .align-content-lg-start,html[data-netbox-color-mode=dark] .align-content-lg-start,html[data-netbox-color-mode=light] .align-content-lg-start{align-content:flex-start!important}html .align-content-lg-end,html[data-netbox-color-mode=dark] .align-content-lg-end,html[data-netbox-color-mode=light] .align-content-lg-end{align-content:flex-end!important}html .align-content-lg-center,html[data-netbox-color-mode=dark] .align-content-lg-center,html[data-netbox-color-mode=light] .align-content-lg-center{align-content:center!important}html .align-content-lg-between,html[data-netbox-color-mode=dark] .align-content-lg-between,html[data-netbox-color-mode=light] .align-content-lg-between{align-content:space-between!important}html .align-content-lg-around,html[data-netbox-color-mode=dark] .align-content-lg-around,html[data-netbox-color-mode=light] .align-content-lg-around{align-content:space-around!important}html .align-content-lg-stretch,html[data-netbox-color-mode=dark] .align-content-lg-stretch,html[data-netbox-color-mode=light] .align-content-lg-stretch{align-content:stretch!important}html .align-self-lg-auto,html[data-netbox-color-mode=dark] .align-self-lg-auto,html[data-netbox-color-mode=light] .align-self-lg-auto{align-self:auto!important}html .align-self-lg-start,html[data-netbox-color-mode=dark] .align-self-lg-start,html[data-netbox-color-mode=light] .align-self-lg-start{align-self:flex-start!important}html .align-self-lg-end,html[data-netbox-color-mode=dark] .align-self-lg-end,html[data-netbox-color-mode=light] .align-self-lg-end{align-self:flex-end!important}html .align-self-lg-center,html[data-netbox-color-mode=dark] .align-self-lg-center,html[data-netbox-color-mode=light] .align-self-lg-center{align-self:center!important}html .align-self-lg-baseline,html[data-netbox-color-mode=dark] .align-self-lg-baseline,html[data-netbox-color-mode=light] .align-self-lg-baseline{align-self:baseline!important}html .align-self-lg-stretch,html[data-netbox-color-mode=dark] .align-self-lg-stretch,html[data-netbox-color-mode=light] .align-self-lg-stretch{align-self:stretch!important}html .order-lg-first,html[data-netbox-color-mode=dark] .order-lg-first,html[data-netbox-color-mode=light] .order-lg-first{order:-1!important}html .order-lg-0,html[data-netbox-color-mode=dark] .order-lg-0,html[data-netbox-color-mode=light] .order-lg-0{order:0!important}html .order-lg-1,html[data-netbox-color-mode=dark] .order-lg-1,html[data-netbox-color-mode=light] .order-lg-1{order:1!important}html .order-lg-2,html[data-netbox-color-mode=dark] .order-lg-2,html[data-netbox-color-mode=light] .order-lg-2{order:2!important}html .order-lg-3,html[data-netbox-color-mode=dark] .order-lg-3,html[data-netbox-color-mode=light] .order-lg-3{order:3!important}html .order-lg-4,html[data-netbox-color-mode=dark] .order-lg-4,html[data-netbox-color-mode=light] .order-lg-4{order:4!important}html .order-lg-5,html[data-netbox-color-mode=dark] .order-lg-5,html[data-netbox-color-mode=light] .order-lg-5{order:5!important}html .order-lg-last,html[data-netbox-color-mode=dark] .order-lg-last,html[data-netbox-color-mode=light] .order-lg-last{order:6!important}html .m-lg-0,html[data-netbox-color-mode=dark] .m-lg-0,html[data-netbox-color-mode=light] .m-lg-0{margin:0!important}html .m-lg-1,html[data-netbox-color-mode=dark] .m-lg-1,html[data-netbox-color-mode=light] .m-lg-1{margin:.25rem!important}html .m-lg-2,html[data-netbox-color-mode=dark] .m-lg-2,html[data-netbox-color-mode=light] .m-lg-2{margin:.5rem!important}html .m-lg-3,html[data-netbox-color-mode=dark] .m-lg-3,html[data-netbox-color-mode=light] .m-lg-3{margin:1rem!important}html .m-lg-4,html[data-netbox-color-mode=dark] .m-lg-4,html[data-netbox-color-mode=light] .m-lg-4{margin:1.5rem!important}html .m-lg-5,html[data-netbox-color-mode=dark] .m-lg-5,html[data-netbox-color-mode=light] .m-lg-5{margin:3rem!important}html .m-lg-auto,html[data-netbox-color-mode=dark] .m-lg-auto,html[data-netbox-color-mode=light] .m-lg-auto{margin:auto!important}html .mx-lg-0,html[data-netbox-color-mode=dark] .mx-lg-0,html[data-netbox-color-mode=light] .mx-lg-0{margin-right:0!important;margin-left:0!important}html .mx-lg-1,html[data-netbox-color-mode=dark] .mx-lg-1,html[data-netbox-color-mode=light] .mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-lg-2,html[data-netbox-color-mode=dark] .mx-lg-2,html[data-netbox-color-mode=light] .mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-lg-3,html[data-netbox-color-mode=dark] .mx-lg-3,html[data-netbox-color-mode=light] .mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-lg-4,html[data-netbox-color-mode=dark] .mx-lg-4,html[data-netbox-color-mode=light] .mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-lg-5,html[data-netbox-color-mode=dark] .mx-lg-5,html[data-netbox-color-mode=light] .mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-lg-auto,html[data-netbox-color-mode=dark] .mx-lg-auto,html[data-netbox-color-mode=light] .mx-lg-auto{margin-right:auto!important;margin-left:auto!important}html .my-lg-0,html[data-netbox-color-mode=dark] .my-lg-0,html[data-netbox-color-mode=light] .my-lg-0{margin-top:0!important;margin-bottom:0!important}html .my-lg-1,html[data-netbox-color-mode=dark] .my-lg-1,html[data-netbox-color-mode=light] .my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-lg-2,html[data-netbox-color-mode=dark] .my-lg-2,html[data-netbox-color-mode=light] .my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-lg-3,html[data-netbox-color-mode=dark] .my-lg-3,html[data-netbox-color-mode=light] .my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-lg-4,html[data-netbox-color-mode=dark] .my-lg-4,html[data-netbox-color-mode=light] .my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-lg-5,html[data-netbox-color-mode=dark] .my-lg-5,html[data-netbox-color-mode=light] .my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-lg-auto,html[data-netbox-color-mode=dark] .my-lg-auto,html[data-netbox-color-mode=light] .my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-lg-0,html[data-netbox-color-mode=dark] .mt-lg-0,html[data-netbox-color-mode=light] .mt-lg-0{margin-top:0!important}html .mt-lg-1,html[data-netbox-color-mode=dark] .mt-lg-1,html[data-netbox-color-mode=light] .mt-lg-1{margin-top:.25rem!important}html .mt-lg-2,html[data-netbox-color-mode=dark] .mt-lg-2,html[data-netbox-color-mode=light] .mt-lg-2{margin-top:.5rem!important}html .mt-lg-3,html[data-netbox-color-mode=dark] .mt-lg-3,html[data-netbox-color-mode=light] .mt-lg-3{margin-top:1rem!important}html .mt-lg-4,html[data-netbox-color-mode=dark] .mt-lg-4,html[data-netbox-color-mode=light] .mt-lg-4{margin-top:1.5rem!important}html .mt-lg-5,html[data-netbox-color-mode=dark] .mt-lg-5,html[data-netbox-color-mode=light] .mt-lg-5{margin-top:3rem!important}html .mt-lg-auto,html[data-netbox-color-mode=dark] .mt-lg-auto,html[data-netbox-color-mode=light] .mt-lg-auto{margin-top:auto!important}html .me-lg-0,html[data-netbox-color-mode=dark] .me-lg-0,html[data-netbox-color-mode=light] .me-lg-0{margin-right:0!important}html .me-lg-1,html[data-netbox-color-mode=dark] .me-lg-1,html[data-netbox-color-mode=light] .me-lg-1{margin-right:.25rem!important}html .me-lg-2,html[data-netbox-color-mode=dark] .me-lg-2,html[data-netbox-color-mode=light] .me-lg-2{margin-right:.5rem!important}html .me-lg-3,html[data-netbox-color-mode=dark] .me-lg-3,html[data-netbox-color-mode=light] .me-lg-3{margin-right:1rem!important}html .me-lg-4,html[data-netbox-color-mode=dark] .me-lg-4,html[data-netbox-color-mode=light] .me-lg-4{margin-right:1.5rem!important}html .me-lg-5,html[data-netbox-color-mode=dark] .me-lg-5,html[data-netbox-color-mode=light] .me-lg-5{margin-right:3rem!important}html .me-lg-auto,html[data-netbox-color-mode=dark] .me-lg-auto,html[data-netbox-color-mode=light] .me-lg-auto{margin-right:auto!important}html .mb-lg-0,html[data-netbox-color-mode=dark] .mb-lg-0,html[data-netbox-color-mode=light] .mb-lg-0{margin-bottom:0!important}html .mb-lg-1,html[data-netbox-color-mode=dark] .mb-lg-1,html[data-netbox-color-mode=light] .mb-lg-1{margin-bottom:.25rem!important}html .mb-lg-2,html[data-netbox-color-mode=dark] .mb-lg-2,html[data-netbox-color-mode=light] .mb-lg-2{margin-bottom:.5rem!important}html .mb-lg-3,html[data-netbox-color-mode=dark] .mb-lg-3,html[data-netbox-color-mode=light] .mb-lg-3{margin-bottom:1rem!important}html .mb-lg-4,html[data-netbox-color-mode=dark] .mb-lg-4,html[data-netbox-color-mode=light] .mb-lg-4{margin-bottom:1.5rem!important}html .mb-lg-5,html[data-netbox-color-mode=dark] .mb-lg-5,html[data-netbox-color-mode=light] .mb-lg-5{margin-bottom:3rem!important}html .mb-lg-auto,html[data-netbox-color-mode=dark] .mb-lg-auto,html[data-netbox-color-mode=light] .mb-lg-auto{margin-bottom:auto!important}html .ms-lg-0,html[data-netbox-color-mode=dark] .ms-lg-0,html[data-netbox-color-mode=light] .ms-lg-0{margin-left:0!important}html .ms-lg-1,html[data-netbox-color-mode=dark] .ms-lg-1,html[data-netbox-color-mode=light] .ms-lg-1{margin-left:.25rem!important}html .ms-lg-2,html[data-netbox-color-mode=dark] .ms-lg-2,html[data-netbox-color-mode=light] .ms-lg-2{margin-left:.5rem!important}html .ms-lg-3,html[data-netbox-color-mode=dark] .ms-lg-3,html[data-netbox-color-mode=light] .ms-lg-3{margin-left:1rem!important}html .ms-lg-4,html[data-netbox-color-mode=dark] .ms-lg-4,html[data-netbox-color-mode=light] .ms-lg-4{margin-left:1.5rem!important}html .ms-lg-5,html[data-netbox-color-mode=dark] .ms-lg-5,html[data-netbox-color-mode=light] .ms-lg-5{margin-left:3rem!important}html .ms-lg-auto,html[data-netbox-color-mode=dark] .ms-lg-auto,html[data-netbox-color-mode=light] .ms-lg-auto{margin-left:auto!important}html .p-lg-0,html[data-netbox-color-mode=dark] .p-lg-0,html[data-netbox-color-mode=light] .p-lg-0{padding:0!important}html .p-lg-1,html[data-netbox-color-mode=dark] .p-lg-1,html[data-netbox-color-mode=light] .p-lg-1{padding:.25rem!important}html .p-lg-2,html[data-netbox-color-mode=dark] .p-lg-2,html[data-netbox-color-mode=light] .p-lg-2{padding:.5rem!important}html .p-lg-3,html[data-netbox-color-mode=dark] .p-lg-3,html[data-netbox-color-mode=light] .p-lg-3{padding:1rem!important}html .p-lg-4,html[data-netbox-color-mode=dark] .p-lg-4,html[data-netbox-color-mode=light] .p-lg-4{padding:1.5rem!important}html .p-lg-5,html[data-netbox-color-mode=dark] .p-lg-5,html[data-netbox-color-mode=light] .p-lg-5{padding:3rem!important}html .px-lg-0,html[data-netbox-color-mode=dark] .px-lg-0,html[data-netbox-color-mode=light] .px-lg-0{padding-right:0!important;padding-left:0!important}html .px-lg-1,html[data-netbox-color-mode=dark] .px-lg-1,html[data-netbox-color-mode=light] .px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-lg-2,html[data-netbox-color-mode=dark] .px-lg-2,html[data-netbox-color-mode=light] .px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-lg-3,html[data-netbox-color-mode=dark] .px-lg-3,html[data-netbox-color-mode=light] .px-lg-3{padding-right:1rem!important;padding-left:1rem!important}html .px-lg-4,html[data-netbox-color-mode=dark] .px-lg-4,html[data-netbox-color-mode=light] .px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-lg-5,html[data-netbox-color-mode=dark] .px-lg-5,html[data-netbox-color-mode=light] .px-lg-5{padding-right:3rem!important;padding-left:3rem!important}html .py-lg-0,html[data-netbox-color-mode=dark] .py-lg-0,html[data-netbox-color-mode=light] .py-lg-0{padding-top:0!important;padding-bottom:0!important}html .py-lg-1,html[data-netbox-color-mode=dark] .py-lg-1,html[data-netbox-color-mode=light] .py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-lg-2,html[data-netbox-color-mode=dark] .py-lg-2,html[data-netbox-color-mode=light] .py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-lg-3,html[data-netbox-color-mode=dark] .py-lg-3,html[data-netbox-color-mode=light] .py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-lg-4,html[data-netbox-color-mode=dark] .py-lg-4,html[data-netbox-color-mode=light] .py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-lg-5,html[data-netbox-color-mode=dark] .py-lg-5,html[data-netbox-color-mode=light] .py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-lg-0,html[data-netbox-color-mode=dark] .pt-lg-0,html[data-netbox-color-mode=light] .pt-lg-0{padding-top:0!important}html .pt-lg-1,html[data-netbox-color-mode=dark] .pt-lg-1,html[data-netbox-color-mode=light] .pt-lg-1{padding-top:.25rem!important}html .pt-lg-2,html[data-netbox-color-mode=dark] .pt-lg-2,html[data-netbox-color-mode=light] .pt-lg-2{padding-top:.5rem!important}html .pt-lg-3,html[data-netbox-color-mode=dark] .pt-lg-3,html[data-netbox-color-mode=light] .pt-lg-3{padding-top:1rem!important}html .pt-lg-4,html[data-netbox-color-mode=dark] .pt-lg-4,html[data-netbox-color-mode=light] .pt-lg-4{padding-top:1.5rem!important}html .pt-lg-5,html[data-netbox-color-mode=dark] .pt-lg-5,html[data-netbox-color-mode=light] .pt-lg-5{padding-top:3rem!important}html .pe-lg-0,html[data-netbox-color-mode=dark] .pe-lg-0,html[data-netbox-color-mode=light] .pe-lg-0{padding-right:0!important}html .pe-lg-1,html[data-netbox-color-mode=dark] .pe-lg-1,html[data-netbox-color-mode=light] .pe-lg-1{padding-right:.25rem!important}html .pe-lg-2,html[data-netbox-color-mode=dark] .pe-lg-2,html[data-netbox-color-mode=light] .pe-lg-2{padding-right:.5rem!important}html .pe-lg-3,html[data-netbox-color-mode=dark] .pe-lg-3,html[data-netbox-color-mode=light] .pe-lg-3{padding-right:1rem!important}html .pe-lg-4,html[data-netbox-color-mode=dark] .pe-lg-4,html[data-netbox-color-mode=light] .pe-lg-4{padding-right:1.5rem!important}html .pe-lg-5,html[data-netbox-color-mode=dark] .pe-lg-5,html[data-netbox-color-mode=light] .pe-lg-5{padding-right:3rem!important}html .pb-lg-0,html[data-netbox-color-mode=dark] .pb-lg-0,html[data-netbox-color-mode=light] .pb-lg-0{padding-bottom:0!important}html .pb-lg-1,html[data-netbox-color-mode=dark] .pb-lg-1,html[data-netbox-color-mode=light] .pb-lg-1{padding-bottom:.25rem!important}html .pb-lg-2,html[data-netbox-color-mode=dark] .pb-lg-2,html[data-netbox-color-mode=light] .pb-lg-2{padding-bottom:.5rem!important}html .pb-lg-3,html[data-netbox-color-mode=dark] .pb-lg-3,html[data-netbox-color-mode=light] .pb-lg-3{padding-bottom:1rem!important}html .pb-lg-4,html[data-netbox-color-mode=dark] .pb-lg-4,html[data-netbox-color-mode=light] .pb-lg-4{padding-bottom:1.5rem!important}html .pb-lg-5,html[data-netbox-color-mode=dark] .pb-lg-5,html[data-netbox-color-mode=light] .pb-lg-5{padding-bottom:3rem!important}html .ps-lg-0,html[data-netbox-color-mode=dark] .ps-lg-0,html[data-netbox-color-mode=light] .ps-lg-0{padding-left:0!important}html .ps-lg-1,html[data-netbox-color-mode=dark] .ps-lg-1,html[data-netbox-color-mode=light] .ps-lg-1{padding-left:.25rem!important}html .ps-lg-2,html[data-netbox-color-mode=dark] .ps-lg-2,html[data-netbox-color-mode=light] .ps-lg-2{padding-left:.5rem!important}html .ps-lg-3,html[data-netbox-color-mode=dark] .ps-lg-3,html[data-netbox-color-mode=light] .ps-lg-3{padding-left:1rem!important}html .ps-lg-4,html[data-netbox-color-mode=dark] .ps-lg-4,html[data-netbox-color-mode=light] .ps-lg-4{padding-left:1.5rem!important}html .ps-lg-5,html[data-netbox-color-mode=dark] .ps-lg-5,html[data-netbox-color-mode=light] .ps-lg-5{padding-left:3rem!important}html .text-lg-start,html[data-netbox-color-mode=dark] .text-lg-start,html[data-netbox-color-mode=light] .text-lg-start{text-align:left!important}html .text-lg-end,html[data-netbox-color-mode=dark] .text-lg-end,html[data-netbox-color-mode=light] .text-lg-end{text-align:right!important}html .text-lg-center,html[data-netbox-color-mode=dark] .text-lg-center,html[data-netbox-color-mode=light] .text-lg-center{text-align:center!important}}@media print and (min-width: 1200px){html .float-xl-start,html[data-netbox-color-mode=dark] .float-xl-start,html[data-netbox-color-mode=light] .float-xl-start{float:left!important}html .float-xl-end,html[data-netbox-color-mode=dark] .float-xl-end,html[data-netbox-color-mode=light] .float-xl-end{float:right!important}html .float-xl-none,html[data-netbox-color-mode=dark] .float-xl-none,html[data-netbox-color-mode=light] .float-xl-none{float:none!important}html .d-xl-inline,html[data-netbox-color-mode=dark] .d-xl-inline,html[data-netbox-color-mode=light] .d-xl-inline{display:inline!important}html .d-xl-inline-block,html[data-netbox-color-mode=dark] .d-xl-inline-block,html[data-netbox-color-mode=light] .d-xl-inline-block{display:inline-block!important}html .d-xl-block,html[data-netbox-color-mode=dark] .d-xl-block,html[data-netbox-color-mode=light] .d-xl-block{display:block!important}html .d-xl-grid,html[data-netbox-color-mode=dark] .d-xl-grid,html[data-netbox-color-mode=light] .d-xl-grid{display:grid!important}html .d-xl-table,html[data-netbox-color-mode=dark] .d-xl-table,html[data-netbox-color-mode=light] .d-xl-table{display:table!important}html .d-xl-table-row,html[data-netbox-color-mode=dark] .d-xl-table-row,html[data-netbox-color-mode=light] .d-xl-table-row{display:table-row!important}html .d-xl-table-cell,html[data-netbox-color-mode=dark] .d-xl-table-cell,html[data-netbox-color-mode=light] .d-xl-table-cell{display:table-cell!important}html .d-xl-flex,html[data-netbox-color-mode=dark] .d-xl-flex,html[data-netbox-color-mode=light] .d-xl-flex{display:flex!important}html .d-xl-inline-flex,html[data-netbox-color-mode=dark] .d-xl-inline-flex,html[data-netbox-color-mode=light] .d-xl-inline-flex{display:inline-flex!important}html .d-xl-none,html[data-netbox-color-mode=dark] .d-xl-none,html[data-netbox-color-mode=light] .d-xl-none{display:none!important}html .flex-xl-fill,html[data-netbox-color-mode=dark] .flex-xl-fill,html[data-netbox-color-mode=light] .flex-xl-fill{flex:1 1 auto!important}html .flex-xl-row,html[data-netbox-color-mode=dark] .flex-xl-row,html[data-netbox-color-mode=light] .flex-xl-row{flex-direction:row!important}html .flex-xl-column,html[data-netbox-color-mode=dark] .flex-xl-column,html[data-netbox-color-mode=light] .flex-xl-column{flex-direction:column!important}html .flex-xl-row-reverse,html[data-netbox-color-mode=dark] .flex-xl-row-reverse,html[data-netbox-color-mode=light] .flex-xl-row-reverse{flex-direction:row-reverse!important}html .flex-xl-column-reverse,html[data-netbox-color-mode=dark] .flex-xl-column-reverse,html[data-netbox-color-mode=light] .flex-xl-column-reverse{flex-direction:column-reverse!important}html .flex-xl-grow-0,html[data-netbox-color-mode=dark] .flex-xl-grow-0,html[data-netbox-color-mode=light] .flex-xl-grow-0{flex-grow:0!important}html .flex-xl-grow-1,html[data-netbox-color-mode=dark] .flex-xl-grow-1,html[data-netbox-color-mode=light] .flex-xl-grow-1{flex-grow:1!important}html .flex-xl-shrink-0,html[data-netbox-color-mode=dark] .flex-xl-shrink-0,html[data-netbox-color-mode=light] .flex-xl-shrink-0{flex-shrink:0!important}html .flex-xl-shrink-1,html[data-netbox-color-mode=dark] .flex-xl-shrink-1,html[data-netbox-color-mode=light] .flex-xl-shrink-1{flex-shrink:1!important}html .flex-xl-wrap,html[data-netbox-color-mode=dark] .flex-xl-wrap,html[data-netbox-color-mode=light] .flex-xl-wrap{flex-wrap:wrap!important}html .flex-xl-nowrap,html[data-netbox-color-mode=dark] .flex-xl-nowrap,html[data-netbox-color-mode=light] .flex-xl-nowrap{flex-wrap:nowrap!important}html .flex-xl-wrap-reverse,html[data-netbox-color-mode=dark] .flex-xl-wrap-reverse,html[data-netbox-color-mode=light] .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-xl-0,html[data-netbox-color-mode=dark] .gap-xl-0,html[data-netbox-color-mode=light] .gap-xl-0{gap:0!important}html .gap-xl-1,html[data-netbox-color-mode=dark] .gap-xl-1,html[data-netbox-color-mode=light] .gap-xl-1{gap:.25rem!important}html .gap-xl-2,html[data-netbox-color-mode=dark] .gap-xl-2,html[data-netbox-color-mode=light] .gap-xl-2{gap:.5rem!important}html .gap-xl-3,html[data-netbox-color-mode=dark] .gap-xl-3,html[data-netbox-color-mode=light] .gap-xl-3{gap:1rem!important}html .gap-xl-4,html[data-netbox-color-mode=dark] .gap-xl-4,html[data-netbox-color-mode=light] .gap-xl-4{gap:1.5rem!important}html .gap-xl-5,html[data-netbox-color-mode=dark] .gap-xl-5,html[data-netbox-color-mode=light] .gap-xl-5{gap:3rem!important}html .justify-content-xl-start,html[data-netbox-color-mode=dark] .justify-content-xl-start,html[data-netbox-color-mode=light] .justify-content-xl-start{justify-content:flex-start!important}html .justify-content-xl-end,html[data-netbox-color-mode=dark] .justify-content-xl-end,html[data-netbox-color-mode=light] .justify-content-xl-end{justify-content:flex-end!important}html .justify-content-xl-center,html[data-netbox-color-mode=dark] .justify-content-xl-center,html[data-netbox-color-mode=light] .justify-content-xl-center{justify-content:center!important}html .justify-content-xl-between,html[data-netbox-color-mode=dark] .justify-content-xl-between,html[data-netbox-color-mode=light] .justify-content-xl-between{justify-content:space-between!important}html .justify-content-xl-around,html[data-netbox-color-mode=dark] .justify-content-xl-around,html[data-netbox-color-mode=light] .justify-content-xl-around{justify-content:space-around!important}html .justify-content-xl-evenly,html[data-netbox-color-mode=dark] .justify-content-xl-evenly,html[data-netbox-color-mode=light] .justify-content-xl-evenly{justify-content:space-evenly!important}html .align-items-xl-start,html[data-netbox-color-mode=dark] .align-items-xl-start,html[data-netbox-color-mode=light] .align-items-xl-start{align-items:flex-start!important}html .align-items-xl-end,html[data-netbox-color-mode=dark] .align-items-xl-end,html[data-netbox-color-mode=light] .align-items-xl-end{align-items:flex-end!important}html .align-items-xl-center,html[data-netbox-color-mode=dark] .align-items-xl-center,html[data-netbox-color-mode=light] .align-items-xl-center{align-items:center!important}html .align-items-xl-baseline,html[data-netbox-color-mode=dark] .align-items-xl-baseline,html[data-netbox-color-mode=light] .align-items-xl-baseline{align-items:baseline!important}html .align-items-xl-stretch,html[data-netbox-color-mode=dark] .align-items-xl-stretch,html[data-netbox-color-mode=light] .align-items-xl-stretch{align-items:stretch!important}html .align-content-xl-start,html[data-netbox-color-mode=dark] .align-content-xl-start,html[data-netbox-color-mode=light] .align-content-xl-start{align-content:flex-start!important}html .align-content-xl-end,html[data-netbox-color-mode=dark] .align-content-xl-end,html[data-netbox-color-mode=light] .align-content-xl-end{align-content:flex-end!important}html .align-content-xl-center,html[data-netbox-color-mode=dark] .align-content-xl-center,html[data-netbox-color-mode=light] .align-content-xl-center{align-content:center!important}html .align-content-xl-between,html[data-netbox-color-mode=dark] .align-content-xl-between,html[data-netbox-color-mode=light] .align-content-xl-between{align-content:space-between!important}html .align-content-xl-around,html[data-netbox-color-mode=dark] .align-content-xl-around,html[data-netbox-color-mode=light] .align-content-xl-around{align-content:space-around!important}html .align-content-xl-stretch,html[data-netbox-color-mode=dark] .align-content-xl-stretch,html[data-netbox-color-mode=light] .align-content-xl-stretch{align-content:stretch!important}html .align-self-xl-auto,html[data-netbox-color-mode=dark] .align-self-xl-auto,html[data-netbox-color-mode=light] .align-self-xl-auto{align-self:auto!important}html .align-self-xl-start,html[data-netbox-color-mode=dark] .align-self-xl-start,html[data-netbox-color-mode=light] .align-self-xl-start{align-self:flex-start!important}html .align-self-xl-end,html[data-netbox-color-mode=dark] .align-self-xl-end,html[data-netbox-color-mode=light] .align-self-xl-end{align-self:flex-end!important}html .align-self-xl-center,html[data-netbox-color-mode=dark] .align-self-xl-center,html[data-netbox-color-mode=light] .align-self-xl-center{align-self:center!important}html .align-self-xl-baseline,html[data-netbox-color-mode=dark] .align-self-xl-baseline,html[data-netbox-color-mode=light] .align-self-xl-baseline{align-self:baseline!important}html .align-self-xl-stretch,html[data-netbox-color-mode=dark] .align-self-xl-stretch,html[data-netbox-color-mode=light] .align-self-xl-stretch{align-self:stretch!important}html .order-xl-first,html[data-netbox-color-mode=dark] .order-xl-first,html[data-netbox-color-mode=light] .order-xl-first{order:-1!important}html .order-xl-0,html[data-netbox-color-mode=dark] .order-xl-0,html[data-netbox-color-mode=light] .order-xl-0{order:0!important}html .order-xl-1,html[data-netbox-color-mode=dark] .order-xl-1,html[data-netbox-color-mode=light] .order-xl-1{order:1!important}html .order-xl-2,html[data-netbox-color-mode=dark] .order-xl-2,html[data-netbox-color-mode=light] .order-xl-2{order:2!important}html .order-xl-3,html[data-netbox-color-mode=dark] .order-xl-3,html[data-netbox-color-mode=light] .order-xl-3{order:3!important}html .order-xl-4,html[data-netbox-color-mode=dark] .order-xl-4,html[data-netbox-color-mode=light] .order-xl-4{order:4!important}html .order-xl-5,html[data-netbox-color-mode=dark] .order-xl-5,html[data-netbox-color-mode=light] .order-xl-5{order:5!important}html .order-xl-last,html[data-netbox-color-mode=dark] .order-xl-last,html[data-netbox-color-mode=light] .order-xl-last{order:6!important}html .m-xl-0,html[data-netbox-color-mode=dark] .m-xl-0,html[data-netbox-color-mode=light] .m-xl-0{margin:0!important}html .m-xl-1,html[data-netbox-color-mode=dark] .m-xl-1,html[data-netbox-color-mode=light] .m-xl-1{margin:.25rem!important}html .m-xl-2,html[data-netbox-color-mode=dark] .m-xl-2,html[data-netbox-color-mode=light] .m-xl-2{margin:.5rem!important}html .m-xl-3,html[data-netbox-color-mode=dark] .m-xl-3,html[data-netbox-color-mode=light] .m-xl-3{margin:1rem!important}html .m-xl-4,html[data-netbox-color-mode=dark] .m-xl-4,html[data-netbox-color-mode=light] .m-xl-4{margin:1.5rem!important}html .m-xl-5,html[data-netbox-color-mode=dark] .m-xl-5,html[data-netbox-color-mode=light] .m-xl-5{margin:3rem!important}html .m-xl-auto,html[data-netbox-color-mode=dark] .m-xl-auto,html[data-netbox-color-mode=light] .m-xl-auto{margin:auto!important}html .mx-xl-0,html[data-netbox-color-mode=dark] .mx-xl-0,html[data-netbox-color-mode=light] .mx-xl-0{margin-right:0!important;margin-left:0!important}html .mx-xl-1,html[data-netbox-color-mode=dark] .mx-xl-1,html[data-netbox-color-mode=light] .mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-xl-2,html[data-netbox-color-mode=dark] .mx-xl-2,html[data-netbox-color-mode=light] .mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-xl-3,html[data-netbox-color-mode=dark] .mx-xl-3,html[data-netbox-color-mode=light] .mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-xl-4,html[data-netbox-color-mode=dark] .mx-xl-4,html[data-netbox-color-mode=light] .mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-xl-5,html[data-netbox-color-mode=dark] .mx-xl-5,html[data-netbox-color-mode=light] .mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-xl-auto,html[data-netbox-color-mode=dark] .mx-xl-auto,html[data-netbox-color-mode=light] .mx-xl-auto{margin-right:auto!important;margin-left:auto!important}html .my-xl-0,html[data-netbox-color-mode=dark] .my-xl-0,html[data-netbox-color-mode=light] .my-xl-0{margin-top:0!important;margin-bottom:0!important}html .my-xl-1,html[data-netbox-color-mode=dark] .my-xl-1,html[data-netbox-color-mode=light] .my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-xl-2,html[data-netbox-color-mode=dark] .my-xl-2,html[data-netbox-color-mode=light] .my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-xl-3,html[data-netbox-color-mode=dark] .my-xl-3,html[data-netbox-color-mode=light] .my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-xl-4,html[data-netbox-color-mode=dark] .my-xl-4,html[data-netbox-color-mode=light] .my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-xl-5,html[data-netbox-color-mode=dark] .my-xl-5,html[data-netbox-color-mode=light] .my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-xl-auto,html[data-netbox-color-mode=dark] .my-xl-auto,html[data-netbox-color-mode=light] .my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-xl-0,html[data-netbox-color-mode=dark] .mt-xl-0,html[data-netbox-color-mode=light] .mt-xl-0{margin-top:0!important}html .mt-xl-1,html[data-netbox-color-mode=dark] .mt-xl-1,html[data-netbox-color-mode=light] .mt-xl-1{margin-top:.25rem!important}html .mt-xl-2,html[data-netbox-color-mode=dark] .mt-xl-2,html[data-netbox-color-mode=light] .mt-xl-2{margin-top:.5rem!important}html .mt-xl-3,html[data-netbox-color-mode=dark] .mt-xl-3,html[data-netbox-color-mode=light] .mt-xl-3{margin-top:1rem!important}html .mt-xl-4,html[data-netbox-color-mode=dark] .mt-xl-4,html[data-netbox-color-mode=light] .mt-xl-4{margin-top:1.5rem!important}html .mt-xl-5,html[data-netbox-color-mode=dark] .mt-xl-5,html[data-netbox-color-mode=light] .mt-xl-5{margin-top:3rem!important}html .mt-xl-auto,html[data-netbox-color-mode=dark] .mt-xl-auto,html[data-netbox-color-mode=light] .mt-xl-auto{margin-top:auto!important}html .me-xl-0,html[data-netbox-color-mode=dark] .me-xl-0,html[data-netbox-color-mode=light] .me-xl-0{margin-right:0!important}html .me-xl-1,html[data-netbox-color-mode=dark] .me-xl-1,html[data-netbox-color-mode=light] .me-xl-1{margin-right:.25rem!important}html .me-xl-2,html[data-netbox-color-mode=dark] .me-xl-2,html[data-netbox-color-mode=light] .me-xl-2{margin-right:.5rem!important}html .me-xl-3,html[data-netbox-color-mode=dark] .me-xl-3,html[data-netbox-color-mode=light] .me-xl-3{margin-right:1rem!important}html .me-xl-4,html[data-netbox-color-mode=dark] .me-xl-4,html[data-netbox-color-mode=light] .me-xl-4{margin-right:1.5rem!important}html .me-xl-5,html[data-netbox-color-mode=dark] .me-xl-5,html[data-netbox-color-mode=light] .me-xl-5{margin-right:3rem!important}html .me-xl-auto,html[data-netbox-color-mode=dark] .me-xl-auto,html[data-netbox-color-mode=light] .me-xl-auto{margin-right:auto!important}html .mb-xl-0,html[data-netbox-color-mode=dark] .mb-xl-0,html[data-netbox-color-mode=light] .mb-xl-0{margin-bottom:0!important}html .mb-xl-1,html[data-netbox-color-mode=dark] .mb-xl-1,html[data-netbox-color-mode=light] .mb-xl-1{margin-bottom:.25rem!important}html .mb-xl-2,html[data-netbox-color-mode=dark] .mb-xl-2,html[data-netbox-color-mode=light] .mb-xl-2{margin-bottom:.5rem!important}html .mb-xl-3,html[data-netbox-color-mode=dark] .mb-xl-3,html[data-netbox-color-mode=light] .mb-xl-3{margin-bottom:1rem!important}html .mb-xl-4,html[data-netbox-color-mode=dark] .mb-xl-4,html[data-netbox-color-mode=light] .mb-xl-4{margin-bottom:1.5rem!important}html .mb-xl-5,html[data-netbox-color-mode=dark] .mb-xl-5,html[data-netbox-color-mode=light] .mb-xl-5{margin-bottom:3rem!important}html .mb-xl-auto,html[data-netbox-color-mode=dark] .mb-xl-auto,html[data-netbox-color-mode=light] .mb-xl-auto{margin-bottom:auto!important}html .ms-xl-0,html[data-netbox-color-mode=dark] .ms-xl-0,html[data-netbox-color-mode=light] .ms-xl-0{margin-left:0!important}html .ms-xl-1,html[data-netbox-color-mode=dark] .ms-xl-1,html[data-netbox-color-mode=light] .ms-xl-1{margin-left:.25rem!important}html .ms-xl-2,html[data-netbox-color-mode=dark] .ms-xl-2,html[data-netbox-color-mode=light] .ms-xl-2{margin-left:.5rem!important}html .ms-xl-3,html[data-netbox-color-mode=dark] .ms-xl-3,html[data-netbox-color-mode=light] .ms-xl-3{margin-left:1rem!important}html .ms-xl-4,html[data-netbox-color-mode=dark] .ms-xl-4,html[data-netbox-color-mode=light] .ms-xl-4{margin-left:1.5rem!important}html .ms-xl-5,html[data-netbox-color-mode=dark] .ms-xl-5,html[data-netbox-color-mode=light] .ms-xl-5{margin-left:3rem!important}html .ms-xl-auto,html[data-netbox-color-mode=dark] .ms-xl-auto,html[data-netbox-color-mode=light] .ms-xl-auto{margin-left:auto!important}html .p-xl-0,html[data-netbox-color-mode=dark] .p-xl-0,html[data-netbox-color-mode=light] .p-xl-0{padding:0!important}html .p-xl-1,html[data-netbox-color-mode=dark] .p-xl-1,html[data-netbox-color-mode=light] .p-xl-1{padding:.25rem!important}html .p-xl-2,html[data-netbox-color-mode=dark] .p-xl-2,html[data-netbox-color-mode=light] .p-xl-2{padding:.5rem!important}html .p-xl-3,html[data-netbox-color-mode=dark] .p-xl-3,html[data-netbox-color-mode=light] .p-xl-3{padding:1rem!important}html .p-xl-4,html[data-netbox-color-mode=dark] .p-xl-4,html[data-netbox-color-mode=light] .p-xl-4{padding:1.5rem!important}html .p-xl-5,html[data-netbox-color-mode=dark] .p-xl-5,html[data-netbox-color-mode=light] .p-xl-5{padding:3rem!important}html .px-xl-0,html[data-netbox-color-mode=dark] .px-xl-0,html[data-netbox-color-mode=light] .px-xl-0{padding-right:0!important;padding-left:0!important}html .px-xl-1,html[data-netbox-color-mode=dark] .px-xl-1,html[data-netbox-color-mode=light] .px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-xl-2,html[data-netbox-color-mode=dark] .px-xl-2,html[data-netbox-color-mode=light] .px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-xl-3,html[data-netbox-color-mode=dark] .px-xl-3,html[data-netbox-color-mode=light] .px-xl-3{padding-right:1rem!important;padding-left:1rem!important}html .px-xl-4,html[data-netbox-color-mode=dark] .px-xl-4,html[data-netbox-color-mode=light] .px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-xl-5,html[data-netbox-color-mode=dark] .px-xl-5,html[data-netbox-color-mode=light] .px-xl-5{padding-right:3rem!important;padding-left:3rem!important}html .py-xl-0,html[data-netbox-color-mode=dark] .py-xl-0,html[data-netbox-color-mode=light] .py-xl-0{padding-top:0!important;padding-bottom:0!important}html .py-xl-1,html[data-netbox-color-mode=dark] .py-xl-1,html[data-netbox-color-mode=light] .py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-xl-2,html[data-netbox-color-mode=dark] .py-xl-2,html[data-netbox-color-mode=light] .py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-xl-3,html[data-netbox-color-mode=dark] .py-xl-3,html[data-netbox-color-mode=light] .py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-xl-4,html[data-netbox-color-mode=dark] .py-xl-4,html[data-netbox-color-mode=light] .py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-xl-5,html[data-netbox-color-mode=dark] .py-xl-5,html[data-netbox-color-mode=light] .py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-xl-0,html[data-netbox-color-mode=dark] .pt-xl-0,html[data-netbox-color-mode=light] .pt-xl-0{padding-top:0!important}html .pt-xl-1,html[data-netbox-color-mode=dark] .pt-xl-1,html[data-netbox-color-mode=light] .pt-xl-1{padding-top:.25rem!important}html .pt-xl-2,html[data-netbox-color-mode=dark] .pt-xl-2,html[data-netbox-color-mode=light] .pt-xl-2{padding-top:.5rem!important}html .pt-xl-3,html[data-netbox-color-mode=dark] .pt-xl-3,html[data-netbox-color-mode=light] .pt-xl-3{padding-top:1rem!important}html .pt-xl-4,html[data-netbox-color-mode=dark] .pt-xl-4,html[data-netbox-color-mode=light] .pt-xl-4{padding-top:1.5rem!important}html .pt-xl-5,html[data-netbox-color-mode=dark] .pt-xl-5,html[data-netbox-color-mode=light] .pt-xl-5{padding-top:3rem!important}html .pe-xl-0,html[data-netbox-color-mode=dark] .pe-xl-0,html[data-netbox-color-mode=light] .pe-xl-0{padding-right:0!important}html .pe-xl-1,html[data-netbox-color-mode=dark] .pe-xl-1,html[data-netbox-color-mode=light] .pe-xl-1{padding-right:.25rem!important}html .pe-xl-2,html[data-netbox-color-mode=dark] .pe-xl-2,html[data-netbox-color-mode=light] .pe-xl-2{padding-right:.5rem!important}html .pe-xl-3,html[data-netbox-color-mode=dark] .pe-xl-3,html[data-netbox-color-mode=light] .pe-xl-3{padding-right:1rem!important}html .pe-xl-4,html[data-netbox-color-mode=dark] .pe-xl-4,html[data-netbox-color-mode=light] .pe-xl-4{padding-right:1.5rem!important}html .pe-xl-5,html[data-netbox-color-mode=dark] .pe-xl-5,html[data-netbox-color-mode=light] .pe-xl-5{padding-right:3rem!important}html .pb-xl-0,html[data-netbox-color-mode=dark] .pb-xl-0,html[data-netbox-color-mode=light] .pb-xl-0{padding-bottom:0!important}html .pb-xl-1,html[data-netbox-color-mode=dark] .pb-xl-1,html[data-netbox-color-mode=light] .pb-xl-1{padding-bottom:.25rem!important}html .pb-xl-2,html[data-netbox-color-mode=dark] .pb-xl-2,html[data-netbox-color-mode=light] .pb-xl-2{padding-bottom:.5rem!important}html .pb-xl-3,html[data-netbox-color-mode=dark] .pb-xl-3,html[data-netbox-color-mode=light] .pb-xl-3{padding-bottom:1rem!important}html .pb-xl-4,html[data-netbox-color-mode=dark] .pb-xl-4,html[data-netbox-color-mode=light] .pb-xl-4{padding-bottom:1.5rem!important}html .pb-xl-5,html[data-netbox-color-mode=dark] .pb-xl-5,html[data-netbox-color-mode=light] .pb-xl-5{padding-bottom:3rem!important}html .ps-xl-0,html[data-netbox-color-mode=dark] .ps-xl-0,html[data-netbox-color-mode=light] .ps-xl-0{padding-left:0!important}html .ps-xl-1,html[data-netbox-color-mode=dark] .ps-xl-1,html[data-netbox-color-mode=light] .ps-xl-1{padding-left:.25rem!important}html .ps-xl-2,html[data-netbox-color-mode=dark] .ps-xl-2,html[data-netbox-color-mode=light] .ps-xl-2{padding-left:.5rem!important}html .ps-xl-3,html[data-netbox-color-mode=dark] .ps-xl-3,html[data-netbox-color-mode=light] .ps-xl-3{padding-left:1rem!important}html .ps-xl-4,html[data-netbox-color-mode=dark] .ps-xl-4,html[data-netbox-color-mode=light] .ps-xl-4{padding-left:1.5rem!important}html .ps-xl-5,html[data-netbox-color-mode=dark] .ps-xl-5,html[data-netbox-color-mode=light] .ps-xl-5{padding-left:3rem!important}html .text-xl-start,html[data-netbox-color-mode=dark] .text-xl-start,html[data-netbox-color-mode=light] .text-xl-start{text-align:left!important}html .text-xl-end,html[data-netbox-color-mode=dark] .text-xl-end,html[data-netbox-color-mode=light] .text-xl-end{text-align:right!important}html .text-xl-center,html[data-netbox-color-mode=dark] .text-xl-center,html[data-netbox-color-mode=light] .text-xl-center{text-align:center!important}}@media print and (min-width: 1400px){html .float-xxl-start,html[data-netbox-color-mode=dark] .float-xxl-start,html[data-netbox-color-mode=light] .float-xxl-start{float:left!important}html .float-xxl-end,html[data-netbox-color-mode=dark] .float-xxl-end,html[data-netbox-color-mode=light] .float-xxl-end{float:right!important}html .float-xxl-none,html[data-netbox-color-mode=dark] .float-xxl-none,html[data-netbox-color-mode=light] .float-xxl-none{float:none!important}html .d-xxl-inline,html[data-netbox-color-mode=dark] .d-xxl-inline,html[data-netbox-color-mode=light] .d-xxl-inline{display:inline!important}html .d-xxl-inline-block,html[data-netbox-color-mode=dark] .d-xxl-inline-block,html[data-netbox-color-mode=light] .d-xxl-inline-block{display:inline-block!important}html .d-xxl-block,html[data-netbox-color-mode=dark] .d-xxl-block,html[data-netbox-color-mode=light] .d-xxl-block{display:block!important}html .d-xxl-grid,html[data-netbox-color-mode=dark] .d-xxl-grid,html[data-netbox-color-mode=light] .d-xxl-grid{display:grid!important}html .d-xxl-table,html[data-netbox-color-mode=dark] .d-xxl-table,html[data-netbox-color-mode=light] .d-xxl-table{display:table!important}html .d-xxl-table-row,html[data-netbox-color-mode=dark] .d-xxl-table-row,html[data-netbox-color-mode=light] .d-xxl-table-row{display:table-row!important}html .d-xxl-table-cell,html[data-netbox-color-mode=dark] .d-xxl-table-cell,html[data-netbox-color-mode=light] .d-xxl-table-cell{display:table-cell!important}html .d-xxl-flex,html[data-netbox-color-mode=dark] .d-xxl-flex,html[data-netbox-color-mode=light] .d-xxl-flex{display:flex!important}html .d-xxl-inline-flex,html[data-netbox-color-mode=dark] .d-xxl-inline-flex,html[data-netbox-color-mode=light] .d-xxl-inline-flex{display:inline-flex!important}html .d-xxl-none,html[data-netbox-color-mode=dark] .d-xxl-none,html[data-netbox-color-mode=light] .d-xxl-none{display:none!important}html .flex-xxl-fill,html[data-netbox-color-mode=dark] .flex-xxl-fill,html[data-netbox-color-mode=light] .flex-xxl-fill{flex:1 1 auto!important}html .flex-xxl-row,html[data-netbox-color-mode=dark] .flex-xxl-row,html[data-netbox-color-mode=light] .flex-xxl-row{flex-direction:row!important}html .flex-xxl-column,html[data-netbox-color-mode=dark] .flex-xxl-column,html[data-netbox-color-mode=light] .flex-xxl-column{flex-direction:column!important}html .flex-xxl-row-reverse,html[data-netbox-color-mode=dark] .flex-xxl-row-reverse,html[data-netbox-color-mode=light] .flex-xxl-row-reverse{flex-direction:row-reverse!important}html .flex-xxl-column-reverse,html[data-netbox-color-mode=dark] .flex-xxl-column-reverse,html[data-netbox-color-mode=light] .flex-xxl-column-reverse{flex-direction:column-reverse!important}html .flex-xxl-grow-0,html[data-netbox-color-mode=dark] .flex-xxl-grow-0,html[data-netbox-color-mode=light] .flex-xxl-grow-0{flex-grow:0!important}html .flex-xxl-grow-1,html[data-netbox-color-mode=dark] .flex-xxl-grow-1,html[data-netbox-color-mode=light] .flex-xxl-grow-1{flex-grow:1!important}html .flex-xxl-shrink-0,html[data-netbox-color-mode=dark] .flex-xxl-shrink-0,html[data-netbox-color-mode=light] .flex-xxl-shrink-0{flex-shrink:0!important}html .flex-xxl-shrink-1,html[data-netbox-color-mode=dark] .flex-xxl-shrink-1,html[data-netbox-color-mode=light] .flex-xxl-shrink-1{flex-shrink:1!important}html .flex-xxl-wrap,html[data-netbox-color-mode=dark] .flex-xxl-wrap,html[data-netbox-color-mode=light] .flex-xxl-wrap{flex-wrap:wrap!important}html .flex-xxl-nowrap,html[data-netbox-color-mode=dark] .flex-xxl-nowrap,html[data-netbox-color-mode=light] .flex-xxl-nowrap{flex-wrap:nowrap!important}html .flex-xxl-wrap-reverse,html[data-netbox-color-mode=dark] .flex-xxl-wrap-reverse,html[data-netbox-color-mode=light] .flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}html .gap-xxl-0,html[data-netbox-color-mode=dark] .gap-xxl-0,html[data-netbox-color-mode=light] .gap-xxl-0{gap:0!important}html .gap-xxl-1,html[data-netbox-color-mode=dark] .gap-xxl-1,html[data-netbox-color-mode=light] .gap-xxl-1{gap:.25rem!important}html .gap-xxl-2,html[data-netbox-color-mode=dark] .gap-xxl-2,html[data-netbox-color-mode=light] .gap-xxl-2{gap:.5rem!important}html .gap-xxl-3,html[data-netbox-color-mode=dark] .gap-xxl-3,html[data-netbox-color-mode=light] .gap-xxl-3{gap:1rem!important}html .gap-xxl-4,html[data-netbox-color-mode=dark] .gap-xxl-4,html[data-netbox-color-mode=light] .gap-xxl-4{gap:1.5rem!important}html .gap-xxl-5,html[data-netbox-color-mode=dark] .gap-xxl-5,html[data-netbox-color-mode=light] .gap-xxl-5{gap:3rem!important}html .justify-content-xxl-start,html[data-netbox-color-mode=dark] .justify-content-xxl-start,html[data-netbox-color-mode=light] .justify-content-xxl-start{justify-content:flex-start!important}html .justify-content-xxl-end,html[data-netbox-color-mode=dark] .justify-content-xxl-end,html[data-netbox-color-mode=light] .justify-content-xxl-end{justify-content:flex-end!important}html .justify-content-xxl-center,html[data-netbox-color-mode=dark] .justify-content-xxl-center,html[data-netbox-color-mode=light] .justify-content-xxl-center{justify-content:center!important}html .justify-content-xxl-between,html[data-netbox-color-mode=dark] .justify-content-xxl-between,html[data-netbox-color-mode=light] .justify-content-xxl-between{justify-content:space-between!important}html .justify-content-xxl-around,html[data-netbox-color-mode=dark] .justify-content-xxl-around,html[data-netbox-color-mode=light] .justify-content-xxl-around{justify-content:space-around!important}html .justify-content-xxl-evenly,html[data-netbox-color-mode=dark] .justify-content-xxl-evenly,html[data-netbox-color-mode=light] .justify-content-xxl-evenly{justify-content:space-evenly!important}html .align-items-xxl-start,html[data-netbox-color-mode=dark] .align-items-xxl-start,html[data-netbox-color-mode=light] .align-items-xxl-start{align-items:flex-start!important}html .align-items-xxl-end,html[data-netbox-color-mode=dark] .align-items-xxl-end,html[data-netbox-color-mode=light] .align-items-xxl-end{align-items:flex-end!important}html .align-items-xxl-center,html[data-netbox-color-mode=dark] .align-items-xxl-center,html[data-netbox-color-mode=light] .align-items-xxl-center{align-items:center!important}html .align-items-xxl-baseline,html[data-netbox-color-mode=dark] .align-items-xxl-baseline,html[data-netbox-color-mode=light] .align-items-xxl-baseline{align-items:baseline!important}html .align-items-xxl-stretch,html[data-netbox-color-mode=dark] .align-items-xxl-stretch,html[data-netbox-color-mode=light] .align-items-xxl-stretch{align-items:stretch!important}html .align-content-xxl-start,html[data-netbox-color-mode=dark] .align-content-xxl-start,html[data-netbox-color-mode=light] .align-content-xxl-start{align-content:flex-start!important}html .align-content-xxl-end,html[data-netbox-color-mode=dark] .align-content-xxl-end,html[data-netbox-color-mode=light] .align-content-xxl-end{align-content:flex-end!important}html .align-content-xxl-center,html[data-netbox-color-mode=dark] .align-content-xxl-center,html[data-netbox-color-mode=light] .align-content-xxl-center{align-content:center!important}html .align-content-xxl-between,html[data-netbox-color-mode=dark] .align-content-xxl-between,html[data-netbox-color-mode=light] .align-content-xxl-between{align-content:space-between!important}html .align-content-xxl-around,html[data-netbox-color-mode=dark] .align-content-xxl-around,html[data-netbox-color-mode=light] .align-content-xxl-around{align-content:space-around!important}html .align-content-xxl-stretch,html[data-netbox-color-mode=dark] .align-content-xxl-stretch,html[data-netbox-color-mode=light] .align-content-xxl-stretch{align-content:stretch!important}html .align-self-xxl-auto,html[data-netbox-color-mode=dark] .align-self-xxl-auto,html[data-netbox-color-mode=light] .align-self-xxl-auto{align-self:auto!important}html .align-self-xxl-start,html[data-netbox-color-mode=dark] .align-self-xxl-start,html[data-netbox-color-mode=light] .align-self-xxl-start{align-self:flex-start!important}html .align-self-xxl-end,html[data-netbox-color-mode=dark] .align-self-xxl-end,html[data-netbox-color-mode=light] .align-self-xxl-end{align-self:flex-end!important}html .align-self-xxl-center,html[data-netbox-color-mode=dark] .align-self-xxl-center,html[data-netbox-color-mode=light] .align-self-xxl-center{align-self:center!important}html .align-self-xxl-baseline,html[data-netbox-color-mode=dark] .align-self-xxl-baseline,html[data-netbox-color-mode=light] .align-self-xxl-baseline{align-self:baseline!important}html .align-self-xxl-stretch,html[data-netbox-color-mode=dark] .align-self-xxl-stretch,html[data-netbox-color-mode=light] .align-self-xxl-stretch{align-self:stretch!important}html .order-xxl-first,html[data-netbox-color-mode=dark] .order-xxl-first,html[data-netbox-color-mode=light] .order-xxl-first{order:-1!important}html .order-xxl-0,html[data-netbox-color-mode=dark] .order-xxl-0,html[data-netbox-color-mode=light] .order-xxl-0{order:0!important}html .order-xxl-1,html[data-netbox-color-mode=dark] .order-xxl-1,html[data-netbox-color-mode=light] .order-xxl-1{order:1!important}html .order-xxl-2,html[data-netbox-color-mode=dark] .order-xxl-2,html[data-netbox-color-mode=light] .order-xxl-2{order:2!important}html .order-xxl-3,html[data-netbox-color-mode=dark] .order-xxl-3,html[data-netbox-color-mode=light] .order-xxl-3{order:3!important}html .order-xxl-4,html[data-netbox-color-mode=dark] .order-xxl-4,html[data-netbox-color-mode=light] .order-xxl-4{order:4!important}html .order-xxl-5,html[data-netbox-color-mode=dark] .order-xxl-5,html[data-netbox-color-mode=light] .order-xxl-5{order:5!important}html .order-xxl-last,html[data-netbox-color-mode=dark] .order-xxl-last,html[data-netbox-color-mode=light] .order-xxl-last{order:6!important}html .m-xxl-0,html[data-netbox-color-mode=dark] .m-xxl-0,html[data-netbox-color-mode=light] .m-xxl-0{margin:0!important}html .m-xxl-1,html[data-netbox-color-mode=dark] .m-xxl-1,html[data-netbox-color-mode=light] .m-xxl-1{margin:.25rem!important}html .m-xxl-2,html[data-netbox-color-mode=dark] .m-xxl-2,html[data-netbox-color-mode=light] .m-xxl-2{margin:.5rem!important}html .m-xxl-3,html[data-netbox-color-mode=dark] .m-xxl-3,html[data-netbox-color-mode=light] .m-xxl-3{margin:1rem!important}html .m-xxl-4,html[data-netbox-color-mode=dark] .m-xxl-4,html[data-netbox-color-mode=light] .m-xxl-4{margin:1.5rem!important}html .m-xxl-5,html[data-netbox-color-mode=dark] .m-xxl-5,html[data-netbox-color-mode=light] .m-xxl-5{margin:3rem!important}html .m-xxl-auto,html[data-netbox-color-mode=dark] .m-xxl-auto,html[data-netbox-color-mode=light] .m-xxl-auto{margin:auto!important}html .mx-xxl-0,html[data-netbox-color-mode=dark] .mx-xxl-0,html[data-netbox-color-mode=light] .mx-xxl-0{margin-right:0!important;margin-left:0!important}html .mx-xxl-1,html[data-netbox-color-mode=dark] .mx-xxl-1,html[data-netbox-color-mode=light] .mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}html .mx-xxl-2,html[data-netbox-color-mode=dark] .mx-xxl-2,html[data-netbox-color-mode=light] .mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}html .mx-xxl-3,html[data-netbox-color-mode=dark] .mx-xxl-3,html[data-netbox-color-mode=light] .mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}html .mx-xxl-4,html[data-netbox-color-mode=dark] .mx-xxl-4,html[data-netbox-color-mode=light] .mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}html .mx-xxl-5,html[data-netbox-color-mode=dark] .mx-xxl-5,html[data-netbox-color-mode=light] .mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}html .mx-xxl-auto,html[data-netbox-color-mode=dark] .mx-xxl-auto,html[data-netbox-color-mode=light] .mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}html .my-xxl-0,html[data-netbox-color-mode=dark] .my-xxl-0,html[data-netbox-color-mode=light] .my-xxl-0{margin-top:0!important;margin-bottom:0!important}html .my-xxl-1,html[data-netbox-color-mode=dark] .my-xxl-1,html[data-netbox-color-mode=light] .my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}html .my-xxl-2,html[data-netbox-color-mode=dark] .my-xxl-2,html[data-netbox-color-mode=light] .my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}html .my-xxl-3,html[data-netbox-color-mode=dark] .my-xxl-3,html[data-netbox-color-mode=light] .my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}html .my-xxl-4,html[data-netbox-color-mode=dark] .my-xxl-4,html[data-netbox-color-mode=light] .my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}html .my-xxl-5,html[data-netbox-color-mode=dark] .my-xxl-5,html[data-netbox-color-mode=light] .my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}html .my-xxl-auto,html[data-netbox-color-mode=dark] .my-xxl-auto,html[data-netbox-color-mode=light] .my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}html .mt-xxl-0,html[data-netbox-color-mode=dark] .mt-xxl-0,html[data-netbox-color-mode=light] .mt-xxl-0{margin-top:0!important}html .mt-xxl-1,html[data-netbox-color-mode=dark] .mt-xxl-1,html[data-netbox-color-mode=light] .mt-xxl-1{margin-top:.25rem!important}html .mt-xxl-2,html[data-netbox-color-mode=dark] .mt-xxl-2,html[data-netbox-color-mode=light] .mt-xxl-2{margin-top:.5rem!important}html .mt-xxl-3,html[data-netbox-color-mode=dark] .mt-xxl-3,html[data-netbox-color-mode=light] .mt-xxl-3{margin-top:1rem!important}html .mt-xxl-4,html[data-netbox-color-mode=dark] .mt-xxl-4,html[data-netbox-color-mode=light] .mt-xxl-4{margin-top:1.5rem!important}html .mt-xxl-5,html[data-netbox-color-mode=dark] .mt-xxl-5,html[data-netbox-color-mode=light] .mt-xxl-5{margin-top:3rem!important}html .mt-xxl-auto,html[data-netbox-color-mode=dark] .mt-xxl-auto,html[data-netbox-color-mode=light] .mt-xxl-auto{margin-top:auto!important}html .me-xxl-0,html[data-netbox-color-mode=dark] .me-xxl-0,html[data-netbox-color-mode=light] .me-xxl-0{margin-right:0!important}html .me-xxl-1,html[data-netbox-color-mode=dark] .me-xxl-1,html[data-netbox-color-mode=light] .me-xxl-1{margin-right:.25rem!important}html .me-xxl-2,html[data-netbox-color-mode=dark] .me-xxl-2,html[data-netbox-color-mode=light] .me-xxl-2{margin-right:.5rem!important}html .me-xxl-3,html[data-netbox-color-mode=dark] .me-xxl-3,html[data-netbox-color-mode=light] .me-xxl-3{margin-right:1rem!important}html .me-xxl-4,html[data-netbox-color-mode=dark] .me-xxl-4,html[data-netbox-color-mode=light] .me-xxl-4{margin-right:1.5rem!important}html .me-xxl-5,html[data-netbox-color-mode=dark] .me-xxl-5,html[data-netbox-color-mode=light] .me-xxl-5{margin-right:3rem!important}html .me-xxl-auto,html[data-netbox-color-mode=dark] .me-xxl-auto,html[data-netbox-color-mode=light] .me-xxl-auto{margin-right:auto!important}html .mb-xxl-0,html[data-netbox-color-mode=dark] .mb-xxl-0,html[data-netbox-color-mode=light] .mb-xxl-0{margin-bottom:0!important}html .mb-xxl-1,html[data-netbox-color-mode=dark] .mb-xxl-1,html[data-netbox-color-mode=light] .mb-xxl-1{margin-bottom:.25rem!important}html .mb-xxl-2,html[data-netbox-color-mode=dark] .mb-xxl-2,html[data-netbox-color-mode=light] .mb-xxl-2{margin-bottom:.5rem!important}html .mb-xxl-3,html[data-netbox-color-mode=dark] .mb-xxl-3,html[data-netbox-color-mode=light] .mb-xxl-3{margin-bottom:1rem!important}html .mb-xxl-4,html[data-netbox-color-mode=dark] .mb-xxl-4,html[data-netbox-color-mode=light] .mb-xxl-4{margin-bottom:1.5rem!important}html .mb-xxl-5,html[data-netbox-color-mode=dark] .mb-xxl-5,html[data-netbox-color-mode=light] .mb-xxl-5{margin-bottom:3rem!important}html .mb-xxl-auto,html[data-netbox-color-mode=dark] .mb-xxl-auto,html[data-netbox-color-mode=light] .mb-xxl-auto{margin-bottom:auto!important}html .ms-xxl-0,html[data-netbox-color-mode=dark] .ms-xxl-0,html[data-netbox-color-mode=light] .ms-xxl-0{margin-left:0!important}html .ms-xxl-1,html[data-netbox-color-mode=dark] .ms-xxl-1,html[data-netbox-color-mode=light] .ms-xxl-1{margin-left:.25rem!important}html .ms-xxl-2,html[data-netbox-color-mode=dark] .ms-xxl-2,html[data-netbox-color-mode=light] .ms-xxl-2{margin-left:.5rem!important}html .ms-xxl-3,html[data-netbox-color-mode=dark] .ms-xxl-3,html[data-netbox-color-mode=light] .ms-xxl-3{margin-left:1rem!important}html .ms-xxl-4,html[data-netbox-color-mode=dark] .ms-xxl-4,html[data-netbox-color-mode=light] .ms-xxl-4{margin-left:1.5rem!important}html .ms-xxl-5,html[data-netbox-color-mode=dark] .ms-xxl-5,html[data-netbox-color-mode=light] .ms-xxl-5{margin-left:3rem!important}html .ms-xxl-auto,html[data-netbox-color-mode=dark] .ms-xxl-auto,html[data-netbox-color-mode=light] .ms-xxl-auto{margin-left:auto!important}html .p-xxl-0,html[data-netbox-color-mode=dark] .p-xxl-0,html[data-netbox-color-mode=light] .p-xxl-0{padding:0!important}html .p-xxl-1,html[data-netbox-color-mode=dark] .p-xxl-1,html[data-netbox-color-mode=light] .p-xxl-1{padding:.25rem!important}html .p-xxl-2,html[data-netbox-color-mode=dark] .p-xxl-2,html[data-netbox-color-mode=light] .p-xxl-2{padding:.5rem!important}html .p-xxl-3,html[data-netbox-color-mode=dark] .p-xxl-3,html[data-netbox-color-mode=light] .p-xxl-3{padding:1rem!important}html .p-xxl-4,html[data-netbox-color-mode=dark] .p-xxl-4,html[data-netbox-color-mode=light] .p-xxl-4{padding:1.5rem!important}html .p-xxl-5,html[data-netbox-color-mode=dark] .p-xxl-5,html[data-netbox-color-mode=light] .p-xxl-5{padding:3rem!important}html .px-xxl-0,html[data-netbox-color-mode=dark] .px-xxl-0,html[data-netbox-color-mode=light] .px-xxl-0{padding-right:0!important;padding-left:0!important}html .px-xxl-1,html[data-netbox-color-mode=dark] .px-xxl-1,html[data-netbox-color-mode=light] .px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}html .px-xxl-2,html[data-netbox-color-mode=dark] .px-xxl-2,html[data-netbox-color-mode=light] .px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}html .px-xxl-3,html[data-netbox-color-mode=dark] .px-xxl-3,html[data-netbox-color-mode=light] .px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}html .px-xxl-4,html[data-netbox-color-mode=dark] .px-xxl-4,html[data-netbox-color-mode=light] .px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}html .px-xxl-5,html[data-netbox-color-mode=dark] .px-xxl-5,html[data-netbox-color-mode=light] .px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}html .py-xxl-0,html[data-netbox-color-mode=dark] .py-xxl-0,html[data-netbox-color-mode=light] .py-xxl-0{padding-top:0!important;padding-bottom:0!important}html .py-xxl-1,html[data-netbox-color-mode=dark] .py-xxl-1,html[data-netbox-color-mode=light] .py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}html .py-xxl-2,html[data-netbox-color-mode=dark] .py-xxl-2,html[data-netbox-color-mode=light] .py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}html .py-xxl-3,html[data-netbox-color-mode=dark] .py-xxl-3,html[data-netbox-color-mode=light] .py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}html .py-xxl-4,html[data-netbox-color-mode=dark] .py-xxl-4,html[data-netbox-color-mode=light] .py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}html .py-xxl-5,html[data-netbox-color-mode=dark] .py-xxl-5,html[data-netbox-color-mode=light] .py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}html .pt-xxl-0,html[data-netbox-color-mode=dark] .pt-xxl-0,html[data-netbox-color-mode=light] .pt-xxl-0{padding-top:0!important}html .pt-xxl-1,html[data-netbox-color-mode=dark] .pt-xxl-1,html[data-netbox-color-mode=light] .pt-xxl-1{padding-top:.25rem!important}html .pt-xxl-2,html[data-netbox-color-mode=dark] .pt-xxl-2,html[data-netbox-color-mode=light] .pt-xxl-2{padding-top:.5rem!important}html .pt-xxl-3,html[data-netbox-color-mode=dark] .pt-xxl-3,html[data-netbox-color-mode=light] .pt-xxl-3{padding-top:1rem!important}html .pt-xxl-4,html[data-netbox-color-mode=dark] .pt-xxl-4,html[data-netbox-color-mode=light] .pt-xxl-4{padding-top:1.5rem!important}html .pt-xxl-5,html[data-netbox-color-mode=dark] .pt-xxl-5,html[data-netbox-color-mode=light] .pt-xxl-5{padding-top:3rem!important}html .pe-xxl-0,html[data-netbox-color-mode=dark] .pe-xxl-0,html[data-netbox-color-mode=light] .pe-xxl-0{padding-right:0!important}html .pe-xxl-1,html[data-netbox-color-mode=dark] .pe-xxl-1,html[data-netbox-color-mode=light] .pe-xxl-1{padding-right:.25rem!important}html .pe-xxl-2,html[data-netbox-color-mode=dark] .pe-xxl-2,html[data-netbox-color-mode=light] .pe-xxl-2{padding-right:.5rem!important}html .pe-xxl-3,html[data-netbox-color-mode=dark] .pe-xxl-3,html[data-netbox-color-mode=light] .pe-xxl-3{padding-right:1rem!important}html .pe-xxl-4,html[data-netbox-color-mode=dark] .pe-xxl-4,html[data-netbox-color-mode=light] .pe-xxl-4{padding-right:1.5rem!important}html .pe-xxl-5,html[data-netbox-color-mode=dark] .pe-xxl-5,html[data-netbox-color-mode=light] .pe-xxl-5{padding-right:3rem!important}html .pb-xxl-0,html[data-netbox-color-mode=dark] .pb-xxl-0,html[data-netbox-color-mode=light] .pb-xxl-0{padding-bottom:0!important}html .pb-xxl-1,html[data-netbox-color-mode=dark] .pb-xxl-1,html[data-netbox-color-mode=light] .pb-xxl-1{padding-bottom:.25rem!important}html .pb-xxl-2,html[data-netbox-color-mode=dark] .pb-xxl-2,html[data-netbox-color-mode=light] .pb-xxl-2{padding-bottom:.5rem!important}html .pb-xxl-3,html[data-netbox-color-mode=dark] .pb-xxl-3,html[data-netbox-color-mode=light] .pb-xxl-3{padding-bottom:1rem!important}html .pb-xxl-4,html[data-netbox-color-mode=dark] .pb-xxl-4,html[data-netbox-color-mode=light] .pb-xxl-4{padding-bottom:1.5rem!important}html .pb-xxl-5,html[data-netbox-color-mode=dark] .pb-xxl-5,html[data-netbox-color-mode=light] .pb-xxl-5{padding-bottom:3rem!important}html .ps-xxl-0,html[data-netbox-color-mode=dark] .ps-xxl-0,html[data-netbox-color-mode=light] .ps-xxl-0{padding-left:0!important}html .ps-xxl-1,html[data-netbox-color-mode=dark] .ps-xxl-1,html[data-netbox-color-mode=light] .ps-xxl-1{padding-left:.25rem!important}html .ps-xxl-2,html[data-netbox-color-mode=dark] .ps-xxl-2,html[data-netbox-color-mode=light] .ps-xxl-2{padding-left:.5rem!important}html .ps-xxl-3,html[data-netbox-color-mode=dark] .ps-xxl-3,html[data-netbox-color-mode=light] .ps-xxl-3{padding-left:1rem!important}html .ps-xxl-4,html[data-netbox-color-mode=dark] .ps-xxl-4,html[data-netbox-color-mode=light] .ps-xxl-4{padding-left:1.5rem!important}html .ps-xxl-5,html[data-netbox-color-mode=dark] .ps-xxl-5,html[data-netbox-color-mode=light] .ps-xxl-5{padding-left:3rem!important}html .text-xxl-start,html[data-netbox-color-mode=dark] .text-xxl-start,html[data-netbox-color-mode=light] .text-xxl-start{text-align:left!important}html .text-xxl-end,html[data-netbox-color-mode=dark] .text-xxl-end,html[data-netbox-color-mode=light] .text-xxl-end{text-align:right!important}html .text-xxl-center,html[data-netbox-color-mode=dark] .text-xxl-center,html[data-netbox-color-mode=light] .text-xxl-center{text-align:center!important}}@media print and (min-width: 1200px){html .fs-1,html[data-netbox-color-mode=dark] .fs-1,html[data-netbox-color-mode=light] .fs-1{font-size:2.5rem!important}html .fs-2,html[data-netbox-color-mode=dark] .fs-2,html[data-netbox-color-mode=light] .fs-2{font-size:2rem!important}html .fs-3,html[data-netbox-color-mode=dark] .fs-3,html[data-netbox-color-mode=light] .fs-3{font-size:1.75rem!important}html .fs-4,html[data-netbox-color-mode=dark] .fs-4,html[data-netbox-color-mode=light] .fs-4{font-size:1.5rem!important}}@media print{html .d-print-inline,html[data-netbox-color-mode=dark] .d-print-inline,html[data-netbox-color-mode=light] .d-print-inline{display:inline!important}html .d-print-inline-block,html[data-netbox-color-mode=dark] .d-print-inline-block,html[data-netbox-color-mode=light] .d-print-inline-block{display:inline-block!important}html .d-print-block,html[data-netbox-color-mode=dark] .d-print-block,html[data-netbox-color-mode=light] .d-print-block{display:block!important}html .d-print-grid,html[data-netbox-color-mode=dark] .d-print-grid,html[data-netbox-color-mode=light] .d-print-grid{display:grid!important}html .d-print-table,html[data-netbox-color-mode=dark] .d-print-table,html[data-netbox-color-mode=light] .d-print-table{display:table!important}html .d-print-table-row,html[data-netbox-color-mode=dark] .d-print-table-row,html[data-netbox-color-mode=light] .d-print-table-row{display:table-row!important}html .d-print-table-cell,html[data-netbox-color-mode=dark] .d-print-table-cell,html[data-netbox-color-mode=light] .d-print-table-cell{display:table-cell!important}html .d-print-flex,html[data-netbox-color-mode=dark] .d-print-flex,html[data-netbox-color-mode=light] .d-print-flex{display:flex!important}html .d-print-inline-flex,html[data-netbox-color-mode=dark] .d-print-inline-flex,html[data-netbox-color-mode=light] .d-print-inline-flex{display:inline-flex!important}html .d-print-none,html[data-netbox-color-mode=dark] .d-print-none,html[data-netbox-color-mode=light] .d-print-none{display:none!important}}@media print{html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--nbx-select-content-bg: #fff;--nbx-select-option-selected-bg: #dee2e6;--nbx-select-option-hover-bg: #0d6efd;--nbx-select-option-hover-color: #fff;--nbx-select-placeholder-color: #adb5bd;--nbx-select-value-color: #fff}html :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=light] :root[data-netbox-color-mode=dark]{--nbx-select-content-bg: #212529;--nbx-select-option-selected-bg: #adb5bd;--nbx-select-option-hover-bg: #9ec5fe;--nbx-select-option-hover-color: #000;--nbx-select-placeholder-color: #495057;--nbx-select-value-color: #000}}@media print{html .ss-main,html[data-netbox-color-mode=dark] .ss-main,html[data-netbox-color-mode=light] .ss-main{position:relative;display:inline-block;user-select:none;color:#212529;width:100%}html .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=light] .ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:calc(1.5em + 0.75rem + 2px);padding:.75rem;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html .ss-main .ss-single-selected.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}html .ss-main .ss-single-selected.ss-open-above,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-above,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html .ss-main .ss-single-selected.ss-open-below,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected.ss-open-below,html[data-netbox-color-mode=light] .ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html .ss-main .ss-single-selected .placeholder,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html .ss-main .ss-single-selected .placeholder *,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder *,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}html .ss-main .ss-single-selected .placeholder .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder .ss-disabled{color:#6c757d}html .ss-main .ss-single-selected .ss-deselect,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem;font-weight:700}html .ss-main .ss-single-selected .ss-deselect.ss-hide,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-deselect.ss-hide,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}html .ss-main .ss-single-selected .ss-arrow,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 .75rem}html .ss-main .ss-single-selected .ss-arrow span,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span{border:solid #212529;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}html .ss-main .ss-single-selected .ss-arrow span.arrow-up,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-up,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0}html .ss-main .ss-single-selected .ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .ss-arrow span.arrow-down,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0}html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:calc(1.5em + 0.75rem + 2px);width:100%;padding:0 0 0 3px;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}html .ss-main .ss-multi-selected.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled{background-color:#ced4da;cursor:not-allowed}html .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#212529}html .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}html .ss-main .ss-multi-selected.ss-open-above,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-above,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}html .ss-main .ss-multi-selected.ss-open-below,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected.ss-open-below,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}html .ss-main .ss-multi-selected .ss-values,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}html .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(0);opacity:0}}html .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#337ab7;border-radius:.375rem;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}html .ss-main .ss-multi-selected .ss-values .ss-value.ss-out,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}html .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}html .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}html .ss-main .ss-multi-selected .ss-add .ss-plus,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#212529;position:relative;height:10px;width:2px;transition:transform .2s}html .ss-main .ss-multi-selected .ss-add .ss-plus:after,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus:after,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#212529;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}html .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}}@media print{html .ss-content,html[data-netbox-color-mode=dark] .ss-content,html[data-netbox-color-mode=light] .ss-content{position:absolute;width:100%;margin:-1px 0 0;box-sizing:border-box;border:solid 1px #ced4da;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}html .ss-content.ss-open,html[data-netbox-color-mode=dark] .ss-content.ss-open,html[data-netbox-color-mode=light] .ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}html .ss-content .ss-search,html[data-netbox-color-mode=dark] .ss-content .ss-search,html[data-netbox-color-mode=light] .ss-content .ss-search{display:flex;flex-direction:row;padding:.75rem}html .ss-content .ss-search.ss-hide,html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide,html[data-netbox-color-mode=light] .ss-content .ss-search.ss-hide,html .ss-content .ss-search.ss-hide input,html[data-netbox-color-mode=dark] .ss-content .ss-search.ss-hide input,html[data-netbox-color-mode=light] .ss-content .ss-search.ss-hide input{height:0px;opacity:0;padding:0;margin:0}html .ss-content .ss-search input,html[data-netbox-color-mode=dark] .ss-content .ss-search input,html[data-netbox-color-mode=light] .ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0px;height:30px;padding:.75rem;margin:0;border:1px solid #ced4da;border-radius:.375rem;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}html .ss-content .ss-search input::placeholder,html[data-netbox-color-mode=dark] .ss-content .ss-search input::placeholder,html[data-netbox-color-mode=light] .ss-content .ss-search input::placeholder{color:#adb5bd;vertical-align:middle}html .ss-content .ss-search input:focus,html[data-netbox-color-mode=dark] .ss-content .ss-search input:focus,html[data-netbox-color-mode=light] .ss-content .ss-search input:focus{box-shadow:0 0 5px #337ab7}html .ss-content .ss-search .ss-addable,html[data-netbox-color-mode=dark] .ss-content .ss-search .ss-addable,html[data-netbox-color-mode=light] .ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:700;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #ced4da;border-radius:.375rem;box-sizing:border-box}html .ss-content .ss-addable,html[data-netbox-color-mode=dark] .ss-content .ss-addable,html[data-netbox-color-mode=light] .ss-content .ss-addable{padding-top:0}html .ss-content .ss-list,html[data-netbox-color-mode=dark] .ss-content .ss-list,html[data-netbox-color-mode=light] .ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}html .ss-content .ss-list .ss-optgroup .ss-optgroup-label,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-optgroup-label,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px;font-weight:700}html .ss-content .ss-list .ss-optgroup .ss-option,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup .ss-option,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}html .ss-content .ss-list .ss-optgroup-label-selectable,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}html .ss-content .ss-list .ss-optgroup-label-selectable:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-optgroup-label-selectable:hover,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#337ab7}html .ss-content .ss-list .ss-option,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option{padding:6px 10px;cursor:pointer;user-select:none}html .ss-content .ss-list .ss-option *,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option *,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option *{display:inline-block}html .ss-content .ss-list .ss-option:hover,html .ss-content .ss-list .ss-option.ss-highlighted,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-highlighted,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-highlighted{color:#fff;background-color:#337ab7}html .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#6c757d;background-color:#fff}html .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#212529;background-color:#337ab71a}html .ss-content .ss-list .ss-option.ss-hide,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option.ss-hide,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option.ss-hide{display:none}html .ss-content .ss-list .ss-option .ss-search-highlight,html[data-netbox-color-mode=dark] .ss-content .ss-list .ss-option .ss-search-highlight,html[data-netbox-color-mode=light] .ss-content .ss-list .ss-option .ss-search-highlight{background-color:#ffc107}}@media print{html .ss-main,html[data-netbox-color-mode=dark] .ss-main,html[data-netbox-color-mode=light] .ss-main{color:#212529}html .ss-main.is-invalid .ss-single-selected,html .ss-main.is-invalid .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-invalid .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main.is-invalid .ss-single-selected,html[data-netbox-color-mode=light] .ss-main.is-invalid .ss-multi-selected{border-color:#dc3545}html .ss-main.is-valid .ss-single-selected,html .ss-main.is-valid .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main.is-valid .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main.is-valid .ss-single-selected,html[data-netbox-color-mode=light] .ss-main.is-valid .ss-multi-selected{border-color:#198754}html .ss-main .ss-single-selected,html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-single-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{padding:.375rem .75rem;background-color:#fff;border:1px solid #ced4da}html .ss-main .ss-single-selected[disabled],html .ss-main .ss-multi-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected[disabled],html[data-netbox-color-mode=light] .ss-main .ss-single-selected[disabled],html[data-netbox-color-mode=light] .ss-main .ss-multi-selected[disabled]{color:#6c757d;background-color:#e9ecef}html .ss-main div.ss-multi-selected .ss-values .ss-disabled,html .ss-main div.ss-single-selected span.placeholder .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main div.ss-single-selected span.placeholder .ss-disabled,html[data-netbox-color-mode=light] .ss-main div.ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main div.ss-single-selected span.placeholder .ss-disabled{color:var(--nbx-select-placeholder-color)}html .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html .ss-main .ss-single-selected span.ss-arrow span.arrow-up,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.ss-arrow span.arrow-up,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.ss-arrow span.arrow-down,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.ss-arrow span.arrow-up{border-color:currentColor;color:#6c757d}html .ss-main .ss-single-selected .placeholder .depth,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected .placeholder .depth,html[data-netbox-color-mode=light] .ss-main .ss-single-selected .placeholder .depth{display:none}html .ss-main .ss-single-selected span.placeholder>*,html .ss-main .ss-single-selected span.placeholder,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=dark] .ss-main .ss-single-selected span.placeholder,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.placeholder>*,html[data-netbox-color-mode=light] .ss-main .ss-single-selected span.placeholder{line-height:1.5}html .ss-main .ss-multi-selected,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected{align-items:center;padding-right:.75rem;padding-left:.75rem}html .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-disabled{padding:4px 0}html .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value{color:var(--nbx-select-value-color);border-radius:.375rem}html .ss-main .ss-multi-selected .ss-values .ss-value .depth,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-values .ss-value .depth,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-values .ss-value .depth{display:none}html .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=dark] .ss-main .ss-multi-selected .ss-add,html[data-netbox-color-mode=light] .ss-main .ss-multi-selected .ss-add{margin:0 .75rem}html .ss-main .ss-content,html[data-netbox-color-mode=dark] .ss-main .ss-content,html[data-netbox-color-mode=light] .ss-main .ss-content{background-color:var(--nbx-select-content-bg);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .ss-main .ss-content .ss-list .ss-option.ss-option-selected,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-option-selected,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-option-selected{color:#212529;background-color:var(--nbx-select-option-selected-bg)}html .ss-main .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option:hover{color:var(--nbx-select-option-hover-color);background-color:var(--nbx-select-option-hover-bg)}html .ss-main .ss-content .ss-list .ss-option:last-child,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option:last-child,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option:last-child{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .ss-main .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-disabled{background-color:unset}html .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option.ss-disabled:hover{color:#6c757d}html .ss-main .ss-content .ss-list .ss-option .depth,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list .ss-option .depth,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list .ss-option .depth{opacity:.3}html .ss-main .ss-content .ss-list::-webkit-scrollbar,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar{right:0;width:4px}html .ss-main .ss-content .ss-list::-webkit-scrollbar:hover,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar:hover{opacity:.8}html .ss-main .ss-content .ss-list::-webkit-scrollbar-track,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-track,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar-track{background:transparent}html .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-list::-webkit-scrollbar-thumb{right:0;width:2px;background-color:var(--nbx-sidebar-scroll)}html .ss-main .ss-content .ss-search,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search{padding-right:.5rem}html .ss-main .ss-content .ss-search button,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search button,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search button{margin-left:.75rem}html .ss-main .ss-content .ss-search input[type=search],html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search],html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search input[type=search]{color:#212529;background-color:#fff;border:1px solid #ced4da}html .ss-main .ss-content .ss-search input[type=search]:focus,html[data-netbox-color-mode=dark] .ss-main .ss-content .ss-search input[type=search]:focus,html[data-netbox-color-mode=light] .ss-main .ss-content .ss-search input[type=search]:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}}@media print{html .sidenav,html[data-netbox-color-mode=dark] .sidenav,html[data-netbox-color-mode=light] .sidenav{position:fixed;top:0;bottom:0;left:0;z-index:1050;display:block;width:100%;max-width:3rem;padding-top:0;padding-right:0;padding-left:0;background-color:var(--nbx-sidebar-bg);border-right:1px solid #ced4da;transition:all .1s ease-in-out}}@media print and (max-width: 991.98px){html .sidenav,html[data-netbox-color-mode=dark] .sidenav,html[data-netbox-color-mode=light] .sidenav{transform:translate(-3rem)}html .sidenav+.content-container[class],html[data-netbox-color-mode=dark] .sidenav+.content-container[class],html[data-netbox-color-mode=light] .sidenav+.content-container[class]{margin-left:0}html .sidenav .profile-button-container[class],html[data-netbox-color-mode=dark] .sidenav .profile-button-container[class],html[data-netbox-color-mode=light] .sidenav .profile-button-container[class]{display:block}}@media print{html .sidenav .profile-button-container,html[data-netbox-color-mode=dark] .sidenav .profile-button-container,html[data-netbox-color-mode=light] .sidenav .profile-button-container{display:none;padding:.5rem 1rem}}@media print{html .sidenav+.content-container,html[data-netbox-color-mode=dark] .sidenav+.content-container,html[data-netbox-color-mode=light] .sidenav+.content-container{margin-left:3rem;transition:all .1s ease-in-out}}@media print{html .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] .sidenav .sidenav-brand{margin-right:0;transition:opacity .1s ease-in-out}}@media print{html .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] .sidenav .sidenav-brand-icon{transition:opacity .1s ease-in-out}}@media print{html .sidenav .sidenav-inner,html[data-netbox-color-mode=dark] .sidenav .sidenav-inner,html[data-netbox-color-mode=light] .sidenav .sidenav-inner{padding-right:1.5rem;padding-left:1.5rem}}@media print and (min-width: 768px){html .sidenav .sidenav-inner,html[data-netbox-color-mode=dark] .sidenav .sidenav-inner,html[data-netbox-color-mode=light] .sidenav .sidenav-inner{padding-right:0;padding-left:0}}@media print{html .sidenav .sidenav-brand-img,html .sidenav .sidenav-brand>img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=dark] .sidenav .sidenav-brand>img,html[data-netbox-color-mode=light] .sidenav .sidenav-brand-img,html[data-netbox-color-mode=light] .sidenav .sidenav-brand>img{max-width:100%;max-height:15rem}}@media print{html .sidenav .navbar-heading,html[data-netbox-color-mode=dark] .sidenav .navbar-heading,html[data-netbox-color-mode=light] .sidenav .navbar-heading{padding-top:.5rem;padding-bottom:.5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em}}@media print{html .sidenav .sidenav-header,html[data-netbox-color-mode=dark] .sidenav .sidenav-header,html[data-netbox-color-mode=light] .sidenav .sidenav-header{position:relative;display:flex;align-items:center;justify-content:space-between;height:78px;padding:1rem;transition:all .1s ease-in-out}}@media print{html .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] .sidenav .sidenav-toggle{position:absolute;display:inline-block;opacity:0;transition:opacity 10ms ease-in-out;transition-delay:.1s}}@media print{html .sidenav .sidenav-collapse,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse{display:flex;flex:1;flex-direction:column;align-items:stretch;padding-right:1.5rem;padding-left:1.5rem;margin-right:-1.5rem;margin-left:-1.5rem}html .sidenav .sidenav-collapse>*,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse>*,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse>*{min-width:100%}}@media print and (min-width: 768px){html .sidenav .sidenav-collapse,html[data-netbox-color-mode=dark] .sidenav .sidenav-collapse,html[data-netbox-color-mode=light] .sidenav .sidenav-collapse{margin-right:0;margin-left:0}}@media print{html .sidenav .nav-group-header,html[data-netbox-color-mode=dark] .sidenav .nav-group-header,html[data-netbox-color-mode=light] .sidenav .nav-group-header{padding:.25rem 1rem;margin-top:.5rem;margin-bottom:0}}@media print{html .sidenav .nav,html[data-netbox-color-mode=dark] .sidenav .nav,html[data-netbox-color-mode=light] .sidenav .nav{margin-bottom:.5rem}}@media print{html .sidenav .nav .nav-item,html[data-netbox-color-mode=dark] .sidenav .nav .nav-item,html[data-netbox-color-mode=light] .sidenav .nav .nav-item{display:flex;align-items:center;justify-content:space-between;width:100%}html .sidenav .nav .nav-item.no-buttons,html[data-netbox-color-mode=dark] .sidenav .nav .nav-item.no-buttons,html[data-netbox-color-mode=light] .sidenav .nav .nav-item.no-buttons{padding-right:.5rem}}@media print{html .sidenav .collapse .nav .nav-item .nav-link,html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link,html[data-netbox-color-mode=light] .sidenav .collapse .nav .nav-item .nav-link{width:100%;padding:.25rem .25rem .25rem 1rem;margin-top:0;margin-bottom:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}html .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon,html[data-netbox-color-mode=dark] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon,html[data-netbox-color-mode=light] .sidenav .collapse .nav .nav-item .nav-link .sidenav-mini-icon{width:1rem;text-align:center;transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle],html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle],html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]{width:unset;height:100%;padding-left:.5rem;font-weight:700;color:var(--nbx-sidenav-parent-color)}html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle]:after{display:inline-block;margin-left:auto;font-family:Material Design Icons;font-style:normal;font-weight:700;font-variant:normal;color:#6c757d;text-rendering:auto;-webkit-font-smoothing:antialiased;content:"\f0142";transition:all .1s ease-in-out}html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true].active:after{color:#343a40}html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle][aria-expanded=true]:after{color:#337ab7;transform:rotate(90deg)}html .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle] .nav-link-text{padding-left:.25rem;transition:all .1s ease-in-out}}@media print{html .sidenav .navbar-nav,html[data-netbox-color-mode=dark] .sidenav .navbar-nav,html[data-netbox-color-mode=light] .sidenav .navbar-nav{flex-direction:column;margin-right:-1.5rem;margin-left:-1.5rem}html .sidenav .navbar-nav .nav-item.disabled,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item.disabled,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item.disabled{cursor:not-allowed;opacity:.8}html .sidenav .navbar-nav .nav-item .nav-link,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link{position:relative;display:flex;align-items:center;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--nbx-sidenav-link-color);white-space:nowrap;transition-duration:0ms}html .sidenav .navbar-nav .nav-item .nav-link.active,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link.active,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link.active{background-color:var(--nbx-sidebar-link-active-bg)}html .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active),html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active),html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link:hover:not(.active){color:var(--nbx-body-color);background-color:var(--nbx-sidebar-link-hover-bg)}html .sidenav .navbar-nav .nav-item .nav-link>i,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-item .nav-link>i,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-item .nav-link>i{min-width:2rem;font-size:22.5px;text-align:center}html .sidenav .navbar-nav .nav-group-label,html[data-netbox-color-mode=dark] .sidenav .navbar-nav .nav-group-label,html[data-netbox-color-mode=light] .sidenav .navbar-nav .nav-group-label{display:block;font-size:.75rem;font-weight:700;color:var(--nbx-sidenav-group-color);text-transform:uppercase;white-space:nowrap}}@media print{html body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-toggle-icon{color:var(--nbx-sidenav-pin-color);transform:rotate(90deg)}}@media print and (min-width: 1200px){html body[data-sidenav-pinned] .sidenav+.content-container,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav+.content-container,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav+.content-container{margin-left:16rem}}@media print{html .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=dark] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon,html[data-netbox-color-mode=light] .g-sidenav-show:not(.g-sidenav-pinned) .sidenav .sidenav-toggle-icon{transform:rotate(0)}}@media print{html body[data-sidenav-show] .sidenav,html body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav{max-width:16rem}html body[data-sidenav-show] .sidenav .sidenav-brand,html body[data-sidenav-show] .sidenav .navbar-heading,html body[data-sidenav-pinned] .sidenav .sidenav-brand,html body[data-sidenav-pinned] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .navbar-heading,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .navbar-heading,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .navbar-heading{display:block}html body[data-sidenav-show] .sidenav .sidenav-brand,html body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand{opacity:1;transform:translate(0)}html body[data-sidenav-show] .sidenav .sidenav-brand-icon,html body[data-sidenav-pinned] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav .sidenav-brand-icon{position:absolute;opacity:0}}@media print and (max-width: 991.98px){html body[data-sidenav-show] .sidenav,html body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=dark] body[data-sidenav-pinned] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav,html[data-netbox-color-mode=light] body[data-sidenav-pinned] .sidenav{transform:translate(0)}}@media print{html body[data-sidenav-hide] .sidenav .sidenav-header,html body[data-sidenav-hidden] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-header,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-header,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-header{padding:.5rem}html body[data-sidenav-hide] .sidenav .sidenav-brand,html body[data-sidenav-hidden] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-brand{position:absolute;opacity:0}html body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html body[data-sidenav-hidden] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-brand-icon,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-brand-icon{opacity:1}html body[data-sidenav-hide] .sidenav .sidenav-toggle,html body[data-sidenav-hidden] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .sidenav-toggle{opacity:0;position:absolute;transition:unset;transition-delay:0ms}html body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .navbar-nav>.nav-item>.nav-link:after,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .navbar-nav>.nav-item>.nav-link:after{content:""}html body[data-sidenav-hide] .sidenav .nav-item .collapse,html body[data-sidenav-hidden] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .nav-item .collapse{display:none}html body[data-sidenav-hide] .sidenav .nav-link-text,html body[data-sidenav-hidden] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .nav-link-text{opacity:0}html body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=dark] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=light] body[data-sidenav-hide] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active,html[data-netbox-color-mode=light] body[data-sidenav-hidden] .sidenav .navbar-nav .nav-item .nav-link[data-bs-toggle].active{margin-right:0;margin-left:0;border-radius:unset}}@media print{html body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-brand,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-brand{display:block}html body[data-sidenav-show] .sidenav .nav-item .collapse,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .collapse,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .collapse{height:auto;transition:all .1s ease-in-out}html body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .nav-link .nav-link-text{opacity:1}html body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .nav-item .sidenav-mini-icon{opacity:0}}@media print and (min-width: 992px){html body[data-sidenav-show] .sidenav .sidenav-toggle,html[data-netbox-color-mode=dark] body[data-sidenav-show] .sidenav .sidenav-toggle,html[data-netbox-color-mode=light] body[data-sidenav-show] .sidenav .sidenav-toggle{position:relative;opacity:1}}@media print{html .simplebar-track.simplebar-vertical,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical{right:0;width:6px;background-color:transparent}html .simplebar-track.simplebar-vertical .simplebar-scrollbar,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical .simplebar-scrollbar{transition:none}html .simplebar-track.simplebar-vertical .simplebar-scrollbar:before,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical .simplebar-scrollbar:before{right:0;width:3px;background:var(--nbx-sidebar-scroll);border-radius:.375rem}html .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before,html[data-netbox-color-mode=dark] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before,html[data-netbox-color-mode=light] .simplebar-track.simplebar-vertical.simplebar-hover .simplebar-scrollbar:before{width:5px}}@media print{html body,html[data-netbox-color-mode=dark] body,html[data-netbox-color-mode=light] body{color:var(--nbx-body-color);background-color:var(--nbx-body-bg);font-size:.875rem}}@media print{html pre,html[data-netbox-color-mode=dark] pre,html[data-netbox-color-mode=light] pre{white-space:pre}}@media print{html small,html .small,html[data-netbox-color-mode=dark] .small,html[data-netbox-color-mode=light] .small,html[data-netbox-color-mode=dark] small,html[data-netbox-color-mode=light] small{font-size:smaller!important}}@media print{html a[type=button],html[data-netbox-color-mode=dark] a[type=button],html[data-netbox-color-mode=light] a[type=button]{-webkit-appearance:unset!important}}@media print{html *[data-href],html[data-netbox-color-mode=dark] *[data-href],html[data-netbox-color-mode=light] *[data-href]{cursor:pointer}}@media print{html .form-control:not([type=file]),html[data-netbox-color-mode=dark] .form-control:not([type=file]),html[data-netbox-color-mode=light] .form-control:not([type=file]){font-size:inherit}}@media print{html .badge,html[data-netbox-color-mode=dark] .badge,html[data-netbox-color-mode=light] .badge{font-size:.75rem}}@media print{html input[type=search]::-webkit-search-decoration,html input[type=search]::-webkit-search-cancel-button,html input[type=search]::-webkit-search-results-button,html input[type=search]::-webkit-search-results-decoration,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-decoration,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-cancel-button,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-results-button,html[data-netbox-color-mode=dark] input[type=search]::-webkit-search-results-decoration,html[data-netbox-color-mode=light] input[type=search]::-webkit-search-decoration,html[data-netbox-color-mode=light] input[type=search]::-webkit-search-cancel-button,html[data-netbox-color-mode=light] input[type=search]::-webkit-search-results-button,html[data-netbox-color-mode=light] input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none!important}}@media print{html mark,html .mark,html[data-netbox-color-mode=dark] .mark,html[data-netbox-color-mode=light] .mark,html[data-netbox-color-mode=dark] mark,html[data-netbox-color-mode=light] mark{padding-left:0;padding-right:0}}@media print{html .text-xs,html[data-netbox-color-mode=dark] .text-xs,html[data-netbox-color-mode=light] .text-xs{font-size:.75rem!important;line-height:1.25!important}}@media print{html .border-input,html[data-netbox-color-mode=dark] .border-input,html[data-netbox-color-mode=light] .border-input{border:1px solid #ced4da!important}}@media print{html .ws-nowrap,html[data-netbox-color-mode=dark] .ws-nowrap,html[data-netbox-color-mode=light] .ws-nowrap{white-space:nowrap!important}}@media print{html table tr .vertical-align,html table td .vertical-align,html[data-netbox-color-mode=dark] table tr .vertical-align,html[data-netbox-color-mode=dark] table td .vertical-align,html[data-netbox-color-mode=light] table tr .vertical-align,html[data-netbox-color-mode=light] table td .vertical-align{vertical-align:middle}}@media print{html .noprint,html[data-netbox-color-mode=dark] .noprint,html[data-netbox-color-mode=light] .noprint{display:none!important;visibility:hidden!important}}@media print{html .printonly,html[data-netbox-color-mode=dark] .printonly,html[data-netbox-color-mode=light] .printonly{display:none!important;visibility:hidden!important}}@media print{html .printonly,html[data-netbox-color-mode=dark] .printonly,html[data-netbox-color-mode=light] .printonly{display:block!important;visibility:visible!important}}@media print{html .hide-last-child :last-child,html[data-netbox-color-mode=dark] .hide-last-child :last-child,html[data-netbox-color-mode=light] .hide-last-child :last-child{visibility:hidden;opacity:0}}@media print{html :root,html[data-netbox-color-mode=dark] :root,html[data-netbox-color-mode=light] :root{--nbx-sidebar-bg: #e9ecef;--nbx-sidebar-scroll: #adb5bd;--nbx-sidebar-link-hover-bg: rgba(108, 117, 125, .15);--nbx-sidebar-link-active-bg: #9cc8f8;--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(0, 0, 0, .25);--nbx-breadcrumb-bg: #e9ecef;--nbx-body-bg: #fff;--nbx-body-color: #343a40;--nbx-pre-bg: #f8f9fa;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(25, 135, 84, .4);--nbx-change-removed: rgba(220, 53, 69, .4);--nbx-cable-node-bg: #f8f9fa;--nbx-cable-node-border-color: #e9ecef;--nbx-cable-termination-bg: #e9ecef;--nbx-cable-termination-border-color: #dee2e6;--nbx-search-filter-border-left-color: #dee2e6;--nbx-color-mode-toggle-color: #337ab7;--nbx-sidenav-link-color: #343a40;--nbx-sidenav-pin-color: #fd7e14;--nbx-sidenav-parent-color: #343a40;--nbx-sidenav-group-color: #343a40}html :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=dark] :root[data-netbox-color-mode=dark],html[data-netbox-color-mode=light] :root[data-netbox-color-mode=dark]{--nbx-sidebar-bg: #212529;--nbx-sidebar-scroll: #495057;--nbx-sidebar-link-active-bg: rgba(110, 168, 254, .25);--nbx-sidebar-link-hover-bg: rgba(173, 181, 189, .15);--nbx-sidebar-title-color: #6c757d;--nbx-sidebar-shadow: inset 0px -25px 20px -25px rgba(255, 255, 255, .05);--nbx-breadcrumb-bg: #343a40;--nbx-body-bg: #1b1f22;--nbx-body-color: #f8f9fa;--nbx-pre-bg: #495057;--nbx-pre-border-color: #6c757d;--nbx-change-added: rgba(117, 183, 152, .4);--nbx-change-removed: rgba(234, 134, 143, .4);--nbx-cable-node-bg: #495057;--nbx-cable-node-border-color: #6c757d;--nbx-cable-termination-bg: #343a40;--nbx-cable-termination-border-color: #495057;--nbx-search-filter-border-left-color: #6c757d;--nbx-color-mode-toggle-color: #ffda6a;--nbx-sidenav-link-color: #e9ecef;--nbx-sidenav-pin-color: #ffc107;--nbx-sidenav-parent-color: #e9ecef;--nbx-sidenav-group-color: #6c757d}}@media print{html .bg-primary button.btn-close,html[data-netbox-color-mode=dark] .bg-primary button.btn-close,html[data-netbox-color-mode=light] .bg-primary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f496e'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-primary,html[data-netbox-color-mode=dark] .btn.btn-ghost-primary,html[data-netbox-color-mode=light] .btn.btn-ghost-primary{color:#337ab7}html .btn.btn-ghost-primary:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-primary:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-primary:hover{background-color:#337ab71f}}@media print{html .alert.alert-primary a:not(.btn),html .table-primary a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=dark] .table-primary a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-primary a:not(.btn),html[data-netbox-color-mode=light] .table-primary a:not(.btn){font-weight:700;color:#1f496e}html .alert.alert-primary .btn:not([class*=btn-outline]),html .table-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-primary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-primary .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-primary a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-primary a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-primary a:not(.btn){font-weight:700;color:#adcae2}}@media print{html .badge.bg-primary,html .toast.bg-primary,html .toast-header.bg-primary,html .progress-bar.bg-primary,html[data-netbox-color-mode=dark] .badge.bg-primary,html[data-netbox-color-mode=dark] .toast.bg-primary,html[data-netbox-color-mode=dark] .toast-header.bg-primary,html[data-netbox-color-mode=dark] .progress-bar.bg-primary,html[data-netbox-color-mode=light] .badge.bg-primary,html[data-netbox-color-mode=light] .toast.bg-primary,html[data-netbox-color-mode=light] .toast-header.bg-primary,html[data-netbox-color-mode=light] .progress-bar.bg-primary{color:#fff}}@media print{html .bg-secondary button.btn-close,html[data-netbox-color-mode=dark] .bg-secondary button.btn-close,html[data-netbox-color-mode=light] .bg-secondary button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2341464b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-secondary,html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary,html[data-netbox-color-mode=light] .btn.btn-ghost-secondary{color:#6c757d}html .btn.btn-ghost-secondary:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-secondary:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-secondary:hover{background-color:#6c757d1f}}@media print{html .alert.alert-secondary a:not(.btn),html .table-secondary a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=dark] .table-secondary a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-secondary a:not(.btn),html[data-netbox-color-mode=light] .table-secondary a:not(.btn){font-weight:700;color:#41464b}html .alert.alert-secondary .btn:not([class*=btn-outline]),html .table-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-secondary .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-secondary .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-secondary a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-secondary a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-secondary a:not(.btn){font-weight:700;color:#c4c8cb}}@media print{html .badge.bg-secondary,html .toast.bg-secondary,html .toast-header.bg-secondary,html .progress-bar.bg-secondary,html[data-netbox-color-mode=dark] .badge.bg-secondary,html[data-netbox-color-mode=dark] .toast.bg-secondary,html[data-netbox-color-mode=dark] .toast-header.bg-secondary,html[data-netbox-color-mode=dark] .progress-bar.bg-secondary,html[data-netbox-color-mode=light] .badge.bg-secondary,html[data-netbox-color-mode=light] .toast.bg-secondary,html[data-netbox-color-mode=light] .toast-header.bg-secondary,html[data-netbox-color-mode=light] .progress-bar.bg-secondary{color:#fff}}@media print{html .bg-success button.btn-close,html[data-netbox-color-mode=dark] .bg-success button.btn-close,html[data-netbox-color-mode=light] .bg-success button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-success,html[data-netbox-color-mode=dark] .btn.btn-ghost-success,html[data-netbox-color-mode=light] .btn.btn-ghost-success{color:#198754}html .btn.btn-ghost-success:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-success:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-success:hover{background-color:#1987541f}}@media print{html .alert.alert-success a:not(.btn),html .table-success a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=dark] .table-success a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-success a:not(.btn),html[data-netbox-color-mode=light] .table-success a:not(.btn){font-weight:700;color:#0f5132}html .alert.alert-success .btn:not([class*=btn-outline]),html .table-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-success .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-success .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-success a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-success a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-success a:not(.btn){font-weight:700;color:#a3cfbb}}@media print{html .badge.bg-success,html .toast.bg-success,html .toast-header.bg-success,html .progress-bar.bg-success,html[data-netbox-color-mode=dark] .badge.bg-success,html[data-netbox-color-mode=dark] .toast.bg-success,html[data-netbox-color-mode=dark] .toast-header.bg-success,html[data-netbox-color-mode=dark] .progress-bar.bg-success,html[data-netbox-color-mode=light] .badge.bg-success,html[data-netbox-color-mode=light] .toast.bg-success,html[data-netbox-color-mode=light] .toast-header.bg-success,html[data-netbox-color-mode=light] .progress-bar.bg-success{color:#fff}}@media print{html .bg-info button.btn-close,html[data-netbox-color-mode=dark] .bg-info button.btn-close,html[data-netbox-color-mode=light] .bg-info button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23225660'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-info,html[data-netbox-color-mode=dark] .btn.btn-ghost-info,html[data-netbox-color-mode=light] .btn.btn-ghost-info{color:#54d6f0}html .btn.btn-ghost-info:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-info:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-info:hover{background-color:#54d6f01f}}@media print{html .alert.alert-info a:not(.btn),html .table-info a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=dark] .table-info a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-info a:not(.btn),html[data-netbox-color-mode=light] .table-info a:not(.btn){font-weight:700;color:#225660}html .alert.alert-info .btn:not([class*=btn-outline]),html .table-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-info .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-info .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-info a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-info a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-info a:not(.btn){font-weight:700;color:#225660}}@media print{html .badge.bg-info,html .toast.bg-info,html .toast-header.bg-info,html .progress-bar.bg-info,html[data-netbox-color-mode=dark] .badge.bg-info,html[data-netbox-color-mode=dark] .toast.bg-info,html[data-netbox-color-mode=dark] .toast-header.bg-info,html[data-netbox-color-mode=dark] .progress-bar.bg-info,html[data-netbox-color-mode=light] .badge.bg-info,html[data-netbox-color-mode=light] .toast.bg-info,html[data-netbox-color-mode=light] .toast-header.bg-info,html[data-netbox-color-mode=light] .progress-bar.bg-info{color:#000}}@media print{html .bg-warning button.btn-close,html[data-netbox-color-mode=dark] .bg-warning button.btn-close,html[data-netbox-color-mode=light] .bg-warning button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-warning,html[data-netbox-color-mode=dark] .btn.btn-ghost-warning,html[data-netbox-color-mode=light] .btn.btn-ghost-warning{color:#ffc107}html .btn.btn-ghost-warning:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-warning:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-warning:hover{background-color:#ffc1071f}}@media print{html .alert.alert-warning a:not(.btn),html .table-warning a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=dark] .table-warning a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-warning a:not(.btn),html[data-netbox-color-mode=light] .table-warning a:not(.btn){font-weight:700;color:#664d03}html .alert.alert-warning .btn:not([class*=btn-outline]),html .table-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-warning .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-warning .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-warning a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-warning a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-warning a:not(.btn){font-weight:700;color:#664d03}}@media print{html .badge.bg-warning,html .toast.bg-warning,html .toast-header.bg-warning,html .progress-bar.bg-warning,html[data-netbox-color-mode=dark] .badge.bg-warning,html[data-netbox-color-mode=dark] .toast.bg-warning,html[data-netbox-color-mode=dark] .toast-header.bg-warning,html[data-netbox-color-mode=dark] .progress-bar.bg-warning,html[data-netbox-color-mode=light] .badge.bg-warning,html[data-netbox-color-mode=light] .toast.bg-warning,html[data-netbox-color-mode=light] .toast-header.bg-warning,html[data-netbox-color-mode=light] .progress-bar.bg-warning{color:#000}}@media print{html .bg-danger button.btn-close,html[data-netbox-color-mode=dark] .bg-danger button.btn-close,html[data-netbox-color-mode=light] .bg-danger button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-danger,html[data-netbox-color-mode=dark] .btn.btn-ghost-danger,html[data-netbox-color-mode=light] .btn.btn-ghost-danger{color:#dc3545}html .btn.btn-ghost-danger:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-danger:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-danger:hover{background-color:#dc35451f}}@media print{html .alert.alert-danger a:not(.btn),html .table-danger a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=dark] .table-danger a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-danger a:not(.btn),html[data-netbox-color-mode=light] .table-danger a:not(.btn){font-weight:700;color:#842029}html .alert.alert-danger .btn:not([class*=btn-outline]),html .table-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-danger .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-danger .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-danger a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-danger a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-danger a:not(.btn){font-weight:700;color:#f1aeb5}}@media print{html .badge.bg-danger,html .toast.bg-danger,html .toast-header.bg-danger,html .progress-bar.bg-danger,html[data-netbox-color-mode=dark] .badge.bg-danger,html[data-netbox-color-mode=dark] .toast.bg-danger,html[data-netbox-color-mode=dark] .toast-header.bg-danger,html[data-netbox-color-mode=dark] .progress-bar.bg-danger,html[data-netbox-color-mode=light] .badge.bg-danger,html[data-netbox-color-mode=light] .toast.bg-danger,html[data-netbox-color-mode=light] .toast-header.bg-danger,html[data-netbox-color-mode=light] .progress-bar.bg-danger{color:#fff}}@media print{html .bg-light button.btn-close,html[data-netbox-color-mode=dark] .bg-light button.btn-close,html[data-netbox-color-mode=light] .bg-light button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235d5e60'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-light,html[data-netbox-color-mode=dark] .btn.btn-ghost-light,html[data-netbox-color-mode=light] .btn.btn-ghost-light{color:#e9ecef}html .btn.btn-ghost-light:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-light:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-light:hover{background-color:#e9ecef1f}}@media print{html .alert.alert-light a:not(.btn),html .table-light a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=dark] .table-light a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-light a:not(.btn),html[data-netbox-color-mode=light] .table-light a:not(.btn){font-weight:700;color:#5d5e60}html .alert.alert-light .btn:not([class*=btn-outline]),html .table-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-light .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-light .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-light a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-light a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-light a:not(.btn){font-weight:700;color:#5d5e60}}@media print{html .badge.bg-light,html .toast.bg-light,html .toast-header.bg-light,html .progress-bar.bg-light,html[data-netbox-color-mode=dark] .badge.bg-light,html[data-netbox-color-mode=dark] .toast.bg-light,html[data-netbox-color-mode=dark] .toast-header.bg-light,html[data-netbox-color-mode=dark] .progress-bar.bg-light,html[data-netbox-color-mode=light] .badge.bg-light,html[data-netbox-color-mode=light] .toast.bg-light,html[data-netbox-color-mode=light] .toast-header.bg-light,html[data-netbox-color-mode=light] .progress-bar.bg-light{color:#000}}@media print{html .bg-dark button.btn-close,html[data-netbox-color-mode=dark] .bg-dark button.btn-close,html[data-netbox-color-mode=light] .bg-dark button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%231f2326'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-dark,html[data-netbox-color-mode=dark] .btn.btn-ghost-dark,html[data-netbox-color-mode=light] .btn.btn-ghost-dark{color:#343a40}html .btn.btn-ghost-dark:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-dark:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-dark:hover{background-color:#343a401f}}@media print{html .alert.alert-dark a:not(.btn),html .table-dark a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=dark] .table-dark a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-dark a:not(.btn),html[data-netbox-color-mode=light] .table-dark a:not(.btn){font-weight:700;color:#1f2326}html .alert.alert-dark .btn:not([class*=btn-outline]),html .table-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-dark .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-dark .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-dark a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-dark a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-dark a:not(.btn){font-weight:700;color:#aeb0b3}}@media print{html .badge.bg-dark,html .toast.bg-dark,html .toast-header.bg-dark,html .progress-bar.bg-dark,html[data-netbox-color-mode=dark] .badge.bg-dark,html[data-netbox-color-mode=dark] .toast.bg-dark,html[data-netbox-color-mode=dark] .toast-header.bg-dark,html[data-netbox-color-mode=dark] .progress-bar.bg-dark,html[data-netbox-color-mode=light] .badge.bg-dark,html[data-netbox-color-mode=light] .toast.bg-dark,html[data-netbox-color-mode=light] .toast-header.bg-dark,html[data-netbox-color-mode=light] .progress-bar.bg-dark{color:#fff}}@media print{html .bg-blue button.btn-close,html[data-netbox-color-mode=dark] .bg-blue button.btn-close,html[data-netbox-color-mode=light] .bg-blue button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23084298'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-blue,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue,html[data-netbox-color-mode=light] .btn.btn-ghost-blue{color:#0d6efd}html .btn.btn-ghost-blue:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-blue:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-blue:hover{background-color:#0d6efd1f}}@media print{html .alert.alert-blue a:not(.btn),html .table-blue a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=dark] .table-blue a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-blue a:not(.btn),html[data-netbox-color-mode=light] .table-blue a:not(.btn){font-weight:700;color:#084298}html .alert.alert-blue .btn:not([class*=btn-outline]),html .table-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-blue .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-blue .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-blue a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-blue a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-blue a:not(.btn){font-weight:700;color:#9ec5fe}}@media print{html .badge.bg-blue,html .toast.bg-blue,html .toast-header.bg-blue,html .progress-bar.bg-blue,html[data-netbox-color-mode=dark] .badge.bg-blue,html[data-netbox-color-mode=dark] .toast.bg-blue,html[data-netbox-color-mode=dark] .toast-header.bg-blue,html[data-netbox-color-mode=dark] .progress-bar.bg-blue,html[data-netbox-color-mode=light] .badge.bg-blue,html[data-netbox-color-mode=light] .toast.bg-blue,html[data-netbox-color-mode=light] .toast-header.bg-blue,html[data-netbox-color-mode=light] .progress-bar.bg-blue{color:#fff}}@media print{html .bg-indigo button.btn-close,html[data-netbox-color-mode=dark] .bg-indigo button.btn-close,html[data-netbox-color-mode=light] .bg-indigo button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%233d0a91'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-indigo,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo{color:#6610f2}html .btn.btn-ghost-indigo:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-indigo:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-indigo:hover{background-color:#6610f21f}}@media print{html .alert.alert-indigo a:not(.btn),html .table-indigo a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=dark] .table-indigo a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-indigo a:not(.btn),html[data-netbox-color-mode=light] .table-indigo a:not(.btn){font-weight:700;color:#3d0a91}html .alert.alert-indigo .btn:not([class*=btn-outline]),html .table-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-indigo .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-indigo .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-indigo a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-indigo a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-indigo a:not(.btn){font-weight:700;color:#c29ffa}}@media print{html .badge.bg-indigo,html .toast.bg-indigo,html .toast-header.bg-indigo,html .progress-bar.bg-indigo,html[data-netbox-color-mode=dark] .badge.bg-indigo,html[data-netbox-color-mode=dark] .toast.bg-indigo,html[data-netbox-color-mode=dark] .toast-header.bg-indigo,html[data-netbox-color-mode=dark] .progress-bar.bg-indigo,html[data-netbox-color-mode=light] .badge.bg-indigo,html[data-netbox-color-mode=light] .toast.bg-indigo,html[data-netbox-color-mode=light] .toast-header.bg-indigo,html[data-netbox-color-mode=light] .progress-bar.bg-indigo{color:#fff}}@media print{html .bg-purple button.btn-close,html[data-netbox-color-mode=dark] .bg-purple button.btn-close,html[data-netbox-color-mode=light] .bg-purple button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23432874'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-purple,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple,html[data-netbox-color-mode=light] .btn.btn-ghost-purple{color:#6f42c1}html .btn.btn-ghost-purple:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-purple:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-purple:hover{background-color:#6f42c11f}}@media print{html .alert.alert-purple a:not(.btn),html .table-purple a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=dark] .table-purple a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-purple a:not(.btn),html[data-netbox-color-mode=light] .table-purple a:not(.btn){font-weight:700;color:#432874}html .alert.alert-purple .btn:not([class*=btn-outline]),html .table-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-purple .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-purple .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-purple a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-purple a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-purple a:not(.btn){font-weight:700;color:#c5b3e6}}@media print{html .badge.bg-purple,html .toast.bg-purple,html .toast-header.bg-purple,html .progress-bar.bg-purple,html[data-netbox-color-mode=dark] .badge.bg-purple,html[data-netbox-color-mode=dark] .toast.bg-purple,html[data-netbox-color-mode=dark] .toast-header.bg-purple,html[data-netbox-color-mode=dark] .progress-bar.bg-purple,html[data-netbox-color-mode=light] .badge.bg-purple,html[data-netbox-color-mode=light] .toast.bg-purple,html[data-netbox-color-mode=light] .toast-header.bg-purple,html[data-netbox-color-mode=light] .progress-bar.bg-purple{color:#fff}}@media print{html .bg-pink button.btn-close,html[data-netbox-color-mode=dark] .bg-pink button.btn-close,html[data-netbox-color-mode=light] .bg-pink button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23801f4f'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-pink,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink,html[data-netbox-color-mode=light] .btn.btn-ghost-pink{color:#d63384}html .btn.btn-ghost-pink:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-pink:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-pink:hover{background-color:#d633841f}}@media print{html .alert.alert-pink a:not(.btn),html .table-pink a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=dark] .table-pink a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-pink a:not(.btn),html[data-netbox-color-mode=light] .table-pink a:not(.btn){font-weight:700;color:#801f4f}html .alert.alert-pink .btn:not([class*=btn-outline]),html .table-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-pink .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-pink .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-pink a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-pink a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-pink a:not(.btn){font-weight:700;color:#efadce}}@media print{html .badge.bg-pink,html .toast.bg-pink,html .toast-header.bg-pink,html .progress-bar.bg-pink,html[data-netbox-color-mode=dark] .badge.bg-pink,html[data-netbox-color-mode=dark] .toast.bg-pink,html[data-netbox-color-mode=dark] .toast-header.bg-pink,html[data-netbox-color-mode=dark] .progress-bar.bg-pink,html[data-netbox-color-mode=light] .badge.bg-pink,html[data-netbox-color-mode=light] .toast.bg-pink,html[data-netbox-color-mode=light] .toast-header.bg-pink,html[data-netbox-color-mode=light] .progress-bar.bg-pink{color:#fff}}@media print{html .bg-red button.btn-close,html[data-netbox-color-mode=dark] .bg-red button.btn-close,html[data-netbox-color-mode=light] .bg-red button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23842029'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-red,html[data-netbox-color-mode=dark] .btn.btn-ghost-red,html[data-netbox-color-mode=light] .btn.btn-ghost-red{color:#dc3545}html .btn.btn-ghost-red:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-red:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-red:hover{background-color:#dc35451f}}@media print{html .alert.alert-red a:not(.btn),html .table-red a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=dark] .table-red a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-red a:not(.btn),html[data-netbox-color-mode=light] .table-red a:not(.btn){font-weight:700;color:#842029}html .alert.alert-red .btn:not([class*=btn-outline]),html .table-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-red .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-red .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-red a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-red a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-red a:not(.btn){font-weight:700;color:#f1aeb5}}@media print{html .badge.bg-red,html .toast.bg-red,html .toast-header.bg-red,html .progress-bar.bg-red,html[data-netbox-color-mode=dark] .badge.bg-red,html[data-netbox-color-mode=dark] .toast.bg-red,html[data-netbox-color-mode=dark] .toast-header.bg-red,html[data-netbox-color-mode=dark] .progress-bar.bg-red,html[data-netbox-color-mode=light] .badge.bg-red,html[data-netbox-color-mode=light] .toast.bg-red,html[data-netbox-color-mode=light] .toast-header.bg-red,html[data-netbox-color-mode=light] .progress-bar.bg-red{color:#fff}}@media print{html .bg-orange button.btn-close,html[data-netbox-color-mode=dark] .bg-orange button.btn-close,html[data-netbox-color-mode=light] .bg-orange button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23984c0c'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-orange,html[data-netbox-color-mode=dark] .btn.btn-ghost-orange,html[data-netbox-color-mode=light] .btn.btn-ghost-orange{color:#fd7e14}html .btn.btn-ghost-orange:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-orange:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-orange:hover{background-color:#fd7e141f}}@media print{html .alert.alert-orange a:not(.btn),html .table-orange a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-orange a:not(.btn),html[data-netbox-color-mode=dark] .table-orange a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-orange a:not(.btn),html[data-netbox-color-mode=light] .table-orange a:not(.btn){font-weight:700;color:#984c0c}html .alert.alert-orange .btn:not([class*=btn-outline]),html .table-orange .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-orange .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-orange .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-orange .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-orange .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-orange a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-orange a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-orange a:not(.btn){font-weight:700;color:#653208}}@media print{html .badge.bg-orange,html .toast.bg-orange,html .toast-header.bg-orange,html .progress-bar.bg-orange,html[data-netbox-color-mode=dark] .badge.bg-orange,html[data-netbox-color-mode=dark] .toast.bg-orange,html[data-netbox-color-mode=dark] .toast-header.bg-orange,html[data-netbox-color-mode=dark] .progress-bar.bg-orange,html[data-netbox-color-mode=light] .badge.bg-orange,html[data-netbox-color-mode=light] .toast.bg-orange,html[data-netbox-color-mode=light] .toast-header.bg-orange,html[data-netbox-color-mode=light] .progress-bar.bg-orange{color:#000}}@media print{html .bg-yellow button.btn-close,html[data-netbox-color-mode=dark] .bg-yellow button.btn-close,html[data-netbox-color-mode=light] .bg-yellow button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23664d03'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-yellow,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow{color:#ffc107}html .btn.btn-ghost-yellow:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-yellow:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-yellow:hover{background-color:#ffc1071f}}@media print{html .alert.alert-yellow a:not(.btn),html .table-yellow a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=dark] .table-yellow a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-yellow a:not(.btn),html[data-netbox-color-mode=light] .table-yellow a:not(.btn){font-weight:700;color:#664d03}html .alert.alert-yellow .btn:not([class*=btn-outline]),html .table-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-yellow .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-yellow .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-yellow a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-yellow a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-yellow a:not(.btn){font-weight:700;color:#664d03}}@media print{html .badge.bg-yellow,html .toast.bg-yellow,html .toast-header.bg-yellow,html .progress-bar.bg-yellow,html[data-netbox-color-mode=dark] .badge.bg-yellow,html[data-netbox-color-mode=dark] .toast.bg-yellow,html[data-netbox-color-mode=dark] .toast-header.bg-yellow,html[data-netbox-color-mode=dark] .progress-bar.bg-yellow,html[data-netbox-color-mode=light] .badge.bg-yellow,html[data-netbox-color-mode=light] .toast.bg-yellow,html[data-netbox-color-mode=light] .toast-header.bg-yellow,html[data-netbox-color-mode=light] .progress-bar.bg-yellow{color:#000}}@media print{html .bg-green button.btn-close,html[data-netbox-color-mode=dark] .bg-green button.btn-close,html[data-netbox-color-mode=light] .bg-green button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f5132'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-green,html[data-netbox-color-mode=dark] .btn.btn-ghost-green,html[data-netbox-color-mode=light] .btn.btn-ghost-green{color:#198754}html .btn.btn-ghost-green:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-green:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-green:hover{background-color:#1987541f}}@media print{html .alert.alert-green a:not(.btn),html .table-green a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=dark] .table-green a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-green a:not(.btn),html[data-netbox-color-mode=light] .table-green a:not(.btn){font-weight:700;color:#0f5132}html .alert.alert-green .btn:not([class*=btn-outline]),html .table-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-green .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-green .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-green a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-green a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-green a:not(.btn){font-weight:700;color:#a3cfbb}}@media print{html .badge.bg-green,html .toast.bg-green,html .toast-header.bg-green,html .progress-bar.bg-green,html[data-netbox-color-mode=dark] .badge.bg-green,html[data-netbox-color-mode=dark] .toast.bg-green,html[data-netbox-color-mode=dark] .toast-header.bg-green,html[data-netbox-color-mode=dark] .progress-bar.bg-green,html[data-netbox-color-mode=light] .badge.bg-green,html[data-netbox-color-mode=light] .toast.bg-green,html[data-netbox-color-mode=light] .toast-header.bg-green,html[data-netbox-color-mode=light] .progress-bar.bg-green{color:#fff}}@media print{html .bg-teal button.btn-close,html[data-netbox-color-mode=dark] .bg-teal button.btn-close,html[data-netbox-color-mode=light] .bg-teal button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2313795b'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-teal,html[data-netbox-color-mode=dark] .btn.btn-ghost-teal,html[data-netbox-color-mode=light] .btn.btn-ghost-teal{color:#20c997}html .btn.btn-ghost-teal:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-teal:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-teal:hover{background-color:#20c9971f}}@media print{html .alert.alert-teal a:not(.btn),html .table-teal a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-teal a:not(.btn),html[data-netbox-color-mode=dark] .table-teal a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-teal a:not(.btn),html[data-netbox-color-mode=light] .table-teal a:not(.btn){font-weight:700;color:#13795b}html .alert.alert-teal .btn:not([class*=btn-outline]),html .table-teal .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-teal .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-teal .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-teal .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-teal .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-teal a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-teal a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-teal a:not(.btn){font-weight:700;color:#0d503c}}@media print{html .badge.bg-teal,html .toast.bg-teal,html .toast-header.bg-teal,html .progress-bar.bg-teal,html[data-netbox-color-mode=dark] .badge.bg-teal,html[data-netbox-color-mode=dark] .toast.bg-teal,html[data-netbox-color-mode=dark] .toast-header.bg-teal,html[data-netbox-color-mode=dark] .progress-bar.bg-teal,html[data-netbox-color-mode=light] .badge.bg-teal,html[data-netbox-color-mode=light] .toast.bg-teal,html[data-netbox-color-mode=light] .toast-header.bg-teal,html[data-netbox-color-mode=light] .progress-bar.bg-teal{color:#000}}@media print{html .bg-cyan button.btn-close,html[data-netbox-color-mode=dark] .bg-cyan button.btn-close,html[data-netbox-color-mode=light] .bg-cyan button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23055160'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-cyan,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan{color:#0dcaf0}html .btn.btn-ghost-cyan:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-cyan:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-cyan:hover{background-color:#0dcaf01f}}@media print{html .alert.alert-cyan a:not(.btn),html .table-cyan a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=dark] .table-cyan a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-cyan a:not(.btn),html[data-netbox-color-mode=light] .table-cyan a:not(.btn){font-weight:700;color:#055160}html .alert.alert-cyan .btn:not([class*=btn-outline]),html .table-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-cyan .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-cyan .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-cyan a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-cyan a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-cyan a:not(.btn){font-weight:700;color:#055160}}@media print{html .badge.bg-cyan,html .toast.bg-cyan,html .toast-header.bg-cyan,html .progress-bar.bg-cyan,html[data-netbox-color-mode=dark] .badge.bg-cyan,html[data-netbox-color-mode=dark] .toast.bg-cyan,html[data-netbox-color-mode=dark] .toast-header.bg-cyan,html[data-netbox-color-mode=dark] .progress-bar.bg-cyan,html[data-netbox-color-mode=light] .badge.bg-cyan,html[data-netbox-color-mode=light] .toast.bg-cyan,html[data-netbox-color-mode=light] .toast-header.bg-cyan,html[data-netbox-color-mode=light] .progress-bar.bg-cyan{color:#000}}@media print{html .bg-gray button.btn-close,html[data-netbox-color-mode=dark] .bg-gray button.btn-close,html[data-netbox-color-mode=light] .bg-gray button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23686d71'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-gray,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray,html[data-netbox-color-mode=light] .btn.btn-ghost-gray{color:#adb5bd}html .btn.btn-ghost-gray:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-gray:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-gray:hover{background-color:#adb5bd1f}}@media print{html .alert.alert-gray a:not(.btn),html .table-gray a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=dark] .table-gray a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-gray a:not(.btn),html[data-netbox-color-mode=light] .table-gray a:not(.btn){font-weight:700;color:#686d71}html .alert.alert-gray .btn:not([class*=btn-outline]),html .table-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-gray .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-gray .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-gray a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-gray a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-gray a:not(.btn){font-weight:700;color:#45484c}}@media print{html .badge.bg-gray,html .toast.bg-gray,html .toast-header.bg-gray,html .progress-bar.bg-gray,html[data-netbox-color-mode=dark] .badge.bg-gray,html[data-netbox-color-mode=dark] .toast.bg-gray,html[data-netbox-color-mode=dark] .toast-header.bg-gray,html[data-netbox-color-mode=dark] .progress-bar.bg-gray,html[data-netbox-color-mode=light] .badge.bg-gray,html[data-netbox-color-mode=light] .toast.bg-gray,html[data-netbox-color-mode=light] .toast-header.bg-gray,html[data-netbox-color-mode=light] .progress-bar.bg-gray{color:#000}}@media print{html .bg-black button.btn-close,html[data-netbox-color-mode=dark] .bg-black button.btn-close,html[data-netbox-color-mode=light] .bg-black button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='black'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-black,html[data-netbox-color-mode=dark] .btn.btn-ghost-black,html[data-netbox-color-mode=light] .btn.btn-ghost-black{color:#000}html .btn.btn-ghost-black:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-black:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-black:hover{background-color:#0000001f}}@media print{html .alert.alert-black a:not(.btn),html .table-black a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-black a:not(.btn),html[data-netbox-color-mode=dark] .table-black a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-black a:not(.btn),html[data-netbox-color-mode=light] .table-black a:not(.btn){font-weight:700;color:#000}html .alert.alert-black .btn:not([class*=btn-outline]),html .table-black .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-black .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-black .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-black .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-black .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-black a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-black a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-black a:not(.btn){font-weight:700;color:#999}}@media print{html .badge.bg-black,html .toast.bg-black,html .toast-header.bg-black,html .progress-bar.bg-black,html[data-netbox-color-mode=dark] .badge.bg-black,html[data-netbox-color-mode=dark] .toast.bg-black,html[data-netbox-color-mode=dark] .toast-header.bg-black,html[data-netbox-color-mode=dark] .progress-bar.bg-black,html[data-netbox-color-mode=light] .badge.bg-black,html[data-netbox-color-mode=light] .toast.bg-black,html[data-netbox-color-mode=light] .toast-header.bg-black,html[data-netbox-color-mode=light] .progress-bar.bg-black{color:#fff}}@media print{html .bg-white button.btn-close,html[data-netbox-color-mode=dark] .bg-white button.btn-close,html[data-netbox-color-mode=light] .bg-white button.btn-close{background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23666666'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat}}@media print{html .btn.btn-ghost-white,html[data-netbox-color-mode=dark] .btn.btn-ghost-white,html[data-netbox-color-mode=light] .btn.btn-ghost-white{color:#fff}html .btn.btn-ghost-white:hover,html[data-netbox-color-mode=dark] .btn.btn-ghost-white:hover,html[data-netbox-color-mode=light] .btn.btn-ghost-white:hover{background-color:#ffffff1f}}@media print{html .alert.alert-white a:not(.btn),html .table-white a:not(.btn),html[data-netbox-color-mode=dark] .alert.alert-white a:not(.btn),html[data-netbox-color-mode=dark] .table-white a:not(.btn),html[data-netbox-color-mode=light] .alert.alert-white a:not(.btn),html[data-netbox-color-mode=light] .table-white a:not(.btn){font-weight:700;color:#666}html .alert.alert-white .btn:not([class*=btn-outline]),html .table-white .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .alert.alert-white .btn:not([class*=btn-outline]),html[data-netbox-color-mode=dark] .table-white .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .alert.alert-white .btn:not([class*=btn-outline]),html[data-netbox-color-mode=light] .table-white .btn:not([class*=btn-outline]){border-color:#495057}}@media print{html .toast.bg-white a:not(.btn),html[data-netbox-color-mode=dark] .toast.bg-white a:not(.btn),html[data-netbox-color-mode=light] .toast.bg-white a:not(.btn){font-weight:700;color:#666}}@media print{html .badge.bg-white,html .toast.bg-white,html .toast-header.bg-white,html .progress-bar.bg-white,html[data-netbox-color-mode=dark] .badge.bg-white,html[data-netbox-color-mode=dark] .toast.bg-white,html[data-netbox-color-mode=dark] .toast-header.bg-white,html[data-netbox-color-mode=dark] .progress-bar.bg-white,html[data-netbox-color-mode=light] .badge.bg-white,html[data-netbox-color-mode=light] .toast.bg-white,html[data-netbox-color-mode=light] .toast-header.bg-white,html[data-netbox-color-mode=light] .progress-bar.bg-white{color:#000}}@media print{html table td>.progress,html[data-netbox-color-mode=dark] table td>.progress,html[data-netbox-color-mode=light] table td>.progress{min-width:6rem}}@media print{html .small .form-control,html[data-netbox-color-mode=dark] .small .form-control,html[data-netbox-color-mode=light] .small .form-control{font-size:.875rem}}@media print{html :not(.card-body)>.col:not(:last-child):not(:only-child),html[data-netbox-color-mode=dark] :not(.card-body)>.col:not(:last-child):not(:only-child),html[data-netbox-color-mode=light] :not(.card-body)>.col:not(:last-child):not(:only-child){margin-bottom:1rem}}@media print{html .nav-mobile,html[data-netbox-color-mode=dark] .nav-mobile,html[data-netbox-color-mode=light] .nav-mobile{display:none;flex-direction:column;align-items:center;justify-content:space-between;width:100%}}@media print and (max-width: 991.98px){html .nav-mobile,html[data-netbox-color-mode=dark] .nav-mobile,html[data-netbox-color-mode=light] .nav-mobile{display:flex}}@media print{html .nav-mobile .nav-mobile-top,html[data-netbox-color-mode=dark] .nav-mobile .nav-mobile-top,html[data-netbox-color-mode=light] .nav-mobile .nav-mobile-top{display:flex;align-items:center;justify-content:space-between;width:100%}}@media print{html .card>.table.table-flush,html[data-netbox-color-mode=dark] .card>.table.table-flush,html[data-netbox-color-mode=light] .card>.table.table-flush{margin-bottom:0;overflow:hidden;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}html .card>.table.table-flush thead th[scope=col],html[data-netbox-color-mode=dark] .card>.table.table-flush thead th[scope=col],html[data-netbox-color-mode=light] .card>.table.table-flush thead th[scope=col]{padding-top:1rem;padding-bottom:1rem;text-transform:uppercase;vertical-align:middle;background-color:#f8f9fa;border-top:1px solid rgba(0,0,0,.125);border-bottom-color:#00000020}html .card>.table.table-flush th,html .card>.table.table-flush td,html[data-netbox-color-mode=dark] .card>.table.table-flush th,html[data-netbox-color-mode=dark] .card>.table.table-flush td,html[data-netbox-color-mode=light] .card>.table.table-flush th,html[data-netbox-color-mode=light] .card>.table.table-flush td{padding-right:1.5rem!important;padding-left:1.5rem!important;border-right:0;border-left:0}html .card>.table.table-flush tr[class],html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class],html[data-netbox-color-mode=light] .card>.table.table-flush tr[class]{border-color:#00000020!important}html .card>.table.table-flush tr[class]:last-of-type,html[data-netbox-color-mode=dark] .card>.table.table-flush tr[class]:last-of-type,html[data-netbox-color-mode=light] .card>.table.table-flush tr[class]:last-of-type{border-bottom-color:transparent!important;border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}}@media print{html .header-alert-container,html[data-netbox-color-mode=dark] .header-alert-container,html[data-netbox-color-mode=light] .header-alert-container{display:flex;align-items:center;justify-content:center;padding:0 1rem}html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{width:100%}}@media print and (min-width: 768px){html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{max-width:75%}}@media print and (min-width: 992px){html .header-alert-container .alert,html[data-netbox-color-mode=dark] .header-alert-container .alert,html[data-netbox-color-mode=light] .header-alert-container .alert{max-width:50%}}@media print{html .alert code,html[data-netbox-color-mode=dark] .alert code,html[data-netbox-color-mode=light] .alert code{color:#6c757d}}@media print{html span.profile-button .dropdown-menu,html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu,html[data-netbox-color-mode=light] span.profile-button .dropdown-menu{right:0;left:auto;display:block!important;margin-top:.5rem;box-shadow:0 .5rem 1rem #00000026;transition:opacity .2s ease-in-out}html span.profile-button .dropdown-menu:not(.show),html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu:not(.show),html[data-netbox-color-mode=light] span.profile-button .dropdown-menu:not(.show){pointer-events:none;opacity:0}html span.profile-button .dropdown-menu.show,html[data-netbox-color-mode=dark] span.profile-button .dropdown-menu.show,html[data-netbox-color-mode=light] span.profile-button .dropdown-menu.show{pointer-events:auto;opacity:1}}@media print{html div#advanced-search-content div.card div.card-body div.col:not(:last-child),html[data-netbox-color-mode=dark] div#advanced-search-content div.card div.card-body div.col:not(:last-child),html[data-netbox-color-mode=light] div#advanced-search-content div.card div.card-body div.col:not(:last-child){margin-right:1rem}}@media print{html table td a,html[data-netbox-color-mode=dark] table td a,html[data-netbox-color-mode=light] table td a{text-decoration:none}html table td a:hover,html[data-netbox-color-mode=dark] table td a:hover,html[data-netbox-color-mode=light] table td a:hover{text-decoration:underline}html table td .dropdown,html[data-netbox-color-mode=dark] table td .dropdown,html[data-netbox-color-mode=light] table td .dropdown{position:static}html table th a,html table th a:hover,html[data-netbox-color-mode=dark] table th a,html[data-netbox-color-mode=dark] table th a:hover,html[data-netbox-color-mode=light] table th a,html[data-netbox-color-mode=light] table th a:hover{color:#212529;text-decoration:none}html table td,html table th,html[data-netbox-color-mode=dark] table td,html[data-netbox-color-mode=dark] table th,html[data-netbox-color-mode=light] table td,html[data-netbox-color-mode=light] table th{font-size:.875rem;line-height:1.25;vertical-align:middle}html table td.min-width,html table th.min-width,html[data-netbox-color-mode=dark] table td.min-width,html[data-netbox-color-mode=dark] table th.min-width,html[data-netbox-color-mode=light] table td.min-width,html[data-netbox-color-mode=light] table th.min-width{width:1%}html table td .form-check-input,html table th .form-check-input,html[data-netbox-color-mode=dark] table td .form-check-input,html[data-netbox-color-mode=dark] table th .form-check-input,html[data-netbox-color-mode=light] table td .form-check-input,html[data-netbox-color-mode=light] table th .form-check-input{margin-top:.125em;font-size:1rem}html table td .btn-sm,html table td .btn-group-sm>.btn,html table th .btn-sm,html table th .btn-group-sm>.btn,html[data-netbox-color-mode=dark] table td .btn-sm,html[data-netbox-color-mode=dark] table th .btn-sm,html[data-netbox-color-mode=light] table td .btn-sm,html[data-netbox-color-mode=light] table th .btn-sm{line-height:1}html table td p,html table th p,html[data-netbox-color-mode=dark] table td p,html[data-netbox-color-mode=dark] table th p,html[data-netbox-color-mode=light] table td p,html[data-netbox-color-mode=light] table th p{margin-bottom:.5em}html table td p:last-child,html table th p:last-child,html[data-netbox-color-mode=dark] table td p:last-child,html[data-netbox-color-mode=dark] table th p:last-child,html[data-netbox-color-mode=light] table td p:last-child,html[data-netbox-color-mode=light] table th p:last-child{margin-bottom:0}html table th.asc>a:after,html[data-netbox-color-mode=dark] table th.asc>a:after,html[data-netbox-color-mode=light] table th.asc>a:after{content:"\f0140";font-family:Material Design Icons}html table th.desc>a:after,html[data-netbox-color-mode=dark] table th.desc>a:after,html[data-netbox-color-mode=light] table th.desc>a:after{content:"\f0143";font-family:Material Design Icons}html table.table>:not(caption)>*>*,html[data-netbox-color-mode=dark] table.table>:not(caption)>*>*,html[data-netbox-color-mode=light] table.table>:not(caption)>*>*{padding-right:.25rem!important;padding-left:.25rem!important}html table.object-list th,html[data-netbox-color-mode=dark] table.object-list th,html[data-netbox-color-mode=light] table.object-list th{font-size:.75rem;line-height:1;vertical-align:bottom}html table.attr-table th,html[data-netbox-color-mode=dark] table.attr-table th,html[data-netbox-color-mode=light] table.attr-table th{font-weight:400;width:25%}}@media print{html div.title-container,html[data-netbox-color-mode=dark] div.title-container,html[data-netbox-color-mode=light] div.title-container{display:flex;flex-direction:column;flex-wrap:wrap;justify-content:space-between}}@media print and (min-width: 992px){html div.title-container,html[data-netbox-color-mode=dark] div.title-container,html[data-netbox-color-mode=light] div.title-container{flex-direction:row}}@media print{html div.title-container #content-title,html[data-netbox-color-mode=dark] div.title-container #content-title,html[data-netbox-color-mode=light] div.title-container #content-title{display:flex;flex:1 0;flex-direction:column;padding-bottom:.5rem}}@media print{html .controls,html[data-netbox-color-mode=dark] .controls,html[data-netbox-color-mode=light] .controls{margin-bottom:.5rem}}@media print{html .controls,html[data-netbox-color-mode=dark] .controls,html[data-netbox-color-mode=light] .controls{display:none!important}}@media print{html .controls .control-group,html[data-netbox-color-mode=dark] .controls .control-group,html[data-netbox-color-mode=light] .controls .control-group{display:flex;flex-wrap:wrap;justify-content:flex-start}}@media print and (min-width: 992px){html .controls .control-group,html[data-netbox-color-mode=dark] .controls .control-group,html[data-netbox-color-mode=light] .controls .control-group{justify-content:flex-end}}@media print{html .controls .control-group>*,html[data-netbox-color-mode=dark] .controls .control-group>*,html[data-netbox-color-mode=light] .controls .control-group>*{margin:.25rem}html .controls .control-group>*:first-child,html[data-netbox-color-mode=dark] .controls .control-group>*:first-child,html[data-netbox-color-mode=light] .controls .control-group>*:first-child{margin-left:0}html .controls .control-group>*:last-child,html[data-netbox-color-mode=dark] .controls .control-group>*:last-child,html[data-netbox-color-mode=light] .controls .control-group>*:last-child{margin-right:0}}@media print{html .object-subtitle,html[data-netbox-color-mode=dark] .object-subtitle,html[data-netbox-color-mode=light] .object-subtitle{display:block;font-size:.875rem;color:#6c757d}}@media print and (min-width: 768px){html .object-subtitle,html[data-netbox-color-mode=dark] .object-subtitle,html[data-netbox-color-mode=light] .object-subtitle{display:inline-block}}@media print{html .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=light] .object-subtitle>span{display:block}html .object-subtitle>span.separator,html[data-netbox-color-mode=dark] .object-subtitle>span.separator,html[data-netbox-color-mode=light] .object-subtitle>span.separator{display:none}}@media print and (min-width: 768px){html .object-subtitle>span,html .object-subtitle>span.separator,html[data-netbox-color-mode=dark] .object-subtitle>span,html[data-netbox-color-mode=dark] .object-subtitle>span.separator,html[data-netbox-color-mode=light] .object-subtitle>span,html[data-netbox-color-mode=light] .object-subtitle>span.separator{display:inline-block}}@media print{html nav.search,html[data-netbox-color-mode=dark] nav.search,html[data-netbox-color-mode=light] nav.search{z-index:999;justify-content:center;background-color:#f8f9fa}html nav.search .search-container,html[data-netbox-color-mode=dark] nav.search .search-container,html[data-netbox-color-mode=light] nav.search .search-container{display:flex;width:100%}}@media print and (max-width: 991.98px){html nav.search .search-container,html[data-netbox-color-mode=dark] nav.search .search-container,html[data-netbox-color-mode=light] nav.search .search-container{display:none}}@media print{html nav.search .input-group .search-obj-selected,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selected,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selected{border-color:#ced4da}html nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle{color:#000;border-color:#ced4da;margin-left:0;font-weight:400;line-height:1.5;color:#212529;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem;border-left:1px solid var(--nbx-search-filter-border-left-color)}html nav.search .input-group .dropdown-toggle:hover,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:hover,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:hover{color:#000;background-color:#eceff1;border-color:#d3d8de}.btn-check:focus+html nav.search .input-group .dropdown-toggle,html nav.search .input-group .dropdown-toggle:focus,.btn-check:focus+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:focus+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus{color:#000;background-color:#eceff1;border-color:#d3d8de;box-shadow:0 0 0 .25rem #afb4b980}.btn-check:checked+html nav.search .input-group .dropdown-toggle,.btn-check:active+html nav.search .input-group .dropdown-toggle,html nav.search .input-group .dropdown-toggle:active,html nav.search .input-group .dropdown-toggle.active,.show>html nav.search .input-group .dropdown-toggle.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle,.btn-check:checked+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,.btn-check:active+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:active,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.active,.show>html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.dropdown-toggle{color:#000;background-color:#edf0f2;border-color:#d3d8de}.btn-check:checked+html nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html nav.search .input-group .dropdown-toggle:focus,html nav.search .input-group .dropdown-toggle:active:focus,html nav.search .input-group .dropdown-toggle.active:focus,.show>html nav.search .input-group .dropdown-toggle.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus,.btn-check:checked+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus,.btn-check:active+html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:active:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.active:focus,.show>html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.dropdown-toggle:focus{box-shadow:0 0 0 .25rem #afb4b980}html nav.search .input-group .dropdown-toggle:disabled,html nav.search .input-group .dropdown-toggle.disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle.disabled,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:disabled,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle.disabled{color:#000;background-color:#e9ecef;border-color:#ced4da}html nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:focus,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:focus{box-shadow:unset!important}html nav.search .input-group .dropdown-toggle:after,html[data-netbox-color-mode=dark] nav.search .input-group .dropdown-toggle:after,html[data-netbox-color-mode=light] nav.search .input-group .dropdown-toggle:after{display:none}html nav.search .input-group .search-obj-selector,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector{max-height:70vh;overflow-y:auto}html nav.search .input-group .search-obj-selector .dropdown-item,html nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-item,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-header{font-size:.875rem}html nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=dark] nav.search .input-group .search-obj-selector .dropdown-header,html[data-netbox-color-mode=light] nav.search .input-group .search-obj-selector .dropdown-header{text-transform:uppercase}}@media print{html .quicksearch input[type=search],html[data-netbox-color-mode=dark] .quicksearch input[type=search],html[data-netbox-color-mode=light] .quicksearch input[type=search]{border-radius:.375rem!important}html .quicksearch button,html[data-netbox-color-mode=dark] .quicksearch button,html[data-netbox-color-mode=light] .quicksearch button{margin-left:-32px!important;z-index:100!important;outline:none!important;border-radius:.375rem!important;transition:visibility 0s,opacity .2s linear}html .quicksearch button :hover,html[data-netbox-color-mode=dark] .quicksearch button :hover,html[data-netbox-color-mode=light] .quicksearch button :hover{opacity:50%;transition:visibility 0s,opacity .1s linear}}@media print{html main.layout,html[data-netbox-color-mode=dark] main.layout,html[data-netbox-color-mode=light] main.layout{display:flex;flex-wrap:nowrap;height:100vh;height:-webkit-fill-available;max-height:100vh;overflow-x:auto;overflow-y:hidden}}@media print{html main.layout,html[data-netbox-color-mode=dark] main.layout,html[data-netbox-color-mode=light] main.layout{position:static!important;display:block!important;height:100%;overflow-x:visible!important;overflow-y:visible!important}}@media print{html main.login-container,html[data-netbox-color-mode=dark] main.login-container,html[data-netbox-color-mode=light] main.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:100vw;height:calc(100vh - 4rem);padding-top:40px;padding-bottom:40px}html main.login-container+footer.footer button.color-mode-toggle,html[data-netbox-color-mode=dark] main.login-container+footer.footer button.color-mode-toggle,html[data-netbox-color-mode=light] main.login-container+footer.footer button.color-mode-toggle{color:var(--nbx-color-mode-toggle-color)}}@media print{html .footer,html[data-netbox-color-mode=dark] .footer,html[data-netbox-color-mode=light] .footer{background-color:#f8f9fa;padding:0}html .footer .nav-link,html[data-netbox-color-mode=dark] .footer .nav-link,html[data-netbox-color-mode=light] .footer .nav-link{padding:.5rem}}@media print and (max-width: 767.98px){html .footer,html[data-netbox-color-mode=dark] .footer,html[data-netbox-color-mode=light] .footer{margin-bottom:8rem}}@media print{html footer.login-footer,html[data-netbox-color-mode=dark] footer.login-footer,html[data-netbox-color-mode=light] footer.login-footer{height:4rem;margin-top:auto}html footer.login-footer .container-fluid,html footer.login-footer .container-sm,html footer.login-footer .container-md,html footer.login-footer .container-lg,html footer.login-footer .container-xl,html footer.login-footer .container-xxl,html[data-netbox-color-mode=dark] footer.login-footer .container-fluid,html[data-netbox-color-mode=light] footer.login-footer .container-fluid{display:flex;justify-content:flex-end;padding:.75rem 1.5rem}}@media print{html h1.accordion-item-title,html .accordion-item-title.h1,html h2.accordion-item-title,html .accordion-item-title.h2,html h3.accordion-item-title,html .accordion-item-title.h3,html h4.accordion-item-title,html .accordion-item-title.h4,html h5.accordion-item-title,html .accordion-item-title.h5,html h6.accordion-item-title,html .accordion-item-title.h6,html[data-netbox-color-mode=dark] h1.accordion-item-title,html[data-netbox-color-mode=dark] h2.accordion-item-title,html[data-netbox-color-mode=dark] h3.accordion-item-title,html[data-netbox-color-mode=dark] h4.accordion-item-title,html[data-netbox-color-mode=dark] h5.accordion-item-title,html[data-netbox-color-mode=dark] h6.accordion-item-title,html[data-netbox-color-mode=light] h1.accordion-item-title,html[data-netbox-color-mode=light] h2.accordion-item-title,html[data-netbox-color-mode=light] h3.accordion-item-title,html[data-netbox-color-mode=light] h4.accordion-item-title,html[data-netbox-color-mode=light] h5.accordion-item-title,html[data-netbox-color-mode=light] h6.accordion-item-title{padding:.25rem .5rem;font-size:.875rem;font-weight:700;color:var(--nbx-sidebar-title-color);text-transform:uppercase}}@media print{html .form-login,html[data-netbox-color-mode=dark] .form-login,html[data-netbox-color-mode=light] .form-login{width:100%;max-width:330px;padding:15px}html .form-login input:focus,html[data-netbox-color-mode=dark] .form-login input:focus,html[data-netbox-color-mode=light] .form-login input:focus{z-index:1}html .form-login input[type=text],html[data-netbox-color-mode=dark] .form-login input[type=text],html[data-netbox-color-mode=light] .form-login input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}html .form-login input[type=password],html[data-netbox-color-mode=dark] .form-login input[type=password],html[data-netbox-color-mode=light] .form-login input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}html .form-login .form-control,html[data-netbox-color-mode=dark] .form-login .form-control,html[data-netbox-color-mode=light] .form-login .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}}@media print{html .navbar,html[data-netbox-color-mode=dark] .navbar,html[data-netbox-color-mode=light] .navbar{border-bottom:1px solid #ced4da}}@media print{html .navbar-brand,html[data-netbox-color-mode=dark] .navbar-brand,html[data-netbox-color-mode=light] .navbar-brand{padding-top:.75rem;padding-bottom:.75rem;font-size:1rem}}@media print{html nav.nav.nav-pills .nav-item.nav-link,html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link,html[data-netbox-color-mode=light] nav.nav.nav-pills .nav-item.nav-link{padding:.25rem .5rem;font-size:.875rem;border-radius:.375rem}html nav.nav.nav-pills .nav-item.nav-link:hover,html[data-netbox-color-mode=dark] nav.nav.nav-pills .nav-item.nav-link:hover,html[data-netbox-color-mode=light] nav.nav.nav-pills .nav-item.nav-link:hover{color:#343a40;background-color:#cfe2ff}}@media print{html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{position:relative;display:flex;flex-direction:column;width:calc(100% - 3rem);min-height:100vh;overflow-x:hidden;overflow-y:auto}html div.content-container:focus,html div.content-container:focus-visible,html[data-netbox-color-mode=dark] div.content-container:focus,html[data-netbox-color-mode=dark] div.content-container:focus-visible,html[data-netbox-color-mode=light] div.content-container:focus,html[data-netbox-color-mode=light] div.content-container:focus-visible{outline:0}html div.content-container div.content,html[data-netbox-color-mode=dark] div.content-container div.content,html[data-netbox-color-mode=light] div.content-container div.content{background-color:#f8f9fa;flex:1}}@media print and (max-width: 991.98px){html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{width:100%}}@media print{html div.content-container,html[data-netbox-color-mode=dark] div.content-container,html[data-netbox-color-mode=light] div.content-container{width:100%!important;margin-left:0!important}}@media print and (max-width: 768px){html .sidebar.collapse.show~.content-container>.content,html[data-netbox-color-mode=dark] .sidebar.collapse.show~.content-container>.content,html[data-netbox-color-mode=light] .sidebar.collapse.show~.content-container>.content{position:fixed;top:0;left:0;overflow-y:hidden}}@media print{html .tooltip,html[data-netbox-color-mode=dark] .tooltip,html[data-netbox-color-mode=light] .tooltip{pointer-events:none}}@media print{html span.color-label,html[data-netbox-color-mode=dark] span.color-label,html[data-netbox-color-mode=light] span.color-label{display:block;width:5rem;height:1rem;padding:.35em .65em;border:1px solid #303030;border-radius:.375rem;box-shadow:0 .125rem .25rem #00000013}}@media print{html .badge a,html[data-netbox-color-mode=dark] .badge a,html[data-netbox-color-mode=light] .badge a{color:inherit}}@media print{html .btn,html[data-netbox-color-mode=dark] .btn,html[data-netbox-color-mode=light] .btn{white-space:nowrap}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{box-shadow:0 .125rem .25rem #00000013}html .card .card-header,html[data-netbox-color-mode=dark] .card .card-header,html[data-netbox-color-mode=light] .card .card-header{padding:1rem;color:var(--nbx-body-color);border-bottom:none}html .card .card-header+.card-body,html[data-netbox-color-mode=dark] .card .card-header+.card-body,html[data-netbox-color-mode=light] .card .card-header+.card-body{padding-top:0}html .card .card-body.small .form-control,html .card .card-body.small .form-select,html[data-netbox-color-mode=dark] .card .card-body.small .form-control,html[data-netbox-color-mode=dark] .card .card-body.small .form-select,html[data-netbox-color-mode=light] .card .card-body.small .form-control,html[data-netbox-color-mode=light] .card .card-body.small .form-select{font-size:.875rem}html .card .card-divider,html[data-netbox-color-mode=dark] .card .card-divider,html[data-netbox-color-mode=light] .card .card-divider{width:100%;height:1px;margin:1rem 0;border-top:1px solid rgba(0,0,0,.125);opacity:.25}}@media print{html .card,html[data-netbox-color-mode=dark] .card,html[data-netbox-color-mode=light] .card{box-shadow:unset!important}}@media print{html .form-floating,html[data-netbox-color-mode=dark] .form-floating,html[data-netbox-color-mode=light] .form-floating{position:relative}html .form-floating>.input-group>.form-control,html .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}html .form-floating>.input-group>label,html[data-netbox-color-mode=dark] .form-floating>.input-group>label,html[data-netbox-color-mode=light] .form-floating>.input-group>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}}@media print and (prefers-reduced-motion: reduce){html .form-floating>.input-group>label,html[data-netbox-color-mode=dark] .form-floating>.input-group>label,html[data-netbox-color-mode=light] .form-floating>.input-group>label{transition:none}}@media print{html .form-floating>.input-group>.form-control::placeholder,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control::placeholder,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control::placeholder{color:transparent}html .form-floating>.input-group>.form-control:focus,html .form-floating>.input-group>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown),html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:focus,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}html .form-floating>.input-group>.form-control:-webkit-autofill,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.input-group>.form-select,html .form-floating>.choices>.choices__inner,html .form-floating>.ss-main span.placeholder,html .form-floating>.ss-main div.ss-values,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=dark] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=dark] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=dark] .form-floating>.ss-main div.ss-values,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select,html[data-netbox-color-mode=light] .form-floating>.choices>.choices__inner,html[data-netbox-color-mode=light] .form-floating>.ss-main span.placeholder,html[data-netbox-color-mode=light] .form-floating>.ss-main div.ss-values{padding-top:1.625rem;padding-bottom:.625rem}}@media print{html .form-floating>.input-group>.form-control:focus~label,html .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html .form-floating>.input-group>.form-select~label,html .form-floating>.choices~label,html .form-floating>.ss-main~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=dark] .form-floating>.choices~label,html[data-netbox-color-mode=dark] .form-floating>.ss-main~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:focus~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:not(:placeholder-shown)~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-select~label,html[data-netbox-color-mode=light] .form-floating>.choices~label,html[data-netbox-color-mode=light] .form-floating>.ss-main~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem);z-index:4}}@media print{html .form-floating>.input-group>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=dark] .form-floating>.input-group>.form-control:-webkit-autofill~label,html[data-netbox-color-mode=light] .form-floating>.input-group>.form-control:-webkit-autofill~label{z-index:4;opacity:.65;transform:scale(.85) translateY(-.5rem) translate(.15rem)}}@media print{html .form-object-edit,html[data-netbox-color-mode=dark] .form-object-edit,html[data-netbox-color-mode=light] .form-object-edit{margin:0 auto;max-width:800px}}@media print{html textarea.form-control[rows="10"],html[data-netbox-color-mode=dark] textarea.form-control[rows="10"],html[data-netbox-color-mode=light] textarea.form-control[rows="10"]{height:18rem}}@media print{html textarea.markdown,html textarea.form-control[name=csv],html[data-netbox-color-mode=dark] textarea.markdown,html[data-netbox-color-mode=dark] textarea.form-control[name=csv],html[data-netbox-color-mode=light] textarea.markdown,html[data-netbox-color-mode=light] textarea.form-control[name=csv]{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}}@media print{html .card:not(:only-of-type),html[data-netbox-color-mode=dark] .card:not(:only-of-type),html[data-netbox-color-mode=light] .card:not(:only-of-type){margin-bottom:1rem}}@media print{html .stat-btn,html[data-netbox-color-mode=dark] .stat-btn,html[data-netbox-color-mode=light] .stat-btn{min-width:3rem}}@media print{html nav.breadcrumb-container,html[data-netbox-color-mode=dark] nav.breadcrumb-container,html[data-netbox-color-mode=light] nav.breadcrumb-container{width:fit-content;padding:.35em .65em;font-size:.875rem}html nav.breadcrumb-container ol.breadcrumb,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb{margin-bottom:0}html nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a{text-decoration:none}html nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover,html[data-netbox-color-mode=dark] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover,html[data-netbox-color-mode=light] nav.breadcrumb-container ol.breadcrumb li.breadcrumb-item>a:hover{text-decoration:underline}}@media print{html label.required,html[data-netbox-color-mode=dark] label.required,html[data-netbox-color-mode=light] label.required{font-weight:700}html label.required:after,html[data-netbox-color-mode=dark] label.required:after,html[data-netbox-color-mode=light] label.required:after{position:absolute;display:inline-block;margin:0 0 0 2px;font-family:Material Design Icons;font-size:8px;font-style:normal;font-weight:600;text-decoration:none;content:"\f06c4"}}@media print{html div.bulk-buttons,html[data-netbox-color-mode=dark] div.bulk-buttons,html[data-netbox-color-mode=light] div.bulk-buttons{display:flex;justify-content:space-between;margin:.5rem 0}html div.bulk-buttons>div.bulk-button-group,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group{display:flex;flex-wrap:wrap;align-items:flex-start}html div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group:first-of-type:not(:last-of-type)>*:first-child{margin-left:0}html div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group:last-of-type:not(:first-of-type)>*:last-child{margin-right:0}html div.bulk-buttons>div.bulk-button-group>*,html[data-netbox-color-mode=dark] div.bulk-buttons>div.bulk-button-group>*,html[data-netbox-color-mode=light] div.bulk-buttons>div.bulk-button-group>*{margin:.25rem}}@media print{html table tbody tr.primary,html[data-netbox-color-mode=dark] table tbody tr.primary,html[data-netbox-color-mode=light] table tbody tr.primary{background-color:#337ab726;border-color:#adb5bd}html table tbody tr.secondary,html[data-netbox-color-mode=dark] table tbody tr.secondary,html[data-netbox-color-mode=light] table tbody tr.secondary{background-color:#6c757d26;border-color:#adb5bd}html table tbody tr.success,html[data-netbox-color-mode=dark] table tbody tr.success,html[data-netbox-color-mode=light] table tbody tr.success{background-color:#19875426;border-color:#adb5bd}html table tbody tr.info,html[data-netbox-color-mode=dark] table tbody tr.info,html[data-netbox-color-mode=light] table tbody tr.info{background-color:#54d6f026;border-color:#adb5bd}html table tbody tr.warning,html[data-netbox-color-mode=dark] table tbody tr.warning,html[data-netbox-color-mode=light] table tbody tr.warning{background-color:#ffc10726;border-color:#adb5bd}html table tbody tr.danger,html[data-netbox-color-mode=dark] table tbody tr.danger,html[data-netbox-color-mode=light] table tbody tr.danger{background-color:#dc354526;border-color:#adb5bd}html table tbody tr.light,html[data-netbox-color-mode=dark] table tbody tr.light,html[data-netbox-color-mode=light] table tbody tr.light{background-color:#e9ecef26;border-color:#adb5bd}html table tbody tr.dark,html[data-netbox-color-mode=dark] table tbody tr.dark,html[data-netbox-color-mode=light] table tbody tr.dark{background-color:#343a4026;border-color:#adb5bd}html table tbody tr.blue,html[data-netbox-color-mode=dark] table tbody tr.blue,html[data-netbox-color-mode=light] table tbody tr.blue{background-color:#0d6efd26;border-color:#adb5bd}html table tbody tr.indigo,html[data-netbox-color-mode=dark] table tbody tr.indigo,html[data-netbox-color-mode=light] table tbody tr.indigo{background-color:#6610f226;border-color:#adb5bd}html table tbody tr.purple,html[data-netbox-color-mode=dark] table tbody tr.purple,html[data-netbox-color-mode=light] table tbody tr.purple{background-color:#6f42c126;border-color:#adb5bd}html table tbody tr.pink,html[data-netbox-color-mode=dark] table tbody tr.pink,html[data-netbox-color-mode=light] table tbody tr.pink{background-color:#d6338426;border-color:#adb5bd}html table tbody tr.red,html[data-netbox-color-mode=dark] table tbody tr.red,html[data-netbox-color-mode=light] table tbody tr.red{background-color:#dc354526;border-color:#adb5bd}html table tbody tr.orange,html[data-netbox-color-mode=dark] table tbody tr.orange,html[data-netbox-color-mode=light] table tbody tr.orange{background-color:#fd7e1426;border-color:#adb5bd}html table tbody tr.yellow,html[data-netbox-color-mode=dark] table tbody tr.yellow,html[data-netbox-color-mode=light] table tbody tr.yellow{background-color:#ffc10726;border-color:#adb5bd}html table tbody tr.green,html[data-netbox-color-mode=dark] table tbody tr.green,html[data-netbox-color-mode=light] table tbody tr.green{background-color:#19875426;border-color:#adb5bd}html table tbody tr.teal,html[data-netbox-color-mode=dark] table tbody tr.teal,html[data-netbox-color-mode=light] table tbody tr.teal{background-color:#20c99726;border-color:#adb5bd}html table tbody tr.cyan,html[data-netbox-color-mode=dark] table tbody tr.cyan,html[data-netbox-color-mode=light] table tbody tr.cyan{background-color:#0dcaf026;border-color:#adb5bd}html table tbody tr.gray,html[data-netbox-color-mode=dark] table tbody tr.gray,html[data-netbox-color-mode=light] table tbody tr.gray{background-color:#adb5bd26;border-color:#adb5bd}html table tbody tr.black,html[data-netbox-color-mode=dark] table tbody tr.black,html[data-netbox-color-mode=light] table tbody tr.black{background-color:#00000026;border-color:#adb5bd}html table tbody tr.white,html[data-netbox-color-mode=dark] table tbody tr.white,html[data-netbox-color-mode=light] table tbody tr.white{background-color:#ffffff26;border-color:#adb5bd}}@media print{html table .table-badge-group .table-badge,html[data-netbox-color-mode=dark] table .table-badge-group .table-badge,html[data-netbox-color-mode=light] table .table-badge-group .table-badge{display:block;width:min-content;font-size:.875rem;font-weight:400}html table .table-badge-group .table-badge:not(.badge),html[data-netbox-color-mode=dark] table .table-badge-group .table-badge:not(.badge),html[data-netbox-color-mode=light] table .table-badge-group .table-badge:not(.badge){padding:0 .65em}html table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child),html[data-netbox-color-mode=dark] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child),html[data-netbox-color-mode=light] table .table-badge-group .table-badge.badge:not(:last-of-type):not(:only-child){margin-bottom:.25rem}}@media print{html pre.change-data,html[data-netbox-color-mode=dark] pre.change-data,html[data-netbox-color-mode=light] pre.change-data{padding-right:0;padding-left:0}html pre.change-data>span,html[data-netbox-color-mode=dark] pre.change-data>span,html[data-netbox-color-mode=light] pre.change-data>span{display:block;padding-right:1rem;padding-left:1rem}html pre.change-data>span.added,html[data-netbox-color-mode=dark] pre.change-data>span.added,html[data-netbox-color-mode=light] pre.change-data>span.added{background-color:var(--nbx-change-added)}html pre.change-data>span.removed,html[data-netbox-color-mode=dark] pre.change-data>span.removed,html[data-netbox-color-mode=light] pre.change-data>span.removed{background-color:var(--nbx-change-removed)}}@media print{html pre.change-diff,html[data-netbox-color-mode=dark] pre.change-diff,html[data-netbox-color-mode=light] pre.change-diff{border-color:transparent}html pre.change-diff.change-removed,html[data-netbox-color-mode=dark] pre.change-diff.change-removed,html[data-netbox-color-mode=light] pre.change-diff.change-removed{background-color:var(--nbx-change-removed)}html pre.change-diff.change-added,html[data-netbox-color-mode=dark] pre.change-diff.change-added,html[data-netbox-color-mode=light] pre.change-diff.change-added{background-color:var(--nbx-change-added)}}@media print{html div.card-overlay,html[data-netbox-color-mode=dark] div.card-overlay,html[data-netbox-color-mode=light] div.card-overlay{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#ffffffbf;border-radius:.375rem}html div.card-overlay>div.spinner-border,html[data-netbox-color-mode=dark] div.card-overlay>div.spinner-border,html[data-netbox-color-mode=light] div.card-overlay>div.spinner-border{width:6rem;height:6rem;color:#6c757d}}@media print{html .table-controls,html[data-netbox-color-mode=dark] .table-controls,html[data-netbox-color-mode=light] .table-controls{display:flex}}@media print and (min-width: 768px){html .table-controls,html[data-netbox-color-mode=dark] .table-controls,html[data-netbox-color-mode=light] .table-controls{margin-top:0!important;margin-bottom:0!important}}@media print{html .table-controls .table-configure,html[data-netbox-color-mode=dark] .table-controls .table-configure,html[data-netbox-color-mode=light] .table-controls .table-configure{justify-content:flex-start}}@media print and (min-width: 768px){html .table-controls .table-configure,html[data-netbox-color-mode=dark] .table-controls .table-configure,html[data-netbox-color-mode=light] .table-controls .table-configure{justify-content:flex-end}}@media print{html .table-controls .form-switch.form-check-inline,html[data-netbox-color-mode=dark] .table-controls .form-switch.form-check-inline,html[data-netbox-color-mode=light] .table-controls .form-switch.form-check-inline{flex:1 0 auto;font-size:.875rem}}@media print{html .nav-tabs,html[data-netbox-color-mode=dark] .nav-tabs,html[data-netbox-color-mode=light] .nav-tabs{background-color:#fff}html .nav-tabs .nav-link:hover,html[data-netbox-color-mode=dark] .nav-tabs .nav-link:hover,html[data-netbox-color-mode=light] .nav-tabs .nav-link:hover{border-bottom-color:transparent}html .nav-tabs .nav-link.active,html[data-netbox-color-mode=dark] .nav-tabs .nav-link.active,html[data-netbox-color-mode=light] .nav-tabs .nav-link.active{background-color:#f8f9fa;border-bottom-color:#f8f9fa;transform:translateY(1px)}}@media print{html .tab-content,html[data-netbox-color-mode=dark] .tab-content,html[data-netbox-color-mode=light] .tab-content{display:flex;flex-direction:column;padding:1rem}}@media print{html .masonry,html[data-netbox-color-mode=dark] .masonry,html[data-netbox-color-mode=light] .masonry{position:static!important;display:block!important;height:unset!important}}@media print{html .masonry .masonry-item,html[data-netbox-color-mode=dark] .masonry .masonry-item,html[data-netbox-color-mode=light] .masonry .masonry-item{position:static!important;top:unset!important;left:unset!important;display:block!important}}@media print{html .record-depth,html[data-netbox-color-mode=dark] .record-depth,html[data-netbox-color-mode=light] .record-depth{display:inline;font-size:1rem;user-select:none;opacity:.33}html .record-depth span:only-of-type,html .record-depth span:last-of-type,html[data-netbox-color-mode=dark] .record-depth span:only-of-type,html[data-netbox-color-mode=dark] .record-depth span:last-of-type,html[data-netbox-color-mode=light] .record-depth span:only-of-type,html[data-netbox-color-mode=light] .record-depth span:last-of-type{margin-right:.25rem}}@media print{html .popover.image-preview-popover,html[data-netbox-color-mode=dark] .popover.image-preview-popover,html[data-netbox-color-mode=light] .popover.image-preview-popover{max-width:unset}}@media print{html .rendered-markdown table,html[data-netbox-color-mode=dark] .rendered-markdown table,html[data-netbox-color-mode=light] .rendered-markdown table{width:100%}}@media print{html .rendered-markdown th,html[data-netbox-color-mode=dark] .rendered-markdown th,html[data-netbox-color-mode=light] .rendered-markdown th{border-bottom:2px solid #dddddd;padding:8px}}@media print{html .rendered-markdown td,html[data-netbox-color-mode=dark] .rendered-markdown td,html[data-netbox-color-mode=light] .rendered-markdown td{border-top:1px solid #dddddd;padding:8px}}@media print{html th[align=left],html[data-netbox-color-mode=dark] th[align=left],html[data-netbox-color-mode=light] th[align=left]{text-align:left}}@media print{html th[align=center],html[data-netbox-color-mode=dark] th[align=center],html[data-netbox-color-mode=light] th[align=center]{text-align:center}}@media print{html th[align=right],html[data-netbox-color-mode=dark] th[align=right],html[data-netbox-color-mode=light] th[align=right]{text-align:right}}@media print{html .markdown-widget .nav-link,html[data-netbox-color-mode=dark] .markdown-widget .nav-link,html[data-netbox-color-mode=light] .markdown-widget .nav-link{border-bottom:0}html .markdown-widget .nav-link.active,html[data-netbox-color-mode=dark] .markdown-widget .nav-link.active,html[data-netbox-color-mode=light] .markdown-widget .nav-link.active{background-color:var(--nbx-body-bg)}html .markdown-widget .nav-tabs,html[data-netbox-color-mode=dark] .markdown-widget .nav-tabs,html[data-netbox-color-mode=light] .markdown-widget .nav-tabs{background-color:var(--nbx-pre-bg)}}@media print{html td pre,html[data-netbox-color-mode=dark] td pre,html[data-netbox-color-mode=light] td pre{margin-bottom:0}}@media print{html pre.block,html[data-netbox-color-mode=dark] pre.block,html[data-netbox-color-mode=light] pre.block{padding:1rem;background-color:var(--nbx-pre-bg);border:1px solid var(--nbx-pre-border-color);border-radius:.375rem}}@media print{html #django-messages,html[data-netbox-color-mode=dark] #django-messages,html[data-netbox-color-mode=light] #django-messages{position:fixed;right:1rem;bottom:0;margin:1rem}}@media print{html html[data-netbox-url-name=home] .content-container,html html[data-netbox-url-name=home] .search,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home] .search,html[data-netbox-color-mode=light] html[data-netbox-url-name=home] .content-container,html[data-netbox-color-mode=light] html[data-netbox-url-name=home] .search{background-color:#f8f9fa!important}html html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=dark] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search,html[data-netbox-color-mode=light] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .content-container,html[data-netbox-color-mode=light] html[data-netbox-url-name=home][data-netbox-color-mode=dark] .search{background-color:#171b1d!important}html html[data-netbox-url-name=login] #django-messages,html[data-netbox-color-mode=dark] html[data-netbox-url-name=login] #django-messages,html[data-netbox-color-mode=light] html[data-netbox-url-name=login] #django-messages{display:none}} diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 84bfecae3..97c4ba79c 100644 --- a/netbox/project-static/dist/netbox.js +++ b/netbox/project-static/dist/netbox.js @@ -1,11 +1,11 @@ -(()=>{var j_=Object.create;var ra=Object.defineProperty,H_=Object.defineProperties,B_=Object.getOwnPropertyDescriptor,F_=Object.getOwnPropertyDescriptors,z_=Object.getOwnPropertyNames,hh=Object.getOwnPropertySymbols,$_=Object.getPrototypeOf,ph=Object.prototype.hasOwnProperty,U_=Object.prototype.propertyIsEnumerable;var lu=(yr,br,mr)=>br in yr?ra(yr,br,{enumerable:!0,configurable:!0,writable:!0,value:mr}):yr[br]=mr,ci=(yr,br)=>{for(var mr in br||(br={}))ph.call(br,mr)&&lu(yr,mr,br[mr]);if(hh)for(var mr of hh(br))U_.call(br,mr)&&lu(yr,mr,br[mr]);return yr},al=(yr,br)=>H_(yr,F_(br)),mh=yr=>ra(yr,"__esModule",{value:!0});var jr=(yr,br)=>()=>(br||yr((br={exports:{}}).exports,br),br.exports),V_=(yr,br)=>{mh(yr);for(var mr in br)ra(yr,mr,{get:br[mr],enumerable:!0})},W_=(yr,br,mr)=>{if(br&&typeof br=="object"||typeof br=="function")for(let Er of z_(br))!ph.call(yr,Er)&&Er!=="default"&&ra(yr,Er,{get:()=>br[Er],enumerable:!(mr=B_(br,Er))||mr.enumerable});return yr},vn=yr=>W_(mh(ra(yr!=null?j_($_(yr)):{},"default",yr&&yr.__esModule&&"default"in yr?{get:()=>yr.default,enumerable:!0}:{value:yr,enumerable:!0})),yr);var di=(yr,br,mr)=>(lu(yr,typeof br!="symbol"?br+"":br,mr),mr);var $i=(yr,br,mr)=>new Promise((Er,wr)=>{var _r=Tr=>{try{Sr(mr.next(Tr))}catch(Dr){wr(Dr)}},xr=Tr=>{try{Sr(mr.throw(Tr))}catch(Dr){wr(Dr)}},Sr=Tr=>Tr.done?Er(Tr.value):Promise.resolve(Tr.value).then(_r,xr);Sr((mr=mr.apply(yr,br)).next())});var Jp=jr((exports,module)=>{(function(yr,br){typeof define=="function"&&define.amd?define([],br):yr.htmx=yr.htmx||br()})(typeof self!="undefined"?self:exports,function(){return function(){"use strict";var U={onLoad:t,process:vt,on:X,off:F,trigger:$,ajax:nr,find:R,findAll:O,closest:N,values:function(yr,br){var mr=Pt(yr,br||"post");return mr.values},remove:q,addClass:L,removeClass:T,toggleClass:A,takeClass:H,defineExtension:fr,removeExtension:cr,logAll:C,logger:null,config:{historyEnabled:!0,historyCacheSize:10,refreshOnHistoryMiss:!1,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:!0,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:!0,inlineScriptNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:!1,timeout:0,wsReconnectDelay:"full-jitter",disableSelector:"[hx-disable], [data-hx-disable]",useTemplateFragments:!1,scrollBehavior:"smooth",defaultFocusScroll:!1},parseInterval:v,_:e,createEventSource:function(yr){return new EventSource(yr,{withCredentials:!0})},createWebSocket:function(yr){return new WebSocket(yr,[])},version:"1.8.0"},r={addTriggerHandler:st,bodyContains:K,canAccessLocalStorage:E,filterValues:Ut,hasAttribute:o,getAttributeValue:V,getClosestMatch:h,getExpressionVars:Qt,getHeaders:Bt,getInputValues:Pt,getInternalData:W,getSwapSpecification:_t,getTriggerSpecs:Me,getTarget:re,makeFragment:g,mergeObjects:Y,makeSettleInfo:Gt,oobSwap:ae,selectAndSwap:Ee,settleImmediately:Lt,shouldCancel:je,triggerEvent:$,triggerErrorEvent:J,withExtensions:xt},n=["get","post","put","delete","patch"],i=n.map(function(yr){return"[hx-"+yr+"], [data-hx-"+yr+"]"}).join(", ");function v(yr){if(yr!=null)return yr.slice(-2)=="ms"?parseFloat(yr.slice(0,-2))||void 0:yr.slice(-1)=="s"?parseFloat(yr.slice(0,-1))*1e3||void 0:yr.slice(-1)=="m"?parseFloat(yr.slice(0,-1))*1e3*60||void 0:parseFloat(yr)||void 0}function f(yr,br){return yr.getAttribute&&yr.getAttribute(br)}function o(yr,br){return yr.hasAttribute&&(yr.hasAttribute(br)||yr.hasAttribute("data-"+br))}function V(yr,br){return f(yr,br)||f(yr,"data-"+br)}function u(yr){return yr.parentElement}function _(){return document}function h(yr,br){for(;yr&&!br(yr);)yr=u(yr);return yr||null}function a(yr,br,mr){var Er=V(br,mr),wr=V(br,"hx-disinherit");return yr!==br&&wr&&(wr==="*"||wr.split(" ").indexOf(mr)>=0)?"unset":Er}function z(yr,br){var mr=null;if(h(yr,function(Er){return mr=a(yr,Er,br)}),mr!=="unset")return mr}function d(yr,br){var mr=yr.matches||yr.matchesSelector||yr.msMatchesSelector||yr.mozMatchesSelector||yr.webkitMatchesSelector||yr.oMatchesSelector;return mr&&mr.call(yr,br)}function s(yr){var br=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,mr=br.exec(yr);return mr?mr[1].toLowerCase():""}function l(yr,br){for(var mr=new DOMParser,Er=mr.parseFromString(yr,"text/html"),wr=Er.body;br>0;)br--,wr=wr.firstChild;return wr==null&&(wr=_().createDocumentFragment()),wr}function g(yr){if(U.config.useTemplateFragments){var br=l("",0);return br.querySelector("template").content}else{var mr=s(yr);switch(mr){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return l(""+yr+"
    ",1);case"col":return l(""+yr+"
    ",2);case"tr":return l(""+yr+"
    ",2);case"td":case"th":return l(""+yr+"
    ",3);case"script":return l("
    "+yr+"
    ",1);default:return l(yr,0)}}}function Z(yr){yr&&yr()}function p(yr,br){return Object.prototype.toString.call(yr)==="[object "+br+"]"}function m(yr){return p(yr,"Function")}function x(yr){return p(yr,"Object")}function W(yr){var br="htmx-internal-data",mr=yr[br];return mr||(mr=yr[br]={}),mr}function y(yr){var br=[];if(yr)for(var mr=0;mr=0}function K(yr){return yr.getRootNode()instanceof ShadowRoot?_().body.contains(yr.getRootNode().host):_().body.contains(yr)}function w(yr){return yr.trim().split(/\s+/)}function Y(yr,br){for(var mr in br)br.hasOwnProperty(mr)&&(yr[mr]=br[mr]);return yr}function S(yr){try{return JSON.parse(yr)}catch(br){return yt(br),null}}function E(){var yr="htmx:localStorageTest";try{return localStorage.setItem(yr,yr),localStorage.removeItem(yr),!0}catch(br){return!1}}function e(e){return Zt(_().body,function(){return eval(e)})}function t(yr){var br=U.on("htmx:load",function(mr){yr(mr.detail.elt)});return br}function C(){U.logger=function(yr,br,mr){console&&console.log(br,yr,mr)}}function R(yr,br){return br?yr.querySelector(br):R(_(),yr)}function O(yr,br){return br?yr.querySelectorAll(br):O(_(),yr)}function q(yr,br){yr=D(yr),br?setTimeout(function(){q(yr)},br):yr.parentElement.removeChild(yr)}function L(yr,br,mr){yr=D(yr),mr?setTimeout(function(){L(yr,br)},mr):yr.classList&&yr.classList.add(br)}function T(yr,br,mr){yr=D(yr),mr?setTimeout(function(){T(yr,br)},mr):yr.classList&&(yr.classList.remove(br),yr.classList.length===0&&yr.removeAttribute("class"))}function A(yr,br){yr=D(yr),yr.classList.toggle(br)}function H(yr,br){yr=D(yr),G(yr.parentElement.children,function(mr){T(mr,br)}),L(yr,br)}function N(yr,br){if(yr=D(yr),yr.closest)return yr.closest(br);do if(yr==null||d(yr,br))return yr;while(yr=yr&&u(yr))}function I(yr,br){return br.indexOf("closest ")===0?[N(yr,br.substr(8))]:br.indexOf("find ")===0?[R(yr,br.substr(5))]:br.indexOf("next ")===0?[k(yr,br.substr(5))]:br.indexOf("previous ")===0?[M(yr,br.substr(9))]:br==="document"?[document]:br==="window"?[window]:_().querySelectorAll(br)}var k=function(yr,br){for(var mr=_().querySelectorAll(br),Er=0;Er=0;Er--){var wr=mr[Er];if(wr.compareDocumentPosition(yr)===Node.DOCUMENT_POSITION_FOLLOWING)return wr}};function Q(yr,br){return br?I(yr,br)[0]:I(_().body,yr)[0]}function D(yr){return p(yr,"String")?R(yr):yr}function P(yr,br,mr){return m(br)?{target:_().body,event:yr,listener:br}:{target:D(yr),event:br,listener:mr}}function X(yr,br,mr){dr(function(){var wr=P(yr,br,mr);wr.target.addEventListener(wr.event,wr.listener)});var Er=m(br);return Er?br:mr}function F(yr,br,mr){return dr(function(){var Er=P(yr,br,mr);Er.target.removeEventListener(Er.event,Er.listener)}),m(br)?br:mr}var ee=_().createElement("output");function j(yr,br){var mr=z(yr,br);if(mr){if(mr==="this")return[te(yr,br)];var Er=I(yr,mr);return Er.length===0?(yt('The selector "'+mr+'" on '+br+" returned no matches!"),[ee]):Er}}function te(yr,br){return h(yr,function(mr){return V(mr,br)!=null})}function re(yr){var br=z(yr,"hx-target");if(br)return br==="this"?te(yr,"hx-target"):Q(yr,br);var mr=W(yr);return mr.boosted?_().body:yr}function B(yr){for(var br=U.config.attributesToSettle,mr=0;mr0?(wr=yr.substr(0,yr.indexOf(":")),Er=yr.substr(yr.indexOf(":")+1,yr.length)):wr=yr);var _r=_().querySelectorAll(Er);return _r?(G(_r,function(xr){var Sr,Tr=br.cloneNode(!0);Sr=_().createDocumentFragment(),Sr.appendChild(Tr),ie(wr,xr)||(Sr=Tr);var Dr={shouldSwap:!0,target:xr,fragment:Sr};!$(xr,"htmx:oobBeforeSwap",Dr)||(xr=Dr.target,Dr.shouldSwap&&we(wr,xr,xr,Sr,mr),G(mr.elts,function(Or){$(Or,"htmx:oobAfterSwap",Dr)}))}),br.parentNode.removeChild(br)):(br.parentNode.removeChild(br),J(_().body,"htmx:oobErrorNoTarget",{content:br})),yr}function oe(yr,br,mr){var Er=z(yr,"hx-select-oob");if(Er){var wr=Er.split(",");for(let Dr=0;Dr0){var wr=yr.querySelector(Er.tagName+"[id='"+Er.id+"']");if(wr&&wr!==yr){var _r=Er.cloneNode();ne(Er,wr),mr.tasks.push(function(){ne(Er,_r)})}}})}function ue(yr){return function(){T(yr,U.config.addedClass),vt(yr),ut(yr),fe(yr),$(yr,"htmx:load")}}function fe(yr){var br="[autofocus]",mr=d(yr,br)?yr:yr.querySelector(br);mr!=null&&mr.focus()}function ce(yr,br,mr,Er){for(le(yr,mr,Er);mr.childNodes.length>0;){var wr=mr.firstChild;L(wr,U.config.addedClass),yr.insertBefore(wr,br),wr.nodeType!==Node.TEXT_NODE&&wr.nodeType!==Node.COMMENT_NODE&&Er.tasks.push(ue(wr))}}function he(yr){var br=W(yr);br.webSocket&&br.webSocket.close(),br.sseEventSource&&br.sseEventSource.close(),$(yr,"htmx:beforeCleanupElement"),br.listenerInfos&&G(br.listenerInfos,function(mr){yr!==mr.on&&mr.on.removeEventListener(mr.trigger,mr.listener)}),yr.children&&G(yr.children,function(mr){he(mr)})}function de(yr,br,mr){if(yr.tagName==="BODY")return ye(yr,br,mr);var Er,wr=yr.previousSibling;for(ce(u(yr),yr,br,mr),wr==null?Er=u(yr).firstChild:Er=wr.nextSibling,W(yr).replacedWith=Er,mr.elts=[];Er&&Er!==yr;)Er.nodeType===Node.ELEMENT_NODE&&mr.elts.push(Er),Er=Er.nextElementSibling;he(yr),u(yr).removeChild(yr)}function ve(yr,br,mr){return ce(yr,yr.firstChild,br,mr)}function ge(yr,br,mr){return ce(u(yr),yr,br,mr)}function pe(yr,br,mr){return ce(yr,null,br,mr)}function me(yr,br,mr){return ce(u(yr),yr.nextSibling,br,mr)}function xe(yr,br,mr){return he(yr),u(yr).removeChild(yr)}function ye(yr,br,mr){var Er=yr.firstChild;if(ce(yr,Er,br,mr),Er){for(;Er.nextSibling;)he(Er.nextSibling),yr.removeChild(Er.nextSibling);he(Er),yr.removeChild(Er)}}function be(yr,br){var mr=z(yr,"hx-select");if(mr){var Er=_().createDocumentFragment();G(br.querySelectorAll(mr),function(wr){Er.appendChild(wr)}),br=Er}return br}function we(yr,br,mr,Er,wr){switch(yr){case"none":return;case"outerHTML":de(mr,Er,wr);return;case"afterbegin":ve(mr,Er,wr);return;case"beforebegin":ge(mr,Er,wr);return;case"beforeend":pe(mr,Er,wr);return;case"afterend":me(mr,Er,wr);return;case"delete":xe(mr,Er,wr);return;default:for(var _r=hr(br),xr=0;xr<_r.length;xr++){var Sr=_r[xr];try{var Tr=Sr.handleSwap(yr,mr,Er,wr);if(Tr){if(typeof Tr.length!="undefined")for(var Dr=0;Dr-1){var br=yr.replace(/]*>|>)([\s\S]*?)<\/svg>/gim,""),mr=br.match(/]*>|>)([\s\S]*?)<\/title>/im);if(mr)return mr[2]}}function Ee(yr,br,mr,Er,wr){wr.title=Se(Er);var _r=g(Er);if(_r)return oe(mr,_r,wr),_r=be(mr,_r),se(_r),we(yr,mr,br,_r,wr)}function Ce(yr,br,mr){var Er=yr.getResponseHeader(br);if(Er.indexOf("{")===0){var wr=S(Er);for(var _r in wr)if(wr.hasOwnProperty(_r)){var xr=wr[_r];x(xr)||(xr={value:xr}),$(mr,_r,xr)}}else $(mr,Er,[])}var Re=/\s/,Oe=/[\s,]/,qe=/[_$a-zA-Z]/,Le=/[_$a-zA-Z0-9]/,Te=['"',"'","/"],Ae=/[^\s]/;function He(yr){for(var br=[],mr=0;mr0;){var xr=br[0];if(xr==="]"){if(Er--,Er===0){_r===null&&(wr=wr+"true"),br.shift(),wr+=")})";try{var Sr=Zt(yr,function(){return Function(wr)()},function(){return!0});return Sr.source=wr,Sr}catch(Tr){return J(_().body,"htmx:syntax:error",{error:Tr,source:wr}),null}}}else xr==="["&&Er++;Ne(xr,_r,mr)?wr+="(("+mr+"."+xr+") ? ("+mr+"."+xr+") : (window."+xr+"))":wr=wr+xr,_r=br.shift()}}}function c(yr,br){for(var mr="";yr.length>0&&!yr[0].match(br);)mr+=yr.shift();return mr}var ke="input, textarea, select";function Me(yr){var br=V(yr,"hx-trigger"),mr=[];if(br){var Er=He(br);do{c(Er,Ae);var wr=Er.length,_r=c(Er,/[,\[\s]/);if(_r!=="")if(_r==="every"){var xr={trigger:"every"};c(Er,Ae),xr.pollInterval=v(c(Er,/[,\[\s]/)),c(Er,Ae);var Sr=Ie(yr,Er,"event");Sr&&(xr.eventFilter=Sr),mr.push(xr)}else if(_r.indexOf("sse:")===0)mr.push({trigger:"sse",sseEvent:_r.substr(4)});else{var Tr={trigger:_r},Sr=Ie(yr,Er,"event");for(Sr&&(Tr.eventFilter=Sr);Er.length>0&&Er[0]!==",";){c(Er,Ae);var Dr=Er.shift();if(Dr==="changed")Tr.changed=!0;else if(Dr==="once")Tr.once=!0;else if(Dr==="consume")Tr.consume=!0;else if(Dr==="delay"&&Er[0]===":")Er.shift(),Tr.delay=v(c(Er,Oe));else if(Dr==="from"&&Er[0]===":"){Er.shift();var Or=c(Er,Oe);(Or==="closest"||Or==="find"||Or==="next"||Or==="previous")&&(Er.shift(),Or+=" "+c(Er,Oe)),Tr.from=Or}else Dr==="target"&&Er[0]===":"?(Er.shift(),Tr.target=c(Er,Oe)):Dr==="throttle"&&Er[0]===":"?(Er.shift(),Tr.throttle=v(c(Er,Oe))):Dr==="queue"&&Er[0]===":"?(Er.shift(),Tr.queue=c(Er,Oe)):(Dr==="root"||Dr==="threshold")&&Er[0]===":"?(Er.shift(),Tr[Dr]=c(Er,Oe)):J(yr,"htmx:syntax:error",{token:Er.shift()})}mr.push(Tr)}Er.length===wr&&J(yr,"htmx:syntax:error",{token:Er.shift()}),c(Er,Ae)}while(Er[0]===","&&Er.shift())}return mr.length>0?mr:d(yr,"form")?[{trigger:"submit"}]:d(yr,'input[type="button"]')?[{trigger:"click"}]:d(yr,ke)?[{trigger:"change"}]:[{trigger:"click"}]}function De(yr){W(yr).cancelled=!0}function Pe(yr,br,mr){var Er=W(yr);Er.timeout=setTimeout(function(){K(yr)&&Er.cancelled!==!0&&(Ue(mr,pt("hx:poll:trigger",{triggerSpec:mr,target:yr}))||br(yr),Pe(yr,br,mr))},mr.pollInterval)}function Xe(yr){return location.hostname===yr.hostname&&f(yr,"href")&&f(yr,"href").indexOf("#")!==0}function Fe(yr,br,mr){if(yr.tagName==="A"&&Xe(yr)&&(yr.target===""||yr.target==="_self")||yr.tagName==="FORM"){br.boosted=!0;var Er,wr;if(yr.tagName==="A")Er="get",wr=f(yr,"href");else{var _r=f(yr,"method");Er=_r?_r.toLowerCase():"get",wr=f(yr,"action")}mr.forEach(function(xr){Ve(yr,function(Sr){ar(Er,wr,yr,Sr)},br,xr,!0)})}}function je(yr,br){return!!((yr.type==="submit"||yr.type==="click")&&(br.tagName==="FORM"||d(br,'input[type="submit"], button')&&N(br,"form")!==null||br.tagName==="A"&&br.href&&(br.getAttribute("href")==="#"||br.getAttribute("href").indexOf("#")!==0)))}function Be(yr,br){return W(yr).boosted&&yr.tagName==="A"&&br.type==="click"&&(br.ctrlKey||br.metaKey)}function Ue(yr,br){var mr=yr.eventFilter;if(mr)try{return mr(br)!==!0}catch(Er){return J(_().body,"htmx:eventFilter:error",{error:Er,source:mr.source}),!0}return!1}function Ve(yr,br,mr,Er,wr){var _r;Er.from?_r=I(yr,Er.from):_r=[yr],G(_r,function(xr){var Sr=function(Tr){if(!K(yr)){xr.removeEventListener(Er.trigger,Sr);return}if(!Be(yr,Tr)&&((wr||je(Tr,yr))&&Tr.preventDefault(),!Ue(Er,Tr))){var Dr=W(Tr);Dr.triggerSpec=Er,Dr.handledFor==null&&(Dr.handledFor=[]);var Or=W(yr);if(Dr.handledFor.indexOf(yr)<0){if(Dr.handledFor.push(yr),Er.consume&&Tr.stopPropagation(),Er.target&&Tr.target&&!d(Tr.target,Er.target))return;if(Er.once){if(Or.triggeredOnce)return;Or.triggeredOnce=!0}if(Er.changed){if(Or.lastValue===yr.value)return;Or.lastValue=yr.value}if(Or.delayed&&clearTimeout(Or.delayed),Or.throttle)return;Er.throttle?Or.throttle||(br(yr,Tr),Or.throttle=setTimeout(function(){Or.throttle=null},Er.throttle)):Er.delay?Or.delayed=setTimeout(function(){br(yr,Tr)},Er.delay):br(yr,Tr)}}};mr.listenerInfos==null&&(mr.listenerInfos=[]),mr.listenerInfos.push({trigger:Er.trigger,listener:Sr,on:xr}),xr.addEventListener(Er.trigger,Sr)})}var _e=!1,ze=null;function We(){ze||(ze=function(){_e=!0},window.addEventListener("scroll",ze),setInterval(function(){_e&&(_e=!1,G(_().querySelectorAll("[hx-trigger='revealed'],[data-hx-trigger='revealed']"),function(yr){Ge(yr)}))},200))}function Ge(yr){if(!o(yr,"data-hx-revealed")&&b(yr)){yr.setAttribute("data-hx-revealed","true");var br=W(yr);br.initialized?$(yr,"revealed"):yr.addEventListener("htmx:afterProcessNode",function(mr){$(yr,"revealed")},{once:!0})}}function Je(yr,br,mr){for(var Er=w(mr),wr=0;wr=0){var xr=Ye(mr);setTimeout(function(){$e(yr,br,mr+1)},xr)}},wr.onopen=function(_r){mr=0},W(yr).webSocket=wr,wr.addEventListener("message",function(_r){if(!Ze(yr)){var xr=_r.data;xt(yr,function(Ar){xr=Ar.transformResponse(xr,null,yr)});for(var Sr=Gt(yr),Tr=g(xr),Dr=y(Tr.children),Or=0;Or0){$(yr,"htmx:validation:halted",xr);return}Er.send(JSON.stringify(Or)),je(mr,yr)&&mr.preventDefault()}):J(yr,"htmx:noWebSocketSourceError")}function Ye(yr){var br=U.config.wsReconnectDelay;if(typeof br=="function")return br(yr);if(br==="full-jitter"){var mr=Math.min(yr,6),Er=1e3*Math.pow(2,mr);return Er*Math.random()}yt('htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"')}function Qe(yr,br,mr){for(var Er=w(mr),wr=0;wrU.config.historyCacheSize;)wr.shift();for(;wr.length>0;)try{localStorage.setItem("htmx-history-cache",JSON.stringify(wr));break}catch(xr){J(_().body,"htmx:historyCacheError",{cause:xr,cache:wr}),wr.shift()}}}function Et(yr){if(!E())return null;for(var br=S(localStorage.getItem("htmx-history-cache"))||[],mr=0;mr=200&&this.status<400){$(_().body,"htmx:historyCacheMissLoad",mr);var Er=g(this.response);Er=Er.querySelector("[hx-history-elt],[data-hx-history-elt]")||Er;var wr=wt(),_r=Gt(wr);ye(wr,Er,_r),Lt(_r.tasks),bt=yr,$(_().body,"htmx:historyRestore",{path:yr})}else J(_().body,"htmx:historyCacheMissLoadError",mr)},br.send()}function At(yr){Rt(),yr=yr||location.pathname+location.search;var br=Et(yr);if(br){var mr=g(br.content),Er=wt(),wr=Gt(Er);ye(Er,mr,wr),Lt(wr.tasks),document.title=br.title,window.scrollTo(0,br.scroll),bt=yr,$(_().body,"htmx:historyRestore",{path:yr})}else U.config.refreshOnHistoryMiss?window.location.reload(!0):Tt(yr)}function Ht(yr){var br=j(yr,"hx-indicator");return br==null&&(br=[yr]),G(br,function(mr){mr.classList.add.call(mr.classList,U.config.requestClass)}),br}function Nt(yr){G(yr,function(br){br.classList.remove.call(br.classList,U.config.requestClass)})}function It(yr,br){for(var mr=0;mr=0}function _t(yr,br){var mr=br||z(yr,"hx-swap"),Er={swapStyle:W(yr).boosted?"innerHTML":U.config.defaultSwapStyle,swapDelay:U.config.defaultSwapDelay,settleDelay:U.config.defaultSettleDelay};if(W(yr).boosted&&!Vt(yr)&&(Er.show="top"),mr){var wr=w(mr);if(wr.length>0){Er.swapStyle=wr[0];for(var _r=1;_r0?Tr.join(":"):null;Er.scroll=Dr,Er.scrollTarget=Or}if(xr.indexOf("show:")===0){var Cr=xr.substr(5),Tr=Cr.split(":"),Ar=Tr.pop(),Or=Tr.length>0?Tr.join(":"):null;Er.show=Ar,Er.showTarget=Or}if(xr.indexOf("focus-scroll:")===0){var Lr=xr.substr("focus-scroll:".length);Er.focusScroll=Lr=="true"}}}}return Er}function zt(yr){return z(yr,"hx-encoding")==="multipart/form-data"||d(yr,"form")&&f(yr,"enctype")==="multipart/form-data"}function Wt(yr,br,mr){var Er=null;return xt(br,function(wr){Er==null&&(Er=wr.encodeParameters(yr,mr,br))}),Er!=null?Er:zt(br)?jt(mr):Ft(mr)}function Gt(yr){return{tasks:[],elts:[yr]}}function Jt(yr,br){var mr=yr[0],Er=yr[yr.length-1];if(br.scroll){var wr=null;br.scrollTarget&&(wr=Q(mr,br.scrollTarget)),br.scroll==="top"&&(mr||wr)&&(wr=wr||mr,wr.scrollTop=0),br.scroll==="bottom"&&(Er||wr)&&(wr=wr||Er,wr.scrollTop=wr.scrollHeight)}if(br.show){var wr=null;if(br.showTarget){var _r=br.showTarget;br.showTarget==="window"&&(_r="body"),wr=Q(mr,_r)}br.show==="top"&&(mr||wr)&&(wr=wr||mr,wr.scrollIntoView({block:"start",behavior:U.config.scrollBehavior})),br.show==="bottom"&&(Er||wr)&&(wr=wr||Er,wr.scrollIntoView({block:"end",behavior:U.config.scrollBehavior}))}}function $t(yr,br,mr,Er){if(Er==null&&(Er={}),yr==null)return Er;var wr=V(yr,br);if(wr){var _r=wr.trim(),xr=mr;_r.indexOf("javascript:")===0?(_r=_r.substr(11),xr=!0):_r.indexOf("js:")===0&&(_r=_r.substr(3),xr=!0),_r.indexOf("{")!==0&&(_r="{"+_r+"}");var Sr;xr?Sr=Zt(yr,function(){return Function("return ("+_r+")")()},{}):Sr=S(_r);for(var Tr in Sr)Sr.hasOwnProperty(Tr)&&Er[Tr]==null&&(Er[Tr]=Sr[Tr])}return $t(u(yr),br,mr,Er)}function Zt(yr,br,mr){return U.config.allowEval?br():(J(yr,"htmx:evalDisallowedError"),mr)}function Kt(yr,br){return $t(yr,"hx-vars",!0,br)}function Yt(yr,br){return $t(yr,"hx-vals",!1,br)}function Qt(yr){return Y(Kt(yr),Yt(yr))}function er(yr,br,mr){if(mr!==null)try{yr.setRequestHeader(br,mr)}catch(Er){yr.setRequestHeader(br,encodeURIComponent(mr)),yr.setRequestHeader(br+"-URI-AutoEncoded","true")}}function tr(yr){if(yr.responseURL&&typeof URL!="undefined")try{var br=new URL(yr.responseURL);return br.pathname+br.search}catch(mr){J(_().body,"htmx:badResponseUrl",{url:yr.responseURL})}}function rr(yr,br){return yr.getAllResponseHeaders().match(br)}function nr(yr,br,mr){return yr=yr.toLowerCase(),mr?mr instanceof Element||p(mr,"String")?ar(yr,br,null,null,{targetOverride:D(mr),returnPromise:!0}):ar(yr,br,D(mr.source),mr.event,{handler:mr.handler,headers:mr.headers,values:mr.values,targetOverride:D(mr.target),swapOverride:mr.swap,returnPromise:!0}):ar(yr,br,null,null,{returnPromise:!0})}function ir(yr){for(var br=[];yr;)br.push(yr),yr=yr.parentElement;return br}function ar(yr,br,mr,Er,wr){var _r=null,xr=null;if(wr=wr!=null?wr:{},wr.returnPromise&&typeof Promise!="undefined")var Sr=new Promise(function(bi,xi){_r=bi,xr=xi});mr==null&&(mr=_().body);var Tr=wr.handler||sr;if(!!K(mr)){var Dr=wr.targetOverride||re(mr);if(Dr==null||Dr==ee){J(mr,"htmx:targetError",{target:V(mr,"hx-target")});return}var Or=mr,Cr=W(mr),Ar=z(mr,"hx-sync"),Lr=null,Rr=!1;if(Ar){var Nr=Ar.split(":"),Ir=Nr[0].trim();if(Ir==="this"?Or=te(mr,"hx-sync"):Or=Q(mr,Ir),Ar=(Nr[1]||"drop").trim(),Cr=W(Or),Ar==="drop"&&Cr.xhr&&Cr.abortable!==!0)return;if(Ar==="abort"){if(Cr.xhr)return;Rr=!0}else if(Ar==="replace")$(Or,"htmx:abort");else if(Ar.indexOf("queue")===0){var Pr=Ar.split(" ");Lr=(Pr[1]||"last").trim()}}if(Cr.xhr)if(Cr.abortable)$(Or,"htmx:abort");else{if(Lr==null){if(Er){var Br=W(Er);Br&&Br.triggerSpec&&Br.triggerSpec.queue&&(Lr=Br.triggerSpec.queue)}Lr==null&&(Lr="last")}Cr.queuedRequests==null&&(Cr.queuedRequests=[]),Lr==="first"&&Cr.queuedRequests.length===0?Cr.queuedRequests.push(function(){ar(yr,br,mr,Er,wr)}):Lr==="all"?Cr.queuedRequests.push(function(){ar(yr,br,mr,Er,wr)}):Lr==="last"&&(Cr.queuedRequests=[],Cr.queuedRequests.push(function(){ar(yr,br,mr,Er,wr)}));return}var zr=new XMLHttpRequest;Cr.xhr=zr,Cr.abortable=Rr;var Ur=function(){if(Cr.xhr=null,Cr.abortable=!1,Cr.queuedRequests!=null&&Cr.queuedRequests.length>0){var bi=Cr.queuedRequests.shift();bi()}},Kr=z(mr,"hx-prompt");if(Kr){var Fr=prompt(Kr);if(Fr===null||!$(mr,"htmx:prompt",{prompt:Fr,target:Dr}))return Z(_r),Ur(),Sr}var Xr=z(mr,"hx-confirm");if(Xr&&!confirm(Xr))return Z(_r),Ur(),Sr;var Jr=Bt(mr,Dr,Fr);wr.headers&&(Jr=Y(Jr,wr.headers));var oi=Pt(mr,yr),hi=oi.errors,pi=oi.values;wr.values&&(pi=Y(pi,wr.values));var _i=Qt(mr),Ei=Y(pi,_i),zi=Ut(Ei,mr);yr!=="get"&&!zt(mr)&&(Jr["Content-Type"]="application/x-www-form-urlencoded"),(br==null||br==="")&&(br=_().location.href);var Gi=$t(mr,"hx-request"),vi={parameters:zi,unfilteredParameters:Ei,headers:Jr,target:Dr,verb:yr,errors:hi,withCredentials:wr.credentials||Gi.credentials||U.config.withCredentials,timeout:wr.timeout||Gi.timeout||U.config.timeout,path:br,triggeringEvent:Er};if(!$(mr,"htmx:configRequest",vi))return Z(_r),Ur(),Sr;if(br=vi.path,yr=vi.verb,Jr=vi.headers,zi=vi.parameters,hi=vi.errors,hi&&hi.length>0)return $(mr,"htmx:validation:halted",vi),Z(_r),Ur(),Sr;var ki=br.split("#"),Cn=ki[0],Yi=ki[1],ii=null;if(yr==="get"){ii=Cn;var ei=Object.keys(zi).length!==0;ei&&(ii.indexOf("?")<0?ii+="?":ii+="&",ii+=Ft(zi),Yi&&(ii+="#"+Yi)),zr.open("GET",ii,!0)}else zr.open(yr.toUpperCase(),br,!0);if(zr.overrideMimeType("text/html"),zr.withCredentials=vi.withCredentials,zr.timeout=vi.timeout,!Gi.noHeaders){for(var Qr in Jr)if(Jr.hasOwnProperty(Qr)){var si=Jr[Qr];er(zr,Qr,si)}}var Zr={xhr:zr,target:Dr,requestConfig:vi,etc:wr,pathInfo:{requestPath:br,finalRequestPath:ii||br,anchor:Yi}};if(zr.onload=function(){try{var bi=ir(mr);if(Zr.pathInfo.responsePath=tr(zr),Tr(mr,Zr),Nt(ni),$(mr,"htmx:afterRequest",Zr),$(mr,"htmx:afterOnLoad",Zr),!K(mr)){for(var xi=null;bi.length>0&&xi==null;){var Si=bi.shift();K(Si)&&(xi=Si)}xi&&($(xi,"htmx:afterRequest",Zr),$(xi,"htmx:afterOnLoad",Zr))}Z(_r),Ur()}catch(Ln){throw J(mr,"htmx:onLoadError",Y({error:Ln},Zr)),Ln}},zr.onerror=function(){Nt(ni),J(mr,"htmx:afterRequest",Zr),J(mr,"htmx:sendError",Zr),Z(xr),Ur()},zr.onabort=function(){Nt(ni),J(mr,"htmx:afterRequest",Zr),J(mr,"htmx:sendAbort",Zr),Z(xr),Ur()},zr.ontimeout=function(){Nt(ni),J(mr,"htmx:afterRequest",Zr),J(mr,"htmx:timeout",Zr),Z(xr),Ur()},!$(mr,"htmx:beforeRequest",Zr))return Z(_r),Ur(),Sr;var ni=Ht(mr);return G(["loadstart","loadend","progress","abort"],function(bi){G([zr,zr.upload],function(xi){xi.addEventListener(bi,function(Si){$(mr,"htmx:xhr:"+bi,{lengthComputable:Si.lengthComputable,loaded:Si.loaded,total:Si.total})})})}),$(mr,"htmx:beforeSend",Zr),zr.send(yr==="get"?null:Wt(zr,mr,zi)),Sr}}function or(yr,br){var mr=br.xhr,Er=null,wr=null;if(rr(mr,/HX-Push:/i)?(Er=mr.getResponseHeader("HX-Push"),wr="push"):rr(mr,/HX-Push-Url:/i)?(Er=mr.getResponseHeader("HX-Push-Url"),wr="push"):rr(mr,/HX-Replace-Url:/i)&&(Er=mr.getResponseHeader("HX-Replace-Url"),wr="replace"),Er)return Er==="false"?{}:{type:wr,path:Er};var _r=br.pathInfo.finalRequestPath,xr=br.pathInfo.responsePath,Sr=z(yr,"hx-push-url"),Tr=z(yr,"hx-replace-url"),Dr=W(yr).boosted,Or=null,Cr=null;return Sr?(Or="push",Cr=Sr):Tr?(Or="replace",Cr=Tr):Dr&&(Or="push",Cr=xr||_r),Cr?Cr==="false"?{}:(Cr==="true"&&(Cr=xr||_r),br.pathInfo.anchor&&Cr.indexOf("#")===-1&&(Cr=Cr+"#"+br.pathInfo.anchor),{type:Or,path:Cr}):{}}function sr(yr,br){var mr=br.xhr,Er=br.target,wr=br.etc;if(!!$(yr,"htmx:beforeOnLoad",br)){if(rr(mr,/HX-Trigger:/i)&&Ce(mr,"HX-Trigger",yr),rr(mr,/HX-Location:/i)){Rt();var _r=mr.getResponseHeader("HX-Location"),xr;_r.indexOf("{")===0&&(xr=S(_r),_r=xr.path,delete xr.path),nr("GET",_r,xr).then(()=>{Ot(_r)});return}if(rr(mr,/HX-Redirect:/i)){location.href=mr.getResponseHeader("HX-Redirect");return}if(rr(mr,/HX-Refresh:/i)&&mr.getResponseHeader("HX-Refresh")==="true"){location.reload();return}rr(mr,/HX-Retarget:/i)&&(br.target=_().querySelector(mr.getResponseHeader("HX-Retarget")));var Sr=or(yr,br),Tr=mr.status>=200&&mr.status<400&&mr.status!==204,Dr=mr.response,Or=mr.status>=400,Cr=Y({shouldSwap:Tr,serverResponse:Dr,isError:Or},br);if(!!$(Er,"htmx:beforeSwap",Cr)){if(Er=Cr.target,Dr=Cr.serverResponse,Or=Cr.isError,br.failed=Or,br.successful=!Or,Cr.shouldSwap){mr.status===286&&De(yr),xt(yr,function(Nr){Dr=Nr.transformResponse(Dr,mr,yr)}),Sr.type&&Rt();var Ar=wr.swapOverride;rr(mr,/HX-Reswap:/i)&&(Ar=mr.getResponseHeader("HX-Reswap"));var xr=_t(yr,Ar);Er.classList.add(U.config.swappingClass);var Lr=function(){try{var Nr=document.activeElement,Ir={};try{Ir={elt:Nr,start:Nr?Nr.selectionStart:null,end:Nr?Nr.selectionEnd:null}}catch(Fr){}var Pr=Gt(Er);if(Ee(xr.swapStyle,Er,yr,Dr,Pr),Ir.elt&&!K(Ir.elt)&&Ir.elt.id){var Br=document.getElementById(Ir.elt.id),zr={preventScroll:xr.focusScroll!==void 0?!xr.focusScroll:!U.config.defaultFocusScroll};Br&&(Ir.start&&Br.setSelectionRange&&Br.setSelectionRange(Ir.start,Ir.end),Br.focus(zr))}if(Er.classList.remove(U.config.swappingClass),G(Pr.elts,function(Fr){Fr.classList&&Fr.classList.add(U.config.settlingClass),$(Fr,"htmx:afterSwap",br)}),rr(mr,/HX-Trigger-After-Swap:/i)){var Ur=yr;K(yr)||(Ur=_().body),Ce(mr,"HX-Trigger-After-Swap",Ur)}var Kr=function(){if(G(Pr.tasks,function(oi){oi.call()}),G(Pr.elts,function(oi){oi.classList&&oi.classList.remove(U.config.settlingClass),$(oi,"htmx:afterSettle",br)}),Sr.type&&(Sr.type==="push"?(Ot(Sr.path),$(_().body,"htmx:pushedIntoHistory",{path:Sr.path})):(qt(Sr.path),$(_().body,"htmx:replacedInHistory",{path:Sr.path}))),br.pathInfo.anchor){var Fr=R("#"+br.pathInfo.anchor);Fr&&Fr.scrollIntoView({block:"start",behavior:"auto"})}if(Pr.title){var Xr=R("title");Xr?Xr.innerHTML=Pr.title:window.document.title=Pr.title}if(Jt(Pr.elts,xr),rr(mr,/HX-Trigger-After-Settle:/i)){var Jr=yr;K(yr)||(Jr=_().body),Ce(mr,"HX-Trigger-After-Settle",Jr)}};xr.settleDelay>0?setTimeout(Kr,xr.settleDelay):Kr()}catch(Fr){throw J(yr,"htmx:swapError",br),Fr}};xr.swapDelay>0?setTimeout(Lr,xr.swapDelay):Lr()}Or&&J(yr,"htmx:responseError",Y({error:"Response Status Error Code "+mr.status+" from "+br.pathInfo.path},br))}}}var lr={};function ur(){return{init:function(yr){return null},onEvent:function(yr,br){return!0},transformResponse:function(yr,br,mr){return yr},isInlineSwap:function(yr){return!1},handleSwap:function(yr,br,mr,Er){return!1},encodeParameters:function(yr,br,mr){return null}}}function fr(yr,br){br.init&&br.init(r),lr[yr]=Y(ur(),br)}function cr(yr){delete lr[yr]}function hr(yr,br,mr){if(yr==null)return br;br==null&&(br=[]),mr==null&&(mr=[]);var Er=V(yr,"hx-ext");return Er&&G(Er.split(","),function(wr){if(wr=wr.replace(/ /g,""),wr.slice(0,7)=="ignore:"){mr.push(wr.slice(7));return}if(mr.indexOf(wr)<0){var _r=lr[wr];_r&&br.indexOf(_r)<0&&br.push(_r)}}),hr(u(yr),br,mr)}function dr(yr){_().readyState!=="loading"?yr():_().addEventListener("DOMContentLoaded",yr)}function vr(){U.config.includeIndicatorStyles!==!1&&_().head.insertAdjacentHTML("beforeend","")}function gr(){var yr=_().querySelector('meta[name="htmx-config"]');return yr?S(yr.content):null}function pr(){var yr=gr();yr&&(U.config=Y(U.config,yr))}return dr(function(){pr(),vr();var yr=_().body;vt(yr);var br=_().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");yr.addEventListener("htmx:abort",function(mr){var Er=mr.target,wr=W(Er);wr&&wr.xhr&&wr.xhr.abort()}),window.onpopstate=function(mr){mr.state&&mr.state.htmx&&(At(),G(br,function(Er){$(Er,"htmx:restored",{document:_(),triggerEvent:$})}))},setTimeout(function(){$(yr,"htmx:load",{})},0)}),U}()})});var Ni=jr((Pj,Qp)=>{var Ml=function(yr){return yr&&yr.Math==Math&&yr};Qp.exports=Ml(typeof globalThis=="object"&&globalThis)||Ml(typeof window=="object"&&window)||Ml(typeof self=="object"&&self)||Ml(typeof global=="object"&&global)||function(){return this}()||Function("return this")()});var kl=jr((jj,Zp)=>{Zp.exports=!1});var Rl=jr((Hj,tm)=>{var em=Ni();tm.exports=function(yr,br){try{Object.defineProperty(em,yr,{value:br,configurable:!0,writable:!0})}catch(mr){em[yr]=br}return br}});var Nl=jr((Bj,im)=>{var VD=Ni(),WD=Rl(),rm="__core-js_shared__",GD=VD[rm]||WD(rm,{});im.exports=GD});var ql=jr((Fj,sm)=>{var YD=kl(),nm=Nl();(sm.exports=function(yr,br){return nm[yr]||(nm[yr]=br!==void 0?br:{})})("versions",[]).push({version:"3.16.4",mode:YD?"pure":"global",copyright:"\xA9 2021 Denis Pushkarev (zloirock.ru)"})});var Ys=jr((zj,om)=>{om.exports=function(yr){if(yr==null)throw TypeError("Can't call method on "+yr);return yr}});var Ks=jr(($j,am)=>{var KD=Ys();am.exports=function(yr){return Object(KD(yr))}});var xn=jr((Uj,lm)=>{var XD=Ks(),JD={}.hasOwnProperty;lm.exports=Object.hasOwn||function(br,mr){return JD.call(XD(br),mr)}});var Il=jr((Vj,cm)=>{var QD=0,ZD=Math.random();cm.exports=function(yr){return"Symbol("+String(yr===void 0?"":yr)+")_"+(++QD+ZD).toString(36)}});var Ta=jr((Wj,um)=>{var $u=Ni(),eO=function(yr){return typeof yr=="function"?yr:void 0};um.exports=function(yr,br){return arguments.length<2?eO($u[yr]):$u[yr]&&$u[yr][br]}});var fm=jr((Gj,dm)=>{var tO=Ta();dm.exports=tO("navigator","userAgent")||""});var jl=jr((Yj,bm)=>{var hm=Ni(),Uu=fm(),pm=hm.process,mm=hm.Deno,gm=pm&&pm.versions||mm&&mm.version,vm=gm&&gm.v8,Fn,Pl;vm?(Fn=vm.split("."),Pl=Fn[0]<4?1:Fn[0]+Fn[1]):Uu&&(Fn=Uu.match(/Edge\/(\d+)/),(!Fn||Fn[1]>=74)&&(Fn=Uu.match(/Chrome\/(\d+)/),Fn&&(Pl=Fn[1])));bm.exports=Pl&&+Pl});var Fi=jr((Kj,ym)=>{ym.exports=function(yr){try{return!!yr()}catch(br){return!0}}});var Vu=jr((Xj,wm)=>{var Em=jl(),rO=Fi();wm.exports=!!Object.getOwnPropertySymbols&&!rO(function(){var yr=Symbol();return!String(yr)||!(Object(yr)instanceof Symbol)||!Symbol.sham&&Em&&Em<41})});var Wu=jr((Jj,_m)=>{var iO=Vu();_m.exports=iO&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var Ki=jr((Qj,Tm)=>{var nO=Ni(),sO=ql(),xm=xn(),oO=Il(),Sm=Vu(),aO=Wu(),Da=sO("wks"),Oa=nO.Symbol,lO=aO?Oa:Oa&&Oa.withoutSetter||oO;Tm.exports=function(yr){return(!xm(Da,yr)||!(Sm||typeof Da[yr]=="string"))&&(Sm&&xm(Oa,yr)?Da[yr]=Oa[yr]:Da[yr]=lO("Symbol."+yr)),Da[yr]}});var Hl=jr((Zj,Om)=>{var cO=Ki(),uO=cO("toStringTag"),Dm={};Dm[uO]="z";Om.exports=String(Dm)==="[object z]"});var ms=jr((eH,Am)=>{var dO=Fi();Am.exports=!dO(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})});var hn=jr((tH,Cm)=>{Cm.exports=function(yr){return typeof yr=="object"?yr!==null:typeof yr=="function"}});var Yu=jr((rH,Mm)=>{var fO=Ni(),Lm=hn(),Gu=fO.document,hO=Lm(Gu)&&Lm(Gu.createElement);Mm.exports=function(yr){return hO?Gu.createElement(yr):{}}});var Ku=jr((iH,km)=>{var pO=ms(),mO=Fi(),gO=Yu();km.exports=!pO&&!mO(function(){return Object.defineProperty(gO("div"),"a",{get:function(){return 7}}).a!=7})});var pn=jr((nH,Rm)=>{var vO=hn();Rm.exports=function(yr){if(!vO(yr))throw TypeError(String(yr)+" is not an object");return yr}});var Bl=jr((sH,Nm)=>{var bO=Ta(),yO=Wu();Nm.exports=yO?function(yr){return typeof yr=="symbol"}:function(yr){var br=bO("Symbol");return typeof br=="function"&&Object(yr)instanceof br}});var Im=jr((oH,qm)=>{var Xu=hn();qm.exports=function(yr,br){var mr,Er;if(br==="string"&&typeof(mr=yr.toString)=="function"&&!Xu(Er=mr.call(yr))||typeof(mr=yr.valueOf)=="function"&&!Xu(Er=mr.call(yr))||br!=="string"&&typeof(mr=yr.toString)=="function"&&!Xu(Er=mr.call(yr)))return Er;throw TypeError("Can't convert object to primitive value")}});var Bm=jr((aH,Hm)=>{var Pm=hn(),jm=Bl(),EO=Im(),wO=Ki(),_O=wO("toPrimitive");Hm.exports=function(yr,br){if(!Pm(yr)||jm(yr))return yr;var mr=yr[_O],Er;if(mr!==void 0){if(br===void 0&&(br="default"),Er=mr.call(yr,br),!Pm(Er)||jm(Er))return Er;throw TypeError("Can't convert object to primitive value")}return br===void 0&&(br="number"),EO(yr,br)}});var Ju=jr((lH,Fm)=>{var xO=Bm(),SO=Bl();Fm.exports=function(yr){var br=xO(yr,"string");return SO(br)?br:String(br)}});var gs=jr(Um=>{var TO=ms(),DO=Ku(),zm=pn(),OO=Ju(),$m=Object.defineProperty;Um.f=TO?$m:function(br,mr,Er){if(zm(br),mr=OO(mr),zm(Er),DO)try{return $m(br,mr,Er)}catch(wr){}if("get"in Er||"set"in Er)throw TypeError("Accessors not supported");return"value"in Er&&(br[mr]=Er.value),br}});var Fl=jr((uH,Vm)=>{Vm.exports=function(yr,br){return{enumerable:!(yr&1),configurable:!(yr&2),writable:!(yr&4),value:br}}});var ts=jr((dH,Wm)=>{var AO=ms(),CO=gs(),LO=Fl();Wm.exports=AO?function(yr,br,mr){return CO.f(yr,br,LO(1,mr))}:function(yr,br,mr){return yr[br]=mr,yr}});var Zu=jr((fH,Gm)=>{var Qu=Nl(),MO=Function.toString;typeof Qu.inspectSource!="function"&&(Qu.inspectSource=function(yr){return MO.call(yr)});Gm.exports=Qu.inspectSource});var ed=jr((hH,Km)=>{var kO=Ni(),RO=Zu(),Ym=kO.WeakMap;Km.exports=typeof Ym=="function"&&/native code/.test(RO(Ym))});var zl=jr((pH,Jm)=>{var NO=ql(),qO=Il(),Xm=NO("keys");Jm.exports=function(yr){return Xm[yr]||(Xm[yr]=qO(yr))}});var Aa=jr((mH,Qm)=>{Qm.exports={}});var Js=jr((gH,rg)=>{var IO=ed(),PO=Ni(),jO=hn(),HO=ts(),td=xn(),rd=Nl(),BO=zl(),FO=Aa(),Zm="Object already initialized",zO=PO.WeakMap,$l,Ca,Ul,$O=function(yr){return Ul(yr)?Ca(yr):$l(yr,{})},UO=function(yr){return function(br){var mr;if(!jO(br)||(mr=Ca(br)).type!==yr)throw TypeError("Incompatible receiver, "+yr+" required");return mr}};IO||rd.state?(vs=rd.state||(rd.state=new zO),eg=vs.get,id=vs.has,tg=vs.set,$l=function(yr,br){if(id.call(vs,yr))throw new TypeError(Zm);return br.facade=yr,tg.call(vs,yr,br),br},Ca=function(yr){return eg.call(vs,yr)||{}},Ul=function(yr){return id.call(vs,yr)}):(Xs=BO("state"),FO[Xs]=!0,$l=function(yr,br){if(td(yr,Xs))throw new TypeError(Zm);return br.facade=yr,HO(yr,Xs,br),br},Ca=function(yr){return td(yr,Xs)?yr[Xs]:{}},Ul=function(yr){return td(yr,Xs)});var vs,eg,id,tg,Xs;rg.exports={set:$l,get:Ca,has:Ul,enforce:$O,getterFor:UO}});var Qs=jr((vH,sg)=>{var VO=Ni(),ig=ts(),WO=xn(),GO=Rl(),YO=Zu(),ng=Js(),KO=ng.get,XO=ng.enforce,JO=String(String).split("String");(sg.exports=function(yr,br,mr,Er){var wr=Er?!!Er.unsafe:!1,_r=Er?!!Er.enumerable:!1,xr=Er?!!Er.noTargetGet:!1,Sr;if(typeof mr=="function"&&(typeof br=="string"&&!WO(mr,"name")&&ig(mr,"name",br),Sr=XO(mr),Sr.source||(Sr.source=JO.join(typeof br=="string"?br:""))),yr===VO){_r?yr[br]=mr:GO(br,mr);return}else wr?!xr&&yr[br]&&(_r=!0):delete yr[br];_r?yr[br]=mr:ig(yr,br,mr)})(Function.prototype,"toString",function(){return typeof this=="function"&&KO(this).source||YO(this)})});var Co=jr((bH,og)=>{var QO={}.toString;og.exports=function(yr){return QO.call(yr).slice(8,-1)}});var nd=jr((yH,ag)=>{var ZO=Hl(),Vl=Co(),eA=Ki(),tA=eA("toStringTag"),rA=Vl(function(){return arguments}())=="Arguments",iA=function(yr,br){try{return yr[br]}catch(mr){}};ag.exports=ZO?Vl:function(yr){var br,mr,Er;return yr===void 0?"Undefined":yr===null?"Null":typeof(mr=iA(br=Object(yr),tA))=="string"?mr:rA?Vl(br):(Er=Vl(br))=="Object"&&typeof br.callee=="function"?"Arguments":Er}});var cg=jr((EH,lg)=>{"use strict";var nA=Hl(),sA=nd();lg.exports=nA?{}.toString:function(){return"[object "+sA(this)+"]"}});var sd=jr((_H,ug)=>{ug.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}});var od=jr((xH,dg)=>{dg.exports=function(yr){if(typeof yr!="function")throw TypeError(String(yr)+" is not a function");return yr}});var ad=jr((SH,fg)=>{var cA=od();fg.exports=function(yr,br,mr){if(cA(yr),br===void 0)return yr;switch(mr){case 0:return function(){return yr.call(br)};case 1:return function(Er){return yr.call(br,Er)};case 2:return function(Er,wr){return yr.call(br,Er,wr)};case 3:return function(Er,wr,_r){return yr.call(br,Er,wr,_r)}}return function(){return yr.apply(br,arguments)}}});var La=jr((TH,hg)=>{var uA=Fi(),dA=Co(),fA="".split;hg.exports=uA(function(){return!Object("z").propertyIsEnumerable(0)})?function(yr){return dA(yr)=="String"?fA.call(yr,""):Object(yr)}:Object});var Ma=jr((DH,pg)=>{var hA=Math.ceil,pA=Math.floor;pg.exports=function(yr){return isNaN(yr=+yr)?0:(yr>0?pA:hA)(yr)}});var Zs=jr((OH,mg)=>{var mA=Ma(),gA=Math.min;mg.exports=function(yr){return yr>0?gA(mA(yr),9007199254740991):0}});var vg=jr((AH,gg)=>{var vA=Co();gg.exports=Array.isArray||function(br){return vA(br)=="Array"}});var Eg=jr((CH,yg)=>{var bA=hn(),bg=vg(),yA=Ki(),EA=yA("species");yg.exports=function(yr){var br;return bg(yr)&&(br=yr.constructor,typeof br=="function"&&(br===Array||bg(br.prototype))?br=void 0:bA(br)&&(br=br[EA],br===null&&(br=void 0))),br===void 0?Array:br}});var _g=jr((LH,wg)=>{var wA=Eg();wg.exports=function(yr,br){return new(wA(yr))(br===0?0:br)}});var Wl=jr((MH,Sg)=>{var _A=ad(),xA=La(),SA=Ks(),TA=Zs(),DA=_g(),xg=[].push,bs=function(yr){var br=yr==1,mr=yr==2,Er=yr==3,wr=yr==4,_r=yr==6,xr=yr==7,Sr=yr==5||_r;return function(Tr,Dr,Or,Cr){for(var Ar=SA(Tr),Lr=xA(Ar),Rr=_A(Dr,Or,3),Nr=TA(Lr.length),Ir=0,Pr=Cr||DA,Br=br?Pr(Tr,Nr):mr||xr?Pr(Tr,0):void 0,zr,Ur;Nr>Ir;Ir++)if((Sr||Ir in Lr)&&(zr=Lr[Ir],Ur=Rr(zr,Ir,Ar),yr))if(br)Br[Ir]=Ur;else if(Ur)switch(yr){case 3:return!0;case 5:return zr;case 6:return Ir;case 2:xg.call(Br,zr)}else switch(yr){case 4:return!1;case 7:xg.call(Br,zr)}return _r?-1:Er||wr?wr:Br}};Sg.exports={forEach:bs(0),map:bs(1),filter:bs(2),some:bs(3),every:bs(4),find:bs(5),findIndex:bs(6),filterReject:bs(7)}});var ld=jr((kH,Tg)=>{"use strict";var OA=Fi();Tg.exports=function(yr,br){var mr=[][yr];return!!mr&&OA(function(){mr.call(null,br||function(){throw 1},1)})}});var Og=jr((RH,Dg)=>{"use strict";var AA=Wl().forEach,CA=ld(),LA=CA("forEach");Dg.exports=LA?[].forEach:function(br){return AA(this,br,arguments.length>1?arguments[1]:void 0)}});var Lg=jr((qH,Cg)=>{var NA=!!(typeof window!="undefined"&&window.document&&window.document.createElement);Cg.exports=NA});var dd=jr(Rg=>{"use strict";var Mg={}.propertyIsEnumerable,kg=Object.getOwnPropertyDescriptor,qA=kg&&!Mg.call({1:2},1);Rg.f=qA?function(br){var mr=kg(this,br);return!!mr&&mr.enumerable}:Mg});var Lo=jr((PH,Ng)=>{var IA=La(),PA=Ys();Ng.exports=function(yr){return IA(PA(yr))}});var fd=jr(Ig=>{var jA=ms(),HA=dd(),BA=Fl(),FA=Lo(),zA=Ju(),$A=xn(),UA=Ku(),qg=Object.getOwnPropertyDescriptor;Ig.f=jA?qg:function(br,mr){if(br=FA(br),mr=zA(mr),UA)try{return qg(br,mr)}catch(Er){}if($A(br,mr))return BA(!HA.f.call(br,mr),br[mr])}});var jg=jr((HH,Pg)=>{var VA=Ma(),WA=Math.max,GA=Math.min;Pg.exports=function(yr,br){var mr=VA(yr);return mr<0?WA(mr+br,0):GA(mr,br)}});var Fg=jr((BH,Bg)=>{var YA=Lo(),KA=Zs(),XA=jg(),Hg=function(yr){return function(br,mr,Er){var wr=YA(br),_r=KA(wr.length),xr=XA(Er,_r),Sr;if(yr&&mr!=mr){for(;_r>xr;)if(Sr=wr[xr++],Sr!=Sr)return!0}else for(;_r>xr;xr++)if((yr||xr in wr)&&wr[xr]===mr)return yr||xr||0;return!yr&&-1}};Bg.exports={includes:Hg(!0),indexOf:Hg(!1)}});var pd=jr((FH,zg)=>{var hd=xn(),JA=Lo(),QA=Fg().indexOf,ZA=Aa();zg.exports=function(yr,br){var mr=JA(yr),Er=0,wr=[],_r;for(_r in mr)!hd(ZA,_r)&&hd(mr,_r)&&wr.push(_r);for(;br.length>Er;)hd(mr,_r=br[Er++])&&(~QA(wr,_r)||wr.push(_r));return wr}});var Gl=jr((zH,$g)=>{$g.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var Yl=jr(Ug=>{var e0=pd(),t0=Gl(),r0=t0.concat("length","prototype");Ug.f=Object.getOwnPropertyNames||function(br){return e0(br,r0)}});var md=jr(Vg=>{Vg.f=Object.getOwnPropertySymbols});var Gg=jr((VH,Wg)=>{var i0=Ta(),n0=Yl(),s0=md(),o0=pn();Wg.exports=i0("Reflect","ownKeys")||function(br){var mr=n0.f(o0(br)),Er=s0.f;return Er?mr.concat(Er(br)):mr}});var Kg=jr((WH,Yg)=>{var a0=xn(),l0=Gg(),c0=fd(),u0=gs();Yg.exports=function(yr,br){for(var mr=l0(br),Er=u0.f,wr=c0.f,_r=0;_r{var d0=Fi(),f0=/#|\.prototype\./,Ra=function(yr,br){var mr=p0[h0(yr)];return mr==g0?!0:mr==m0?!1:typeof br=="function"?d0(br):!!br},h0=Ra.normalize=function(yr){return String(yr).replace(f0,".").toLowerCase()},p0=Ra.data={},m0=Ra.NATIVE="N",g0=Ra.POLYFILL="P";Xg.exports=Ra});var rs=jr((YH,Jg)=>{var vd=Ni(),v0=fd().f,b0=ts(),y0=Qs(),E0=Rl(),w0=Kg(),_0=gd();Jg.exports=function(yr,br){var mr=yr.target,Er=yr.global,wr=yr.stat,_r,xr,Sr,Tr,Dr,Or;if(Er?xr=vd:wr?xr=vd[mr]||E0(mr,{}):xr=(vd[mr]||{}).prototype,xr)for(Sr in br){if(Dr=br[Sr],yr.noTargetGet?(Or=v0(xr,Sr),Tr=Or&&Or.value):Tr=xr[Sr],_r=_0(Er?Sr:mr+(wr?".":"#")+Sr,yr.forced),!_r&&Tr!==void 0){if(typeof Dr==typeof Tr)continue;w0(Dr,Tr)}(yr.sham||Tr&&Tr.sham)&&b0(Dr,"sham",!0),y0(xr,Sr,Dr,yr)}}});var ys=jr((KH,Qg)=>{var x0=Bl();Qg.exports=function(yr){if(x0(yr))throw TypeError("Cannot convert a Symbol value to a string");return String(yr)}});var bd=jr((XH,Zg)=>{Zg.exports=` -\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`});var tv=jr((JH,ev)=>{var S0=Ys(),T0=ys(),D0=bd(),Kl="["+D0+"]",O0=RegExp("^"+Kl+Kl+"*"),A0=RegExp(Kl+Kl+"*$"),yd=function(yr){return function(br){var mr=T0(S0(br));return yr&1&&(mr=mr.replace(O0,"")),yr&2&&(mr=mr.replace(A0,"")),mr}};ev.exports={start:yd(1),end:yd(2),trim:yd(3)}});var nv=jr((QH,iv)=>{var C0=Ni(),L0=ys(),M0=tv().trim,rv=bd(),Xl=C0.parseInt,k0=/^[+-]?0[Xx]/,R0=Xl(rv+"08")!==8||Xl(rv+"0x16")!==22;iv.exports=R0?function(br,mr){var Er=M0(L0(br));return Xl(Er,mr>>>0||(k0.test(Er)?16:10))}:Xl});var Ed=jr((eB,ov)=>{var q0=pd(),I0=Gl();ov.exports=Object.keys||function(br){return q0(br,I0)}});var uv=jr((tB,cv)=>{"use strict";var av=ms(),P0=Fi(),wd=Ed(),j0=md(),H0=dd(),B0=Ks(),F0=La(),Mo=Object.assign,lv=Object.defineProperty;cv.exports=!Mo||P0(function(){if(av&&Mo({b:1},Mo(lv({},"a",{enumerable:!0,get:function(){lv(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var yr={},br={},mr=Symbol(),Er="abcdefghijklmnopqrst";return yr[mr]=7,Er.split("").forEach(function(wr){br[wr]=wr}),Mo({},yr)[mr]!=7||wd(Mo({},br)).join("")!=Er})?function(br,mr){for(var Er=B0(br),wr=arguments.length,_r=1,xr=j0.f,Sr=H0.f;wr>_r;)for(var Tr=F0(arguments[_r++]),Dr=xr?wd(Tr).concat(xr(Tr)):wd(Tr),Or=Dr.length,Cr=0,Ar;Or>Cr;)Ar=Dr[Cr++],(!av||Sr.call(Tr,Ar))&&(Er[Ar]=Tr[Ar]);return Er}:Mo});var hv=jr((iB,fv)=>{var $0=Fi(),U0=Ki(),V0=jl(),W0=U0("species");fv.exports=function(yr){return V0>=51||!$0(function(){var br=[],mr=br.constructor={};return mr[W0]=function(){return{foo:1}},br[yr](Boolean).foo!==1})}});var mv=jr((sB,pv)=>{var J0=ms(),Q0=gs(),Z0=pn(),eC=Ed();pv.exports=J0?Object.defineProperties:function(br,mr){Z0(br);for(var Er=eC(mr),wr=Er.length,_r=0,xr;wr>_r;)Q0.f(br,xr=Er[_r++],mr[xr]);return br}});var vv=jr((oB,gv)=>{var tC=Ta();gv.exports=tC("document","documentElement")});var Zl=jr((aB,Sv)=>{var rC=pn(),iC=mv(),bv=Gl(),nC=Aa(),sC=vv(),oC=Yu(),aC=zl(),yv=">",Ev="<",_d="prototype",xd="script",wv=aC("IE_PROTO"),Sd=function(){},_v=function(yr){return Ev+xd+yv+yr+Ev+"/"+xd+yv},xv=function(yr){yr.write(_v("")),yr.close();var br=yr.parentWindow.Object;return yr=null,br},lC=function(){var yr=oC("iframe"),br="java"+xd+":",mr;return yr.style.display="none",sC.appendChild(yr),yr.src=String(br),mr=yr.contentWindow.document,mr.open(),mr.write(_v("document.F=Object")),mr.close(),mr.F},Jl,Ql=function(){try{Jl=new ActiveXObject("htmlfile")}catch(br){}Ql=typeof document!="undefined"?document.domain&&Jl?xv(Jl):lC():xv(Jl);for(var yr=bv.length;yr--;)delete Ql[_d][bv[yr]];return Ql()};nC[wv]=!0;Sv.exports=Object.create||function(br,mr){var Er;return br!==null?(Sd[_d]=rC(br),Er=new Sd,Sd[_d]=null,Er[wv]=br):Er=Ql(),mr===void 0?Er:iC(Er,mr)}});var Dv=jr((lB,Tv)=>{var cC=Ki(),uC=Zl(),dC=gs(),Td=cC("unscopables"),Dd=Array.prototype;Dd[Td]==null&&dC.f(Dd,Td,{configurable:!0,value:uC(null)});Tv.exports=function(yr){Dd[Td][yr]=!0}});var ko=jr((cB,Ov)=>{Ov.exports={}});var Cv=jr((uB,Av)=>{var fC=Fi();Av.exports=!fC(function(){function yr(){}return yr.prototype.constructor=null,Object.getPrototypeOf(new yr)!==yr.prototype})});var Od=jr((dB,Mv)=>{var hC=xn(),pC=Ks(),mC=zl(),gC=Cv(),Lv=mC("IE_PROTO"),vC=Object.prototype;Mv.exports=gC?Object.getPrototypeOf:function(yr){return yr=pC(yr),hC(yr,Lv)?yr[Lv]:typeof yr.constructor=="function"&&yr instanceof yr.constructor?yr.constructor.prototype:yr instanceof Object?vC:null}});var Md=jr((fB,qv)=>{"use strict";var bC=Fi(),kv=Od(),yC=ts(),EC=xn(),wC=Ki(),_C=kl(),Ad=wC("iterator"),Rv=!1,xC=function(){return this},eo,Cd,Ld;[].keys&&(Ld=[].keys(),"next"in Ld?(Cd=kv(kv(Ld)),Cd!==Object.prototype&&(eo=Cd)):Rv=!0);var Nv=eo==null||bC(function(){var yr={};return eo[Ad].call(yr)!==yr});Nv&&(eo={});(!_C||Nv)&&!EC(eo,Ad)&&yC(eo,Ad,xC);qv.exports={IteratorPrototype:eo,BUGGY_SAFARI_ITERATORS:Rv}});var ec=jr((hB,Pv)=>{var SC=gs().f,TC=xn(),DC=Ki(),Iv=DC("toStringTag");Pv.exports=function(yr,br,mr){yr&&!TC(yr=mr?yr:yr.prototype,Iv)&&SC(yr,Iv,{configurable:!0,value:br})}});var Hv=jr((pB,jv)=>{"use strict";var OC=Md().IteratorPrototype,AC=Zl(),CC=Fl(),LC=ec(),MC=ko(),kC=function(){return this};jv.exports=function(yr,br,mr){var Er=br+" Iterator";return yr.prototype=AC(OC,{next:CC(1,mr)}),LC(yr,Er,!1,!0),MC[Er]=kC,yr}});var Fv=jr((mB,Bv)=>{var RC=hn();Bv.exports=function(yr){if(!RC(yr)&&yr!==null)throw TypeError("Can't set "+String(yr)+" as a prototype");return yr}});var kd=jr((gB,zv)=>{var NC=pn(),qC=Fv();zv.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var yr=!1,br={},mr;try{mr=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,mr.call(br,[]),yr=br instanceof Array}catch(Er){}return function(wr,_r){return NC(wr),qC(_r),yr?mr.call(wr,_r):wr.__proto__=_r,wr}}():void 0)});var qd=jr((vB,Jv)=>{"use strict";var IC=rs(),PC=Hv(),$v=Od(),Uv=kd(),jC=ec(),Vv=ts(),HC=Qs(),BC=Ki(),Rd=kl(),Wv=ko(),Gv=Md(),Nd=Gv.IteratorPrototype,tc=Gv.BUGGY_SAFARI_ITERATORS,Na=BC("iterator"),Yv="keys",rc="values",Kv="entries",Xv=function(){return this};Jv.exports=function(yr,br,mr,Er,wr,_r,xr){PC(mr,br,Er);var Sr=function(Pr){if(Pr===wr&&Ar)return Ar;if(!tc&&Pr in Or)return Or[Pr];switch(Pr){case Yv:return function(){return new mr(this,Pr)};case rc:return function(){return new mr(this,Pr)};case Kv:return function(){return new mr(this,Pr)}}return function(){return new mr(this)}},Tr=br+" Iterator",Dr=!1,Or=yr.prototype,Cr=Or[Na]||Or["@@iterator"]||wr&&Or[wr],Ar=!tc&&Cr||Sr(wr),Lr=br=="Array"&&Or.entries||Cr,Rr,Nr,Ir;if(Lr&&(Rr=$v(Lr.call(new yr)),Nd!==Object.prototype&&Rr.next&&(!Rd&&$v(Rr)!==Nd&&(Uv?Uv(Rr,Nd):typeof Rr[Na]!="function"&&Vv(Rr,Na,Xv)),jC(Rr,Tr,!0,!0),Rd&&(Wv[Tr]=Xv))),wr==rc&&Cr&&Cr.name!==rc&&(Dr=!0,Ar=function(){return Cr.call(this)}),(!Rd||xr)&&Or[Na]!==Ar&&Vv(Or,Na,Ar),Wv[br]=Ar,wr)if(Nr={values:Sr(rc),keys:_r?Ar:Sr(Yv),entries:Sr(Kv)},xr)for(Ir in Nr)(tc||Dr||!(Ir in Or))&&HC(Or,Ir,Nr[Ir]);else IC({target:br,proto:!0,forced:tc||Dr},Nr);return Nr}});var Pd=jr((bB,tb)=>{"use strict";var FC=Lo(),Id=Dv(),Qv=ko(),Zv=Js(),zC=qd(),eb="Array Iterator",$C=Zv.set,UC=Zv.getterFor(eb);tb.exports=zC(Array,"Array",function(yr,br){$C(this,{type:eb,target:FC(yr),index:0,kind:br})},function(){var yr=UC(this),br=yr.target,mr=yr.kind,Er=yr.index++;return!br||Er>=br.length?(yr.target=void 0,{value:void 0,done:!0}):mr=="keys"?{value:Er,done:!1}:mr=="values"?{value:br[Er],done:!1}:{value:[Er,br[Er]],done:!1}},"values");Qv.Arguments=Qv.Array;Id("keys");Id("values");Id("entries")});var jd=jr((yB,ib)=>{var VC=Ma(),WC=ys(),GC=Ys(),rb=function(yr){return function(br,mr){var Er=WC(GC(br)),wr=VC(mr),_r=Er.length,xr,Sr;return wr<0||wr>=_r?yr?"":void 0:(xr=Er.charCodeAt(wr),xr<55296||xr>56319||wr+1===_r||(Sr=Er.charCodeAt(wr+1))<56320||Sr>57343?yr?Er.charAt(wr):xr:yr?Er.slice(wr,wr+2):(xr-55296<<10)+(Sr-56320)+65536)}};ib.exports={codeAt:rb(!1),charAt:rb(!0)}});var Hd=jr((wB,ob)=>{var ZC=Qs();ob.exports=function(yr,br,mr){for(var Er in br)ZC(yr,Er,br[Er],mr);return yr}});var ub=jr((_B,cb)=>{var eL=Lo(),ab=Yl().f,tL={}.toString,lb=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],rL=function(yr){try{return ab(yr)}catch(br){return lb.slice()}};cb.exports.f=function(br){return lb&&tL.call(br)=="[object Window]"?rL(br):ab(eL(br))}});var fb=jr((xB,db)=>{var iL=Fi();db.exports=!iL(function(){return Object.isExtensible(Object.preventExtensions({}))})});var ic=jr((SB,mb)=>{var nL=rs(),sL=Aa(),oL=hn(),Bd=xn(),aL=gs().f,hb=Yl(),lL=ub(),cL=Il(),uL=fb(),pb=!1,is=cL("meta"),dL=0,Fd=Object.isExtensible||function(){return!0},zd=function(yr){aL(yr,is,{value:{objectID:"O"+dL++,weakData:{}}})},fL=function(yr,br){if(!oL(yr))return typeof yr=="symbol"?yr:(typeof yr=="string"?"S":"P")+yr;if(!Bd(yr,is)){if(!Fd(yr))return"F";if(!br)return"E";zd(yr)}return yr[is].objectID},hL=function(yr,br){if(!Bd(yr,is)){if(!Fd(yr))return!0;if(!br)return!1;zd(yr)}return yr[is].weakData},pL=function(yr){return uL&&pb&&Fd(yr)&&!Bd(yr,is)&&zd(yr),yr},mL=function(){gL.enable=function(){},pb=!0;var yr=hb.f,br=[].splice,mr={};mr[is]=1,yr(mr).length&&(hb.f=function(Er){for(var wr=yr(Er),_r=0,xr=wr.length;_r{var vL=Ki(),bL=ko(),yL=vL("iterator"),EL=Array.prototype;gb.exports=function(yr){return yr!==void 0&&(bL.Array===yr||EL[yL]===yr)}});var $d=jr((DB,bb)=>{var wL=nd(),_L=ko(),xL=Ki(),SL=xL("iterator");bb.exports=function(yr){if(yr!=null)return yr[SL]||yr["@@iterator"]||_L[wL(yr)]}});var Eb=jr((OB,yb)=>{var TL=pn(),DL=$d();yb.exports=function(yr,br){var mr=arguments.length<2?DL(yr):br;if(typeof mr!="function")throw TypeError(String(yr)+" is not iterable");return TL(mr.call(yr))}});var xb=jr((AB,_b)=>{var wb=pn();_b.exports=function(yr,br,mr){var Er,wr;wb(yr);try{if(Er=yr.return,Er===void 0){if(br==="throw")throw mr;return mr}Er=Er.call(yr)}catch(_r){wr=!0,Er=_r}if(br==="throw")throw mr;if(wr)throw Er;return wb(Er),mr}});var Ud=jr((CB,Tb)=>{var OL=pn(),AL=vb(),CL=Zs(),LL=ad(),ML=Eb(),kL=$d(),Sb=xb(),qa=function(yr,br){this.stopped=yr,this.result=br};Tb.exports=function(yr,br,mr){var Er=mr&&mr.that,wr=!!(mr&&mr.AS_ENTRIES),_r=!!(mr&&mr.IS_ITERATOR),xr=!!(mr&&mr.INTERRUPTED),Sr=LL(br,Er,1+wr+xr),Tr,Dr,Or,Cr,Ar,Lr,Rr,Nr=function(Pr){return Tr&&Sb(Tr,"return",Pr),new qa(!0,Pr)},Ir=function(Pr){return wr?(OL(Pr),xr?Sr(Pr[0],Pr[1],Nr):Sr(Pr[0],Pr[1])):xr?Sr(Pr,Nr):Sr(Pr)};if(_r)Tr=yr;else{if(Dr=kL(yr),typeof Dr!="function")throw TypeError("Target is not iterable");if(AL(Dr)){for(Or=0,Cr=CL(yr.length);Cr>Or;Or++)if(Ar=Ir(yr[Or]),Ar&&Ar instanceof qa)return Ar;return new qa(!1)}Tr=ML(yr,Dr)}for(Lr=Tr.next;!(Rr=Lr.call(Tr)).done;){try{Ar=Ir(Rr.value)}catch(Pr){Sb(Tr,"throw",Pr)}if(typeof Ar=="object"&&Ar&&Ar instanceof qa)return Ar}return new qa(!1)}});var Vd=jr((LB,Db)=>{Db.exports=function(yr,br,mr){if(!(yr instanceof br))throw TypeError("Incorrect "+(mr?mr+" ":"")+"invocation");return yr}});var Mb=jr((MB,Lb)=>{var RL=Ki(),Ob=RL("iterator"),Ab=!1;try{Cb=0,Wd={next:function(){return{done:!!Cb++}},return:function(){Ab=!0}},Wd[Ob]=function(){return this},Array.from(Wd,function(){throw 2})}catch(yr){}var Cb,Wd;Lb.exports=function(yr,br){if(!br&&!Ab)return!1;var mr=!1;try{var Er={};Er[Ob]=function(){return{next:function(){return{done:mr=!0}}}},yr(Er)}catch(wr){}return mr}});var Nb=jr((kB,Rb)=>{var NL=hn(),kb=kd();Rb.exports=function(yr,br,mr){var Er,wr;return kb&&typeof(Er=br.constructor)=="function"&&Er!==mr&&NL(wr=Er.prototype)&&wr!==mr.prototype&&kb(yr,wr),yr}});var Pb=jr((RB,Ib)=>{"use strict";var qL=rs(),IL=Ni(),qb=gd(),PL=Qs(),jL=ic(),HL=Ud(),BL=Vd(),Gd=hn(),Yd=Fi(),FL=Mb(),zL=ec(),$L=Nb();Ib.exports=function(yr,br,mr){var Er=yr.indexOf("Map")!==-1,wr=yr.indexOf("Weak")!==-1,_r=Er?"set":"add",xr=IL[yr],Sr=xr&&xr.prototype,Tr=xr,Dr={},Or=function(Pr){var Br=Sr[Pr];PL(Sr,Pr,Pr=="add"?function(Ur){return Br.call(this,Ur===0?0:Ur),this}:Pr=="delete"?function(zr){return wr&&!Gd(zr)?!1:Br.call(this,zr===0?0:zr)}:Pr=="get"?function(Ur){return wr&&!Gd(Ur)?void 0:Br.call(this,Ur===0?0:Ur)}:Pr=="has"?function(Ur){return wr&&!Gd(Ur)?!1:Br.call(this,Ur===0?0:Ur)}:function(Ur,Kr){return Br.call(this,Ur===0?0:Ur,Kr),this})},Cr=qb(yr,typeof xr!="function"||!(wr||Sr.forEach&&!Yd(function(){new xr().entries().next()})));if(Cr)Tr=mr.getConstructor(br,yr,Er,_r),jL.enable();else if(qb(yr,!0)){var Ar=new Tr,Lr=Ar[_r](wr?{}:-0,1)!=Ar,Rr=Yd(function(){Ar.has(1)}),Nr=FL(function(Pr){new xr(Pr)}),Ir=!wr&&Yd(function(){for(var Pr=new xr,Br=5;Br--;)Pr[_r](Br,Br);return!Pr.has(-0)});Nr||(Tr=br(function(Pr,Br){BL(Pr,Tr,yr);var zr=$L(new xr,Pr,Tr);return Br!=null&&HL(Br,zr[_r],{that:zr,AS_ENTRIES:Er}),zr}),Tr.prototype=Sr,Sr.constructor=Tr),(Rr||Ir)&&(Or("delete"),Or("has"),Er&&Or("get")),(Ir||Lr)&&Or(_r),wr&&Sr.clear&&delete Sr.clear}return Dr[yr]=Tr,qL({global:!0,forced:Tr!=xr},Dr),zL(Tr,yr),wr||mr.setStrong(Tr,yr,Er),Tr}});var Ub=jr((NB,$b)=>{"use strict";var jb=Hd(),nc=ic().getWeakData,UL=pn(),Kd=hn(),VL=Vd(),WL=Ud(),Hb=Wl(),Bb=xn(),Fb=Js(),GL=Fb.set,YL=Fb.getterFor,KL=Hb.find,XL=Hb.findIndex,JL=0,sc=function(yr){return yr.frozen||(yr.frozen=new zb)},zb=function(){this.entries=[]},Xd=function(yr,br){return KL(yr.entries,function(mr){return mr[0]===br})};zb.prototype={get:function(yr){var br=Xd(this,yr);if(br)return br[1]},has:function(yr){return!!Xd(this,yr)},set:function(yr,br){var mr=Xd(this,yr);mr?mr[1]=br:this.entries.push([yr,br])},delete:function(yr){var br=XL(this.entries,function(mr){return mr[0]===yr});return~br&&this.entries.splice(br,1),!!~br}};$b.exports={getConstructor:function(yr,br,mr,Er){var wr=yr(function(Sr,Tr){VL(Sr,wr,br),GL(Sr,{type:br,id:JL++,frozen:void 0}),Tr!=null&&WL(Tr,Sr[Er],{that:Sr,AS_ENTRIES:mr})}),_r=YL(br),xr=function(Sr,Tr,Dr){var Or=_r(Sr),Cr=nc(UL(Tr),!0);return Cr===!0?sc(Or).set(Tr,Dr):Cr[Or.id]=Dr,Sr};return jb(wr.prototype,{delete:function(Sr){var Tr=_r(this);if(!Kd(Sr))return!1;var Dr=nc(Sr);return Dr===!0?sc(Tr).delete(Sr):Dr&&Bb(Dr,Tr.id)&&delete Dr[Tr.id]},has:function(Tr){var Dr=_r(this);if(!Kd(Tr))return!1;var Or=nc(Tr);return Or===!0?sc(Dr).has(Tr):Or&&Bb(Or,Dr.id)}}),jb(wr.prototype,mr?{get:function(Tr){var Dr=_r(this);if(Kd(Tr)){var Or=nc(Tr);return Or===!0?sc(Dr).get(Tr):Or?Or[Dr.id]:void 0}},set:function(Tr,Dr){return xr(this,Tr,Dr)}}:{add:function(Tr){return xr(this,Tr,!0)}}),wr}}});var Kb=jr((qB,Yb)=>{"use strict";var Vb=Ni(),QL=Hd(),ZL=ic(),eM=Pb(),Wb=Ub(),oc=hn(),ac=Js().enforce,tM=ed(),rM=!Vb.ActiveXObject&&"ActiveXObject"in Vb,lc=Object.isExtensible,Ia,Gb=function(yr){return function(){return yr(this,arguments.length?arguments[0]:void 0)}},iM=Yb.exports=eM("WeakMap",Gb,Wb);tM&&rM&&(Ia=Wb.getConstructor(Gb,"WeakMap",!0),ZL.enable(),Ro=iM.prototype,Jd=Ro.delete,Pa=Ro.has,Qd=Ro.get,Zd=Ro.set,QL(Ro,{delete:function(yr){if(oc(yr)&&!lc(yr)){var br=ac(this);return br.frozen||(br.frozen=new Ia),Jd.call(this,yr)||br.frozen.delete(yr)}return Jd.call(this,yr)},has:function(br){if(oc(br)&&!lc(br)){var mr=ac(this);return mr.frozen||(mr.frozen=new Ia),Pa.call(this,br)||mr.frozen.has(br)}return Pa.call(this,br)},get:function(br){if(oc(br)&&!lc(br)){var mr=ac(this);return mr.frozen||(mr.frozen=new Ia),Pa.call(this,br)?Qd.call(this,br):mr.frozen.get(br)}return Qd.call(this,br)},set:function(br,mr){if(oc(br)&&!lc(br)){var Er=ac(this);Er.frozen||(Er.frozen=new Ia),Pa.call(this,br)?Zd.call(this,br,mr):Er.frozen.set(br,mr)}else Zd.call(this,br,mr);return this}}));var Ro,Jd,Pa,Qd,Zd});var iy=jr((PB,ry)=>{var Zb="Expected a function",ey=0/0,sM="[object Symbol]",oM=/^\s+|\s+$/g,aM=/^[-+]0x[0-9a-f]+$/i,lM=/^0b[01]+$/i,cM=/^0o[0-7]+$/i,uM=parseInt,dM=typeof global=="object"&&global&&global.Object===Object&&global,fM=typeof self=="object"&&self&&self.Object===Object&&self,hM=dM||fM||Function("return this")(),pM=Object.prototype,mM=pM.toString,gM=Math.max,vM=Math.min,sf=function(){return hM.Date.now()};function bM(yr,br,mr){var Er,wr,_r,xr,Sr,Tr,Dr=0,Or=!1,Cr=!1,Ar=!0;if(typeof yr!="function")throw new TypeError(Zb);br=ty(br)||0,uc(mr)&&(Or=!!mr.leading,Cr="maxWait"in mr,_r=Cr?gM(ty(mr.maxWait)||0,br):_r,Ar="trailing"in mr?!!mr.trailing:Ar);function Lr(Fr){var Xr=Er,Jr=wr;return Er=wr=void 0,Dr=Fr,xr=yr.apply(Jr,Xr),xr}function Rr(Fr){return Dr=Fr,Sr=setTimeout(Pr,br),Or?Lr(Fr):xr}function Nr(Fr){var Xr=Fr-Tr,Jr=Fr-Dr,oi=br-Xr;return Cr?vM(oi,_r-Jr):oi}function Ir(Fr){var Xr=Fr-Tr,Jr=Fr-Dr;return Tr===void 0||Xr>=br||Xr<0||Cr&&Jr>=_r}function Pr(){var Fr=sf();if(Ir(Fr))return Br(Fr);Sr=setTimeout(Pr,Nr(Fr))}function Br(Fr){return Sr=void 0,Ar&&Er?Lr(Fr):(Er=wr=void 0,xr)}function zr(){Sr!==void 0&&clearTimeout(Sr),Dr=0,Er=Tr=wr=Sr=void 0}function Ur(){return Sr===void 0?xr:Br(sf())}function Kr(){var Fr=sf(),Xr=Ir(Fr);if(Er=arguments,wr=this,Tr=Fr,Xr){if(Sr===void 0)return Rr(Tr);if(Cr)return Sr=setTimeout(Pr,br),Lr(Tr)}return Sr===void 0&&(Sr=setTimeout(Pr,br)),xr}return Kr.cancel=zr,Kr.flush=Ur,Kr}function yM(yr,br,mr){var Er=!0,wr=!0;if(typeof yr!="function")throw new TypeError(Zb);return uc(mr)&&(Er="leading"in mr?!!mr.leading:Er,wr="trailing"in mr?!!mr.trailing:wr),bM(yr,br,{leading:Er,maxWait:br,trailing:wr})}function uc(yr){var br=typeof yr;return!!yr&&(br=="object"||br=="function")}function EM(yr){return!!yr&&typeof yr=="object"}function wM(yr){return typeof yr=="symbol"||EM(yr)&&mM.call(yr)==sM}function ty(yr){if(typeof yr=="number")return yr;if(wM(yr))return ey;if(uc(yr)){var br=typeof yr.valueOf=="function"?yr.valueOf():yr;yr=uc(br)?br+"":br}if(typeof yr!="string")return yr===0?yr:+yr;yr=yr.replace(oM,"");var mr=lM.test(yr);return mr||cM.test(yr)?uM(yr.slice(2),mr?2:8):aM.test(yr)?ey:+yr}ry.exports=yM});var ay=jr((jB,oy)=>{var _M="Expected a function",ny=0/0,xM="[object Symbol]",SM=/^\s+|\s+$/g,TM=/^[-+]0x[0-9a-f]+$/i,DM=/^0b[01]+$/i,OM=/^0o[0-7]+$/i,AM=parseInt,CM=typeof global=="object"&&global&&global.Object===Object&&global,LM=typeof self=="object"&&self&&self.Object===Object&&self,MM=CM||LM||Function("return this")(),kM=Object.prototype,RM=kM.toString,NM=Math.max,qM=Math.min,of=function(){return MM.Date.now()};function IM(yr,br,mr){var Er,wr,_r,xr,Sr,Tr,Dr=0,Or=!1,Cr=!1,Ar=!0;if(typeof yr!="function")throw new TypeError(_M);br=sy(br)||0,af(mr)&&(Or=!!mr.leading,Cr="maxWait"in mr,_r=Cr?NM(sy(mr.maxWait)||0,br):_r,Ar="trailing"in mr?!!mr.trailing:Ar);function Lr(Fr){var Xr=Er,Jr=wr;return Er=wr=void 0,Dr=Fr,xr=yr.apply(Jr,Xr),xr}function Rr(Fr){return Dr=Fr,Sr=setTimeout(Pr,br),Or?Lr(Fr):xr}function Nr(Fr){var Xr=Fr-Tr,Jr=Fr-Dr,oi=br-Xr;return Cr?qM(oi,_r-Jr):oi}function Ir(Fr){var Xr=Fr-Tr,Jr=Fr-Dr;return Tr===void 0||Xr>=br||Xr<0||Cr&&Jr>=_r}function Pr(){var Fr=of();if(Ir(Fr))return Br(Fr);Sr=setTimeout(Pr,Nr(Fr))}function Br(Fr){return Sr=void 0,Ar&&Er?Lr(Fr):(Er=wr=void 0,xr)}function zr(){Sr!==void 0&&clearTimeout(Sr),Dr=0,Er=Tr=wr=Sr=void 0}function Ur(){return Sr===void 0?xr:Br(of())}function Kr(){var Fr=of(),Xr=Ir(Fr);if(Er=arguments,wr=this,Tr=Fr,Xr){if(Sr===void 0)return Rr(Tr);if(Cr)return Sr=setTimeout(Pr,br),Lr(Tr)}return Sr===void 0&&(Sr=setTimeout(Pr,br)),xr}return Kr.cancel=zr,Kr.flush=Ur,Kr}function af(yr){var br=typeof yr;return!!yr&&(br=="object"||br=="function")}function PM(yr){return!!yr&&typeof yr=="object"}function jM(yr){return typeof yr=="symbol"||PM(yr)&&RM.call(yr)==xM}function sy(yr){if(typeof yr=="number")return yr;if(jM(yr))return ny;if(af(yr)){var br=typeof yr.valueOf=="function"?yr.valueOf():yr;yr=af(br)?br+"":br}if(typeof yr!="string")return yr===0?yr:+yr;yr=yr.replace(SM,"");var mr=DM.test(yr);return mr||OM.test(yr)?AM(yr.slice(2),mr?2:8):TM.test(yr)?ny:+yr}oy.exports=IM});var gy=jr((HB,my)=>{var HM="Expected a function",ly="__lodash_hash_undefined__",BM="[object Function]",FM="[object GeneratorFunction]",zM=/[\\^$.*+?()[\]{}|]/g,$M=/^\[object .+?Constructor\]$/,UM=typeof global=="object"&&global&&global.Object===Object&&global,VM=typeof self=="object"&&self&&self.Object===Object&&self,cy=UM||VM||Function("return this")();function WM(yr,br){return yr==null?void 0:yr[br]}function GM(yr){var br=!1;if(yr!=null&&typeof yr.toString!="function")try{br=!!(yr+"")}catch(mr){}return br}var YM=Array.prototype,KM=Function.prototype,uy=Object.prototype,lf=cy["__core-js_shared__"],dy=function(){var yr=/[^.]+$/.exec(lf&&lf.keys&&lf.keys.IE_PROTO||"");return yr?"Symbol(src)_1."+yr:""}(),fy=KM.toString,cf=uy.hasOwnProperty,XM=uy.toString,JM=RegExp("^"+fy.call(cf).replace(zM,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),QM=YM.splice,ZM=hy(cy,"Map"),Ha=hy(Object,"create");function ro(yr){var br=-1,mr=yr?yr.length:0;for(this.clear();++br-1}function ck(yr,br){var mr=this.__data__,Er=dc(mr,yr);return Er<0?mr.push([yr,br]):mr[Er][1]=br,this}No.prototype.clear=sk;No.prototype.delete=ok;No.prototype.get=ak;No.prototype.has=lk;No.prototype.set=ck;function io(yr){var br=-1,mr=yr?yr.length:0;for(this.clear();++br{var Ck=od(),Lk=Ks(),Mk=La(),kk=Zs(),Ny=function(yr){return function(br,mr,Er,wr){Ck(mr);var _r=Lk(br),xr=Mk(_r),Sr=kk(_r.length),Tr=yr?Sr-1:0,Dr=yr?-1:1;if(Er<2)for(;;){if(Tr in xr){wr=xr[Tr],Tr+=Dr;break}if(Tr+=Dr,yr?Tr<0:Sr<=Tr)throw TypeError("Reduce of empty array with no initial value")}for(;yr?Tr>=0:Sr>Tr;Tr+=Dr)Tr in xr&&(wr=mr(wr,xr[Tr],Tr,_r));return wr}};qy.exports={left:Ny(!1),right:Ny(!0)}});var jy=jr((JF,Py)=>{var Rk=Co(),Nk=Ni();Py.exports=Rk(Nk.process)=="process"});var Fy=jr((ZF,By)=>{"use strict";var Fk=pn();By.exports=function(){var yr=Fk(this),br="";return yr.global&&(br+="g"),yr.ignoreCase&&(br+="i"),yr.multiline&&(br+="m"),yr.dotAll&&(br+="s"),yr.unicode&&(br+="u"),yr.sticky&&(br+="y"),br}});var Uy=jr(wf=>{var zy=Fi(),zk=Ni(),$y=zk.RegExp;wf.UNSUPPORTED_Y=zy(function(){var yr=$y("a","y");return yr.lastIndex=2,yr.exec("abcd")!=null});wf.BROKEN_CARET=zy(function(){var yr=$y("^r","gy");return yr.lastIndex=2,yr.exec("str")!=null})});var Wy=jr((tz,Vy)=>{var $k=Fi(),Uk=Ni(),Vk=Uk.RegExp;Vy.exports=$k(function(){var yr=Vk(".","s");return!(yr.dotAll&&yr.exec(` -`)&&yr.flags==="s")})});var Yy=jr((rz,Gy)=>{var Wk=Fi(),Gk=Ni(),Yk=Gk.RegExp;Gy.exports=Wk(function(){var yr=Yk("(?b)","g");return yr.exec("b").groups.a!=="b"||"b".replace(yr,"$c")!=="bc"})});var wc=jr((iz,Jy)=>{"use strict";var Kk=ys(),Xk=Fy(),Ky=Uy(),Jk=ql(),Qk=Zl(),Zk=Js().get,eR=Wy(),tR=Yy(),Ec=RegExp.prototype.exec,rR=Jk("native-string-replace",String.prototype.replace),_f=Ec,xf=function(){var yr=/a/,br=/b*/g;return Ec.call(yr,"a"),Ec.call(br,"a"),yr.lastIndex!==0||br.lastIndex!==0}(),Xy=Ky.UNSUPPORTED_Y||Ky.BROKEN_CARET,Sf=/()??/.exec("")[1]!==void 0,iR=xf||Sf||Xy||eR||tR;iR&&(_f=function(br){var mr=this,Er=Zk(mr),wr=Kk(br),_r=Er.raw,xr,Sr,Tr,Dr,Or,Cr,Ar;if(_r)return _r.lastIndex=mr.lastIndex,xr=_f.call(_r,wr),mr.lastIndex=_r.lastIndex,xr;var Lr=Er.groups,Rr=Xy&&mr.sticky,Nr=Xk.call(mr),Ir=mr.source,Pr=0,Br=wr;if(Rr&&(Nr=Nr.replace("y",""),Nr.indexOf("g")===-1&&(Nr+="g"),Br=wr.slice(mr.lastIndex),mr.lastIndex>0&&(!mr.multiline||mr.multiline&&wr.charAt(mr.lastIndex-1)!==` -`)&&(Ir="(?: "+Ir+")",Br=" "+Br,Pr++),Sr=new RegExp("^(?:"+Ir+")",Nr)),Sf&&(Sr=new RegExp("^"+Ir+"$(?!\\s)",Nr)),xf&&(Tr=mr.lastIndex),Dr=Ec.call(Rr?Sr:mr,Br),Rr?Dr?(Dr.input=Dr.input.slice(Pr),Dr[0]=Dr[0].slice(Pr),Dr.index=mr.lastIndex,mr.lastIndex+=Dr[0].length):mr.lastIndex=0:xf&&Dr&&(mr.lastIndex=mr.global?Dr.index+Dr[0].length:Tr),Sf&&Dr&&Dr.length>1&&rR.call(Dr[0],Sr,function(){for(Or=1;Or{"use strict";var nR=rs(),Qy=wc();nR({target:"RegExp",proto:!0,forced:/./.exec!==Qy},{exec:Qy})});var Of=jr((oz,rE)=>{"use strict";Tf();var Zy=Qs(),sR=wc(),eE=Fi(),tE=Ki(),oR=ts(),aR=tE("species"),Df=RegExp.prototype;rE.exports=function(yr,br,mr,Er){var wr=tE(yr),_r=!eE(function(){var Dr={};return Dr[wr]=function(){return 7},""[yr](Dr)!=7}),xr=_r&&!eE(function(){var Dr=!1,Or=/a/;return yr==="split"&&(Or={},Or.constructor={},Or.constructor[aR]=function(){return Or},Or.flags="",Or[wr]=/./[wr]),Or.exec=function(){return Dr=!0,null},Or[wr](""),!Dr});if(!_r||!xr||mr){var Sr=/./[wr],Tr=br(wr,""[yr],function(Dr,Or,Cr,Ar,Lr){var Rr=Or.exec;return Rr===sR||Rr===Df.exec?_r&&!Lr?{done:!0,value:Sr.call(Or,Cr,Ar)}:{done:!0,value:Dr.call(Cr,Or,Ar)}:{done:!1}});Zy(String.prototype,yr,Tr[0]),Zy(Df,wr,Tr[1])}Er&&oR(Df[wr],"sham",!0)}});var Af=jr((az,iE)=>{"use strict";var lR=jd().charAt;iE.exports=function(yr,br,mr){return br+(mr?lR(yr,br).length:1)}});var Cf=jr((lz,nE)=>{var cR=Co(),uR=wc();nE.exports=function(yr,br){var mr=yr.exec;if(typeof mr=="function"){var Er=mr.call(yr,br);if(typeof Er!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return Er}if(cR(yr)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return uR.call(yr,br)}});var lE=jr((dz,aE)=>{var ER=Ks(),wR=Math.floor,_R="".replace,xR=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,SR=/\$([$&'`]|\d{1,2})/g;aE.exports=function(yr,br,mr,Er,wr,_r){var xr=mr+yr.length,Sr=Er.length,Tr=SR;return wr!==void 0&&(wr=ER(wr),Tr=xR),_R.call(_r,Tr,function(Dr,Or){var Cr;switch(Or.charAt(0)){case"$":return"$";case"&":return yr;case"`":return br.slice(0,mr);case"'":return br.slice(xr);case"<":Cr=wr[Or.slice(1,-1)];break;default:var Ar=+Or;if(Ar===0)return Dr;if(Ar>Sr){var Lr=wR(Ar/10);return Lr===0?Dr:Lr<=Sr?Er[Lr-1]===void 0?Or.charAt(1):Er[Lr-1]+Or.charAt(1):Dr}Cr=Er[Ar-1]}return Cr===void 0?"":Cr})}});var NE=jr(Dc=>{"use strict";Object.defineProperty(Dc,"__esModule",{value:!0});Dc.bodyRegExps={xml:/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g};Dc.namedReferences={xml:{entities:{"<":"<",">":">",""":'"',"'":"'","&":"&"},characters:{"<":"<",">":">",'"':""","'":"'","&":"&"}},html4:{entities:{"'":"'"," ":"\xA0"," ":"\xA0","¡":"\xA1","¡":"\xA1","¢":"\xA2","¢":"\xA2","£":"\xA3","£":"\xA3","¤":"\xA4","¤":"\xA4","¥":"\xA5","¥":"\xA5","¦":"\xA6","¦":"\xA6","§":"\xA7","§":"\xA7","¨":"\xA8","¨":"\xA8","©":"\xA9","©":"\xA9","ª":"\xAA","ª":"\xAA","«":"\xAB","«":"\xAB","¬":"\xAC","¬":"\xAC","­":"\xAD","­":"\xAD","®":"\xAE","®":"\xAE","¯":"\xAF","¯":"\xAF","°":"\xB0","°":"\xB0","±":"\xB1","±":"\xB1","²":"\xB2","²":"\xB2","³":"\xB3","³":"\xB3","´":"\xB4","´":"\xB4","µ":"\xB5","µ":"\xB5","¶":"\xB6","¶":"\xB6","·":"\xB7","·":"\xB7","¸":"\xB8","¸":"\xB8","¹":"\xB9","¹":"\xB9","º":"\xBA","º":"\xBA","»":"\xBB","»":"\xBB","¼":"\xBC","¼":"\xBC","½":"\xBD","½":"\xBD","¾":"\xBE","¾":"\xBE","¿":"\xBF","¿":"\xBF","À":"\xC0","À":"\xC0","Á":"\xC1","Á":"\xC1","Â":"\xC2","Â":"\xC2","Ã":"\xC3","Ã":"\xC3","Ä":"\xC4","Ä":"\xC4","Å":"\xC5","Å":"\xC5","Æ":"\xC6","Æ":"\xC6","Ç":"\xC7","Ç":"\xC7","È":"\xC8","È":"\xC8","É":"\xC9","É":"\xC9","Ê":"\xCA","Ê":"\xCA","Ë":"\xCB","Ë":"\xCB","Ì":"\xCC","Ì":"\xCC","Í":"\xCD","Í":"\xCD","Î":"\xCE","Î":"\xCE","Ï":"\xCF","Ï":"\xCF","Ð":"\xD0","Ð":"\xD0","Ñ":"\xD1","Ñ":"\xD1","Ò":"\xD2","Ò":"\xD2","Ó":"\xD3","Ó":"\xD3","Ô":"\xD4","Ô":"\xD4","Õ":"\xD5","Õ":"\xD5","Ö":"\xD6","Ö":"\xD6","×":"\xD7","×":"\xD7","Ø":"\xD8","Ø":"\xD8","Ù":"\xD9","Ù":"\xD9","Ú":"\xDA","Ú":"\xDA","Û":"\xDB","Û":"\xDB","Ü":"\xDC","Ü":"\xDC","Ý":"\xDD","Ý":"\xDD","Þ":"\xDE","Þ":"\xDE","ß":"\xDF","ß":"\xDF","à":"\xE0","à":"\xE0","á":"\xE1","á":"\xE1","â":"\xE2","â":"\xE2","ã":"\xE3","ã":"\xE3","ä":"\xE4","ä":"\xE4","å":"\xE5","å":"\xE5","æ":"\xE6","æ":"\xE6","ç":"\xE7","ç":"\xE7","è":"\xE8","è":"\xE8","é":"\xE9","é":"\xE9","ê":"\xEA","ê":"\xEA","ë":"\xEB","ë":"\xEB","ì":"\xEC","ì":"\xEC","í":"\xED","í":"\xED","î":"\xEE","î":"\xEE","ï":"\xEF","ï":"\xEF","ð":"\xF0","ð":"\xF0","ñ":"\xF1","ñ":"\xF1","ò":"\xF2","ò":"\xF2","ó":"\xF3","ó":"\xF3","ô":"\xF4","ô":"\xF4","õ":"\xF5","õ":"\xF5","ö":"\xF6","ö":"\xF6","÷":"\xF7","÷":"\xF7","ø":"\xF8","ø":"\xF8","ù":"\xF9","ù":"\xF9","ú":"\xFA","ú":"\xFA","û":"\xFB","û":"\xFB","ü":"\xFC","ü":"\xFC","ý":"\xFD","ý":"\xFD","þ":"\xFE","þ":"\xFE","ÿ":"\xFF","ÿ":"\xFF",""":'"',""":'"',"&":"&","&":"&","<":"<","<":"<",">":">",">":">","Œ":"\u0152","œ":"\u0153","Š":"\u0160","š":"\u0161","Ÿ":"\u0178","ˆ":"\u02C6","˜":"\u02DC"," ":"\u2002"," ":"\u2003"," ":"\u2009","‌":"\u200C","‍":"\u200D","‎":"\u200E","‏":"\u200F","–":"\u2013","—":"\u2014","‘":"\u2018","’":"\u2019","‚":"\u201A","“":"\u201C","”":"\u201D","„":"\u201E","†":"\u2020","‡":"\u2021","‰":"\u2030","‹":"\u2039","›":"\u203A","€":"\u20AC","ƒ":"\u0192","Α":"\u0391","Β":"\u0392","Γ":"\u0393","Δ":"\u0394","Ε":"\u0395","Ζ":"\u0396","Η":"\u0397","Θ":"\u0398","Ι":"\u0399","Κ":"\u039A","Λ":"\u039B","Μ":"\u039C","Ν":"\u039D","Ξ":"\u039E","Ο":"\u039F","Π":"\u03A0","Ρ":"\u03A1","Σ":"\u03A3","Τ":"\u03A4","Υ":"\u03A5","Φ":"\u03A6","Χ":"\u03A7","Ψ":"\u03A8","Ω":"\u03A9","α":"\u03B1","β":"\u03B2","γ":"\u03B3","δ":"\u03B4","ε":"\u03B5","ζ":"\u03B6","η":"\u03B7","θ":"\u03B8","ι":"\u03B9","κ":"\u03BA","λ":"\u03BB","μ":"\u03BC","ν":"\u03BD","ξ":"\u03BE","ο":"\u03BF","π":"\u03C0","ρ":"\u03C1","ς":"\u03C2","σ":"\u03C3","τ":"\u03C4","υ":"\u03C5","φ":"\u03C6","χ":"\u03C7","ψ":"\u03C8","ω":"\u03C9","ϑ":"\u03D1","ϒ":"\u03D2","ϖ":"\u03D6","•":"\u2022","…":"\u2026","′":"\u2032","″":"\u2033","‾":"\u203E","⁄":"\u2044","℘":"\u2118","ℑ":"\u2111","ℜ":"\u211C","™":"\u2122","ℵ":"\u2135","←":"\u2190","↑":"\u2191","→":"\u2192","↓":"\u2193","↔":"\u2194","↵":"\u21B5","⇐":"\u21D0","⇑":"\u21D1","⇒":"\u21D2","⇓":"\u21D3","⇔":"\u21D4","∀":"\u2200","∂":"\u2202","∃":"\u2203","∅":"\u2205","∇":"\u2207","∈":"\u2208","∉":"\u2209","∋":"\u220B","∏":"\u220F","∑":"\u2211","−":"\u2212","∗":"\u2217","√":"\u221A","∝":"\u221D","∞":"\u221E","∠":"\u2220","∧":"\u2227","∨":"\u2228","∩":"\u2229","∪":"\u222A","∫":"\u222B","∴":"\u2234","∼":"\u223C","≅":"\u2245","≈":"\u2248","≠":"\u2260","≡":"\u2261","≤":"\u2264","≥":"\u2265","⊂":"\u2282","⊃":"\u2283","⊄":"\u2284","⊆":"\u2286","⊇":"\u2287","⊕":"\u2295","⊗":"\u2297","⊥":"\u22A5","⋅":"\u22C5","⌈":"\u2308","⌉":"\u2309","⌊":"\u230A","⌋":"\u230B","⟨":"\u2329","⟩":"\u232A","◊":"\u25CA","♠":"\u2660","♣":"\u2663","♥":"\u2665","♦":"\u2666"},characters:{"'":"'","\xA0":" ","\xA1":"¡","\xA2":"¢","\xA3":"£","\xA4":"¤","\xA5":"¥","\xA6":"¦","\xA7":"§","\xA8":"¨","\xA9":"©",\u00AA:"ª","\xAB":"«","\xAC":"¬","\xAD":"­","\xAE":"®","\xAF":"¯","\xB0":"°","\xB1":"±","\xB2":"²","\xB3":"³","\xB4":"´",\u00B5:"µ","\xB6":"¶","\xB7":"·","\xB8":"¸","\xB9":"¹",\u00BA:"º","\xBB":"»","\xBC":"¼","\xBD":"½","\xBE":"¾","\xBF":"¿",\u00C0:"À",\u00C1:"Á",\u00C2:"Â",\u00C3:"Ã",\u00C4:"Ä",\u00C5:"Å",\u00C6:"Æ",\u00C7:"Ç",\u00C8:"È",\u00C9:"É",\u00CA:"Ê",\u00CB:"Ë",\u00CC:"Ì",\u00CD:"Í",\u00CE:"Î",\u00CF:"Ï",\u00D0:"Ð",\u00D1:"Ñ",\u00D2:"Ò",\u00D3:"Ó",\u00D4:"Ô",\u00D5:"Õ",\u00D6:"Ö","\xD7":"×",\u00D8:"Ø",\u00D9:"Ù",\u00DA:"Ú",\u00DB:"Û",\u00DC:"Ü",\u00DD:"Ý",\u00DE:"Þ",\u00DF:"ß",\u00E0:"à",\u00E1:"á",\u00E2:"â",\u00E3:"ã",\u00E4:"ä",\u00E5:"å",\u00E6:"æ",\u00E7:"ç",\u00E8:"è",\u00E9:"é",\u00EA:"ê",\u00EB:"ë",\u00EC:"ì",\u00ED:"í",\u00EE:"î",\u00EF:"ï",\u00F0:"ð",\u00F1:"ñ",\u00F2:"ò",\u00F3:"ó",\u00F4:"ô",\u00F5:"õ",\u00F6:"ö","\xF7":"÷",\u00F8:"ø",\u00F9:"ù",\u00FA:"ú",\u00FB:"û",\u00FC:"ü",\u00FD:"ý",\u00FE:"þ",\u00FF:"ÿ",'"':""","&":"&","<":"<",">":">",\u0152:"Œ",\u0153:"œ",\u0160:"Š",\u0161:"š",\u0178:"Ÿ","\u02C6":"ˆ","\u02DC":"˜","\u2002":" ","\u2003":" ","\u2009":" ","\u200C":"‌","\u200D":"‍","\u200E":"‎","\u200F":"‏","\u2013":"–","\u2014":"—","\u2018":"‘","\u2019":"’","\u201A":"‚","\u201C":"“","\u201D":"”","\u201E":"„","\u2020":"†","\u2021":"‡","\u2030":"‰","\u2039":"‹","\u203A":"›","\u20AC":"€",\u0192:"ƒ",\u0391:"Α",\u0392:"Β",\u0393:"Γ",\u0394:"Δ",\u0395:"Ε",\u0396:"Ζ",\u0397:"Η",\u0398:"Θ",\u0399:"Ι",\u039A:"Κ",\u039B:"Λ",\u039C:"Μ",\u039D:"Ν",\u039E:"Ξ",\u039F:"Ο",\u03A0:"Π",\u03A1:"Ρ",\u03A3:"Σ",\u03A4:"Τ",\u03A5:"Υ",\u03A6:"Φ",\u03A7:"Χ",\u03A8:"Ψ",\u03A9:"Ω",\u03B1:"α",\u03B2:"β",\u03B3:"γ",\u03B4:"δ",\u03B5:"ε",\u03B6:"ζ",\u03B7:"η",\u03B8:"θ",\u03B9:"ι",\u03BA:"κ",\u03BB:"λ",\u03BC:"μ",\u03BD:"ν",\u03BE:"ξ",\u03BF:"ο",\u03C0:"π",\u03C1:"ρ",\u03C2:"ς",\u03C3:"σ",\u03C4:"τ",\u03C5:"υ",\u03C6:"φ",\u03C7:"χ",\u03C8:"ψ",\u03C9:"ω",\u03D1:"ϑ",\u03D2:"ϒ",\u03D6:"ϖ","\u2022":"•","\u2026":"…","\u2032":"′","\u2033":"″","\u203E":"‾","\u2044":"⁄","\u2118":"℘",\u2111:"ℑ",\u211C:"ℜ","\u2122":"™",\u2135:"ℵ","\u2190":"←","\u2191":"↑","\u2192":"→","\u2193":"↓","\u2194":"↔","\u21B5":"↵","\u21D0":"⇐","\u21D1":"⇑","\u21D2":"⇒","\u21D3":"⇓","\u21D4":"⇔","\u2200":"∀","\u2202":"∂","\u2203":"∃","\u2205":"∅","\u2207":"∇","\u2208":"∈","\u2209":"∉","\u220B":"∋","\u220F":"∏","\u2211":"∑","\u2212":"−","\u2217":"∗","\u221A":"√","\u221D":"∝","\u221E":"∞","\u2220":"∠","\u2227":"∧","\u2228":"∨","\u2229":"∩","\u222A":"∪","\u222B":"∫","\u2234":"∴","\u223C":"∼","\u2245":"≅","\u2248":"≈","\u2260":"≠","\u2261":"≡","\u2264":"≤","\u2265":"≥","\u2282":"⊂","\u2283":"⊃","\u2284":"⊄","\u2286":"⊆","\u2287":"⊇","\u2295":"⊕","\u2297":"⊗","\u22A5":"⊥","\u22C5":"⋅","\u2308":"⌈","\u2309":"⌉","\u230A":"⌊","\u230B":"⌋","\u2329":"⟨","\u232A":"⟩","\u25CA":"◊","\u2660":"♠","\u2663":"♣","\u2665":"♥","\u2666":"♦"}},html5:{entities:{"Æ":"\xC6","Æ":"\xC6","&":"&","&":"&","Á":"\xC1","Á":"\xC1","Ă":"\u0102","Â":"\xC2","Â":"\xC2","А":"\u0410","𝔄":"\u{1D504}","À":"\xC0","À":"\xC0","Α":"\u0391","Ā":"\u0100","⩓":"\u2A53","Ą":"\u0104","𝔸":"\u{1D538}","⁡":"\u2061","Å":"\xC5","Å":"\xC5","𝒜":"\u{1D49C}","≔":"\u2254","Ã":"\xC3","Ã":"\xC3","Ä":"\xC4","Ä":"\xC4","∖":"\u2216","⫧":"\u2AE7","⌆":"\u2306","Б":"\u0411","∵":"\u2235","ℬ":"\u212C","Β":"\u0392","𝔅":"\u{1D505}","𝔹":"\u{1D539}","˘":"\u02D8","ℬ":"\u212C","≎":"\u224E","Ч":"\u0427","©":"\xA9","©":"\xA9","Ć":"\u0106","⋒":"\u22D2","ⅅ":"\u2145","ℭ":"\u212D","Č":"\u010C","Ç":"\xC7","Ç":"\xC7","Ĉ":"\u0108","∰":"\u2230","Ċ":"\u010A","¸":"\xB8","·":"\xB7","ℭ":"\u212D","Χ":"\u03A7","⊙":"\u2299","⊖":"\u2296","⊕":"\u2295","⊗":"\u2297","∲":"\u2232","”":"\u201D","’":"\u2019","∷":"\u2237","⩴":"\u2A74","≡":"\u2261","∯":"\u222F","∮":"\u222E","ℂ":"\u2102","∐":"\u2210","∳":"\u2233","⨯":"\u2A2F","𝒞":"\u{1D49E}","⋓":"\u22D3","≍":"\u224D","ⅅ":"\u2145","⤑":"\u2911","Ђ":"\u0402","Ѕ":"\u0405","Џ":"\u040F","‡":"\u2021","↡":"\u21A1","⫤":"\u2AE4","Ď":"\u010E","Д":"\u0414","∇":"\u2207","Δ":"\u0394","𝔇":"\u{1D507}","´":"\xB4","˙":"\u02D9","˝":"\u02DD","`":"`","˜":"\u02DC","⋄":"\u22C4","ⅆ":"\u2146","𝔻":"\u{1D53B}","¨":"\xA8","⃜":"\u20DC","≐":"\u2250","∯":"\u222F","¨":"\xA8","⇓":"\u21D3","⇐":"\u21D0","⇔":"\u21D4","⫤":"\u2AE4","⟸":"\u27F8","⟺":"\u27FA","⟹":"\u27F9","⇒":"\u21D2","⊨":"\u22A8","⇑":"\u21D1","⇕":"\u21D5","∥":"\u2225","↓":"\u2193","⤓":"\u2913","⇵":"\u21F5","̑":"\u0311","⥐":"\u2950","⥞":"\u295E","↽":"\u21BD","⥖":"\u2956","⥟":"\u295F","⇁":"\u21C1","⥗":"\u2957","⊤":"\u22A4","↧":"\u21A7","⇓":"\u21D3","𝒟":"\u{1D49F}","Đ":"\u0110","Ŋ":"\u014A","Ð":"\xD0","Ð":"\xD0","É":"\xC9","É":"\xC9","Ě":"\u011A","Ê":"\xCA","Ê":"\xCA","Э":"\u042D","Ė":"\u0116","𝔈":"\u{1D508}","È":"\xC8","È":"\xC8","∈":"\u2208","Ē":"\u0112","◻":"\u25FB","▫":"\u25AB","Ę":"\u0118","𝔼":"\u{1D53C}","Ε":"\u0395","⩵":"\u2A75","≂":"\u2242","⇌":"\u21CC","ℰ":"\u2130","⩳":"\u2A73","Η":"\u0397","Ë":"\xCB","Ë":"\xCB","∃":"\u2203","ⅇ":"\u2147","Ф":"\u0424","𝔉":"\u{1D509}","◼":"\u25FC","▪":"\u25AA","𝔽":"\u{1D53D}","∀":"\u2200","ℱ":"\u2131","ℱ":"\u2131","Ѓ":"\u0403",">":">",">":">","Γ":"\u0393","Ϝ":"\u03DC","Ğ":"\u011E","Ģ":"\u0122","Ĝ":"\u011C","Г":"\u0413","Ġ":"\u0120","𝔊":"\u{1D50A}","⋙":"\u22D9","𝔾":"\u{1D53E}","≥":"\u2265","⋛":"\u22DB","≧":"\u2267","⪢":"\u2AA2","≷":"\u2277","⩾":"\u2A7E","≳":"\u2273","𝒢":"\u{1D4A2}","≫":"\u226B","Ъ":"\u042A","ˇ":"\u02C7","^":"^","Ĥ":"\u0124","ℌ":"\u210C","ℋ":"\u210B","ℍ":"\u210D","─":"\u2500","ℋ":"\u210B","Ħ":"\u0126","≎":"\u224E","≏":"\u224F","Е":"\u0415","IJ":"\u0132","Ё":"\u0401","Í":"\xCD","Í":"\xCD","Î":"\xCE","Î":"\xCE","И":"\u0418","İ":"\u0130","ℑ":"\u2111","Ì":"\xCC","Ì":"\xCC","ℑ":"\u2111","Ī":"\u012A","ⅈ":"\u2148","⇒":"\u21D2","∬":"\u222C","∫":"\u222B","⋂":"\u22C2","⁣":"\u2063","⁢":"\u2062","Į":"\u012E","𝕀":"\u{1D540}","Ι":"\u0399","ℐ":"\u2110","Ĩ":"\u0128","І":"\u0406","Ï":"\xCF","Ï":"\xCF","Ĵ":"\u0134","Й":"\u0419","𝔍":"\u{1D50D}","𝕁":"\u{1D541}","𝒥":"\u{1D4A5}","Ј":"\u0408","Є":"\u0404","Х":"\u0425","Ќ":"\u040C","Κ":"\u039A","Ķ":"\u0136","К":"\u041A","𝔎":"\u{1D50E}","𝕂":"\u{1D542}","𝒦":"\u{1D4A6}","Љ":"\u0409","<":"<","<":"<","Ĺ":"\u0139","Λ":"\u039B","⟪":"\u27EA","ℒ":"\u2112","↞":"\u219E","Ľ":"\u013D","Ļ":"\u013B","Л":"\u041B","⟨":"\u27E8","←":"\u2190","⇤":"\u21E4","⇆":"\u21C6","⌈":"\u2308","⟦":"\u27E6","⥡":"\u2961","⇃":"\u21C3","⥙":"\u2959","⌊":"\u230A","↔":"\u2194","⥎":"\u294E","⊣":"\u22A3","↤":"\u21A4","⥚":"\u295A","⊲":"\u22B2","⧏":"\u29CF","⊴":"\u22B4","⥑":"\u2951","⥠":"\u2960","↿":"\u21BF","⥘":"\u2958","↼":"\u21BC","⥒":"\u2952","⇐":"\u21D0","⇔":"\u21D4","⋚":"\u22DA","≦":"\u2266","≶":"\u2276","⪡":"\u2AA1","⩽":"\u2A7D","≲":"\u2272","𝔏":"\u{1D50F}","⋘":"\u22D8","⇚":"\u21DA","Ŀ":"\u013F","⟵":"\u27F5","⟷":"\u27F7","⟶":"\u27F6","⟸":"\u27F8","⟺":"\u27FA","⟹":"\u27F9","𝕃":"\u{1D543}","↙":"\u2199","↘":"\u2198","ℒ":"\u2112","↰":"\u21B0","Ł":"\u0141","≪":"\u226A","⤅":"\u2905","М":"\u041C"," ":"\u205F","ℳ":"\u2133","𝔐":"\u{1D510}","∓":"\u2213","𝕄":"\u{1D544}","ℳ":"\u2133","Μ":"\u039C","Њ":"\u040A","Ń":"\u0143","Ň":"\u0147","Ņ":"\u0145","Н":"\u041D","​":"\u200B","​":"\u200B","​":"\u200B","​":"\u200B","≫":"\u226B","≪":"\u226A"," ":` -`,"𝔑":"\u{1D511}","⁠":"\u2060"," ":"\xA0","ℕ":"\u2115","⫬":"\u2AEC","≢":"\u2262","≭":"\u226D","∦":"\u2226","∉":"\u2209","≠":"\u2260","≂̸":"\u2242\u0338","∄":"\u2204","≯":"\u226F","≱":"\u2271","≧̸":"\u2267\u0338","≫̸":"\u226B\u0338","≹":"\u2279","⩾̸":"\u2A7E\u0338","≵":"\u2275","≎̸":"\u224E\u0338","≏̸":"\u224F\u0338","⋪":"\u22EA","⧏̸":"\u29CF\u0338","⋬":"\u22EC","≮":"\u226E","≰":"\u2270","≸":"\u2278","≪̸":"\u226A\u0338","⩽̸":"\u2A7D\u0338","≴":"\u2274","⪢̸":"\u2AA2\u0338","⪡̸":"\u2AA1\u0338","⊀":"\u2280","⪯̸":"\u2AAF\u0338","⋠":"\u22E0","∌":"\u220C","⋫":"\u22EB","⧐̸":"\u29D0\u0338","⋭":"\u22ED","⊏̸":"\u228F\u0338","⋢":"\u22E2","⊐̸":"\u2290\u0338","⋣":"\u22E3","⊂⃒":"\u2282\u20D2","⊈":"\u2288","⊁":"\u2281","⪰̸":"\u2AB0\u0338","⋡":"\u22E1","≿̸":"\u227F\u0338","⊃⃒":"\u2283\u20D2","⊉":"\u2289","≁":"\u2241","≄":"\u2244","≇":"\u2247","≉":"\u2249","∤":"\u2224","𝒩":"\u{1D4A9}","Ñ":"\xD1","Ñ":"\xD1","Ν":"\u039D","Œ":"\u0152","Ó":"\xD3","Ó":"\xD3","Ô":"\xD4","Ô":"\xD4","О":"\u041E","Ő":"\u0150","𝔒":"\u{1D512}","Ò":"\xD2","Ò":"\xD2","Ō":"\u014C","Ω":"\u03A9","Ο":"\u039F","𝕆":"\u{1D546}","“":"\u201C","‘":"\u2018","⩔":"\u2A54","𝒪":"\u{1D4AA}","Ø":"\xD8","Ø":"\xD8","Õ":"\xD5","Õ":"\xD5","⨷":"\u2A37","Ö":"\xD6","Ö":"\xD6","‾":"\u203E","⏞":"\u23DE","⎴":"\u23B4","⏜":"\u23DC","∂":"\u2202","П":"\u041F","𝔓":"\u{1D513}","Φ":"\u03A6","Π":"\u03A0","±":"\xB1","ℌ":"\u210C","ℙ":"\u2119","⪻":"\u2ABB","≺":"\u227A","⪯":"\u2AAF","≼":"\u227C","≾":"\u227E","″":"\u2033","∏":"\u220F","∷":"\u2237","∝":"\u221D","𝒫":"\u{1D4AB}","Ψ":"\u03A8",""":'"',""":'"',"𝔔":"\u{1D514}","ℚ":"\u211A","𝒬":"\u{1D4AC}","⤐":"\u2910","®":"\xAE","®":"\xAE","Ŕ":"\u0154","⟫":"\u27EB","↠":"\u21A0","⤖":"\u2916","Ř":"\u0158","Ŗ":"\u0156","Р":"\u0420","ℜ":"\u211C","∋":"\u220B","⇋":"\u21CB","⥯":"\u296F","ℜ":"\u211C","Ρ":"\u03A1","⟩":"\u27E9","→":"\u2192","⇥":"\u21E5","⇄":"\u21C4","⌉":"\u2309","⟧":"\u27E7","⥝":"\u295D","⇂":"\u21C2","⥕":"\u2955","⌋":"\u230B","⊢":"\u22A2","↦":"\u21A6","⥛":"\u295B","⊳":"\u22B3","⧐":"\u29D0","⊵":"\u22B5","⥏":"\u294F","⥜":"\u295C","↾":"\u21BE","⥔":"\u2954","⇀":"\u21C0","⥓":"\u2953","⇒":"\u21D2","ℝ":"\u211D","⥰":"\u2970","⇛":"\u21DB","ℛ":"\u211B","↱":"\u21B1","⧴":"\u29F4","Щ":"\u0429","Ш":"\u0428","Ь":"\u042C","Ś":"\u015A","⪼":"\u2ABC","Š":"\u0160","Ş":"\u015E","Ŝ":"\u015C","С":"\u0421","𝔖":"\u{1D516}","↓":"\u2193","←":"\u2190","→":"\u2192","↑":"\u2191","Σ":"\u03A3","∘":"\u2218","𝕊":"\u{1D54A}","√":"\u221A","□":"\u25A1","⊓":"\u2293","⊏":"\u228F","⊑":"\u2291","⊐":"\u2290","⊒":"\u2292","⊔":"\u2294","𝒮":"\u{1D4AE}","⋆":"\u22C6","⋐":"\u22D0","⋐":"\u22D0","⊆":"\u2286","≻":"\u227B","⪰":"\u2AB0","≽":"\u227D","≿":"\u227F","∋":"\u220B","∑":"\u2211","⋑":"\u22D1","⊃":"\u2283","⊇":"\u2287","⋑":"\u22D1","Þ":"\xDE","Þ":"\xDE","™":"\u2122","Ћ":"\u040B","Ц":"\u0426"," ":" ","Τ":"\u03A4","Ť":"\u0164","Ţ":"\u0162","Т":"\u0422","𝔗":"\u{1D517}","∴":"\u2234","Θ":"\u0398","  ":"\u205F\u200A"," ":"\u2009","∼":"\u223C","≃":"\u2243","≅":"\u2245","≈":"\u2248","𝕋":"\u{1D54B}","⃛":"\u20DB","𝒯":"\u{1D4AF}","Ŧ":"\u0166","Ú":"\xDA","Ú":"\xDA","↟":"\u219F","⥉":"\u2949","Ў":"\u040E","Ŭ":"\u016C","Û":"\xDB","Û":"\xDB","У":"\u0423","Ű":"\u0170","𝔘":"\u{1D518}","Ù":"\xD9","Ù":"\xD9","Ū":"\u016A","_":"_","⏟":"\u23DF","⎵":"\u23B5","⏝":"\u23DD","⋃":"\u22C3","⊎":"\u228E","Ų":"\u0172","𝕌":"\u{1D54C}","↑":"\u2191","⤒":"\u2912","⇅":"\u21C5","↕":"\u2195","⥮":"\u296E","⊥":"\u22A5","↥":"\u21A5","⇑":"\u21D1","⇕":"\u21D5","↖":"\u2196","↗":"\u2197","ϒ":"\u03D2","Υ":"\u03A5","Ů":"\u016E","𝒰":"\u{1D4B0}","Ũ":"\u0168","Ü":"\xDC","Ü":"\xDC","⊫":"\u22AB","⫫":"\u2AEB","В":"\u0412","⊩":"\u22A9","⫦":"\u2AE6","⋁":"\u22C1","‖":"\u2016","‖":"\u2016","∣":"\u2223","|":"|","❘":"\u2758","≀":"\u2240"," ":"\u200A","𝔙":"\u{1D519}","𝕍":"\u{1D54D}","𝒱":"\u{1D4B1}","⊪":"\u22AA","Ŵ":"\u0174","⋀":"\u22C0","𝔚":"\u{1D51A}","𝕎":"\u{1D54E}","𝒲":"\u{1D4B2}","𝔛":"\u{1D51B}","Ξ":"\u039E","𝕏":"\u{1D54F}","𝒳":"\u{1D4B3}","Я":"\u042F","Ї":"\u0407","Ю":"\u042E","Ý":"\xDD","Ý":"\xDD","Ŷ":"\u0176","Ы":"\u042B","𝔜":"\u{1D51C}","𝕐":"\u{1D550}","𝒴":"\u{1D4B4}","Ÿ":"\u0178","Ж":"\u0416","Ź":"\u0179","Ž":"\u017D","З":"\u0417","Ż":"\u017B","​":"\u200B","Ζ":"\u0396","ℨ":"\u2128","ℤ":"\u2124","𝒵":"\u{1D4B5}","á":"\xE1","á":"\xE1","ă":"\u0103","∾":"\u223E","∾̳":"\u223E\u0333","∿":"\u223F","â":"\xE2","â":"\xE2","´":"\xB4","´":"\xB4","а":"\u0430","æ":"\xE6","æ":"\xE6","⁡":"\u2061","𝔞":"\u{1D51E}","à":"\xE0","à":"\xE0","ℵ":"\u2135","ℵ":"\u2135","α":"\u03B1","ā":"\u0101","⨿":"\u2A3F","&":"&","&":"&","∧":"\u2227","⩕":"\u2A55","⩜":"\u2A5C","⩘":"\u2A58","⩚":"\u2A5A","∠":"\u2220","⦤":"\u29A4","∠":"\u2220","∡":"\u2221","⦨":"\u29A8","⦩":"\u29A9","⦪":"\u29AA","⦫":"\u29AB","⦬":"\u29AC","⦭":"\u29AD","⦮":"\u29AE","⦯":"\u29AF","∟":"\u221F","⊾":"\u22BE","⦝":"\u299D","∢":"\u2222","Å":"\xC5","⍼":"\u237C","ą":"\u0105","𝕒":"\u{1D552}","≈":"\u2248","⩰":"\u2A70","⩯":"\u2A6F","≊":"\u224A","≋":"\u224B","'":"'","≈":"\u2248","≊":"\u224A","å":"\xE5","å":"\xE5","𝒶":"\u{1D4B6}","*":"*","≈":"\u2248","≍":"\u224D","ã":"\xE3","ã":"\xE3","ä":"\xE4","ä":"\xE4","∳":"\u2233","⨑":"\u2A11","⫭":"\u2AED","≌":"\u224C","϶":"\u03F6","‵":"\u2035","∽":"\u223D","⋍":"\u22CD","⊽":"\u22BD","⌅":"\u2305","⌅":"\u2305","⎵":"\u23B5","⎶":"\u23B6","≌":"\u224C","б":"\u0431","„":"\u201E","∵":"\u2235","∵":"\u2235","⦰":"\u29B0","϶":"\u03F6","ℬ":"\u212C","β":"\u03B2","ℶ":"\u2136","≬":"\u226C","𝔟":"\u{1D51F}","⋂":"\u22C2","◯":"\u25EF","⋃":"\u22C3","⨀":"\u2A00","⨁":"\u2A01","⨂":"\u2A02","⨆":"\u2A06","★":"\u2605","▽":"\u25BD","△":"\u25B3","⨄":"\u2A04","⋁":"\u22C1","⋀":"\u22C0","⤍":"\u290D","⧫":"\u29EB","▪":"\u25AA","▴":"\u25B4","▾":"\u25BE","◂":"\u25C2","▸":"\u25B8","␣":"\u2423","▒":"\u2592","░":"\u2591","▓":"\u2593","█":"\u2588","=⃥":"=\u20E5","≡⃥":"\u2261\u20E5","⌐":"\u2310","𝕓":"\u{1D553}","⊥":"\u22A5","⊥":"\u22A5","⋈":"\u22C8","╗":"\u2557","╔":"\u2554","╖":"\u2556","╓":"\u2553","═":"\u2550","╦":"\u2566","╩":"\u2569","╤":"\u2564","╧":"\u2567","╝":"\u255D","╚":"\u255A","╜":"\u255C","╙":"\u2559","║":"\u2551","╬":"\u256C","╣":"\u2563","╠":"\u2560","╫":"\u256B","╢":"\u2562","╟":"\u255F","⧉":"\u29C9","╕":"\u2555","╒":"\u2552","┐":"\u2510","┌":"\u250C","─":"\u2500","╥":"\u2565","╨":"\u2568","┬":"\u252C","┴":"\u2534","⊟":"\u229F","⊞":"\u229E","⊠":"\u22A0","╛":"\u255B","╘":"\u2558","┘":"\u2518","└":"\u2514","│":"\u2502","╪":"\u256A","╡":"\u2561","╞":"\u255E","┼":"\u253C","┤":"\u2524","├":"\u251C","‵":"\u2035","˘":"\u02D8","¦":"\xA6","¦":"\xA6","𝒷":"\u{1D4B7}","⁏":"\u204F","∽":"\u223D","⋍":"\u22CD","\":"\\","⧅":"\u29C5","⟈":"\u27C8","•":"\u2022","•":"\u2022","≎":"\u224E","⪮":"\u2AAE","≏":"\u224F","≏":"\u224F","ć":"\u0107","∩":"\u2229","⩄":"\u2A44","⩉":"\u2A49","⩋":"\u2A4B","⩇":"\u2A47","⩀":"\u2A40","∩︀":"\u2229\uFE00","⁁":"\u2041","ˇ":"\u02C7","⩍":"\u2A4D","č":"\u010D","ç":"\xE7","ç":"\xE7","ĉ":"\u0109","⩌":"\u2A4C","⩐":"\u2A50","ċ":"\u010B","¸":"\xB8","¸":"\xB8","⦲":"\u29B2","¢":"\xA2","¢":"\xA2","·":"\xB7","𝔠":"\u{1D520}","ч":"\u0447","✓":"\u2713","✓":"\u2713","χ":"\u03C7","○":"\u25CB","⧃":"\u29C3","ˆ":"\u02C6","≗":"\u2257","↺":"\u21BA","↻":"\u21BB","®":"\xAE","Ⓢ":"\u24C8","⊛":"\u229B","⊚":"\u229A","⊝":"\u229D","≗":"\u2257","⨐":"\u2A10","⫯":"\u2AEF","⧂":"\u29C2","♣":"\u2663","♣":"\u2663",":":":","≔":"\u2254","≔":"\u2254",",":",","@":"@","∁":"\u2201","∘":"\u2218","∁":"\u2201","ℂ":"\u2102","≅":"\u2245","⩭":"\u2A6D","∮":"\u222E","𝕔":"\u{1D554}","∐":"\u2210","©":"\xA9","©":"\xA9","℗":"\u2117","↵":"\u21B5","✗":"\u2717","𝒸":"\u{1D4B8}","⫏":"\u2ACF","⫑":"\u2AD1","⫐":"\u2AD0","⫒":"\u2AD2","⋯":"\u22EF","⤸":"\u2938","⤵":"\u2935","⋞":"\u22DE","⋟":"\u22DF","↶":"\u21B6","⤽":"\u293D","∪":"\u222A","⩈":"\u2A48","⩆":"\u2A46","⩊":"\u2A4A","⊍":"\u228D","⩅":"\u2A45","∪︀":"\u222A\uFE00","↷":"\u21B7","⤼":"\u293C","⋞":"\u22DE","⋟":"\u22DF","⋎":"\u22CE","⋏":"\u22CF","¤":"\xA4","¤":"\xA4","↶":"\u21B6","↷":"\u21B7","⋎":"\u22CE","⋏":"\u22CF","∲":"\u2232","∱":"\u2231","⌭":"\u232D","⇓":"\u21D3","⥥":"\u2965","†":"\u2020","ℸ":"\u2138","↓":"\u2193","‐":"\u2010","⊣":"\u22A3","⤏":"\u290F","˝":"\u02DD","ď":"\u010F","д":"\u0434","ⅆ":"\u2146","‡":"\u2021","⇊":"\u21CA","⩷":"\u2A77","°":"\xB0","°":"\xB0","δ":"\u03B4","⦱":"\u29B1","⥿":"\u297F","𝔡":"\u{1D521}","⇃":"\u21C3","⇂":"\u21C2","⋄":"\u22C4","⋄":"\u22C4","♦":"\u2666","♦":"\u2666","¨":"\xA8","ϝ":"\u03DD","⋲":"\u22F2","÷":"\xF7","÷":"\xF7","÷":"\xF7","⋇":"\u22C7","⋇":"\u22C7","ђ":"\u0452","⌞":"\u231E","⌍":"\u230D","$":"$","𝕕":"\u{1D555}","˙":"\u02D9","≐":"\u2250","≑":"\u2251","∸":"\u2238","∔":"\u2214","⊡":"\u22A1","⌆":"\u2306","↓":"\u2193","⇊":"\u21CA","⇃":"\u21C3","⇂":"\u21C2","⤐":"\u2910","⌟":"\u231F","⌌":"\u230C","𝒹":"\u{1D4B9}","ѕ":"\u0455","⧶":"\u29F6","đ":"\u0111","⋱":"\u22F1","▿":"\u25BF","▾":"\u25BE","⇵":"\u21F5","⥯":"\u296F","⦦":"\u29A6","џ":"\u045F","⟿":"\u27FF","⩷":"\u2A77","≑":"\u2251","é":"\xE9","é":"\xE9","⩮":"\u2A6E","ě":"\u011B","≖":"\u2256","ê":"\xEA","ê":"\xEA","≕":"\u2255","э":"\u044D","ė":"\u0117","ⅇ":"\u2147","≒":"\u2252","𝔢":"\u{1D522}","⪚":"\u2A9A","è":"\xE8","è":"\xE8","⪖":"\u2A96","⪘":"\u2A98","⪙":"\u2A99","⏧":"\u23E7","ℓ":"\u2113","⪕":"\u2A95","⪗":"\u2A97","ē":"\u0113","∅":"\u2205","∅":"\u2205","∅":"\u2205"," ":"\u2004"," ":"\u2005"," ":"\u2003","ŋ":"\u014B"," ":"\u2002","ę":"\u0119","𝕖":"\u{1D556}","⋕":"\u22D5","⧣":"\u29E3","⩱":"\u2A71","ε":"\u03B5","ε":"\u03B5","ϵ":"\u03F5","≖":"\u2256","≕":"\u2255","≂":"\u2242","⪖":"\u2A96","⪕":"\u2A95","=":"=","≟":"\u225F","≡":"\u2261","⩸":"\u2A78","⧥":"\u29E5","≓":"\u2253","⥱":"\u2971","ℯ":"\u212F","≐":"\u2250","≂":"\u2242","η":"\u03B7","ð":"\xF0","ð":"\xF0","ë":"\xEB","ë":"\xEB","€":"\u20AC","!":"!","∃":"\u2203","ℰ":"\u2130","ⅇ":"\u2147","≒":"\u2252","ф":"\u0444","♀":"\u2640","ffi":"\uFB03","ff":"\uFB00","ffl":"\uFB04","𝔣":"\u{1D523}","fi":"\uFB01","fj":"fj","♭":"\u266D","fl":"\uFB02","▱":"\u25B1","ƒ":"\u0192","𝕗":"\u{1D557}","∀":"\u2200","⋔":"\u22D4","⫙":"\u2AD9","⨍":"\u2A0D","½":"\xBD","½":"\xBD","⅓":"\u2153","¼":"\xBC","¼":"\xBC","⅕":"\u2155","⅙":"\u2159","⅛":"\u215B","⅔":"\u2154","⅖":"\u2156","¾":"\xBE","¾":"\xBE","⅗":"\u2157","⅜":"\u215C","⅘":"\u2158","⅚":"\u215A","⅝":"\u215D","⅞":"\u215E","⁄":"\u2044","⌢":"\u2322","𝒻":"\u{1D4BB}","≧":"\u2267","⪌":"\u2A8C","ǵ":"\u01F5","γ":"\u03B3","ϝ":"\u03DD","⪆":"\u2A86","ğ":"\u011F","ĝ":"\u011D","г":"\u0433","ġ":"\u0121","≥":"\u2265","⋛":"\u22DB","≥":"\u2265","≧":"\u2267","⩾":"\u2A7E","⩾":"\u2A7E","⪩":"\u2AA9","⪀":"\u2A80","⪂":"\u2A82","⪄":"\u2A84","⋛︀":"\u22DB\uFE00","⪔":"\u2A94","𝔤":"\u{1D524}","≫":"\u226B","⋙":"\u22D9","ℷ":"\u2137","ѓ":"\u0453","≷":"\u2277","⪒":"\u2A92","⪥":"\u2AA5","⪤":"\u2AA4","≩":"\u2269","⪊":"\u2A8A","⪊":"\u2A8A","⪈":"\u2A88","⪈":"\u2A88","≩":"\u2269","⋧":"\u22E7","𝕘":"\u{1D558}","`":"`","ℊ":"\u210A","≳":"\u2273","⪎":"\u2A8E","⪐":"\u2A90",">":">",">":">","⪧":"\u2AA7","⩺":"\u2A7A","⋗":"\u22D7","⦕":"\u2995","⩼":"\u2A7C","⪆":"\u2A86","⥸":"\u2978","⋗":"\u22D7","⋛":"\u22DB","⪌":"\u2A8C","≷":"\u2277","≳":"\u2273","≩︀":"\u2269\uFE00","≩︀":"\u2269\uFE00","⇔":"\u21D4"," ":"\u200A","½":"\xBD","ℋ":"\u210B","ъ":"\u044A","↔":"\u2194","⥈":"\u2948","↭":"\u21AD","ℏ":"\u210F","ĥ":"\u0125","♥":"\u2665","♥":"\u2665","…":"\u2026","⊹":"\u22B9","𝔥":"\u{1D525}","⤥":"\u2925","⤦":"\u2926","⇿":"\u21FF","∻":"\u223B","↩":"\u21A9","↪":"\u21AA","𝕙":"\u{1D559}","―":"\u2015","𝒽":"\u{1D4BD}","ℏ":"\u210F","ħ":"\u0127","⁃":"\u2043","‐":"\u2010","í":"\xED","í":"\xED","⁣":"\u2063","î":"\xEE","î":"\xEE","и":"\u0438","е":"\u0435","¡":"\xA1","¡":"\xA1","⇔":"\u21D4","𝔦":"\u{1D526}","ì":"\xEC","ì":"\xEC","ⅈ":"\u2148","⨌":"\u2A0C","∭":"\u222D","⧜":"\u29DC","℩":"\u2129","ij":"\u0133","ī":"\u012B","ℑ":"\u2111","ℐ":"\u2110","ℑ":"\u2111","ı":"\u0131","⊷":"\u22B7","Ƶ":"\u01B5","∈":"\u2208","℅":"\u2105","∞":"\u221E","⧝":"\u29DD","ı":"\u0131","∫":"\u222B","⊺":"\u22BA","ℤ":"\u2124","⊺":"\u22BA","⨗":"\u2A17","⨼":"\u2A3C","ё":"\u0451","į":"\u012F","𝕚":"\u{1D55A}","ι":"\u03B9","⨼":"\u2A3C","¿":"\xBF","¿":"\xBF","𝒾":"\u{1D4BE}","∈":"\u2208","⋹":"\u22F9","⋵":"\u22F5","⋴":"\u22F4","⋳":"\u22F3","∈":"\u2208","⁢":"\u2062","ĩ":"\u0129","і":"\u0456","ï":"\xEF","ï":"\xEF","ĵ":"\u0135","й":"\u0439","𝔧":"\u{1D527}","ȷ":"\u0237","𝕛":"\u{1D55B}","𝒿":"\u{1D4BF}","ј":"\u0458","є":"\u0454","κ":"\u03BA","ϰ":"\u03F0","ķ":"\u0137","к":"\u043A","𝔨":"\u{1D528}","ĸ":"\u0138","х":"\u0445","ќ":"\u045C","𝕜":"\u{1D55C}","𝓀":"\u{1D4C0}","⇚":"\u21DA","⇐":"\u21D0","⤛":"\u291B","⤎":"\u290E","≦":"\u2266","⪋":"\u2A8B","⥢":"\u2962","ĺ":"\u013A","⦴":"\u29B4","ℒ":"\u2112","λ":"\u03BB","⟨":"\u27E8","⦑":"\u2991","⟨":"\u27E8","⪅":"\u2A85","«":"\xAB","«":"\xAB","←":"\u2190","⇤":"\u21E4","⤟":"\u291F","⤝":"\u291D","↩":"\u21A9","↫":"\u21AB","⤹":"\u2939","⥳":"\u2973","↢":"\u21A2","⪫":"\u2AAB","⤙":"\u2919","⪭":"\u2AAD","⪭︀":"\u2AAD\uFE00","⤌":"\u290C","❲":"\u2772","{":"{","[":"[","⦋":"\u298B","⦏":"\u298F","⦍":"\u298D","ľ":"\u013E","ļ":"\u013C","⌈":"\u2308","{":"{","л":"\u043B","⤶":"\u2936","“":"\u201C","„":"\u201E","⥧":"\u2967","⥋":"\u294B","↲":"\u21B2","≤":"\u2264","←":"\u2190","↢":"\u21A2","↽":"\u21BD","↼":"\u21BC","⇇":"\u21C7","↔":"\u2194","⇆":"\u21C6","⇋":"\u21CB","↭":"\u21AD","⋋":"\u22CB","⋚":"\u22DA","≤":"\u2264","≦":"\u2266","⩽":"\u2A7D","⩽":"\u2A7D","⪨":"\u2AA8","⩿":"\u2A7F","⪁":"\u2A81","⪃":"\u2A83","⋚︀":"\u22DA\uFE00","⪓":"\u2A93","⪅":"\u2A85","⋖":"\u22D6","⋚":"\u22DA","⪋":"\u2A8B","≶":"\u2276","≲":"\u2272","⥼":"\u297C","⌊":"\u230A","𝔩":"\u{1D529}","≶":"\u2276","⪑":"\u2A91","↽":"\u21BD","↼":"\u21BC","⥪":"\u296A","▄":"\u2584","љ":"\u0459","≪":"\u226A","⇇":"\u21C7","⌞":"\u231E","⥫":"\u296B","◺":"\u25FA","ŀ":"\u0140","⎰":"\u23B0","⎰":"\u23B0","≨":"\u2268","⪉":"\u2A89","⪉":"\u2A89","⪇":"\u2A87","⪇":"\u2A87","≨":"\u2268","⋦":"\u22E6","⟬":"\u27EC","⇽":"\u21FD","⟦":"\u27E6","⟵":"\u27F5","⟷":"\u27F7","⟼":"\u27FC","⟶":"\u27F6","↫":"\u21AB","↬":"\u21AC","⦅":"\u2985","𝕝":"\u{1D55D}","⨭":"\u2A2D","⨴":"\u2A34","∗":"\u2217","_":"_","◊":"\u25CA","◊":"\u25CA","⧫":"\u29EB","(":"(","⦓":"\u2993","⇆":"\u21C6","⌟":"\u231F","⇋":"\u21CB","⥭":"\u296D","‎":"\u200E","⊿":"\u22BF","‹":"\u2039","𝓁":"\u{1D4C1}","↰":"\u21B0","≲":"\u2272","⪍":"\u2A8D","⪏":"\u2A8F","[":"[","‘":"\u2018","‚":"\u201A","ł":"\u0142","<":"<","<":"<","⪦":"\u2AA6","⩹":"\u2A79","⋖":"\u22D6","⋋":"\u22CB","⋉":"\u22C9","⥶":"\u2976","⩻":"\u2A7B","⦖":"\u2996","◃":"\u25C3","⊴":"\u22B4","◂":"\u25C2","⥊":"\u294A","⥦":"\u2966","≨︀":"\u2268\uFE00","≨︀":"\u2268\uFE00","∺":"\u223A","¯":"\xAF","¯":"\xAF","♂":"\u2642","✠":"\u2720","✠":"\u2720","↦":"\u21A6","↦":"\u21A6","↧":"\u21A7","↤":"\u21A4","↥":"\u21A5","▮":"\u25AE","⨩":"\u2A29","м":"\u043C","—":"\u2014","∡":"\u2221","𝔪":"\u{1D52A}","℧":"\u2127","µ":"\xB5","µ":"\xB5","∣":"\u2223","*":"*","⫰":"\u2AF0","·":"\xB7","·":"\xB7","−":"\u2212","⊟":"\u229F","∸":"\u2238","⨪":"\u2A2A","⫛":"\u2ADB","…":"\u2026","∓":"\u2213","⊧":"\u22A7","𝕞":"\u{1D55E}","∓":"\u2213","𝓂":"\u{1D4C2}","∾":"\u223E","μ":"\u03BC","⊸":"\u22B8","⊸":"\u22B8","⋙̸":"\u22D9\u0338","≫⃒":"\u226B\u20D2","≫̸":"\u226B\u0338","⇍":"\u21CD","⇎":"\u21CE","⋘̸":"\u22D8\u0338","≪⃒":"\u226A\u20D2","≪̸":"\u226A\u0338","⇏":"\u21CF","⊯":"\u22AF","⊮":"\u22AE","∇":"\u2207","ń":"\u0144","∠⃒":"\u2220\u20D2","≉":"\u2249","⩰̸":"\u2A70\u0338","≋̸":"\u224B\u0338","ʼn":"\u0149","≉":"\u2249","♮":"\u266E","♮":"\u266E","ℕ":"\u2115"," ":"\xA0"," ":"\xA0","≎̸":"\u224E\u0338","≏̸":"\u224F\u0338","⩃":"\u2A43","ň":"\u0148","ņ":"\u0146","≇":"\u2247","⩭̸":"\u2A6D\u0338","⩂":"\u2A42","н":"\u043D","–":"\u2013","≠":"\u2260","⇗":"\u21D7","⤤":"\u2924","↗":"\u2197","↗":"\u2197","≐̸":"\u2250\u0338","≢":"\u2262","⤨":"\u2928","≂̸":"\u2242\u0338","∄":"\u2204","∄":"\u2204","𝔫":"\u{1D52B}","≧̸":"\u2267\u0338","≱":"\u2271","≱":"\u2271","≧̸":"\u2267\u0338","⩾̸":"\u2A7E\u0338","⩾̸":"\u2A7E\u0338","≵":"\u2275","≯":"\u226F","≯":"\u226F","⇎":"\u21CE","↮":"\u21AE","⫲":"\u2AF2","∋":"\u220B","⋼":"\u22FC","⋺":"\u22FA","∋":"\u220B","њ":"\u045A","⇍":"\u21CD","≦̸":"\u2266\u0338","↚":"\u219A","‥":"\u2025","≰":"\u2270","↚":"\u219A","↮":"\u21AE","≰":"\u2270","≦̸":"\u2266\u0338","⩽̸":"\u2A7D\u0338","⩽̸":"\u2A7D\u0338","≮":"\u226E","≴":"\u2274","≮":"\u226E","⋪":"\u22EA","⋬":"\u22EC","∤":"\u2224","𝕟":"\u{1D55F}","¬":"\xAC","¬":"\xAC","∉":"\u2209","⋹̸":"\u22F9\u0338","⋵̸":"\u22F5\u0338","∉":"\u2209","⋷":"\u22F7","⋶":"\u22F6","∌":"\u220C","∌":"\u220C","⋾":"\u22FE","⋽":"\u22FD","∦":"\u2226","∦":"\u2226","⫽⃥":"\u2AFD\u20E5","∂̸":"\u2202\u0338","⨔":"\u2A14","⊀":"\u2280","⋠":"\u22E0","⪯̸":"\u2AAF\u0338","⊀":"\u2280","⪯̸":"\u2AAF\u0338","⇏":"\u21CF","↛":"\u219B","⤳̸":"\u2933\u0338","↝̸":"\u219D\u0338","↛":"\u219B","⋫":"\u22EB","⋭":"\u22ED","⊁":"\u2281","⋡":"\u22E1","⪰̸":"\u2AB0\u0338","𝓃":"\u{1D4C3}","∤":"\u2224","∦":"\u2226","≁":"\u2241","≄":"\u2244","≄":"\u2244","∤":"\u2224","∦":"\u2226","⋢":"\u22E2","⋣":"\u22E3","⊄":"\u2284","⫅̸":"\u2AC5\u0338","⊈":"\u2288","⊂⃒":"\u2282\u20D2","⊈":"\u2288","⫅̸":"\u2AC5\u0338","⊁":"\u2281","⪰̸":"\u2AB0\u0338","⊅":"\u2285","⫆̸":"\u2AC6\u0338","⊉":"\u2289","⊃⃒":"\u2283\u20D2","⊉":"\u2289","⫆̸":"\u2AC6\u0338","≹":"\u2279","ñ":"\xF1","ñ":"\xF1","≸":"\u2278","⋪":"\u22EA","⋬":"\u22EC","⋫":"\u22EB","⋭":"\u22ED","ν":"\u03BD","#":"#","№":"\u2116"," ":"\u2007","⊭":"\u22AD","⤄":"\u2904","≍⃒":"\u224D\u20D2","⊬":"\u22AC","≥⃒":"\u2265\u20D2",">⃒":">\u20D2","⧞":"\u29DE","⤂":"\u2902","≤⃒":"\u2264\u20D2","<⃒":"<\u20D2","⊴⃒":"\u22B4\u20D2","⤃":"\u2903","⊵⃒":"\u22B5\u20D2","∼⃒":"\u223C\u20D2","⇖":"\u21D6","⤣":"\u2923","↖":"\u2196","↖":"\u2196","⤧":"\u2927","Ⓢ":"\u24C8","ó":"\xF3","ó":"\xF3","⊛":"\u229B","⊚":"\u229A","ô":"\xF4","ô":"\xF4","о":"\u043E","⊝":"\u229D","ő":"\u0151","⨸":"\u2A38","⊙":"\u2299","⦼":"\u29BC","œ":"\u0153","⦿":"\u29BF","𝔬":"\u{1D52C}","˛":"\u02DB","ò":"\xF2","ò":"\xF2","⧁":"\u29C1","⦵":"\u29B5","Ω":"\u03A9","∮":"\u222E","↺":"\u21BA","⦾":"\u29BE","⦻":"\u29BB","‾":"\u203E","⧀":"\u29C0","ō":"\u014D","ω":"\u03C9","ο":"\u03BF","⦶":"\u29B6","⊖":"\u2296","𝕠":"\u{1D560}","⦷":"\u29B7","⦹":"\u29B9","⊕":"\u2295","∨":"\u2228","↻":"\u21BB","⩝":"\u2A5D","ℴ":"\u2134","ℴ":"\u2134","ª":"\xAA","ª":"\xAA","º":"\xBA","º":"\xBA","⊶":"\u22B6","⩖":"\u2A56","⩗":"\u2A57","⩛":"\u2A5B","ℴ":"\u2134","ø":"\xF8","ø":"\xF8","⊘":"\u2298","õ":"\xF5","õ":"\xF5","⊗":"\u2297","⨶":"\u2A36","ö":"\xF6","ö":"\xF6","⌽":"\u233D","∥":"\u2225","¶":"\xB6","¶":"\xB6","∥":"\u2225","⫳":"\u2AF3","⫽":"\u2AFD","∂":"\u2202","п":"\u043F","%":"%",".":".","‰":"\u2030","⊥":"\u22A5","‱":"\u2031","𝔭":"\u{1D52D}","φ":"\u03C6","ϕ":"\u03D5","ℳ":"\u2133","☎":"\u260E","π":"\u03C0","⋔":"\u22D4","ϖ":"\u03D6","ℏ":"\u210F","ℎ":"\u210E","ℏ":"\u210F","+":"+","⨣":"\u2A23","⊞":"\u229E","⨢":"\u2A22","∔":"\u2214","⨥":"\u2A25","⩲":"\u2A72","±":"\xB1","±":"\xB1","⨦":"\u2A26","⨧":"\u2A27","±":"\xB1","⨕":"\u2A15","𝕡":"\u{1D561}","£":"\xA3","£":"\xA3","≺":"\u227A","⪳":"\u2AB3","⪷":"\u2AB7","≼":"\u227C","⪯":"\u2AAF","≺":"\u227A","⪷":"\u2AB7","≼":"\u227C","⪯":"\u2AAF","⪹":"\u2AB9","⪵":"\u2AB5","⋨":"\u22E8","≾":"\u227E","′":"\u2032","ℙ":"\u2119","⪵":"\u2AB5","⪹":"\u2AB9","⋨":"\u22E8","∏":"\u220F","⌮":"\u232E","⌒":"\u2312","⌓":"\u2313","∝":"\u221D","∝":"\u221D","≾":"\u227E","⊰":"\u22B0","𝓅":"\u{1D4C5}","ψ":"\u03C8"," ":"\u2008","𝔮":"\u{1D52E}","⨌":"\u2A0C","𝕢":"\u{1D562}","⁗":"\u2057","𝓆":"\u{1D4C6}","ℍ":"\u210D","⨖":"\u2A16","?":"?","≟":"\u225F",""":'"',""":'"',"⇛":"\u21DB","⇒":"\u21D2","⤜":"\u291C","⤏":"\u290F","⥤":"\u2964","∽̱":"\u223D\u0331","ŕ":"\u0155","√":"\u221A","⦳":"\u29B3","⟩":"\u27E9","⦒":"\u2992","⦥":"\u29A5","⟩":"\u27E9","»":"\xBB","»":"\xBB","→":"\u2192","⥵":"\u2975","⇥":"\u21E5","⤠":"\u2920","⤳":"\u2933","⤞":"\u291E","↪":"\u21AA","↬":"\u21AC","⥅":"\u2945","⥴":"\u2974","↣":"\u21A3","↝":"\u219D","⤚":"\u291A","∶":"\u2236","ℚ":"\u211A","⤍":"\u290D","❳":"\u2773","}":"}","]":"]","⦌":"\u298C","⦎":"\u298E","⦐":"\u2990","ř":"\u0159","ŗ":"\u0157","⌉":"\u2309","}":"}","р":"\u0440","⤷":"\u2937","⥩":"\u2969","”":"\u201D","”":"\u201D","↳":"\u21B3","ℜ":"\u211C","ℛ":"\u211B","ℜ":"\u211C","ℝ":"\u211D","▭":"\u25AD","®":"\xAE","®":"\xAE","⥽":"\u297D","⌋":"\u230B","𝔯":"\u{1D52F}","⇁":"\u21C1","⇀":"\u21C0","⥬":"\u296C","ρ":"\u03C1","ϱ":"\u03F1","→":"\u2192","↣":"\u21A3","⇁":"\u21C1","⇀":"\u21C0","⇄":"\u21C4","⇌":"\u21CC","⇉":"\u21C9","↝":"\u219D","⋌":"\u22CC","˚":"\u02DA","≓":"\u2253","⇄":"\u21C4","⇌":"\u21CC","‏":"\u200F","⎱":"\u23B1","⎱":"\u23B1","⫮":"\u2AEE","⟭":"\u27ED","⇾":"\u21FE","⟧":"\u27E7","⦆":"\u2986","𝕣":"\u{1D563}","⨮":"\u2A2E","⨵":"\u2A35",")":")","⦔":"\u2994","⨒":"\u2A12","⇉":"\u21C9","›":"\u203A","𝓇":"\u{1D4C7}","↱":"\u21B1","]":"]","’":"\u2019","’":"\u2019","⋌":"\u22CC","⋊":"\u22CA","▹":"\u25B9","⊵":"\u22B5","▸":"\u25B8","⧎":"\u29CE","⥨":"\u2968","℞":"\u211E","ś":"\u015B","‚":"\u201A","≻":"\u227B","⪴":"\u2AB4","⪸":"\u2AB8","š":"\u0161","≽":"\u227D","⪰":"\u2AB0","ş":"\u015F","ŝ":"\u015D","⪶":"\u2AB6","⪺":"\u2ABA","⋩":"\u22E9","⨓":"\u2A13","≿":"\u227F","с":"\u0441","⋅":"\u22C5","⊡":"\u22A1","⩦":"\u2A66","⇘":"\u21D8","⤥":"\u2925","↘":"\u2198","↘":"\u2198","§":"\xA7","§":"\xA7",";":";","⤩":"\u2929","∖":"\u2216","∖":"\u2216","✶":"\u2736","𝔰":"\u{1D530}","⌢":"\u2322","♯":"\u266F","щ":"\u0449","ш":"\u0448","∣":"\u2223","∥":"\u2225","­":"\xAD","­":"\xAD","σ":"\u03C3","ς":"\u03C2","ς":"\u03C2","∼":"\u223C","⩪":"\u2A6A","≃":"\u2243","≃":"\u2243","⪞":"\u2A9E","⪠":"\u2AA0","⪝":"\u2A9D","⪟":"\u2A9F","≆":"\u2246","⨤":"\u2A24","⥲":"\u2972","←":"\u2190","∖":"\u2216","⨳":"\u2A33","⧤":"\u29E4","∣":"\u2223","⌣":"\u2323","⪪":"\u2AAA","⪬":"\u2AAC","⪬︀":"\u2AAC\uFE00","ь":"\u044C","/":"/","⧄":"\u29C4","⌿":"\u233F","𝕤":"\u{1D564}","♠":"\u2660","♠":"\u2660","∥":"\u2225","⊓":"\u2293","⊓︀":"\u2293\uFE00","⊔":"\u2294","⊔︀":"\u2294\uFE00","⊏":"\u228F","⊑":"\u2291","⊏":"\u228F","⊑":"\u2291","⊐":"\u2290","⊒":"\u2292","⊐":"\u2290","⊒":"\u2292","□":"\u25A1","□":"\u25A1","▪":"\u25AA","▪":"\u25AA","→":"\u2192","𝓈":"\u{1D4C8}","∖":"\u2216","⌣":"\u2323","⋆":"\u22C6","☆":"\u2606","★":"\u2605","ϵ":"\u03F5","ϕ":"\u03D5","¯":"\xAF","⊂":"\u2282","⫅":"\u2AC5","⪽":"\u2ABD","⊆":"\u2286","⫃":"\u2AC3","⫁":"\u2AC1","⫋":"\u2ACB","⊊":"\u228A","⪿":"\u2ABF","⥹":"\u2979","⊂":"\u2282","⊆":"\u2286","⫅":"\u2AC5","⊊":"\u228A","⫋":"\u2ACB","⫇":"\u2AC7","⫕":"\u2AD5","⫓":"\u2AD3","≻":"\u227B","⪸":"\u2AB8","≽":"\u227D","⪰":"\u2AB0","⪺":"\u2ABA","⪶":"\u2AB6","⋩":"\u22E9","≿":"\u227F","∑":"\u2211","♪":"\u266A","¹":"\xB9","¹":"\xB9","²":"\xB2","²":"\xB2","³":"\xB3","³":"\xB3","⊃":"\u2283","⫆":"\u2AC6","⪾":"\u2ABE","⫘":"\u2AD8","⊇":"\u2287","⫄":"\u2AC4","⟉":"\u27C9","⫗":"\u2AD7","⥻":"\u297B","⫂":"\u2AC2","⫌":"\u2ACC","⊋":"\u228B","⫀":"\u2AC0","⊃":"\u2283","⊇":"\u2287","⫆":"\u2AC6","⊋":"\u228B","⫌":"\u2ACC","⫈":"\u2AC8","⫔":"\u2AD4","⫖":"\u2AD6","⇙":"\u21D9","⤦":"\u2926","↙":"\u2199","↙":"\u2199","⤪":"\u292A","ß":"\xDF","ß":"\xDF","⌖":"\u2316","τ":"\u03C4","⎴":"\u23B4","ť":"\u0165","ţ":"\u0163","т":"\u0442","⃛":"\u20DB","⌕":"\u2315","𝔱":"\u{1D531}","∴":"\u2234","∴":"\u2234","θ":"\u03B8","ϑ":"\u03D1","ϑ":"\u03D1","≈":"\u2248","∼":"\u223C"," ":"\u2009","≈":"\u2248","∼":"\u223C","þ":"\xFE","þ":"\xFE","˜":"\u02DC","×":"\xD7","×":"\xD7","⊠":"\u22A0","⨱":"\u2A31","⨰":"\u2A30","∭":"\u222D","⤨":"\u2928","⊤":"\u22A4","⌶":"\u2336","⫱":"\u2AF1","𝕥":"\u{1D565}","⫚":"\u2ADA","⤩":"\u2929","‴":"\u2034","™":"\u2122","▵":"\u25B5","▿":"\u25BF","◃":"\u25C3","⊴":"\u22B4","≜":"\u225C","▹":"\u25B9","⊵":"\u22B5","◬":"\u25EC","≜":"\u225C","⨺":"\u2A3A","⨹":"\u2A39","⧍":"\u29CD","⨻":"\u2A3B","⏢":"\u23E2","𝓉":"\u{1D4C9}","ц":"\u0446","ћ":"\u045B","ŧ":"\u0167","≬":"\u226C","↞":"\u219E","↠":"\u21A0","⇑":"\u21D1","⥣":"\u2963","ú":"\xFA","ú":"\xFA","↑":"\u2191","ў":"\u045E","ŭ":"\u016D","û":"\xFB","û":"\xFB","у":"\u0443","⇅":"\u21C5","ű":"\u0171","⥮":"\u296E","⥾":"\u297E","𝔲":"\u{1D532}","ù":"\xF9","ù":"\xF9","↿":"\u21BF","↾":"\u21BE","▀":"\u2580","⌜":"\u231C","⌜":"\u231C","⌏":"\u230F","◸":"\u25F8","ū":"\u016B","¨":"\xA8","¨":"\xA8","ų":"\u0173","𝕦":"\u{1D566}","↑":"\u2191","↕":"\u2195","↿":"\u21BF","↾":"\u21BE","⊎":"\u228E","υ":"\u03C5","ϒ":"\u03D2","υ":"\u03C5","⇈":"\u21C8","⌝":"\u231D","⌝":"\u231D","⌎":"\u230E","ů":"\u016F","◹":"\u25F9","𝓊":"\u{1D4CA}","⋰":"\u22F0","ũ":"\u0169","▵":"\u25B5","▴":"\u25B4","⇈":"\u21C8","ü":"\xFC","ü":"\xFC","⦧":"\u29A7","⇕":"\u21D5","⫨":"\u2AE8","⫩":"\u2AE9","⊨":"\u22A8","⦜":"\u299C","ϵ":"\u03F5","ϰ":"\u03F0","∅":"\u2205","ϕ":"\u03D5","ϖ":"\u03D6","∝":"\u221D","↕":"\u2195","ϱ":"\u03F1","ς":"\u03C2","⊊︀":"\u228A\uFE00","⫋︀":"\u2ACB\uFE00","⊋︀":"\u228B\uFE00","⫌︀":"\u2ACC\uFE00","ϑ":"\u03D1","⊲":"\u22B2","⊳":"\u22B3","в":"\u0432","⊢":"\u22A2","∨":"\u2228","⊻":"\u22BB","≚":"\u225A","⋮":"\u22EE","|":"|","|":"|","𝔳":"\u{1D533}","⊲":"\u22B2","⊂⃒":"\u2282\u20D2","⊃⃒":"\u2283\u20D2","𝕧":"\u{1D567}","∝":"\u221D","⊳":"\u22B3","𝓋":"\u{1D4CB}","⫋︀":"\u2ACB\uFE00","⊊︀":"\u228A\uFE00","⫌︀":"\u2ACC\uFE00","⊋︀":"\u228B\uFE00","⦚":"\u299A","ŵ":"\u0175","⩟":"\u2A5F","∧":"\u2227","≙":"\u2259","℘":"\u2118","𝔴":"\u{1D534}","𝕨":"\u{1D568}","℘":"\u2118","≀":"\u2240","≀":"\u2240","𝓌":"\u{1D4CC}","⋂":"\u22C2","◯":"\u25EF","⋃":"\u22C3","▽":"\u25BD","𝔵":"\u{1D535}","⟺":"\u27FA","⟷":"\u27F7","ξ":"\u03BE","⟸":"\u27F8","⟵":"\u27F5","⟼":"\u27FC","⋻":"\u22FB","⨀":"\u2A00","𝕩":"\u{1D569}","⨁":"\u2A01","⨂":"\u2A02","⟹":"\u27F9","⟶":"\u27F6","𝓍":"\u{1D4CD}","⨆":"\u2A06","⨄":"\u2A04","△":"\u25B3","⋁":"\u22C1","⋀":"\u22C0","ý":"\xFD","ý":"\xFD","я":"\u044F","ŷ":"\u0177","ы":"\u044B","¥":"\xA5","¥":"\xA5","𝔶":"\u{1D536}","ї":"\u0457","𝕪":"\u{1D56A}","𝓎":"\u{1D4CE}","ю":"\u044E","ÿ":"\xFF","ÿ":"\xFF","ź":"\u017A","ž":"\u017E","з":"\u0437","ż":"\u017C","ℨ":"\u2128","ζ":"\u03B6","𝔷":"\u{1D537}","ж":"\u0436","⇝":"\u21DD","𝕫":"\u{1D56B}","𝓏":"\u{1D4CF}","‍":"\u200D","‌":"\u200C"},characters:{\u00C6:"Æ","&":"&",\u00C1:"Á",\u0102:"Ă",\u00C2:"Â",\u0410:"А","\u{1D504}":"𝔄",\u00C0:"À",\u0391:"Α",\u0100:"Ā","\u2A53":"⩓",\u0104:"Ą","\u{1D538}":"𝔸","\u2061":"⁡",\u00C5:"Å","\u{1D49C}":"𝒜","\u2254":"≔",\u00C3:"Ã",\u00C4:"Ä","\u2216":"∖","\u2AE7":"⫧","\u2306":"⌆",\u0411:"Б","\u2235":"∵",\u212C:"ℬ",\u0392:"Β","\u{1D505}":"𝔅","\u{1D539}":"𝔹","\u02D8":"˘","\u224E":"≎",\u0427:"Ч","\xA9":"©",\u0106:"Ć","\u22D2":"⋒","\u2145":"ⅅ",\u212D:"ℭ",\u010C:"Č",\u00C7:"Ç",\u0108:"Ĉ","\u2230":"∰",\u010A:"Ċ","\xB8":"¸","\xB7":"·",\u03A7:"Χ","\u2299":"⊙","\u2296":"⊖","\u2295":"⊕","\u2297":"⊗","\u2232":"∲","\u201D":"”","\u2019":"’","\u2237":"∷","\u2A74":"⩴","\u2261":"≡","\u222F":"∯","\u222E":"∮",\u2102:"ℂ","\u2210":"∐","\u2233":"∳","\u2A2F":"⨯","\u{1D49E}":"𝒞","\u22D3":"⋓","\u224D":"≍","\u2911":"⤑",\u0402:"Ђ",\u0405:"Ѕ",\u040F:"Џ","\u2021":"‡","\u21A1":"↡","\u2AE4":"⫤",\u010E:"Ď",\u0414:"Д","\u2207":"∇",\u0394:"Δ","\u{1D507}":"𝔇","\xB4":"´","\u02D9":"˙","\u02DD":"˝","`":"`","\u02DC":"˜","\u22C4":"⋄","\u2146":"ⅆ","\u{1D53B}":"𝔻","\xA8":"¨","\u20DC":"⃜","\u2250":"≐","\u21D3":"⇓","\u21D0":"⇐","\u21D4":"⇔","\u27F8":"⟸","\u27FA":"⟺","\u27F9":"⟹","\u21D2":"⇒","\u22A8":"⊨","\u21D1":"⇑","\u21D5":"⇕","\u2225":"∥","\u2193":"↓","\u2913":"⤓","\u21F5":"⇵","\u0311":"̑","\u2950":"⥐","\u295E":"⥞","\u21BD":"↽","\u2956":"⥖","\u295F":"⥟","\u21C1":"⇁","\u2957":"⥗","\u22A4":"⊤","\u21A7":"↧","\u{1D49F}":"𝒟",\u0110:"Đ",\u014A:"Ŋ",\u00D0:"Ð",\u00C9:"É",\u011A:"Ě",\u00CA:"Ê",\u042D:"Э",\u0116:"Ė","\u{1D508}":"𝔈",\u00C8:"È","\u2208":"∈",\u0112:"Ē","\u25FB":"◻","\u25AB":"▫",\u0118:"Ę","\u{1D53C}":"𝔼",\u0395:"Ε","\u2A75":"⩵","\u2242":"≂","\u21CC":"⇌",\u2130:"ℰ","\u2A73":"⩳",\u0397:"Η",\u00CB:"Ë","\u2203":"∃","\u2147":"ⅇ",\u0424:"Ф","\u{1D509}":"𝔉","\u25FC":"◼","\u25AA":"▪","\u{1D53D}":"𝔽","\u2200":"∀",\u2131:"ℱ",\u0403:"Ѓ",">":">",\u0393:"Γ",\u03DC:"Ϝ",\u011E:"Ğ",\u0122:"Ģ",\u011C:"Ĝ",\u0413:"Г",\u0120:"Ġ","\u{1D50A}":"𝔊","\u22D9":"⋙","\u{1D53E}":"𝔾","\u2265":"≥","\u22DB":"⋛","\u2267":"≧","\u2AA2":"⪢","\u2277":"≷","\u2A7E":"⩾","\u2273":"≳","\u{1D4A2}":"𝒢","\u226B":"≫",\u042A:"Ъ","\u02C7":"ˇ","^":"^",\u0124:"Ĥ",\u210C:"ℌ",\u210B:"ℋ",\u210D:"ℍ","\u2500":"─",\u0126:"Ħ","\u224F":"≏",\u0415:"Е",\u0132:"IJ",\u0401:"Ё",\u00CD:"Í",\u00CE:"Î",\u0418:"И",\u0130:"İ",\u2111:"ℑ",\u00CC:"Ì",\u012A:"Ī","\u2148":"ⅈ","\u222C":"∬","\u222B":"∫","\u22C2":"⋂","\u2063":"⁣","\u2062":"⁢",\u012E:"Į","\u{1D540}":"𝕀",\u0399:"Ι",\u2110:"ℐ",\u0128:"Ĩ",\u0406:"І",\u00CF:"Ï",\u0134:"Ĵ",\u0419:"Й","\u{1D50D}":"𝔍","\u{1D541}":"𝕁","\u{1D4A5}":"𝒥",\u0408:"Ј",\u0404:"Є",\u0425:"Х",\u040C:"Ќ",\u039A:"Κ",\u0136:"Ķ",\u041A:"К","\u{1D50E}":"𝔎","\u{1D542}":"𝕂","\u{1D4A6}":"𝒦",\u0409:"Љ","<":"<",\u0139:"Ĺ",\u039B:"Λ","\u27EA":"⟪",\u2112:"ℒ","\u219E":"↞",\u013D:"Ľ",\u013B:"Ļ",\u041B:"Л","\u27E8":"⟨","\u2190":"←","\u21E4":"⇤","\u21C6":"⇆","\u2308":"⌈","\u27E6":"⟦","\u2961":"⥡","\u21C3":"⇃","\u2959":"⥙","\u230A":"⌊","\u2194":"↔","\u294E":"⥎","\u22A3":"⊣","\u21A4":"↤","\u295A":"⥚","\u22B2":"⊲","\u29CF":"⧏","\u22B4":"⊴","\u2951":"⥑","\u2960":"⥠","\u21BF":"↿","\u2958":"⥘","\u21BC":"↼","\u2952":"⥒","\u22DA":"⋚","\u2266":"≦","\u2276":"≶","\u2AA1":"⪡","\u2A7D":"⩽","\u2272":"≲","\u{1D50F}":"𝔏","\u22D8":"⋘","\u21DA":"⇚",\u013F:"Ŀ","\u27F5":"⟵","\u27F7":"⟷","\u27F6":"⟶","\u{1D543}":"𝕃","\u2199":"↙","\u2198":"↘","\u21B0":"↰",\u0141:"Ł","\u226A":"≪","\u2905":"⤅",\u041C:"М","\u205F":" ",\u2133:"ℳ","\u{1D510}":"𝔐","\u2213":"∓","\u{1D544}":"𝕄",\u039C:"Μ",\u040A:"Њ",\u0143:"Ń",\u0147:"Ň",\u0145:"Ņ",\u041D:"Н","\u200B":"​","\n":" ","\u{1D511}":"𝔑","\u2060":"⁠","\xA0":" ",\u2115:"ℕ","\u2AEC":"⫬","\u2262":"≢","\u226D":"≭","\u2226":"∦","\u2209":"∉","\u2260":"≠","\u2242\u0338":"≂̸","\u2204":"∄","\u226F":"≯","\u2271":"≱","\u2267\u0338":"≧̸","\u226B\u0338":"≫̸","\u2279":"≹","\u2A7E\u0338":"⩾̸","\u2275":"≵","\u224E\u0338":"≎̸","\u224F\u0338":"≏̸","\u22EA":"⋪","\u29CF\u0338":"⧏̸","\u22EC":"⋬","\u226E":"≮","\u2270":"≰","\u2278":"≸","\u226A\u0338":"≪̸","\u2A7D\u0338":"⩽̸","\u2274":"≴","\u2AA2\u0338":"⪢̸","\u2AA1\u0338":"⪡̸","\u2280":"⊀","\u2AAF\u0338":"⪯̸","\u22E0":"⋠","\u220C":"∌","\u22EB":"⋫","\u29D0\u0338":"⧐̸","\u22ED":"⋭","\u228F\u0338":"⊏̸","\u22E2":"⋢","\u2290\u0338":"⊐̸","\u22E3":"⋣","\u2282\u20D2":"⊂⃒","\u2288":"⊈","\u2281":"⊁","\u2AB0\u0338":"⪰̸","\u22E1":"⋡","\u227F\u0338":"≿̸","\u2283\u20D2":"⊃⃒","\u2289":"⊉","\u2241":"≁","\u2244":"≄","\u2247":"≇","\u2249":"≉","\u2224":"∤","\u{1D4A9}":"𝒩",\u00D1:"Ñ",\u039D:"Ν",\u0152:"Œ",\u00D3:"Ó",\u00D4:"Ô",\u041E:"О",\u0150:"Ő","\u{1D512}":"𝔒",\u00D2:"Ò",\u014C:"Ō",\u03A9:"Ω",\u039F:"Ο","\u{1D546}":"𝕆","\u201C":"“","\u2018":"‘","\u2A54":"⩔","\u{1D4AA}":"𝒪",\u00D8:"Ø",\u00D5:"Õ","\u2A37":"⨷",\u00D6:"Ö","\u203E":"‾","\u23DE":"⏞","\u23B4":"⎴","\u23DC":"⏜","\u2202":"∂",\u041F:"П","\u{1D513}":"𝔓",\u03A6:"Φ",\u03A0:"Π","\xB1":"±",\u2119:"ℙ","\u2ABB":"⪻","\u227A":"≺","\u2AAF":"⪯","\u227C":"≼","\u227E":"≾","\u2033":"″","\u220F":"∏","\u221D":"∝","\u{1D4AB}":"𝒫",\u03A8:"Ψ",'"':""","\u{1D514}":"𝔔",\u211A:"ℚ","\u{1D4AC}":"𝒬","\u2910":"⤐","\xAE":"®",\u0154:"Ŕ","\u27EB":"⟫","\u21A0":"↠","\u2916":"⤖",\u0158:"Ř",\u0156:"Ŗ",\u0420:"Р",\u211C:"ℜ","\u220B":"∋","\u21CB":"⇋","\u296F":"⥯",\u03A1:"Ρ","\u27E9":"⟩","\u2192":"→","\u21E5":"⇥","\u21C4":"⇄","\u2309":"⌉","\u27E7":"⟧","\u295D":"⥝","\u21C2":"⇂","\u2955":"⥕","\u230B":"⌋","\u22A2":"⊢","\u21A6":"↦","\u295B":"⥛","\u22B3":"⊳","\u29D0":"⧐","\u22B5":"⊵","\u294F":"⥏","\u295C":"⥜","\u21BE":"↾","\u2954":"⥔","\u21C0":"⇀","\u2953":"⥓",\u211D:"ℝ","\u2970":"⥰","\u21DB":"⇛",\u211B:"ℛ","\u21B1":"↱","\u29F4":"⧴",\u0429:"Щ",\u0428:"Ш",\u042C:"Ь",\u015A:"Ś","\u2ABC":"⪼",\u0160:"Š",\u015E:"Ş",\u015C:"Ŝ",\u0421:"С","\u{1D516}":"𝔖","\u2191":"↑",\u03A3:"Σ","\u2218":"∘","\u{1D54A}":"𝕊","\u221A":"√","\u25A1":"□","\u2293":"⊓","\u228F":"⊏","\u2291":"⊑","\u2290":"⊐","\u2292":"⊒","\u2294":"⊔","\u{1D4AE}":"𝒮","\u22C6":"⋆","\u22D0":"⋐","\u2286":"⊆","\u227B":"≻","\u2AB0":"⪰","\u227D":"≽","\u227F":"≿","\u2211":"∑","\u22D1":"⋑","\u2283":"⊃","\u2287":"⊇",\u00DE:"Þ","\u2122":"™",\u040B:"Ћ",\u0426:"Ц"," ":" ",\u03A4:"Τ",\u0164:"Ť",\u0162:"Ţ",\u0422:"Т","\u{1D517}":"𝔗","\u2234":"∴",\u0398:"Θ","\u205F\u200A":"  ","\u2009":" ","\u223C":"∼","\u2243":"≃","\u2245":"≅","\u2248":"≈","\u{1D54B}":"𝕋","\u20DB":"⃛","\u{1D4AF}":"𝒯",\u0166:"Ŧ",\u00DA:"Ú","\u219F":"↟","\u2949":"⥉",\u040E:"Ў",\u016C:"Ŭ",\u00DB:"Û",\u0423:"У",\u0170:"Ű","\u{1D518}":"𝔘",\u00D9:"Ù",\u016A:"Ū",_:"_","\u23DF":"⏟","\u23B5":"⎵","\u23DD":"⏝","\u22C3":"⋃","\u228E":"⊎",\u0172:"Ų","\u{1D54C}":"𝕌","\u2912":"⤒","\u21C5":"⇅","\u2195":"↕","\u296E":"⥮","\u22A5":"⊥","\u21A5":"↥","\u2196":"↖","\u2197":"↗",\u03D2:"ϒ",\u03A5:"Υ",\u016E:"Ů","\u{1D4B0}":"𝒰",\u0168:"Ũ",\u00DC:"Ü","\u22AB":"⊫","\u2AEB":"⫫",\u0412:"В","\u22A9":"⊩","\u2AE6":"⫦","\u22C1":"⋁","\u2016":"‖","\u2223":"∣","|":"|","\u2758":"❘","\u2240":"≀","\u200A":" ","\u{1D519}":"𝔙","\u{1D54D}":"𝕍","\u{1D4B1}":"𝒱","\u22AA":"⊪",\u0174:"Ŵ","\u22C0":"⋀","\u{1D51A}":"𝔚","\u{1D54E}":"𝕎","\u{1D4B2}":"𝒲","\u{1D51B}":"𝔛",\u039E:"Ξ","\u{1D54F}":"𝕏","\u{1D4B3}":"𝒳",\u042F:"Я",\u0407:"Ї",\u042E:"Ю",\u00DD:"Ý",\u0176:"Ŷ",\u042B:"Ы","\u{1D51C}":"𝔜","\u{1D550}":"𝕐","\u{1D4B4}":"𝒴",\u0178:"Ÿ",\u0416:"Ж",\u0179:"Ź",\u017D:"Ž",\u0417:"З",\u017B:"Ż",\u0396:"Ζ",\u2128:"ℨ",\u2124:"ℤ","\u{1D4B5}":"𝒵",\u00E1:"á",\u0103:"ă","\u223E":"∾","\u223E\u0333":"∾̳","\u223F":"∿",\u00E2:"â",\u0430:"а",\u00E6:"æ","\u{1D51E}":"𝔞",\u00E0:"à",\u2135:"ℵ",\u03B1:"α",\u0101:"ā","\u2A3F":"⨿","\u2227":"∧","\u2A55":"⩕","\u2A5C":"⩜","\u2A58":"⩘","\u2A5A":"⩚","\u2220":"∠","\u29A4":"⦤","\u2221":"∡","\u29A8":"⦨","\u29A9":"⦩","\u29AA":"⦪","\u29AB":"⦫","\u29AC":"⦬","\u29AD":"⦭","\u29AE":"⦮","\u29AF":"⦯","\u221F":"∟","\u22BE":"⊾","\u299D":"⦝","\u2222":"∢","\u237C":"⍼",\u0105:"ą","\u{1D552}":"𝕒","\u2A70":"⩰","\u2A6F":"⩯","\u224A":"≊","\u224B":"≋","'":"'",\u00E5:"å","\u{1D4B6}":"𝒶","*":"*",\u00E3:"ã",\u00E4:"ä","\u2A11":"⨑","\u2AED":"⫭","\u224C":"≌","\u03F6":"϶","\u2035":"‵","\u223D":"∽","\u22CD":"⋍","\u22BD":"⊽","\u2305":"⌅","\u23B6":"⎶",\u0431:"б","\u201E":"„","\u29B0":"⦰",\u03B2:"β",\u2136:"ℶ","\u226C":"≬","\u{1D51F}":"𝔟","\u25EF":"◯","\u2A00":"⨀","\u2A01":"⨁","\u2A02":"⨂","\u2A06":"⨆","\u2605":"★","\u25BD":"▽","\u25B3":"△","\u2A04":"⨄","\u290D":"⤍","\u29EB":"⧫","\u25B4":"▴","\u25BE":"▾","\u25C2":"◂","\u25B8":"▸","\u2423":"␣","\u2592":"▒","\u2591":"░","\u2593":"▓","\u2588":"█","=\u20E5":"=⃥","\u2261\u20E5":"≡⃥","\u2310":"⌐","\u{1D553}":"𝕓","\u22C8":"⋈","\u2557":"╗","\u2554":"╔","\u2556":"╖","\u2553":"╓","\u2550":"═","\u2566":"╦","\u2569":"╩","\u2564":"╤","\u2567":"╧","\u255D":"╝","\u255A":"╚","\u255C":"╜","\u2559":"╙","\u2551":"║","\u256C":"╬","\u2563":"╣","\u2560":"╠","\u256B":"╫","\u2562":"╢","\u255F":"╟","\u29C9":"⧉","\u2555":"╕","\u2552":"╒","\u2510":"┐","\u250C":"┌","\u2565":"╥","\u2568":"╨","\u252C":"┬","\u2534":"┴","\u229F":"⊟","\u229E":"⊞","\u22A0":"⊠","\u255B":"╛","\u2558":"╘","\u2518":"┘","\u2514":"└","\u2502":"│","\u256A":"╪","\u2561":"╡","\u255E":"╞","\u253C":"┼","\u2524":"┤","\u251C":"├","\xA6":"¦","\u{1D4B7}":"𝒷","\u204F":"⁏","\\":"\","\u29C5":"⧅","\u27C8":"⟈","\u2022":"•","\u2AAE":"⪮",\u0107:"ć","\u2229":"∩","\u2A44":"⩄","\u2A49":"⩉","\u2A4B":"⩋","\u2A47":"⩇","\u2A40":"⩀","\u2229\uFE00":"∩︀","\u2041":"⁁","\u2A4D":"⩍",\u010D:"č",\u00E7:"ç",\u0109:"ĉ","\u2A4C":"⩌","\u2A50":"⩐",\u010B:"ċ","\u29B2":"⦲","\xA2":"¢","\u{1D520}":"𝔠",\u0447:"ч","\u2713":"✓",\u03C7:"χ","\u25CB":"○","\u29C3":"⧃","\u02C6":"ˆ","\u2257":"≗","\u21BA":"↺","\u21BB":"↻","\u24C8":"Ⓢ","\u229B":"⊛","\u229A":"⊚","\u229D":"⊝","\u2A10":"⨐","\u2AEF":"⫯","\u29C2":"⧂","\u2663":"♣",":":":",",":",","@":"@","\u2201":"∁","\u2A6D":"⩭","\u{1D554}":"𝕔","\u2117":"℗","\u21B5":"↵","\u2717":"✗","\u{1D4B8}":"𝒸","\u2ACF":"⫏","\u2AD1":"⫑","\u2AD0":"⫐","\u2AD2":"⫒","\u22EF":"⋯","\u2938":"⤸","\u2935":"⤵","\u22DE":"⋞","\u22DF":"⋟","\u21B6":"↶","\u293D":"⤽","\u222A":"∪","\u2A48":"⩈","\u2A46":"⩆","\u2A4A":"⩊","\u228D":"⊍","\u2A45":"⩅","\u222A\uFE00":"∪︀","\u21B7":"↷","\u293C":"⤼","\u22CE":"⋎","\u22CF":"⋏","\xA4":"¤","\u2231":"∱","\u232D":"⌭","\u2965":"⥥","\u2020":"†",\u2138:"ℸ","\u2010":"‐","\u290F":"⤏",\u010F:"ď",\u0434:"д","\u21CA":"⇊","\u2A77":"⩷","\xB0":"°",\u03B4:"δ","\u29B1":"⦱","\u297F":"⥿","\u{1D521}":"𝔡","\u2666":"♦",\u03DD:"ϝ","\u22F2":"⋲","\xF7":"÷","\u22C7":"⋇",\u0452:"ђ","\u231E":"⌞","\u230D":"⌍",$:"$","\u{1D555}":"𝕕","\u2251":"≑","\u2238":"∸","\u2214":"∔","\u22A1":"⊡","\u231F":"⌟","\u230C":"⌌","\u{1D4B9}":"𝒹",\u0455:"ѕ","\u29F6":"⧶",\u0111:"đ","\u22F1":"⋱","\u25BF":"▿","\u29A6":"⦦",\u045F:"џ","\u27FF":"⟿",\u00E9:"é","\u2A6E":"⩮",\u011B:"ě","\u2256":"≖",\u00EA:"ê","\u2255":"≕",\u044D:"э",\u0117:"ė","\u2252":"≒","\u{1D522}":"𝔢","\u2A9A":"⪚",\u00E8:"è","\u2A96":"⪖","\u2A98":"⪘","\u2A99":"⪙","\u23E7":"⏧",\u2113:"ℓ","\u2A95":"⪕","\u2A97":"⪗",\u0113:"ē","\u2205":"∅","\u2004":" ","\u2005":" ","\u2003":" ",\u014B:"ŋ","\u2002":" ",\u0119:"ę","\u{1D556}":"𝕖","\u22D5":"⋕","\u29E3":"⧣","\u2A71":"⩱",\u03B5:"ε","\u03F5":"ϵ","=":"=","\u225F":"≟","\u2A78":"⩸","\u29E5":"⧥","\u2253":"≓","\u2971":"⥱",\u212F:"ℯ",\u03B7:"η",\u00F0:"ð",\u00EB:"ë","\u20AC":"€","!":"!",\u0444:"ф","\u2640":"♀",\uFB03:"ffi",\uFB00:"ff",\uFB04:"ffl","\u{1D523}":"𝔣",\uFB01:"fi",fj:"fj","\u266D":"♭",\uFB02:"fl","\u25B1":"▱",\u0192:"ƒ","\u{1D557}":"𝕗","\u22D4":"⋔","\u2AD9":"⫙","\u2A0D":"⨍","\xBD":"½","\u2153":"⅓","\xBC":"¼","\u2155":"⅕","\u2159":"⅙","\u215B":"⅛","\u2154":"⅔","\u2156":"⅖","\xBE":"¾","\u2157":"⅗","\u215C":"⅜","\u2158":"⅘","\u215A":"⅚","\u215D":"⅝","\u215E":"⅞","\u2044":"⁄","\u2322":"⌢","\u{1D4BB}":"𝒻","\u2A8C":"⪌",\u01F5:"ǵ",\u03B3:"γ","\u2A86":"⪆",\u011F:"ğ",\u011D:"ĝ",\u0433:"г",\u0121:"ġ","\u2AA9":"⪩","\u2A80":"⪀","\u2A82":"⪂","\u2A84":"⪄","\u22DB\uFE00":"⋛︀","\u2A94":"⪔","\u{1D524}":"𝔤",\u2137:"ℷ",\u0453:"ѓ","\u2A92":"⪒","\u2AA5":"⪥","\u2AA4":"⪤","\u2269":"≩","\u2A8A":"⪊","\u2A88":"⪈","\u22E7":"⋧","\u{1D558}":"𝕘",\u210A:"ℊ","\u2A8E":"⪎","\u2A90":"⪐","\u2AA7":"⪧","\u2A7A":"⩺","\u22D7":"⋗","\u2995":"⦕","\u2A7C":"⩼","\u2978":"⥸","\u2269\uFE00":"≩︀",\u044A:"ъ","\u2948":"⥈","\u21AD":"↭",\u210F:"ℏ",\u0125:"ĥ","\u2665":"♥","\u2026":"…","\u22B9":"⊹","\u{1D525}":"𝔥","\u2925":"⤥","\u2926":"⤦","\u21FF":"⇿","\u223B":"∻","\u21A9":"↩","\u21AA":"↪","\u{1D559}":"𝕙","\u2015":"―","\u{1D4BD}":"𝒽",\u0127:"ħ","\u2043":"⁃",\u00ED:"í",\u00EE:"î",\u0438:"и",\u0435:"е","\xA1":"¡","\u{1D526}":"𝔦",\u00EC:"ì","\u2A0C":"⨌","\u222D":"∭","\u29DC":"⧜","\u2129":"℩",\u0133:"ij",\u012B:"ī",\u0131:"ı","\u22B7":"⊷",\u01B5:"Ƶ","\u2105":"℅","\u221E":"∞","\u29DD":"⧝","\u22BA":"⊺","\u2A17":"⨗","\u2A3C":"⨼",\u0451:"ё",\u012F:"į","\u{1D55A}":"𝕚",\u03B9:"ι","\xBF":"¿","\u{1D4BE}":"𝒾","\u22F9":"⋹","\u22F5":"⋵","\u22F4":"⋴","\u22F3":"⋳",\u0129:"ĩ",\u0456:"і",\u00EF:"ï",\u0135:"ĵ",\u0439:"й","\u{1D527}":"𝔧","\u0237":"ȷ","\u{1D55B}":"𝕛","\u{1D4BF}":"𝒿",\u0458:"ј",\u0454:"є",\u03BA:"κ",\u03F0:"ϰ",\u0137:"ķ",\u043A:"к","\u{1D528}":"𝔨",\u0138:"ĸ",\u0445:"х",\u045C:"ќ","\u{1D55C}":"𝕜","\u{1D4C0}":"𝓀","\u291B":"⤛","\u290E":"⤎","\u2A8B":"⪋","\u2962":"⥢",\u013A:"ĺ","\u29B4":"⦴",\u03BB:"λ","\u2991":"⦑","\u2A85":"⪅","\xAB":"«","\u291F":"⤟","\u291D":"⤝","\u21AB":"↫","\u2939":"⤹","\u2973":"⥳","\u21A2":"↢","\u2AAB":"⪫","\u2919":"⤙","\u2AAD":"⪭","\u2AAD\uFE00":"⪭︀","\u290C":"⤌","\u2772":"❲","{":"{","[":"[","\u298B":"⦋","\u298F":"⦏","\u298D":"⦍",\u013E:"ľ",\u013C:"ļ",\u043B:"л","\u2936":"⤶","\u2967":"⥧","\u294B":"⥋","\u21B2":"↲","\u2264":"≤","\u21C7":"⇇","\u22CB":"⋋","\u2AA8":"⪨","\u2A7F":"⩿","\u2A81":"⪁","\u2A83":"⪃","\u22DA\uFE00":"⋚︀","\u2A93":"⪓","\u22D6":"⋖","\u297C":"⥼","\u{1D529}":"𝔩","\u2A91":"⪑","\u296A":"⥪","\u2584":"▄",\u0459:"љ","\u296B":"⥫","\u25FA":"◺",\u0140:"ŀ","\u23B0":"⎰","\u2268":"≨","\u2A89":"⪉","\u2A87":"⪇","\u22E6":"⋦","\u27EC":"⟬","\u21FD":"⇽","\u27FC":"⟼","\u21AC":"↬","\u2985":"⦅","\u{1D55D}":"𝕝","\u2A2D":"⨭","\u2A34":"⨴","\u2217":"∗","\u25CA":"◊","(":"(","\u2993":"⦓","\u296D":"⥭","\u200E":"‎","\u22BF":"⊿","\u2039":"‹","\u{1D4C1}":"𝓁","\u2A8D":"⪍","\u2A8F":"⪏","\u201A":"‚",\u0142:"ł","\u2AA6":"⪦","\u2A79":"⩹","\u22C9":"⋉","\u2976":"⥶","\u2A7B":"⩻","\u2996":"⦖","\u25C3":"◃","\u294A":"⥊","\u2966":"⥦","\u2268\uFE00":"≨︀","\u223A":"∺","\xAF":"¯","\u2642":"♂","\u2720":"✠","\u25AE":"▮","\u2A29":"⨩",\u043C:"м","\u2014":"—","\u{1D52A}":"𝔪","\u2127":"℧",\u00B5:"µ","\u2AF0":"⫰","\u2212":"−","\u2A2A":"⨪","\u2ADB":"⫛","\u22A7":"⊧","\u{1D55E}":"𝕞","\u{1D4C2}":"𝓂",\u03BC:"μ","\u22B8":"⊸","\u22D9\u0338":"⋙̸","\u226B\u20D2":"≫⃒","\u21CD":"⇍","\u21CE":"⇎","\u22D8\u0338":"⋘̸","\u226A\u20D2":"≪⃒","\u21CF":"⇏","\u22AF":"⊯","\u22AE":"⊮",\u0144:"ń","\u2220\u20D2":"∠⃒","\u2A70\u0338":"⩰̸","\u224B\u0338":"≋̸",\u0149:"ʼn","\u266E":"♮","\u2A43":"⩃",\u0148:"ň",\u0146:"ņ","\u2A6D\u0338":"⩭̸","\u2A42":"⩂",\u043D:"н","\u2013":"–","\u21D7":"⇗","\u2924":"⤤","\u2250\u0338":"≐̸","\u2928":"⤨","\u{1D52B}":"𝔫","\u21AE":"↮","\u2AF2":"⫲","\u22FC":"⋼","\u22FA":"⋺",\u045A:"њ","\u2266\u0338":"≦̸","\u219A":"↚","\u2025":"‥","\u{1D55F}":"𝕟","\xAC":"¬","\u22F9\u0338":"⋹̸","\u22F5\u0338":"⋵̸","\u22F7":"⋷","\u22F6":"⋶","\u22FE":"⋾","\u22FD":"⋽","\u2AFD\u20E5":"⫽⃥","\u2202\u0338":"∂̸","\u2A14":"⨔","\u219B":"↛","\u2933\u0338":"⤳̸","\u219D\u0338":"↝̸","\u{1D4C3}":"𝓃","\u2284":"⊄","\u2AC5\u0338":"⫅̸","\u2285":"⊅","\u2AC6\u0338":"⫆̸",\u00F1:"ñ",\u03BD:"ν","#":"#","\u2116":"№","\u2007":" ","\u22AD":"⊭","\u2904":"⤄","\u224D\u20D2":"≍⃒","\u22AC":"⊬","\u2265\u20D2":"≥⃒",">\u20D2":">⃒","\u29DE":"⧞","\u2902":"⤂","\u2264\u20D2":"≤⃒","<\u20D2":"<⃒","\u22B4\u20D2":"⊴⃒","\u2903":"⤃","\u22B5\u20D2":"⊵⃒","\u223C\u20D2":"∼⃒","\u21D6":"⇖","\u2923":"⤣","\u2927":"⤧",\u00F3:"ó",\u00F4:"ô",\u043E:"о",\u0151:"ő","\u2A38":"⨸","\u29BC":"⦼",\u0153:"œ","\u29BF":"⦿","\u{1D52C}":"𝔬","\u02DB":"˛",\u00F2:"ò","\u29C1":"⧁","\u29B5":"⦵","\u29BE":"⦾","\u29BB":"⦻","\u29C0":"⧀",\u014D:"ō",\u03C9:"ω",\u03BF:"ο","\u29B6":"⦶","\u{1D560}":"𝕠","\u29B7":"⦷","\u29B9":"⦹","\u2228":"∨","\u2A5D":"⩝",\u2134:"ℴ",\u00AA:"ª",\u00BA:"º","\u22B6":"⊶","\u2A56":"⩖","\u2A57":"⩗","\u2A5B":"⩛",\u00F8:"ø","\u2298":"⊘",\u00F5:"õ","\u2A36":"⨶",\u00F6:"ö","\u233D":"⌽","\xB6":"¶","\u2AF3":"⫳","\u2AFD":"⫽",\u043F:"п","%":"%",".":".","\u2030":"‰","\u2031":"‱","\u{1D52D}":"𝔭",\u03C6:"φ",\u03D5:"ϕ","\u260E":"☎",\u03C0:"π",\u03D6:"ϖ",\u210E:"ℎ","+":"+","\u2A23":"⨣","\u2A22":"⨢","\u2A25":"⨥","\u2A72":"⩲","\u2A26":"⨦","\u2A27":"⨧","\u2A15":"⨕","\u{1D561}":"𝕡","\xA3":"£","\u2AB3":"⪳","\u2AB7":"⪷","\u2AB9":"⪹","\u2AB5":"⪵","\u22E8":"⋨","\u2032":"′","\u232E":"⌮","\u2312":"⌒","\u2313":"⌓","\u22B0":"⊰","\u{1D4C5}":"𝓅",\u03C8:"ψ","\u2008":" ","\u{1D52E}":"𝔮","\u{1D562}":"𝕢","\u2057":"⁗","\u{1D4C6}":"𝓆","\u2A16":"⨖","?":"?","\u291C":"⤜","\u2964":"⥤","\u223D\u0331":"∽̱",\u0155:"ŕ","\u29B3":"⦳","\u2992":"⦒","\u29A5":"⦥","\xBB":"»","\u2975":"⥵","\u2920":"⤠","\u2933":"⤳","\u291E":"⤞","\u2945":"⥅","\u2974":"⥴","\u21A3":"↣","\u219D":"↝","\u291A":"⤚","\u2236":"∶","\u2773":"❳","}":"}","]":"]","\u298C":"⦌","\u298E":"⦎","\u2990":"⦐",\u0159:"ř",\u0157:"ŗ",\u0440:"р","\u2937":"⤷","\u2969":"⥩","\u21B3":"↳","\u25AD":"▭","\u297D":"⥽","\u{1D52F}":"𝔯","\u296C":"⥬",\u03C1:"ρ",\u03F1:"ϱ","\u21C9":"⇉","\u22CC":"⋌","\u02DA":"˚","\u200F":"‏","\u23B1":"⎱","\u2AEE":"⫮","\u27ED":"⟭","\u21FE":"⇾","\u2986":"⦆","\u{1D563}":"𝕣","\u2A2E":"⨮","\u2A35":"⨵",")":")","\u2994":"⦔","\u2A12":"⨒","\u203A":"›","\u{1D4C7}":"𝓇","\u22CA":"⋊","\u25B9":"▹","\u29CE":"⧎","\u2968":"⥨","\u211E":"℞",\u015B:"ś","\u2AB4":"⪴","\u2AB8":"⪸",\u0161:"š",\u015F:"ş",\u015D:"ŝ","\u2AB6":"⪶","\u2ABA":"⪺","\u22E9":"⋩","\u2A13":"⨓",\u0441:"с","\u22C5":"⋅","\u2A66":"⩦","\u21D8":"⇘","\xA7":"§",";":";","\u2929":"⤩","\u2736":"✶","\u{1D530}":"𝔰","\u266F":"♯",\u0449:"щ",\u0448:"ш","\xAD":"­",\u03C3:"σ",\u03C2:"ς","\u2A6A":"⩪","\u2A9E":"⪞","\u2AA0":"⪠","\u2A9D":"⪝","\u2A9F":"⪟","\u2246":"≆","\u2A24":"⨤","\u2972":"⥲","\u2A33":"⨳","\u29E4":"⧤","\u2323":"⌣","\u2AAA":"⪪","\u2AAC":"⪬","\u2AAC\uFE00":"⪬︀",\u044C:"ь","/":"/","\u29C4":"⧄","\u233F":"⌿","\u{1D564}":"𝕤","\u2660":"♠","\u2293\uFE00":"⊓︀","\u2294\uFE00":"⊔︀","\u{1D4C8}":"𝓈","\u2606":"☆","\u2282":"⊂","\u2AC5":"⫅","\u2ABD":"⪽","\u2AC3":"⫃","\u2AC1":"⫁","\u2ACB":"⫋","\u228A":"⊊","\u2ABF":"⪿","\u2979":"⥹","\u2AC7":"⫇","\u2AD5":"⫕","\u2AD3":"⫓","\u266A":"♪","\xB9":"¹","\xB2":"²","\xB3":"³","\u2AC6":"⫆","\u2ABE":"⪾","\u2AD8":"⫘","\u2AC4":"⫄","\u27C9":"⟉","\u2AD7":"⫗","\u297B":"⥻","\u2AC2":"⫂","\u2ACC":"⫌","\u228B":"⊋","\u2AC0":"⫀","\u2AC8":"⫈","\u2AD4":"⫔","\u2AD6":"⫖","\u21D9":"⇙","\u292A":"⤪",\u00DF:"ß","\u2316":"⌖",\u03C4:"τ",\u0165:"ť",\u0163:"ţ",\u0442:"т","\u2315":"⌕","\u{1D531}":"𝔱",\u03B8:"θ",\u03D1:"ϑ",\u00FE:"þ","\xD7":"×","\u2A31":"⨱","\u2A30":"⨰","\u2336":"⌶","\u2AF1":"⫱","\u{1D565}":"𝕥","\u2ADA":"⫚","\u2034":"‴","\u25B5":"▵","\u225C":"≜","\u25EC":"◬","\u2A3A":"⨺","\u2A39":"⨹","\u29CD":"⧍","\u2A3B":"⨻","\u23E2":"⏢","\u{1D4C9}":"𝓉",\u0446:"ц",\u045B:"ћ",\u0167:"ŧ","\u2963":"⥣",\u00FA:"ú",\u045E:"ў",\u016D:"ŭ",\u00FB:"û",\u0443:"у",\u0171:"ű","\u297E":"⥾","\u{1D532}":"𝔲",\u00F9:"ù","\u2580":"▀","\u231C":"⌜","\u230F":"⌏","\u25F8":"◸",\u016B:"ū",\u0173:"ų","\u{1D566}":"𝕦",\u03C5:"υ","\u21C8":"⇈","\u231D":"⌝","\u230E":"⌎",\u016F:"ů","\u25F9":"◹","\u{1D4CA}":"𝓊","\u22F0":"⋰",\u0169:"ũ",\u00FC:"ü","\u29A7":"⦧","\u2AE8":"⫨","\u2AE9":"⫩","\u299C":"⦜","\u228A\uFE00":"⊊︀","\u2ACB\uFE00":"⫋︀","\u228B\uFE00":"⊋︀","\u2ACC\uFE00":"⫌︀",\u0432:"в","\u22BB":"⊻","\u225A":"≚","\u22EE":"⋮","\u{1D533}":"𝔳","\u{1D567}":"𝕧","\u{1D4CB}":"𝓋","\u299A":"⦚",\u0175:"ŵ","\u2A5F":"⩟","\u2259":"≙","\u2118":"℘","\u{1D534}":"𝔴","\u{1D568}":"𝕨","\u{1D4CC}":"𝓌","\u{1D535}":"𝔵",\u03BE:"ξ","\u22FB":"⋻","\u{1D569}":"𝕩","\u{1D4CD}":"𝓍",\u00FD:"ý",\u044F:"я",\u0177:"ŷ",\u044B:"ы","\xA5":"¥","\u{1D536}":"𝔶",\u0457:"ї","\u{1D56A}":"𝕪","\u{1D4CE}":"𝓎",\u044E:"ю",\u00FF:"ÿ",\u017A:"ź",\u017E:"ž",\u0437:"з",\u017C:"ż",\u03B6:"ζ","\u{1D537}":"𝔷",\u0436:"ж","\u21DD":"⇝","\u{1D56B}":"𝕫","\u{1D4CF}":"𝓏","\u200D":"‍","\u200C":"‌"}}}});var qE=jr(jf=>{"use strict";Object.defineProperty(jf,"__esModule",{value:!0});jf.numericUnicodeMap={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}});var IE=jr(Bo=>{"use strict";Object.defineProperty(Bo,"__esModule",{value:!0});Bo.fromCodePoint=String.fromCodePoint||function(yr){return String.fromCharCode(Math.floor((yr-65536)/1024)+55296,(yr-65536)%1024+56320)};Bo.getCodePoint=String.prototype.codePointAt?function(yr,br){return yr.codePointAt(br)}:function(yr,br){return(yr.charCodeAt(br)-55296)*1024+yr.charCodeAt(br+1)-56320+65536};Bo.highSurrogateFrom=55296;Bo.highSurrogateTo=56319});var BE=jr(oo=>{"use strict";var Fo=oo&&oo.__assign||function(){return Fo=Object.assign||function(yr){for(var br,mr=1,Er=arguments.length;mr'"&]/g,nonAscii:/(?:[<>'"&\u0080-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,nonAsciiPrintable:/(?:[<>'"&\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,extensive:/(?:[\x01-\x0c\x0e-\x1f\x21-\x2c\x2e-\x2f\x3a-\x40\x5b-\x60\x7b-\x7d\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g},aN={mode:"specialChars",level:"all",numeric:"decimal"};function lN(yr,br){var mr=br===void 0?aN:br,Er=mr.mode,wr=Er===void 0?"specialChars":Er,_r=mr.numeric,xr=_r===void 0?"decimal":_r,Sr=mr.level,Tr=Sr===void 0?"all":Sr;if(!yr)return"";var Dr=oN[wr],Or=Bf[Tr].characters,Cr=xr==="hexadecimal";Dr.lastIndex=0;var mr=Dr.exec(yr),Er;if(mr){Er="";var _r=0;do{_r!==mr.index&&(Er+=yr.substring(_r,mr.index));var Sr=mr[0],Ar=Or[Sr];if(!Ar){var Lr=Sr.length>1?Hf.getCodePoint(Sr,0):Sr.charCodeAt(0);Ar=(Cr?"&#x"+Lr.toString(16):"&#"+Lr)+";"}Er+=Ar,_r=mr.index+Sr.length}while(mr=Dr.exec(yr));_r!==yr.length&&(Er+=yr.substring(_r))}else Er=yr;return Er}oo.encode=lN;var cN={scope:"body",level:"all"},Ff=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g,zf=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g,jE={xml:{strict:Ff,attribute:zf,body:Wa.bodyRegExps.xml},html4:{strict:Ff,attribute:zf,body:Wa.bodyRegExps.html4},html5:{strict:Ff,attribute:zf,body:Wa.bodyRegExps.html5}},uN=Fo(Fo({},jE),{all:jE.html5}),$f=String.fromCharCode,HE=$f(65533),dN={level:"all"};function fN(yr,br){var mr=(br===void 0?dN:br).level,Er=mr===void 0?"all":mr;if(!yr)return"";var mr=yr,wr=yr[yr.length-1],_r=Bf[Er].entities[yr];if(_r)mr=_r;else if(yr[0]==="&"&&yr[1]==="#"){var xr=yr[2],Sr=xr=="x"||xr=="X"?parseInt(yr.substr(3),16):parseInt(yr.substr(2));mr=Sr>=1114111?HE:Sr>65535?Hf.fromCodePoint(Sr):$f(PE.numericUnicodeMap[Sr]||Sr)}return mr}oo.decodeEntity=fN;function hN(yr,br){var mr=br===void 0?cN:br,Er=mr.level,wr=Er===void 0?"all":Er,_r=mr.scope,xr=_r===void 0?wr==="xml"?"strict":"body":_r;if(!yr)return"";var Sr=uN[wr][xr],Tr=Bf[wr].entities,Dr=xr==="attribute",Or=xr==="strict";Sr.lastIndex=0;var Cr=Sr.exec(yr),Ar;if(Cr){Ar="";var Lr=0;do{Lr!==Cr.index&&(Ar+=yr.substring(Lr,Cr.index));var Rr=Cr[0],Nr=Rr,Ir=Rr[Rr.length-1];if(Dr&&Ir==="=")Nr=Rr;else if(Or&&Ir!==";")Nr=Rr;else{var Pr=Tr[Rr];if(Pr)Nr=Pr;else if(Rr[0]==="&"&&Rr[1]==="#"){var Br=Rr[2],zr=Br=="x"||Br=="X"?parseInt(Rr.substr(3),16):parseInt(Rr.substr(2));Nr=zr>=1114111?HE:zr>65535?Hf.fromCodePoint(zr):$f(PE.numericUnicodeMap[zr]||zr)}}Ar+=Nr,Lr=Cr.index+Rr.length}while(Cr=Sr.exec(yr));Lr!==yr.length&&(Ar+=yr.substring(Lr))}else Ar=yr;return Ar}oo.decode=hN});var zE=jr((Jz,FE)=>{"use strict";FE.exports=yr=>encodeURIComponent(yr).replace(/[!'()*]/g,br=>`%${br.charCodeAt(0).toString(16).toUpperCase()}`)});var GE=jr((Qz,WE)=>{"use strict";var $E="%[a-f0-9]{2}",UE=new RegExp($E,"gi"),VE=new RegExp("("+$E+")+","gi");function Uf(yr,br){try{return decodeURIComponent(yr.join(""))}catch(wr){}if(yr.length===1)return yr;br=br||1;var mr=yr.slice(0,br),Er=yr.slice(br);return Array.prototype.concat.call([],Uf(mr),Uf(Er))}function pN(yr){try{return decodeURIComponent(yr)}catch(Er){for(var br=yr.match(UE),mr=1;mr{"use strict";YE.exports=(yr,br)=>{if(!(typeof yr=="string"&&typeof br=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(br==="")return[yr];let mr=yr.indexOf(br);return mr===-1?[yr]:[yr.slice(0,mr),yr.slice(mr+br.length)]}});var JE=jr((e$,XE)=>{"use strict";XE.exports=function(yr,br){for(var mr={},Er=Object.keys(yr),wr=Array.isArray(br),_r=0;_r{"use strict";var gN=zE(),vN=GE(),QE=KE(),bN=JE(),yN=yr=>yr==null,Vf=Symbol("encodeFragmentIdentifier");function EN(yr){switch(yr.arrayFormat){case"index":return br=>(mr,Er)=>{let wr=mr.length;return Er===void 0||yr.skipNull&&Er===null||yr.skipEmptyString&&Er===""?mr:Er===null?[...mr,[Mi(br,yr),"[",wr,"]"].join("")]:[...mr,[Mi(br,yr),"[",Mi(wr,yr),"]=",Mi(Er,yr)].join("")]};case"bracket":return br=>(mr,Er)=>Er===void 0||yr.skipNull&&Er===null||yr.skipEmptyString&&Er===""?mr:Er===null?[...mr,[Mi(br,yr),"[]"].join("")]:[...mr,[Mi(br,yr),"[]=",Mi(Er,yr)].join("")];case"colon-list-separator":return br=>(mr,Er)=>Er===void 0||yr.skipNull&&Er===null||yr.skipEmptyString&&Er===""?mr:Er===null?[...mr,[Mi(br,yr),":list="].join("")]:[...mr,[Mi(br,yr),":list=",Mi(Er,yr)].join("")];case"comma":case"separator":case"bracket-separator":{let br=yr.arrayFormat==="bracket-separator"?"[]=":"=";return mr=>(Er,wr)=>wr===void 0||yr.skipNull&&wr===null||yr.skipEmptyString&&wr===""?Er:(wr=wr===null?"":wr,Er.length===0?[[Mi(mr,yr),br,Mi(wr,yr)].join("")]:[[Er,Mi(wr,yr)].join(yr.arrayFormatSeparator)])}default:return br=>(mr,Er)=>Er===void 0||yr.skipNull&&Er===null||yr.skipEmptyString&&Er===""?mr:Er===null?[...mr,Mi(br,yr)]:[...mr,[Mi(br,yr),"=",Mi(Er,yr)].join("")]}}function wN(yr){let br;switch(yr.arrayFormat){case"index":return(mr,Er,wr)=>{if(br=/\[(\d*)\]$/.exec(mr),mr=mr.replace(/\[\d*\]$/,""),!br){wr[mr]=Er;return}wr[mr]===void 0&&(wr[mr]={}),wr[mr][br[1]]=Er};case"bracket":return(mr,Er,wr)=>{if(br=/(\[\])$/.exec(mr),mr=mr.replace(/\[\]$/,""),!br){wr[mr]=Er;return}if(wr[mr]===void 0){wr[mr]=[Er];return}wr[mr]=[].concat(wr[mr],Er)};case"colon-list-separator":return(mr,Er,wr)=>{if(br=/(:list)$/.exec(mr),mr=mr.replace(/:list$/,""),!br){wr[mr]=Er;return}if(wr[mr]===void 0){wr[mr]=[Er];return}wr[mr]=[].concat(wr[mr],Er)};case"comma":case"separator":return(mr,Er,wr)=>{let _r=typeof Er=="string"&&Er.includes(yr.arrayFormatSeparator),xr=typeof Er=="string"&&!_r&&ss(Er,yr).includes(yr.arrayFormatSeparator);Er=xr?ss(Er,yr):Er;let Sr=_r||xr?Er.split(yr.arrayFormatSeparator).map(Tr=>ss(Tr,yr)):Er===null?Er:ss(Er,yr);wr[mr]=Sr};case"bracket-separator":return(mr,Er,wr)=>{let _r=/(\[\])$/.test(mr);if(mr=mr.replace(/\[\]$/,""),!_r){wr[mr]=Er&&ss(Er,yr);return}let xr=Er===null?[]:Er.split(yr.arrayFormatSeparator).map(Sr=>ss(Sr,yr));if(wr[mr]===void 0){wr[mr]=xr;return}wr[mr]=[].concat(wr[mr],xr)};default:return(mr,Er,wr)=>{if(wr[mr]===void 0){wr[mr]=Er;return}wr[mr]=[].concat(wr[mr],Er)}}}function ZE(yr){if(typeof yr!="string"||yr.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Mi(yr,br){return br.encode?br.strict?gN(yr):encodeURIComponent(yr):yr}function ss(yr,br){return br.decode?vN(yr):yr}function ew(yr){return Array.isArray(yr)?yr.sort():typeof yr=="object"?ew(Object.keys(yr)).sort((br,mr)=>Number(br)-Number(mr)).map(br=>yr[br]):yr}function tw(yr){let br=yr.indexOf("#");return br!==-1&&(yr=yr.slice(0,br)),yr}function _N(yr){let br="",mr=yr.indexOf("#");return mr!==-1&&(br=yr.slice(mr)),br}function rw(yr){yr=tw(yr);let br=yr.indexOf("?");return br===-1?"":yr.slice(br+1)}function iw(yr,br){return br.parseNumbers&&!Number.isNaN(Number(yr))&&typeof yr=="string"&&yr.trim()!==""?yr=Number(yr):br.parseBooleans&&yr!==null&&(yr.toLowerCase()==="true"||yr.toLowerCase()==="false")&&(yr=yr.toLowerCase()==="true"),yr}function nw(yr,br){br=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},br),ZE(br.arrayFormatSeparator);let mr=wN(br),Er=Object.create(null);if(typeof yr!="string"||(yr=yr.trim().replace(/^[?#&]/,""),!yr))return Er;for(let wr of yr.split("&")){if(wr==="")continue;let[_r,xr]=QE(br.decode?wr.replace(/\+/g," "):wr,"=");xr=xr===void 0?null:["comma","separator","bracket-separator"].includes(br.arrayFormat)?xr:ss(xr,br),mr(ss(_r,br),xr,Er)}for(let wr of Object.keys(Er)){let _r=Er[wr];if(typeof _r=="object"&&_r!==null)for(let xr of Object.keys(_r))_r[xr]=iw(_r[xr],br);else Er[wr]=iw(_r,br)}return br.sort===!1?Er:(br.sort===!0?Object.keys(Er).sort():Object.keys(Er).sort(br.sort)).reduce((wr,_r)=>{let xr=Er[_r];return Boolean(xr)&&typeof xr=="object"&&!Array.isArray(xr)?wr[_r]=ew(xr):wr[_r]=xr,wr},Object.create(null))}on.extract=rw;on.parse=nw;on.stringify=(yr,br)=>{if(!yr)return"";br=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},br),ZE(br.arrayFormatSeparator);let mr=xr=>br.skipNull&&yN(yr[xr])||br.skipEmptyString&&yr[xr]==="",Er=EN(br),wr={};for(let xr of Object.keys(yr))mr(xr)||(wr[xr]=yr[xr]);let _r=Object.keys(wr);return br.sort!==!1&&_r.sort(br.sort),_r.map(xr=>{let Sr=yr[xr];return Sr===void 0?"":Sr===null?Mi(xr,br):Array.isArray(Sr)?Sr.length===0&&br.arrayFormat==="bracket-separator"?Mi(xr,br)+"[]":Sr.reduce(Er(xr),[]).join("&"):Mi(xr,br)+"="+Mi(Sr,br)}).filter(xr=>xr.length>0).join("&")};on.parseUrl=(yr,br)=>{br=Object.assign({decode:!0},br);let[mr,Er]=QE(yr,"#");return Object.assign({url:mr.split("?")[0]||"",query:nw(rw(yr),br)},br&&br.parseFragmentIdentifier&&Er?{fragmentIdentifier:ss(Er,br)}:{})};on.stringifyUrl=(yr,br)=>{br=Object.assign({encode:!0,strict:!0,[Vf]:!0},br);let mr=tw(yr.url).split("?")[0]||"",Er=on.extract(yr.url),wr=on.parse(Er,{sort:!1}),_r=Object.assign(wr,yr.query),xr=on.stringify(_r,br);xr&&(xr=`?${xr}`);let Sr=_N(yr.url);return yr.fragmentIdentifier&&(Sr=`#${br[Vf]?Mi(yr.fragmentIdentifier,br):yr.fragmentIdentifier}`),`${mr}${xr}${Sr}`};on.pick=(yr,br,mr)=>{mr=Object.assign({parseFragmentIdentifier:!0,[Vf]:!1},mr);let{url:Er,query:wr,fragmentIdentifier:_r}=on.parseUrl(yr,mr);return on.stringifyUrl({url:Er,query:bN(wr,br),fragmentIdentifier:_r},mr)};on.exclude=(yr,br,mr)=>{let Er=Array.isArray(br)?wr=>!br.includes(wr):(wr,_r)=>!br(wr,_r);return on.pick(yr,Er,mr)}});var Bw=jr((Ga,Qf)=>{(function(br,mr){typeof Ga=="object"&&typeof Qf=="object"?Qf.exports=mr():typeof define=="function"&&define.amd?define([],mr):typeof Ga=="object"?Ga.ClipboardJS=mr():br.ClipboardJS=mr()})(Ga,function(){return function(){var yr={686:function(Er,wr,_r){"use strict";_r.d(wr,{default:function(){return Yi}});var xr=_r(279),Sr=_r.n(xr),Tr=_r(370),Dr=_r.n(Tr),Or=_r(817),Cr=_r.n(Or);function Ar(ii){try{return document.execCommand(ii)}catch(ei){return!1}}var Lr=function(ei){var Qr=Cr()(ei);return Ar("cut"),Qr},Rr=Lr;function Nr(ii){var ei=document.documentElement.getAttribute("dir")==="rtl",Qr=document.createElement("textarea");Qr.style.fontSize="12pt",Qr.style.border="0",Qr.style.padding="0",Qr.style.margin="0",Qr.style.position="absolute",Qr.style[ei?"right":"left"]="-9999px";var si=window.pageYOffset||document.documentElement.scrollTop;return Qr.style.top="".concat(si,"px"),Qr.setAttribute("readonly",""),Qr.value=ii,Qr}var Ir=function(ei,Qr){var si=Nr(ei);Qr.container.appendChild(si);var Zr=Cr()(si);return Ar("copy"),si.remove(),Zr},Pr=function(ei){var Qr=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},si="";return typeof ei=="string"?si=Ir(ei,Qr):ei instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(ei==null?void 0:ei.type)?si=Ir(ei.value,Qr):(si=Cr()(ei),Ar("copy")),si},Br=Pr;function zr(ii){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?zr=function(Qr){return typeof Qr}:zr=function(Qr){return Qr&&typeof Symbol=="function"&&Qr.constructor===Symbol&&Qr!==Symbol.prototype?"symbol":typeof Qr},zr(ii)}var Ur=function(){var ei=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Qr=ei.action,si=Qr===void 0?"copy":Qr,Zr=ei.container,ni=ei.target,bi=ei.text;if(si!=="copy"&&si!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(ni!==void 0)if(ni&&zr(ni)==="object"&&ni.nodeType===1){if(si==="copy"&&ni.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(si==="cut"&&(ni.hasAttribute("readonly")||ni.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(bi)return Br(bi,{container:Zr});if(ni)return si==="cut"?Rr(ni):Br(ni,{container:Zr})},Kr=Ur;function Fr(ii){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fr=function(Qr){return typeof Qr}:Fr=function(Qr){return Qr&&typeof Symbol=="function"&&Qr.constructor===Symbol&&Qr!==Symbol.prototype?"symbol":typeof Qr},Fr(ii)}function Xr(ii,ei){if(!(ii instanceof ei))throw new TypeError("Cannot call a class as a function")}function Jr(ii,ei){for(var Qr=0;Qr0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof Zr.action=="function"?Zr.action:this.defaultAction,this.target=typeof Zr.target=="function"?Zr.target:this.defaultTarget,this.text=typeof Zr.text=="function"?Zr.text:this.defaultText,this.container=Fr(Zr.container)==="object"?Zr.container:document.body}},{key:"listenClick",value:function(Zr){var ni=this;this.listener=Dr()(Zr,"click",function(bi){return ni.onClick(bi)})}},{key:"onClick",value:function(Zr){var ni=Zr.delegateTarget||Zr.currentTarget,bi=this.action(ni)||"copy",xi=Kr({action:bi,container:this.container,target:this.target(ni),text:this.text(ni)});this.emit(xi?"success":"error",{action:bi,text:xi,trigger:ni,clearSelection:function(){ni&&ni.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(Zr){return ki("action",Zr)}},{key:"defaultTarget",value:function(Zr){var ni=ki("target",Zr);if(ni)return document.querySelector(ni)}},{key:"defaultText",value:function(Zr){return ki("text",Zr)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(Zr){var ni=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return Br(Zr,ni)}},{key:"cut",value:function(Zr){return Rr(Zr)}},{key:"isSupported",value:function(){var Zr=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],ni=typeof Zr=="string"?[Zr]:Zr,bi=!!document.queryCommandSupported;return ni.forEach(function(xi){bi=bi&&!!document.queryCommandSupported(xi)}),bi}}]),Qr}(Sr()),Yi=Cn},828:function(Er){var wr=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var _r=Element.prototype;_r.matches=_r.matchesSelector||_r.mozMatchesSelector||_r.msMatchesSelector||_r.oMatchesSelector||_r.webkitMatchesSelector}function xr(Sr,Tr){for(;Sr&&Sr.nodeType!==wr;){if(typeof Sr.matches=="function"&&Sr.matches(Tr))return Sr;Sr=Sr.parentNode}}Er.exports=xr},438:function(Er,wr,_r){var xr=_r(828);function Sr(Or,Cr,Ar,Lr,Rr){var Nr=Dr.apply(this,arguments);return Or.addEventListener(Ar,Nr,Rr),{destroy:function(){Or.removeEventListener(Ar,Nr,Rr)}}}function Tr(Or,Cr,Ar,Lr,Rr){return typeof Or.addEventListener=="function"?Sr.apply(null,arguments):typeof Ar=="function"?Sr.bind(null,document).apply(null,arguments):(typeof Or=="string"&&(Or=document.querySelectorAll(Or)),Array.prototype.map.call(Or,function(Nr){return Sr(Nr,Cr,Ar,Lr,Rr)}))}function Dr(Or,Cr,Ar,Lr){return function(Rr){Rr.delegateTarget=xr(Rr.target,Cr),Rr.delegateTarget&&Lr.call(Or,Rr)}}Er.exports=Tr},879:function(Er,wr){wr.node=function(_r){return _r!==void 0&&_r instanceof HTMLElement&&_r.nodeType===1},wr.nodeList=function(_r){var xr=Object.prototype.toString.call(_r);return _r!==void 0&&(xr==="[object NodeList]"||xr==="[object HTMLCollection]")&&"length"in _r&&(_r.length===0||wr.node(_r[0]))},wr.string=function(_r){return typeof _r=="string"||_r instanceof String},wr.fn=function(_r){var xr=Object.prototype.toString.call(_r);return xr==="[object Function]"}},370:function(Er,wr,_r){var xr=_r(879),Sr=_r(438);function Tr(Ar,Lr,Rr){if(!Ar&&!Lr&&!Rr)throw new Error("Missing required arguments");if(!xr.string(Lr))throw new TypeError("Second argument must be a String");if(!xr.fn(Rr))throw new TypeError("Third argument must be a Function");if(xr.node(Ar))return Dr(Ar,Lr,Rr);if(xr.nodeList(Ar))return Or(Ar,Lr,Rr);if(xr.string(Ar))return Cr(Ar,Lr,Rr);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function Dr(Ar,Lr,Rr){return Ar.addEventListener(Lr,Rr),{destroy:function(){Ar.removeEventListener(Lr,Rr)}}}function Or(Ar,Lr,Rr){return Array.prototype.forEach.call(Ar,function(Nr){Nr.addEventListener(Lr,Rr)}),{destroy:function(){Array.prototype.forEach.call(Ar,function(Nr){Nr.removeEventListener(Lr,Rr)})}}}function Cr(Ar,Lr,Rr){return Sr(document.body,Ar,Lr,Rr)}Er.exports=Tr},817:function(Er){function wr(_r){var xr;if(_r.nodeName==="SELECT")_r.focus(),xr=_r.value;else if(_r.nodeName==="INPUT"||_r.nodeName==="TEXTAREA"){var Sr=_r.hasAttribute("readonly");Sr||_r.setAttribute("readonly",""),_r.select(),_r.setSelectionRange(0,_r.value.length),Sr||_r.removeAttribute("readonly"),xr=_r.value}else{_r.hasAttribute("contenteditable")&&_r.focus();var Tr=window.getSelection(),Dr=document.createRange();Dr.selectNodeContents(_r),Tr.removeAllRanges(),Tr.addRange(Dr),xr=Tr.toString()}return xr}Er.exports=wr},279:function(Er){function wr(){}wr.prototype={on:function(_r,xr,Sr){var Tr=this.e||(this.e={});return(Tr[_r]||(Tr[_r]=[])).push({fn:xr,ctx:Sr}),this},once:function(_r,xr,Sr){var Tr=this;function Dr(){Tr.off(_r,Dr),xr.apply(Sr,arguments)}return Dr._=xr,this.on(_r,Dr,Sr)},emit:function(_r){var xr=[].slice.call(arguments,1),Sr=((this.e||(this.e={}))[_r]||[]).slice(),Tr=0,Dr=Sr.length;for(Tr;Tr{"use strict";Object.defineProperty(Tn,"__esModule",{value:!0});Tn.Utils=Tn.obsoleteAttr=Tn.obsoleteOptsDel=Tn.obsoleteOpts=Tn.obsolete=void 0;function XN(yr,br,mr,Er,wr){let _r=(...xr)=>(console.warn("gridstack.js: Function `"+mr+"` is deprecated in "+wr+" and has been replaced with `"+Er+"`. It will be **removed** in a future release"),br.apply(yr,xr));return _r.prototype=br.prototype,_r}Tn.obsolete=XN;function JN(yr,br,mr,Er){yr[br]!==void 0&&(yr[mr]=yr[br],console.warn("gridstack.js: Option `"+br+"` is deprecated in "+Er+" and has been replaced with `"+mr+"`. It will be **removed** in a future release"))}Tn.obsoleteOpts=JN;function QN(yr,br,mr,Er){yr[br]!==void 0&&console.warn("gridstack.js: Option `"+br+"` is deprecated in "+mr+Er)}Tn.obsoleteOptsDel=QN;function ZN(yr,br,mr,Er){let wr=yr.getAttribute(br);wr!==null&&(yr.setAttribute(mr,wr),console.warn("gridstack.js: attribute `"+br+"`="+wr+" is deprecated on this object in "+Er+" and has been replaced with `"+mr+"`. It will be **removed** in a future release"))}Tn.obsoleteAttr=ZN;var Wo=class{static getElements(br){if(typeof br=="string"){let mr=document.querySelectorAll(br);return!mr.length&&br[0]!=="."&&br[0]!=="#"&&(mr=document.querySelectorAll("."+br),mr.length||(mr=document.querySelectorAll("#"+br))),Array.from(mr)}return[br]}static getElement(br){if(typeof br=="string"){if(!br.length)return null;if(br[0]==="#")return document.getElementById(br.substring(1));if(br[0]==="."||br[0]==="[")return document.querySelector(br);if(!isNaN(+br[0]))return document.getElementById(br);let mr=document.querySelector(br);return mr||(mr=document.getElementById(br)),mr||(mr=document.querySelector("."+br)),mr}return br}static isIntercepted(br,mr){return!(br.y>=mr.y+mr.h||br.y+br.h<=mr.y||br.x+br.w<=mr.x||br.x>=mr.x+mr.w)}static isTouching(br,mr){return Wo.isIntercepted(br,{x:mr.x-.5,y:mr.y-.5,w:mr.w+1,h:mr.h+1})}static areaIntercept(br,mr){let Er=br.x>mr.x?br.x:mr.x,wr=br.x+br.wmr.y?br.y:mr.y,xr=br.y+br.hMath.max(_r.x+_r.w,wr),0)||12,mr===-1?br.sort((wr,_r)=>_r.x+_r.y*Er-(wr.x+wr.y*Er)):br.sort((wr,_r)=>wr.x+wr.y*Er-(_r.x+_r.y*Er))}static createStylesheet(br,mr){let Er=document.createElement("style");return Er.setAttribute("type","text/css"),Er.setAttribute("gs-style-id",br),Er.styleSheet?Er.styleSheet.cssText="":Er.appendChild(document.createTextNode("")),mr?mr.insertBefore(Er,mr.firstChild):(mr=document.getElementsByTagName("head")[0],mr.appendChild(Er)),Er.sheet}static removeStylesheet(br){let mr=document.querySelector("STYLE[gs-style-id="+br+"]");mr&&mr.parentNode&&mr.remove()}static addCSSRule(br,mr,Er){typeof br.addRule=="function"?br.addRule(mr,Er):typeof br.insertRule=="function"&&br.insertRule(`${mr}{${Er}}`)}static toBool(br){return typeof br=="boolean"?br:typeof br=="string"?(br=br.toLowerCase(),!(br===""||br==="no"||br==="false"||br==="0")):Boolean(br)}static toNumber(br){return br===null||br.length===0?void 0:Number(br)}static parseHeight(br){let mr,Er="px";if(typeof br=="string"){let wr=br.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%)?$/);if(!wr)throw new Error("Invalid height");Er=wr[2]||"px",mr=parseFloat(wr[1])}else mr=br;return{h:mr,unit:Er}}static defaults(br,...mr){return mr.forEach(Er=>{for(let wr in Er){if(!Er.hasOwnProperty(wr))return;br[wr]===null||br[wr]===void 0?br[wr]=Er[wr]:typeof Er[wr]=="object"&&typeof br[wr]=="object"&&this.defaults(br[wr],Er[wr])}}),br}static same(br,mr){if(typeof br!="object")return br==mr;if(typeof br!=typeof mr||Object.keys(br).length!==Object.keys(mr).length)return!1;for(let Er in br)if(br[Er]!==mr[Er])return!1;return!0}static copyPos(br,mr,Er=!1){return br.x=mr.x,br.y=mr.y,br.w=mr.w,br.h=mr.h,Er&&(mr.minW&&(br.minW=mr.minW),mr.minH&&(br.minH=mr.minH),mr.maxW&&(br.maxW=mr.maxW),mr.maxH&&(br.maxH=mr.maxH)),br}static samePos(br,mr){return br&&mr&&br.x===mr.x&&br.y===mr.y&&br.w===mr.w&&br.h===mr.h}static removeInternalAndSame(br,mr){if(!(typeof br!="object"||typeof mr!="object"))for(let Er in br){let wr=br[Er];if(Er[0]==="_"||wr===mr[Er])delete br[Er];else if(wr&&typeof wr=="object"&&mr[Er]!==void 0){for(let _r in wr)(wr[_r]===mr[Er][_r]||_r[0]==="_")&&delete wr[_r];Object.keys(wr).length||delete br[Er]}}}static removeInternalForSave(br,mr=!0){for(let Er in br)(Er[0]==="_"||br[Er]===null||br[Er]===void 0)&&delete br[Er];delete br.grid,mr&&delete br.el,br.autoPosition||delete br.autoPosition,br.noResize||delete br.noResize,br.noMove||delete br.noMove,br.locked||delete br.locked,(br.w===1||br.w===br.minW)&&delete br.w,(br.h===1||br.h===br.minH)&&delete br.h}static closestUpByClass(br,mr){for(;br;){if(br.classList.contains(mr))return br;br=br.parentElement}return null}static throttle(br,mr){let Er=!1;return(...wr)=>{Er||(Er=!0,setTimeout(()=>{br(...wr),Er=!1},mr))}}static removePositioningStyles(br){let mr=br.style;mr.position&&mr.removeProperty("position"),mr.left&&mr.removeProperty("left"),mr.top&&mr.removeProperty("top"),mr.width&&mr.removeProperty("width"),mr.height&&mr.removeProperty("height")}static getScrollElement(br){if(!br)return document.scrollingElement||document.documentElement;let mr=getComputedStyle(br);return/(auto|scroll)/.test(mr.overflow+mr.overflowY)?br:this.getScrollElement(br.parentElement)}static updateScrollPosition(br,mr,Er){let wr=br.getBoundingClientRect(),_r=window.innerHeight||document.documentElement.clientHeight;if(wr.top<0||wr.bottom>_r){let xr=wr.bottom-_r,Sr=wr.top,Tr=this.getScrollElement(br);if(Tr!==null){let Dr=Tr.scrollTop;wr.top<0&&Er<0?br.offsetHeight>_r?Tr.scrollTop+=Er:Tr.scrollTop+=Math.abs(Sr)>Math.abs(Er)?Er:Sr:Er>0&&(br.offsetHeight>_r?Tr.scrollTop+=Er:Tr.scrollTop+=xr>Er?Er:xr),mr.top+=Tr.scrollTop-Dr}}}static updateScrollResize(br,mr,Er){let wr=this.getScrollElement(mr),_r=wr.clientHeight,xr=wr===this.getScrollElement()?0:wr.getBoundingClientRect().top,Sr=br.clientY-xr,Tr=Sr_r-Er;Tr?wr.scrollBy({behavior:"smooth",top:Sr-Er}):Dr&&wr.scrollBy({behavior:"smooth",top:Er-(_r-Sr)})}static clone(br){return br==null||typeof br!="object"?br:br instanceof Array?[...br]:Object.assign({},br)}static cloneDeep(br){let mr=["parentGrid","el","grid","subGrid","engine"],Er=Wo.clone(br);for(let wr in Er)Er.hasOwnProperty(wr)&&typeof Er[wr]=="object"&&wr.substring(0,2)!=="__"&&!mr.find(_r=>_r===wr)&&(Er[wr]=Wo.cloneDeep(br[wr]));return Er}static cloneNode(br){let mr=br.cloneNode(!0);return mr.removeAttribute("id"),mr}static appendTo(br,mr){let Er;typeof mr=="string"?Er=document.querySelector(mr):Er=mr,Er&&Er.appendChild(br)}static addElStyles(br,mr){if(mr instanceof Object)for(let Er in mr)mr.hasOwnProperty(Er)&&(Array.isArray(mr[Er])?mr[Er].forEach(wr=>{br.style[Er]=wr}):br.style[Er]=mr[Er])}static initEvent(br,mr){let Er={type:mr.type},wr={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:mr.target?mr.target:br.target};return br.dataTransfer&&(Er.dataTransfer=br.dataTransfer),["altKey","ctrlKey","metaKey","shiftKey"].forEach(_r=>Er[_r]=br[_r]),["pageX","pageY","clientX","clientY","screenX","screenY"].forEach(_r=>Er[_r]=br[_r]),Object.assign(Object.assign({},Er),wr)}static simulateMouseEvent(br,mr,Er){let wr=document.createEvent("MouseEvents");wr.initMouseEvent(mr,!0,!0,window,1,br.screenX,br.screenY,br.clientX,br.clientY,br.ctrlKey,br.altKey,br.shiftKey,br.metaKey,0,br.target),(Er||br.target).dispatchEvent(wr)}};Tn.Utils=Wo});var ih=jr(Bc=>{"use strict";Object.defineProperty(Bc,"__esModule",{value:!0});Bc.GridStackEngine=void 0;var yi=Ds(),as=class{constructor(br={}){this.addedNodes=[],this.removedNodes=[],this.column=br.column||12,this.maxRow=br.maxRow,this._float=br.float,this.nodes=br.nodes||[],this.onChange=br.onChange}batchUpdate(br=!0){return!!this.batchMode===br?this:(this.batchMode=br,br?(this._prevFloat=this._float,this._float=!0,this.saveInitial()):(this._float=this._prevFloat,delete this._prevFloat,this._packNodes()._notify()),this)}_useEntireRowArea(br,mr){return!this.float&&!this._hasLocked&&(!br._moving||br._skipDown||mr.y<=br.y)}_fixCollisions(br,mr=br,Er,wr={}){if(this.sortNodes(-1),Er=Er||this.collide(br,mr),!Er)return!1;if(br._moving&&!wr.nested&&!this.float&&this.swap(br,Er))return!0;let _r=mr;this._useEntireRowArea(br,mr)&&(_r={x:0,w:this.column,y:mr.y,h:mr.h},Er=this.collide(br,_r,wr.skip));let xr=!1,Sr={nested:!0,pack:!1};for(;Er=Er||this.collide(br,_r,wr.skip);){let Tr;if(Er.locked||br._moving&&!br._skipDown&&mr.y>br.y&&!this.float&&(!this.collide(Er,Object.assign(Object.assign({},Er),{y:br.y}),br)||!this.collide(Er,Object.assign(Object.assign({},Er),{y:mr.y-Er.h}),br))?(br._skipDown=br._skipDown||mr.y>br.y,Tr=this.moveNode(br,Object.assign(Object.assign(Object.assign({},mr),{y:Er.y+Er.h}),Sr)),Er.locked&&Tr?yi.Utils.copyPos(mr,br):!Er.locked&&Tr&&wr.pack&&(this._packNodes(),mr.y=Er.y+Er.h,yi.Utils.copyPos(br,mr)),xr=xr||Tr):Tr=this.moveNode(Er,Object.assign(Object.assign(Object.assign({},Er),{y:mr.y+mr.h,skip:br}),Sr)),!Tr)return xr;Er=void 0}return xr}collide(br,mr=br,Er){return this.nodes.find(wr=>wr!==br&&wr!==Er&&yi.Utils.isIntercepted(wr,mr))}collideAll(br,mr=br,Er){return this.nodes.filter(wr=>wr!==br&&wr!==Er&&yi.Utils.isIntercepted(wr,mr))}directionCollideCoverage(br,mr,Er){if(!mr.rect||!br._rect)return;let wr=br._rect,_r=Object.assign({},mr.rect);_r.y>wr.y?(_r.h+=_r.y-wr.y,_r.y=wr.y):_r.h+=wr.y-_r.y,_r.x>wr.x?(_r.w+=_r.x-wr.x,_r.x=wr.x):_r.w+=wr.x-_r.x;let xr;return Er.forEach(Sr=>{if(Sr.locked||!Sr._rect)return;let Tr=Sr._rect,Dr=Number.MAX_VALUE,Or=Number.MAX_VALUE,Cr=.5;wr.yTr.y+Tr.h&&(Dr=(Tr.y+Tr.h-_r.y)/Tr.h),wr.xTr.x+Tr.w&&(Or=(Tr.x+Tr.w-_r.x)/Tr.w);let Ar=Math.min(Or,Dr);Ar>Cr&&(Cr=Ar,xr=Sr)}),mr.collide=xr,xr}cacheRects(br,mr,Er,wr,_r,xr){return this.nodes.forEach(Sr=>Sr._rect={y:Sr.y*mr+Er,x:Sr.x*br+xr,w:Sr.w*br-xr-wr,h:Sr.h*mr-Er-_r}),this}swap(br,mr){if(!mr||mr.locked||!br||br.locked)return!1;function Er(){let _r=mr.x,xr=mr.y;return mr.x=br.x,mr.y=br.y,br.h!=mr.h?(br.x=_r,br.y=mr.y+mr.h):br.w!=mr.w?(br.x=mr.x+mr.w,br.y=xr):(br.x=_r,br.y=xr),br._dirty=mr._dirty=!0,!0}let wr;if(br.w===mr.w&&br.h===mr.h&&(br.x===mr.x||br.y===mr.y)&&(wr=yi.Utils.isTouching(br,mr)))return Er();if(wr!==!1){if(br.w===mr.w&&br.x===mr.x&&(wr||(wr=yi.Utils.isTouching(br,mr)))){if(mr.y{mr.locked||(mr.autoPosition=!0),this.addNode(mr,!1),mr._dirty=!0}),this.batchUpdate(!1)}set float(br){this._float!==br&&(this._float=br||!1,br||this._packNodes()._notify())}get float(){return this._float||!1}sortNodes(br){return this.nodes=yi.Utils.sort(this.nodes,br,this.column),this}_packNodes(){return this.batchMode?this:(this.sortNodes(),this.float?this.nodes.forEach(br=>{if(br._updating||br._orig===void 0||br.y===br._orig.y)return;let mr=br.y;for(;mr>br._orig.y;)--mr,this.collide(br,{x:br.x,y:mr,w:br.w,h:br.h})||(br._dirty=!0,br.y=mr)}):this.nodes.forEach((br,mr)=>{if(!br.locked)for(;br.y>0;){let Er=mr===0?0:br.y-1;if(!(mr===0||!this.collide(br,{x:br.x,y:Er,w:br.w,h:br.h})))break;br._dirty=br.y!==Er,br.y=Er}}),this)}prepareNode(br,mr){br=br||{},br._id=br._id||as._idSeq++,(br.x===void 0||br.y===void 0||br.x===null||br.y===null)&&(br.autoPosition=!0);let Er={x:0,y:0,w:1,h:1};return yi.Utils.defaults(br,Er),br.autoPosition||delete br.autoPosition,br.noResize||delete br.noResize,br.noMove||delete br.noMove,typeof br.x=="string"&&(br.x=Number(br.x)),typeof br.y=="string"&&(br.y=Number(br.y)),typeof br.w=="string"&&(br.w=Number(br.w)),typeof br.h=="string"&&(br.h=Number(br.h)),isNaN(br.x)&&(br.x=Er.x,br.autoPosition=!0),isNaN(br.y)&&(br.y=Er.y,br.autoPosition=!0),isNaN(br.w)&&(br.w=Er.w),isNaN(br.h)&&(br.h=Er.h),this.nodeBoundFix(br,mr)}nodeBoundFix(br,mr){let Er=br._orig||yi.Utils.copyPos({},br);if(br.maxW&&(br.w=Math.min(br.w,br.maxW)),br.maxH&&(br.h=Math.min(br.h,br.maxH)),br.minW&&br.minW<=this.column&&(br.w=Math.max(br.w,br.minW)),br.minH&&(br.h=Math.max(br.h,br.minH)),(this.column===1||br.x+br.w>this.column)&&this.column<12&&!this._inColumnResize&&!br.autoPosition&&br._id&&this.findCacheLayout(br,12)===-1){let _r=Object.assign({},br);_r.x=Math.min(11,_r.x),_r.w=Math.min(12,_r.w),this.cacheOneLayout(_r,12)}return br.w>this.column?br.w=this.column:br.w<1&&(br.w=1),this.maxRow&&br.h>this.maxRow?br.h=this.maxRow:br.h<1&&(br.h=1),br.x<0&&(br.x=0),br.y<0&&(br.y=0),br.x+br.w>this.column&&(mr?br.w=this.column-br.x:br.x=this.column-br.w),this.maxRow&&br.y+br.h>this.maxRow&&(mr?br.h=this.maxRow-br.y:br.y=this.maxRow-br.h),yi.Utils.samePos(br,Er)||(br._dirty=!0),br}getDirtyNodes(br){return br?this.nodes.filter(mr=>mr._dirty&&!yi.Utils.samePos(mr,mr._orig)):this.nodes.filter(mr=>mr._dirty)}_notify(br){if(this.batchMode||!this.onChange)return this;let mr=(br||[]).concat(this.getDirtyNodes());return this.onChange(mr),this}cleanNodes(){return this.batchMode?this:(this.nodes.forEach(br=>{delete br._dirty,delete br._lastTried}),this)}saveInitial(){return this.nodes.forEach(br=>{br._orig=yi.Utils.copyPos({},br),delete br._dirty}),this._hasLocked=this.nodes.some(br=>br.locked),this}restoreInitial(){return this.nodes.forEach(br=>{yi.Utils.samePos(br,br._orig)||(yi.Utils.copyPos(br,br._orig),br._dirty=!0)}),this._notify(),this}findEmptyPosition(br){this.sortNodes();let mr=!1;for(let Er=0;!mr;++Er){let wr=Er%this.column,_r=Math.floor(Er/this.column);if(wr+br.w>this.column)continue;let xr={x:wr,y:_r,w:br.w,h:br.h};this.nodes.find(Sr=>yi.Utils.isIntercepted(xr,Sr))||(br.x=wr,br.y=_r,mr=!0)}return mr}addNode(br,mr=!1){let Er=this.nodes.find(wr=>wr._id===br._id);return Er||(br=this._inColumnResize?this.nodeBoundFix(br):this.prepareNode(br),delete br._temporaryRemoved,delete br._removeDOM,br.autoPosition&&this.findEmptyPosition(br)&&delete br.autoPosition,this.nodes.push(br),mr&&this.addedNodes.push(br),this._fixCollisions(br),this.batchMode||this._packNodes()._notify(),br)}removeNode(br,mr=!0,Er=!1){return this.nodes.find(wr=>wr===br)?(Er&&this.removedNodes.push(br),mr&&(br._removeDOM=!0),this.nodes=this.nodes.filter(wr=>wr!==br),this._packNodes()._notify([br])):this}removeAll(br=!0){return delete this._layouts,this.nodes.length===0?this:(br&&this.nodes.forEach(mr=>mr._removeDOM=!0),this.removedNodes=this.nodes,this.nodes=[],this._notify(this.removedNodes))}moveNodeCheck(br,mr){if(!this.changedPosConstrain(br,mr))return!1;if(mr.pack=!0,!this.maxRow)return this.moveNode(br,mr);let Er,wr=new as({column:this.column,float:this.float,nodes:this.nodes.map(xr=>xr===br?(Er=Object.assign({},xr),Er):Object.assign({},xr))});if(!Er)return!1;let _r=wr.moveNode(Er,mr)&&wr.getRow()<=this.maxRow;if(!_r&&!mr.resizing&&mr.collide){let xr=mr.collide.el.gridstackNode;if(this.swap(br,xr))return this._notify(),!0}return _r?(wr.nodes.filter(xr=>xr._dirty).forEach(xr=>{let Sr=this.nodes.find(Tr=>Tr._id===xr._id);!Sr||(yi.Utils.copyPos(Sr,xr),Sr._dirty=!0)}),this._notify(),!0):!1}willItFit(br){if(delete br._willFitPos,!this.maxRow)return!0;let mr=new as({column:this.column,float:this.float,nodes:this.nodes.map(wr=>Object.assign({},wr))}),Er=Object.assign({},br);return this.cleanupNode(Er),delete Er.el,delete Er._id,delete Er.content,delete Er.grid,mr.addNode(Er),mr.getRow()<=this.maxRow?(br._willFitPos=yi.Utils.copyPos({},Er),!0):!1}changedPosConstrain(br,mr){return mr.w=mr.w||br.w,mr.h=mr.h||br.h,br.x!==mr.x||br.y!==mr.y?!0:(br.maxW&&(mr.w=Math.min(mr.w,br.maxW)),br.maxH&&(mr.h=Math.min(mr.h,br.maxH)),br.minW&&(mr.w=Math.max(mr.w,br.minW)),br.minH&&(mr.h=Math.max(mr.h,br.minH)),br.w!==mr.w||br.h!==mr.h)}moveNode(br,mr){var Er,wr;if(!br||!mr)return!1;let _r;mr.pack===void 0&&(_r=mr.pack=!0),typeof mr.x!="number"&&(mr.x=br.x),typeof mr.y!="number"&&(mr.y=br.y),typeof mr.w!="number"&&(mr.w=br.w),typeof mr.h!="number"&&(mr.h=br.h);let xr=br.w!==mr.w||br.h!==mr.h,Sr=yi.Utils.copyPos({},br,!0);if(yi.Utils.copyPos(Sr,mr),Sr=this.nodeBoundFix(Sr,xr),yi.Utils.copyPos(mr,Sr),yi.Utils.samePos(br,mr))return!1;let Tr=yi.Utils.copyPos({},br),Dr=this.collideAll(br,Sr,mr.skip),Or=!0;if(Dr.length){let Cr=br._moving&&!mr.nested,Ar=Cr?this.directionCollideCoverage(br,mr,Dr):Dr[0];if(Cr&&Ar&&((wr=(Er=br.grid)===null||Er===void 0?void 0:Er.opts)===null||wr===void 0?void 0:wr.subGridDynamic)&&!br.grid._isTemp){let Lr=yi.Utils.areaIntercept(mr.rect,Ar._rect),Rr=yi.Utils.area(mr.rect),Nr=yi.Utils.area(Ar._rect);Lr/(Rr.8&&(Ar.grid.makeSubGrid(Ar.el,void 0,br),Ar=void 0)}Ar?Or=!this._fixCollisions(br,Sr,Ar,mr):(Or=!1,_r&&delete mr.pack)}return Or&&(br._dirty=!0,yi.Utils.copyPos(br,Sr)),mr.pack&&this._packNodes()._notify(),!yi.Utils.samePos(br,Tr)}getRow(){return this.nodes.reduce((br,mr)=>Math.max(br,mr.y+mr.h),0)}beginUpdate(br){return br._updating||(br._updating=!0,delete br._skipDown,this.batchMode||this.saveInitial()),this}endUpdate(){let br=this.nodes.find(mr=>mr._updating);return br&&(delete br._updating,delete br._skipDown),this}save(br=!0){var mr;let Er=(mr=this._layouts)===null||mr===void 0?void 0:mr.length,wr=Er&&this.column!==Er-1?this._layouts[Er-1]:null,_r=[];return this.sortNodes(),this.nodes.forEach(xr=>{let Sr=wr==null?void 0:wr.find(Dr=>Dr._id===xr._id),Tr=Object.assign({},xr);Sr&&(Tr.x=Sr.x,Tr.y=Sr.y,Tr.w=Sr.w),yi.Utils.removeInternalForSave(Tr,!br),_r.push(Tr)}),_r}layoutsNodesChange(br){return!this._layouts||this._inColumnResize?this:(this._layouts.forEach((mr,Er)=>{if(!mr||Er===this.column)return this;if(Er{if(!_r._orig)return;let xr=mr.find(Sr=>Sr._id===_r._id);!xr||(_r.y!==_r._orig.y&&(xr.y+=_r.y-_r._orig.y),_r.x!==_r._orig.x&&(xr.x=Math.round(_r.x*wr)),_r.w!==_r._orig.w&&(xr.w=Math.round(_r.w*wr)))})}}),this)}updateNodeWidths(br,mr,Er,wr="moveScale"){var _r;if(!this.nodes.length||!mr||br===mr)return this;this.cacheLayout(this.nodes,br),this.batchUpdate();let xr=[],Sr=!1;if(mr===1&&(Er==null?void 0:Er.length)){Sr=!0;let Dr=0;Er.forEach(Or=>{Or.x=0,Or.w=1,Or.y=Math.max(Or.y,Dr),Dr=Or.y+Or.h}),xr=Er,Er=[]}else Er=yi.Utils.sort(this.nodes,-1,br);let Tr=[];if(mr>br){Tr=this._layouts[mr]||[];let Dr=this._layouts.length-1;!Tr.length&&br!==Dr&&((_r=this._layouts[Dr])===null||_r===void 0?void 0:_r.length)&&(br=Dr,this._layouts[Dr].forEach(Or=>{let Cr=Er.find(Ar=>Ar._id===Or._id);Cr&&(Cr.x=Or.x,Cr.y=Or.y,Cr.w=Or.w)}))}if(Tr.forEach(Dr=>{let Or=Er.findIndex(Cr=>Cr._id===Dr._id);Or!==-1&&(Er[Or].x=Dr.x,Er[Or].y=Dr.y,Er[Or].w=Dr.w,xr.push(Er[Or]),Er.splice(Or,1))}),Er.length){if(typeof wr=="function")wr(mr,br,xr,Er);else if(!Sr){let Dr=mr/br,Or=wr==="move"||wr==="moveScale",Cr=wr==="scale"||wr==="moveScale";Er.forEach(Ar=>{Ar.x=mr===1?0:Or?Math.round(Ar.x*Dr):Math.min(Ar.x,mr-1),Ar.w=mr===1||br===1?1:Cr?Math.round(Ar.w*Dr)||1:Math.min(Ar.w,mr),xr.push(Ar)}),Er=[]}}return Sr||(xr=yi.Utils.sort(xr,-1,mr)),this._inColumnResize=!0,this.nodes=[],xr.forEach(Dr=>{this.addNode(Dr,!1),delete Dr._orig}),this.batchUpdate(!1),delete this._inColumnResize,this}cacheLayout(br,mr,Er=!1){let wr=[];return br.forEach((_r,xr)=>{_r._id=_r._id||as._idSeq++,wr[xr]={x:_r.x,y:_r.y,w:_r.w,_id:_r._id}}),this._layouts=Er?[]:this._layouts||[],this._layouts[mr]=wr,this}cacheOneLayout(br,mr){br._id=br._id||as._idSeq++;let Er={x:br.x,y:br.y,w:br.w,_id:br._id};this._layouts=this._layouts||[],this._layouts[mr]=this._layouts[mr]||[];let wr=this.findCacheLayout(br,mr);return wr===-1?this._layouts[mr].push(Er):this._layouts[mr][wr]=Er,this}findCacheLayout(br,mr){var Er,wr,_r;return(_r=(wr=(Er=this._layouts)===null||Er===void 0?void 0:Er[mr])===null||wr===void 0?void 0:wr.findIndex(xr=>xr._id===br._id))!==null&&_r!==void 0?_r:-1}cleanupNode(br){for(let mr in br)mr[0]==="_"&&mr!=="_id"&&delete br[mr];return this}};Bc.GridStackEngine=as;as._idSeq=1});var nh=jr(Go=>{"use strict";Object.defineProperty(Go,"__esModule",{value:!0});Go.dragInDefaultOptions=Go.gridDefaults=void 0;Go.gridDefaults={alwaysShowResizeHandle:"mobile",animate:!0,auto:!0,cellHeight:"auto",cellHeightThrottle:100,cellHeightUnit:"px",column:12,draggable:{handle:".grid-stack-item-content",appendTo:"body",scroll:!0},handle:".grid-stack-item-content",itemClass:"grid-stack-item",margin:10,marginUnit:"px",maxRow:0,minRow:0,oneColumnSize:768,placeholderClass:"grid-stack-placeholder",placeholderText:"",removableOptions:{accept:".grid-stack-item"},resizable:{handles:"se"},rtl:"auto"};Go.dragInDefaultOptions={handle:".grid-stack-item-content",appendTo:"body"}});var ao=jr(Fc=>{"use strict";Object.defineProperty(Fc,"__esModule",{value:!0});Fc.DDManager=void 0;var r_=class{};Fc.DDManager=r_});var Qa=jr(Zi=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.pointerleave=Zi.pointerenter=Zi.pointerdown=Zi.touchend=Zi.touchmove=Zi.touchstart=Zi.isTouch=void 0;var sh=ao();Zi.isTouch=typeof window!="undefined"&&typeof document!="undefined"&&("ontouchstart"in document||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0);var Nn=class{};function zc(yr,br){if(yr.touches.length>1)return;yr.cancelable&&yr.preventDefault();let mr=yr.changedTouches[0],Er=document.createEvent("MouseEvents");Er.initMouseEvent(br,!0,!0,window,1,mr.screenX,mr.screenY,mr.clientX,mr.clientY,!1,!1,!1,!1,0,null),yr.target.dispatchEvent(Er)}function i_(yr,br){yr.cancelable&&yr.preventDefault();let mr=document.createEvent("MouseEvents");mr.initMouseEvent(br,!0,!0,window,1,yr.screenX,yr.screenY,yr.clientX,yr.clientY,!1,!1,!1,!1,0,null),yr.target.dispatchEvent(mr)}function eq(yr){Nn.touchHandled||(Nn.touchHandled=!0,zc(yr,"mousedown"))}Zi.touchstart=eq;function tq(yr){!Nn.touchHandled||zc(yr,"mousemove")}Zi.touchmove=tq;function rq(yr){if(!Nn.touchHandled)return;Nn.pointerLeaveTimeout&&(window.clearTimeout(Nn.pointerLeaveTimeout),delete Nn.pointerLeaveTimeout);let br=!!sh.DDManager.dragElement;zc(yr,"mouseup"),br||zc(yr,"click"),Nn.touchHandled=!1}Zi.touchend=rq;function iq(yr){yr.target.releasePointerCapture(yr.pointerId)}Zi.pointerdown=iq;function nq(yr){!sh.DDManager.dragElement||i_(yr,"mouseenter")}Zi.pointerenter=nq;function sq(yr){!sh.DDManager.dragElement||(Nn.pointerLeaveTimeout=window.setTimeout(()=>{delete Nn.pointerLeaveTimeout,i_(yr,"mouseleave")},10))}Zi.pointerleave=sq});var n_=jr($c=>{"use strict";Object.defineProperty($c,"__esModule",{value:!0});$c.DDResizableHandle=void 0;var Dn=Qa(),Za=class{constructor(br,mr,Er){this.moving=!1,this.host=br,this.dir=mr,this.option=Er,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._init()}_init(){let br=document.createElement("div");return br.classList.add("ui-resizable-handle"),br.classList.add(`${Za.prefix}${this.dir}`),br.style.zIndex="100",br.style.userSelect="none",this.el=br,this.host.appendChild(this.el),this.el.addEventListener("mousedown",this._mouseDown),Dn.isTouch&&(this.el.addEventListener("touchstart",Dn.touchstart),this.el.addEventListener("pointerdown",Dn.pointerdown)),this}destroy(){return this.moving&&this._mouseUp(this.mouseDownEvent),this.el.removeEventListener("mousedown",this._mouseDown),Dn.isTouch&&(this.el.removeEventListener("touchstart",Dn.touchstart),this.el.removeEventListener("pointerdown",Dn.pointerdown)),this.host.removeChild(this.el),delete this.el,delete this.host,this}_mouseDown(br){this.mouseDownEvent=br,document.addEventListener("mousemove",this._mouseMove,!0),document.addEventListener("mouseup",this._mouseUp,!0),Dn.isTouch&&(this.el.addEventListener("touchmove",Dn.touchmove),this.el.addEventListener("touchend",Dn.touchend)),br.stopPropagation(),br.preventDefault()}_mouseMove(br){let mr=this.mouseDownEvent;this.moving?this._triggerEvent("move",br):Math.abs(br.x-mr.x)+Math.abs(br.y-mr.y)>2&&(this.moving=!0,this._triggerEvent("start",this.mouseDownEvent),this._triggerEvent("move",br)),br.stopPropagation(),br.preventDefault()}_mouseUp(br){this.moving&&this._triggerEvent("stop",br),document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Dn.isTouch&&(this.el.removeEventListener("touchmove",Dn.touchmove),this.el.removeEventListener("touchend",Dn.touchend)),delete this.moving,delete this.mouseDownEvent,br.stopPropagation(),br.preventDefault()}_triggerEvent(br,mr){return this.option[br]&&this.option[br](mr),this}};$c.DDResizableHandle=Za;Za.prefix="ui-resizable-"});var Vc=jr(Uc=>{"use strict";Object.defineProperty(Uc,"__esModule",{value:!0});Uc.DDBaseImplement=void 0;var s_=class{constructor(){this._eventRegister={}}get disabled(){return this._disabled}on(br,mr){this._eventRegister[br]=mr}off(br){delete this._eventRegister[br]}enable(){this._disabled=!1}disable(){this._disabled=!0}destroy(){delete this._eventRegister}triggerEvent(br,mr){if(!this.disabled&&this._eventRegister&&this._eventRegister[br])return this._eventRegister[br](mr)}};Uc.DDBaseImplement=s_});var o_=jr(Gc=>{"use strict";Object.defineProperty(Gc,"__esModule",{value:!0});Gc.DDResizable=void 0;var oq=n_(),aq=Vc(),Wc=Ds(),lo=ao(),Yo=class extends aq.DDBaseImplement{constructor(br,mr={}){super();this._ui=()=>{let wr=this.el.parentElement.getBoundingClientRect(),_r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},xr=this.temporalRect||_r;return{position:{left:xr.left-wr.left,top:xr.top-wr.top},size:{width:xr.width,height:xr.height}}},this.el=br,this.option=mr,this._mouseOver=this._mouseOver.bind(this),this._mouseOut=this._mouseOut.bind(this),this.enable(),this._setupAutoHide(this.option.autoHide),this._setupHandlers()}on(br,mr){super.on(br,mr)}off(br){super.off(br)}enable(){super.enable(),this.el.classList.add("ui-resizable"),this.el.classList.remove("ui-resizable-disabled"),this._setupAutoHide(this.option.autoHide)}disable(){super.disable(),this.el.classList.add("ui-resizable-disabled"),this.el.classList.remove("ui-resizable"),this._setupAutoHide(!1)}destroy(){this._removeHandlers(),this._setupAutoHide(!1),this.el.classList.remove("ui-resizable"),delete this.el,super.destroy()}updateOption(br){let mr=br.handles&&br.handles!==this.option.handles,Er=br.autoHide&&br.autoHide!==this.option.autoHide;return Object.keys(br).forEach(wr=>this.option[wr]=br[wr]),mr&&(this._removeHandlers(),this._setupHandlers()),Er&&this._setupAutoHide(this.option.autoHide),this}_setupAutoHide(br){return br?(this.el.classList.add("ui-resizable-autohide"),this.el.addEventListener("mouseover",this._mouseOver),this.el.addEventListener("mouseout",this._mouseOut)):(this.el.classList.remove("ui-resizable-autohide"),this.el.removeEventListener("mouseover",this._mouseOver),this.el.removeEventListener("mouseout",this._mouseOut),lo.DDManager.overResizeElement===this&&delete lo.DDManager.overResizeElement),this}_mouseOver(br){lo.DDManager.overResizeElement||lo.DDManager.dragElement||(lo.DDManager.overResizeElement=this,this.el.classList.remove("ui-resizable-autohide"))}_mouseOut(br){lo.DDManager.overResizeElement===this&&(delete lo.DDManager.overResizeElement,this.el.classList.add("ui-resizable-autohide"))}_setupHandlers(){let br=this.option.handles||"e,s,se";return br==="all"&&(br="n,e,s,w,se,sw,ne,nw"),this.handlers=br.split(",").map(mr=>mr.trim()).map(mr=>new oq.DDResizableHandle(this.el,mr,{start:Er=>{this._resizeStart(Er)},stop:Er=>{this._resizeStop(Er)},move:Er=>{this._resizing(Er,mr)}})),this}_resizeStart(br){this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=Wc.Utils.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=br,this._setupHelper(),this._applyChange();let mr=Wc.Utils.initEvent(br,{type:"resizestart",target:this.el});return this.option.start&&this.option.start(mr,this._ui()),this.el.classList.add("ui-resizable-resizing"),this.triggerEvent("resizestart",mr),this}_resizing(br,mr){this.scrolled=this.scrollEl.scrollTop-this.scrollY,this.temporalRect=this._getChange(br,mr),this._applyChange();let Er=Wc.Utils.initEvent(br,{type:"resize",target:this.el});return this.option.resize&&this.option.resize(Er,this._ui()),this.triggerEvent("resize",Er),this}_resizeStop(br){let mr=Wc.Utils.initEvent(br,{type:"resizestop",target:this.el});return this.option.stop&&this.option.stop(mr),this.el.classList.remove("ui-resizable-resizing"),this.triggerEvent("resizestop",mr),this._cleanHelper(),delete this.startEvent,delete this.originalRect,delete this.temporalRect,delete this.scrollY,delete this.scrolled,this}_setupHelper(){return this.elOriginStyleVal=Yo._originStyleProp.map(br=>this.el.style[br]),this.parentOriginStylePosition=this.el.parentElement.style.position,window.getComputedStyle(this.el.parentElement).position.match(/static/)&&(this.el.parentElement.style.position="relative"),this.el.style.position="absolute",this.el.style.opacity="0.8",this}_cleanHelper(){return Yo._originStyleProp.forEach((br,mr)=>{this.el.style[br]=this.elOriginStyleVal[mr]||null}),this.el.parentElement.style.position=this.parentOriginStylePosition||null,this}_getChange(br,mr){let Er=this.startEvent,wr={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},_r=br.clientX-Er.clientX,xr=br.clientY-Er.clientY;mr.indexOf("e")>-1?wr.width+=_r:mr.indexOf("w")>-1&&(wr.width-=_r,wr.left+=_r),mr.indexOf("s")>-1?wr.height+=xr:mr.indexOf("n")>-1&&(wr.height-=xr,wr.top+=xr);let Sr=this._constrainSize(wr.width,wr.height);return Math.round(wr.width)!==Math.round(Sr.width)&&(mr.indexOf("w")>-1&&(wr.left+=wr.width-Sr.width),wr.width=Sr.width),Math.round(wr.height)!==Math.round(Sr.height)&&(mr.indexOf("n")>-1&&(wr.top+=wr.height-Sr.height),wr.height=Sr.height),wr}_constrainSize(br,mr){let Er=this.option.maxWidth||Number.MAX_SAFE_INTEGER,wr=this.option.minWidth||br,_r=this.option.maxHeight||Number.MAX_SAFE_INTEGER,xr=this.option.minHeight||mr,Sr=Math.min(Er,Math.max(wr,br)),Tr=Math.min(_r,Math.max(xr,mr));return{width:Sr,height:Tr}}_applyChange(){let br={left:0,top:0,width:0,height:0};if(this.el.style.position==="absolute"){let mr=this.el.parentElement,{left:Er,top:wr}=mr.getBoundingClientRect();br={left:Er,top:wr,width:0,height:0}}return this.temporalRect?(Object.keys(this.temporalRect).forEach(mr=>{let Er=this.temporalRect[mr];this.el.style[mr]=Er-br[mr]+"px"}),this):this}_removeHandlers(){return this.handlers.forEach(br=>br.destroy()),delete this.handlers,this}};Gc.DDResizable=Yo;Yo._originStyleProp=["width","height","position","left","top","opacity","zIndex"]});var a_=jr(Yc=>{"use strict";Object.defineProperty(Yc,"__esModule",{value:!0});Yc.DDDraggable=void 0;var Vi=ao(),Ko=Ds(),lq=Vc(),On=Qa(),Xo=class extends lq.DDBaseImplement{constructor(br,mr={}){super();this.el=br,this.option=mr;let Er=mr.handle.substring(1);this.dragEl=br.classList.contains(Er)?br:br.querySelector(mr.handle)||br,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this.enable()}on(br,mr){super.on(br,mr)}off(br){super.off(br)}enable(){this.disabled!==!1&&(super.enable(),this.dragEl.addEventListener("mousedown",this._mouseDown),On.isTouch&&(this.dragEl.addEventListener("touchstart",On.touchstart),this.dragEl.addEventListener("pointerdown",On.pointerdown)),this.el.classList.remove("ui-draggable-disabled"),this.el.classList.add("ui-draggable"))}disable(br=!1){this.disabled!==!0&&(super.disable(),this.dragEl.removeEventListener("mousedown",this._mouseDown),On.isTouch&&(this.dragEl.removeEventListener("touchstart",On.touchstart),this.dragEl.removeEventListener("pointerdown",On.pointerdown)),this.el.classList.remove("ui-draggable"),br||this.el.classList.add("ui-draggable-disabled"))}destroy(){this.dragTimeout&&window.clearTimeout(this.dragTimeout),delete this.dragTimeout,this.dragging&&this._mouseUp(this.mouseDownEvent),this.disable(!0),delete this.el,delete this.helper,delete this.option,super.destroy()}updateOption(br){return Object.keys(br).forEach(mr=>this.option[mr]=br[mr]),this}_mouseDown(br){if(Vi.DDManager.mouseHandled)return;if(br.button!==0)return!0;let mr=["input","textarea","button","select","option"],Er=br.target.nodeName.toLowerCase();return mr.find(wr=>wr===Er)||br.target.closest('[contenteditable="true"]')||(this.mouseDownEvent=br,delete this.dragging,delete Vi.DDManager.dragElement,delete Vi.DDManager.dropElement,document.addEventListener("mousemove",this._mouseMove,!0),document.addEventListener("mouseup",this._mouseUp,!0),On.isTouch&&(this.dragEl.addEventListener("touchmove",On.touchmove),this.dragEl.addEventListener("touchend",On.touchend)),br.preventDefault(),document.activeElement&&document.activeElement.blur(),Vi.DDManager.mouseHandled=!0),!0}_callDrag(br){if(!this.dragging)return;let mr=Ko.Utils.initEvent(br,{target:this.el,type:"drag"});this.option.drag&&this.option.drag(mr,this.ui()),this.triggerEvent("drag",mr)}_mouseMove(br){var mr;let Er=this.mouseDownEvent;if(this.dragging)if(this._dragFollow(br),Vi.DDManager.pauseDrag){let wr=Number.isInteger(Vi.DDManager.pauseDrag)?Vi.DDManager.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(br),wr)}else this._callDrag(br);else if(Math.abs(br.x-Er.x)+Math.abs(br.y-Er.y)>3){this.dragging=!0,Vi.DDManager.dragElement=this;let wr=(mr=this.el.gridstackNode)===null||mr===void 0?void 0:mr.grid;wr?Vi.DDManager.dropElement=wr.el.ddElement.ddDroppable:delete Vi.DDManager.dropElement,this.helper=this._createHelper(br),this._setupHelperContainmentStyle(),this.dragOffset=this._getDragOffset(br,this.el,this.helperContainment);let _r=Ko.Utils.initEvent(br,{target:this.el,type:"dragstart"});this._setupHelperStyle(br),this.option.start&&this.option.start(_r,this.ui()),this.triggerEvent("dragstart",_r)}return br.preventDefault(),!0}_mouseUp(br){var mr;if(document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),On.isTouch&&(this.dragEl.removeEventListener("touchmove",On.touchmove,!0),this.dragEl.removeEventListener("touchend",On.touchend,!0)),this.dragging){delete this.dragging,((mr=Vi.DDManager.dropElement)===null||mr===void 0?void 0:mr.el)===this.el.parentElement&&delete Vi.DDManager.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper===this.el?this._removeHelperStyle():this.helper.remove();let Er=Ko.Utils.initEvent(br,{target:this.el,type:"dragstop"});this.option.stop&&this.option.stop(Er),this.triggerEvent("dragstop",Er),Vi.DDManager.dropElement&&Vi.DDManager.dropElement.drop(br)}delete this.helper,delete this.mouseDownEvent,delete Vi.DDManager.dragElement,delete Vi.DDManager.dropElement,delete Vi.DDManager.mouseHandled,br.preventDefault()}_createHelper(br){let mr=this.el;return typeof this.option.helper=="function"?mr=this.option.helper(br):this.option.helper==="clone"&&(mr=Ko.Utils.cloneNode(this.el)),document.body.contains(mr)||Ko.Utils.appendTo(mr,this.option.appendTo==="parent"?this.el.parentNode:this.option.appendTo),mr===this.el&&(this.dragElementOriginStyle=Xo.originStyleProp.map(Er=>this.el.style[Er])),mr}_setupHelperStyle(br){this.helper.classList.add("ui-draggable-dragging");let mr=this.helper.style;return mr.pointerEvents="none",mr["min-width"]=0,mr.width=this.dragOffset.width+"px",mr.height=this.dragOffset.height+"px",mr.willChange="left, top",mr.position="fixed",this._dragFollow(br),mr.transition="none",setTimeout(()=>{this.helper&&(mr.transition=null)},0),this}_removeHelperStyle(){var br;this.helper.classList.remove("ui-draggable-dragging");let mr=(br=this.helper)===null||br===void 0?void 0:br.gridstackNode;if(!(mr==null?void 0:mr._isAboutToRemove)&&this.dragElementOriginStyle){let Er=this.helper,wr=this.dragElementOriginStyle.transition||null;Er.style.transition=this.dragElementOriginStyle.transition="none",Xo.originStyleProp.forEach(_r=>Er.style[_r]=this.dragElementOriginStyle[_r]||null),setTimeout(()=>Er.style.transition=wr,50)}return delete this.dragElementOriginStyle,this}_dragFollow(br){let mr={left:0,top:0},Er=this.helper.style,wr=this.dragOffset;Er.left=br.clientX+wr.offsetLeft-mr.left+"px",Er.top=br.clientY+wr.offsetTop-mr.top+"px"}_setupHelperContainmentStyle(){return this.helperContainment=this.helper.parentElement,this.helper.style.position!=="fixed"&&(this.parentOriginStylePosition=this.helperContainment.style.position,window.getComputedStyle(this.helperContainment).position.match(/static/)&&(this.helperContainment.style.position="relative")),this}_getDragOffset(br,mr,Er){let wr=0,_r=0;if(Er){let Sr=document.createElement("div");Ko.Utils.addElStyles(Sr,{opacity:"0",position:"fixed",top:0+"px",left:0+"px",width:"1px",height:"1px",zIndex:"-999999"}),Er.appendChild(Sr);let Tr=Sr.getBoundingClientRect();Er.removeChild(Sr),wr=Tr.left,_r=Tr.top}let xr=mr.getBoundingClientRect();return{left:xr.left,top:xr.top,offsetLeft:-br.clientX+xr.left-wr,offsetTop:-br.clientY+xr.top-_r,width:xr.width,height:xr.height}}ui(){let mr=this.el.parentElement.getBoundingClientRect(),Er=this.helper.getBoundingClientRect();return{position:{top:Er.top-mr.top,left:Er.left-mr.left}}}};Yc.DDDraggable=Xo;Xo.originStyleProp=["transition","pointerEvents","position","left","top","minWidth","willChange"]});var c_=jr(Kc=>{"use strict";Object.defineProperty(Kc,"__esModule",{value:!0});Kc.DDDroppable=void 0;var mn=ao(),cq=Vc(),oh=Ds(),Jo=Qa(),l_=class extends cq.DDBaseImplement{constructor(br,mr={}){super();this.el=br,this.option=mr,this._mouseEnter=this._mouseEnter.bind(this),this._mouseLeave=this._mouseLeave.bind(this),this.enable(),this._setupAccept()}on(br,mr){super.on(br,mr)}off(br){super.off(br)}enable(){this.disabled!==!1&&(super.enable(),this.el.classList.add("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),this.el.addEventListener("mouseenter",this._mouseEnter),this.el.addEventListener("mouseleave",this._mouseLeave),Jo.isTouch&&(this.el.addEventListener("pointerenter",Jo.pointerenter),this.el.addEventListener("pointerleave",Jo.pointerleave)))}disable(br=!1){this.disabled!==!0&&(super.disable(),this.el.classList.remove("ui-droppable"),br||this.el.classList.add("ui-droppable-disabled"),this.el.removeEventListener("mouseenter",this._mouseEnter),this.el.removeEventListener("mouseleave",this._mouseLeave),Jo.isTouch&&(this.el.removeEventListener("pointerenter",Jo.pointerenter),this.el.removeEventListener("pointerleave",Jo.pointerleave)))}destroy(){this.disable(!0),this.el.classList.remove("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),super.destroy()}updateOption(br){return Object.keys(br).forEach(mr=>this.option[mr]=br[mr]),this._setupAccept(),this}_mouseEnter(br){if(!mn.DDManager.dragElement||!this._canDrop(mn.DDManager.dragElement.el))return;br.preventDefault(),br.stopPropagation(),mn.DDManager.dropElement&&mn.DDManager.dropElement!==this&&mn.DDManager.dropElement._mouseLeave(br),mn.DDManager.dropElement=this;let mr=oh.Utils.initEvent(br,{target:this.el,type:"dropover"});this.option.over&&this.option.over(mr,this._ui(mn.DDManager.dragElement)),this.triggerEvent("dropover",mr),this.el.classList.add("ui-droppable-over")}_mouseLeave(br){var mr;if(!mn.DDManager.dragElement||mn.DDManager.dropElement!==this)return;br.preventDefault(),br.stopPropagation();let Er=oh.Utils.initEvent(br,{target:this.el,type:"dropout"});if(this.option.out&&this.option.out(Er,this._ui(mn.DDManager.dragElement)),this.triggerEvent("dropout",Er),mn.DDManager.dropElement===this){delete mn.DDManager.dropElement;let wr,_r=this.el.parentElement;for(;!wr&&_r;)wr=(mr=_r.ddElement)===null||mr===void 0?void 0:mr.ddDroppable,_r=_r.parentElement;wr&&wr._mouseEnter(br)}}drop(br){br.preventDefault();let mr=oh.Utils.initEvent(br,{target:this.el,type:"drop"});this.option.drop&&this.option.drop(mr,this._ui(mn.DDManager.dragElement)),this.triggerEvent("drop",mr)}_canDrop(br){return br&&(!this.accept||this.accept(br))}_setupAccept(){return this.option.accept?(typeof this.option.accept=="string"?this.accept=br=>br.matches(this.option.accept):this.accept=this.option.accept,this):this}_ui(br){return Object.assign({draggable:br.el},br.ui())}};Kc.DDDroppable=l_});var u_=jr(Jc=>{"use strict";Object.defineProperty(Jc,"__esModule",{value:!0});Jc.DDElement=void 0;var uq=o_(),dq=a_(),fq=c_(),Xc=class{constructor(br){this.el=br}static init(br){return br.ddElement||(br.ddElement=new Xc(br)),br.ddElement}on(br,mr){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(br)>-1?this.ddDraggable.on(br,mr):this.ddDroppable&&["drop","dropover","dropout"].indexOf(br)>-1?this.ddDroppable.on(br,mr):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(br)>-1&&this.ddResizable.on(br,mr),this}off(br){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(br)>-1?this.ddDraggable.off(br):this.ddDroppable&&["drop","dropover","dropout"].indexOf(br)>-1?this.ddDroppable.off(br):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(br)>-1&&this.ddResizable.off(br),this}setupDraggable(br){return this.ddDraggable?this.ddDraggable.updateOption(br):this.ddDraggable=new dq.DDDraggable(this.el,br),this}cleanDraggable(){return this.ddDraggable&&(this.ddDraggable.destroy(),delete this.ddDraggable),this}setupResizable(br){return this.ddResizable?this.ddResizable.updateOption(br):this.ddResizable=new uq.DDResizable(this.el,br),this}cleanResizable(){return this.ddResizable&&(this.ddResizable.destroy(),delete this.ddResizable),this}setupDroppable(br){return this.ddDroppable?this.ddDroppable.updateOption(br):this.ddDroppable=new fq.DDDroppable(this.el,br),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}};Jc.DDElement=Xc});var ah=jr(Zc=>{"use strict";Object.defineProperty(Zc,"__esModule",{value:!0});Zc.DDGridStack=void 0;var hq=Ds(),Qc=ao(),pq=u_(),d_=class{resizable(br,mr,Er,wr){return this._getDDElements(br).forEach(_r=>{if(mr==="disable"||mr==="enable")_r.ddResizable&&_r.ddResizable[mr]();else if(mr==="destroy")_r.ddResizable&&_r.cleanResizable();else if(mr==="option")_r.setupResizable({[Er]:wr});else{let xr=_r.el.gridstackNode.grid,Sr=_r.el.getAttribute("gs-resize-handles")?_r.el.getAttribute("gs-resize-handles"):xr.opts.resizable.handles,Tr=!xr.opts.alwaysShowResizeHandle;_r.setupResizable(Object.assign(Object.assign(Object.assign({},xr.opts.resizable),{handles:Sr,autoHide:Tr}),{start:mr.start,stop:mr.stop,resize:mr.resize}))}}),this}draggable(br,mr,Er,wr){return this._getDDElements(br).forEach(_r=>{if(mr==="disable"||mr==="enable")_r.ddDraggable&&_r.ddDraggable[mr]();else if(mr==="destroy")_r.ddDraggable&&_r.cleanDraggable();else if(mr==="option")_r.setupDraggable({[Er]:wr});else{let xr=_r.el.gridstackNode.grid;_r.setupDraggable(Object.assign(Object.assign({},xr.opts.draggable),{start:mr.start,stop:mr.stop,drag:mr.drag}))}}),this}dragIn(br,mr){return this._getDDElements(br).forEach(Er=>Er.setupDraggable(mr)),this}droppable(br,mr,Er,wr){return typeof mr.accept=="function"&&!mr._accept&&(mr._accept=mr.accept,mr.accept=_r=>mr._accept(_r)),this._getDDElements(br).forEach(_r=>{mr==="disable"||mr==="enable"?_r.ddDroppable&&_r.ddDroppable[mr]():mr==="destroy"?_r.ddDroppable&&_r.cleanDroppable():mr==="option"?_r.setupDroppable({[Er]:wr}):_r.setupDroppable(mr)}),this}isDroppable(br){return!!(br&&br.ddElement&&br.ddElement.ddDroppable&&!br.ddElement.ddDroppable.disabled)}isDraggable(br){return!!(br&&br.ddElement&&br.ddElement.ddDraggable&&!br.ddElement.ddDraggable.disabled)}isResizable(br){return!!(br&&br.ddElement&&br.ddElement.ddResizable&&!br.ddElement.ddResizable.disabled)}on(br,mr,Er){return this._getDDElements(br).forEach(wr=>wr.on(mr,_r=>{Er(_r,Qc.DDManager.dragElement?Qc.DDManager.dragElement.el:_r.target,Qc.DDManager.dragElement?Qc.DDManager.dragElement.helper:null)})),this}off(br,mr){return this._getDDElements(br).forEach(Er=>Er.off(mr)),this}_getDDElements(br,mr=!0){let Er=hq.Utils.getElements(br);if(!Er.length)return[];let wr=Er.map(_r=>_r.ddElement||(mr?pq.DDElement.init(_r):null));return mr||wr.filter(_r=>_r),wr}};Zc.DDGridStack=d_});var f_=jr(An=>{"use strict";var mq=An&&An.__createBinding||(Object.create?function(yr,br,mr,Er){Er===void 0&&(Er=mr),Object.defineProperty(yr,Er,{enumerable:!0,get:function(){return br[mr]}})}:function(yr,br,mr,Er){Er===void 0&&(Er=mr),yr[Er]=br[mr]}),eu=An&&An.__exportStar||function(yr,br){for(var mr in yr)mr!=="default"&&!br.hasOwnProperty(mr)&&mq(br,yr,mr)};Object.defineProperty(An,"__esModule",{value:!0});An.GridStack=void 0;var lh=ih(),Yr=Ds(),gn=nh(),gq=ah(),vq=Qa(),tu=ao(),Wi=new gq.DDGridStack;eu(nh(),An);eu(Ds(),An);eu(ih(),An);eu(ah(),An);var Ci=class{constructor(br,mr={}){var Er,wr;this._gsEventHandler={},this._extraDragRow=0,this.el=br,mr=mr||{},br.classList.contains("grid-stack")||this.el.classList.add("grid-stack"),mr.row&&(mr.minRow=mr.maxRow=mr.row,delete mr.row);let _r=Yr.Utils.toNumber(br.getAttribute("gs-row"));mr.column==="auto"&&delete mr.column;let xr=mr;xr.minWidth!==void 0&&(mr.oneColumnSize=mr.oneColumnSize||xr.minWidth,delete xr.minWidth),mr.alwaysShowResizeHandle!==void 0&&(mr._alwaysShowResizeHandle=mr.alwaysShowResizeHandle);let Sr=Object.assign(Object.assign({},Yr.Utils.cloneDeep(gn.gridDefaults)),{column:Yr.Utils.toNumber(br.getAttribute("gs-column"))||gn.gridDefaults.column,minRow:_r||Yr.Utils.toNumber(br.getAttribute("gs-min-row"))||gn.gridDefaults.minRow,maxRow:_r||Yr.Utils.toNumber(br.getAttribute("gs-max-row"))||gn.gridDefaults.maxRow,staticGrid:Yr.Utils.toBool(br.getAttribute("gs-static"))||gn.gridDefaults.staticGrid,draggable:{handle:(mr.handleClass?"."+mr.handleClass:mr.handle?mr.handle:"")||gn.gridDefaults.draggable.handle},removableOptions:{accept:mr.itemClass?"."+mr.itemClass:gn.gridDefaults.removableOptions.accept}});br.getAttribute("gs-animate")&&(Sr.animate=Yr.Utils.toBool(br.getAttribute("gs-animate"))),this.opts=Yr.Utils.defaults(mr,Sr),mr=null,this._initMargin(),this.opts.column!==1&&!this.opts.disableOneColumnMode&&this._widthOrContainer()<=this.opts.oneColumnSize&&(this._prevColumn=this.getColumn(),this.opts.column=1),this.opts.rtl==="auto"&&(this.opts.rtl=br.style.direction==="rtl"),this.opts.rtl&&this.el.classList.add("grid-stack-rtl");let Tr=(Er=Yr.Utils.closestUpByClass(this.el,gn.gridDefaults.itemClass))===null||Er===void 0?void 0:Er.gridstackNode;Tr&&(Tr.subGrid=this,this.parentGridItem=Tr,this.el.classList.add("grid-stack-nested"),Tr.el.classList.add("grid-stack-sub-grid")),this._isAutoCellHeight=this.opts.cellHeight==="auto",this._isAutoCellHeight||this.opts.cellHeight==="initial"?this.cellHeight(void 0,!1):(typeof this.opts.cellHeight=="number"&&this.opts.cellHeightUnit&&this.opts.cellHeightUnit!==gn.gridDefaults.cellHeightUnit&&(this.opts.cellHeight=this.opts.cellHeight+this.opts.cellHeightUnit,delete this.opts.cellHeightUnit),this.cellHeight(this.opts.cellHeight,!1)),this.opts.alwaysShowResizeHandle==="mobile"&&(this.opts.alwaysShowResizeHandle=vq.isTouch),this._styleSheetClass="grid-stack-instance-"+lh.GridStackEngine._idSeq++,this.el.classList.add(this._styleSheetClass),this._setStaticClass();let Dr=this.opts.engineClass||Ci.engineClass||lh.GridStackEngine;if(this.engine=new Dr({column:this.getColumn(),float:this.opts.float,maxRow:this.opts.maxRow,onChange:Or=>{let Cr=0;this.engine.nodes.forEach(Ar=>{Cr=Math.max(Cr,Ar.y+Ar.h)}),Or.forEach(Ar=>{let Lr=Ar.el;!Lr||(Ar._removeDOM?(Lr&&Lr.remove(),delete Ar._removeDOM):this._writePosAttr(Lr,Ar))}),this._updateStyles(!1,Cr)}}),this.opts.auto){this.batchUpdate();let Or=[],Cr=this.getColumn();Cr===1&&this._prevColumn&&(Cr=this._prevColumn),this.getGridItems().forEach(Ar=>{let Lr=parseInt(Ar.getAttribute("gs-x")),Rr=parseInt(Ar.getAttribute("gs-y"));Or.push({el:Ar,i:(Number.isNaN(Lr)?1e3:Lr)+(Number.isNaN(Rr)?1e3:Rr)*Cr})}),Or.sort((Ar,Lr)=>Lr.i-Ar.i).forEach(Ar=>this._prepareElement(Ar.el)),this.batchUpdate(!1)}if(this.opts.children){let Or=this.opts.children;delete this.opts.children,Or.length&&this.load(Or)}this.setAnimation(this.opts.animate),this._updateStyles(),this.opts.column!=12&&this.el.classList.add("grid-stack-"+this.opts.column),this.opts.dragIn&&Ci.setupDragIn(this.opts.dragIn,this.opts.dragInOptions),delete this.opts.dragIn,delete this.opts.dragInOptions,this.opts.subGridDynamic&&!tu.DDManager.pauseDrag&&(tu.DDManager.pauseDrag=!0),((wr=this.opts.draggable)===null||wr===void 0?void 0:wr.pause)!==void 0&&(tu.DDManager.pauseDrag=this.opts.draggable.pause),this._setupRemoveDrop(),this._setupAcceptWidget(),this._updateWindowResizeEvent()}static init(br={},mr=".grid-stack"){let Er=Ci.getGridElement(mr);return Er?(Er.gridstack||(Er.gridstack=new Ci(Er,Yr.Utils.cloneDeep(br))),Er.gridstack):(console.error(typeof mr=="string"?'GridStack.initAll() no grid was found with selector "'+mr+`" - element missing or wrong selector ? +(()=>{var j_=Object.create;var ia=Object.defineProperty,H_=Object.defineProperties,B_=Object.getOwnPropertyDescriptor,F_=Object.getOwnPropertyDescriptors,z_=Object.getOwnPropertyNames,hh=Object.getOwnPropertySymbols,$_=Object.getPrototypeOf,ph=Object.prototype.hasOwnProperty,U_=Object.prototype.propertyIsEnumerable;var lu=(yr,br,mr)=>br in yr?ia(yr,br,{enumerable:!0,configurable:!0,writable:!0,value:mr}):yr[br]=mr,ci=(yr,br)=>{for(var mr in br||(br={}))ph.call(br,mr)&&lu(yr,mr,br[mr]);if(hh)for(var mr of hh(br))U_.call(br,mr)&&lu(yr,mr,br[mr]);return yr},ll=(yr,br)=>H_(yr,F_(br)),mh=yr=>ia(yr,"__esModule",{value:!0});var jr=(yr,br)=>()=>(br||yr((br={exports:{}}).exports,br),br.exports),V_=(yr,br)=>{mh(yr);for(var mr in br)ia(yr,mr,{get:br[mr],enumerable:!0})},W_=(yr,br,mr)=>{if(br&&typeof br=="object"||typeof br=="function")for(let Er of z_(br))!ph.call(yr,Er)&&Er!=="default"&&ia(yr,Er,{get:()=>br[Er],enumerable:!(mr=B_(br,Er))||mr.enumerable});return yr},vn=yr=>W_(mh(ia(yr!=null?j_($_(yr)):{},"default",yr&&yr.__esModule&&"default"in yr?{get:()=>yr.default,enumerable:!0}:{value:yr,enumerable:!0})),yr);var di=(yr,br,mr)=>(lu(yr,typeof br!="symbol"?br+"":br,mr),mr);var $i=(yr,br,mr)=>new Promise((Er,wr)=>{var _r=Tr=>{try{Sr(mr.next(Tr))}catch(Or){wr(Or)}},xr=Tr=>{try{Sr(mr.throw(Tr))}catch(Or){wr(Or)}},Sr=Tr=>Tr.done?Er(Tr.value):Promise.resolve(Tr.value).then(_r,xr);Sr((mr=mr.apply(yr,br)).next())});var Jp=jr((exports,module)=>{(function(yr,br){typeof define=="function"&&define.amd?define([],br):yr.htmx=yr.htmx||br()})(typeof self!="undefined"?self:exports,function(){return function(){"use strict";var U={onLoad:t,process:vt,on:X,off:F,trigger:$,ajax:nr,find:R,findAll:O,closest:N,values:function(yr,br){var mr=Pt(yr,br||"post");return mr.values},remove:q,addClass:L,removeClass:T,toggleClass:A,takeClass:H,defineExtension:fr,removeExtension:cr,logAll:C,logger:null,config:{historyEnabled:!0,historyCacheSize:10,refreshOnHistoryMiss:!1,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:!0,indicatorClass:"htmx-indicator",requestClass:"htmx-request",addedClass:"htmx-added",settlingClass:"htmx-settling",swappingClass:"htmx-swapping",allowEval:!0,inlineScriptNonce:"",attributesToSettle:["class","style","width","height"],withCredentials:!1,timeout:0,wsReconnectDelay:"full-jitter",disableSelector:"[hx-disable], [data-hx-disable]",useTemplateFragments:!1,scrollBehavior:"smooth",defaultFocusScroll:!1},parseInterval:v,_:e,createEventSource:function(yr){return new EventSource(yr,{withCredentials:!0})},createWebSocket:function(yr){return new WebSocket(yr,[])},version:"1.8.0"},r={addTriggerHandler:st,bodyContains:K,canAccessLocalStorage:E,filterValues:Ut,hasAttribute:o,getAttributeValue:V,getClosestMatch:h,getExpressionVars:Qt,getHeaders:Bt,getInputValues:Pt,getInternalData:W,getSwapSpecification:_t,getTriggerSpecs:Me,getTarget:re,makeFragment:g,mergeObjects:Y,makeSettleInfo:Gt,oobSwap:ae,selectAndSwap:Ee,settleImmediately:Lt,shouldCancel:je,triggerEvent:$,triggerErrorEvent:J,withExtensions:xt},n=["get","post","put","delete","patch"],i=n.map(function(yr){return"[hx-"+yr+"], [data-hx-"+yr+"]"}).join(", ");function v(yr){if(yr!=null)return yr.slice(-2)=="ms"?parseFloat(yr.slice(0,-2))||void 0:yr.slice(-1)=="s"?parseFloat(yr.slice(0,-1))*1e3||void 0:yr.slice(-1)=="m"?parseFloat(yr.slice(0,-1))*1e3*60||void 0:parseFloat(yr)||void 0}function f(yr,br){return yr.getAttribute&&yr.getAttribute(br)}function o(yr,br){return yr.hasAttribute&&(yr.hasAttribute(br)||yr.hasAttribute("data-"+br))}function V(yr,br){return f(yr,br)||f(yr,"data-"+br)}function u(yr){return yr.parentElement}function _(){return document}function h(yr,br){for(;yr&&!br(yr);)yr=u(yr);return yr||null}function a(yr,br,mr){var Er=V(br,mr),wr=V(br,"hx-disinherit");return yr!==br&&wr&&(wr==="*"||wr.split(" ").indexOf(mr)>=0)?"unset":Er}function z(yr,br){var mr=null;if(h(yr,function(Er){return mr=a(yr,Er,br)}),mr!=="unset")return mr}function d(yr,br){var mr=yr.matches||yr.matchesSelector||yr.msMatchesSelector||yr.mozMatchesSelector||yr.webkitMatchesSelector||yr.oMatchesSelector;return mr&&mr.call(yr,br)}function s(yr){var br=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,mr=br.exec(yr);return mr?mr[1].toLowerCase():""}function l(yr,br){for(var mr=new DOMParser,Er=mr.parseFromString(yr,"text/html"),wr=Er.body;br>0;)br--,wr=wr.firstChild;return wr==null&&(wr=_().createDocumentFragment()),wr}function g(yr){if(U.config.useTemplateFragments){var br=l("",0);return br.querySelector("template").content}else{var mr=s(yr);switch(mr){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return l(""+yr+"
    ",1);case"col":return l(""+yr+"
    ",2);case"tr":return l(""+yr+"
    ",2);case"td":case"th":return l(""+yr+"
    ",3);case"script":return l("
    "+yr+"
    ",1);default:return l(yr,0)}}}function Z(yr){yr&&yr()}function p(yr,br){return Object.prototype.toString.call(yr)==="[object "+br+"]"}function m(yr){return p(yr,"Function")}function x(yr){return p(yr,"Object")}function W(yr){var br="htmx-internal-data",mr=yr[br];return mr||(mr=yr[br]={}),mr}function y(yr){var br=[];if(yr)for(var mr=0;mr=0}function K(yr){return yr.getRootNode()instanceof ShadowRoot?_().body.contains(yr.getRootNode().host):_().body.contains(yr)}function w(yr){return yr.trim().split(/\s+/)}function Y(yr,br){for(var mr in br)br.hasOwnProperty(mr)&&(yr[mr]=br[mr]);return yr}function S(yr){try{return JSON.parse(yr)}catch(br){return yt(br),null}}function E(){var yr="htmx:localStorageTest";try{return localStorage.setItem(yr,yr),localStorage.removeItem(yr),!0}catch(br){return!1}}function e(e){return Zt(_().body,function(){return eval(e)})}function t(yr){var br=U.on("htmx:load",function(mr){yr(mr.detail.elt)});return br}function C(){U.logger=function(yr,br,mr){console&&console.log(br,yr,mr)}}function R(yr,br){return br?yr.querySelector(br):R(_(),yr)}function O(yr,br){return br?yr.querySelectorAll(br):O(_(),yr)}function q(yr,br){yr=D(yr),br?setTimeout(function(){q(yr)},br):yr.parentElement.removeChild(yr)}function L(yr,br,mr){yr=D(yr),mr?setTimeout(function(){L(yr,br)},mr):yr.classList&&yr.classList.add(br)}function T(yr,br,mr){yr=D(yr),mr?setTimeout(function(){T(yr,br)},mr):yr.classList&&(yr.classList.remove(br),yr.classList.length===0&&yr.removeAttribute("class"))}function A(yr,br){yr=D(yr),yr.classList.toggle(br)}function H(yr,br){yr=D(yr),G(yr.parentElement.children,function(mr){T(mr,br)}),L(yr,br)}function N(yr,br){if(yr=D(yr),yr.closest)return yr.closest(br);do if(yr==null||d(yr,br))return yr;while(yr=yr&&u(yr))}function I(yr,br){return br.indexOf("closest ")===0?[N(yr,br.substr(8))]:br.indexOf("find ")===0?[R(yr,br.substr(5))]:br.indexOf("next ")===0?[k(yr,br.substr(5))]:br.indexOf("previous ")===0?[M(yr,br.substr(9))]:br==="document"?[document]:br==="window"?[window]:_().querySelectorAll(br)}var k=function(yr,br){for(var mr=_().querySelectorAll(br),Er=0;Er=0;Er--){var wr=mr[Er];if(wr.compareDocumentPosition(yr)===Node.DOCUMENT_POSITION_FOLLOWING)return wr}};function Q(yr,br){return br?I(yr,br)[0]:I(_().body,yr)[0]}function D(yr){return p(yr,"String")?R(yr):yr}function P(yr,br,mr){return m(br)?{target:_().body,event:yr,listener:br}:{target:D(yr),event:br,listener:mr}}function X(yr,br,mr){dr(function(){var wr=P(yr,br,mr);wr.target.addEventListener(wr.event,wr.listener)});var Er=m(br);return Er?br:mr}function F(yr,br,mr){return dr(function(){var Er=P(yr,br,mr);Er.target.removeEventListener(Er.event,Er.listener)}),m(br)?br:mr}var ee=_().createElement("output");function j(yr,br){var mr=z(yr,br);if(mr){if(mr==="this")return[te(yr,br)];var Er=I(yr,mr);return Er.length===0?(yt('The selector "'+mr+'" on '+br+" returned no matches!"),[ee]):Er}}function te(yr,br){return h(yr,function(mr){return V(mr,br)!=null})}function re(yr){var br=z(yr,"hx-target");if(br)return br==="this"?te(yr,"hx-target"):Q(yr,br);var mr=W(yr);return mr.boosted?_().body:yr}function B(yr){for(var br=U.config.attributesToSettle,mr=0;mr0?(wr=yr.substr(0,yr.indexOf(":")),Er=yr.substr(yr.indexOf(":")+1,yr.length)):wr=yr);var _r=_().querySelectorAll(Er);return _r?(G(_r,function(xr){var Sr,Tr=br.cloneNode(!0);Sr=_().createDocumentFragment(),Sr.appendChild(Tr),ie(wr,xr)||(Sr=Tr);var Or={shouldSwap:!0,target:xr,fragment:Sr};!$(xr,"htmx:oobBeforeSwap",Or)||(xr=Or.target,Or.shouldSwap&&we(wr,xr,xr,Sr,mr),G(mr.elts,function(Dr){$(Dr,"htmx:oobAfterSwap",Or)}))}),br.parentNode.removeChild(br)):(br.parentNode.removeChild(br),J(_().body,"htmx:oobErrorNoTarget",{content:br})),yr}function oe(yr,br,mr){var Er=z(yr,"hx-select-oob");if(Er){var wr=Er.split(",");for(let Or=0;Or0){var wr=yr.querySelector(Er.tagName+"[id='"+Er.id+"']");if(wr&&wr!==yr){var _r=Er.cloneNode();ne(Er,wr),mr.tasks.push(function(){ne(Er,_r)})}}})}function ue(yr){return function(){T(yr,U.config.addedClass),vt(yr),ut(yr),fe(yr),$(yr,"htmx:load")}}function fe(yr){var br="[autofocus]",mr=d(yr,br)?yr:yr.querySelector(br);mr!=null&&mr.focus()}function ce(yr,br,mr,Er){for(le(yr,mr,Er);mr.childNodes.length>0;){var wr=mr.firstChild;L(wr,U.config.addedClass),yr.insertBefore(wr,br),wr.nodeType!==Node.TEXT_NODE&&wr.nodeType!==Node.COMMENT_NODE&&Er.tasks.push(ue(wr))}}function he(yr){var br=W(yr);br.webSocket&&br.webSocket.close(),br.sseEventSource&&br.sseEventSource.close(),$(yr,"htmx:beforeCleanupElement"),br.listenerInfos&&G(br.listenerInfos,function(mr){yr!==mr.on&&mr.on.removeEventListener(mr.trigger,mr.listener)}),yr.children&&G(yr.children,function(mr){he(mr)})}function de(yr,br,mr){if(yr.tagName==="BODY")return ye(yr,br,mr);var Er,wr=yr.previousSibling;for(ce(u(yr),yr,br,mr),wr==null?Er=u(yr).firstChild:Er=wr.nextSibling,W(yr).replacedWith=Er,mr.elts=[];Er&&Er!==yr;)Er.nodeType===Node.ELEMENT_NODE&&mr.elts.push(Er),Er=Er.nextElementSibling;he(yr),u(yr).removeChild(yr)}function ve(yr,br,mr){return ce(yr,yr.firstChild,br,mr)}function ge(yr,br,mr){return ce(u(yr),yr,br,mr)}function pe(yr,br,mr){return ce(yr,null,br,mr)}function me(yr,br,mr){return ce(u(yr),yr.nextSibling,br,mr)}function xe(yr,br,mr){return he(yr),u(yr).removeChild(yr)}function ye(yr,br,mr){var Er=yr.firstChild;if(ce(yr,Er,br,mr),Er){for(;Er.nextSibling;)he(Er.nextSibling),yr.removeChild(Er.nextSibling);he(Er),yr.removeChild(Er)}}function be(yr,br){var mr=z(yr,"hx-select");if(mr){var Er=_().createDocumentFragment();G(br.querySelectorAll(mr),function(wr){Er.appendChild(wr)}),br=Er}return br}function we(yr,br,mr,Er,wr){switch(yr){case"none":return;case"outerHTML":de(mr,Er,wr);return;case"afterbegin":ve(mr,Er,wr);return;case"beforebegin":ge(mr,Er,wr);return;case"beforeend":pe(mr,Er,wr);return;case"afterend":me(mr,Er,wr);return;case"delete":xe(mr,Er,wr);return;default:for(var _r=hr(br),xr=0;xr<_r.length;xr++){var Sr=_r[xr];try{var Tr=Sr.handleSwap(yr,mr,Er,wr);if(Tr){if(typeof Tr.length!="undefined")for(var Or=0;Or-1){var br=yr.replace(/]*>|>)([\s\S]*?)<\/svg>/gim,""),mr=br.match(/]*>|>)([\s\S]*?)<\/title>/im);if(mr)return mr[2]}}function Ee(yr,br,mr,Er,wr){wr.title=Se(Er);var _r=g(Er);if(_r)return oe(mr,_r,wr),_r=be(mr,_r),se(_r),we(yr,mr,br,_r,wr)}function Ce(yr,br,mr){var Er=yr.getResponseHeader(br);if(Er.indexOf("{")===0){var wr=S(Er);for(var _r in wr)if(wr.hasOwnProperty(_r)){var xr=wr[_r];x(xr)||(xr={value:xr}),$(mr,_r,xr)}}else $(mr,Er,[])}var Re=/\s/,Oe=/[\s,]/,qe=/[_$a-zA-Z]/,Le=/[_$a-zA-Z0-9]/,Te=['"',"'","/"],Ae=/[^\s]/;function He(yr){for(var br=[],mr=0;mr0;){var xr=br[0];if(xr==="]"){if(Er--,Er===0){_r===null&&(wr=wr+"true"),br.shift(),wr+=")})";try{var Sr=Zt(yr,function(){return Function(wr)()},function(){return!0});return Sr.source=wr,Sr}catch(Tr){return J(_().body,"htmx:syntax:error",{error:Tr,source:wr}),null}}}else xr==="["&&Er++;Ne(xr,_r,mr)?wr+="(("+mr+"."+xr+") ? ("+mr+"."+xr+") : (window."+xr+"))":wr=wr+xr,_r=br.shift()}}}function c(yr,br){for(var mr="";yr.length>0&&!yr[0].match(br);)mr+=yr.shift();return mr}var ke="input, textarea, select";function Me(yr){var br=V(yr,"hx-trigger"),mr=[];if(br){var Er=He(br);do{c(Er,Ae);var wr=Er.length,_r=c(Er,/[,\[\s]/);if(_r!=="")if(_r==="every"){var xr={trigger:"every"};c(Er,Ae),xr.pollInterval=v(c(Er,/[,\[\s]/)),c(Er,Ae);var Sr=Ie(yr,Er,"event");Sr&&(xr.eventFilter=Sr),mr.push(xr)}else if(_r.indexOf("sse:")===0)mr.push({trigger:"sse",sseEvent:_r.substr(4)});else{var Tr={trigger:_r},Sr=Ie(yr,Er,"event");for(Sr&&(Tr.eventFilter=Sr);Er.length>0&&Er[0]!==",";){c(Er,Ae);var Or=Er.shift();if(Or==="changed")Tr.changed=!0;else if(Or==="once")Tr.once=!0;else if(Or==="consume")Tr.consume=!0;else if(Or==="delay"&&Er[0]===":")Er.shift(),Tr.delay=v(c(Er,Oe));else if(Or==="from"&&Er[0]===":"){Er.shift();var Dr=c(Er,Oe);(Dr==="closest"||Dr==="find"||Dr==="next"||Dr==="previous")&&(Er.shift(),Dr+=" "+c(Er,Oe)),Tr.from=Dr}else Or==="target"&&Er[0]===":"?(Er.shift(),Tr.target=c(Er,Oe)):Or==="throttle"&&Er[0]===":"?(Er.shift(),Tr.throttle=v(c(Er,Oe))):Or==="queue"&&Er[0]===":"?(Er.shift(),Tr.queue=c(Er,Oe)):(Or==="root"||Or==="threshold")&&Er[0]===":"?(Er.shift(),Tr[Or]=c(Er,Oe)):J(yr,"htmx:syntax:error",{token:Er.shift()})}mr.push(Tr)}Er.length===wr&&J(yr,"htmx:syntax:error",{token:Er.shift()}),c(Er,Ae)}while(Er[0]===","&&Er.shift())}return mr.length>0?mr:d(yr,"form")?[{trigger:"submit"}]:d(yr,'input[type="button"]')?[{trigger:"click"}]:d(yr,ke)?[{trigger:"change"}]:[{trigger:"click"}]}function De(yr){W(yr).cancelled=!0}function Pe(yr,br,mr){var Er=W(yr);Er.timeout=setTimeout(function(){K(yr)&&Er.cancelled!==!0&&(Ue(mr,pt("hx:poll:trigger",{triggerSpec:mr,target:yr}))||br(yr),Pe(yr,br,mr))},mr.pollInterval)}function Xe(yr){return location.hostname===yr.hostname&&f(yr,"href")&&f(yr,"href").indexOf("#")!==0}function Fe(yr,br,mr){if(yr.tagName==="A"&&Xe(yr)&&(yr.target===""||yr.target==="_self")||yr.tagName==="FORM"){br.boosted=!0;var Er,wr;if(yr.tagName==="A")Er="get",wr=f(yr,"href");else{var _r=f(yr,"method");Er=_r?_r.toLowerCase():"get",wr=f(yr,"action")}mr.forEach(function(xr){Ve(yr,function(Sr){ar(Er,wr,yr,Sr)},br,xr,!0)})}}function je(yr,br){return!!((yr.type==="submit"||yr.type==="click")&&(br.tagName==="FORM"||d(br,'input[type="submit"], button')&&N(br,"form")!==null||br.tagName==="A"&&br.href&&(br.getAttribute("href")==="#"||br.getAttribute("href").indexOf("#")!==0)))}function Be(yr,br){return W(yr).boosted&&yr.tagName==="A"&&br.type==="click"&&(br.ctrlKey||br.metaKey)}function Ue(yr,br){var mr=yr.eventFilter;if(mr)try{return mr(br)!==!0}catch(Er){return J(_().body,"htmx:eventFilter:error",{error:Er,source:mr.source}),!0}return!1}function Ve(yr,br,mr,Er,wr){var _r;Er.from?_r=I(yr,Er.from):_r=[yr],G(_r,function(xr){var Sr=function(Tr){if(!K(yr)){xr.removeEventListener(Er.trigger,Sr);return}if(!Be(yr,Tr)&&((wr||je(Tr,yr))&&Tr.preventDefault(),!Ue(Er,Tr))){var Or=W(Tr);Or.triggerSpec=Er,Or.handledFor==null&&(Or.handledFor=[]);var Dr=W(yr);if(Or.handledFor.indexOf(yr)<0){if(Or.handledFor.push(yr),Er.consume&&Tr.stopPropagation(),Er.target&&Tr.target&&!d(Tr.target,Er.target))return;if(Er.once){if(Dr.triggeredOnce)return;Dr.triggeredOnce=!0}if(Er.changed){if(Dr.lastValue===yr.value)return;Dr.lastValue=yr.value}if(Dr.delayed&&clearTimeout(Dr.delayed),Dr.throttle)return;Er.throttle?Dr.throttle||(br(yr,Tr),Dr.throttle=setTimeout(function(){Dr.throttle=null},Er.throttle)):Er.delay?Dr.delayed=setTimeout(function(){br(yr,Tr)},Er.delay):br(yr,Tr)}}};mr.listenerInfos==null&&(mr.listenerInfos=[]),mr.listenerInfos.push({trigger:Er.trigger,listener:Sr,on:xr}),xr.addEventListener(Er.trigger,Sr)})}var _e=!1,ze=null;function We(){ze||(ze=function(){_e=!0},window.addEventListener("scroll",ze),setInterval(function(){_e&&(_e=!1,G(_().querySelectorAll("[hx-trigger='revealed'],[data-hx-trigger='revealed']"),function(yr){Ge(yr)}))},200))}function Ge(yr){if(!o(yr,"data-hx-revealed")&&b(yr)){yr.setAttribute("data-hx-revealed","true");var br=W(yr);br.initialized?$(yr,"revealed"):yr.addEventListener("htmx:afterProcessNode",function(mr){$(yr,"revealed")},{once:!0})}}function Je(yr,br,mr){for(var Er=w(mr),wr=0;wr=0){var xr=Ye(mr);setTimeout(function(){$e(yr,br,mr+1)},xr)}},wr.onopen=function(_r){mr=0},W(yr).webSocket=wr,wr.addEventListener("message",function(_r){if(!Ze(yr)){var xr=_r.data;xt(yr,function(Ar){xr=Ar.transformResponse(xr,null,yr)});for(var Sr=Gt(yr),Tr=g(xr),Or=y(Tr.children),Dr=0;Dr0){$(yr,"htmx:validation:halted",xr);return}Er.send(JSON.stringify(Dr)),je(mr,yr)&&mr.preventDefault()}):J(yr,"htmx:noWebSocketSourceError")}function Ye(yr){var br=U.config.wsReconnectDelay;if(typeof br=="function")return br(yr);if(br==="full-jitter"){var mr=Math.min(yr,6),Er=1e3*Math.pow(2,mr);return Er*Math.random()}yt('htmx.config.wsReconnectDelay must either be a function or the string "full-jitter"')}function Qe(yr,br,mr){for(var Er=w(mr),wr=0;wrU.config.historyCacheSize;)wr.shift();for(;wr.length>0;)try{localStorage.setItem("htmx-history-cache",JSON.stringify(wr));break}catch(xr){J(_().body,"htmx:historyCacheError",{cause:xr,cache:wr}),wr.shift()}}}function Et(yr){if(!E())return null;for(var br=S(localStorage.getItem("htmx-history-cache"))||[],mr=0;mr=200&&this.status<400){$(_().body,"htmx:historyCacheMissLoad",mr);var Er=g(this.response);Er=Er.querySelector("[hx-history-elt],[data-hx-history-elt]")||Er;var wr=wt(),_r=Gt(wr);ye(wr,Er,_r),Lt(_r.tasks),bt=yr,$(_().body,"htmx:historyRestore",{path:yr})}else J(_().body,"htmx:historyCacheMissLoadError",mr)},br.send()}function At(yr){Rt(),yr=yr||location.pathname+location.search;var br=Et(yr);if(br){var mr=g(br.content),Er=wt(),wr=Gt(Er);ye(Er,mr,wr),Lt(wr.tasks),document.title=br.title,window.scrollTo(0,br.scroll),bt=yr,$(_().body,"htmx:historyRestore",{path:yr})}else U.config.refreshOnHistoryMiss?window.location.reload(!0):Tt(yr)}function Ht(yr){var br=j(yr,"hx-indicator");return br==null&&(br=[yr]),G(br,function(mr){mr.classList.add.call(mr.classList,U.config.requestClass)}),br}function Nt(yr){G(yr,function(br){br.classList.remove.call(br.classList,U.config.requestClass)})}function It(yr,br){for(var mr=0;mr=0}function _t(yr,br){var mr=br||z(yr,"hx-swap"),Er={swapStyle:W(yr).boosted?"innerHTML":U.config.defaultSwapStyle,swapDelay:U.config.defaultSwapDelay,settleDelay:U.config.defaultSettleDelay};if(W(yr).boosted&&!Vt(yr)&&(Er.show="top"),mr){var wr=w(mr);if(wr.length>0){Er.swapStyle=wr[0];for(var _r=1;_r0?Tr.join(":"):null;Er.scroll=Or,Er.scrollTarget=Dr}if(xr.indexOf("show:")===0){var Cr=xr.substr(5),Tr=Cr.split(":"),Ar=Tr.pop(),Dr=Tr.length>0?Tr.join(":"):null;Er.show=Ar,Er.showTarget=Dr}if(xr.indexOf("focus-scroll:")===0){var Lr=xr.substr("focus-scroll:".length);Er.focusScroll=Lr=="true"}}}}return Er}function zt(yr){return z(yr,"hx-encoding")==="multipart/form-data"||d(yr,"form")&&f(yr,"enctype")==="multipart/form-data"}function Wt(yr,br,mr){var Er=null;return xt(br,function(wr){Er==null&&(Er=wr.encodeParameters(yr,mr,br))}),Er!=null?Er:zt(br)?jt(mr):Ft(mr)}function Gt(yr){return{tasks:[],elts:[yr]}}function Jt(yr,br){var mr=yr[0],Er=yr[yr.length-1];if(br.scroll){var wr=null;br.scrollTarget&&(wr=Q(mr,br.scrollTarget)),br.scroll==="top"&&(mr||wr)&&(wr=wr||mr,wr.scrollTop=0),br.scroll==="bottom"&&(Er||wr)&&(wr=wr||Er,wr.scrollTop=wr.scrollHeight)}if(br.show){var wr=null;if(br.showTarget){var _r=br.showTarget;br.showTarget==="window"&&(_r="body"),wr=Q(mr,_r)}br.show==="top"&&(mr||wr)&&(wr=wr||mr,wr.scrollIntoView({block:"start",behavior:U.config.scrollBehavior})),br.show==="bottom"&&(Er||wr)&&(wr=wr||Er,wr.scrollIntoView({block:"end",behavior:U.config.scrollBehavior}))}}function $t(yr,br,mr,Er){if(Er==null&&(Er={}),yr==null)return Er;var wr=V(yr,br);if(wr){var _r=wr.trim(),xr=mr;_r.indexOf("javascript:")===0?(_r=_r.substr(11),xr=!0):_r.indexOf("js:")===0&&(_r=_r.substr(3),xr=!0),_r.indexOf("{")!==0&&(_r="{"+_r+"}");var Sr;xr?Sr=Zt(yr,function(){return Function("return ("+_r+")")()},{}):Sr=S(_r);for(var Tr in Sr)Sr.hasOwnProperty(Tr)&&Er[Tr]==null&&(Er[Tr]=Sr[Tr])}return $t(u(yr),br,mr,Er)}function Zt(yr,br,mr){return U.config.allowEval?br():(J(yr,"htmx:evalDisallowedError"),mr)}function Kt(yr,br){return $t(yr,"hx-vars",!0,br)}function Yt(yr,br){return $t(yr,"hx-vals",!1,br)}function Qt(yr){return Y(Kt(yr),Yt(yr))}function er(yr,br,mr){if(mr!==null)try{yr.setRequestHeader(br,mr)}catch(Er){yr.setRequestHeader(br,encodeURIComponent(mr)),yr.setRequestHeader(br+"-URI-AutoEncoded","true")}}function tr(yr){if(yr.responseURL&&typeof URL!="undefined")try{var br=new URL(yr.responseURL);return br.pathname+br.search}catch(mr){J(_().body,"htmx:badResponseUrl",{url:yr.responseURL})}}function rr(yr,br){return yr.getAllResponseHeaders().match(br)}function nr(yr,br,mr){return yr=yr.toLowerCase(),mr?mr instanceof Element||p(mr,"String")?ar(yr,br,null,null,{targetOverride:D(mr),returnPromise:!0}):ar(yr,br,D(mr.source),mr.event,{handler:mr.handler,headers:mr.headers,values:mr.values,targetOverride:D(mr.target),swapOverride:mr.swap,returnPromise:!0}):ar(yr,br,null,null,{returnPromise:!0})}function ir(yr){for(var br=[];yr;)br.push(yr),yr=yr.parentElement;return br}function ar(yr,br,mr,Er,wr){var _r=null,xr=null;if(wr=wr!=null?wr:{},wr.returnPromise&&typeof Promise!="undefined")var Sr=new Promise(function(bi,xi){_r=bi,xr=xi});mr==null&&(mr=_().body);var Tr=wr.handler||sr;if(!!K(mr)){var Or=wr.targetOverride||re(mr);if(Or==null||Or==ee){J(mr,"htmx:targetError",{target:V(mr,"hx-target")});return}var Dr=mr,Cr=W(mr),Ar=z(mr,"hx-sync"),Lr=null,Rr=!1;if(Ar){var Nr=Ar.split(":"),Ir=Nr[0].trim();if(Ir==="this"?Dr=te(mr,"hx-sync"):Dr=Q(mr,Ir),Ar=(Nr[1]||"drop").trim(),Cr=W(Dr),Ar==="drop"&&Cr.xhr&&Cr.abortable!==!0)return;if(Ar==="abort"){if(Cr.xhr)return;Rr=!0}else if(Ar==="replace")$(Dr,"htmx:abort");else if(Ar.indexOf("queue")===0){var Pr=Ar.split(" ");Lr=(Pr[1]||"last").trim()}}if(Cr.xhr)if(Cr.abortable)$(Dr,"htmx:abort");else{if(Lr==null){if(Er){var Br=W(Er);Br&&Br.triggerSpec&&Br.triggerSpec.queue&&(Lr=Br.triggerSpec.queue)}Lr==null&&(Lr="last")}Cr.queuedRequests==null&&(Cr.queuedRequests=[]),Lr==="first"&&Cr.queuedRequests.length===0?Cr.queuedRequests.push(function(){ar(yr,br,mr,Er,wr)}):Lr==="all"?Cr.queuedRequests.push(function(){ar(yr,br,mr,Er,wr)}):Lr==="last"&&(Cr.queuedRequests=[],Cr.queuedRequests.push(function(){ar(yr,br,mr,Er,wr)}));return}var zr=new XMLHttpRequest;Cr.xhr=zr,Cr.abortable=Rr;var Ur=function(){if(Cr.xhr=null,Cr.abortable=!1,Cr.queuedRequests!=null&&Cr.queuedRequests.length>0){var bi=Cr.queuedRequests.shift();bi()}},Kr=z(mr,"hx-prompt");if(Kr){var Fr=prompt(Kr);if(Fr===null||!$(mr,"htmx:prompt",{prompt:Fr,target:Or}))return Z(_r),Ur(),Sr}var Xr=z(mr,"hx-confirm");if(Xr&&!confirm(Xr))return Z(_r),Ur(),Sr;var Jr=Bt(mr,Or,Fr);wr.headers&&(Jr=Y(Jr,wr.headers));var oi=Pt(mr,yr),hi=oi.errors,pi=oi.values;wr.values&&(pi=Y(pi,wr.values));var _i=Qt(mr),Ei=Y(pi,_i),zi=Ut(Ei,mr);yr!=="get"&&!zt(mr)&&(Jr["Content-Type"]="application/x-www-form-urlencoded"),(br==null||br==="")&&(br=_().location.href);var Gi=$t(mr,"hx-request"),vi={parameters:zi,unfilteredParameters:Ei,headers:Jr,target:Or,verb:yr,errors:hi,withCredentials:wr.credentials||Gi.credentials||U.config.withCredentials,timeout:wr.timeout||Gi.timeout||U.config.timeout,path:br,triggeringEvent:Er};if(!$(mr,"htmx:configRequest",vi))return Z(_r),Ur(),Sr;if(br=vi.path,yr=vi.verb,Jr=vi.headers,zi=vi.parameters,hi=vi.errors,hi&&hi.length>0)return $(mr,"htmx:validation:halted",vi),Z(_r),Ur(),Sr;var ki=br.split("#"),Cn=ki[0],Yi=ki[1],ii=null;if(yr==="get"){ii=Cn;var ei=Object.keys(zi).length!==0;ei&&(ii.indexOf("?")<0?ii+="?":ii+="&",ii+=Ft(zi),Yi&&(ii+="#"+Yi)),zr.open("GET",ii,!0)}else zr.open(yr.toUpperCase(),br,!0);if(zr.overrideMimeType("text/html"),zr.withCredentials=vi.withCredentials,zr.timeout=vi.timeout,!Gi.noHeaders){for(var Qr in Jr)if(Jr.hasOwnProperty(Qr)){var si=Jr[Qr];er(zr,Qr,si)}}var Zr={xhr:zr,target:Or,requestConfig:vi,etc:wr,pathInfo:{requestPath:br,finalRequestPath:ii||br,anchor:Yi}};if(zr.onload=function(){try{var bi=ir(mr);if(Zr.pathInfo.responsePath=tr(zr),Tr(mr,Zr),Nt(ni),$(mr,"htmx:afterRequest",Zr),$(mr,"htmx:afterOnLoad",Zr),!K(mr)){for(var xi=null;bi.length>0&&xi==null;){var Si=bi.shift();K(Si)&&(xi=Si)}xi&&($(xi,"htmx:afterRequest",Zr),$(xi,"htmx:afterOnLoad",Zr))}Z(_r),Ur()}catch(Ln){throw J(mr,"htmx:onLoadError",Y({error:Ln},Zr)),Ln}},zr.onerror=function(){Nt(ni),J(mr,"htmx:afterRequest",Zr),J(mr,"htmx:sendError",Zr),Z(xr),Ur()},zr.onabort=function(){Nt(ni),J(mr,"htmx:afterRequest",Zr),J(mr,"htmx:sendAbort",Zr),Z(xr),Ur()},zr.ontimeout=function(){Nt(ni),J(mr,"htmx:afterRequest",Zr),J(mr,"htmx:timeout",Zr),Z(xr),Ur()},!$(mr,"htmx:beforeRequest",Zr))return Z(_r),Ur(),Sr;var ni=Ht(mr);return G(["loadstart","loadend","progress","abort"],function(bi){G([zr,zr.upload],function(xi){xi.addEventListener(bi,function(Si){$(mr,"htmx:xhr:"+bi,{lengthComputable:Si.lengthComputable,loaded:Si.loaded,total:Si.total})})})}),$(mr,"htmx:beforeSend",Zr),zr.send(yr==="get"?null:Wt(zr,mr,zi)),Sr}}function or(yr,br){var mr=br.xhr,Er=null,wr=null;if(rr(mr,/HX-Push:/i)?(Er=mr.getResponseHeader("HX-Push"),wr="push"):rr(mr,/HX-Push-Url:/i)?(Er=mr.getResponseHeader("HX-Push-Url"),wr="push"):rr(mr,/HX-Replace-Url:/i)&&(Er=mr.getResponseHeader("HX-Replace-Url"),wr="replace"),Er)return Er==="false"?{}:{type:wr,path:Er};var _r=br.pathInfo.finalRequestPath,xr=br.pathInfo.responsePath,Sr=z(yr,"hx-push-url"),Tr=z(yr,"hx-replace-url"),Or=W(yr).boosted,Dr=null,Cr=null;return Sr?(Dr="push",Cr=Sr):Tr?(Dr="replace",Cr=Tr):Or&&(Dr="push",Cr=xr||_r),Cr?Cr==="false"?{}:(Cr==="true"&&(Cr=xr||_r),br.pathInfo.anchor&&Cr.indexOf("#")===-1&&(Cr=Cr+"#"+br.pathInfo.anchor),{type:Dr,path:Cr}):{}}function sr(yr,br){var mr=br.xhr,Er=br.target,wr=br.etc;if(!!$(yr,"htmx:beforeOnLoad",br)){if(rr(mr,/HX-Trigger:/i)&&Ce(mr,"HX-Trigger",yr),rr(mr,/HX-Location:/i)){Rt();var _r=mr.getResponseHeader("HX-Location"),xr;_r.indexOf("{")===0&&(xr=S(_r),_r=xr.path,delete xr.path),nr("GET",_r,xr).then(()=>{Ot(_r)});return}if(rr(mr,/HX-Redirect:/i)){location.href=mr.getResponseHeader("HX-Redirect");return}if(rr(mr,/HX-Refresh:/i)&&mr.getResponseHeader("HX-Refresh")==="true"){location.reload();return}rr(mr,/HX-Retarget:/i)&&(br.target=_().querySelector(mr.getResponseHeader("HX-Retarget")));var Sr=or(yr,br),Tr=mr.status>=200&&mr.status<400&&mr.status!==204,Or=mr.response,Dr=mr.status>=400,Cr=Y({shouldSwap:Tr,serverResponse:Or,isError:Dr},br);if(!!$(Er,"htmx:beforeSwap",Cr)){if(Er=Cr.target,Or=Cr.serverResponse,Dr=Cr.isError,br.failed=Dr,br.successful=!Dr,Cr.shouldSwap){mr.status===286&&De(yr),xt(yr,function(Nr){Or=Nr.transformResponse(Or,mr,yr)}),Sr.type&&Rt();var Ar=wr.swapOverride;rr(mr,/HX-Reswap:/i)&&(Ar=mr.getResponseHeader("HX-Reswap"));var xr=_t(yr,Ar);Er.classList.add(U.config.swappingClass);var Lr=function(){try{var Nr=document.activeElement,Ir={};try{Ir={elt:Nr,start:Nr?Nr.selectionStart:null,end:Nr?Nr.selectionEnd:null}}catch(Fr){}var Pr=Gt(Er);if(Ee(xr.swapStyle,Er,yr,Or,Pr),Ir.elt&&!K(Ir.elt)&&Ir.elt.id){var Br=document.getElementById(Ir.elt.id),zr={preventScroll:xr.focusScroll!==void 0?!xr.focusScroll:!U.config.defaultFocusScroll};Br&&(Ir.start&&Br.setSelectionRange&&Br.setSelectionRange(Ir.start,Ir.end),Br.focus(zr))}if(Er.classList.remove(U.config.swappingClass),G(Pr.elts,function(Fr){Fr.classList&&Fr.classList.add(U.config.settlingClass),$(Fr,"htmx:afterSwap",br)}),rr(mr,/HX-Trigger-After-Swap:/i)){var Ur=yr;K(yr)||(Ur=_().body),Ce(mr,"HX-Trigger-After-Swap",Ur)}var Kr=function(){if(G(Pr.tasks,function(oi){oi.call()}),G(Pr.elts,function(oi){oi.classList&&oi.classList.remove(U.config.settlingClass),$(oi,"htmx:afterSettle",br)}),Sr.type&&(Sr.type==="push"?(Ot(Sr.path),$(_().body,"htmx:pushedIntoHistory",{path:Sr.path})):(qt(Sr.path),$(_().body,"htmx:replacedInHistory",{path:Sr.path}))),br.pathInfo.anchor){var Fr=R("#"+br.pathInfo.anchor);Fr&&Fr.scrollIntoView({block:"start",behavior:"auto"})}if(Pr.title){var Xr=R("title");Xr?Xr.innerHTML=Pr.title:window.document.title=Pr.title}if(Jt(Pr.elts,xr),rr(mr,/HX-Trigger-After-Settle:/i)){var Jr=yr;K(yr)||(Jr=_().body),Ce(mr,"HX-Trigger-After-Settle",Jr)}};xr.settleDelay>0?setTimeout(Kr,xr.settleDelay):Kr()}catch(Fr){throw J(yr,"htmx:swapError",br),Fr}};xr.swapDelay>0?setTimeout(Lr,xr.swapDelay):Lr()}Dr&&J(yr,"htmx:responseError",Y({error:"Response Status Error Code "+mr.status+" from "+br.pathInfo.path},br))}}}var lr={};function ur(){return{init:function(yr){return null},onEvent:function(yr,br){return!0},transformResponse:function(yr,br,mr){return yr},isInlineSwap:function(yr){return!1},handleSwap:function(yr,br,mr,Er){return!1},encodeParameters:function(yr,br,mr){return null}}}function fr(yr,br){br.init&&br.init(r),lr[yr]=Y(ur(),br)}function cr(yr){delete lr[yr]}function hr(yr,br,mr){if(yr==null)return br;br==null&&(br=[]),mr==null&&(mr=[]);var Er=V(yr,"hx-ext");return Er&&G(Er.split(","),function(wr){if(wr=wr.replace(/ /g,""),wr.slice(0,7)=="ignore:"){mr.push(wr.slice(7));return}if(mr.indexOf(wr)<0){var _r=lr[wr];_r&&br.indexOf(_r)<0&&br.push(_r)}}),hr(u(yr),br,mr)}function dr(yr){_().readyState!=="loading"?yr():_().addEventListener("DOMContentLoaded",yr)}function vr(){U.config.includeIndicatorStyles!==!1&&_().head.insertAdjacentHTML("beforeend","")}function gr(){var yr=_().querySelector('meta[name="htmx-config"]');return yr?S(yr.content):null}function pr(){var yr=gr();yr&&(U.config=Y(U.config,yr))}return dr(function(){pr(),vr();var yr=_().body;vt(yr);var br=_().querySelectorAll("[hx-trigger='restored'],[data-hx-trigger='restored']");yr.addEventListener("htmx:abort",function(mr){var Er=mr.target,wr=W(Er);wr&&wr.xhr&&wr.xhr.abort()}),window.onpopstate=function(mr){mr.state&&mr.state.htmx&&(At(),G(br,function(Er){$(Er,"htmx:restored",{document:_(),triggerEvent:$})}))},setTimeout(function(){$(yr,"htmx:load",{})},0)}),U}()})});var Ni=jr((Pj,Qp)=>{var kl=function(yr){return yr&&yr.Math==Math&&yr};Qp.exports=kl(typeof globalThis=="object"&&globalThis)||kl(typeof window=="object"&&window)||kl(typeof self=="object"&&self)||kl(typeof global=="object"&&global)||function(){return this}()||Function("return this")()});var Rl=jr((jj,Zp)=>{Zp.exports=!1});var Nl=jr((Hj,tm)=>{var em=Ni();tm.exports=function(yr,br){try{Object.defineProperty(em,yr,{value:br,configurable:!0,writable:!0})}catch(mr){em[yr]=br}return br}});var ql=jr((Bj,im)=>{var VO=Ni(),WO=Nl(),rm="__core-js_shared__",GO=VO[rm]||WO(rm,{});im.exports=GO});var Il=jr((Fj,sm)=>{var YO=Rl(),nm=ql();(sm.exports=function(yr,br){return nm[yr]||(nm[yr]=br!==void 0?br:{})})("versions",[]).push({version:"3.16.4",mode:YO?"pure":"global",copyright:"\xA9 2021 Denis Pushkarev (zloirock.ru)"})});var Ys=jr((zj,om)=>{om.exports=function(yr){if(yr==null)throw TypeError("Can't call method on "+yr);return yr}});var Ks=jr(($j,am)=>{var KO=Ys();am.exports=function(yr){return Object(KO(yr))}});var xn=jr((Uj,lm)=>{var XO=Ks(),JO={}.hasOwnProperty;lm.exports=Object.hasOwn||function(br,mr){return JO.call(XO(br),mr)}});var Pl=jr((Vj,cm)=>{var QO=0,ZO=Math.random();cm.exports=function(yr){return"Symbol("+String(yr===void 0?"":yr)+")_"+(++QO+ZO).toString(36)}});var Oa=jr((Wj,um)=>{var $u=Ni(),eD=function(yr){return typeof yr=="function"?yr:void 0};um.exports=function(yr,br){return arguments.length<2?eD($u[yr]):$u[yr]&&$u[yr][br]}});var fm=jr((Gj,dm)=>{var tD=Oa();dm.exports=tD("navigator","userAgent")||""});var Hl=jr((Yj,bm)=>{var hm=Ni(),Uu=fm(),pm=hm.process,mm=hm.Deno,gm=pm&&pm.versions||mm&&mm.version,vm=gm&&gm.v8,Fn,jl;vm?(Fn=vm.split("."),jl=Fn[0]<4?1:Fn[0]+Fn[1]):Uu&&(Fn=Uu.match(/Edge\/(\d+)/),(!Fn||Fn[1]>=74)&&(Fn=Uu.match(/Chrome\/(\d+)/),Fn&&(jl=Fn[1])));bm.exports=jl&&+jl});var Fi=jr((Kj,ym)=>{ym.exports=function(yr){try{return!!yr()}catch(br){return!0}}});var Vu=jr((Xj,wm)=>{var Em=Hl(),rD=Fi();wm.exports=!!Object.getOwnPropertySymbols&&!rD(function(){var yr=Symbol();return!String(yr)||!(Object(yr)instanceof Symbol)||!Symbol.sham&&Em&&Em<41})});var Wu=jr((Jj,_m)=>{var iD=Vu();_m.exports=iD&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var Ki=jr((Qj,Tm)=>{var nD=Ni(),sD=Il(),xm=xn(),oD=Pl(),Sm=Vu(),aD=Wu(),Da=sD("wks"),Aa=nD.Symbol,lD=aD?Aa:Aa&&Aa.withoutSetter||oD;Tm.exports=function(yr){return(!xm(Da,yr)||!(Sm||typeof Da[yr]=="string"))&&(Sm&&xm(Aa,yr)?Da[yr]=Aa[yr]:Da[yr]=lD("Symbol."+yr)),Da[yr]}});var Bl=jr((Zj,Dm)=>{var cD=Ki(),uD=cD("toStringTag"),Om={};Om[uD]="z";Dm.exports=String(Om)==="[object z]"});var gs=jr((eH,Am)=>{var dD=Fi();Am.exports=!dD(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})});var hn=jr((tH,Cm)=>{Cm.exports=function(yr){return typeof yr=="object"?yr!==null:typeof yr=="function"}});var Yu=jr((rH,Mm)=>{var fD=Ni(),Lm=hn(),Gu=fD.document,hD=Lm(Gu)&&Lm(Gu.createElement);Mm.exports=function(yr){return hD?Gu.createElement(yr):{}}});var Ku=jr((iH,km)=>{var pD=gs(),mD=Fi(),gD=Yu();km.exports=!pD&&!mD(function(){return Object.defineProperty(gD("div"),"a",{get:function(){return 7}}).a!=7})});var pn=jr((nH,Rm)=>{var vD=hn();Rm.exports=function(yr){if(!vD(yr))throw TypeError(String(yr)+" is not an object");return yr}});var Fl=jr((sH,Nm)=>{var bD=Oa(),yD=Wu();Nm.exports=yD?function(yr){return typeof yr=="symbol"}:function(yr){var br=bD("Symbol");return typeof br=="function"&&Object(yr)instanceof br}});var Im=jr((oH,qm)=>{var Xu=hn();qm.exports=function(yr,br){var mr,Er;if(br==="string"&&typeof(mr=yr.toString)=="function"&&!Xu(Er=mr.call(yr))||typeof(mr=yr.valueOf)=="function"&&!Xu(Er=mr.call(yr))||br!=="string"&&typeof(mr=yr.toString)=="function"&&!Xu(Er=mr.call(yr)))return Er;throw TypeError("Can't convert object to primitive value")}});var Bm=jr((aH,Hm)=>{var Pm=hn(),jm=Fl(),ED=Im(),wD=Ki(),_D=wD("toPrimitive");Hm.exports=function(yr,br){if(!Pm(yr)||jm(yr))return yr;var mr=yr[_D],Er;if(mr!==void 0){if(br===void 0&&(br="default"),Er=mr.call(yr,br),!Pm(Er)||jm(Er))return Er;throw TypeError("Can't convert object to primitive value")}return br===void 0&&(br="number"),ED(yr,br)}});var Ju=jr((lH,Fm)=>{var xD=Bm(),SD=Fl();Fm.exports=function(yr){var br=xD(yr,"string");return SD(br)?br:String(br)}});var vs=jr(Um=>{var TD=gs(),OD=Ku(),zm=pn(),DD=Ju(),$m=Object.defineProperty;Um.f=TD?$m:function(br,mr,Er){if(zm(br),mr=DD(mr),zm(Er),OD)try{return $m(br,mr,Er)}catch(wr){}if("get"in Er||"set"in Er)throw TypeError("Accessors not supported");return"value"in Er&&(br[mr]=Er.value),br}});var zl=jr((uH,Vm)=>{Vm.exports=function(yr,br){return{enumerable:!(yr&1),configurable:!(yr&2),writable:!(yr&4),value:br}}});var ts=jr((dH,Wm)=>{var AD=gs(),CD=vs(),LD=zl();Wm.exports=AD?function(yr,br,mr){return CD.f(yr,br,LD(1,mr))}:function(yr,br,mr){return yr[br]=mr,yr}});var Zu=jr((fH,Gm)=>{var Qu=ql(),MD=Function.toString;typeof Qu.inspectSource!="function"&&(Qu.inspectSource=function(yr){return MD.call(yr)});Gm.exports=Qu.inspectSource});var ed=jr((hH,Km)=>{var kD=Ni(),RD=Zu(),Ym=kD.WeakMap;Km.exports=typeof Ym=="function"&&/native code/.test(RD(Ym))});var $l=jr((pH,Jm)=>{var ND=Il(),qD=Pl(),Xm=ND("keys");Jm.exports=function(yr){return Xm[yr]||(Xm[yr]=qD(yr))}});var Ca=jr((mH,Qm)=>{Qm.exports={}});var Js=jr((gH,rg)=>{var ID=ed(),PD=Ni(),jD=hn(),HD=ts(),td=xn(),rd=ql(),BD=$l(),FD=Ca(),Zm="Object already initialized",zD=PD.WeakMap,Ul,La,Vl,$D=function(yr){return Vl(yr)?La(yr):Ul(yr,{})},UD=function(yr){return function(br){var mr;if(!jD(br)||(mr=La(br)).type!==yr)throw TypeError("Incompatible receiver, "+yr+" required");return mr}};ID||rd.state?(bs=rd.state||(rd.state=new zD),eg=bs.get,id=bs.has,tg=bs.set,Ul=function(yr,br){if(id.call(bs,yr))throw new TypeError(Zm);return br.facade=yr,tg.call(bs,yr,br),br},La=function(yr){return eg.call(bs,yr)||{}},Vl=function(yr){return id.call(bs,yr)}):(Xs=BD("state"),FD[Xs]=!0,Ul=function(yr,br){if(td(yr,Xs))throw new TypeError(Zm);return br.facade=yr,HD(yr,Xs,br),br},La=function(yr){return td(yr,Xs)?yr[Xs]:{}},Vl=function(yr){return td(yr,Xs)});var bs,eg,id,tg,Xs;rg.exports={set:Ul,get:La,has:Vl,enforce:$D,getterFor:UD}});var Qs=jr((vH,sg)=>{var VD=Ni(),ig=ts(),WD=xn(),GD=Nl(),YD=Zu(),ng=Js(),KD=ng.get,XD=ng.enforce,JD=String(String).split("String");(sg.exports=function(yr,br,mr,Er){var wr=Er?!!Er.unsafe:!1,_r=Er?!!Er.enumerable:!1,xr=Er?!!Er.noTargetGet:!1,Sr;if(typeof mr=="function"&&(typeof br=="string"&&!WD(mr,"name")&&ig(mr,"name",br),Sr=XD(mr),Sr.source||(Sr.source=JD.join(typeof br=="string"?br:""))),yr===VD){_r?yr[br]=mr:GD(br,mr);return}else wr?!xr&&yr[br]&&(_r=!0):delete yr[br];_r?yr[br]=mr:ig(yr,br,mr)})(Function.prototype,"toString",function(){return typeof this=="function"&&KD(this).source||YD(this)})});var Co=jr((bH,og)=>{var QD={}.toString;og.exports=function(yr){return QD.call(yr).slice(8,-1)}});var nd=jr((yH,ag)=>{var ZD=Bl(),Wl=Co(),eA=Ki(),tA=eA("toStringTag"),rA=Wl(function(){return arguments}())=="Arguments",iA=function(yr,br){try{return yr[br]}catch(mr){}};ag.exports=ZD?Wl:function(yr){var br,mr,Er;return yr===void 0?"Undefined":yr===null?"Null":typeof(mr=iA(br=Object(yr),tA))=="string"?mr:rA?Wl(br):(Er=Wl(br))=="Object"&&typeof br.callee=="function"?"Arguments":Er}});var cg=jr((EH,lg)=>{"use strict";var nA=Bl(),sA=nd();lg.exports=nA?{}.toString:function(){return"[object "+sA(this)+"]"}});var sd=jr((_H,ug)=>{ug.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}});var od=jr((xH,dg)=>{dg.exports=function(yr){if(typeof yr!="function")throw TypeError(String(yr)+" is not a function");return yr}});var ad=jr((SH,fg)=>{var cA=od();fg.exports=function(yr,br,mr){if(cA(yr),br===void 0)return yr;switch(mr){case 0:return function(){return yr.call(br)};case 1:return function(Er){return yr.call(br,Er)};case 2:return function(Er,wr){return yr.call(br,Er,wr)};case 3:return function(Er,wr,_r){return yr.call(br,Er,wr,_r)}}return function(){return yr.apply(br,arguments)}}});var Ma=jr((TH,hg)=>{var uA=Fi(),dA=Co(),fA="".split;hg.exports=uA(function(){return!Object("z").propertyIsEnumerable(0)})?function(yr){return dA(yr)=="String"?fA.call(yr,""):Object(yr)}:Object});var ka=jr((OH,pg)=>{var hA=Math.ceil,pA=Math.floor;pg.exports=function(yr){return isNaN(yr=+yr)?0:(yr>0?pA:hA)(yr)}});var Zs=jr((DH,mg)=>{var mA=ka(),gA=Math.min;mg.exports=function(yr){return yr>0?gA(mA(yr),9007199254740991):0}});var vg=jr((AH,gg)=>{var vA=Co();gg.exports=Array.isArray||function(br){return vA(br)=="Array"}});var Eg=jr((CH,yg)=>{var bA=hn(),bg=vg(),yA=Ki(),EA=yA("species");yg.exports=function(yr){var br;return bg(yr)&&(br=yr.constructor,typeof br=="function"&&(br===Array||bg(br.prototype))?br=void 0:bA(br)&&(br=br[EA],br===null&&(br=void 0))),br===void 0?Array:br}});var _g=jr((LH,wg)=>{var wA=Eg();wg.exports=function(yr,br){return new(wA(yr))(br===0?0:br)}});var Gl=jr((MH,Sg)=>{var _A=ad(),xA=Ma(),SA=Ks(),TA=Zs(),OA=_g(),xg=[].push,ys=function(yr){var br=yr==1,mr=yr==2,Er=yr==3,wr=yr==4,_r=yr==6,xr=yr==7,Sr=yr==5||_r;return function(Tr,Or,Dr,Cr){for(var Ar=SA(Tr),Lr=xA(Ar),Rr=_A(Or,Dr,3),Nr=TA(Lr.length),Ir=0,Pr=Cr||OA,Br=br?Pr(Tr,Nr):mr||xr?Pr(Tr,0):void 0,zr,Ur;Nr>Ir;Ir++)if((Sr||Ir in Lr)&&(zr=Lr[Ir],Ur=Rr(zr,Ir,Ar),yr))if(br)Br[Ir]=Ur;else if(Ur)switch(yr){case 3:return!0;case 5:return zr;case 6:return Ir;case 2:xg.call(Br,zr)}else switch(yr){case 4:return!1;case 7:xg.call(Br,zr)}return _r?-1:Er||wr?wr:Br}};Sg.exports={forEach:ys(0),map:ys(1),filter:ys(2),some:ys(3),every:ys(4),find:ys(5),findIndex:ys(6),filterReject:ys(7)}});var ld=jr((kH,Tg)=>{"use strict";var DA=Fi();Tg.exports=function(yr,br){var mr=[][yr];return!!mr&&DA(function(){mr.call(null,br||function(){throw 1},1)})}});var Dg=jr((RH,Og)=>{"use strict";var AA=Gl().forEach,CA=ld(),LA=CA("forEach");Og.exports=LA?[].forEach:function(br){return AA(this,br,arguments.length>1?arguments[1]:void 0)}});var Lg=jr((qH,Cg)=>{var NA=!!(typeof window!="undefined"&&window.document&&window.document.createElement);Cg.exports=NA});var dd=jr(Rg=>{"use strict";var Mg={}.propertyIsEnumerable,kg=Object.getOwnPropertyDescriptor,qA=kg&&!Mg.call({1:2},1);Rg.f=qA?function(br){var mr=kg(this,br);return!!mr&&mr.enumerable}:Mg});var Lo=jr((PH,Ng)=>{var IA=Ma(),PA=Ys();Ng.exports=function(yr){return IA(PA(yr))}});var fd=jr(Ig=>{var jA=gs(),HA=dd(),BA=zl(),FA=Lo(),zA=Ju(),$A=xn(),UA=Ku(),qg=Object.getOwnPropertyDescriptor;Ig.f=jA?qg:function(br,mr){if(br=FA(br),mr=zA(mr),UA)try{return qg(br,mr)}catch(Er){}if($A(br,mr))return BA(!HA.f.call(br,mr),br[mr])}});var jg=jr((HH,Pg)=>{var VA=ka(),WA=Math.max,GA=Math.min;Pg.exports=function(yr,br){var mr=VA(yr);return mr<0?WA(mr+br,0):GA(mr,br)}});var Fg=jr((BH,Bg)=>{var YA=Lo(),KA=Zs(),XA=jg(),Hg=function(yr){return function(br,mr,Er){var wr=YA(br),_r=KA(wr.length),xr=XA(Er,_r),Sr;if(yr&&mr!=mr){for(;_r>xr;)if(Sr=wr[xr++],Sr!=Sr)return!0}else for(;_r>xr;xr++)if((yr||xr in wr)&&wr[xr]===mr)return yr||xr||0;return!yr&&-1}};Bg.exports={includes:Hg(!0),indexOf:Hg(!1)}});var pd=jr((FH,zg)=>{var hd=xn(),JA=Lo(),QA=Fg().indexOf,ZA=Ca();zg.exports=function(yr,br){var mr=JA(yr),Er=0,wr=[],_r;for(_r in mr)!hd(ZA,_r)&&hd(mr,_r)&&wr.push(_r);for(;br.length>Er;)hd(mr,_r=br[Er++])&&(~QA(wr,_r)||wr.push(_r));return wr}});var Yl=jr((zH,$g)=>{$g.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var Kl=jr(Ug=>{var e0=pd(),t0=Yl(),r0=t0.concat("length","prototype");Ug.f=Object.getOwnPropertyNames||function(br){return e0(br,r0)}});var md=jr(Vg=>{Vg.f=Object.getOwnPropertySymbols});var Gg=jr((VH,Wg)=>{var i0=Oa(),n0=Kl(),s0=md(),o0=pn();Wg.exports=i0("Reflect","ownKeys")||function(br){var mr=n0.f(o0(br)),Er=s0.f;return Er?mr.concat(Er(br)):mr}});var Kg=jr((WH,Yg)=>{var a0=xn(),l0=Gg(),c0=fd(),u0=vs();Yg.exports=function(yr,br){for(var mr=l0(br),Er=u0.f,wr=c0.f,_r=0;_r{var d0=Fi(),f0=/#|\.prototype\./,Na=function(yr,br){var mr=p0[h0(yr)];return mr==g0?!0:mr==m0?!1:typeof br=="function"?d0(br):!!br},h0=Na.normalize=function(yr){return String(yr).replace(f0,".").toLowerCase()},p0=Na.data={},m0=Na.NATIVE="N",g0=Na.POLYFILL="P";Xg.exports=Na});var rs=jr((YH,Jg)=>{var vd=Ni(),v0=fd().f,b0=ts(),y0=Qs(),E0=Nl(),w0=Kg(),_0=gd();Jg.exports=function(yr,br){var mr=yr.target,Er=yr.global,wr=yr.stat,_r,xr,Sr,Tr,Or,Dr;if(Er?xr=vd:wr?xr=vd[mr]||E0(mr,{}):xr=(vd[mr]||{}).prototype,xr)for(Sr in br){if(Or=br[Sr],yr.noTargetGet?(Dr=v0(xr,Sr),Tr=Dr&&Dr.value):Tr=xr[Sr],_r=_0(Er?Sr:mr+(wr?".":"#")+Sr,yr.forced),!_r&&Tr!==void 0){if(typeof Or==typeof Tr)continue;w0(Or,Tr)}(yr.sham||Tr&&Tr.sham)&&b0(Or,"sham",!0),y0(xr,Sr,Or,yr)}}});var Es=jr((KH,Qg)=>{var x0=Fl();Qg.exports=function(yr){if(x0(yr))throw TypeError("Cannot convert a Symbol value to a string");return String(yr)}});var bd=jr((XH,Zg)=>{Zg.exports=` +\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`});var tv=jr((JH,ev)=>{var S0=Ys(),T0=Es(),O0=bd(),Xl="["+O0+"]",D0=RegExp("^"+Xl+Xl+"*"),A0=RegExp(Xl+Xl+"*$"),yd=function(yr){return function(br){var mr=T0(S0(br));return yr&1&&(mr=mr.replace(D0,"")),yr&2&&(mr=mr.replace(A0,"")),mr}};ev.exports={start:yd(1),end:yd(2),trim:yd(3)}});var nv=jr((QH,iv)=>{var C0=Ni(),L0=Es(),M0=tv().trim,rv=bd(),Jl=C0.parseInt,k0=/^[+-]?0[Xx]/,R0=Jl(rv+"08")!==8||Jl(rv+"0x16")!==22;iv.exports=R0?function(br,mr){var Er=M0(L0(br));return Jl(Er,mr>>>0||(k0.test(Er)?16:10))}:Jl});var Ed=jr((eB,ov)=>{var q0=pd(),I0=Yl();ov.exports=Object.keys||function(br){return q0(br,I0)}});var uv=jr((tB,cv)=>{"use strict";var av=gs(),P0=Fi(),wd=Ed(),j0=md(),H0=dd(),B0=Ks(),F0=Ma(),Mo=Object.assign,lv=Object.defineProperty;cv.exports=!Mo||P0(function(){if(av&&Mo({b:1},Mo(lv({},"a",{enumerable:!0,get:function(){lv(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var yr={},br={},mr=Symbol(),Er="abcdefghijklmnopqrst";return yr[mr]=7,Er.split("").forEach(function(wr){br[wr]=wr}),Mo({},yr)[mr]!=7||wd(Mo({},br)).join("")!=Er})?function(br,mr){for(var Er=B0(br),wr=arguments.length,_r=1,xr=j0.f,Sr=H0.f;wr>_r;)for(var Tr=F0(arguments[_r++]),Or=xr?wd(Tr).concat(xr(Tr)):wd(Tr),Dr=Or.length,Cr=0,Ar;Dr>Cr;)Ar=Or[Cr++],(!av||Sr.call(Tr,Ar))&&(Er[Ar]=Tr[Ar]);return Er}:Mo});var hv=jr((iB,fv)=>{var $0=Fi(),U0=Ki(),V0=Hl(),W0=U0("species");fv.exports=function(yr){return V0>=51||!$0(function(){var br=[],mr=br.constructor={};return mr[W0]=function(){return{foo:1}},br[yr](Boolean).foo!==1})}});var mv=jr((sB,pv)=>{var J0=gs(),Q0=vs(),Z0=pn(),eC=Ed();pv.exports=J0?Object.defineProperties:function(br,mr){Z0(br);for(var Er=eC(mr),wr=Er.length,_r=0,xr;wr>_r;)Q0.f(br,xr=Er[_r++],mr[xr]);return br}});var vv=jr((oB,gv)=>{var tC=Oa();gv.exports=tC("document","documentElement")});var ec=jr((aB,Sv)=>{var rC=pn(),iC=mv(),bv=Yl(),nC=Ca(),sC=vv(),oC=Yu(),aC=$l(),yv=">",Ev="<",_d="prototype",xd="script",wv=aC("IE_PROTO"),Sd=function(){},_v=function(yr){return Ev+xd+yv+yr+Ev+"/"+xd+yv},xv=function(yr){yr.write(_v("")),yr.close();var br=yr.parentWindow.Object;return yr=null,br},lC=function(){var yr=oC("iframe"),br="java"+xd+":",mr;return yr.style.display="none",sC.appendChild(yr),yr.src=String(br),mr=yr.contentWindow.document,mr.open(),mr.write(_v("document.F=Object")),mr.close(),mr.F},Ql,Zl=function(){try{Ql=new ActiveXObject("htmlfile")}catch(br){}Zl=typeof document!="undefined"?document.domain&&Ql?xv(Ql):lC():xv(Ql);for(var yr=bv.length;yr--;)delete Zl[_d][bv[yr]];return Zl()};nC[wv]=!0;Sv.exports=Object.create||function(br,mr){var Er;return br!==null?(Sd[_d]=rC(br),Er=new Sd,Sd[_d]=null,Er[wv]=br):Er=Zl(),mr===void 0?Er:iC(Er,mr)}});var Ov=jr((lB,Tv)=>{var cC=Ki(),uC=ec(),dC=vs(),Td=cC("unscopables"),Od=Array.prototype;Od[Td]==null&&dC.f(Od,Td,{configurable:!0,value:uC(null)});Tv.exports=function(yr){Od[Td][yr]=!0}});var ko=jr((cB,Dv)=>{Dv.exports={}});var Cv=jr((uB,Av)=>{var fC=Fi();Av.exports=!fC(function(){function yr(){}return yr.prototype.constructor=null,Object.getPrototypeOf(new yr)!==yr.prototype})});var Dd=jr((dB,Mv)=>{var hC=xn(),pC=Ks(),mC=$l(),gC=Cv(),Lv=mC("IE_PROTO"),vC=Object.prototype;Mv.exports=gC?Object.getPrototypeOf:function(yr){return yr=pC(yr),hC(yr,Lv)?yr[Lv]:typeof yr.constructor=="function"&&yr instanceof yr.constructor?yr.constructor.prototype:yr instanceof Object?vC:null}});var Md=jr((fB,qv)=>{"use strict";var bC=Fi(),kv=Dd(),yC=ts(),EC=xn(),wC=Ki(),_C=Rl(),Ad=wC("iterator"),Rv=!1,xC=function(){return this},eo,Cd,Ld;[].keys&&(Ld=[].keys(),"next"in Ld?(Cd=kv(kv(Ld)),Cd!==Object.prototype&&(eo=Cd)):Rv=!0);var Nv=eo==null||bC(function(){var yr={};return eo[Ad].call(yr)!==yr});Nv&&(eo={});(!_C||Nv)&&!EC(eo,Ad)&&yC(eo,Ad,xC);qv.exports={IteratorPrototype:eo,BUGGY_SAFARI_ITERATORS:Rv}});var tc=jr((hB,Pv)=>{var SC=vs().f,TC=xn(),OC=Ki(),Iv=OC("toStringTag");Pv.exports=function(yr,br,mr){yr&&!TC(yr=mr?yr:yr.prototype,Iv)&&SC(yr,Iv,{configurable:!0,value:br})}});var Hv=jr((pB,jv)=>{"use strict";var DC=Md().IteratorPrototype,AC=ec(),CC=zl(),LC=tc(),MC=ko(),kC=function(){return this};jv.exports=function(yr,br,mr){var Er=br+" Iterator";return yr.prototype=AC(DC,{next:CC(1,mr)}),LC(yr,Er,!1,!0),MC[Er]=kC,yr}});var Fv=jr((mB,Bv)=>{var RC=hn();Bv.exports=function(yr){if(!RC(yr)&&yr!==null)throw TypeError("Can't set "+String(yr)+" as a prototype");return yr}});var kd=jr((gB,zv)=>{var NC=pn(),qC=Fv();zv.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var yr=!1,br={},mr;try{mr=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set,mr.call(br,[]),yr=br instanceof Array}catch(Er){}return function(wr,_r){return NC(wr),qC(_r),yr?mr.call(wr,_r):wr.__proto__=_r,wr}}():void 0)});var qd=jr((vB,Jv)=>{"use strict";var IC=rs(),PC=Hv(),$v=Dd(),Uv=kd(),jC=tc(),Vv=ts(),HC=Qs(),BC=Ki(),Rd=Rl(),Wv=ko(),Gv=Md(),Nd=Gv.IteratorPrototype,rc=Gv.BUGGY_SAFARI_ITERATORS,qa=BC("iterator"),Yv="keys",ic="values",Kv="entries",Xv=function(){return this};Jv.exports=function(yr,br,mr,Er,wr,_r,xr){PC(mr,br,Er);var Sr=function(Pr){if(Pr===wr&&Ar)return Ar;if(!rc&&Pr in Dr)return Dr[Pr];switch(Pr){case Yv:return function(){return new mr(this,Pr)};case ic:return function(){return new mr(this,Pr)};case Kv:return function(){return new mr(this,Pr)}}return function(){return new mr(this)}},Tr=br+" Iterator",Or=!1,Dr=yr.prototype,Cr=Dr[qa]||Dr["@@iterator"]||wr&&Dr[wr],Ar=!rc&&Cr||Sr(wr),Lr=br=="Array"&&Dr.entries||Cr,Rr,Nr,Ir;if(Lr&&(Rr=$v(Lr.call(new yr)),Nd!==Object.prototype&&Rr.next&&(!Rd&&$v(Rr)!==Nd&&(Uv?Uv(Rr,Nd):typeof Rr[qa]!="function"&&Vv(Rr,qa,Xv)),jC(Rr,Tr,!0,!0),Rd&&(Wv[Tr]=Xv))),wr==ic&&Cr&&Cr.name!==ic&&(Or=!0,Ar=function(){return Cr.call(this)}),(!Rd||xr)&&Dr[qa]!==Ar&&Vv(Dr,qa,Ar),Wv[br]=Ar,wr)if(Nr={values:Sr(ic),keys:_r?Ar:Sr(Yv),entries:Sr(Kv)},xr)for(Ir in Nr)(rc||Or||!(Ir in Dr))&&HC(Dr,Ir,Nr[Ir]);else IC({target:br,proto:!0,forced:rc||Or},Nr);return Nr}});var Pd=jr((bB,tb)=>{"use strict";var FC=Lo(),Id=Ov(),Qv=ko(),Zv=Js(),zC=qd(),eb="Array Iterator",$C=Zv.set,UC=Zv.getterFor(eb);tb.exports=zC(Array,"Array",function(yr,br){$C(this,{type:eb,target:FC(yr),index:0,kind:br})},function(){var yr=UC(this),br=yr.target,mr=yr.kind,Er=yr.index++;return!br||Er>=br.length?(yr.target=void 0,{value:void 0,done:!0}):mr=="keys"?{value:Er,done:!1}:mr=="values"?{value:br[Er],done:!1}:{value:[Er,br[Er]],done:!1}},"values");Qv.Arguments=Qv.Array;Id("keys");Id("values");Id("entries")});var jd=jr((yB,ib)=>{var VC=ka(),WC=Es(),GC=Ys(),rb=function(yr){return function(br,mr){var Er=WC(GC(br)),wr=VC(mr),_r=Er.length,xr,Sr;return wr<0||wr>=_r?yr?"":void 0:(xr=Er.charCodeAt(wr),xr<55296||xr>56319||wr+1===_r||(Sr=Er.charCodeAt(wr+1))<56320||Sr>57343?yr?Er.charAt(wr):xr:yr?Er.slice(wr,wr+2):(xr-55296<<10)+(Sr-56320)+65536)}};ib.exports={codeAt:rb(!1),charAt:rb(!0)}});var Hd=jr((wB,ob)=>{var ZC=Qs();ob.exports=function(yr,br,mr){for(var Er in br)ZC(yr,Er,br[Er],mr);return yr}});var ub=jr((_B,cb)=>{var eL=Lo(),ab=Kl().f,tL={}.toString,lb=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],rL=function(yr){try{return ab(yr)}catch(br){return lb.slice()}};cb.exports.f=function(br){return lb&&tL.call(br)=="[object Window]"?rL(br):ab(eL(br))}});var fb=jr((xB,db)=>{var iL=Fi();db.exports=!iL(function(){return Object.isExtensible(Object.preventExtensions({}))})});var nc=jr((SB,mb)=>{var nL=rs(),sL=Ca(),oL=hn(),Bd=xn(),aL=vs().f,hb=Kl(),lL=ub(),cL=Pl(),uL=fb(),pb=!1,is=cL("meta"),dL=0,Fd=Object.isExtensible||function(){return!0},zd=function(yr){aL(yr,is,{value:{objectID:"O"+dL++,weakData:{}}})},fL=function(yr,br){if(!oL(yr))return typeof yr=="symbol"?yr:(typeof yr=="string"?"S":"P")+yr;if(!Bd(yr,is)){if(!Fd(yr))return"F";if(!br)return"E";zd(yr)}return yr[is].objectID},hL=function(yr,br){if(!Bd(yr,is)){if(!Fd(yr))return!0;if(!br)return!1;zd(yr)}return yr[is].weakData},pL=function(yr){return uL&&pb&&Fd(yr)&&!Bd(yr,is)&&zd(yr),yr},mL=function(){gL.enable=function(){},pb=!0;var yr=hb.f,br=[].splice,mr={};mr[is]=1,yr(mr).length&&(hb.f=function(Er){for(var wr=yr(Er),_r=0,xr=wr.length;_r{var vL=Ki(),bL=ko(),yL=vL("iterator"),EL=Array.prototype;gb.exports=function(yr){return yr!==void 0&&(bL.Array===yr||EL[yL]===yr)}});var $d=jr((OB,bb)=>{var wL=nd(),_L=ko(),xL=Ki(),SL=xL("iterator");bb.exports=function(yr){if(yr!=null)return yr[SL]||yr["@@iterator"]||_L[wL(yr)]}});var Eb=jr((DB,yb)=>{var TL=pn(),OL=$d();yb.exports=function(yr,br){var mr=arguments.length<2?OL(yr):br;if(typeof mr!="function")throw TypeError(String(yr)+" is not iterable");return TL(mr.call(yr))}});var xb=jr((AB,_b)=>{var wb=pn();_b.exports=function(yr,br,mr){var Er,wr;wb(yr);try{if(Er=yr.return,Er===void 0){if(br==="throw")throw mr;return mr}Er=Er.call(yr)}catch(_r){wr=!0,Er=_r}if(br==="throw")throw mr;if(wr)throw Er;return wb(Er),mr}});var Ud=jr((CB,Tb)=>{var DL=pn(),AL=vb(),CL=Zs(),LL=ad(),ML=Eb(),kL=$d(),Sb=xb(),Ia=function(yr,br){this.stopped=yr,this.result=br};Tb.exports=function(yr,br,mr){var Er=mr&&mr.that,wr=!!(mr&&mr.AS_ENTRIES),_r=!!(mr&&mr.IS_ITERATOR),xr=!!(mr&&mr.INTERRUPTED),Sr=LL(br,Er,1+wr+xr),Tr,Or,Dr,Cr,Ar,Lr,Rr,Nr=function(Pr){return Tr&&Sb(Tr,"return",Pr),new Ia(!0,Pr)},Ir=function(Pr){return wr?(DL(Pr),xr?Sr(Pr[0],Pr[1],Nr):Sr(Pr[0],Pr[1])):xr?Sr(Pr,Nr):Sr(Pr)};if(_r)Tr=yr;else{if(Or=kL(yr),typeof Or!="function")throw TypeError("Target is not iterable");if(AL(Or)){for(Dr=0,Cr=CL(yr.length);Cr>Dr;Dr++)if(Ar=Ir(yr[Dr]),Ar&&Ar instanceof Ia)return Ar;return new Ia(!1)}Tr=ML(yr,Or)}for(Lr=Tr.next;!(Rr=Lr.call(Tr)).done;){try{Ar=Ir(Rr.value)}catch(Pr){Sb(Tr,"throw",Pr)}if(typeof Ar=="object"&&Ar&&Ar instanceof Ia)return Ar}return new Ia(!1)}});var Vd=jr((LB,Ob)=>{Ob.exports=function(yr,br,mr){if(!(yr instanceof br))throw TypeError("Incorrect "+(mr?mr+" ":"")+"invocation");return yr}});var Mb=jr((MB,Lb)=>{var RL=Ki(),Db=RL("iterator"),Ab=!1;try{Cb=0,Wd={next:function(){return{done:!!Cb++}},return:function(){Ab=!0}},Wd[Db]=function(){return this},Array.from(Wd,function(){throw 2})}catch(yr){}var Cb,Wd;Lb.exports=function(yr,br){if(!br&&!Ab)return!1;var mr=!1;try{var Er={};Er[Db]=function(){return{next:function(){return{done:mr=!0}}}},yr(Er)}catch(wr){}return mr}});var Nb=jr((kB,Rb)=>{var NL=hn(),kb=kd();Rb.exports=function(yr,br,mr){var Er,wr;return kb&&typeof(Er=br.constructor)=="function"&&Er!==mr&&NL(wr=Er.prototype)&&wr!==mr.prototype&&kb(yr,wr),yr}});var Pb=jr((RB,Ib)=>{"use strict";var qL=rs(),IL=Ni(),qb=gd(),PL=Qs(),jL=nc(),HL=Ud(),BL=Vd(),Gd=hn(),Yd=Fi(),FL=Mb(),zL=tc(),$L=Nb();Ib.exports=function(yr,br,mr){var Er=yr.indexOf("Map")!==-1,wr=yr.indexOf("Weak")!==-1,_r=Er?"set":"add",xr=IL[yr],Sr=xr&&xr.prototype,Tr=xr,Or={},Dr=function(Pr){var Br=Sr[Pr];PL(Sr,Pr,Pr=="add"?function(Ur){return Br.call(this,Ur===0?0:Ur),this}:Pr=="delete"?function(zr){return wr&&!Gd(zr)?!1:Br.call(this,zr===0?0:zr)}:Pr=="get"?function(Ur){return wr&&!Gd(Ur)?void 0:Br.call(this,Ur===0?0:Ur)}:Pr=="has"?function(Ur){return wr&&!Gd(Ur)?!1:Br.call(this,Ur===0?0:Ur)}:function(Ur,Kr){return Br.call(this,Ur===0?0:Ur,Kr),this})},Cr=qb(yr,typeof xr!="function"||!(wr||Sr.forEach&&!Yd(function(){new xr().entries().next()})));if(Cr)Tr=mr.getConstructor(br,yr,Er,_r),jL.enable();else if(qb(yr,!0)){var Ar=new Tr,Lr=Ar[_r](wr?{}:-0,1)!=Ar,Rr=Yd(function(){Ar.has(1)}),Nr=FL(function(Pr){new xr(Pr)}),Ir=!wr&&Yd(function(){for(var Pr=new xr,Br=5;Br--;)Pr[_r](Br,Br);return!Pr.has(-0)});Nr||(Tr=br(function(Pr,Br){BL(Pr,Tr,yr);var zr=$L(new xr,Pr,Tr);return Br!=null&&HL(Br,zr[_r],{that:zr,AS_ENTRIES:Er}),zr}),Tr.prototype=Sr,Sr.constructor=Tr),(Rr||Ir)&&(Dr("delete"),Dr("has"),Er&&Dr("get")),(Ir||Lr)&&Dr(_r),wr&&Sr.clear&&delete Sr.clear}return Or[yr]=Tr,qL({global:!0,forced:Tr!=xr},Or),zL(Tr,yr),wr||mr.setStrong(Tr,yr,Er),Tr}});var Ub=jr((NB,$b)=>{"use strict";var jb=Hd(),sc=nc().getWeakData,UL=pn(),Kd=hn(),VL=Vd(),WL=Ud(),Hb=Gl(),Bb=xn(),Fb=Js(),GL=Fb.set,YL=Fb.getterFor,KL=Hb.find,XL=Hb.findIndex,JL=0,oc=function(yr){return yr.frozen||(yr.frozen=new zb)},zb=function(){this.entries=[]},Xd=function(yr,br){return KL(yr.entries,function(mr){return mr[0]===br})};zb.prototype={get:function(yr){var br=Xd(this,yr);if(br)return br[1]},has:function(yr){return!!Xd(this,yr)},set:function(yr,br){var mr=Xd(this,yr);mr?mr[1]=br:this.entries.push([yr,br])},delete:function(yr){var br=XL(this.entries,function(mr){return mr[0]===yr});return~br&&this.entries.splice(br,1),!!~br}};$b.exports={getConstructor:function(yr,br,mr,Er){var wr=yr(function(Sr,Tr){VL(Sr,wr,br),GL(Sr,{type:br,id:JL++,frozen:void 0}),Tr!=null&&WL(Tr,Sr[Er],{that:Sr,AS_ENTRIES:mr})}),_r=YL(br),xr=function(Sr,Tr,Or){var Dr=_r(Sr),Cr=sc(UL(Tr),!0);return Cr===!0?oc(Dr).set(Tr,Or):Cr[Dr.id]=Or,Sr};return jb(wr.prototype,{delete:function(Sr){var Tr=_r(this);if(!Kd(Sr))return!1;var Or=sc(Sr);return Or===!0?oc(Tr).delete(Sr):Or&&Bb(Or,Tr.id)&&delete Or[Tr.id]},has:function(Tr){var Or=_r(this);if(!Kd(Tr))return!1;var Dr=sc(Tr);return Dr===!0?oc(Or).has(Tr):Dr&&Bb(Dr,Or.id)}}),jb(wr.prototype,mr?{get:function(Tr){var Or=_r(this);if(Kd(Tr)){var Dr=sc(Tr);return Dr===!0?oc(Or).get(Tr):Dr?Dr[Or.id]:void 0}},set:function(Tr,Or){return xr(this,Tr,Or)}}:{add:function(Tr){return xr(this,Tr,!0)}}),wr}}});var Kb=jr((qB,Yb)=>{"use strict";var Vb=Ni(),QL=Hd(),ZL=nc(),eM=Pb(),Wb=Ub(),ac=hn(),lc=Js().enforce,tM=ed(),rM=!Vb.ActiveXObject&&"ActiveXObject"in Vb,cc=Object.isExtensible,Pa,Gb=function(yr){return function(){return yr(this,arguments.length?arguments[0]:void 0)}},iM=Yb.exports=eM("WeakMap",Gb,Wb);tM&&rM&&(Pa=Wb.getConstructor(Gb,"WeakMap",!0),ZL.enable(),Ro=iM.prototype,Jd=Ro.delete,ja=Ro.has,Qd=Ro.get,Zd=Ro.set,QL(Ro,{delete:function(yr){if(ac(yr)&&!cc(yr)){var br=lc(this);return br.frozen||(br.frozen=new Pa),Jd.call(this,yr)||br.frozen.delete(yr)}return Jd.call(this,yr)},has:function(br){if(ac(br)&&!cc(br)){var mr=lc(this);return mr.frozen||(mr.frozen=new Pa),ja.call(this,br)||mr.frozen.has(br)}return ja.call(this,br)},get:function(br){if(ac(br)&&!cc(br)){var mr=lc(this);return mr.frozen||(mr.frozen=new Pa),ja.call(this,br)?Qd.call(this,br):mr.frozen.get(br)}return Qd.call(this,br)},set:function(br,mr){if(ac(br)&&!cc(br)){var Er=lc(this);Er.frozen||(Er.frozen=new Pa),ja.call(this,br)?Zd.call(this,br,mr):Er.frozen.set(br,mr)}else Zd.call(this,br,mr);return this}}));var Ro,Jd,ja,Qd,Zd});var iy=jr((PB,ry)=>{var Zb="Expected a function",ey=0/0,sM="[object Symbol]",oM=/^\s+|\s+$/g,aM=/^[-+]0x[0-9a-f]+$/i,lM=/^0b[01]+$/i,cM=/^0o[0-7]+$/i,uM=parseInt,dM=typeof global=="object"&&global&&global.Object===Object&&global,fM=typeof self=="object"&&self&&self.Object===Object&&self,hM=dM||fM||Function("return this")(),pM=Object.prototype,mM=pM.toString,gM=Math.max,vM=Math.min,sf=function(){return hM.Date.now()};function bM(yr,br,mr){var Er,wr,_r,xr,Sr,Tr,Or=0,Dr=!1,Cr=!1,Ar=!0;if(typeof yr!="function")throw new TypeError(Zb);br=ty(br)||0,dc(mr)&&(Dr=!!mr.leading,Cr="maxWait"in mr,_r=Cr?gM(ty(mr.maxWait)||0,br):_r,Ar="trailing"in mr?!!mr.trailing:Ar);function Lr(Fr){var Xr=Er,Jr=wr;return Er=wr=void 0,Or=Fr,xr=yr.apply(Jr,Xr),xr}function Rr(Fr){return Or=Fr,Sr=setTimeout(Pr,br),Dr?Lr(Fr):xr}function Nr(Fr){var Xr=Fr-Tr,Jr=Fr-Or,oi=br-Xr;return Cr?vM(oi,_r-Jr):oi}function Ir(Fr){var Xr=Fr-Tr,Jr=Fr-Or;return Tr===void 0||Xr>=br||Xr<0||Cr&&Jr>=_r}function Pr(){var Fr=sf();if(Ir(Fr))return Br(Fr);Sr=setTimeout(Pr,Nr(Fr))}function Br(Fr){return Sr=void 0,Ar&&Er?Lr(Fr):(Er=wr=void 0,xr)}function zr(){Sr!==void 0&&clearTimeout(Sr),Or=0,Er=Tr=wr=Sr=void 0}function Ur(){return Sr===void 0?xr:Br(sf())}function Kr(){var Fr=sf(),Xr=Ir(Fr);if(Er=arguments,wr=this,Tr=Fr,Xr){if(Sr===void 0)return Rr(Tr);if(Cr)return Sr=setTimeout(Pr,br),Lr(Tr)}return Sr===void 0&&(Sr=setTimeout(Pr,br)),xr}return Kr.cancel=zr,Kr.flush=Ur,Kr}function yM(yr,br,mr){var Er=!0,wr=!0;if(typeof yr!="function")throw new TypeError(Zb);return dc(mr)&&(Er="leading"in mr?!!mr.leading:Er,wr="trailing"in mr?!!mr.trailing:wr),bM(yr,br,{leading:Er,maxWait:br,trailing:wr})}function dc(yr){var br=typeof yr;return!!yr&&(br=="object"||br=="function")}function EM(yr){return!!yr&&typeof yr=="object"}function wM(yr){return typeof yr=="symbol"||EM(yr)&&mM.call(yr)==sM}function ty(yr){if(typeof yr=="number")return yr;if(wM(yr))return ey;if(dc(yr)){var br=typeof yr.valueOf=="function"?yr.valueOf():yr;yr=dc(br)?br+"":br}if(typeof yr!="string")return yr===0?yr:+yr;yr=yr.replace(oM,"");var mr=lM.test(yr);return mr||cM.test(yr)?uM(yr.slice(2),mr?2:8):aM.test(yr)?ey:+yr}ry.exports=yM});var ay=jr((jB,oy)=>{var _M="Expected a function",ny=0/0,xM="[object Symbol]",SM=/^\s+|\s+$/g,TM=/^[-+]0x[0-9a-f]+$/i,OM=/^0b[01]+$/i,DM=/^0o[0-7]+$/i,AM=parseInt,CM=typeof global=="object"&&global&&global.Object===Object&&global,LM=typeof self=="object"&&self&&self.Object===Object&&self,MM=CM||LM||Function("return this")(),kM=Object.prototype,RM=kM.toString,NM=Math.max,qM=Math.min,of=function(){return MM.Date.now()};function IM(yr,br,mr){var Er,wr,_r,xr,Sr,Tr,Or=0,Dr=!1,Cr=!1,Ar=!0;if(typeof yr!="function")throw new TypeError(_M);br=sy(br)||0,af(mr)&&(Dr=!!mr.leading,Cr="maxWait"in mr,_r=Cr?NM(sy(mr.maxWait)||0,br):_r,Ar="trailing"in mr?!!mr.trailing:Ar);function Lr(Fr){var Xr=Er,Jr=wr;return Er=wr=void 0,Or=Fr,xr=yr.apply(Jr,Xr),xr}function Rr(Fr){return Or=Fr,Sr=setTimeout(Pr,br),Dr?Lr(Fr):xr}function Nr(Fr){var Xr=Fr-Tr,Jr=Fr-Or,oi=br-Xr;return Cr?qM(oi,_r-Jr):oi}function Ir(Fr){var Xr=Fr-Tr,Jr=Fr-Or;return Tr===void 0||Xr>=br||Xr<0||Cr&&Jr>=_r}function Pr(){var Fr=of();if(Ir(Fr))return Br(Fr);Sr=setTimeout(Pr,Nr(Fr))}function Br(Fr){return Sr=void 0,Ar&&Er?Lr(Fr):(Er=wr=void 0,xr)}function zr(){Sr!==void 0&&clearTimeout(Sr),Or=0,Er=Tr=wr=Sr=void 0}function Ur(){return Sr===void 0?xr:Br(of())}function Kr(){var Fr=of(),Xr=Ir(Fr);if(Er=arguments,wr=this,Tr=Fr,Xr){if(Sr===void 0)return Rr(Tr);if(Cr)return Sr=setTimeout(Pr,br),Lr(Tr)}return Sr===void 0&&(Sr=setTimeout(Pr,br)),xr}return Kr.cancel=zr,Kr.flush=Ur,Kr}function af(yr){var br=typeof yr;return!!yr&&(br=="object"||br=="function")}function PM(yr){return!!yr&&typeof yr=="object"}function jM(yr){return typeof yr=="symbol"||PM(yr)&&RM.call(yr)==xM}function sy(yr){if(typeof yr=="number")return yr;if(jM(yr))return ny;if(af(yr)){var br=typeof yr.valueOf=="function"?yr.valueOf():yr;yr=af(br)?br+"":br}if(typeof yr!="string")return yr===0?yr:+yr;yr=yr.replace(SM,"");var mr=OM.test(yr);return mr||DM.test(yr)?AM(yr.slice(2),mr?2:8):TM.test(yr)?ny:+yr}oy.exports=IM});var gy=jr((HB,my)=>{var HM="Expected a function",ly="__lodash_hash_undefined__",BM="[object Function]",FM="[object GeneratorFunction]",zM=/[\\^$.*+?()[\]{}|]/g,$M=/^\[object .+?Constructor\]$/,UM=typeof global=="object"&&global&&global.Object===Object&&global,VM=typeof self=="object"&&self&&self.Object===Object&&self,cy=UM||VM||Function("return this")();function WM(yr,br){return yr==null?void 0:yr[br]}function GM(yr){var br=!1;if(yr!=null&&typeof yr.toString!="function")try{br=!!(yr+"")}catch(mr){}return br}var YM=Array.prototype,KM=Function.prototype,uy=Object.prototype,lf=cy["__core-js_shared__"],dy=function(){var yr=/[^.]+$/.exec(lf&&lf.keys&&lf.keys.IE_PROTO||"");return yr?"Symbol(src)_1."+yr:""}(),fy=KM.toString,cf=uy.hasOwnProperty,XM=uy.toString,JM=RegExp("^"+fy.call(cf).replace(zM,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),QM=YM.splice,ZM=hy(cy,"Map"),Ba=hy(Object,"create");function ro(yr){var br=-1,mr=yr?yr.length:0;for(this.clear();++br-1}function ck(yr,br){var mr=this.__data__,Er=fc(mr,yr);return Er<0?mr.push([yr,br]):mr[Er][1]=br,this}No.prototype.clear=sk;No.prototype.delete=ok;No.prototype.get=ak;No.prototype.has=lk;No.prototype.set=ck;function io(yr){var br=-1,mr=yr?yr.length:0;for(this.clear();++br{var Ck=od(),Lk=Ks(),Mk=Ma(),kk=Zs(),Ny=function(yr){return function(br,mr,Er,wr){Ck(mr);var _r=Lk(br),xr=Mk(_r),Sr=kk(_r.length),Tr=yr?Sr-1:0,Or=yr?-1:1;if(Er<2)for(;;){if(Tr in xr){wr=xr[Tr],Tr+=Or;break}if(Tr+=Or,yr?Tr<0:Sr<=Tr)throw TypeError("Reduce of empty array with no initial value")}for(;yr?Tr>=0:Sr>Tr;Tr+=Or)Tr in xr&&(wr=mr(wr,xr[Tr],Tr,_r));return wr}};qy.exports={left:Ny(!1),right:Ny(!0)}});var jy=jr((JF,Py)=>{var Rk=Co(),Nk=Ni();Py.exports=Rk(Nk.process)=="process"});var Fy=jr((ZF,By)=>{"use strict";var Fk=pn();By.exports=function(){var yr=Fk(this),br="";return yr.global&&(br+="g"),yr.ignoreCase&&(br+="i"),yr.multiline&&(br+="m"),yr.dotAll&&(br+="s"),yr.unicode&&(br+="u"),yr.sticky&&(br+="y"),br}});var Uy=jr(wf=>{var zy=Fi(),zk=Ni(),$y=zk.RegExp;wf.UNSUPPORTED_Y=zy(function(){var yr=$y("a","y");return yr.lastIndex=2,yr.exec("abcd")!=null});wf.BROKEN_CARET=zy(function(){var yr=$y("^r","gy");return yr.lastIndex=2,yr.exec("str")!=null})});var Wy=jr((tz,Vy)=>{var $k=Fi(),Uk=Ni(),Vk=Uk.RegExp;Vy.exports=$k(function(){var yr=Vk(".","s");return!(yr.dotAll&&yr.exec(` +`)&&yr.flags==="s")})});var Yy=jr((rz,Gy)=>{var Wk=Fi(),Gk=Ni(),Yk=Gk.RegExp;Gy.exports=Wk(function(){var yr=Yk("(?
    b)","g");return yr.exec("b").groups.a!=="b"||"b".replace(yr,"$c")!=="bc"})});var _c=jr((iz,Jy)=>{"use strict";var Kk=Es(),Xk=Fy(),Ky=Uy(),Jk=Il(),Qk=ec(),Zk=Js().get,eR=Wy(),tR=Yy(),wc=RegExp.prototype.exec,rR=Jk("native-string-replace",String.prototype.replace),_f=wc,xf=function(){var yr=/a/,br=/b*/g;return wc.call(yr,"a"),wc.call(br,"a"),yr.lastIndex!==0||br.lastIndex!==0}(),Xy=Ky.UNSUPPORTED_Y||Ky.BROKEN_CARET,Sf=/()??/.exec("")[1]!==void 0,iR=xf||Sf||Xy||eR||tR;iR&&(_f=function(br){var mr=this,Er=Zk(mr),wr=Kk(br),_r=Er.raw,xr,Sr,Tr,Or,Dr,Cr,Ar;if(_r)return _r.lastIndex=mr.lastIndex,xr=_f.call(_r,wr),mr.lastIndex=_r.lastIndex,xr;var Lr=Er.groups,Rr=Xy&&mr.sticky,Nr=Xk.call(mr),Ir=mr.source,Pr=0,Br=wr;if(Rr&&(Nr=Nr.replace("y",""),Nr.indexOf("g")===-1&&(Nr+="g"),Br=wr.slice(mr.lastIndex),mr.lastIndex>0&&(!mr.multiline||mr.multiline&&wr.charAt(mr.lastIndex-1)!==` +`)&&(Ir="(?: "+Ir+")",Br=" "+Br,Pr++),Sr=new RegExp("^(?:"+Ir+")",Nr)),Sf&&(Sr=new RegExp("^"+Ir+"$(?!\\s)",Nr)),xf&&(Tr=mr.lastIndex),Or=wc.call(Rr?Sr:mr,Br),Rr?Or?(Or.input=Or.input.slice(Pr),Or[0]=Or[0].slice(Pr),Or.index=mr.lastIndex,mr.lastIndex+=Or[0].length):mr.lastIndex=0:xf&&Or&&(mr.lastIndex=mr.global?Or.index+Or[0].length:Tr),Sf&&Or&&Or.length>1&&rR.call(Or[0],Sr,function(){for(Dr=1;Dr{"use strict";var nR=rs(),Qy=_c();nR({target:"RegExp",proto:!0,forced:/./.exec!==Qy},{exec:Qy})});var Df=jr((oz,rE)=>{"use strict";Tf();var Zy=Qs(),sR=_c(),eE=Fi(),tE=Ki(),oR=ts(),aR=tE("species"),Of=RegExp.prototype;rE.exports=function(yr,br,mr,Er){var wr=tE(yr),_r=!eE(function(){var Or={};return Or[wr]=function(){return 7},""[yr](Or)!=7}),xr=_r&&!eE(function(){var Or=!1,Dr=/a/;return yr==="split"&&(Dr={},Dr.constructor={},Dr.constructor[aR]=function(){return Dr},Dr.flags="",Dr[wr]=/./[wr]),Dr.exec=function(){return Or=!0,null},Dr[wr](""),!Or});if(!_r||!xr||mr){var Sr=/./[wr],Tr=br(wr,""[yr],function(Or,Dr,Cr,Ar,Lr){var Rr=Dr.exec;return Rr===sR||Rr===Of.exec?_r&&!Lr?{done:!0,value:Sr.call(Dr,Cr,Ar)}:{done:!0,value:Or.call(Cr,Dr,Ar)}:{done:!1}});Zy(String.prototype,yr,Tr[0]),Zy(Of,wr,Tr[1])}Er&&oR(Of[wr],"sham",!0)}});var Af=jr((az,iE)=>{"use strict";var lR=jd().charAt;iE.exports=function(yr,br,mr){return br+(mr?lR(yr,br).length:1)}});var Cf=jr((lz,nE)=>{var cR=Co(),uR=_c();nE.exports=function(yr,br){var mr=yr.exec;if(typeof mr=="function"){var Er=mr.call(yr,br);if(typeof Er!="object")throw TypeError("RegExp exec method returned something other than an Object or null");return Er}if(cR(yr)!=="RegExp")throw TypeError("RegExp#exec called on incompatible receiver");return uR.call(yr,br)}});var lE=jr((dz,aE)=>{var ER=Ks(),wR=Math.floor,_R="".replace,xR=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,SR=/\$([$&'`]|\d{1,2})/g;aE.exports=function(yr,br,mr,Er,wr,_r){var xr=mr+yr.length,Sr=Er.length,Tr=SR;return wr!==void 0&&(wr=ER(wr),Tr=xR),_R.call(_r,Tr,function(Or,Dr){var Cr;switch(Dr.charAt(0)){case"$":return"$";case"&":return yr;case"`":return br.slice(0,mr);case"'":return br.slice(xr);case"<":Cr=wr[Dr.slice(1,-1)];break;default:var Ar=+Dr;if(Ar===0)return Or;if(Ar>Sr){var Lr=wR(Ar/10);return Lr===0?Or:Lr<=Sr?Er[Lr-1]===void 0?Dr.charAt(1):Er[Lr-1]+Dr.charAt(1):Or}Cr=Er[Ar-1]}return Cr===void 0?"":Cr})}});var NE=jr(Dc=>{"use strict";Object.defineProperty(Dc,"__esModule",{value:!0});Dc.bodyRegExps={xml:/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html4:/&(?:nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|quot|amp|lt|gt|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g,html5:/&(?:AElig|AMP|Aacute|Acirc|Agrave|Aring|Atilde|Auml|COPY|Ccedil|ETH|Eacute|Ecirc|Egrave|Euml|GT|Iacute|Icirc|Igrave|Iuml|LT|Ntilde|Oacute|Ocirc|Ograve|Oslash|Otilde|Ouml|QUOT|REG|THORN|Uacute|Ucirc|Ugrave|Uuml|Yacute|aacute|acirc|acute|aelig|agrave|amp|aring|atilde|auml|brvbar|ccedil|cedil|cent|copy|curren|deg|divide|eacute|ecirc|egrave|eth|euml|frac12|frac14|frac34|gt|iacute|icirc|iexcl|igrave|iquest|iuml|laquo|lt|macr|micro|middot|nbsp|not|ntilde|oacute|ocirc|ograve|ordf|ordm|oslash|otilde|ouml|para|plusmn|pound|quot|raquo|reg|sect|shy|sup1|sup2|sup3|szlig|thorn|times|uacute|ucirc|ugrave|uml|uuml|yacute|yen|yuml|#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);?/g};Dc.namedReferences={xml:{entities:{"<":"<",">":">",""":'"',"'":"'","&":"&"},characters:{"<":"<",">":">",'"':""","'":"'","&":"&"}},html4:{entities:{"'":"'"," ":"\xA0"," ":"\xA0","¡":"\xA1","¡":"\xA1","¢":"\xA2","¢":"\xA2","£":"\xA3","£":"\xA3","¤":"\xA4","¤":"\xA4","¥":"\xA5","¥":"\xA5","¦":"\xA6","¦":"\xA6","§":"\xA7","§":"\xA7","¨":"\xA8","¨":"\xA8","©":"\xA9","©":"\xA9","ª":"\xAA","ª":"\xAA","«":"\xAB","«":"\xAB","¬":"\xAC","¬":"\xAC","­":"\xAD","­":"\xAD","®":"\xAE","®":"\xAE","¯":"\xAF","¯":"\xAF","°":"\xB0","°":"\xB0","±":"\xB1","±":"\xB1","²":"\xB2","²":"\xB2","³":"\xB3","³":"\xB3","´":"\xB4","´":"\xB4","µ":"\xB5","µ":"\xB5","¶":"\xB6","¶":"\xB6","·":"\xB7","·":"\xB7","¸":"\xB8","¸":"\xB8","¹":"\xB9","¹":"\xB9","º":"\xBA","º":"\xBA","»":"\xBB","»":"\xBB","¼":"\xBC","¼":"\xBC","½":"\xBD","½":"\xBD","¾":"\xBE","¾":"\xBE","¿":"\xBF","¿":"\xBF","À":"\xC0","À":"\xC0","Á":"\xC1","Á":"\xC1","Â":"\xC2","Â":"\xC2","Ã":"\xC3","Ã":"\xC3","Ä":"\xC4","Ä":"\xC4","Å":"\xC5","Å":"\xC5","Æ":"\xC6","Æ":"\xC6","Ç":"\xC7","Ç":"\xC7","È":"\xC8","È":"\xC8","É":"\xC9","É":"\xC9","Ê":"\xCA","Ê":"\xCA","Ë":"\xCB","Ë":"\xCB","Ì":"\xCC","Ì":"\xCC","Í":"\xCD","Í":"\xCD","Î":"\xCE","Î":"\xCE","Ï":"\xCF","Ï":"\xCF","Ð":"\xD0","Ð":"\xD0","Ñ":"\xD1","Ñ":"\xD1","Ò":"\xD2","Ò":"\xD2","Ó":"\xD3","Ó":"\xD3","Ô":"\xD4","Ô":"\xD4","Õ":"\xD5","Õ":"\xD5","Ö":"\xD6","Ö":"\xD6","×":"\xD7","×":"\xD7","Ø":"\xD8","Ø":"\xD8","Ù":"\xD9","Ù":"\xD9","Ú":"\xDA","Ú":"\xDA","Û":"\xDB","Û":"\xDB","Ü":"\xDC","Ü":"\xDC","Ý":"\xDD","Ý":"\xDD","Þ":"\xDE","Þ":"\xDE","ß":"\xDF","ß":"\xDF","à":"\xE0","à":"\xE0","á":"\xE1","á":"\xE1","â":"\xE2","â":"\xE2","ã":"\xE3","ã":"\xE3","ä":"\xE4","ä":"\xE4","å":"\xE5","å":"\xE5","æ":"\xE6","æ":"\xE6","ç":"\xE7","ç":"\xE7","è":"\xE8","è":"\xE8","é":"\xE9","é":"\xE9","ê":"\xEA","ê":"\xEA","ë":"\xEB","ë":"\xEB","ì":"\xEC","ì":"\xEC","í":"\xED","í":"\xED","î":"\xEE","î":"\xEE","ï":"\xEF","ï":"\xEF","ð":"\xF0","ð":"\xF0","ñ":"\xF1","ñ":"\xF1","ò":"\xF2","ò":"\xF2","ó":"\xF3","ó":"\xF3","ô":"\xF4","ô":"\xF4","õ":"\xF5","õ":"\xF5","ö":"\xF6","ö":"\xF6","÷":"\xF7","÷":"\xF7","ø":"\xF8","ø":"\xF8","ù":"\xF9","ù":"\xF9","ú":"\xFA","ú":"\xFA","û":"\xFB","û":"\xFB","ü":"\xFC","ü":"\xFC","ý":"\xFD","ý":"\xFD","þ":"\xFE","þ":"\xFE","ÿ":"\xFF","ÿ":"\xFF",""":'"',""":'"',"&":"&","&":"&","<":"<","<":"<",">":">",">":">","Œ":"\u0152","œ":"\u0153","Š":"\u0160","š":"\u0161","Ÿ":"\u0178","ˆ":"\u02C6","˜":"\u02DC"," ":"\u2002"," ":"\u2003"," ":"\u2009","‌":"\u200C","‍":"\u200D","‎":"\u200E","‏":"\u200F","–":"\u2013","—":"\u2014","‘":"\u2018","’":"\u2019","‚":"\u201A","“":"\u201C","”":"\u201D","„":"\u201E","†":"\u2020","‡":"\u2021","‰":"\u2030","‹":"\u2039","›":"\u203A","€":"\u20AC","ƒ":"\u0192","Α":"\u0391","Β":"\u0392","Γ":"\u0393","Δ":"\u0394","Ε":"\u0395","Ζ":"\u0396","Η":"\u0397","Θ":"\u0398","Ι":"\u0399","Κ":"\u039A","Λ":"\u039B","Μ":"\u039C","Ν":"\u039D","Ξ":"\u039E","Ο":"\u039F","Π":"\u03A0","Ρ":"\u03A1","Σ":"\u03A3","Τ":"\u03A4","Υ":"\u03A5","Φ":"\u03A6","Χ":"\u03A7","Ψ":"\u03A8","Ω":"\u03A9","α":"\u03B1","β":"\u03B2","γ":"\u03B3","δ":"\u03B4","ε":"\u03B5","ζ":"\u03B6","η":"\u03B7","θ":"\u03B8","ι":"\u03B9","κ":"\u03BA","λ":"\u03BB","μ":"\u03BC","ν":"\u03BD","ξ":"\u03BE","ο":"\u03BF","π":"\u03C0","ρ":"\u03C1","ς":"\u03C2","σ":"\u03C3","τ":"\u03C4","υ":"\u03C5","φ":"\u03C6","χ":"\u03C7","ψ":"\u03C8","ω":"\u03C9","ϑ":"\u03D1","ϒ":"\u03D2","ϖ":"\u03D6","•":"\u2022","…":"\u2026","′":"\u2032","″":"\u2033","‾":"\u203E","⁄":"\u2044","℘":"\u2118","ℑ":"\u2111","ℜ":"\u211C","™":"\u2122","ℵ":"\u2135","←":"\u2190","↑":"\u2191","→":"\u2192","↓":"\u2193","↔":"\u2194","↵":"\u21B5","⇐":"\u21D0","⇑":"\u21D1","⇒":"\u21D2","⇓":"\u21D3","⇔":"\u21D4","∀":"\u2200","∂":"\u2202","∃":"\u2203","∅":"\u2205","∇":"\u2207","∈":"\u2208","∉":"\u2209","∋":"\u220B","∏":"\u220F","∑":"\u2211","−":"\u2212","∗":"\u2217","√":"\u221A","∝":"\u221D","∞":"\u221E","∠":"\u2220","∧":"\u2227","∨":"\u2228","∩":"\u2229","∪":"\u222A","∫":"\u222B","∴":"\u2234","∼":"\u223C","≅":"\u2245","≈":"\u2248","≠":"\u2260","≡":"\u2261","≤":"\u2264","≥":"\u2265","⊂":"\u2282","⊃":"\u2283","⊄":"\u2284","⊆":"\u2286","⊇":"\u2287","⊕":"\u2295","⊗":"\u2297","⊥":"\u22A5","⋅":"\u22C5","⌈":"\u2308","⌉":"\u2309","⌊":"\u230A","⌋":"\u230B","⟨":"\u2329","⟩":"\u232A","◊":"\u25CA","♠":"\u2660","♣":"\u2663","♥":"\u2665","♦":"\u2666"},characters:{"'":"'","\xA0":" ","\xA1":"¡","\xA2":"¢","\xA3":"£","\xA4":"¤","\xA5":"¥","\xA6":"¦","\xA7":"§","\xA8":"¨","\xA9":"©",\u00AA:"ª","\xAB":"«","\xAC":"¬","\xAD":"­","\xAE":"®","\xAF":"¯","\xB0":"°","\xB1":"±","\xB2":"²","\xB3":"³","\xB4":"´",\u00B5:"µ","\xB6":"¶","\xB7":"·","\xB8":"¸","\xB9":"¹",\u00BA:"º","\xBB":"»","\xBC":"¼","\xBD":"½","\xBE":"¾","\xBF":"¿",\u00C0:"À",\u00C1:"Á",\u00C2:"Â",\u00C3:"Ã",\u00C4:"Ä",\u00C5:"Å",\u00C6:"Æ",\u00C7:"Ç",\u00C8:"È",\u00C9:"É",\u00CA:"Ê",\u00CB:"Ë",\u00CC:"Ì",\u00CD:"Í",\u00CE:"Î",\u00CF:"Ï",\u00D0:"Ð",\u00D1:"Ñ",\u00D2:"Ò",\u00D3:"Ó",\u00D4:"Ô",\u00D5:"Õ",\u00D6:"Ö","\xD7":"×",\u00D8:"Ø",\u00D9:"Ù",\u00DA:"Ú",\u00DB:"Û",\u00DC:"Ü",\u00DD:"Ý",\u00DE:"Þ",\u00DF:"ß",\u00E0:"à",\u00E1:"á",\u00E2:"â",\u00E3:"ã",\u00E4:"ä",\u00E5:"å",\u00E6:"æ",\u00E7:"ç",\u00E8:"è",\u00E9:"é",\u00EA:"ê",\u00EB:"ë",\u00EC:"ì",\u00ED:"í",\u00EE:"î",\u00EF:"ï",\u00F0:"ð",\u00F1:"ñ",\u00F2:"ò",\u00F3:"ó",\u00F4:"ô",\u00F5:"õ",\u00F6:"ö","\xF7":"÷",\u00F8:"ø",\u00F9:"ù",\u00FA:"ú",\u00FB:"û",\u00FC:"ü",\u00FD:"ý",\u00FE:"þ",\u00FF:"ÿ",'"':""","&":"&","<":"<",">":">",\u0152:"Œ",\u0153:"œ",\u0160:"Š",\u0161:"š",\u0178:"Ÿ","\u02C6":"ˆ","\u02DC":"˜","\u2002":" ","\u2003":" ","\u2009":" ","\u200C":"‌","\u200D":"‍","\u200E":"‎","\u200F":"‏","\u2013":"–","\u2014":"—","\u2018":"‘","\u2019":"’","\u201A":"‚","\u201C":"“","\u201D":"”","\u201E":"„","\u2020":"†","\u2021":"‡","\u2030":"‰","\u2039":"‹","\u203A":"›","\u20AC":"€",\u0192:"ƒ",\u0391:"Α",\u0392:"Β",\u0393:"Γ",\u0394:"Δ",\u0395:"Ε",\u0396:"Ζ",\u0397:"Η",\u0398:"Θ",\u0399:"Ι",\u039A:"Κ",\u039B:"Λ",\u039C:"Μ",\u039D:"Ν",\u039E:"Ξ",\u039F:"Ο",\u03A0:"Π",\u03A1:"Ρ",\u03A3:"Σ",\u03A4:"Τ",\u03A5:"Υ",\u03A6:"Φ",\u03A7:"Χ",\u03A8:"Ψ",\u03A9:"Ω",\u03B1:"α",\u03B2:"β",\u03B3:"γ",\u03B4:"δ",\u03B5:"ε",\u03B6:"ζ",\u03B7:"η",\u03B8:"θ",\u03B9:"ι",\u03BA:"κ",\u03BB:"λ",\u03BC:"μ",\u03BD:"ν",\u03BE:"ξ",\u03BF:"ο",\u03C0:"π",\u03C1:"ρ",\u03C2:"ς",\u03C3:"σ",\u03C4:"τ",\u03C5:"υ",\u03C6:"φ",\u03C7:"χ",\u03C8:"ψ",\u03C9:"ω",\u03D1:"ϑ",\u03D2:"ϒ",\u03D6:"ϖ","\u2022":"•","\u2026":"…","\u2032":"′","\u2033":"″","\u203E":"‾","\u2044":"⁄","\u2118":"℘",\u2111:"ℑ",\u211C:"ℜ","\u2122":"™",\u2135:"ℵ","\u2190":"←","\u2191":"↑","\u2192":"→","\u2193":"↓","\u2194":"↔","\u21B5":"↵","\u21D0":"⇐","\u21D1":"⇑","\u21D2":"⇒","\u21D3":"⇓","\u21D4":"⇔","\u2200":"∀","\u2202":"∂","\u2203":"∃","\u2205":"∅","\u2207":"∇","\u2208":"∈","\u2209":"∉","\u220B":"∋","\u220F":"∏","\u2211":"∑","\u2212":"−","\u2217":"∗","\u221A":"√","\u221D":"∝","\u221E":"∞","\u2220":"∠","\u2227":"∧","\u2228":"∨","\u2229":"∩","\u222A":"∪","\u222B":"∫","\u2234":"∴","\u223C":"∼","\u2245":"≅","\u2248":"≈","\u2260":"≠","\u2261":"≡","\u2264":"≤","\u2265":"≥","\u2282":"⊂","\u2283":"⊃","\u2284":"⊄","\u2286":"⊆","\u2287":"⊇","\u2295":"⊕","\u2297":"⊗","\u22A5":"⊥","\u22C5":"⋅","\u2308":"⌈","\u2309":"⌉","\u230A":"⌊","\u230B":"⌋","\u2329":"⟨","\u232A":"⟩","\u25CA":"◊","\u2660":"♠","\u2663":"♣","\u2665":"♥","\u2666":"♦"}},html5:{entities:{"Æ":"\xC6","Æ":"\xC6","&":"&","&":"&","Á":"\xC1","Á":"\xC1","Ă":"\u0102","Â":"\xC2","Â":"\xC2","А":"\u0410","𝔄":"\u{1D504}","À":"\xC0","À":"\xC0","Α":"\u0391","Ā":"\u0100","⩓":"\u2A53","Ą":"\u0104","𝔸":"\u{1D538}","⁡":"\u2061","Å":"\xC5","Å":"\xC5","𝒜":"\u{1D49C}","≔":"\u2254","Ã":"\xC3","Ã":"\xC3","Ä":"\xC4","Ä":"\xC4","∖":"\u2216","⫧":"\u2AE7","⌆":"\u2306","Б":"\u0411","∵":"\u2235","ℬ":"\u212C","Β":"\u0392","𝔅":"\u{1D505}","𝔹":"\u{1D539}","˘":"\u02D8","ℬ":"\u212C","≎":"\u224E","Ч":"\u0427","©":"\xA9","©":"\xA9","Ć":"\u0106","⋒":"\u22D2","ⅅ":"\u2145","ℭ":"\u212D","Č":"\u010C","Ç":"\xC7","Ç":"\xC7","Ĉ":"\u0108","∰":"\u2230","Ċ":"\u010A","¸":"\xB8","·":"\xB7","ℭ":"\u212D","Χ":"\u03A7","⊙":"\u2299","⊖":"\u2296","⊕":"\u2295","⊗":"\u2297","∲":"\u2232","”":"\u201D","’":"\u2019","∷":"\u2237","⩴":"\u2A74","≡":"\u2261","∯":"\u222F","∮":"\u222E","ℂ":"\u2102","∐":"\u2210","∳":"\u2233","⨯":"\u2A2F","𝒞":"\u{1D49E}","⋓":"\u22D3","≍":"\u224D","ⅅ":"\u2145","⤑":"\u2911","Ђ":"\u0402","Ѕ":"\u0405","Џ":"\u040F","‡":"\u2021","↡":"\u21A1","⫤":"\u2AE4","Ď":"\u010E","Д":"\u0414","∇":"\u2207","Δ":"\u0394","𝔇":"\u{1D507}","´":"\xB4","˙":"\u02D9","˝":"\u02DD","`":"`","˜":"\u02DC","⋄":"\u22C4","ⅆ":"\u2146","𝔻":"\u{1D53B}","¨":"\xA8","⃜":"\u20DC","≐":"\u2250","∯":"\u222F","¨":"\xA8","⇓":"\u21D3","⇐":"\u21D0","⇔":"\u21D4","⫤":"\u2AE4","⟸":"\u27F8","⟺":"\u27FA","⟹":"\u27F9","⇒":"\u21D2","⊨":"\u22A8","⇑":"\u21D1","⇕":"\u21D5","∥":"\u2225","↓":"\u2193","⤓":"\u2913","⇵":"\u21F5","̑":"\u0311","⥐":"\u2950","⥞":"\u295E","↽":"\u21BD","⥖":"\u2956","⥟":"\u295F","⇁":"\u21C1","⥗":"\u2957","⊤":"\u22A4","↧":"\u21A7","⇓":"\u21D3","𝒟":"\u{1D49F}","Đ":"\u0110","Ŋ":"\u014A","Ð":"\xD0","Ð":"\xD0","É":"\xC9","É":"\xC9","Ě":"\u011A","Ê":"\xCA","Ê":"\xCA","Э":"\u042D","Ė":"\u0116","𝔈":"\u{1D508}","È":"\xC8","È":"\xC8","∈":"\u2208","Ē":"\u0112","◻":"\u25FB","▫":"\u25AB","Ę":"\u0118","𝔼":"\u{1D53C}","Ε":"\u0395","⩵":"\u2A75","≂":"\u2242","⇌":"\u21CC","ℰ":"\u2130","⩳":"\u2A73","Η":"\u0397","Ë":"\xCB","Ë":"\xCB","∃":"\u2203","ⅇ":"\u2147","Ф":"\u0424","𝔉":"\u{1D509}","◼":"\u25FC","▪":"\u25AA","𝔽":"\u{1D53D}","∀":"\u2200","ℱ":"\u2131","ℱ":"\u2131","Ѓ":"\u0403",">":">",">":">","Γ":"\u0393","Ϝ":"\u03DC","Ğ":"\u011E","Ģ":"\u0122","Ĝ":"\u011C","Г":"\u0413","Ġ":"\u0120","𝔊":"\u{1D50A}","⋙":"\u22D9","𝔾":"\u{1D53E}","≥":"\u2265","⋛":"\u22DB","≧":"\u2267","⪢":"\u2AA2","≷":"\u2277","⩾":"\u2A7E","≳":"\u2273","𝒢":"\u{1D4A2}","≫":"\u226B","Ъ":"\u042A","ˇ":"\u02C7","^":"^","Ĥ":"\u0124","ℌ":"\u210C","ℋ":"\u210B","ℍ":"\u210D","─":"\u2500","ℋ":"\u210B","Ħ":"\u0126","≎":"\u224E","≏":"\u224F","Е":"\u0415","IJ":"\u0132","Ё":"\u0401","Í":"\xCD","Í":"\xCD","Î":"\xCE","Î":"\xCE","И":"\u0418","İ":"\u0130","ℑ":"\u2111","Ì":"\xCC","Ì":"\xCC","ℑ":"\u2111","Ī":"\u012A","ⅈ":"\u2148","⇒":"\u21D2","∬":"\u222C","∫":"\u222B","⋂":"\u22C2","⁣":"\u2063","⁢":"\u2062","Į":"\u012E","𝕀":"\u{1D540}","Ι":"\u0399","ℐ":"\u2110","Ĩ":"\u0128","І":"\u0406","Ï":"\xCF","Ï":"\xCF","Ĵ":"\u0134","Й":"\u0419","𝔍":"\u{1D50D}","𝕁":"\u{1D541}","𝒥":"\u{1D4A5}","Ј":"\u0408","Є":"\u0404","Х":"\u0425","Ќ":"\u040C","Κ":"\u039A","Ķ":"\u0136","К":"\u041A","𝔎":"\u{1D50E}","𝕂":"\u{1D542}","𝒦":"\u{1D4A6}","Љ":"\u0409","<":"<","<":"<","Ĺ":"\u0139","Λ":"\u039B","⟪":"\u27EA","ℒ":"\u2112","↞":"\u219E","Ľ":"\u013D","Ļ":"\u013B","Л":"\u041B","⟨":"\u27E8","←":"\u2190","⇤":"\u21E4","⇆":"\u21C6","⌈":"\u2308","⟦":"\u27E6","⥡":"\u2961","⇃":"\u21C3","⥙":"\u2959","⌊":"\u230A","↔":"\u2194","⥎":"\u294E","⊣":"\u22A3","↤":"\u21A4","⥚":"\u295A","⊲":"\u22B2","⧏":"\u29CF","⊴":"\u22B4","⥑":"\u2951","⥠":"\u2960","↿":"\u21BF","⥘":"\u2958","↼":"\u21BC","⥒":"\u2952","⇐":"\u21D0","⇔":"\u21D4","⋚":"\u22DA","≦":"\u2266","≶":"\u2276","⪡":"\u2AA1","⩽":"\u2A7D","≲":"\u2272","𝔏":"\u{1D50F}","⋘":"\u22D8","⇚":"\u21DA","Ŀ":"\u013F","⟵":"\u27F5","⟷":"\u27F7","⟶":"\u27F6","⟸":"\u27F8","⟺":"\u27FA","⟹":"\u27F9","𝕃":"\u{1D543}","↙":"\u2199","↘":"\u2198","ℒ":"\u2112","↰":"\u21B0","Ł":"\u0141","≪":"\u226A","⤅":"\u2905","М":"\u041C"," ":"\u205F","ℳ":"\u2133","𝔐":"\u{1D510}","∓":"\u2213","𝕄":"\u{1D544}","ℳ":"\u2133","Μ":"\u039C","Њ":"\u040A","Ń":"\u0143","Ň":"\u0147","Ņ":"\u0145","Н":"\u041D","​":"\u200B","​":"\u200B","​":"\u200B","​":"\u200B","≫":"\u226B","≪":"\u226A"," ":` +`,"𝔑":"\u{1D511}","⁠":"\u2060"," ":"\xA0","ℕ":"\u2115","⫬":"\u2AEC","≢":"\u2262","≭":"\u226D","∦":"\u2226","∉":"\u2209","≠":"\u2260","≂̸":"\u2242\u0338","∄":"\u2204","≯":"\u226F","≱":"\u2271","≧̸":"\u2267\u0338","≫̸":"\u226B\u0338","≹":"\u2279","⩾̸":"\u2A7E\u0338","≵":"\u2275","≎̸":"\u224E\u0338","≏̸":"\u224F\u0338","⋪":"\u22EA","⧏̸":"\u29CF\u0338","⋬":"\u22EC","≮":"\u226E","≰":"\u2270","≸":"\u2278","≪̸":"\u226A\u0338","⩽̸":"\u2A7D\u0338","≴":"\u2274","⪢̸":"\u2AA2\u0338","⪡̸":"\u2AA1\u0338","⊀":"\u2280","⪯̸":"\u2AAF\u0338","⋠":"\u22E0","∌":"\u220C","⋫":"\u22EB","⧐̸":"\u29D0\u0338","⋭":"\u22ED","⊏̸":"\u228F\u0338","⋢":"\u22E2","⊐̸":"\u2290\u0338","⋣":"\u22E3","⊂⃒":"\u2282\u20D2","⊈":"\u2288","⊁":"\u2281","⪰̸":"\u2AB0\u0338","⋡":"\u22E1","≿̸":"\u227F\u0338","⊃⃒":"\u2283\u20D2","⊉":"\u2289","≁":"\u2241","≄":"\u2244","≇":"\u2247","≉":"\u2249","∤":"\u2224","𝒩":"\u{1D4A9}","Ñ":"\xD1","Ñ":"\xD1","Ν":"\u039D","Œ":"\u0152","Ó":"\xD3","Ó":"\xD3","Ô":"\xD4","Ô":"\xD4","О":"\u041E","Ő":"\u0150","𝔒":"\u{1D512}","Ò":"\xD2","Ò":"\xD2","Ō":"\u014C","Ω":"\u03A9","Ο":"\u039F","𝕆":"\u{1D546}","“":"\u201C","‘":"\u2018","⩔":"\u2A54","𝒪":"\u{1D4AA}","Ø":"\xD8","Ø":"\xD8","Õ":"\xD5","Õ":"\xD5","⨷":"\u2A37","Ö":"\xD6","Ö":"\xD6","‾":"\u203E","⏞":"\u23DE","⎴":"\u23B4","⏜":"\u23DC","∂":"\u2202","П":"\u041F","𝔓":"\u{1D513}","Φ":"\u03A6","Π":"\u03A0","±":"\xB1","ℌ":"\u210C","ℙ":"\u2119","⪻":"\u2ABB","≺":"\u227A","⪯":"\u2AAF","≼":"\u227C","≾":"\u227E","″":"\u2033","∏":"\u220F","∷":"\u2237","∝":"\u221D","𝒫":"\u{1D4AB}","Ψ":"\u03A8",""":'"',""":'"',"𝔔":"\u{1D514}","ℚ":"\u211A","𝒬":"\u{1D4AC}","⤐":"\u2910","®":"\xAE","®":"\xAE","Ŕ":"\u0154","⟫":"\u27EB","↠":"\u21A0","⤖":"\u2916","Ř":"\u0158","Ŗ":"\u0156","Р":"\u0420","ℜ":"\u211C","∋":"\u220B","⇋":"\u21CB","⥯":"\u296F","ℜ":"\u211C","Ρ":"\u03A1","⟩":"\u27E9","→":"\u2192","⇥":"\u21E5","⇄":"\u21C4","⌉":"\u2309","⟧":"\u27E7","⥝":"\u295D","⇂":"\u21C2","⥕":"\u2955","⌋":"\u230B","⊢":"\u22A2","↦":"\u21A6","⥛":"\u295B","⊳":"\u22B3","⧐":"\u29D0","⊵":"\u22B5","⥏":"\u294F","⥜":"\u295C","↾":"\u21BE","⥔":"\u2954","⇀":"\u21C0","⥓":"\u2953","⇒":"\u21D2","ℝ":"\u211D","⥰":"\u2970","⇛":"\u21DB","ℛ":"\u211B","↱":"\u21B1","⧴":"\u29F4","Щ":"\u0429","Ш":"\u0428","Ь":"\u042C","Ś":"\u015A","⪼":"\u2ABC","Š":"\u0160","Ş":"\u015E","Ŝ":"\u015C","С":"\u0421","𝔖":"\u{1D516}","↓":"\u2193","←":"\u2190","→":"\u2192","↑":"\u2191","Σ":"\u03A3","∘":"\u2218","𝕊":"\u{1D54A}","√":"\u221A","□":"\u25A1","⊓":"\u2293","⊏":"\u228F","⊑":"\u2291","⊐":"\u2290","⊒":"\u2292","⊔":"\u2294","𝒮":"\u{1D4AE}","⋆":"\u22C6","⋐":"\u22D0","⋐":"\u22D0","⊆":"\u2286","≻":"\u227B","⪰":"\u2AB0","≽":"\u227D","≿":"\u227F","∋":"\u220B","∑":"\u2211","⋑":"\u22D1","⊃":"\u2283","⊇":"\u2287","⋑":"\u22D1","Þ":"\xDE","Þ":"\xDE","™":"\u2122","Ћ":"\u040B","Ц":"\u0426"," ":" ","Τ":"\u03A4","Ť":"\u0164","Ţ":"\u0162","Т":"\u0422","𝔗":"\u{1D517}","∴":"\u2234","Θ":"\u0398","  ":"\u205F\u200A"," ":"\u2009","∼":"\u223C","≃":"\u2243","≅":"\u2245","≈":"\u2248","𝕋":"\u{1D54B}","⃛":"\u20DB","𝒯":"\u{1D4AF}","Ŧ":"\u0166","Ú":"\xDA","Ú":"\xDA","↟":"\u219F","⥉":"\u2949","Ў":"\u040E","Ŭ":"\u016C","Û":"\xDB","Û":"\xDB","У":"\u0423","Ű":"\u0170","𝔘":"\u{1D518}","Ù":"\xD9","Ù":"\xD9","Ū":"\u016A","_":"_","⏟":"\u23DF","⎵":"\u23B5","⏝":"\u23DD","⋃":"\u22C3","⊎":"\u228E","Ų":"\u0172","𝕌":"\u{1D54C}","↑":"\u2191","⤒":"\u2912","⇅":"\u21C5","↕":"\u2195","⥮":"\u296E","⊥":"\u22A5","↥":"\u21A5","⇑":"\u21D1","⇕":"\u21D5","↖":"\u2196","↗":"\u2197","ϒ":"\u03D2","Υ":"\u03A5","Ů":"\u016E","𝒰":"\u{1D4B0}","Ũ":"\u0168","Ü":"\xDC","Ü":"\xDC","⊫":"\u22AB","⫫":"\u2AEB","В":"\u0412","⊩":"\u22A9","⫦":"\u2AE6","⋁":"\u22C1","‖":"\u2016","‖":"\u2016","∣":"\u2223","|":"|","❘":"\u2758","≀":"\u2240"," ":"\u200A","𝔙":"\u{1D519}","𝕍":"\u{1D54D}","𝒱":"\u{1D4B1}","⊪":"\u22AA","Ŵ":"\u0174","⋀":"\u22C0","𝔚":"\u{1D51A}","𝕎":"\u{1D54E}","𝒲":"\u{1D4B2}","𝔛":"\u{1D51B}","Ξ":"\u039E","𝕏":"\u{1D54F}","𝒳":"\u{1D4B3}","Я":"\u042F","Ї":"\u0407","Ю":"\u042E","Ý":"\xDD","Ý":"\xDD","Ŷ":"\u0176","Ы":"\u042B","𝔜":"\u{1D51C}","𝕐":"\u{1D550}","𝒴":"\u{1D4B4}","Ÿ":"\u0178","Ж":"\u0416","Ź":"\u0179","Ž":"\u017D","З":"\u0417","Ż":"\u017B","​":"\u200B","Ζ":"\u0396","ℨ":"\u2128","ℤ":"\u2124","𝒵":"\u{1D4B5}","á":"\xE1","á":"\xE1","ă":"\u0103","∾":"\u223E","∾̳":"\u223E\u0333","∿":"\u223F","â":"\xE2","â":"\xE2","´":"\xB4","´":"\xB4","а":"\u0430","æ":"\xE6","æ":"\xE6","⁡":"\u2061","𝔞":"\u{1D51E}","à":"\xE0","à":"\xE0","ℵ":"\u2135","ℵ":"\u2135","α":"\u03B1","ā":"\u0101","⨿":"\u2A3F","&":"&","&":"&","∧":"\u2227","⩕":"\u2A55","⩜":"\u2A5C","⩘":"\u2A58","⩚":"\u2A5A","∠":"\u2220","⦤":"\u29A4","∠":"\u2220","∡":"\u2221","⦨":"\u29A8","⦩":"\u29A9","⦪":"\u29AA","⦫":"\u29AB","⦬":"\u29AC","⦭":"\u29AD","⦮":"\u29AE","⦯":"\u29AF","∟":"\u221F","⊾":"\u22BE","⦝":"\u299D","∢":"\u2222","Å":"\xC5","⍼":"\u237C","ą":"\u0105","𝕒":"\u{1D552}","≈":"\u2248","⩰":"\u2A70","⩯":"\u2A6F","≊":"\u224A","≋":"\u224B","'":"'","≈":"\u2248","≊":"\u224A","å":"\xE5","å":"\xE5","𝒶":"\u{1D4B6}","*":"*","≈":"\u2248","≍":"\u224D","ã":"\xE3","ã":"\xE3","ä":"\xE4","ä":"\xE4","∳":"\u2233","⨑":"\u2A11","⫭":"\u2AED","≌":"\u224C","϶":"\u03F6","‵":"\u2035","∽":"\u223D","⋍":"\u22CD","⊽":"\u22BD","⌅":"\u2305","⌅":"\u2305","⎵":"\u23B5","⎶":"\u23B6","≌":"\u224C","б":"\u0431","„":"\u201E","∵":"\u2235","∵":"\u2235","⦰":"\u29B0","϶":"\u03F6","ℬ":"\u212C","β":"\u03B2","ℶ":"\u2136","≬":"\u226C","𝔟":"\u{1D51F}","⋂":"\u22C2","◯":"\u25EF","⋃":"\u22C3","⨀":"\u2A00","⨁":"\u2A01","⨂":"\u2A02","⨆":"\u2A06","★":"\u2605","▽":"\u25BD","△":"\u25B3","⨄":"\u2A04","⋁":"\u22C1","⋀":"\u22C0","⤍":"\u290D","⧫":"\u29EB","▪":"\u25AA","▴":"\u25B4","▾":"\u25BE","◂":"\u25C2","▸":"\u25B8","␣":"\u2423","▒":"\u2592","░":"\u2591","▓":"\u2593","█":"\u2588","=⃥":"=\u20E5","≡⃥":"\u2261\u20E5","⌐":"\u2310","𝕓":"\u{1D553}","⊥":"\u22A5","⊥":"\u22A5","⋈":"\u22C8","╗":"\u2557","╔":"\u2554","╖":"\u2556","╓":"\u2553","═":"\u2550","╦":"\u2566","╩":"\u2569","╤":"\u2564","╧":"\u2567","╝":"\u255D","╚":"\u255A","╜":"\u255C","╙":"\u2559","║":"\u2551","╬":"\u256C","╣":"\u2563","╠":"\u2560","╫":"\u256B","╢":"\u2562","╟":"\u255F","⧉":"\u29C9","╕":"\u2555","╒":"\u2552","┐":"\u2510","┌":"\u250C","─":"\u2500","╥":"\u2565","╨":"\u2568","┬":"\u252C","┴":"\u2534","⊟":"\u229F","⊞":"\u229E","⊠":"\u22A0","╛":"\u255B","╘":"\u2558","┘":"\u2518","└":"\u2514","│":"\u2502","╪":"\u256A","╡":"\u2561","╞":"\u255E","┼":"\u253C","┤":"\u2524","├":"\u251C","‵":"\u2035","˘":"\u02D8","¦":"\xA6","¦":"\xA6","𝒷":"\u{1D4B7}","⁏":"\u204F","∽":"\u223D","⋍":"\u22CD","\":"\\","⧅":"\u29C5","⟈":"\u27C8","•":"\u2022","•":"\u2022","≎":"\u224E","⪮":"\u2AAE","≏":"\u224F","≏":"\u224F","ć":"\u0107","∩":"\u2229","⩄":"\u2A44","⩉":"\u2A49","⩋":"\u2A4B","⩇":"\u2A47","⩀":"\u2A40","∩︀":"\u2229\uFE00","⁁":"\u2041","ˇ":"\u02C7","⩍":"\u2A4D","č":"\u010D","ç":"\xE7","ç":"\xE7","ĉ":"\u0109","⩌":"\u2A4C","⩐":"\u2A50","ċ":"\u010B","¸":"\xB8","¸":"\xB8","⦲":"\u29B2","¢":"\xA2","¢":"\xA2","·":"\xB7","𝔠":"\u{1D520}","ч":"\u0447","✓":"\u2713","✓":"\u2713","χ":"\u03C7","○":"\u25CB","⧃":"\u29C3","ˆ":"\u02C6","≗":"\u2257","↺":"\u21BA","↻":"\u21BB","®":"\xAE","Ⓢ":"\u24C8","⊛":"\u229B","⊚":"\u229A","⊝":"\u229D","≗":"\u2257","⨐":"\u2A10","⫯":"\u2AEF","⧂":"\u29C2","♣":"\u2663","♣":"\u2663",":":":","≔":"\u2254","≔":"\u2254",",":",","@":"@","∁":"\u2201","∘":"\u2218","∁":"\u2201","ℂ":"\u2102","≅":"\u2245","⩭":"\u2A6D","∮":"\u222E","𝕔":"\u{1D554}","∐":"\u2210","©":"\xA9","©":"\xA9","℗":"\u2117","↵":"\u21B5","✗":"\u2717","𝒸":"\u{1D4B8}","⫏":"\u2ACF","⫑":"\u2AD1","⫐":"\u2AD0","⫒":"\u2AD2","⋯":"\u22EF","⤸":"\u2938","⤵":"\u2935","⋞":"\u22DE","⋟":"\u22DF","↶":"\u21B6","⤽":"\u293D","∪":"\u222A","⩈":"\u2A48","⩆":"\u2A46","⩊":"\u2A4A","⊍":"\u228D","⩅":"\u2A45","∪︀":"\u222A\uFE00","↷":"\u21B7","⤼":"\u293C","⋞":"\u22DE","⋟":"\u22DF","⋎":"\u22CE","⋏":"\u22CF","¤":"\xA4","¤":"\xA4","↶":"\u21B6","↷":"\u21B7","⋎":"\u22CE","⋏":"\u22CF","∲":"\u2232","∱":"\u2231","⌭":"\u232D","⇓":"\u21D3","⥥":"\u2965","†":"\u2020","ℸ":"\u2138","↓":"\u2193","‐":"\u2010","⊣":"\u22A3","⤏":"\u290F","˝":"\u02DD","ď":"\u010F","д":"\u0434","ⅆ":"\u2146","‡":"\u2021","⇊":"\u21CA","⩷":"\u2A77","°":"\xB0","°":"\xB0","δ":"\u03B4","⦱":"\u29B1","⥿":"\u297F","𝔡":"\u{1D521}","⇃":"\u21C3","⇂":"\u21C2","⋄":"\u22C4","⋄":"\u22C4","♦":"\u2666","♦":"\u2666","¨":"\xA8","ϝ":"\u03DD","⋲":"\u22F2","÷":"\xF7","÷":"\xF7","÷":"\xF7","⋇":"\u22C7","⋇":"\u22C7","ђ":"\u0452","⌞":"\u231E","⌍":"\u230D","$":"$","𝕕":"\u{1D555}","˙":"\u02D9","≐":"\u2250","≑":"\u2251","∸":"\u2238","∔":"\u2214","⊡":"\u22A1","⌆":"\u2306","↓":"\u2193","⇊":"\u21CA","⇃":"\u21C3","⇂":"\u21C2","⤐":"\u2910","⌟":"\u231F","⌌":"\u230C","𝒹":"\u{1D4B9}","ѕ":"\u0455","⧶":"\u29F6","đ":"\u0111","⋱":"\u22F1","▿":"\u25BF","▾":"\u25BE","⇵":"\u21F5","⥯":"\u296F","⦦":"\u29A6","џ":"\u045F","⟿":"\u27FF","⩷":"\u2A77","≑":"\u2251","é":"\xE9","é":"\xE9","⩮":"\u2A6E","ě":"\u011B","≖":"\u2256","ê":"\xEA","ê":"\xEA","≕":"\u2255","э":"\u044D","ė":"\u0117","ⅇ":"\u2147","≒":"\u2252","𝔢":"\u{1D522}","⪚":"\u2A9A","è":"\xE8","è":"\xE8","⪖":"\u2A96","⪘":"\u2A98","⪙":"\u2A99","⏧":"\u23E7","ℓ":"\u2113","⪕":"\u2A95","⪗":"\u2A97","ē":"\u0113","∅":"\u2205","∅":"\u2205","∅":"\u2205"," ":"\u2004"," ":"\u2005"," ":"\u2003","ŋ":"\u014B"," ":"\u2002","ę":"\u0119","𝕖":"\u{1D556}","⋕":"\u22D5","⧣":"\u29E3","⩱":"\u2A71","ε":"\u03B5","ε":"\u03B5","ϵ":"\u03F5","≖":"\u2256","≕":"\u2255","≂":"\u2242","⪖":"\u2A96","⪕":"\u2A95","=":"=","≟":"\u225F","≡":"\u2261","⩸":"\u2A78","⧥":"\u29E5","≓":"\u2253","⥱":"\u2971","ℯ":"\u212F","≐":"\u2250","≂":"\u2242","η":"\u03B7","ð":"\xF0","ð":"\xF0","ë":"\xEB","ë":"\xEB","€":"\u20AC","!":"!","∃":"\u2203","ℰ":"\u2130","ⅇ":"\u2147","≒":"\u2252","ф":"\u0444","♀":"\u2640","ffi":"\uFB03","ff":"\uFB00","ffl":"\uFB04","𝔣":"\u{1D523}","fi":"\uFB01","fj":"fj","♭":"\u266D","fl":"\uFB02","▱":"\u25B1","ƒ":"\u0192","𝕗":"\u{1D557}","∀":"\u2200","⋔":"\u22D4","⫙":"\u2AD9","⨍":"\u2A0D","½":"\xBD","½":"\xBD","⅓":"\u2153","¼":"\xBC","¼":"\xBC","⅕":"\u2155","⅙":"\u2159","⅛":"\u215B","⅔":"\u2154","⅖":"\u2156","¾":"\xBE","¾":"\xBE","⅗":"\u2157","⅜":"\u215C","⅘":"\u2158","⅚":"\u215A","⅝":"\u215D","⅞":"\u215E","⁄":"\u2044","⌢":"\u2322","𝒻":"\u{1D4BB}","≧":"\u2267","⪌":"\u2A8C","ǵ":"\u01F5","γ":"\u03B3","ϝ":"\u03DD","⪆":"\u2A86","ğ":"\u011F","ĝ":"\u011D","г":"\u0433","ġ":"\u0121","≥":"\u2265","⋛":"\u22DB","≥":"\u2265","≧":"\u2267","⩾":"\u2A7E","⩾":"\u2A7E","⪩":"\u2AA9","⪀":"\u2A80","⪂":"\u2A82","⪄":"\u2A84","⋛︀":"\u22DB\uFE00","⪔":"\u2A94","𝔤":"\u{1D524}","≫":"\u226B","⋙":"\u22D9","ℷ":"\u2137","ѓ":"\u0453","≷":"\u2277","⪒":"\u2A92","⪥":"\u2AA5","⪤":"\u2AA4","≩":"\u2269","⪊":"\u2A8A","⪊":"\u2A8A","⪈":"\u2A88","⪈":"\u2A88","≩":"\u2269","⋧":"\u22E7","𝕘":"\u{1D558}","`":"`","ℊ":"\u210A","≳":"\u2273","⪎":"\u2A8E","⪐":"\u2A90",">":">",">":">","⪧":"\u2AA7","⩺":"\u2A7A","⋗":"\u22D7","⦕":"\u2995","⩼":"\u2A7C","⪆":"\u2A86","⥸":"\u2978","⋗":"\u22D7","⋛":"\u22DB","⪌":"\u2A8C","≷":"\u2277","≳":"\u2273","≩︀":"\u2269\uFE00","≩︀":"\u2269\uFE00","⇔":"\u21D4"," ":"\u200A","½":"\xBD","ℋ":"\u210B","ъ":"\u044A","↔":"\u2194","⥈":"\u2948","↭":"\u21AD","ℏ":"\u210F","ĥ":"\u0125","♥":"\u2665","♥":"\u2665","…":"\u2026","⊹":"\u22B9","𝔥":"\u{1D525}","⤥":"\u2925","⤦":"\u2926","⇿":"\u21FF","∻":"\u223B","↩":"\u21A9","↪":"\u21AA","𝕙":"\u{1D559}","―":"\u2015","𝒽":"\u{1D4BD}","ℏ":"\u210F","ħ":"\u0127","⁃":"\u2043","‐":"\u2010","í":"\xED","í":"\xED","⁣":"\u2063","î":"\xEE","î":"\xEE","и":"\u0438","е":"\u0435","¡":"\xA1","¡":"\xA1","⇔":"\u21D4","𝔦":"\u{1D526}","ì":"\xEC","ì":"\xEC","ⅈ":"\u2148","⨌":"\u2A0C","∭":"\u222D","⧜":"\u29DC","℩":"\u2129","ij":"\u0133","ī":"\u012B","ℑ":"\u2111","ℐ":"\u2110","ℑ":"\u2111","ı":"\u0131","⊷":"\u22B7","Ƶ":"\u01B5","∈":"\u2208","℅":"\u2105","∞":"\u221E","⧝":"\u29DD","ı":"\u0131","∫":"\u222B","⊺":"\u22BA","ℤ":"\u2124","⊺":"\u22BA","⨗":"\u2A17","⨼":"\u2A3C","ё":"\u0451","į":"\u012F","𝕚":"\u{1D55A}","ι":"\u03B9","⨼":"\u2A3C","¿":"\xBF","¿":"\xBF","𝒾":"\u{1D4BE}","∈":"\u2208","⋹":"\u22F9","⋵":"\u22F5","⋴":"\u22F4","⋳":"\u22F3","∈":"\u2208","⁢":"\u2062","ĩ":"\u0129","і":"\u0456","ï":"\xEF","ï":"\xEF","ĵ":"\u0135","й":"\u0439","𝔧":"\u{1D527}","ȷ":"\u0237","𝕛":"\u{1D55B}","𝒿":"\u{1D4BF}","ј":"\u0458","є":"\u0454","κ":"\u03BA","ϰ":"\u03F0","ķ":"\u0137","к":"\u043A","𝔨":"\u{1D528}","ĸ":"\u0138","х":"\u0445","ќ":"\u045C","𝕜":"\u{1D55C}","𝓀":"\u{1D4C0}","⇚":"\u21DA","⇐":"\u21D0","⤛":"\u291B","⤎":"\u290E","≦":"\u2266","⪋":"\u2A8B","⥢":"\u2962","ĺ":"\u013A","⦴":"\u29B4","ℒ":"\u2112","λ":"\u03BB","⟨":"\u27E8","⦑":"\u2991","⟨":"\u27E8","⪅":"\u2A85","«":"\xAB","«":"\xAB","←":"\u2190","⇤":"\u21E4","⤟":"\u291F","⤝":"\u291D","↩":"\u21A9","↫":"\u21AB","⤹":"\u2939","⥳":"\u2973","↢":"\u21A2","⪫":"\u2AAB","⤙":"\u2919","⪭":"\u2AAD","⪭︀":"\u2AAD\uFE00","⤌":"\u290C","❲":"\u2772","{":"{","[":"[","⦋":"\u298B","⦏":"\u298F","⦍":"\u298D","ľ":"\u013E","ļ":"\u013C","⌈":"\u2308","{":"{","л":"\u043B","⤶":"\u2936","“":"\u201C","„":"\u201E","⥧":"\u2967","⥋":"\u294B","↲":"\u21B2","≤":"\u2264","←":"\u2190","↢":"\u21A2","↽":"\u21BD","↼":"\u21BC","⇇":"\u21C7","↔":"\u2194","⇆":"\u21C6","⇋":"\u21CB","↭":"\u21AD","⋋":"\u22CB","⋚":"\u22DA","≤":"\u2264","≦":"\u2266","⩽":"\u2A7D","⩽":"\u2A7D","⪨":"\u2AA8","⩿":"\u2A7F","⪁":"\u2A81","⪃":"\u2A83","⋚︀":"\u22DA\uFE00","⪓":"\u2A93","⪅":"\u2A85","⋖":"\u22D6","⋚":"\u22DA","⪋":"\u2A8B","≶":"\u2276","≲":"\u2272","⥼":"\u297C","⌊":"\u230A","𝔩":"\u{1D529}","≶":"\u2276","⪑":"\u2A91","↽":"\u21BD","↼":"\u21BC","⥪":"\u296A","▄":"\u2584","љ":"\u0459","≪":"\u226A","⇇":"\u21C7","⌞":"\u231E","⥫":"\u296B","◺":"\u25FA","ŀ":"\u0140","⎰":"\u23B0","⎰":"\u23B0","≨":"\u2268","⪉":"\u2A89","⪉":"\u2A89","⪇":"\u2A87","⪇":"\u2A87","≨":"\u2268","⋦":"\u22E6","⟬":"\u27EC","⇽":"\u21FD","⟦":"\u27E6","⟵":"\u27F5","⟷":"\u27F7","⟼":"\u27FC","⟶":"\u27F6","↫":"\u21AB","↬":"\u21AC","⦅":"\u2985","𝕝":"\u{1D55D}","⨭":"\u2A2D","⨴":"\u2A34","∗":"\u2217","_":"_","◊":"\u25CA","◊":"\u25CA","⧫":"\u29EB","(":"(","⦓":"\u2993","⇆":"\u21C6","⌟":"\u231F","⇋":"\u21CB","⥭":"\u296D","‎":"\u200E","⊿":"\u22BF","‹":"\u2039","𝓁":"\u{1D4C1}","↰":"\u21B0","≲":"\u2272","⪍":"\u2A8D","⪏":"\u2A8F","[":"[","‘":"\u2018","‚":"\u201A","ł":"\u0142","<":"<","<":"<","⪦":"\u2AA6","⩹":"\u2A79","⋖":"\u22D6","⋋":"\u22CB","⋉":"\u22C9","⥶":"\u2976","⩻":"\u2A7B","⦖":"\u2996","◃":"\u25C3","⊴":"\u22B4","◂":"\u25C2","⥊":"\u294A","⥦":"\u2966","≨︀":"\u2268\uFE00","≨︀":"\u2268\uFE00","∺":"\u223A","¯":"\xAF","¯":"\xAF","♂":"\u2642","✠":"\u2720","✠":"\u2720","↦":"\u21A6","↦":"\u21A6","↧":"\u21A7","↤":"\u21A4","↥":"\u21A5","▮":"\u25AE","⨩":"\u2A29","м":"\u043C","—":"\u2014","∡":"\u2221","𝔪":"\u{1D52A}","℧":"\u2127","µ":"\xB5","µ":"\xB5","∣":"\u2223","*":"*","⫰":"\u2AF0","·":"\xB7","·":"\xB7","−":"\u2212","⊟":"\u229F","∸":"\u2238","⨪":"\u2A2A","⫛":"\u2ADB","…":"\u2026","∓":"\u2213","⊧":"\u22A7","𝕞":"\u{1D55E}","∓":"\u2213","𝓂":"\u{1D4C2}","∾":"\u223E","μ":"\u03BC","⊸":"\u22B8","⊸":"\u22B8","⋙̸":"\u22D9\u0338","≫⃒":"\u226B\u20D2","≫̸":"\u226B\u0338","⇍":"\u21CD","⇎":"\u21CE","⋘̸":"\u22D8\u0338","≪⃒":"\u226A\u20D2","≪̸":"\u226A\u0338","⇏":"\u21CF","⊯":"\u22AF","⊮":"\u22AE","∇":"\u2207","ń":"\u0144","∠⃒":"\u2220\u20D2","≉":"\u2249","⩰̸":"\u2A70\u0338","≋̸":"\u224B\u0338","ʼn":"\u0149","≉":"\u2249","♮":"\u266E","♮":"\u266E","ℕ":"\u2115"," ":"\xA0"," ":"\xA0","≎̸":"\u224E\u0338","≏̸":"\u224F\u0338","⩃":"\u2A43","ň":"\u0148","ņ":"\u0146","≇":"\u2247","⩭̸":"\u2A6D\u0338","⩂":"\u2A42","н":"\u043D","–":"\u2013","≠":"\u2260","⇗":"\u21D7","⤤":"\u2924","↗":"\u2197","↗":"\u2197","≐̸":"\u2250\u0338","≢":"\u2262","⤨":"\u2928","≂̸":"\u2242\u0338","∄":"\u2204","∄":"\u2204","𝔫":"\u{1D52B}","≧̸":"\u2267\u0338","≱":"\u2271","≱":"\u2271","≧̸":"\u2267\u0338","⩾̸":"\u2A7E\u0338","⩾̸":"\u2A7E\u0338","≵":"\u2275","≯":"\u226F","≯":"\u226F","⇎":"\u21CE","↮":"\u21AE","⫲":"\u2AF2","∋":"\u220B","⋼":"\u22FC","⋺":"\u22FA","∋":"\u220B","њ":"\u045A","⇍":"\u21CD","≦̸":"\u2266\u0338","↚":"\u219A","‥":"\u2025","≰":"\u2270","↚":"\u219A","↮":"\u21AE","≰":"\u2270","≦̸":"\u2266\u0338","⩽̸":"\u2A7D\u0338","⩽̸":"\u2A7D\u0338","≮":"\u226E","≴":"\u2274","≮":"\u226E","⋪":"\u22EA","⋬":"\u22EC","∤":"\u2224","𝕟":"\u{1D55F}","¬":"\xAC","¬":"\xAC","∉":"\u2209","⋹̸":"\u22F9\u0338","⋵̸":"\u22F5\u0338","∉":"\u2209","⋷":"\u22F7","⋶":"\u22F6","∌":"\u220C","∌":"\u220C","⋾":"\u22FE","⋽":"\u22FD","∦":"\u2226","∦":"\u2226","⫽⃥":"\u2AFD\u20E5","∂̸":"\u2202\u0338","⨔":"\u2A14","⊀":"\u2280","⋠":"\u22E0","⪯̸":"\u2AAF\u0338","⊀":"\u2280","⪯̸":"\u2AAF\u0338","⇏":"\u21CF","↛":"\u219B","⤳̸":"\u2933\u0338","↝̸":"\u219D\u0338","↛":"\u219B","⋫":"\u22EB","⋭":"\u22ED","⊁":"\u2281","⋡":"\u22E1","⪰̸":"\u2AB0\u0338","𝓃":"\u{1D4C3}","∤":"\u2224","∦":"\u2226","≁":"\u2241","≄":"\u2244","≄":"\u2244","∤":"\u2224","∦":"\u2226","⋢":"\u22E2","⋣":"\u22E3","⊄":"\u2284","⫅̸":"\u2AC5\u0338","⊈":"\u2288","⊂⃒":"\u2282\u20D2","⊈":"\u2288","⫅̸":"\u2AC5\u0338","⊁":"\u2281","⪰̸":"\u2AB0\u0338","⊅":"\u2285","⫆̸":"\u2AC6\u0338","⊉":"\u2289","⊃⃒":"\u2283\u20D2","⊉":"\u2289","⫆̸":"\u2AC6\u0338","≹":"\u2279","ñ":"\xF1","ñ":"\xF1","≸":"\u2278","⋪":"\u22EA","⋬":"\u22EC","⋫":"\u22EB","⋭":"\u22ED","ν":"\u03BD","#":"#","№":"\u2116"," ":"\u2007","⊭":"\u22AD","⤄":"\u2904","≍⃒":"\u224D\u20D2","⊬":"\u22AC","≥⃒":"\u2265\u20D2",">⃒":">\u20D2","⧞":"\u29DE","⤂":"\u2902","≤⃒":"\u2264\u20D2","<⃒":"<\u20D2","⊴⃒":"\u22B4\u20D2","⤃":"\u2903","⊵⃒":"\u22B5\u20D2","∼⃒":"\u223C\u20D2","⇖":"\u21D6","⤣":"\u2923","↖":"\u2196","↖":"\u2196","⤧":"\u2927","Ⓢ":"\u24C8","ó":"\xF3","ó":"\xF3","⊛":"\u229B","⊚":"\u229A","ô":"\xF4","ô":"\xF4","о":"\u043E","⊝":"\u229D","ő":"\u0151","⨸":"\u2A38","⊙":"\u2299","⦼":"\u29BC","œ":"\u0153","⦿":"\u29BF","𝔬":"\u{1D52C}","˛":"\u02DB","ò":"\xF2","ò":"\xF2","⧁":"\u29C1","⦵":"\u29B5","Ω":"\u03A9","∮":"\u222E","↺":"\u21BA","⦾":"\u29BE","⦻":"\u29BB","‾":"\u203E","⧀":"\u29C0","ō":"\u014D","ω":"\u03C9","ο":"\u03BF","⦶":"\u29B6","⊖":"\u2296","𝕠":"\u{1D560}","⦷":"\u29B7","⦹":"\u29B9","⊕":"\u2295","∨":"\u2228","↻":"\u21BB","⩝":"\u2A5D","ℴ":"\u2134","ℴ":"\u2134","ª":"\xAA","ª":"\xAA","º":"\xBA","º":"\xBA","⊶":"\u22B6","⩖":"\u2A56","⩗":"\u2A57","⩛":"\u2A5B","ℴ":"\u2134","ø":"\xF8","ø":"\xF8","⊘":"\u2298","õ":"\xF5","õ":"\xF5","⊗":"\u2297","⨶":"\u2A36","ö":"\xF6","ö":"\xF6","⌽":"\u233D","∥":"\u2225","¶":"\xB6","¶":"\xB6","∥":"\u2225","⫳":"\u2AF3","⫽":"\u2AFD","∂":"\u2202","п":"\u043F","%":"%",".":".","‰":"\u2030","⊥":"\u22A5","‱":"\u2031","𝔭":"\u{1D52D}","φ":"\u03C6","ϕ":"\u03D5","ℳ":"\u2133","☎":"\u260E","π":"\u03C0","⋔":"\u22D4","ϖ":"\u03D6","ℏ":"\u210F","ℎ":"\u210E","ℏ":"\u210F","+":"+","⨣":"\u2A23","⊞":"\u229E","⨢":"\u2A22","∔":"\u2214","⨥":"\u2A25","⩲":"\u2A72","±":"\xB1","±":"\xB1","⨦":"\u2A26","⨧":"\u2A27","±":"\xB1","⨕":"\u2A15","𝕡":"\u{1D561}","£":"\xA3","£":"\xA3","≺":"\u227A","⪳":"\u2AB3","⪷":"\u2AB7","≼":"\u227C","⪯":"\u2AAF","≺":"\u227A","⪷":"\u2AB7","≼":"\u227C","⪯":"\u2AAF","⪹":"\u2AB9","⪵":"\u2AB5","⋨":"\u22E8","≾":"\u227E","′":"\u2032","ℙ":"\u2119","⪵":"\u2AB5","⪹":"\u2AB9","⋨":"\u22E8","∏":"\u220F","⌮":"\u232E","⌒":"\u2312","⌓":"\u2313","∝":"\u221D","∝":"\u221D","≾":"\u227E","⊰":"\u22B0","𝓅":"\u{1D4C5}","ψ":"\u03C8"," ":"\u2008","𝔮":"\u{1D52E}","⨌":"\u2A0C","𝕢":"\u{1D562}","⁗":"\u2057","𝓆":"\u{1D4C6}","ℍ":"\u210D","⨖":"\u2A16","?":"?","≟":"\u225F",""":'"',""":'"',"⇛":"\u21DB","⇒":"\u21D2","⤜":"\u291C","⤏":"\u290F","⥤":"\u2964","∽̱":"\u223D\u0331","ŕ":"\u0155","√":"\u221A","⦳":"\u29B3","⟩":"\u27E9","⦒":"\u2992","⦥":"\u29A5","⟩":"\u27E9","»":"\xBB","»":"\xBB","→":"\u2192","⥵":"\u2975","⇥":"\u21E5","⤠":"\u2920","⤳":"\u2933","⤞":"\u291E","↪":"\u21AA","↬":"\u21AC","⥅":"\u2945","⥴":"\u2974","↣":"\u21A3","↝":"\u219D","⤚":"\u291A","∶":"\u2236","ℚ":"\u211A","⤍":"\u290D","❳":"\u2773","}":"}","]":"]","⦌":"\u298C","⦎":"\u298E","⦐":"\u2990","ř":"\u0159","ŗ":"\u0157","⌉":"\u2309","}":"}","р":"\u0440","⤷":"\u2937","⥩":"\u2969","”":"\u201D","”":"\u201D","↳":"\u21B3","ℜ":"\u211C","ℛ":"\u211B","ℜ":"\u211C","ℝ":"\u211D","▭":"\u25AD","®":"\xAE","®":"\xAE","⥽":"\u297D","⌋":"\u230B","𝔯":"\u{1D52F}","⇁":"\u21C1","⇀":"\u21C0","⥬":"\u296C","ρ":"\u03C1","ϱ":"\u03F1","→":"\u2192","↣":"\u21A3","⇁":"\u21C1","⇀":"\u21C0","⇄":"\u21C4","⇌":"\u21CC","⇉":"\u21C9","↝":"\u219D","⋌":"\u22CC","˚":"\u02DA","≓":"\u2253","⇄":"\u21C4","⇌":"\u21CC","‏":"\u200F","⎱":"\u23B1","⎱":"\u23B1","⫮":"\u2AEE","⟭":"\u27ED","⇾":"\u21FE","⟧":"\u27E7","⦆":"\u2986","𝕣":"\u{1D563}","⨮":"\u2A2E","⨵":"\u2A35",")":")","⦔":"\u2994","⨒":"\u2A12","⇉":"\u21C9","›":"\u203A","𝓇":"\u{1D4C7}","↱":"\u21B1","]":"]","’":"\u2019","’":"\u2019","⋌":"\u22CC","⋊":"\u22CA","▹":"\u25B9","⊵":"\u22B5","▸":"\u25B8","⧎":"\u29CE","⥨":"\u2968","℞":"\u211E","ś":"\u015B","‚":"\u201A","≻":"\u227B","⪴":"\u2AB4","⪸":"\u2AB8","š":"\u0161","≽":"\u227D","⪰":"\u2AB0","ş":"\u015F","ŝ":"\u015D","⪶":"\u2AB6","⪺":"\u2ABA","⋩":"\u22E9","⨓":"\u2A13","≿":"\u227F","с":"\u0441","⋅":"\u22C5","⊡":"\u22A1","⩦":"\u2A66","⇘":"\u21D8","⤥":"\u2925","↘":"\u2198","↘":"\u2198","§":"\xA7","§":"\xA7",";":";","⤩":"\u2929","∖":"\u2216","∖":"\u2216","✶":"\u2736","𝔰":"\u{1D530}","⌢":"\u2322","♯":"\u266F","щ":"\u0449","ш":"\u0448","∣":"\u2223","∥":"\u2225","­":"\xAD","­":"\xAD","σ":"\u03C3","ς":"\u03C2","ς":"\u03C2","∼":"\u223C","⩪":"\u2A6A","≃":"\u2243","≃":"\u2243","⪞":"\u2A9E","⪠":"\u2AA0","⪝":"\u2A9D","⪟":"\u2A9F","≆":"\u2246","⨤":"\u2A24","⥲":"\u2972","←":"\u2190","∖":"\u2216","⨳":"\u2A33","⧤":"\u29E4","∣":"\u2223","⌣":"\u2323","⪪":"\u2AAA","⪬":"\u2AAC","⪬︀":"\u2AAC\uFE00","ь":"\u044C","/":"/","⧄":"\u29C4","⌿":"\u233F","𝕤":"\u{1D564}","♠":"\u2660","♠":"\u2660","∥":"\u2225","⊓":"\u2293","⊓︀":"\u2293\uFE00","⊔":"\u2294","⊔︀":"\u2294\uFE00","⊏":"\u228F","⊑":"\u2291","⊏":"\u228F","⊑":"\u2291","⊐":"\u2290","⊒":"\u2292","⊐":"\u2290","⊒":"\u2292","□":"\u25A1","□":"\u25A1","▪":"\u25AA","▪":"\u25AA","→":"\u2192","𝓈":"\u{1D4C8}","∖":"\u2216","⌣":"\u2323","⋆":"\u22C6","☆":"\u2606","★":"\u2605","ϵ":"\u03F5","ϕ":"\u03D5","¯":"\xAF","⊂":"\u2282","⫅":"\u2AC5","⪽":"\u2ABD","⊆":"\u2286","⫃":"\u2AC3","⫁":"\u2AC1","⫋":"\u2ACB","⊊":"\u228A","⪿":"\u2ABF","⥹":"\u2979","⊂":"\u2282","⊆":"\u2286","⫅":"\u2AC5","⊊":"\u228A","⫋":"\u2ACB","⫇":"\u2AC7","⫕":"\u2AD5","⫓":"\u2AD3","≻":"\u227B","⪸":"\u2AB8","≽":"\u227D","⪰":"\u2AB0","⪺":"\u2ABA","⪶":"\u2AB6","⋩":"\u22E9","≿":"\u227F","∑":"\u2211","♪":"\u266A","¹":"\xB9","¹":"\xB9","²":"\xB2","²":"\xB2","³":"\xB3","³":"\xB3","⊃":"\u2283","⫆":"\u2AC6","⪾":"\u2ABE","⫘":"\u2AD8","⊇":"\u2287","⫄":"\u2AC4","⟉":"\u27C9","⫗":"\u2AD7","⥻":"\u297B","⫂":"\u2AC2","⫌":"\u2ACC","⊋":"\u228B","⫀":"\u2AC0","⊃":"\u2283","⊇":"\u2287","⫆":"\u2AC6","⊋":"\u228B","⫌":"\u2ACC","⫈":"\u2AC8","⫔":"\u2AD4","⫖":"\u2AD6","⇙":"\u21D9","⤦":"\u2926","↙":"\u2199","↙":"\u2199","⤪":"\u292A","ß":"\xDF","ß":"\xDF","⌖":"\u2316","τ":"\u03C4","⎴":"\u23B4","ť":"\u0165","ţ":"\u0163","т":"\u0442","⃛":"\u20DB","⌕":"\u2315","𝔱":"\u{1D531}","∴":"\u2234","∴":"\u2234","θ":"\u03B8","ϑ":"\u03D1","ϑ":"\u03D1","≈":"\u2248","∼":"\u223C"," ":"\u2009","≈":"\u2248","∼":"\u223C","þ":"\xFE","þ":"\xFE","˜":"\u02DC","×":"\xD7","×":"\xD7","⊠":"\u22A0","⨱":"\u2A31","⨰":"\u2A30","∭":"\u222D","⤨":"\u2928","⊤":"\u22A4","⌶":"\u2336","⫱":"\u2AF1","𝕥":"\u{1D565}","⫚":"\u2ADA","⤩":"\u2929","‴":"\u2034","™":"\u2122","▵":"\u25B5","▿":"\u25BF","◃":"\u25C3","⊴":"\u22B4","≜":"\u225C","▹":"\u25B9","⊵":"\u22B5","◬":"\u25EC","≜":"\u225C","⨺":"\u2A3A","⨹":"\u2A39","⧍":"\u29CD","⨻":"\u2A3B","⏢":"\u23E2","𝓉":"\u{1D4C9}","ц":"\u0446","ћ":"\u045B","ŧ":"\u0167","≬":"\u226C","↞":"\u219E","↠":"\u21A0","⇑":"\u21D1","⥣":"\u2963","ú":"\xFA","ú":"\xFA","↑":"\u2191","ў":"\u045E","ŭ":"\u016D","û":"\xFB","û":"\xFB","у":"\u0443","⇅":"\u21C5","ű":"\u0171","⥮":"\u296E","⥾":"\u297E","𝔲":"\u{1D532}","ù":"\xF9","ù":"\xF9","↿":"\u21BF","↾":"\u21BE","▀":"\u2580","⌜":"\u231C","⌜":"\u231C","⌏":"\u230F","◸":"\u25F8","ū":"\u016B","¨":"\xA8","¨":"\xA8","ų":"\u0173","𝕦":"\u{1D566}","↑":"\u2191","↕":"\u2195","↿":"\u21BF","↾":"\u21BE","⊎":"\u228E","υ":"\u03C5","ϒ":"\u03D2","υ":"\u03C5","⇈":"\u21C8","⌝":"\u231D","⌝":"\u231D","⌎":"\u230E","ů":"\u016F","◹":"\u25F9","𝓊":"\u{1D4CA}","⋰":"\u22F0","ũ":"\u0169","▵":"\u25B5","▴":"\u25B4","⇈":"\u21C8","ü":"\xFC","ü":"\xFC","⦧":"\u29A7","⇕":"\u21D5","⫨":"\u2AE8","⫩":"\u2AE9","⊨":"\u22A8","⦜":"\u299C","ϵ":"\u03F5","ϰ":"\u03F0","∅":"\u2205","ϕ":"\u03D5","ϖ":"\u03D6","∝":"\u221D","↕":"\u2195","ϱ":"\u03F1","ς":"\u03C2","⊊︀":"\u228A\uFE00","⫋︀":"\u2ACB\uFE00","⊋︀":"\u228B\uFE00","⫌︀":"\u2ACC\uFE00","ϑ":"\u03D1","⊲":"\u22B2","⊳":"\u22B3","в":"\u0432","⊢":"\u22A2","∨":"\u2228","⊻":"\u22BB","≚":"\u225A","⋮":"\u22EE","|":"|","|":"|","𝔳":"\u{1D533}","⊲":"\u22B2","⊂⃒":"\u2282\u20D2","⊃⃒":"\u2283\u20D2","𝕧":"\u{1D567}","∝":"\u221D","⊳":"\u22B3","𝓋":"\u{1D4CB}","⫋︀":"\u2ACB\uFE00","⊊︀":"\u228A\uFE00","⫌︀":"\u2ACC\uFE00","⊋︀":"\u228B\uFE00","⦚":"\u299A","ŵ":"\u0175","⩟":"\u2A5F","∧":"\u2227","≙":"\u2259","℘":"\u2118","𝔴":"\u{1D534}","𝕨":"\u{1D568}","℘":"\u2118","≀":"\u2240","≀":"\u2240","𝓌":"\u{1D4CC}","⋂":"\u22C2","◯":"\u25EF","⋃":"\u22C3","▽":"\u25BD","𝔵":"\u{1D535}","⟺":"\u27FA","⟷":"\u27F7","ξ":"\u03BE","⟸":"\u27F8","⟵":"\u27F5","⟼":"\u27FC","⋻":"\u22FB","⨀":"\u2A00","𝕩":"\u{1D569}","⨁":"\u2A01","⨂":"\u2A02","⟹":"\u27F9","⟶":"\u27F6","𝓍":"\u{1D4CD}","⨆":"\u2A06","⨄":"\u2A04","△":"\u25B3","⋁":"\u22C1","⋀":"\u22C0","ý":"\xFD","ý":"\xFD","я":"\u044F","ŷ":"\u0177","ы":"\u044B","¥":"\xA5","¥":"\xA5","𝔶":"\u{1D536}","ї":"\u0457","𝕪":"\u{1D56A}","𝓎":"\u{1D4CE}","ю":"\u044E","ÿ":"\xFF","ÿ":"\xFF","ź":"\u017A","ž":"\u017E","з":"\u0437","ż":"\u017C","ℨ":"\u2128","ζ":"\u03B6","𝔷":"\u{1D537}","ж":"\u0436","⇝":"\u21DD","𝕫":"\u{1D56B}","𝓏":"\u{1D4CF}","‍":"\u200D","‌":"\u200C"},characters:{\u00C6:"Æ","&":"&",\u00C1:"Á",\u0102:"Ă",\u00C2:"Â",\u0410:"А","\u{1D504}":"𝔄",\u00C0:"À",\u0391:"Α",\u0100:"Ā","\u2A53":"⩓",\u0104:"Ą","\u{1D538}":"𝔸","\u2061":"⁡",\u00C5:"Å","\u{1D49C}":"𝒜","\u2254":"≔",\u00C3:"Ã",\u00C4:"Ä","\u2216":"∖","\u2AE7":"⫧","\u2306":"⌆",\u0411:"Б","\u2235":"∵",\u212C:"ℬ",\u0392:"Β","\u{1D505}":"𝔅","\u{1D539}":"𝔹","\u02D8":"˘","\u224E":"≎",\u0427:"Ч","\xA9":"©",\u0106:"Ć","\u22D2":"⋒","\u2145":"ⅅ",\u212D:"ℭ",\u010C:"Č",\u00C7:"Ç",\u0108:"Ĉ","\u2230":"∰",\u010A:"Ċ","\xB8":"¸","\xB7":"·",\u03A7:"Χ","\u2299":"⊙","\u2296":"⊖","\u2295":"⊕","\u2297":"⊗","\u2232":"∲","\u201D":"”","\u2019":"’","\u2237":"∷","\u2A74":"⩴","\u2261":"≡","\u222F":"∯","\u222E":"∮",\u2102:"ℂ","\u2210":"∐","\u2233":"∳","\u2A2F":"⨯","\u{1D49E}":"𝒞","\u22D3":"⋓","\u224D":"≍","\u2911":"⤑",\u0402:"Ђ",\u0405:"Ѕ",\u040F:"Џ","\u2021":"‡","\u21A1":"↡","\u2AE4":"⫤",\u010E:"Ď",\u0414:"Д","\u2207":"∇",\u0394:"Δ","\u{1D507}":"𝔇","\xB4":"´","\u02D9":"˙","\u02DD":"˝","`":"`","\u02DC":"˜","\u22C4":"⋄","\u2146":"ⅆ","\u{1D53B}":"𝔻","\xA8":"¨","\u20DC":"⃜","\u2250":"≐","\u21D3":"⇓","\u21D0":"⇐","\u21D4":"⇔","\u27F8":"⟸","\u27FA":"⟺","\u27F9":"⟹","\u21D2":"⇒","\u22A8":"⊨","\u21D1":"⇑","\u21D5":"⇕","\u2225":"∥","\u2193":"↓","\u2913":"⤓","\u21F5":"⇵","\u0311":"̑","\u2950":"⥐","\u295E":"⥞","\u21BD":"↽","\u2956":"⥖","\u295F":"⥟","\u21C1":"⇁","\u2957":"⥗","\u22A4":"⊤","\u21A7":"↧","\u{1D49F}":"𝒟",\u0110:"Đ",\u014A:"Ŋ",\u00D0:"Ð",\u00C9:"É",\u011A:"Ě",\u00CA:"Ê",\u042D:"Э",\u0116:"Ė","\u{1D508}":"𝔈",\u00C8:"È","\u2208":"∈",\u0112:"Ē","\u25FB":"◻","\u25AB":"▫",\u0118:"Ę","\u{1D53C}":"𝔼",\u0395:"Ε","\u2A75":"⩵","\u2242":"≂","\u21CC":"⇌",\u2130:"ℰ","\u2A73":"⩳",\u0397:"Η",\u00CB:"Ë","\u2203":"∃","\u2147":"ⅇ",\u0424:"Ф","\u{1D509}":"𝔉","\u25FC":"◼","\u25AA":"▪","\u{1D53D}":"𝔽","\u2200":"∀",\u2131:"ℱ",\u0403:"Ѓ",">":">",\u0393:"Γ",\u03DC:"Ϝ",\u011E:"Ğ",\u0122:"Ģ",\u011C:"Ĝ",\u0413:"Г",\u0120:"Ġ","\u{1D50A}":"𝔊","\u22D9":"⋙","\u{1D53E}":"𝔾","\u2265":"≥","\u22DB":"⋛","\u2267":"≧","\u2AA2":"⪢","\u2277":"≷","\u2A7E":"⩾","\u2273":"≳","\u{1D4A2}":"𝒢","\u226B":"≫",\u042A:"Ъ","\u02C7":"ˇ","^":"^",\u0124:"Ĥ",\u210C:"ℌ",\u210B:"ℋ",\u210D:"ℍ","\u2500":"─",\u0126:"Ħ","\u224F":"≏",\u0415:"Е",\u0132:"IJ",\u0401:"Ё",\u00CD:"Í",\u00CE:"Î",\u0418:"И",\u0130:"İ",\u2111:"ℑ",\u00CC:"Ì",\u012A:"Ī","\u2148":"ⅈ","\u222C":"∬","\u222B":"∫","\u22C2":"⋂","\u2063":"⁣","\u2062":"⁢",\u012E:"Į","\u{1D540}":"𝕀",\u0399:"Ι",\u2110:"ℐ",\u0128:"Ĩ",\u0406:"І",\u00CF:"Ï",\u0134:"Ĵ",\u0419:"Й","\u{1D50D}":"𝔍","\u{1D541}":"𝕁","\u{1D4A5}":"𝒥",\u0408:"Ј",\u0404:"Є",\u0425:"Х",\u040C:"Ќ",\u039A:"Κ",\u0136:"Ķ",\u041A:"К","\u{1D50E}":"𝔎","\u{1D542}":"𝕂","\u{1D4A6}":"𝒦",\u0409:"Љ","<":"<",\u0139:"Ĺ",\u039B:"Λ","\u27EA":"⟪",\u2112:"ℒ","\u219E":"↞",\u013D:"Ľ",\u013B:"Ļ",\u041B:"Л","\u27E8":"⟨","\u2190":"←","\u21E4":"⇤","\u21C6":"⇆","\u2308":"⌈","\u27E6":"⟦","\u2961":"⥡","\u21C3":"⇃","\u2959":"⥙","\u230A":"⌊","\u2194":"↔","\u294E":"⥎","\u22A3":"⊣","\u21A4":"↤","\u295A":"⥚","\u22B2":"⊲","\u29CF":"⧏","\u22B4":"⊴","\u2951":"⥑","\u2960":"⥠","\u21BF":"↿","\u2958":"⥘","\u21BC":"↼","\u2952":"⥒","\u22DA":"⋚","\u2266":"≦","\u2276":"≶","\u2AA1":"⪡","\u2A7D":"⩽","\u2272":"≲","\u{1D50F}":"𝔏","\u22D8":"⋘","\u21DA":"⇚",\u013F:"Ŀ","\u27F5":"⟵","\u27F7":"⟷","\u27F6":"⟶","\u{1D543}":"𝕃","\u2199":"↙","\u2198":"↘","\u21B0":"↰",\u0141:"Ł","\u226A":"≪","\u2905":"⤅",\u041C:"М","\u205F":" ",\u2133:"ℳ","\u{1D510}":"𝔐","\u2213":"∓","\u{1D544}":"𝕄",\u039C:"Μ",\u040A:"Њ",\u0143:"Ń",\u0147:"Ň",\u0145:"Ņ",\u041D:"Н","\u200B":"​","\n":" ","\u{1D511}":"𝔑","\u2060":"⁠","\xA0":" ",\u2115:"ℕ","\u2AEC":"⫬","\u2262":"≢","\u226D":"≭","\u2226":"∦","\u2209":"∉","\u2260":"≠","\u2242\u0338":"≂̸","\u2204":"∄","\u226F":"≯","\u2271":"≱","\u2267\u0338":"≧̸","\u226B\u0338":"≫̸","\u2279":"≹","\u2A7E\u0338":"⩾̸","\u2275":"≵","\u224E\u0338":"≎̸","\u224F\u0338":"≏̸","\u22EA":"⋪","\u29CF\u0338":"⧏̸","\u22EC":"⋬","\u226E":"≮","\u2270":"≰","\u2278":"≸","\u226A\u0338":"≪̸","\u2A7D\u0338":"⩽̸","\u2274":"≴","\u2AA2\u0338":"⪢̸","\u2AA1\u0338":"⪡̸","\u2280":"⊀","\u2AAF\u0338":"⪯̸","\u22E0":"⋠","\u220C":"∌","\u22EB":"⋫","\u29D0\u0338":"⧐̸","\u22ED":"⋭","\u228F\u0338":"⊏̸","\u22E2":"⋢","\u2290\u0338":"⊐̸","\u22E3":"⋣","\u2282\u20D2":"⊂⃒","\u2288":"⊈","\u2281":"⊁","\u2AB0\u0338":"⪰̸","\u22E1":"⋡","\u227F\u0338":"≿̸","\u2283\u20D2":"⊃⃒","\u2289":"⊉","\u2241":"≁","\u2244":"≄","\u2247":"≇","\u2249":"≉","\u2224":"∤","\u{1D4A9}":"𝒩",\u00D1:"Ñ",\u039D:"Ν",\u0152:"Œ",\u00D3:"Ó",\u00D4:"Ô",\u041E:"О",\u0150:"Ő","\u{1D512}":"𝔒",\u00D2:"Ò",\u014C:"Ō",\u03A9:"Ω",\u039F:"Ο","\u{1D546}":"𝕆","\u201C":"“","\u2018":"‘","\u2A54":"⩔","\u{1D4AA}":"𝒪",\u00D8:"Ø",\u00D5:"Õ","\u2A37":"⨷",\u00D6:"Ö","\u203E":"‾","\u23DE":"⏞","\u23B4":"⎴","\u23DC":"⏜","\u2202":"∂",\u041F:"П","\u{1D513}":"𝔓",\u03A6:"Φ",\u03A0:"Π","\xB1":"±",\u2119:"ℙ","\u2ABB":"⪻","\u227A":"≺","\u2AAF":"⪯","\u227C":"≼","\u227E":"≾","\u2033":"″","\u220F":"∏","\u221D":"∝","\u{1D4AB}":"𝒫",\u03A8:"Ψ",'"':""","\u{1D514}":"𝔔",\u211A:"ℚ","\u{1D4AC}":"𝒬","\u2910":"⤐","\xAE":"®",\u0154:"Ŕ","\u27EB":"⟫","\u21A0":"↠","\u2916":"⤖",\u0158:"Ř",\u0156:"Ŗ",\u0420:"Р",\u211C:"ℜ","\u220B":"∋","\u21CB":"⇋","\u296F":"⥯",\u03A1:"Ρ","\u27E9":"⟩","\u2192":"→","\u21E5":"⇥","\u21C4":"⇄","\u2309":"⌉","\u27E7":"⟧","\u295D":"⥝","\u21C2":"⇂","\u2955":"⥕","\u230B":"⌋","\u22A2":"⊢","\u21A6":"↦","\u295B":"⥛","\u22B3":"⊳","\u29D0":"⧐","\u22B5":"⊵","\u294F":"⥏","\u295C":"⥜","\u21BE":"↾","\u2954":"⥔","\u21C0":"⇀","\u2953":"⥓",\u211D:"ℝ","\u2970":"⥰","\u21DB":"⇛",\u211B:"ℛ","\u21B1":"↱","\u29F4":"⧴",\u0429:"Щ",\u0428:"Ш",\u042C:"Ь",\u015A:"Ś","\u2ABC":"⪼",\u0160:"Š",\u015E:"Ş",\u015C:"Ŝ",\u0421:"С","\u{1D516}":"𝔖","\u2191":"↑",\u03A3:"Σ","\u2218":"∘","\u{1D54A}":"𝕊","\u221A":"√","\u25A1":"□","\u2293":"⊓","\u228F":"⊏","\u2291":"⊑","\u2290":"⊐","\u2292":"⊒","\u2294":"⊔","\u{1D4AE}":"𝒮","\u22C6":"⋆","\u22D0":"⋐","\u2286":"⊆","\u227B":"≻","\u2AB0":"⪰","\u227D":"≽","\u227F":"≿","\u2211":"∑","\u22D1":"⋑","\u2283":"⊃","\u2287":"⊇",\u00DE:"Þ","\u2122":"™",\u040B:"Ћ",\u0426:"Ц"," ":" ",\u03A4:"Τ",\u0164:"Ť",\u0162:"Ţ",\u0422:"Т","\u{1D517}":"𝔗","\u2234":"∴",\u0398:"Θ","\u205F\u200A":"  ","\u2009":" ","\u223C":"∼","\u2243":"≃","\u2245":"≅","\u2248":"≈","\u{1D54B}":"𝕋","\u20DB":"⃛","\u{1D4AF}":"𝒯",\u0166:"Ŧ",\u00DA:"Ú","\u219F":"↟","\u2949":"⥉",\u040E:"Ў",\u016C:"Ŭ",\u00DB:"Û",\u0423:"У",\u0170:"Ű","\u{1D518}":"𝔘",\u00D9:"Ù",\u016A:"Ū",_:"_","\u23DF":"⏟","\u23B5":"⎵","\u23DD":"⏝","\u22C3":"⋃","\u228E":"⊎",\u0172:"Ų","\u{1D54C}":"𝕌","\u2912":"⤒","\u21C5":"⇅","\u2195":"↕","\u296E":"⥮","\u22A5":"⊥","\u21A5":"↥","\u2196":"↖","\u2197":"↗",\u03D2:"ϒ",\u03A5:"Υ",\u016E:"Ů","\u{1D4B0}":"𝒰",\u0168:"Ũ",\u00DC:"Ü","\u22AB":"⊫","\u2AEB":"⫫",\u0412:"В","\u22A9":"⊩","\u2AE6":"⫦","\u22C1":"⋁","\u2016":"‖","\u2223":"∣","|":"|","\u2758":"❘","\u2240":"≀","\u200A":" ","\u{1D519}":"𝔙","\u{1D54D}":"𝕍","\u{1D4B1}":"𝒱","\u22AA":"⊪",\u0174:"Ŵ","\u22C0":"⋀","\u{1D51A}":"𝔚","\u{1D54E}":"𝕎","\u{1D4B2}":"𝒲","\u{1D51B}":"𝔛",\u039E:"Ξ","\u{1D54F}":"𝕏","\u{1D4B3}":"𝒳",\u042F:"Я",\u0407:"Ї",\u042E:"Ю",\u00DD:"Ý",\u0176:"Ŷ",\u042B:"Ы","\u{1D51C}":"𝔜","\u{1D550}":"𝕐","\u{1D4B4}":"𝒴",\u0178:"Ÿ",\u0416:"Ж",\u0179:"Ź",\u017D:"Ž",\u0417:"З",\u017B:"Ż",\u0396:"Ζ",\u2128:"ℨ",\u2124:"ℤ","\u{1D4B5}":"𝒵",\u00E1:"á",\u0103:"ă","\u223E":"∾","\u223E\u0333":"∾̳","\u223F":"∿",\u00E2:"â",\u0430:"а",\u00E6:"æ","\u{1D51E}":"𝔞",\u00E0:"à",\u2135:"ℵ",\u03B1:"α",\u0101:"ā","\u2A3F":"⨿","\u2227":"∧","\u2A55":"⩕","\u2A5C":"⩜","\u2A58":"⩘","\u2A5A":"⩚","\u2220":"∠","\u29A4":"⦤","\u2221":"∡","\u29A8":"⦨","\u29A9":"⦩","\u29AA":"⦪","\u29AB":"⦫","\u29AC":"⦬","\u29AD":"⦭","\u29AE":"⦮","\u29AF":"⦯","\u221F":"∟","\u22BE":"⊾","\u299D":"⦝","\u2222":"∢","\u237C":"⍼",\u0105:"ą","\u{1D552}":"𝕒","\u2A70":"⩰","\u2A6F":"⩯","\u224A":"≊","\u224B":"≋","'":"'",\u00E5:"å","\u{1D4B6}":"𝒶","*":"*",\u00E3:"ã",\u00E4:"ä","\u2A11":"⨑","\u2AED":"⫭","\u224C":"≌","\u03F6":"϶","\u2035":"‵","\u223D":"∽","\u22CD":"⋍","\u22BD":"⊽","\u2305":"⌅","\u23B6":"⎶",\u0431:"б","\u201E":"„","\u29B0":"⦰",\u03B2:"β",\u2136:"ℶ","\u226C":"≬","\u{1D51F}":"𝔟","\u25EF":"◯","\u2A00":"⨀","\u2A01":"⨁","\u2A02":"⨂","\u2A06":"⨆","\u2605":"★","\u25BD":"▽","\u25B3":"△","\u2A04":"⨄","\u290D":"⤍","\u29EB":"⧫","\u25B4":"▴","\u25BE":"▾","\u25C2":"◂","\u25B8":"▸","\u2423":"␣","\u2592":"▒","\u2591":"░","\u2593":"▓","\u2588":"█","=\u20E5":"=⃥","\u2261\u20E5":"≡⃥","\u2310":"⌐","\u{1D553}":"𝕓","\u22C8":"⋈","\u2557":"╗","\u2554":"╔","\u2556":"╖","\u2553":"╓","\u2550":"═","\u2566":"╦","\u2569":"╩","\u2564":"╤","\u2567":"╧","\u255D":"╝","\u255A":"╚","\u255C":"╜","\u2559":"╙","\u2551":"║","\u256C":"╬","\u2563":"╣","\u2560":"╠","\u256B":"╫","\u2562":"╢","\u255F":"╟","\u29C9":"⧉","\u2555":"╕","\u2552":"╒","\u2510":"┐","\u250C":"┌","\u2565":"╥","\u2568":"╨","\u252C":"┬","\u2534":"┴","\u229F":"⊟","\u229E":"⊞","\u22A0":"⊠","\u255B":"╛","\u2558":"╘","\u2518":"┘","\u2514":"└","\u2502":"│","\u256A":"╪","\u2561":"╡","\u255E":"╞","\u253C":"┼","\u2524":"┤","\u251C":"├","\xA6":"¦","\u{1D4B7}":"𝒷","\u204F":"⁏","\\":"\","\u29C5":"⧅","\u27C8":"⟈","\u2022":"•","\u2AAE":"⪮",\u0107:"ć","\u2229":"∩","\u2A44":"⩄","\u2A49":"⩉","\u2A4B":"⩋","\u2A47":"⩇","\u2A40":"⩀","\u2229\uFE00":"∩︀","\u2041":"⁁","\u2A4D":"⩍",\u010D:"č",\u00E7:"ç",\u0109:"ĉ","\u2A4C":"⩌","\u2A50":"⩐",\u010B:"ċ","\u29B2":"⦲","\xA2":"¢","\u{1D520}":"𝔠",\u0447:"ч","\u2713":"✓",\u03C7:"χ","\u25CB":"○","\u29C3":"⧃","\u02C6":"ˆ","\u2257":"≗","\u21BA":"↺","\u21BB":"↻","\u24C8":"Ⓢ","\u229B":"⊛","\u229A":"⊚","\u229D":"⊝","\u2A10":"⨐","\u2AEF":"⫯","\u29C2":"⧂","\u2663":"♣",":":":",",":",","@":"@","\u2201":"∁","\u2A6D":"⩭","\u{1D554}":"𝕔","\u2117":"℗","\u21B5":"↵","\u2717":"✗","\u{1D4B8}":"𝒸","\u2ACF":"⫏","\u2AD1":"⫑","\u2AD0":"⫐","\u2AD2":"⫒","\u22EF":"⋯","\u2938":"⤸","\u2935":"⤵","\u22DE":"⋞","\u22DF":"⋟","\u21B6":"↶","\u293D":"⤽","\u222A":"∪","\u2A48":"⩈","\u2A46":"⩆","\u2A4A":"⩊","\u228D":"⊍","\u2A45":"⩅","\u222A\uFE00":"∪︀","\u21B7":"↷","\u293C":"⤼","\u22CE":"⋎","\u22CF":"⋏","\xA4":"¤","\u2231":"∱","\u232D":"⌭","\u2965":"⥥","\u2020":"†",\u2138:"ℸ","\u2010":"‐","\u290F":"⤏",\u010F:"ď",\u0434:"д","\u21CA":"⇊","\u2A77":"⩷","\xB0":"°",\u03B4:"δ","\u29B1":"⦱","\u297F":"⥿","\u{1D521}":"𝔡","\u2666":"♦",\u03DD:"ϝ","\u22F2":"⋲","\xF7":"÷","\u22C7":"⋇",\u0452:"ђ","\u231E":"⌞","\u230D":"⌍",$:"$","\u{1D555}":"𝕕","\u2251":"≑","\u2238":"∸","\u2214":"∔","\u22A1":"⊡","\u231F":"⌟","\u230C":"⌌","\u{1D4B9}":"𝒹",\u0455:"ѕ","\u29F6":"⧶",\u0111:"đ","\u22F1":"⋱","\u25BF":"▿","\u29A6":"⦦",\u045F:"џ","\u27FF":"⟿",\u00E9:"é","\u2A6E":"⩮",\u011B:"ě","\u2256":"≖",\u00EA:"ê","\u2255":"≕",\u044D:"э",\u0117:"ė","\u2252":"≒","\u{1D522}":"𝔢","\u2A9A":"⪚",\u00E8:"è","\u2A96":"⪖","\u2A98":"⪘","\u2A99":"⪙","\u23E7":"⏧",\u2113:"ℓ","\u2A95":"⪕","\u2A97":"⪗",\u0113:"ē","\u2205":"∅","\u2004":" ","\u2005":" ","\u2003":" ",\u014B:"ŋ","\u2002":" ",\u0119:"ę","\u{1D556}":"𝕖","\u22D5":"⋕","\u29E3":"⧣","\u2A71":"⩱",\u03B5:"ε","\u03F5":"ϵ","=":"=","\u225F":"≟","\u2A78":"⩸","\u29E5":"⧥","\u2253":"≓","\u2971":"⥱",\u212F:"ℯ",\u03B7:"η",\u00F0:"ð",\u00EB:"ë","\u20AC":"€","!":"!",\u0444:"ф","\u2640":"♀",\uFB03:"ffi",\uFB00:"ff",\uFB04:"ffl","\u{1D523}":"𝔣",\uFB01:"fi",fj:"fj","\u266D":"♭",\uFB02:"fl","\u25B1":"▱",\u0192:"ƒ","\u{1D557}":"𝕗","\u22D4":"⋔","\u2AD9":"⫙","\u2A0D":"⨍","\xBD":"½","\u2153":"⅓","\xBC":"¼","\u2155":"⅕","\u2159":"⅙","\u215B":"⅛","\u2154":"⅔","\u2156":"⅖","\xBE":"¾","\u2157":"⅗","\u215C":"⅜","\u2158":"⅘","\u215A":"⅚","\u215D":"⅝","\u215E":"⅞","\u2044":"⁄","\u2322":"⌢","\u{1D4BB}":"𝒻","\u2A8C":"⪌",\u01F5:"ǵ",\u03B3:"γ","\u2A86":"⪆",\u011F:"ğ",\u011D:"ĝ",\u0433:"г",\u0121:"ġ","\u2AA9":"⪩","\u2A80":"⪀","\u2A82":"⪂","\u2A84":"⪄","\u22DB\uFE00":"⋛︀","\u2A94":"⪔","\u{1D524}":"𝔤",\u2137:"ℷ",\u0453:"ѓ","\u2A92":"⪒","\u2AA5":"⪥","\u2AA4":"⪤","\u2269":"≩","\u2A8A":"⪊","\u2A88":"⪈","\u22E7":"⋧","\u{1D558}":"𝕘",\u210A:"ℊ","\u2A8E":"⪎","\u2A90":"⪐","\u2AA7":"⪧","\u2A7A":"⩺","\u22D7":"⋗","\u2995":"⦕","\u2A7C":"⩼","\u2978":"⥸","\u2269\uFE00":"≩︀",\u044A:"ъ","\u2948":"⥈","\u21AD":"↭",\u210F:"ℏ",\u0125:"ĥ","\u2665":"♥","\u2026":"…","\u22B9":"⊹","\u{1D525}":"𝔥","\u2925":"⤥","\u2926":"⤦","\u21FF":"⇿","\u223B":"∻","\u21A9":"↩","\u21AA":"↪","\u{1D559}":"𝕙","\u2015":"―","\u{1D4BD}":"𝒽",\u0127:"ħ","\u2043":"⁃",\u00ED:"í",\u00EE:"î",\u0438:"и",\u0435:"е","\xA1":"¡","\u{1D526}":"𝔦",\u00EC:"ì","\u2A0C":"⨌","\u222D":"∭","\u29DC":"⧜","\u2129":"℩",\u0133:"ij",\u012B:"ī",\u0131:"ı","\u22B7":"⊷",\u01B5:"Ƶ","\u2105":"℅","\u221E":"∞","\u29DD":"⧝","\u22BA":"⊺","\u2A17":"⨗","\u2A3C":"⨼",\u0451:"ё",\u012F:"į","\u{1D55A}":"𝕚",\u03B9:"ι","\xBF":"¿","\u{1D4BE}":"𝒾","\u22F9":"⋹","\u22F5":"⋵","\u22F4":"⋴","\u22F3":"⋳",\u0129:"ĩ",\u0456:"і",\u00EF:"ï",\u0135:"ĵ",\u0439:"й","\u{1D527}":"𝔧","\u0237":"ȷ","\u{1D55B}":"𝕛","\u{1D4BF}":"𝒿",\u0458:"ј",\u0454:"є",\u03BA:"κ",\u03F0:"ϰ",\u0137:"ķ",\u043A:"к","\u{1D528}":"𝔨",\u0138:"ĸ",\u0445:"х",\u045C:"ќ","\u{1D55C}":"𝕜","\u{1D4C0}":"𝓀","\u291B":"⤛","\u290E":"⤎","\u2A8B":"⪋","\u2962":"⥢",\u013A:"ĺ","\u29B4":"⦴",\u03BB:"λ","\u2991":"⦑","\u2A85":"⪅","\xAB":"«","\u291F":"⤟","\u291D":"⤝","\u21AB":"↫","\u2939":"⤹","\u2973":"⥳","\u21A2":"↢","\u2AAB":"⪫","\u2919":"⤙","\u2AAD":"⪭","\u2AAD\uFE00":"⪭︀","\u290C":"⤌","\u2772":"❲","{":"{","[":"[","\u298B":"⦋","\u298F":"⦏","\u298D":"⦍",\u013E:"ľ",\u013C:"ļ",\u043B:"л","\u2936":"⤶","\u2967":"⥧","\u294B":"⥋","\u21B2":"↲","\u2264":"≤","\u21C7":"⇇","\u22CB":"⋋","\u2AA8":"⪨","\u2A7F":"⩿","\u2A81":"⪁","\u2A83":"⪃","\u22DA\uFE00":"⋚︀","\u2A93":"⪓","\u22D6":"⋖","\u297C":"⥼","\u{1D529}":"𝔩","\u2A91":"⪑","\u296A":"⥪","\u2584":"▄",\u0459:"љ","\u296B":"⥫","\u25FA":"◺",\u0140:"ŀ","\u23B0":"⎰","\u2268":"≨","\u2A89":"⪉","\u2A87":"⪇","\u22E6":"⋦","\u27EC":"⟬","\u21FD":"⇽","\u27FC":"⟼","\u21AC":"↬","\u2985":"⦅","\u{1D55D}":"𝕝","\u2A2D":"⨭","\u2A34":"⨴","\u2217":"∗","\u25CA":"◊","(":"(","\u2993":"⦓","\u296D":"⥭","\u200E":"‎","\u22BF":"⊿","\u2039":"‹","\u{1D4C1}":"𝓁","\u2A8D":"⪍","\u2A8F":"⪏","\u201A":"‚",\u0142:"ł","\u2AA6":"⪦","\u2A79":"⩹","\u22C9":"⋉","\u2976":"⥶","\u2A7B":"⩻","\u2996":"⦖","\u25C3":"◃","\u294A":"⥊","\u2966":"⥦","\u2268\uFE00":"≨︀","\u223A":"∺","\xAF":"¯","\u2642":"♂","\u2720":"✠","\u25AE":"▮","\u2A29":"⨩",\u043C:"м","\u2014":"—","\u{1D52A}":"𝔪","\u2127":"℧",\u00B5:"µ","\u2AF0":"⫰","\u2212":"−","\u2A2A":"⨪","\u2ADB":"⫛","\u22A7":"⊧","\u{1D55E}":"𝕞","\u{1D4C2}":"𝓂",\u03BC:"μ","\u22B8":"⊸","\u22D9\u0338":"⋙̸","\u226B\u20D2":"≫⃒","\u21CD":"⇍","\u21CE":"⇎","\u22D8\u0338":"⋘̸","\u226A\u20D2":"≪⃒","\u21CF":"⇏","\u22AF":"⊯","\u22AE":"⊮",\u0144:"ń","\u2220\u20D2":"∠⃒","\u2A70\u0338":"⩰̸","\u224B\u0338":"≋̸",\u0149:"ʼn","\u266E":"♮","\u2A43":"⩃",\u0148:"ň",\u0146:"ņ","\u2A6D\u0338":"⩭̸","\u2A42":"⩂",\u043D:"н","\u2013":"–","\u21D7":"⇗","\u2924":"⤤","\u2250\u0338":"≐̸","\u2928":"⤨","\u{1D52B}":"𝔫","\u21AE":"↮","\u2AF2":"⫲","\u22FC":"⋼","\u22FA":"⋺",\u045A:"њ","\u2266\u0338":"≦̸","\u219A":"↚","\u2025":"‥","\u{1D55F}":"𝕟","\xAC":"¬","\u22F9\u0338":"⋹̸","\u22F5\u0338":"⋵̸","\u22F7":"⋷","\u22F6":"⋶","\u22FE":"⋾","\u22FD":"⋽","\u2AFD\u20E5":"⫽⃥","\u2202\u0338":"∂̸","\u2A14":"⨔","\u219B":"↛","\u2933\u0338":"⤳̸","\u219D\u0338":"↝̸","\u{1D4C3}":"𝓃","\u2284":"⊄","\u2AC5\u0338":"⫅̸","\u2285":"⊅","\u2AC6\u0338":"⫆̸",\u00F1:"ñ",\u03BD:"ν","#":"#","\u2116":"№","\u2007":" ","\u22AD":"⊭","\u2904":"⤄","\u224D\u20D2":"≍⃒","\u22AC":"⊬","\u2265\u20D2":"≥⃒",">\u20D2":">⃒","\u29DE":"⧞","\u2902":"⤂","\u2264\u20D2":"≤⃒","<\u20D2":"<⃒","\u22B4\u20D2":"⊴⃒","\u2903":"⤃","\u22B5\u20D2":"⊵⃒","\u223C\u20D2":"∼⃒","\u21D6":"⇖","\u2923":"⤣","\u2927":"⤧",\u00F3:"ó",\u00F4:"ô",\u043E:"о",\u0151:"ő","\u2A38":"⨸","\u29BC":"⦼",\u0153:"œ","\u29BF":"⦿","\u{1D52C}":"𝔬","\u02DB":"˛",\u00F2:"ò","\u29C1":"⧁","\u29B5":"⦵","\u29BE":"⦾","\u29BB":"⦻","\u29C0":"⧀",\u014D:"ō",\u03C9:"ω",\u03BF:"ο","\u29B6":"⦶","\u{1D560}":"𝕠","\u29B7":"⦷","\u29B9":"⦹","\u2228":"∨","\u2A5D":"⩝",\u2134:"ℴ",\u00AA:"ª",\u00BA:"º","\u22B6":"⊶","\u2A56":"⩖","\u2A57":"⩗","\u2A5B":"⩛",\u00F8:"ø","\u2298":"⊘",\u00F5:"õ","\u2A36":"⨶",\u00F6:"ö","\u233D":"⌽","\xB6":"¶","\u2AF3":"⫳","\u2AFD":"⫽",\u043F:"п","%":"%",".":".","\u2030":"‰","\u2031":"‱","\u{1D52D}":"𝔭",\u03C6:"φ",\u03D5:"ϕ","\u260E":"☎",\u03C0:"π",\u03D6:"ϖ",\u210E:"ℎ","+":"+","\u2A23":"⨣","\u2A22":"⨢","\u2A25":"⨥","\u2A72":"⩲","\u2A26":"⨦","\u2A27":"⨧","\u2A15":"⨕","\u{1D561}":"𝕡","\xA3":"£","\u2AB3":"⪳","\u2AB7":"⪷","\u2AB9":"⪹","\u2AB5":"⪵","\u22E8":"⋨","\u2032":"′","\u232E":"⌮","\u2312":"⌒","\u2313":"⌓","\u22B0":"⊰","\u{1D4C5}":"𝓅",\u03C8:"ψ","\u2008":" ","\u{1D52E}":"𝔮","\u{1D562}":"𝕢","\u2057":"⁗","\u{1D4C6}":"𝓆","\u2A16":"⨖","?":"?","\u291C":"⤜","\u2964":"⥤","\u223D\u0331":"∽̱",\u0155:"ŕ","\u29B3":"⦳","\u2992":"⦒","\u29A5":"⦥","\xBB":"»","\u2975":"⥵","\u2920":"⤠","\u2933":"⤳","\u291E":"⤞","\u2945":"⥅","\u2974":"⥴","\u21A3":"↣","\u219D":"↝","\u291A":"⤚","\u2236":"∶","\u2773":"❳","}":"}","]":"]","\u298C":"⦌","\u298E":"⦎","\u2990":"⦐",\u0159:"ř",\u0157:"ŗ",\u0440:"р","\u2937":"⤷","\u2969":"⥩","\u21B3":"↳","\u25AD":"▭","\u297D":"⥽","\u{1D52F}":"𝔯","\u296C":"⥬",\u03C1:"ρ",\u03F1:"ϱ","\u21C9":"⇉","\u22CC":"⋌","\u02DA":"˚","\u200F":"‏","\u23B1":"⎱","\u2AEE":"⫮","\u27ED":"⟭","\u21FE":"⇾","\u2986":"⦆","\u{1D563}":"𝕣","\u2A2E":"⨮","\u2A35":"⨵",")":")","\u2994":"⦔","\u2A12":"⨒","\u203A":"›","\u{1D4C7}":"𝓇","\u22CA":"⋊","\u25B9":"▹","\u29CE":"⧎","\u2968":"⥨","\u211E":"℞",\u015B:"ś","\u2AB4":"⪴","\u2AB8":"⪸",\u0161:"š",\u015F:"ş",\u015D:"ŝ","\u2AB6":"⪶","\u2ABA":"⪺","\u22E9":"⋩","\u2A13":"⨓",\u0441:"с","\u22C5":"⋅","\u2A66":"⩦","\u21D8":"⇘","\xA7":"§",";":";","\u2929":"⤩","\u2736":"✶","\u{1D530}":"𝔰","\u266F":"♯",\u0449:"щ",\u0448:"ш","\xAD":"­",\u03C3:"σ",\u03C2:"ς","\u2A6A":"⩪","\u2A9E":"⪞","\u2AA0":"⪠","\u2A9D":"⪝","\u2A9F":"⪟","\u2246":"≆","\u2A24":"⨤","\u2972":"⥲","\u2A33":"⨳","\u29E4":"⧤","\u2323":"⌣","\u2AAA":"⪪","\u2AAC":"⪬","\u2AAC\uFE00":"⪬︀",\u044C:"ь","/":"/","\u29C4":"⧄","\u233F":"⌿","\u{1D564}":"𝕤","\u2660":"♠","\u2293\uFE00":"⊓︀","\u2294\uFE00":"⊔︀","\u{1D4C8}":"𝓈","\u2606":"☆","\u2282":"⊂","\u2AC5":"⫅","\u2ABD":"⪽","\u2AC3":"⫃","\u2AC1":"⫁","\u2ACB":"⫋","\u228A":"⊊","\u2ABF":"⪿","\u2979":"⥹","\u2AC7":"⫇","\u2AD5":"⫕","\u2AD3":"⫓","\u266A":"♪","\xB9":"¹","\xB2":"²","\xB3":"³","\u2AC6":"⫆","\u2ABE":"⪾","\u2AD8":"⫘","\u2AC4":"⫄","\u27C9":"⟉","\u2AD7":"⫗","\u297B":"⥻","\u2AC2":"⫂","\u2ACC":"⫌","\u228B":"⊋","\u2AC0":"⫀","\u2AC8":"⫈","\u2AD4":"⫔","\u2AD6":"⫖","\u21D9":"⇙","\u292A":"⤪",\u00DF:"ß","\u2316":"⌖",\u03C4:"τ",\u0165:"ť",\u0163:"ţ",\u0442:"т","\u2315":"⌕","\u{1D531}":"𝔱",\u03B8:"θ",\u03D1:"ϑ",\u00FE:"þ","\xD7":"×","\u2A31":"⨱","\u2A30":"⨰","\u2336":"⌶","\u2AF1":"⫱","\u{1D565}":"𝕥","\u2ADA":"⫚","\u2034":"‴","\u25B5":"▵","\u225C":"≜","\u25EC":"◬","\u2A3A":"⨺","\u2A39":"⨹","\u29CD":"⧍","\u2A3B":"⨻","\u23E2":"⏢","\u{1D4C9}":"𝓉",\u0446:"ц",\u045B:"ћ",\u0167:"ŧ","\u2963":"⥣",\u00FA:"ú",\u045E:"ў",\u016D:"ŭ",\u00FB:"û",\u0443:"у",\u0171:"ű","\u297E":"⥾","\u{1D532}":"𝔲",\u00F9:"ù","\u2580":"▀","\u231C":"⌜","\u230F":"⌏","\u25F8":"◸",\u016B:"ū",\u0173:"ų","\u{1D566}":"𝕦",\u03C5:"υ","\u21C8":"⇈","\u231D":"⌝","\u230E":"⌎",\u016F:"ů","\u25F9":"◹","\u{1D4CA}":"𝓊","\u22F0":"⋰",\u0169:"ũ",\u00FC:"ü","\u29A7":"⦧","\u2AE8":"⫨","\u2AE9":"⫩","\u299C":"⦜","\u228A\uFE00":"⊊︀","\u2ACB\uFE00":"⫋︀","\u228B\uFE00":"⊋︀","\u2ACC\uFE00":"⫌︀",\u0432:"в","\u22BB":"⊻","\u225A":"≚","\u22EE":"⋮","\u{1D533}":"𝔳","\u{1D567}":"𝕧","\u{1D4CB}":"𝓋","\u299A":"⦚",\u0175:"ŵ","\u2A5F":"⩟","\u2259":"≙","\u2118":"℘","\u{1D534}":"𝔴","\u{1D568}":"𝕨","\u{1D4CC}":"𝓌","\u{1D535}":"𝔵",\u03BE:"ξ","\u22FB":"⋻","\u{1D569}":"𝕩","\u{1D4CD}":"𝓍",\u00FD:"ý",\u044F:"я",\u0177:"ŷ",\u044B:"ы","\xA5":"¥","\u{1D536}":"𝔶",\u0457:"ї","\u{1D56A}":"𝕪","\u{1D4CE}":"𝓎",\u044E:"ю",\u00FF:"ÿ",\u017A:"ź",\u017E:"ž",\u0437:"з",\u017C:"ż",\u03B6:"ζ","\u{1D537}":"𝔷",\u0436:"ж","\u21DD":"⇝","\u{1D56B}":"𝕫","\u{1D4CF}":"𝓏","\u200D":"‍","\u200C":"‌"}}}});var qE=jr(jf=>{"use strict";Object.defineProperty(jf,"__esModule",{value:!0});jf.numericUnicodeMap={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}});var IE=jr(Bo=>{"use strict";Object.defineProperty(Bo,"__esModule",{value:!0});Bo.fromCodePoint=String.fromCodePoint||function(yr){return String.fromCharCode(Math.floor((yr-65536)/1024)+55296,(yr-65536)%1024+56320)};Bo.getCodePoint=String.prototype.codePointAt?function(yr,br){return yr.codePointAt(br)}:function(yr,br){return(yr.charCodeAt(br)-55296)*1024+yr.charCodeAt(br+1)-56320+65536};Bo.highSurrogateFrom=55296;Bo.highSurrogateTo=56319});var BE=jr(oo=>{"use strict";var Fo=oo&&oo.__assign||function(){return Fo=Object.assign||function(yr){for(var br,mr=1,Er=arguments.length;mr'"&]/g,nonAscii:/(?:[<>'"&\u0080-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,nonAsciiPrintable:/(?:[<>'"&\x01-\x08\x11-\x15\x17-\x1F\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,extensive:/(?:[\x01-\x0c\x0e-\x1f\x21-\x2c\x2e-\x2f\x3a-\x40\x5b-\x60\x7b-\x7d\x7f-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g},aN={mode:"specialChars",level:"all",numeric:"decimal"};function lN(yr,br){var mr=br===void 0?aN:br,Er=mr.mode,wr=Er===void 0?"specialChars":Er,_r=mr.numeric,xr=_r===void 0?"decimal":_r,Sr=mr.level,Tr=Sr===void 0?"all":Sr;if(!yr)return"";var Or=oN[wr],Dr=Bf[Tr].characters,Cr=xr==="hexadecimal";Or.lastIndex=0;var mr=Or.exec(yr),Er;if(mr){Er="";var _r=0;do{_r!==mr.index&&(Er+=yr.substring(_r,mr.index));var Sr=mr[0],Ar=Dr[Sr];if(!Ar){var Lr=Sr.length>1?Hf.getCodePoint(Sr,0):Sr.charCodeAt(0);Ar=(Cr?"&#x"+Lr.toString(16):"&#"+Lr)+";"}Er+=Ar,_r=mr.index+Sr.length}while(mr=Or.exec(yr));_r!==yr.length&&(Er+=yr.substring(_r))}else Er=yr;return Er}oo.encode=lN;var cN={scope:"body",level:"all"},Ff=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+);/g,zf=/&(?:#\d+|#[xX][\da-fA-F]+|[0-9a-zA-Z]+)[;=]?/g,jE={xml:{strict:Ff,attribute:zf,body:Ga.bodyRegExps.xml},html4:{strict:Ff,attribute:zf,body:Ga.bodyRegExps.html4},html5:{strict:Ff,attribute:zf,body:Ga.bodyRegExps.html5}},uN=Fo(Fo({},jE),{all:jE.html5}),$f=String.fromCharCode,HE=$f(65533),dN={level:"all"};function fN(yr,br){var mr=(br===void 0?dN:br).level,Er=mr===void 0?"all":mr;if(!yr)return"";var mr=yr,wr=yr[yr.length-1],_r=Bf[Er].entities[yr];if(_r)mr=_r;else if(yr[0]==="&"&&yr[1]==="#"){var xr=yr[2],Sr=xr=="x"||xr=="X"?parseInt(yr.substr(3),16):parseInt(yr.substr(2));mr=Sr>=1114111?HE:Sr>65535?Hf.fromCodePoint(Sr):$f(PE.numericUnicodeMap[Sr]||Sr)}return mr}oo.decodeEntity=fN;function hN(yr,br){var mr=br===void 0?cN:br,Er=mr.level,wr=Er===void 0?"all":Er,_r=mr.scope,xr=_r===void 0?wr==="xml"?"strict":"body":_r;if(!yr)return"";var Sr=uN[wr][xr],Tr=Bf[wr].entities,Or=xr==="attribute",Dr=xr==="strict";Sr.lastIndex=0;var Cr=Sr.exec(yr),Ar;if(Cr){Ar="";var Lr=0;do{Lr!==Cr.index&&(Ar+=yr.substring(Lr,Cr.index));var Rr=Cr[0],Nr=Rr,Ir=Rr[Rr.length-1];if(Or&&Ir==="=")Nr=Rr;else if(Dr&&Ir!==";")Nr=Rr;else{var Pr=Tr[Rr];if(Pr)Nr=Pr;else if(Rr[0]==="&"&&Rr[1]==="#"){var Br=Rr[2],zr=Br=="x"||Br=="X"?parseInt(Rr.substr(3),16):parseInt(Rr.substr(2));Nr=zr>=1114111?HE:zr>65535?Hf.fromCodePoint(zr):$f(PE.numericUnicodeMap[zr]||zr)}}Ar+=Nr,Lr=Cr.index+Rr.length}while(Cr=Sr.exec(yr));Lr!==yr.length&&(Ar+=yr.substring(Lr))}else Ar=yr;return Ar}oo.decode=hN});var zE=jr((Jz,FE)=>{"use strict";FE.exports=yr=>encodeURIComponent(yr).replace(/[!'()*]/g,br=>`%${br.charCodeAt(0).toString(16).toUpperCase()}`)});var GE=jr((Qz,WE)=>{"use strict";var $E="%[a-f0-9]{2}",UE=new RegExp($E,"gi"),VE=new RegExp("("+$E+")+","gi");function Uf(yr,br){try{return decodeURIComponent(yr.join(""))}catch(wr){}if(yr.length===1)return yr;br=br||1;var mr=yr.slice(0,br),Er=yr.slice(br);return Array.prototype.concat.call([],Uf(mr),Uf(Er))}function pN(yr){try{return decodeURIComponent(yr)}catch(Er){for(var br=yr.match(UE),mr=1;mr{"use strict";YE.exports=(yr,br)=>{if(!(typeof yr=="string"&&typeof br=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(br==="")return[yr];let mr=yr.indexOf(br);return mr===-1?[yr]:[yr.slice(0,mr),yr.slice(mr+br.length)]}});var JE=jr((e$,XE)=>{"use strict";XE.exports=function(yr,br){for(var mr={},Er=Object.keys(yr),wr=Array.isArray(br),_r=0;_r{"use strict";var gN=zE(),vN=GE(),QE=KE(),bN=JE(),yN=yr=>yr==null,Vf=Symbol("encodeFragmentIdentifier");function EN(yr){switch(yr.arrayFormat){case"index":return br=>(mr,Er)=>{let wr=mr.length;return Er===void 0||yr.skipNull&&Er===null||yr.skipEmptyString&&Er===""?mr:Er===null?[...mr,[Mi(br,yr),"[",wr,"]"].join("")]:[...mr,[Mi(br,yr),"[",Mi(wr,yr),"]=",Mi(Er,yr)].join("")]};case"bracket":return br=>(mr,Er)=>Er===void 0||yr.skipNull&&Er===null||yr.skipEmptyString&&Er===""?mr:Er===null?[...mr,[Mi(br,yr),"[]"].join("")]:[...mr,[Mi(br,yr),"[]=",Mi(Er,yr)].join("")];case"colon-list-separator":return br=>(mr,Er)=>Er===void 0||yr.skipNull&&Er===null||yr.skipEmptyString&&Er===""?mr:Er===null?[...mr,[Mi(br,yr),":list="].join("")]:[...mr,[Mi(br,yr),":list=",Mi(Er,yr)].join("")];case"comma":case"separator":case"bracket-separator":{let br=yr.arrayFormat==="bracket-separator"?"[]=":"=";return mr=>(Er,wr)=>wr===void 0||yr.skipNull&&wr===null||yr.skipEmptyString&&wr===""?Er:(wr=wr===null?"":wr,Er.length===0?[[Mi(mr,yr),br,Mi(wr,yr)].join("")]:[[Er,Mi(wr,yr)].join(yr.arrayFormatSeparator)])}default:return br=>(mr,Er)=>Er===void 0||yr.skipNull&&Er===null||yr.skipEmptyString&&Er===""?mr:Er===null?[...mr,Mi(br,yr)]:[...mr,[Mi(br,yr),"=",Mi(Er,yr)].join("")]}}function wN(yr){let br;switch(yr.arrayFormat){case"index":return(mr,Er,wr)=>{if(br=/\[(\d*)\]$/.exec(mr),mr=mr.replace(/\[\d*\]$/,""),!br){wr[mr]=Er;return}wr[mr]===void 0&&(wr[mr]={}),wr[mr][br[1]]=Er};case"bracket":return(mr,Er,wr)=>{if(br=/(\[\])$/.exec(mr),mr=mr.replace(/\[\]$/,""),!br){wr[mr]=Er;return}if(wr[mr]===void 0){wr[mr]=[Er];return}wr[mr]=[].concat(wr[mr],Er)};case"colon-list-separator":return(mr,Er,wr)=>{if(br=/(:list)$/.exec(mr),mr=mr.replace(/:list$/,""),!br){wr[mr]=Er;return}if(wr[mr]===void 0){wr[mr]=[Er];return}wr[mr]=[].concat(wr[mr],Er)};case"comma":case"separator":return(mr,Er,wr)=>{let _r=typeof Er=="string"&&Er.includes(yr.arrayFormatSeparator),xr=typeof Er=="string"&&!_r&&os(Er,yr).includes(yr.arrayFormatSeparator);Er=xr?os(Er,yr):Er;let Sr=_r||xr?Er.split(yr.arrayFormatSeparator).map(Tr=>os(Tr,yr)):Er===null?Er:os(Er,yr);wr[mr]=Sr};case"bracket-separator":return(mr,Er,wr)=>{let _r=/(\[\])$/.test(mr);if(mr=mr.replace(/\[\]$/,""),!_r){wr[mr]=Er&&os(Er,yr);return}let xr=Er===null?[]:Er.split(yr.arrayFormatSeparator).map(Sr=>os(Sr,yr));if(wr[mr]===void 0){wr[mr]=xr;return}wr[mr]=[].concat(wr[mr],xr)};default:return(mr,Er,wr)=>{if(wr[mr]===void 0){wr[mr]=Er;return}wr[mr]=[].concat(wr[mr],Er)}}}function ZE(yr){if(typeof yr!="string"||yr.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Mi(yr,br){return br.encode?br.strict?gN(yr):encodeURIComponent(yr):yr}function os(yr,br){return br.decode?vN(yr):yr}function ew(yr){return Array.isArray(yr)?yr.sort():typeof yr=="object"?ew(Object.keys(yr)).sort((br,mr)=>Number(br)-Number(mr)).map(br=>yr[br]):yr}function tw(yr){let br=yr.indexOf("#");return br!==-1&&(yr=yr.slice(0,br)),yr}function _N(yr){let br="",mr=yr.indexOf("#");return mr!==-1&&(br=yr.slice(mr)),br}function rw(yr){yr=tw(yr);let br=yr.indexOf("?");return br===-1?"":yr.slice(br+1)}function iw(yr,br){return br.parseNumbers&&!Number.isNaN(Number(yr))&&typeof yr=="string"&&yr.trim()!==""?yr=Number(yr):br.parseBooleans&&yr!==null&&(yr.toLowerCase()==="true"||yr.toLowerCase()==="false")&&(yr=yr.toLowerCase()==="true"),yr}function nw(yr,br){br=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},br),ZE(br.arrayFormatSeparator);let mr=wN(br),Er=Object.create(null);if(typeof yr!="string"||(yr=yr.trim().replace(/^[?#&]/,""),!yr))return Er;for(let wr of yr.split("&")){if(wr==="")continue;let[_r,xr]=QE(br.decode?wr.replace(/\+/g," "):wr,"=");xr=xr===void 0?null:["comma","separator","bracket-separator"].includes(br.arrayFormat)?xr:os(xr,br),mr(os(_r,br),xr,Er)}for(let wr of Object.keys(Er)){let _r=Er[wr];if(typeof _r=="object"&&_r!==null)for(let xr of Object.keys(_r))_r[xr]=iw(_r[xr],br);else Er[wr]=iw(_r,br)}return br.sort===!1?Er:(br.sort===!0?Object.keys(Er).sort():Object.keys(Er).sort(br.sort)).reduce((wr,_r)=>{let xr=Er[_r];return Boolean(xr)&&typeof xr=="object"&&!Array.isArray(xr)?wr[_r]=ew(xr):wr[_r]=xr,wr},Object.create(null))}on.extract=rw;on.parse=nw;on.stringify=(yr,br)=>{if(!yr)return"";br=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},br),ZE(br.arrayFormatSeparator);let mr=xr=>br.skipNull&&yN(yr[xr])||br.skipEmptyString&&yr[xr]==="",Er=EN(br),wr={};for(let xr of Object.keys(yr))mr(xr)||(wr[xr]=yr[xr]);let _r=Object.keys(wr);return br.sort!==!1&&_r.sort(br.sort),_r.map(xr=>{let Sr=yr[xr];return Sr===void 0?"":Sr===null?Mi(xr,br):Array.isArray(Sr)?Sr.length===0&&br.arrayFormat==="bracket-separator"?Mi(xr,br)+"[]":Sr.reduce(Er(xr),[]).join("&"):Mi(xr,br)+"="+Mi(Sr,br)}).filter(xr=>xr.length>0).join("&")};on.parseUrl=(yr,br)=>{br=Object.assign({decode:!0},br);let[mr,Er]=QE(yr,"#");return Object.assign({url:mr.split("?")[0]||"",query:nw(rw(yr),br)},br&&br.parseFragmentIdentifier&&Er?{fragmentIdentifier:os(Er,br)}:{})};on.stringifyUrl=(yr,br)=>{br=Object.assign({encode:!0,strict:!0,[Vf]:!0},br);let mr=tw(yr.url).split("?")[0]||"",Er=on.extract(yr.url),wr=on.parse(Er,{sort:!1}),_r=Object.assign(wr,yr.query),xr=on.stringify(_r,br);xr&&(xr=`?${xr}`);let Sr=_N(yr.url);return yr.fragmentIdentifier&&(Sr=`#${br[Vf]?Mi(yr.fragmentIdentifier,br):yr.fragmentIdentifier}`),`${mr}${xr}${Sr}`};on.pick=(yr,br,mr)=>{mr=Object.assign({parseFragmentIdentifier:!0,[Vf]:!1},mr);let{url:Er,query:wr,fragmentIdentifier:_r}=on.parseUrl(yr,mr);return on.stringifyUrl({url:Er,query:bN(wr,br),fragmentIdentifier:_r},mr)};on.exclude=(yr,br,mr)=>{let Er=Array.isArray(br)?wr=>!br.includes(wr):(wr,_r)=>!br(wr,_r);return on.pick(yr,Er,mr)}});var Bw=jr((Ya,Qf)=>{(function(br,mr){typeof Ya=="object"&&typeof Qf=="object"?Qf.exports=mr():typeof define=="function"&&define.amd?define([],mr):typeof Ya=="object"?Ya.ClipboardJS=mr():br.ClipboardJS=mr()})(Ya,function(){return function(){var yr={686:function(Er,wr,_r){"use strict";_r.d(wr,{default:function(){return Yi}});var xr=_r(279),Sr=_r.n(xr),Tr=_r(370),Or=_r.n(Tr),Dr=_r(817),Cr=_r.n(Dr);function Ar(ii){try{return document.execCommand(ii)}catch(ei){return!1}}var Lr=function(ei){var Qr=Cr()(ei);return Ar("cut"),Qr},Rr=Lr;function Nr(ii){var ei=document.documentElement.getAttribute("dir")==="rtl",Qr=document.createElement("textarea");Qr.style.fontSize="12pt",Qr.style.border="0",Qr.style.padding="0",Qr.style.margin="0",Qr.style.position="absolute",Qr.style[ei?"right":"left"]="-9999px";var si=window.pageYOffset||document.documentElement.scrollTop;return Qr.style.top="".concat(si,"px"),Qr.setAttribute("readonly",""),Qr.value=ii,Qr}var Ir=function(ei,Qr){var si=Nr(ei);Qr.container.appendChild(si);var Zr=Cr()(si);return Ar("copy"),si.remove(),Zr},Pr=function(ei){var Qr=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},si="";return typeof ei=="string"?si=Ir(ei,Qr):ei instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(ei==null?void 0:ei.type)?si=Ir(ei.value,Qr):(si=Cr()(ei),Ar("copy")),si},Br=Pr;function zr(ii){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?zr=function(Qr){return typeof Qr}:zr=function(Qr){return Qr&&typeof Symbol=="function"&&Qr.constructor===Symbol&&Qr!==Symbol.prototype?"symbol":typeof Qr},zr(ii)}var Ur=function(){var ei=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Qr=ei.action,si=Qr===void 0?"copy":Qr,Zr=ei.container,ni=ei.target,bi=ei.text;if(si!=="copy"&&si!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(ni!==void 0)if(ni&&zr(ni)==="object"&&ni.nodeType===1){if(si==="copy"&&ni.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(si==="cut"&&(ni.hasAttribute("readonly")||ni.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(bi)return Br(bi,{container:Zr});if(ni)return si==="cut"?Rr(ni):Br(ni,{container:Zr})},Kr=Ur;function Fr(ii){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fr=function(Qr){return typeof Qr}:Fr=function(Qr){return Qr&&typeof Symbol=="function"&&Qr.constructor===Symbol&&Qr!==Symbol.prototype?"symbol":typeof Qr},Fr(ii)}function Xr(ii,ei){if(!(ii instanceof ei))throw new TypeError("Cannot call a class as a function")}function Jr(ii,ei){for(var Qr=0;Qr0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof Zr.action=="function"?Zr.action:this.defaultAction,this.target=typeof Zr.target=="function"?Zr.target:this.defaultTarget,this.text=typeof Zr.text=="function"?Zr.text:this.defaultText,this.container=Fr(Zr.container)==="object"?Zr.container:document.body}},{key:"listenClick",value:function(Zr){var ni=this;this.listener=Or()(Zr,"click",function(bi){return ni.onClick(bi)})}},{key:"onClick",value:function(Zr){var ni=Zr.delegateTarget||Zr.currentTarget,bi=this.action(ni)||"copy",xi=Kr({action:bi,container:this.container,target:this.target(ni),text:this.text(ni)});this.emit(xi?"success":"error",{action:bi,text:xi,trigger:ni,clearSelection:function(){ni&&ni.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(Zr){return ki("action",Zr)}},{key:"defaultTarget",value:function(Zr){var ni=ki("target",Zr);if(ni)return document.querySelector(ni)}},{key:"defaultText",value:function(Zr){return ki("text",Zr)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(Zr){var ni=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return Br(Zr,ni)}},{key:"cut",value:function(Zr){return Rr(Zr)}},{key:"isSupported",value:function(){var Zr=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],ni=typeof Zr=="string"?[Zr]:Zr,bi=!!document.queryCommandSupported;return ni.forEach(function(xi){bi=bi&&!!document.queryCommandSupported(xi)}),bi}}]),Qr}(Sr()),Yi=Cn},828:function(Er){var wr=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var _r=Element.prototype;_r.matches=_r.matchesSelector||_r.mozMatchesSelector||_r.msMatchesSelector||_r.oMatchesSelector||_r.webkitMatchesSelector}function xr(Sr,Tr){for(;Sr&&Sr.nodeType!==wr;){if(typeof Sr.matches=="function"&&Sr.matches(Tr))return Sr;Sr=Sr.parentNode}}Er.exports=xr},438:function(Er,wr,_r){var xr=_r(828);function Sr(Dr,Cr,Ar,Lr,Rr){var Nr=Or.apply(this,arguments);return Dr.addEventListener(Ar,Nr,Rr),{destroy:function(){Dr.removeEventListener(Ar,Nr,Rr)}}}function Tr(Dr,Cr,Ar,Lr,Rr){return typeof Dr.addEventListener=="function"?Sr.apply(null,arguments):typeof Ar=="function"?Sr.bind(null,document).apply(null,arguments):(typeof Dr=="string"&&(Dr=document.querySelectorAll(Dr)),Array.prototype.map.call(Dr,function(Nr){return Sr(Nr,Cr,Ar,Lr,Rr)}))}function Or(Dr,Cr,Ar,Lr){return function(Rr){Rr.delegateTarget=xr(Rr.target,Cr),Rr.delegateTarget&&Lr.call(Dr,Rr)}}Er.exports=Tr},879:function(Er,wr){wr.node=function(_r){return _r!==void 0&&_r instanceof HTMLElement&&_r.nodeType===1},wr.nodeList=function(_r){var xr=Object.prototype.toString.call(_r);return _r!==void 0&&(xr==="[object NodeList]"||xr==="[object HTMLCollection]")&&"length"in _r&&(_r.length===0||wr.node(_r[0]))},wr.string=function(_r){return typeof _r=="string"||_r instanceof String},wr.fn=function(_r){var xr=Object.prototype.toString.call(_r);return xr==="[object Function]"}},370:function(Er,wr,_r){var xr=_r(879),Sr=_r(438);function Tr(Ar,Lr,Rr){if(!Ar&&!Lr&&!Rr)throw new Error("Missing required arguments");if(!xr.string(Lr))throw new TypeError("Second argument must be a String");if(!xr.fn(Rr))throw new TypeError("Third argument must be a Function");if(xr.node(Ar))return Or(Ar,Lr,Rr);if(xr.nodeList(Ar))return Dr(Ar,Lr,Rr);if(xr.string(Ar))return Cr(Ar,Lr,Rr);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function Or(Ar,Lr,Rr){return Ar.addEventListener(Lr,Rr),{destroy:function(){Ar.removeEventListener(Lr,Rr)}}}function Dr(Ar,Lr,Rr){return Array.prototype.forEach.call(Ar,function(Nr){Nr.addEventListener(Lr,Rr)}),{destroy:function(){Array.prototype.forEach.call(Ar,function(Nr){Nr.removeEventListener(Lr,Rr)})}}}function Cr(Ar,Lr,Rr){return Sr(document.body,Ar,Lr,Rr)}Er.exports=Tr},817:function(Er){function wr(_r){var xr;if(_r.nodeName==="SELECT")_r.focus(),xr=_r.value;else if(_r.nodeName==="INPUT"||_r.nodeName==="TEXTAREA"){var Sr=_r.hasAttribute("readonly");Sr||_r.setAttribute("readonly",""),_r.select(),_r.setSelectionRange(0,_r.value.length),Sr||_r.removeAttribute("readonly"),xr=_r.value}else{_r.hasAttribute("contenteditable")&&_r.focus();var Tr=window.getSelection(),Or=document.createRange();Or.selectNodeContents(_r),Tr.removeAllRanges(),Tr.addRange(Or),xr=Tr.toString()}return xr}Er.exports=wr},279:function(Er){function wr(){}wr.prototype={on:function(_r,xr,Sr){var Tr=this.e||(this.e={});return(Tr[_r]||(Tr[_r]=[])).push({fn:xr,ctx:Sr}),this},once:function(_r,xr,Sr){var Tr=this;function Or(){Tr.off(_r,Or),xr.apply(Sr,arguments)}return Or._=xr,this.on(_r,Or,Sr)},emit:function(_r){var xr=[].slice.call(arguments,1),Sr=((this.e||(this.e={}))[_r]||[]).slice(),Tr=0,Or=Sr.length;for(Tr;Tr{"use strict";Object.defineProperty(Tn,"__esModule",{value:!0});Tn.Utils=Tn.obsoleteAttr=Tn.obsoleteOptsDel=Tn.obsoleteOpts=Tn.obsolete=void 0;function XN(yr,br,mr,Er,wr){let _r=(...xr)=>(console.warn("gridstack.js: Function `"+mr+"` is deprecated in "+wr+" and has been replaced with `"+Er+"`. It will be **removed** in a future release"),br.apply(yr,xr));return _r.prototype=br.prototype,_r}Tn.obsolete=XN;function JN(yr,br,mr,Er){yr[br]!==void 0&&(yr[mr]=yr[br],console.warn("gridstack.js: Option `"+br+"` is deprecated in "+Er+" and has been replaced with `"+mr+"`. It will be **removed** in a future release"))}Tn.obsoleteOpts=JN;function QN(yr,br,mr,Er){yr[br]!==void 0&&console.warn("gridstack.js: Option `"+br+"` is deprecated in "+mr+Er)}Tn.obsoleteOptsDel=QN;function ZN(yr,br,mr,Er){let wr=yr.getAttribute(br);wr!==null&&(yr.setAttribute(mr,wr),console.warn("gridstack.js: attribute `"+br+"`="+wr+" is deprecated on this object in "+Er+" and has been replaced with `"+mr+"`. It will be **removed** in a future release"))}Tn.obsoleteAttr=ZN;var Go=class{static getElements(br){if(typeof br=="string"){let mr=document.querySelectorAll(br);return!mr.length&&br[0]!=="."&&br[0]!=="#"&&(mr=document.querySelectorAll("."+br),mr.length||(mr=document.querySelectorAll("#"+br))),Array.from(mr)}return[br]}static getElement(br){if(typeof br=="string"){if(!br.length)return null;if(br[0]==="#")return document.getElementById(br.substring(1));if(br[0]==="."||br[0]==="[")return document.querySelector(br);if(!isNaN(+br[0]))return document.getElementById(br);let mr=document.querySelector(br);return mr||(mr=document.getElementById(br)),mr||(mr=document.querySelector("."+br)),mr}return br}static isIntercepted(br,mr){return!(br.y>=mr.y+mr.h||br.y+br.h<=mr.y||br.x+br.w<=mr.x||br.x>=mr.x+mr.w)}static isTouching(br,mr){return Go.isIntercepted(br,{x:mr.x-.5,y:mr.y-.5,w:mr.w+1,h:mr.h+1})}static areaIntercept(br,mr){let Er=br.x>mr.x?br.x:mr.x,wr=br.x+br.wmr.y?br.y:mr.y,xr=br.y+br.hMath.max(_r.x+_r.w,wr),0)||12,mr===-1?br.sort((wr,_r)=>_r.x+_r.y*Er-(wr.x+wr.y*Er)):br.sort((wr,_r)=>wr.x+wr.y*Er-(_r.x+_r.y*Er))}static createStylesheet(br,mr){let Er=document.createElement("style");return Er.setAttribute("type","text/css"),Er.setAttribute("gs-style-id",br),Er.styleSheet?Er.styleSheet.cssText="":Er.appendChild(document.createTextNode("")),mr?mr.insertBefore(Er,mr.firstChild):(mr=document.getElementsByTagName("head")[0],mr.appendChild(Er)),Er.sheet}static removeStylesheet(br){let mr=document.querySelector("STYLE[gs-style-id="+br+"]");mr&&mr.parentNode&&mr.remove()}static addCSSRule(br,mr,Er){typeof br.addRule=="function"?br.addRule(mr,Er):typeof br.insertRule=="function"&&br.insertRule(`${mr}{${Er}}`)}static toBool(br){return typeof br=="boolean"?br:typeof br=="string"?(br=br.toLowerCase(),!(br===""||br==="no"||br==="false"||br==="0")):Boolean(br)}static toNumber(br){return br===null||br.length===0?void 0:Number(br)}static parseHeight(br){let mr,Er="px";if(typeof br=="string"){let wr=br.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%)?$/);if(!wr)throw new Error("Invalid height");Er=wr[2]||"px",mr=parseFloat(wr[1])}else mr=br;return{h:mr,unit:Er}}static defaults(br,...mr){return mr.forEach(Er=>{for(let wr in Er){if(!Er.hasOwnProperty(wr))return;br[wr]===null||br[wr]===void 0?br[wr]=Er[wr]:typeof Er[wr]=="object"&&typeof br[wr]=="object"&&this.defaults(br[wr],Er[wr])}}),br}static same(br,mr){if(typeof br!="object")return br==mr;if(typeof br!=typeof mr||Object.keys(br).length!==Object.keys(mr).length)return!1;for(let Er in br)if(br[Er]!==mr[Er])return!1;return!0}static copyPos(br,mr,Er=!1){return br.x=mr.x,br.y=mr.y,br.w=mr.w,br.h=mr.h,Er&&(mr.minW&&(br.minW=mr.minW),mr.minH&&(br.minH=mr.minH),mr.maxW&&(br.maxW=mr.maxW),mr.maxH&&(br.maxH=mr.maxH)),br}static samePos(br,mr){return br&&mr&&br.x===mr.x&&br.y===mr.y&&br.w===mr.w&&br.h===mr.h}static removeInternalAndSame(br,mr){if(!(typeof br!="object"||typeof mr!="object"))for(let Er in br){let wr=br[Er];if(Er[0]==="_"||wr===mr[Er])delete br[Er];else if(wr&&typeof wr=="object"&&mr[Er]!==void 0){for(let _r in wr)(wr[_r]===mr[Er][_r]||_r[0]==="_")&&delete wr[_r];Object.keys(wr).length||delete br[Er]}}}static removeInternalForSave(br,mr=!0){for(let Er in br)(Er[0]==="_"||br[Er]===null||br[Er]===void 0)&&delete br[Er];delete br.grid,mr&&delete br.el,br.autoPosition||delete br.autoPosition,br.noResize||delete br.noResize,br.noMove||delete br.noMove,br.locked||delete br.locked,(br.w===1||br.w===br.minW)&&delete br.w,(br.h===1||br.h===br.minH)&&delete br.h}static closestUpByClass(br,mr){for(;br;){if(br.classList.contains(mr))return br;br=br.parentElement}return null}static throttle(br,mr){let Er=!1;return(...wr)=>{Er||(Er=!0,setTimeout(()=>{br(...wr),Er=!1},mr))}}static removePositioningStyles(br){let mr=br.style;mr.position&&mr.removeProperty("position"),mr.left&&mr.removeProperty("left"),mr.top&&mr.removeProperty("top"),mr.width&&mr.removeProperty("width"),mr.height&&mr.removeProperty("height")}static getScrollElement(br){if(!br)return document.scrollingElement||document.documentElement;let mr=getComputedStyle(br);return/(auto|scroll)/.test(mr.overflow+mr.overflowY)?br:this.getScrollElement(br.parentElement)}static updateScrollPosition(br,mr,Er){let wr=br.getBoundingClientRect(),_r=window.innerHeight||document.documentElement.clientHeight;if(wr.top<0||wr.bottom>_r){let xr=wr.bottom-_r,Sr=wr.top,Tr=this.getScrollElement(br);if(Tr!==null){let Or=Tr.scrollTop;wr.top<0&&Er<0?br.offsetHeight>_r?Tr.scrollTop+=Er:Tr.scrollTop+=Math.abs(Sr)>Math.abs(Er)?Er:Sr:Er>0&&(br.offsetHeight>_r?Tr.scrollTop+=Er:Tr.scrollTop+=xr>Er?Er:xr),mr.top+=Tr.scrollTop-Or}}}static updateScrollResize(br,mr,Er){let wr=this.getScrollElement(mr),_r=wr.clientHeight,xr=wr===this.getScrollElement()?0:wr.getBoundingClientRect().top,Sr=br.clientY-xr,Tr=Sr_r-Er;Tr?wr.scrollBy({behavior:"smooth",top:Sr-Er}):Or&&wr.scrollBy({behavior:"smooth",top:Er-(_r-Sr)})}static clone(br){return br==null||typeof br!="object"?br:br instanceof Array?[...br]:Object.assign({},br)}static cloneDeep(br){let mr=["parentGrid","el","grid","subGrid","engine"],Er=Go.clone(br);for(let wr in Er)Er.hasOwnProperty(wr)&&typeof Er[wr]=="object"&&wr.substring(0,2)!=="__"&&!mr.find(_r=>_r===wr)&&(Er[wr]=Go.cloneDeep(br[wr]));return Er}static cloneNode(br){let mr=br.cloneNode(!0);return mr.removeAttribute("id"),mr}static appendTo(br,mr){let Er;typeof mr=="string"?Er=document.querySelector(mr):Er=mr,Er&&Er.appendChild(br)}static addElStyles(br,mr){if(mr instanceof Object)for(let Er in mr)mr.hasOwnProperty(Er)&&(Array.isArray(mr[Er])?mr[Er].forEach(wr=>{br.style[Er]=wr}):br.style[Er]=mr[Er])}static initEvent(br,mr){let Er={type:mr.type},wr={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:mr.target?mr.target:br.target};return br.dataTransfer&&(Er.dataTransfer=br.dataTransfer),["altKey","ctrlKey","metaKey","shiftKey"].forEach(_r=>Er[_r]=br[_r]),["pageX","pageY","clientX","clientY","screenX","screenY"].forEach(_r=>Er[_r]=br[_r]),Object.assign(Object.assign({},Er),wr)}static simulateMouseEvent(br,mr,Er){let wr=document.createEvent("MouseEvents");wr.initMouseEvent(mr,!0,!0,window,1,br.screenX,br.screenY,br.clientX,br.clientY,br.ctrlKey,br.altKey,br.shiftKey,br.metaKey,0,br.target),(Er||br.target).dispatchEvent(wr)}};Tn.Utils=Go});var ih=jr(Bc=>{"use strict";Object.defineProperty(Bc,"__esModule",{value:!0});Bc.GridStackEngine=void 0;var yi=Os(),ls=class{constructor(br={}){this.addedNodes=[],this.removedNodes=[],this.column=br.column||12,this.maxRow=br.maxRow,this._float=br.float,this.nodes=br.nodes||[],this.onChange=br.onChange}batchUpdate(br=!0){return!!this.batchMode===br?this:(this.batchMode=br,br?(this._prevFloat=this._float,this._float=!0,this.saveInitial()):(this._float=this._prevFloat,delete this._prevFloat,this._packNodes()._notify()),this)}_useEntireRowArea(br,mr){return!this.float&&!this._hasLocked&&(!br._moving||br._skipDown||mr.y<=br.y)}_fixCollisions(br,mr=br,Er,wr={}){if(this.sortNodes(-1),Er=Er||this.collide(br,mr),!Er)return!1;if(br._moving&&!wr.nested&&!this.float&&this.swap(br,Er))return!0;let _r=mr;this._useEntireRowArea(br,mr)&&(_r={x:0,w:this.column,y:mr.y,h:mr.h},Er=this.collide(br,_r,wr.skip));let xr=!1,Sr={nested:!0,pack:!1};for(;Er=Er||this.collide(br,_r,wr.skip);){let Tr;if(Er.locked||br._moving&&!br._skipDown&&mr.y>br.y&&!this.float&&(!this.collide(Er,Object.assign(Object.assign({},Er),{y:br.y}),br)||!this.collide(Er,Object.assign(Object.assign({},Er),{y:mr.y-Er.h}),br))?(br._skipDown=br._skipDown||mr.y>br.y,Tr=this.moveNode(br,Object.assign(Object.assign(Object.assign({},mr),{y:Er.y+Er.h}),Sr)),Er.locked&&Tr?yi.Utils.copyPos(mr,br):!Er.locked&&Tr&&wr.pack&&(this._packNodes(),mr.y=Er.y+Er.h,yi.Utils.copyPos(br,mr)),xr=xr||Tr):Tr=this.moveNode(Er,Object.assign(Object.assign(Object.assign({},Er),{y:mr.y+mr.h,skip:br}),Sr)),!Tr)return xr;Er=void 0}return xr}collide(br,mr=br,Er){return this.nodes.find(wr=>wr!==br&&wr!==Er&&yi.Utils.isIntercepted(wr,mr))}collideAll(br,mr=br,Er){return this.nodes.filter(wr=>wr!==br&&wr!==Er&&yi.Utils.isIntercepted(wr,mr))}directionCollideCoverage(br,mr,Er){if(!mr.rect||!br._rect)return;let wr=br._rect,_r=Object.assign({},mr.rect);_r.y>wr.y?(_r.h+=_r.y-wr.y,_r.y=wr.y):_r.h+=wr.y-_r.y,_r.x>wr.x?(_r.w+=_r.x-wr.x,_r.x=wr.x):_r.w+=wr.x-_r.x;let xr;return Er.forEach(Sr=>{if(Sr.locked||!Sr._rect)return;let Tr=Sr._rect,Or=Number.MAX_VALUE,Dr=Number.MAX_VALUE,Cr=.5;wr.yTr.y+Tr.h&&(Or=(Tr.y+Tr.h-_r.y)/Tr.h),wr.xTr.x+Tr.w&&(Dr=(Tr.x+Tr.w-_r.x)/Tr.w);let Ar=Math.min(Dr,Or);Ar>Cr&&(Cr=Ar,xr=Sr)}),mr.collide=xr,xr}cacheRects(br,mr,Er,wr,_r,xr){return this.nodes.forEach(Sr=>Sr._rect={y:Sr.y*mr+Er,x:Sr.x*br+xr,w:Sr.w*br-xr-wr,h:Sr.h*mr-Er-_r}),this}swap(br,mr){if(!mr||mr.locked||!br||br.locked)return!1;function Er(){let _r=mr.x,xr=mr.y;return mr.x=br.x,mr.y=br.y,br.h!=mr.h?(br.x=_r,br.y=mr.y+mr.h):br.w!=mr.w?(br.x=mr.x+mr.w,br.y=xr):(br.x=_r,br.y=xr),br._dirty=mr._dirty=!0,!0}let wr;if(br.w===mr.w&&br.h===mr.h&&(br.x===mr.x||br.y===mr.y)&&(wr=yi.Utils.isTouching(br,mr)))return Er();if(wr!==!1){if(br.w===mr.w&&br.x===mr.x&&(wr||(wr=yi.Utils.isTouching(br,mr)))){if(mr.y{mr.locked||(mr.autoPosition=!0),this.addNode(mr,!1),mr._dirty=!0}),this.batchUpdate(!1)}set float(br){this._float!==br&&(this._float=br||!1,br||this._packNodes()._notify())}get float(){return this._float||!1}sortNodes(br){return this.nodes=yi.Utils.sort(this.nodes,br,this.column),this}_packNodes(){return this.batchMode?this:(this.sortNodes(),this.float?this.nodes.forEach(br=>{if(br._updating||br._orig===void 0||br.y===br._orig.y)return;let mr=br.y;for(;mr>br._orig.y;)--mr,this.collide(br,{x:br.x,y:mr,w:br.w,h:br.h})||(br._dirty=!0,br.y=mr)}):this.nodes.forEach((br,mr)=>{if(!br.locked)for(;br.y>0;){let Er=mr===0?0:br.y-1;if(!(mr===0||!this.collide(br,{x:br.x,y:Er,w:br.w,h:br.h})))break;br._dirty=br.y!==Er,br.y=Er}}),this)}prepareNode(br,mr){br=br||{},br._id=br._id||ls._idSeq++,(br.x===void 0||br.y===void 0||br.x===null||br.y===null)&&(br.autoPosition=!0);let Er={x:0,y:0,w:1,h:1};return yi.Utils.defaults(br,Er),br.autoPosition||delete br.autoPosition,br.noResize||delete br.noResize,br.noMove||delete br.noMove,typeof br.x=="string"&&(br.x=Number(br.x)),typeof br.y=="string"&&(br.y=Number(br.y)),typeof br.w=="string"&&(br.w=Number(br.w)),typeof br.h=="string"&&(br.h=Number(br.h)),isNaN(br.x)&&(br.x=Er.x,br.autoPosition=!0),isNaN(br.y)&&(br.y=Er.y,br.autoPosition=!0),isNaN(br.w)&&(br.w=Er.w),isNaN(br.h)&&(br.h=Er.h),this.nodeBoundFix(br,mr)}nodeBoundFix(br,mr){let Er=br._orig||yi.Utils.copyPos({},br);if(br.maxW&&(br.w=Math.min(br.w,br.maxW)),br.maxH&&(br.h=Math.min(br.h,br.maxH)),br.minW&&br.minW<=this.column&&(br.w=Math.max(br.w,br.minW)),br.minH&&(br.h=Math.max(br.h,br.minH)),(this.column===1||br.x+br.w>this.column)&&this.column<12&&!this._inColumnResize&&!br.autoPosition&&br._id&&this.findCacheLayout(br,12)===-1){let _r=Object.assign({},br);_r.x=Math.min(11,_r.x),_r.w=Math.min(12,_r.w),this.cacheOneLayout(_r,12)}return br.w>this.column?br.w=this.column:br.w<1&&(br.w=1),this.maxRow&&br.h>this.maxRow?br.h=this.maxRow:br.h<1&&(br.h=1),br.x<0&&(br.x=0),br.y<0&&(br.y=0),br.x+br.w>this.column&&(mr?br.w=this.column-br.x:br.x=this.column-br.w),this.maxRow&&br.y+br.h>this.maxRow&&(mr?br.h=this.maxRow-br.y:br.y=this.maxRow-br.h),yi.Utils.samePos(br,Er)||(br._dirty=!0),br}getDirtyNodes(br){return br?this.nodes.filter(mr=>mr._dirty&&!yi.Utils.samePos(mr,mr._orig)):this.nodes.filter(mr=>mr._dirty)}_notify(br){if(this.batchMode||!this.onChange)return this;let mr=(br||[]).concat(this.getDirtyNodes());return this.onChange(mr),this}cleanNodes(){return this.batchMode?this:(this.nodes.forEach(br=>{delete br._dirty,delete br._lastTried}),this)}saveInitial(){return this.nodes.forEach(br=>{br._orig=yi.Utils.copyPos({},br),delete br._dirty}),this._hasLocked=this.nodes.some(br=>br.locked),this}restoreInitial(){return this.nodes.forEach(br=>{yi.Utils.samePos(br,br._orig)||(yi.Utils.copyPos(br,br._orig),br._dirty=!0)}),this._notify(),this}findEmptyPosition(br){this.sortNodes();let mr=!1;for(let Er=0;!mr;++Er){let wr=Er%this.column,_r=Math.floor(Er/this.column);if(wr+br.w>this.column)continue;let xr={x:wr,y:_r,w:br.w,h:br.h};this.nodes.find(Sr=>yi.Utils.isIntercepted(xr,Sr))||(br.x=wr,br.y=_r,mr=!0)}return mr}addNode(br,mr=!1){let Er=this.nodes.find(wr=>wr._id===br._id);return Er||(br=this._inColumnResize?this.nodeBoundFix(br):this.prepareNode(br),delete br._temporaryRemoved,delete br._removeDOM,br.autoPosition&&this.findEmptyPosition(br)&&delete br.autoPosition,this.nodes.push(br),mr&&this.addedNodes.push(br),this._fixCollisions(br),this.batchMode||this._packNodes()._notify(),br)}removeNode(br,mr=!0,Er=!1){return this.nodes.find(wr=>wr===br)?(Er&&this.removedNodes.push(br),mr&&(br._removeDOM=!0),this.nodes=this.nodes.filter(wr=>wr!==br),this._packNodes()._notify([br])):this}removeAll(br=!0){return delete this._layouts,this.nodes.length===0?this:(br&&this.nodes.forEach(mr=>mr._removeDOM=!0),this.removedNodes=this.nodes,this.nodes=[],this._notify(this.removedNodes))}moveNodeCheck(br,mr){if(!this.changedPosConstrain(br,mr))return!1;if(mr.pack=!0,!this.maxRow)return this.moveNode(br,mr);let Er,wr=new ls({column:this.column,float:this.float,nodes:this.nodes.map(xr=>xr===br?(Er=Object.assign({},xr),Er):Object.assign({},xr))});if(!Er)return!1;let _r=wr.moveNode(Er,mr)&&wr.getRow()<=this.maxRow;if(!_r&&!mr.resizing&&mr.collide){let xr=mr.collide.el.gridstackNode;if(this.swap(br,xr))return this._notify(),!0}return _r?(wr.nodes.filter(xr=>xr._dirty).forEach(xr=>{let Sr=this.nodes.find(Tr=>Tr._id===xr._id);!Sr||(yi.Utils.copyPos(Sr,xr),Sr._dirty=!0)}),this._notify(),!0):!1}willItFit(br){if(delete br._willFitPos,!this.maxRow)return!0;let mr=new ls({column:this.column,float:this.float,nodes:this.nodes.map(wr=>Object.assign({},wr))}),Er=Object.assign({},br);return this.cleanupNode(Er),delete Er.el,delete Er._id,delete Er.content,delete Er.grid,mr.addNode(Er),mr.getRow()<=this.maxRow?(br._willFitPos=yi.Utils.copyPos({},Er),!0):!1}changedPosConstrain(br,mr){return mr.w=mr.w||br.w,mr.h=mr.h||br.h,br.x!==mr.x||br.y!==mr.y?!0:(br.maxW&&(mr.w=Math.min(mr.w,br.maxW)),br.maxH&&(mr.h=Math.min(mr.h,br.maxH)),br.minW&&(mr.w=Math.max(mr.w,br.minW)),br.minH&&(mr.h=Math.max(mr.h,br.minH)),br.w!==mr.w||br.h!==mr.h)}moveNode(br,mr){var Er,wr;if(!br||!mr)return!1;let _r;mr.pack===void 0&&(_r=mr.pack=!0),typeof mr.x!="number"&&(mr.x=br.x),typeof mr.y!="number"&&(mr.y=br.y),typeof mr.w!="number"&&(mr.w=br.w),typeof mr.h!="number"&&(mr.h=br.h);let xr=br.w!==mr.w||br.h!==mr.h,Sr=yi.Utils.copyPos({},br,!0);if(yi.Utils.copyPos(Sr,mr),Sr=this.nodeBoundFix(Sr,xr),yi.Utils.copyPos(mr,Sr),yi.Utils.samePos(br,mr))return!1;let Tr=yi.Utils.copyPos({},br),Or=this.collideAll(br,Sr,mr.skip),Dr=!0;if(Or.length){let Cr=br._moving&&!mr.nested,Ar=Cr?this.directionCollideCoverage(br,mr,Or):Or[0];if(Cr&&Ar&&((wr=(Er=br.grid)===null||Er===void 0?void 0:Er.opts)===null||wr===void 0?void 0:wr.subGridDynamic)&&!br.grid._isTemp){let Lr=yi.Utils.areaIntercept(mr.rect,Ar._rect),Rr=yi.Utils.area(mr.rect),Nr=yi.Utils.area(Ar._rect);Lr/(Rr.8&&(Ar.grid.makeSubGrid(Ar.el,void 0,br),Ar=void 0)}Ar?Dr=!this._fixCollisions(br,Sr,Ar,mr):(Dr=!1,_r&&delete mr.pack)}return Dr&&(br._dirty=!0,yi.Utils.copyPos(br,Sr)),mr.pack&&this._packNodes()._notify(),!yi.Utils.samePos(br,Tr)}getRow(){return this.nodes.reduce((br,mr)=>Math.max(br,mr.y+mr.h),0)}beginUpdate(br){return br._updating||(br._updating=!0,delete br._skipDown,this.batchMode||this.saveInitial()),this}endUpdate(){let br=this.nodes.find(mr=>mr._updating);return br&&(delete br._updating,delete br._skipDown),this}save(br=!0){var mr;let Er=(mr=this._layouts)===null||mr===void 0?void 0:mr.length,wr=Er&&this.column!==Er-1?this._layouts[Er-1]:null,_r=[];return this.sortNodes(),this.nodes.forEach(xr=>{let Sr=wr==null?void 0:wr.find(Or=>Or._id===xr._id),Tr=Object.assign({},xr);Sr&&(Tr.x=Sr.x,Tr.y=Sr.y,Tr.w=Sr.w),yi.Utils.removeInternalForSave(Tr,!br),_r.push(Tr)}),_r}layoutsNodesChange(br){return!this._layouts||this._inColumnResize?this:(this._layouts.forEach((mr,Er)=>{if(!mr||Er===this.column)return this;if(Er{if(!_r._orig)return;let xr=mr.find(Sr=>Sr._id===_r._id);!xr||(_r.y!==_r._orig.y&&(xr.y+=_r.y-_r._orig.y),_r.x!==_r._orig.x&&(xr.x=Math.round(_r.x*wr)),_r.w!==_r._orig.w&&(xr.w=Math.round(_r.w*wr)))})}}),this)}updateNodeWidths(br,mr,Er,wr="moveScale"){var _r;if(!this.nodes.length||!mr||br===mr)return this;this.cacheLayout(this.nodes,br),this.batchUpdate();let xr=[],Sr=!1;if(mr===1&&(Er==null?void 0:Er.length)){Sr=!0;let Or=0;Er.forEach(Dr=>{Dr.x=0,Dr.w=1,Dr.y=Math.max(Dr.y,Or),Or=Dr.y+Dr.h}),xr=Er,Er=[]}else Er=yi.Utils.sort(this.nodes,-1,br);let Tr=[];if(mr>br){Tr=this._layouts[mr]||[];let Or=this._layouts.length-1;!Tr.length&&br!==Or&&((_r=this._layouts[Or])===null||_r===void 0?void 0:_r.length)&&(br=Or,this._layouts[Or].forEach(Dr=>{let Cr=Er.find(Ar=>Ar._id===Dr._id);Cr&&(Cr.x=Dr.x,Cr.y=Dr.y,Cr.w=Dr.w)}))}if(Tr.forEach(Or=>{let Dr=Er.findIndex(Cr=>Cr._id===Or._id);Dr!==-1&&(Er[Dr].x=Or.x,Er[Dr].y=Or.y,Er[Dr].w=Or.w,xr.push(Er[Dr]),Er.splice(Dr,1))}),Er.length){if(typeof wr=="function")wr(mr,br,xr,Er);else if(!Sr){let Or=mr/br,Dr=wr==="move"||wr==="moveScale",Cr=wr==="scale"||wr==="moveScale";Er.forEach(Ar=>{Ar.x=mr===1?0:Dr?Math.round(Ar.x*Or):Math.min(Ar.x,mr-1),Ar.w=mr===1||br===1?1:Cr?Math.round(Ar.w*Or)||1:Math.min(Ar.w,mr),xr.push(Ar)}),Er=[]}}return Sr||(xr=yi.Utils.sort(xr,-1,mr)),this._inColumnResize=!0,this.nodes=[],xr.forEach(Or=>{this.addNode(Or,!1),delete Or._orig}),this.batchUpdate(!1),delete this._inColumnResize,this}cacheLayout(br,mr,Er=!1){let wr=[];return br.forEach((_r,xr)=>{_r._id=_r._id||ls._idSeq++,wr[xr]={x:_r.x,y:_r.y,w:_r.w,_id:_r._id}}),this._layouts=Er?[]:this._layouts||[],this._layouts[mr]=wr,this}cacheOneLayout(br,mr){br._id=br._id||ls._idSeq++;let Er={x:br.x,y:br.y,w:br.w,_id:br._id};this._layouts=this._layouts||[],this._layouts[mr]=this._layouts[mr]||[];let wr=this.findCacheLayout(br,mr);return wr===-1?this._layouts[mr].push(Er):this._layouts[mr][wr]=Er,this}findCacheLayout(br,mr){var Er,wr,_r;return(_r=(wr=(Er=this._layouts)===null||Er===void 0?void 0:Er[mr])===null||wr===void 0?void 0:wr.findIndex(xr=>xr._id===br._id))!==null&&_r!==void 0?_r:-1}cleanupNode(br){for(let mr in br)mr[0]==="_"&&mr!=="_id"&&delete br[mr];return this}};Bc.GridStackEngine=ls;ls._idSeq=1});var nh=jr(Yo=>{"use strict";Object.defineProperty(Yo,"__esModule",{value:!0});Yo.dragInDefaultOptions=Yo.gridDefaults=void 0;Yo.gridDefaults={alwaysShowResizeHandle:"mobile",animate:!0,auto:!0,cellHeight:"auto",cellHeightThrottle:100,cellHeightUnit:"px",column:12,draggable:{handle:".grid-stack-item-content",appendTo:"body",scroll:!0},handle:".grid-stack-item-content",itemClass:"grid-stack-item",margin:10,marginUnit:"px",maxRow:0,minRow:0,oneColumnSize:768,placeholderClass:"grid-stack-placeholder",placeholderText:"",removableOptions:{accept:".grid-stack-item"},resizable:{handles:"se"},rtl:"auto"};Yo.dragInDefaultOptions={handle:".grid-stack-item-content",appendTo:"body"}});var ao=jr(Fc=>{"use strict";Object.defineProperty(Fc,"__esModule",{value:!0});Fc.DDManager=void 0;var r_=class{};Fc.DDManager=r_});var Za=jr(Zi=>{"use strict";Object.defineProperty(Zi,"__esModule",{value:!0});Zi.pointerleave=Zi.pointerenter=Zi.pointerdown=Zi.touchend=Zi.touchmove=Zi.touchstart=Zi.isTouch=void 0;var sh=ao();Zi.isTouch=typeof window!="undefined"&&typeof document!="undefined"&&("ontouchstart"in document||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0);var Nn=class{};function zc(yr,br){if(yr.touches.length>1)return;yr.cancelable&&yr.preventDefault();let mr=yr.changedTouches[0],Er=document.createEvent("MouseEvents");Er.initMouseEvent(br,!0,!0,window,1,mr.screenX,mr.screenY,mr.clientX,mr.clientY,!1,!1,!1,!1,0,null),yr.target.dispatchEvent(Er)}function i_(yr,br){yr.cancelable&&yr.preventDefault();let mr=document.createEvent("MouseEvents");mr.initMouseEvent(br,!0,!0,window,1,yr.screenX,yr.screenY,yr.clientX,yr.clientY,!1,!1,!1,!1,0,null),yr.target.dispatchEvent(mr)}function eq(yr){Nn.touchHandled||(Nn.touchHandled=!0,zc(yr,"mousedown"))}Zi.touchstart=eq;function tq(yr){!Nn.touchHandled||zc(yr,"mousemove")}Zi.touchmove=tq;function rq(yr){if(!Nn.touchHandled)return;Nn.pointerLeaveTimeout&&(window.clearTimeout(Nn.pointerLeaveTimeout),delete Nn.pointerLeaveTimeout);let br=!!sh.DDManager.dragElement;zc(yr,"mouseup"),br||zc(yr,"click"),Nn.touchHandled=!1}Zi.touchend=rq;function iq(yr){yr.target.releasePointerCapture(yr.pointerId)}Zi.pointerdown=iq;function nq(yr){!sh.DDManager.dragElement||i_(yr,"mouseenter")}Zi.pointerenter=nq;function sq(yr){!sh.DDManager.dragElement||(Nn.pointerLeaveTimeout=window.setTimeout(()=>{delete Nn.pointerLeaveTimeout,i_(yr,"mouseleave")},10))}Zi.pointerleave=sq});var n_=jr($c=>{"use strict";Object.defineProperty($c,"__esModule",{value:!0});$c.DDResizableHandle=void 0;var On=Za(),el=class{constructor(br,mr,Er){this.moving=!1,this.host=br,this.dir=mr,this.option=Er,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._init()}_init(){let br=document.createElement("div");return br.classList.add("ui-resizable-handle"),br.classList.add(`${el.prefix}${this.dir}`),br.style.zIndex="100",br.style.userSelect="none",this.el=br,this.host.appendChild(this.el),this.el.addEventListener("mousedown",this._mouseDown),On.isTouch&&(this.el.addEventListener("touchstart",On.touchstart),this.el.addEventListener("pointerdown",On.pointerdown)),this}destroy(){return this.moving&&this._mouseUp(this.mouseDownEvent),this.el.removeEventListener("mousedown",this._mouseDown),On.isTouch&&(this.el.removeEventListener("touchstart",On.touchstart),this.el.removeEventListener("pointerdown",On.pointerdown)),this.host.removeChild(this.el),delete this.el,delete this.host,this}_mouseDown(br){this.mouseDownEvent=br,document.addEventListener("mousemove",this._mouseMove,!0),document.addEventListener("mouseup",this._mouseUp,!0),On.isTouch&&(this.el.addEventListener("touchmove",On.touchmove),this.el.addEventListener("touchend",On.touchend)),br.stopPropagation(),br.preventDefault()}_mouseMove(br){let mr=this.mouseDownEvent;this.moving?this._triggerEvent("move",br):Math.abs(br.x-mr.x)+Math.abs(br.y-mr.y)>2&&(this.moving=!0,this._triggerEvent("start",this.mouseDownEvent),this._triggerEvent("move",br)),br.stopPropagation(),br.preventDefault()}_mouseUp(br){this.moving&&this._triggerEvent("stop",br),document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),On.isTouch&&(this.el.removeEventListener("touchmove",On.touchmove),this.el.removeEventListener("touchend",On.touchend)),delete this.moving,delete this.mouseDownEvent,br.stopPropagation(),br.preventDefault()}_triggerEvent(br,mr){return this.option[br]&&this.option[br](mr),this}};$c.DDResizableHandle=el;el.prefix="ui-resizable-"});var Vc=jr(Uc=>{"use strict";Object.defineProperty(Uc,"__esModule",{value:!0});Uc.DDBaseImplement=void 0;var s_=class{constructor(){this._eventRegister={}}get disabled(){return this._disabled}on(br,mr){this._eventRegister[br]=mr}off(br){delete this._eventRegister[br]}enable(){this._disabled=!1}disable(){this._disabled=!0}destroy(){delete this._eventRegister}triggerEvent(br,mr){if(!this.disabled&&this._eventRegister&&this._eventRegister[br])return this._eventRegister[br](mr)}};Uc.DDBaseImplement=s_});var o_=jr(Gc=>{"use strict";Object.defineProperty(Gc,"__esModule",{value:!0});Gc.DDResizable=void 0;var oq=n_(),aq=Vc(),Wc=Os(),lo=ao(),Ko=class extends aq.DDBaseImplement{constructor(br,mr={}){super();this._ui=()=>{let wr=this.el.parentElement.getBoundingClientRect(),_r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},xr=this.temporalRect||_r;return{position:{left:xr.left-wr.left,top:xr.top-wr.top},size:{width:xr.width,height:xr.height}}},this.el=br,this.option=mr,this._mouseOver=this._mouseOver.bind(this),this._mouseOut=this._mouseOut.bind(this),this.enable(),this._setupAutoHide(this.option.autoHide),this._setupHandlers()}on(br,mr){super.on(br,mr)}off(br){super.off(br)}enable(){super.enable(),this.el.classList.add("ui-resizable"),this.el.classList.remove("ui-resizable-disabled"),this._setupAutoHide(this.option.autoHide)}disable(){super.disable(),this.el.classList.add("ui-resizable-disabled"),this.el.classList.remove("ui-resizable"),this._setupAutoHide(!1)}destroy(){this._removeHandlers(),this._setupAutoHide(!1),this.el.classList.remove("ui-resizable"),delete this.el,super.destroy()}updateOption(br){let mr=br.handles&&br.handles!==this.option.handles,Er=br.autoHide&&br.autoHide!==this.option.autoHide;return Object.keys(br).forEach(wr=>this.option[wr]=br[wr]),mr&&(this._removeHandlers(),this._setupHandlers()),Er&&this._setupAutoHide(this.option.autoHide),this}_setupAutoHide(br){return br?(this.el.classList.add("ui-resizable-autohide"),this.el.addEventListener("mouseover",this._mouseOver),this.el.addEventListener("mouseout",this._mouseOut)):(this.el.classList.remove("ui-resizable-autohide"),this.el.removeEventListener("mouseover",this._mouseOver),this.el.removeEventListener("mouseout",this._mouseOut),lo.DDManager.overResizeElement===this&&delete lo.DDManager.overResizeElement),this}_mouseOver(br){lo.DDManager.overResizeElement||lo.DDManager.dragElement||(lo.DDManager.overResizeElement=this,this.el.classList.remove("ui-resizable-autohide"))}_mouseOut(br){lo.DDManager.overResizeElement===this&&(delete lo.DDManager.overResizeElement,this.el.classList.add("ui-resizable-autohide"))}_setupHandlers(){let br=this.option.handles||"e,s,se";return br==="all"&&(br="n,e,s,w,se,sw,ne,nw"),this.handlers=br.split(",").map(mr=>mr.trim()).map(mr=>new oq.DDResizableHandle(this.el,mr,{start:Er=>{this._resizeStart(Er)},stop:Er=>{this._resizeStop(Er)},move:Er=>{this._resizing(Er,mr)}})),this}_resizeStart(br){this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=Wc.Utils.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=br,this._setupHelper(),this._applyChange();let mr=Wc.Utils.initEvent(br,{type:"resizestart",target:this.el});return this.option.start&&this.option.start(mr,this._ui()),this.el.classList.add("ui-resizable-resizing"),this.triggerEvent("resizestart",mr),this}_resizing(br,mr){this.scrolled=this.scrollEl.scrollTop-this.scrollY,this.temporalRect=this._getChange(br,mr),this._applyChange();let Er=Wc.Utils.initEvent(br,{type:"resize",target:this.el});return this.option.resize&&this.option.resize(Er,this._ui()),this.triggerEvent("resize",Er),this}_resizeStop(br){let mr=Wc.Utils.initEvent(br,{type:"resizestop",target:this.el});return this.option.stop&&this.option.stop(mr),this.el.classList.remove("ui-resizable-resizing"),this.triggerEvent("resizestop",mr),this._cleanHelper(),delete this.startEvent,delete this.originalRect,delete this.temporalRect,delete this.scrollY,delete this.scrolled,this}_setupHelper(){return this.elOriginStyleVal=Ko._originStyleProp.map(br=>this.el.style[br]),this.parentOriginStylePosition=this.el.parentElement.style.position,window.getComputedStyle(this.el.parentElement).position.match(/static/)&&(this.el.parentElement.style.position="relative"),this.el.style.position="absolute",this.el.style.opacity="0.8",this}_cleanHelper(){return Ko._originStyleProp.forEach((br,mr)=>{this.el.style[br]=this.elOriginStyleVal[mr]||null}),this.el.parentElement.style.position=this.parentOriginStylePosition||null,this}_getChange(br,mr){let Er=this.startEvent,wr={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,top:this.originalRect.top-this.scrolled},_r=br.clientX-Er.clientX,xr=br.clientY-Er.clientY;mr.indexOf("e")>-1?wr.width+=_r:mr.indexOf("w")>-1&&(wr.width-=_r,wr.left+=_r),mr.indexOf("s")>-1?wr.height+=xr:mr.indexOf("n")>-1&&(wr.height-=xr,wr.top+=xr);let Sr=this._constrainSize(wr.width,wr.height);return Math.round(wr.width)!==Math.round(Sr.width)&&(mr.indexOf("w")>-1&&(wr.left+=wr.width-Sr.width),wr.width=Sr.width),Math.round(wr.height)!==Math.round(Sr.height)&&(mr.indexOf("n")>-1&&(wr.top+=wr.height-Sr.height),wr.height=Sr.height),wr}_constrainSize(br,mr){let Er=this.option.maxWidth||Number.MAX_SAFE_INTEGER,wr=this.option.minWidth||br,_r=this.option.maxHeight||Number.MAX_SAFE_INTEGER,xr=this.option.minHeight||mr,Sr=Math.min(Er,Math.max(wr,br)),Tr=Math.min(_r,Math.max(xr,mr));return{width:Sr,height:Tr}}_applyChange(){let br={left:0,top:0,width:0,height:0};if(this.el.style.position==="absolute"){let mr=this.el.parentElement,{left:Er,top:wr}=mr.getBoundingClientRect();br={left:Er,top:wr,width:0,height:0}}return this.temporalRect?(Object.keys(this.temporalRect).forEach(mr=>{let Er=this.temporalRect[mr];this.el.style[mr]=Er-br[mr]+"px"}),this):this}_removeHandlers(){return this.handlers.forEach(br=>br.destroy()),delete this.handlers,this}};Gc.DDResizable=Ko;Ko._originStyleProp=["width","height","position","left","top","opacity","zIndex"]});var a_=jr(Yc=>{"use strict";Object.defineProperty(Yc,"__esModule",{value:!0});Yc.DDDraggable=void 0;var Vi=ao(),Xo=Os(),lq=Vc(),Dn=Za(),Jo=class extends lq.DDBaseImplement{constructor(br,mr={}){super();this.el=br,this.option=mr;let Er=mr.handle.substring(1);this.dragEl=br.classList.contains(Er)?br:br.querySelector(mr.handle)||br,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this.enable()}on(br,mr){super.on(br,mr)}off(br){super.off(br)}enable(){this.disabled!==!1&&(super.enable(),this.dragEl.addEventListener("mousedown",this._mouseDown),Dn.isTouch&&(this.dragEl.addEventListener("touchstart",Dn.touchstart),this.dragEl.addEventListener("pointerdown",Dn.pointerdown)),this.el.classList.remove("ui-draggable-disabled"),this.el.classList.add("ui-draggable"))}disable(br=!1){this.disabled!==!0&&(super.disable(),this.dragEl.removeEventListener("mousedown",this._mouseDown),Dn.isTouch&&(this.dragEl.removeEventListener("touchstart",Dn.touchstart),this.dragEl.removeEventListener("pointerdown",Dn.pointerdown)),this.el.classList.remove("ui-draggable"),br||this.el.classList.add("ui-draggable-disabled"))}destroy(){this.dragTimeout&&window.clearTimeout(this.dragTimeout),delete this.dragTimeout,this.dragging&&this._mouseUp(this.mouseDownEvent),this.disable(!0),delete this.el,delete this.helper,delete this.option,super.destroy()}updateOption(br){return Object.keys(br).forEach(mr=>this.option[mr]=br[mr]),this}_mouseDown(br){if(Vi.DDManager.mouseHandled)return;if(br.button!==0)return!0;let mr=["input","textarea","button","select","option"],Er=br.target.nodeName.toLowerCase();return mr.find(wr=>wr===Er)||br.target.closest('[contenteditable="true"]')||(this.mouseDownEvent=br,delete this.dragging,delete Vi.DDManager.dragElement,delete Vi.DDManager.dropElement,document.addEventListener("mousemove",this._mouseMove,!0),document.addEventListener("mouseup",this._mouseUp,!0),Dn.isTouch&&(this.dragEl.addEventListener("touchmove",Dn.touchmove),this.dragEl.addEventListener("touchend",Dn.touchend)),br.preventDefault(),document.activeElement&&document.activeElement.blur(),Vi.DDManager.mouseHandled=!0),!0}_callDrag(br){if(!this.dragging)return;let mr=Xo.Utils.initEvent(br,{target:this.el,type:"drag"});this.option.drag&&this.option.drag(mr,this.ui()),this.triggerEvent("drag",mr)}_mouseMove(br){var mr;let Er=this.mouseDownEvent;if(this.dragging)if(this._dragFollow(br),Vi.DDManager.pauseDrag){let wr=Number.isInteger(Vi.DDManager.pauseDrag)?Vi.DDManager.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(br),wr)}else this._callDrag(br);else if(Math.abs(br.x-Er.x)+Math.abs(br.y-Er.y)>3){this.dragging=!0,Vi.DDManager.dragElement=this;let wr=(mr=this.el.gridstackNode)===null||mr===void 0?void 0:mr.grid;wr?Vi.DDManager.dropElement=wr.el.ddElement.ddDroppable:delete Vi.DDManager.dropElement,this.helper=this._createHelper(br),this._setupHelperContainmentStyle(),this.dragOffset=this._getDragOffset(br,this.el,this.helperContainment);let _r=Xo.Utils.initEvent(br,{target:this.el,type:"dragstart"});this._setupHelperStyle(br),this.option.start&&this.option.start(_r,this.ui()),this.triggerEvent("dragstart",_r)}return br.preventDefault(),!0}_mouseUp(br){var mr;if(document.removeEventListener("mousemove",this._mouseMove,!0),document.removeEventListener("mouseup",this._mouseUp,!0),Dn.isTouch&&(this.dragEl.removeEventListener("touchmove",Dn.touchmove,!0),this.dragEl.removeEventListener("touchend",Dn.touchend,!0)),this.dragging){delete this.dragging,((mr=Vi.DDManager.dropElement)===null||mr===void 0?void 0:mr.el)===this.el.parentElement&&delete Vi.DDManager.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper===this.el?this._removeHelperStyle():this.helper.remove();let Er=Xo.Utils.initEvent(br,{target:this.el,type:"dragstop"});this.option.stop&&this.option.stop(Er),this.triggerEvent("dragstop",Er),Vi.DDManager.dropElement&&Vi.DDManager.dropElement.drop(br)}delete this.helper,delete this.mouseDownEvent,delete Vi.DDManager.dragElement,delete Vi.DDManager.dropElement,delete Vi.DDManager.mouseHandled,br.preventDefault()}_createHelper(br){let mr=this.el;return typeof this.option.helper=="function"?mr=this.option.helper(br):this.option.helper==="clone"&&(mr=Xo.Utils.cloneNode(this.el)),document.body.contains(mr)||Xo.Utils.appendTo(mr,this.option.appendTo==="parent"?this.el.parentNode:this.option.appendTo),mr===this.el&&(this.dragElementOriginStyle=Jo.originStyleProp.map(Er=>this.el.style[Er])),mr}_setupHelperStyle(br){this.helper.classList.add("ui-draggable-dragging");let mr=this.helper.style;return mr.pointerEvents="none",mr["min-width"]=0,mr.width=this.dragOffset.width+"px",mr.height=this.dragOffset.height+"px",mr.willChange="left, top",mr.position="fixed",this._dragFollow(br),mr.transition="none",setTimeout(()=>{this.helper&&(mr.transition=null)},0),this}_removeHelperStyle(){var br;this.helper.classList.remove("ui-draggable-dragging");let mr=(br=this.helper)===null||br===void 0?void 0:br.gridstackNode;if(!(mr==null?void 0:mr._isAboutToRemove)&&this.dragElementOriginStyle){let Er=this.helper,wr=this.dragElementOriginStyle.transition||null;Er.style.transition=this.dragElementOriginStyle.transition="none",Jo.originStyleProp.forEach(_r=>Er.style[_r]=this.dragElementOriginStyle[_r]||null),setTimeout(()=>Er.style.transition=wr,50)}return delete this.dragElementOriginStyle,this}_dragFollow(br){let mr={left:0,top:0},Er=this.helper.style,wr=this.dragOffset;Er.left=br.clientX+wr.offsetLeft-mr.left+"px",Er.top=br.clientY+wr.offsetTop-mr.top+"px"}_setupHelperContainmentStyle(){return this.helperContainment=this.helper.parentElement,this.helper.style.position!=="fixed"&&(this.parentOriginStylePosition=this.helperContainment.style.position,window.getComputedStyle(this.helperContainment).position.match(/static/)&&(this.helperContainment.style.position="relative")),this}_getDragOffset(br,mr,Er){let wr=0,_r=0;if(Er){let Sr=document.createElement("div");Xo.Utils.addElStyles(Sr,{opacity:"0",position:"fixed",top:0+"px",left:0+"px",width:"1px",height:"1px",zIndex:"-999999"}),Er.appendChild(Sr);let Tr=Sr.getBoundingClientRect();Er.removeChild(Sr),wr=Tr.left,_r=Tr.top}let xr=mr.getBoundingClientRect();return{left:xr.left,top:xr.top,offsetLeft:-br.clientX+xr.left-wr,offsetTop:-br.clientY+xr.top-_r,width:xr.width,height:xr.height}}ui(){let mr=this.el.parentElement.getBoundingClientRect(),Er=this.helper.getBoundingClientRect();return{position:{top:Er.top-mr.top,left:Er.left-mr.left}}}};Yc.DDDraggable=Jo;Jo.originStyleProp=["transition","pointerEvents","position","left","top","minWidth","willChange"]});var c_=jr(Kc=>{"use strict";Object.defineProperty(Kc,"__esModule",{value:!0});Kc.DDDroppable=void 0;var mn=ao(),cq=Vc(),oh=Os(),Qo=Za(),l_=class extends cq.DDBaseImplement{constructor(br,mr={}){super();this.el=br,this.option=mr,this._mouseEnter=this._mouseEnter.bind(this),this._mouseLeave=this._mouseLeave.bind(this),this.enable(),this._setupAccept()}on(br,mr){super.on(br,mr)}off(br){super.off(br)}enable(){this.disabled!==!1&&(super.enable(),this.el.classList.add("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),this.el.addEventListener("mouseenter",this._mouseEnter),this.el.addEventListener("mouseleave",this._mouseLeave),Qo.isTouch&&(this.el.addEventListener("pointerenter",Qo.pointerenter),this.el.addEventListener("pointerleave",Qo.pointerleave)))}disable(br=!1){this.disabled!==!0&&(super.disable(),this.el.classList.remove("ui-droppable"),br||this.el.classList.add("ui-droppable-disabled"),this.el.removeEventListener("mouseenter",this._mouseEnter),this.el.removeEventListener("mouseleave",this._mouseLeave),Qo.isTouch&&(this.el.removeEventListener("pointerenter",Qo.pointerenter),this.el.removeEventListener("pointerleave",Qo.pointerleave)))}destroy(){this.disable(!0),this.el.classList.remove("ui-droppable"),this.el.classList.remove("ui-droppable-disabled"),super.destroy()}updateOption(br){return Object.keys(br).forEach(mr=>this.option[mr]=br[mr]),this._setupAccept(),this}_mouseEnter(br){if(!mn.DDManager.dragElement||!this._canDrop(mn.DDManager.dragElement.el))return;br.preventDefault(),br.stopPropagation(),mn.DDManager.dropElement&&mn.DDManager.dropElement!==this&&mn.DDManager.dropElement._mouseLeave(br),mn.DDManager.dropElement=this;let mr=oh.Utils.initEvent(br,{target:this.el,type:"dropover"});this.option.over&&this.option.over(mr,this._ui(mn.DDManager.dragElement)),this.triggerEvent("dropover",mr),this.el.classList.add("ui-droppable-over")}_mouseLeave(br){var mr;if(!mn.DDManager.dragElement||mn.DDManager.dropElement!==this)return;br.preventDefault(),br.stopPropagation();let Er=oh.Utils.initEvent(br,{target:this.el,type:"dropout"});if(this.option.out&&this.option.out(Er,this._ui(mn.DDManager.dragElement)),this.triggerEvent("dropout",Er),mn.DDManager.dropElement===this){delete mn.DDManager.dropElement;let wr,_r=this.el.parentElement;for(;!wr&&_r;)wr=(mr=_r.ddElement)===null||mr===void 0?void 0:mr.ddDroppable,_r=_r.parentElement;wr&&wr._mouseEnter(br)}}drop(br){br.preventDefault();let mr=oh.Utils.initEvent(br,{target:this.el,type:"drop"});this.option.drop&&this.option.drop(mr,this._ui(mn.DDManager.dragElement)),this.triggerEvent("drop",mr)}_canDrop(br){return br&&(!this.accept||this.accept(br))}_setupAccept(){return this.option.accept?(typeof this.option.accept=="string"?this.accept=br=>br.matches(this.option.accept):this.accept=this.option.accept,this):this}_ui(br){return Object.assign({draggable:br.el},br.ui())}};Kc.DDDroppable=l_});var u_=jr(Jc=>{"use strict";Object.defineProperty(Jc,"__esModule",{value:!0});Jc.DDElement=void 0;var uq=o_(),dq=a_(),fq=c_(),Xc=class{constructor(br){this.el=br}static init(br){return br.ddElement||(br.ddElement=new Xc(br)),br.ddElement}on(br,mr){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(br)>-1?this.ddDraggable.on(br,mr):this.ddDroppable&&["drop","dropover","dropout"].indexOf(br)>-1?this.ddDroppable.on(br,mr):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(br)>-1&&this.ddResizable.on(br,mr),this}off(br){return this.ddDraggable&&["drag","dragstart","dragstop"].indexOf(br)>-1?this.ddDraggable.off(br):this.ddDroppable&&["drop","dropover","dropout"].indexOf(br)>-1?this.ddDroppable.off(br):this.ddResizable&&["resizestart","resize","resizestop"].indexOf(br)>-1&&this.ddResizable.off(br),this}setupDraggable(br){return this.ddDraggable?this.ddDraggable.updateOption(br):this.ddDraggable=new dq.DDDraggable(this.el,br),this}cleanDraggable(){return this.ddDraggable&&(this.ddDraggable.destroy(),delete this.ddDraggable),this}setupResizable(br){return this.ddResizable?this.ddResizable.updateOption(br):this.ddResizable=new uq.DDResizable(this.el,br),this}cleanResizable(){return this.ddResizable&&(this.ddResizable.destroy(),delete this.ddResizable),this}setupDroppable(br){return this.ddDroppable?this.ddDroppable.updateOption(br):this.ddDroppable=new fq.DDDroppable(this.el,br),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}};Jc.DDElement=Xc});var ah=jr(Zc=>{"use strict";Object.defineProperty(Zc,"__esModule",{value:!0});Zc.DDGridStack=void 0;var hq=Os(),Qc=ao(),pq=u_(),d_=class{resizable(br,mr,Er,wr){return this._getDDElements(br).forEach(_r=>{if(mr==="disable"||mr==="enable")_r.ddResizable&&_r.ddResizable[mr]();else if(mr==="destroy")_r.ddResizable&&_r.cleanResizable();else if(mr==="option")_r.setupResizable({[Er]:wr});else{let xr=_r.el.gridstackNode.grid,Sr=_r.el.getAttribute("gs-resize-handles")?_r.el.getAttribute("gs-resize-handles"):xr.opts.resizable.handles,Tr=!xr.opts.alwaysShowResizeHandle;_r.setupResizable(Object.assign(Object.assign(Object.assign({},xr.opts.resizable),{handles:Sr,autoHide:Tr}),{start:mr.start,stop:mr.stop,resize:mr.resize}))}}),this}draggable(br,mr,Er,wr){return this._getDDElements(br).forEach(_r=>{if(mr==="disable"||mr==="enable")_r.ddDraggable&&_r.ddDraggable[mr]();else if(mr==="destroy")_r.ddDraggable&&_r.cleanDraggable();else if(mr==="option")_r.setupDraggable({[Er]:wr});else{let xr=_r.el.gridstackNode.grid;_r.setupDraggable(Object.assign(Object.assign({},xr.opts.draggable),{start:mr.start,stop:mr.stop,drag:mr.drag}))}}),this}dragIn(br,mr){return this._getDDElements(br).forEach(Er=>Er.setupDraggable(mr)),this}droppable(br,mr,Er,wr){return typeof mr.accept=="function"&&!mr._accept&&(mr._accept=mr.accept,mr.accept=_r=>mr._accept(_r)),this._getDDElements(br).forEach(_r=>{mr==="disable"||mr==="enable"?_r.ddDroppable&&_r.ddDroppable[mr]():mr==="destroy"?_r.ddDroppable&&_r.cleanDroppable():mr==="option"?_r.setupDroppable({[Er]:wr}):_r.setupDroppable(mr)}),this}isDroppable(br){return!!(br&&br.ddElement&&br.ddElement.ddDroppable&&!br.ddElement.ddDroppable.disabled)}isDraggable(br){return!!(br&&br.ddElement&&br.ddElement.ddDraggable&&!br.ddElement.ddDraggable.disabled)}isResizable(br){return!!(br&&br.ddElement&&br.ddElement.ddResizable&&!br.ddElement.ddResizable.disabled)}on(br,mr,Er){return this._getDDElements(br).forEach(wr=>wr.on(mr,_r=>{Er(_r,Qc.DDManager.dragElement?Qc.DDManager.dragElement.el:_r.target,Qc.DDManager.dragElement?Qc.DDManager.dragElement.helper:null)})),this}off(br,mr){return this._getDDElements(br).forEach(Er=>Er.off(mr)),this}_getDDElements(br,mr=!0){let Er=hq.Utils.getElements(br);if(!Er.length)return[];let wr=Er.map(_r=>_r.ddElement||(mr?pq.DDElement.init(_r):null));return mr||wr.filter(_r=>_r),wr}};Zc.DDGridStack=d_});var f_=jr(An=>{"use strict";var mq=An&&An.__createBinding||(Object.create?function(yr,br,mr,Er){Er===void 0&&(Er=mr),Object.defineProperty(yr,Er,{enumerable:!0,get:function(){return br[mr]}})}:function(yr,br,mr,Er){Er===void 0&&(Er=mr),yr[Er]=br[mr]}),eu=An&&An.__exportStar||function(yr,br){for(var mr in yr)mr!=="default"&&!br.hasOwnProperty(mr)&&mq(br,yr,mr)};Object.defineProperty(An,"__esModule",{value:!0});An.GridStack=void 0;var lh=ih(),Yr=Os(),gn=nh(),gq=ah(),vq=Za(),tu=ao(),Wi=new gq.DDGridStack;eu(nh(),An);eu(Os(),An);eu(ih(),An);eu(ah(),An);var Ci=class{constructor(br,mr={}){var Er,wr;this._gsEventHandler={},this._extraDragRow=0,this.el=br,mr=mr||{},br.classList.contains("grid-stack")||this.el.classList.add("grid-stack"),mr.row&&(mr.minRow=mr.maxRow=mr.row,delete mr.row);let _r=Yr.Utils.toNumber(br.getAttribute("gs-row"));mr.column==="auto"&&delete mr.column;let xr=mr;xr.minWidth!==void 0&&(mr.oneColumnSize=mr.oneColumnSize||xr.minWidth,delete xr.minWidth),mr.alwaysShowResizeHandle!==void 0&&(mr._alwaysShowResizeHandle=mr.alwaysShowResizeHandle);let Sr=Object.assign(Object.assign({},Yr.Utils.cloneDeep(gn.gridDefaults)),{column:Yr.Utils.toNumber(br.getAttribute("gs-column"))||gn.gridDefaults.column,minRow:_r||Yr.Utils.toNumber(br.getAttribute("gs-min-row"))||gn.gridDefaults.minRow,maxRow:_r||Yr.Utils.toNumber(br.getAttribute("gs-max-row"))||gn.gridDefaults.maxRow,staticGrid:Yr.Utils.toBool(br.getAttribute("gs-static"))||gn.gridDefaults.staticGrid,draggable:{handle:(mr.handleClass?"."+mr.handleClass:mr.handle?mr.handle:"")||gn.gridDefaults.draggable.handle},removableOptions:{accept:mr.itemClass?"."+mr.itemClass:gn.gridDefaults.removableOptions.accept}});br.getAttribute("gs-animate")&&(Sr.animate=Yr.Utils.toBool(br.getAttribute("gs-animate"))),this.opts=Yr.Utils.defaults(mr,Sr),mr=null,this._initMargin(),this.opts.column!==1&&!this.opts.disableOneColumnMode&&this._widthOrContainer()<=this.opts.oneColumnSize&&(this._prevColumn=this.getColumn(),this.opts.column=1),this.opts.rtl==="auto"&&(this.opts.rtl=br.style.direction==="rtl"),this.opts.rtl&&this.el.classList.add("grid-stack-rtl");let Tr=(Er=Yr.Utils.closestUpByClass(this.el,gn.gridDefaults.itemClass))===null||Er===void 0?void 0:Er.gridstackNode;Tr&&(Tr.subGrid=this,this.parentGridItem=Tr,this.el.classList.add("grid-stack-nested"),Tr.el.classList.add("grid-stack-sub-grid")),this._isAutoCellHeight=this.opts.cellHeight==="auto",this._isAutoCellHeight||this.opts.cellHeight==="initial"?this.cellHeight(void 0,!1):(typeof this.opts.cellHeight=="number"&&this.opts.cellHeightUnit&&this.opts.cellHeightUnit!==gn.gridDefaults.cellHeightUnit&&(this.opts.cellHeight=this.opts.cellHeight+this.opts.cellHeightUnit,delete this.opts.cellHeightUnit),this.cellHeight(this.opts.cellHeight,!1)),this.opts.alwaysShowResizeHandle==="mobile"&&(this.opts.alwaysShowResizeHandle=vq.isTouch),this._styleSheetClass="grid-stack-instance-"+lh.GridStackEngine._idSeq++,this.el.classList.add(this._styleSheetClass),this._setStaticClass();let Or=this.opts.engineClass||Ci.engineClass||lh.GridStackEngine;if(this.engine=new Or({column:this.getColumn(),float:this.opts.float,maxRow:this.opts.maxRow,onChange:Dr=>{let Cr=0;this.engine.nodes.forEach(Ar=>{Cr=Math.max(Cr,Ar.y+Ar.h)}),Dr.forEach(Ar=>{let Lr=Ar.el;!Lr||(Ar._removeDOM?(Lr&&Lr.remove(),delete Ar._removeDOM):this._writePosAttr(Lr,Ar))}),this._updateStyles(!1,Cr)}}),this.opts.auto){this.batchUpdate();let Dr=[],Cr=this.getColumn();Cr===1&&this._prevColumn&&(Cr=this._prevColumn),this.getGridItems().forEach(Ar=>{let Lr=parseInt(Ar.getAttribute("gs-x")),Rr=parseInt(Ar.getAttribute("gs-y"));Dr.push({el:Ar,i:(Number.isNaN(Lr)?1e3:Lr)+(Number.isNaN(Rr)?1e3:Rr)*Cr})}),Dr.sort((Ar,Lr)=>Lr.i-Ar.i).forEach(Ar=>this._prepareElement(Ar.el)),this.batchUpdate(!1)}if(this.opts.children){let Dr=this.opts.children;delete this.opts.children,Dr.length&&this.load(Dr)}this.setAnimation(this.opts.animate),this._updateStyles(),this.opts.column!=12&&this.el.classList.add("grid-stack-"+this.opts.column),this.opts.dragIn&&Ci.setupDragIn(this.opts.dragIn,this.opts.dragInOptions),delete this.opts.dragIn,delete this.opts.dragInOptions,this.opts.subGridDynamic&&!tu.DDManager.pauseDrag&&(tu.DDManager.pauseDrag=!0),((wr=this.opts.draggable)===null||wr===void 0?void 0:wr.pause)!==void 0&&(tu.DDManager.pauseDrag=this.opts.draggable.pause),this._setupRemoveDrop(),this._setupAcceptWidget(),this._updateWindowResizeEvent()}static init(br={},mr=".grid-stack"){let Er=Ci.getGridElement(mr);return Er?(Er.gridstack||(Er.gridstack=new Ci(Er,Yr.Utils.cloneDeep(br))),Er.gridstack):(console.error(typeof mr=="string"?'GridStack.initAll() no grid was found with selector "'+mr+`" - element missing or wrong selector ? Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`:"GridStack.init() no grid element was passed."),null)}static initAll(br={},mr=".grid-stack"){let Er=[];return Ci.getGridElements(mr).forEach(wr=>{wr.gridstack||(wr.gridstack=new Ci(wr,Yr.Utils.cloneDeep(br)),delete br.dragIn,delete br.dragInOptions),Er.push(wr.gridstack)}),Er.length===0&&console.error('GridStack.initAll() no grid was found with selector "'+mr+`" - element missing or wrong selector ? -Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`),Er}static addGrid(br,mr={}){if(!br)return null;let Er=br;if(!br.classList.contains("grid-stack")){let _r=document.implementation.createHTMLDocument("");_r.body.innerHTML=`
    `,Er=_r.body.children[0],br.appendChild(Er)}return Ci.init(mr,Er)}static registerEngine(br){Ci.engineClass=br}get placeholder(){if(!this._placeholder){let br=document.createElement("div");br.className="placeholder-content",this.opts.placeholderText&&(br.innerHTML=this.opts.placeholderText),this._placeholder=document.createElement("div"),this._placeholder.classList.add(this.opts.placeholderClass,gn.gridDefaults.itemClass,this.opts.itemClass),this.placeholder.appendChild(br)}return this._placeholder}addWidget(br,mr){function Er(Sr){return Sr.el!==void 0||Sr.x!==void 0||Sr.y!==void 0||Sr.w!==void 0||Sr.h!==void 0||Sr.content!==void 0}let wr,_r;if(typeof br=="string"){let Sr=document.implementation.createHTMLDocument("");Sr.body.innerHTML=br,wr=Sr.body.children[0]}else if(arguments.length===0||arguments.length===1&&Er(br))if(_r=mr=br,_r==null?void 0:_r.el)wr=_r.el;else if(this.opts.addRemoveCB)wr=this.opts.addRemoveCB(this,mr,!0);else{let Sr=(mr==null?void 0:mr.content)||"",Tr=document.implementation.createHTMLDocument("");Tr.body.innerHTML=`
    ${Sr}
    `,wr=Tr.body.children[0]}else wr=br;if(!wr)return;let xr=this._readAttr(wr);return mr=Yr.Utils.cloneDeep(mr)||{},Yr.Utils.defaults(mr,xr),_r=this.engine.prepareNode(mr),this._writeAttr(wr,mr),this._insertNotAppend?this.el.prepend(wr):this.el.appendChild(wr),this._prepareElement(wr,!0,mr),this._updateContainerHeight(),_r.subGrid&&this.makeSubGrid(_r.el,void 0,void 0,!1),this._prevColumn&&this.opts.column===1&&(this._ignoreLayoutsNodeChange=!0),this._triggerAddEvent(),this._triggerChangeEvent(),delete this._ignoreLayoutsNodeChange,wr}makeSubGrid(br,mr,Er,wr=!0){var _r,xr,Sr;let Tr=br.gridstackNode;if(Tr||(Tr=this.makeWidget(br).gridstackNode),(_r=Tr.subGrid)===null||_r===void 0?void 0:_r.el)return Tr.subGrid;let Dr,Or=this;for(;Or&&!Dr;)Dr=(xr=Or.opts)===null||xr===void 0?void 0:xr.subGrid,Or=(Sr=Or.parentGridItem)===null||Sr===void 0?void 0:Sr.grid;mr=Yr.Utils.cloneDeep(Object.assign(Object.assign(Object.assign({},Dr||{}),{children:void 0}),mr||Tr.subGrid)),Tr.subGrid=mr;let Cr;mr.column==="auto"&&(Cr=!0,mr.column=Math.max(Tr.w||1,(Er==null?void 0:Er.w)||1),mr.disableOneColumnMode=!0);let Ar=Tr.el.querySelector(".grid-stack-item-content"),Lr,Rr;if(wr){this._removeDD(Tr.el);let Ir=document.implementation.createHTMLDocument("");Ir.body.innerHTML='
    ',Lr=Ir.body.children[0],Lr.appendChild(Ar),Rr=Object.assign(Object.assign({},Tr),{x:0,y:0}),Yr.Utils.removeInternalForSave(Rr),delete Rr.subGrid,Tr.content&&(Rr.content=Tr.content,delete Tr.content),Ir.body.innerHTML='
    ',Ar=Ir.body.children[0],Tr.el.appendChild(Ar),this._prepareDragDropByNode(Tr)}if(Er){let Ir=Cr?mr.column:Tr.w,Pr=Tr.h+Er.h,Br=Tr.el.style;Br.transition="none",this.update(Tr.el,{w:Ir,h:Pr}),setTimeout(()=>Br.transition=null)}let Nr=Tr.subGrid=Ci.addGrid(Ar,mr);return(Er==null?void 0:Er._moving)&&(Nr._isTemp=!0),Cr&&(Nr._autoColumn=!0),wr&&Nr.addWidget(Lr,Rr),Er&&(Er._moving?window.setTimeout(()=>Yr.Utils.simulateMouseEvent(Er._event,"mouseenter",Nr.el),0):Nr.addWidget(Tr.el,Tr)),Nr}removeAsSubGrid(br){var mr;let Er=(mr=this.parentGridItem)===null||mr===void 0?void 0:mr.grid;!Er||(Er.batchUpdate(),Er.removeWidget(this.parentGridItem.el,!0,!0),this.engine.nodes.forEach(wr=>{wr.x+=this.parentGridItem.x,wr.y+=this.parentGridItem.y,Er.addWidget(wr.el,wr)}),Er.batchUpdate(!1),delete this.parentGridItem,br&&window.setTimeout(()=>Yr.Utils.simulateMouseEvent(br._event,"mouseenter",Er.el),0))}save(br=!0,mr=!1){let Er=this.engine.save(br);if(Er.forEach(wr=>{var _r;if(br&&wr.el&&!wr.subGrid){let xr=wr.el.querySelector(".grid-stack-item-content");wr.content=xr?xr.innerHTML:void 0,wr.content||delete wr.content}else if(br||delete wr.content,(_r=wr.subGrid)===null||_r===void 0?void 0:_r.el){let xr=wr.subGrid.save(br,mr);wr.subGrid=mr?xr:{children:xr}}delete wr.el}),mr){let wr=Yr.Utils.cloneDeep(this.opts);wr.marginBottom===wr.marginTop&&wr.marginRight===wr.marginLeft&&wr.marginTop===wr.marginRight&&(wr.margin=wr.marginTop,delete wr.marginTop,delete wr.marginRight,delete wr.marginBottom,delete wr.marginLeft),wr.rtl===(this.el.style.direction==="rtl")&&(wr.rtl="auto"),this._isAutoCellHeight&&(wr.cellHeight="auto"),this._autoColumn&&(wr.column="auto",delete wr.disableOneColumnMode);let _r=wr._alwaysShowResizeHandle;return delete wr._alwaysShowResizeHandle,_r!==void 0?wr.alwaysShowResizeHandle=_r:delete wr.alwaysShowResizeHandle,Yr.Utils.removeInternalAndSame(wr,gn.gridDefaults),wr.children=Er,wr}return Er}load(br,mr=this.opts.addRemoveCB||!0){let Er=Ci.Utils.sort([...br],-1,this._prevColumn||this.getColumn());this._insertNotAppend=!0,this._prevColumn&&this._prevColumn!==this.opts.column&&Er.some(xr=>xr.x+xr.w>this.opts.column)&&(this._ignoreLayoutsNodeChange=!0,this.engine.cacheLayout(Er,this._prevColumn,!0));let wr=this.opts.addRemoveCB;typeof mr=="function"&&(this.opts.addRemoveCB=mr);let _r=[];return this.batchUpdate(),mr&&[...this.engine.nodes].forEach(Sr=>{Er.find(Dr=>Sr.id===Dr.id)||(this.opts.addRemoveCB&&this.opts.addRemoveCB(this,Sr,!1),_r.push(Sr),this.removeWidget(Sr.el,!0,!1))}),Er.forEach(xr=>{let Sr=xr.id||xr.id===0?this.engine.nodes.find(Tr=>Tr.id===xr.id):void 0;if(Sr){if(this.update(Sr.el,xr),xr.subGrid&&xr.subGrid.children){let Tr=Sr.el.querySelector(".grid-stack");Tr&&Tr.gridstack&&(Tr.gridstack.load(xr.subGrid.children),this._insertNotAppend=!0)}}else mr&&this.addWidget(xr)}),this.engine.removedNodes=_r,this.batchUpdate(!1),delete this._ignoreLayoutsNodeChange,delete this._insertNotAppend,wr?this.opts.addRemoveCB=wr:delete this.opts.addRemoveCB,this}batchUpdate(br=!0){return this.engine.batchUpdate(br),br||(this._triggerRemoveEvent(),this._triggerAddEvent(),this._triggerChangeEvent()),this}getCellHeight(br=!1){if(this.opts.cellHeight&&this.opts.cellHeight!=="auto"&&(!br||!this.opts.cellHeightUnit||this.opts.cellHeightUnit==="px"))return this.opts.cellHeight;let mr=this.el.querySelector("."+this.opts.itemClass);if(mr){let wr=Yr.Utils.toNumber(mr.getAttribute("gs-h"));return Math.round(mr.offsetHeight/wr)}let Er=parseInt(this.el.getAttribute("gs-current-row"));return Er?Math.round(this.el.getBoundingClientRect().height/Er):this.opts.cellHeight}cellHeight(br,mr=!0){if(mr&&br!==void 0&&this._isAutoCellHeight!==(br==="auto")&&(this._isAutoCellHeight=br==="auto",this._updateWindowResizeEvent()),(br==="initial"||br==="auto")&&(br=void 0),br===void 0){let wr=-this.opts.marginRight-this.opts.marginLeft+this.opts.marginTop+this.opts.marginBottom;br=this.cellWidth()+wr}let Er=Yr.Utils.parseHeight(br);return this.opts.cellHeightUnit===Er.unit&&this.opts.cellHeight===Er.h?this:(this.opts.cellHeightUnit=Er.unit,this.opts.cellHeight=Er.h,mr&&this._updateStyles(!0),this)}cellWidth(){return this._widthOrContainer()/this.getColumn()}_widthOrContainer(){return this.el.clientWidth||this.el.parentElement.clientWidth||window.innerWidth}compact(){return this.engine.compact(),this._triggerChangeEvent(),this}column(br,mr="moveScale"){if(br<1||this.opts.column===br)return this;let Er=this.getColumn();br===1?this._prevColumn=Er:delete this._prevColumn,this.el.classList.remove("grid-stack-"+Er),this.el.classList.add("grid-stack-"+br),this.opts.column=this.engine.column=br;let wr;return br===1&&this.opts.oneColumnModeDomSort&&(wr=[],this.getGridItems().forEach(_r=>{_r.gridstackNode&&wr.push(_r.gridstackNode)}),wr.length||(wr=void 0)),this.engine.updateNodeWidths(Er,br,wr,mr),this._isAutoCellHeight&&this.cellHeight(),this._ignoreLayoutsNodeChange=!0,this._triggerChangeEvent(),delete this._ignoreLayoutsNodeChange,this}getColumn(){return this.opts.column}getGridItems(){return Array.from(this.el.children).filter(br=>br.matches("."+this.opts.itemClass)&&!br.matches("."+this.opts.placeholderClass))}destroy(br=!0){if(!!this.el)return this._updateWindowResizeEvent(!0),this.setStatic(!0,!1),this.setAnimation(!1),br?this.el.parentNode.removeChild(this.el):(this.removeAll(br),this.el.classList.remove(this._styleSheetClass)),this._removeStylesheet(),this.el.removeAttribute("gs-current-row"),delete this.parentGridItem,delete this.opts,delete this._placeholder,delete this.engine,delete this.el.gridstack,delete this.el,this}float(br){return this.opts.float!==br&&(this.opts.float=this.engine.float=br,this._triggerChangeEvent()),this}getFloat(){return this.engine.float}getCellFromPixel(br,mr=!1){let Er=this.el.getBoundingClientRect(),wr;mr?wr={top:Er.top+document.documentElement.scrollTop,left:Er.left}:wr={top:this.el.offsetTop,left:this.el.offsetLeft};let _r=br.left-wr.left,xr=br.top-wr.top,Sr=Er.width/this.getColumn(),Tr=Er.height/parseInt(this.el.getAttribute("gs-current-row"));return{x:Math.floor(_r/Sr),y:Math.floor(xr/Tr)}}getRow(){return Math.max(this.engine.getRow(),this.opts.minRow)}isAreaEmpty(br,mr,Er,wr){return this.engine.isAreaEmpty(br,mr,Er,wr)}makeWidget(br){let mr=Ci.getElement(br);return this._prepareElement(mr,!0),this._updateContainerHeight(),this._triggerAddEvent(),this._triggerChangeEvent(),mr}on(br,mr){return br.indexOf(" ")!==-1?(br.split(" ").forEach(wr=>this.on(wr,mr)),this):(br==="change"||br==="added"||br==="removed"||br==="enable"||br==="disable"?(br==="enable"||br==="disable"?this._gsEventHandler[br]=wr=>mr(wr):this._gsEventHandler[br]=wr=>mr(wr,wr.detail),this.el.addEventListener(br,this._gsEventHandler[br])):br==="drag"||br==="dragstart"||br==="dragstop"||br==="resizestart"||br==="resize"||br==="resizestop"||br==="dropped"?this._gsEventHandler[br]=mr:console.log("GridStack.on("+br+') event not supported, but you can still use $(".grid-stack").on(...) while jquery-ui is still used internally.'),this)}off(br){return br.indexOf(" ")!==-1?(br.split(" ").forEach(Er=>this.off(Er)),this):((br==="change"||br==="added"||br==="removed"||br==="enable"||br==="disable")&&this._gsEventHandler[br]&&this.el.removeEventListener(br,this._gsEventHandler[br]),delete this._gsEventHandler[br],this)}removeWidget(br,mr=!0,Er=!0){return Ci.getElements(br).forEach(wr=>{if(wr.parentElement&&wr.parentElement!==this.el)return;let _r=wr.gridstackNode;_r||(_r=this.engine.nodes.find(xr=>wr===xr.el)),!!_r&&(delete wr.gridstackNode,this._removeDD(wr),this.engine.removeNode(_r,mr,Er),mr&&wr.parentElement&&wr.remove())}),Er&&(this._triggerRemoveEvent(),this._triggerChangeEvent()),this}removeAll(br=!0){return this.engine.nodes.forEach(mr=>{delete mr.el.gridstackNode,this._removeDD(mr.el)}),this.engine.removeAll(br),this._triggerRemoveEvent(),this}setAnimation(br){return br?this.el.classList.add("grid-stack-animate"):this.el.classList.remove("grid-stack-animate"),this}setStatic(br,mr=!0,Er=!0){return this.opts.staticGrid===br?this:(this.opts.staticGrid=br,this._setupRemoveDrop(),this._setupAcceptWidget(),this.engine.nodes.forEach(wr=>{this._prepareDragDropByNode(wr),wr.subGrid&&Er&&wr.subGrid.setStatic(br,mr,Er)}),mr&&this._setStaticClass(),this)}update(br,mr){if(arguments.length>2){console.warn("gridstack.ts: `update(el, x, y, w, h)` is deprecated. Use `update(el, {x, w, content, ...})`. It will be removed soon");let Er=arguments,wr=1;return mr={x:Er[wr++],y:Er[wr++],w:Er[wr++],h:Er[wr++]},this.update(br,mr)}return Ci.getElements(br).forEach(Er=>{if(!Er||!Er.gridstackNode)return;let wr=Er.gridstackNode,_r=Yr.Utils.cloneDeep(mr);delete _r.autoPosition;let xr=["x","y","w","h"],Sr;if(xr.some(Or=>_r[Or]!==void 0&&_r[Or]!==wr[Or])&&(Sr={},xr.forEach(Or=>{Sr[Or]=_r[Or]!==void 0?_r[Or]:wr[Or],delete _r[Or]})),!Sr&&(_r.minW||_r.minH||_r.maxW||_r.maxH)&&(Sr={}),_r.content){let Or=Er.querySelector(".grid-stack-item-content");Or&&Or.innerHTML!==_r.content&&(Or.innerHTML=_r.content),delete _r.content}let Tr=!1,Dr=!1;for(let Or in _r)Or[0]!=="_"&&wr[Or]!==_r[Or]&&(wr[Or]=_r[Or],Tr=!0,Dr=Dr||!this.opts.staticGrid&&(Or==="noResize"||Or==="noMove"||Or==="locked"));Sr&&(this.engine.cleanNodes().beginUpdate(wr).moveNode(wr,Sr),this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate()),Tr&&this._writeAttr(Er,wr),Dr&&this._prepareDragDropByNode(wr)}),this}margin(br){if(!(typeof br=="string"&&br.split(" ").length>1)){let Er=Yr.Utils.parseHeight(br);if(this.opts.marginUnit===Er.unit&&this.opts.margin===Er.h)return}return this.opts.margin=br,this.opts.marginTop=this.opts.marginBottom=this.opts.marginLeft=this.opts.marginRight=void 0,this._initMargin(),this._updateStyles(!0),this}getMargin(){return this.opts.margin}willItFit(br){if(arguments.length>1){console.warn("gridstack.ts: `willItFit(x,y,w,h,autoPosition)` is deprecated. Use `willItFit({x, y,...})`. It will be removed soon");let mr=arguments,Er=0,wr={x:mr[Er++],y:mr[Er++],w:mr[Er++],h:mr[Er++],autoPosition:mr[Er++]};return this.willItFit(wr)}return this.engine.willItFit(br)}_triggerChangeEvent(){if(this.engine.batchMode)return this;let br=this.engine.getDirtyNodes(!0);return br&&br.length&&(this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(br),this._triggerEvent("change",br)),this.engine.saveInitial(),this}_triggerAddEvent(){return this.engine.batchMode?this:(this.engine.addedNodes&&this.engine.addedNodes.length>0&&(this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(this.engine.addedNodes),this.engine.addedNodes.forEach(br=>{delete br._dirty}),this._triggerEvent("added",this.engine.addedNodes),this.engine.addedNodes=[]),this)}_triggerRemoveEvent(){return this.engine.batchMode?this:(this.engine.removedNodes&&this.engine.removedNodes.length>0&&(this._triggerEvent("removed",this.engine.removedNodes),this.engine.removedNodes=[]),this)}_triggerEvent(br,mr){let Er=mr?new CustomEvent(br,{bubbles:!1,detail:mr}):new Event(br);return this.el.dispatchEvent(Er),this}_removeStylesheet(){return this._styles&&(Yr.Utils.removeStylesheet(this._styleSheetClass),delete this._styles),this}_updateStyles(br=!1,mr){if(br&&this._removeStylesheet(),mr||(mr=this.getRow()),this._updateContainerHeight(),this.opts.cellHeight===0)return this;let Er=this.opts.cellHeight,wr=this.opts.cellHeightUnit,_r=`.${this._styleSheetClass} > .${this.opts.itemClass}`;if(!this._styles){let xr=this.opts.styleInHead?void 0:this.el.parentNode;if(this._styles=Yr.Utils.createStylesheet(this._styleSheetClass,xr),!this._styles)return this;this._styles._max=0,Yr.Utils.addCSSRule(this._styles,_r,`min-height: ${Er}${wr}`);let Sr=this.opts.marginTop+this.opts.marginUnit,Tr=this.opts.marginBottom+this.opts.marginUnit,Dr=this.opts.marginRight+this.opts.marginUnit,Or=this.opts.marginLeft+this.opts.marginUnit,Cr=`${_r} > .grid-stack-item-content`,Ar=`.${this._styleSheetClass} > .grid-stack-placeholder > .placeholder-content`;Yr.Utils.addCSSRule(this._styles,Cr,`top: ${Sr}; right: ${Dr}; bottom: ${Tr}; left: ${Or};`),Yr.Utils.addCSSRule(this._styles,Ar,`top: ${Sr}; right: ${Dr}; bottom: ${Tr}; left: ${Or};`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-ne`,`right: ${Dr}`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-e`,`right: ${Dr}`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-se`,`right: ${Dr}; bottom: ${Tr}`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-nw`,`left: ${Or}`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-w`,`left: ${Or}`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-sw`,`left: ${Or}; bottom: ${Tr}`)}if(mr=mr||this._styles._max,mr>this._styles._max){let xr=Sr=>Er*Sr+wr;for(let Sr=this._styles._max+1;Sr<=mr;Sr++){let Tr=xr(Sr);Yr.Utils.addCSSRule(this._styles,`${_r}[gs-y="${Sr-1}"]`,`top: ${xr(Sr-1)}`),Yr.Utils.addCSSRule(this._styles,`${_r}[gs-h="${Sr}"]`,`height: ${Tr}`),Yr.Utils.addCSSRule(this._styles,`${_r}[gs-min-h="${Sr}"]`,`min-height: ${Tr}`),Yr.Utils.addCSSRule(this._styles,`${_r}[gs-max-h="${Sr}"]`,`max-height: ${Tr}`)}this._styles._max=mr}return this}_updateContainerHeight(){if(!this.engine||this.engine.batchMode)return this;let br=this.getRow()+this._extraDragRow;if(this.el.setAttribute("gs-current-row",String(br)),br===0)return this.el.style.removeProperty("min-height"),this;let mr=this.opts.cellHeight,Er=this.opts.cellHeightUnit;return mr?(this.el.style.minHeight=br*mr+Er,this):this}_prepareElement(br,mr=!1,Er){br.classList.add(this.opts.itemClass),Er=Er||this._readAttr(br),br.gridstackNode=Er,Er.el=br,Er.grid=this;let wr=Object.assign({},Er);return Er=this.engine.addNode(Er,mr),Yr.Utils.same(Er,wr)||this._writeAttr(br,Er),this._prepareDragDropByNode(Er),this}_writePosAttr(br,mr){return mr.x!==void 0&&mr.x!==null&&br.setAttribute("gs-x",String(mr.x)),mr.y!==void 0&&mr.y!==null&&br.setAttribute("gs-y",String(mr.y)),mr.w&&br.setAttribute("gs-w",String(mr.w)),mr.h&&br.setAttribute("gs-h",String(mr.h)),this}_writeAttr(br,mr){if(!mr)return this;this._writePosAttr(br,mr);let Er={autoPosition:"gs-auto-position",minW:"gs-min-w",minH:"gs-min-h",maxW:"gs-max-w",maxH:"gs-max-h",noResize:"gs-no-resize",noMove:"gs-no-move",locked:"gs-locked",id:"gs-id"};for(let wr in Er)mr[wr]?br.setAttribute(Er[wr],String(mr[wr])):br.removeAttribute(Er[wr]);return this}_readAttr(br){let mr={};mr.x=Yr.Utils.toNumber(br.getAttribute("gs-x")),mr.y=Yr.Utils.toNumber(br.getAttribute("gs-y")),mr.w=Yr.Utils.toNumber(br.getAttribute("gs-w")),mr.h=Yr.Utils.toNumber(br.getAttribute("gs-h")),mr.maxW=Yr.Utils.toNumber(br.getAttribute("gs-max-w")),mr.minW=Yr.Utils.toNumber(br.getAttribute("gs-min-w")),mr.maxH=Yr.Utils.toNumber(br.getAttribute("gs-max-h")),mr.minH=Yr.Utils.toNumber(br.getAttribute("gs-min-h")),mr.autoPosition=Yr.Utils.toBool(br.getAttribute("gs-auto-position")),mr.noResize=Yr.Utils.toBool(br.getAttribute("gs-no-resize")),mr.noMove=Yr.Utils.toBool(br.getAttribute("gs-no-move")),mr.locked=Yr.Utils.toBool(br.getAttribute("gs-locked")),mr.id=br.getAttribute("gs-id");for(let Er in mr){if(!mr.hasOwnProperty(Er))return;!mr[Er]&&mr[Er]!==0&&delete mr[Er]}return mr}_setStaticClass(){let br=["grid-stack-static"];return this.opts.staticGrid?(this.el.classList.add(...br),this.el.setAttribute("gs-static","true")):(this.el.classList.remove(...br),this.el.removeAttribute("gs-static")),this}onParentResize(){if(!this.el||!this.el.clientWidth)return;let br=!1;if(this._autoColumn&&this.parentGridItem)this.opts.column!==this.parentGridItem.w&&(br=!0,this.column(this.parentGridItem.w,"none"));else{let mr=!this.opts.disableOneColumnMode&&this.el.clientWidth<=this.opts.oneColumnSize;this.opts.column===1!==mr&&(br=!0,this.opts.animate&&this.setAnimation(!1),this.column(mr?1:this._prevColumn),this.opts.animate&&this.setAnimation(!0))}return this._isAutoCellHeight&&(!br&&this.opts.cellHeightThrottle?(this._cellHeightThrottle||(this._cellHeightThrottle=Yr.Utils.throttle(()=>this.cellHeight(),this.opts.cellHeightThrottle)),this._cellHeightThrottle()):this.cellHeight()),this.engine.nodes.forEach(mr=>{mr.subGrid&&mr.subGrid.onParentResize()}),this}_updateWindowResizeEvent(br=!1){let mr=(this._isAutoCellHeight||!this.opts.disableOneColumnMode)&&!this.parentGridItem;return!br&&mr&&!this._windowResizeBind?(this._windowResizeBind=this.onParentResize.bind(this),window.addEventListener("resize",this._windowResizeBind)):(br||!mr)&&this._windowResizeBind&&(window.removeEventListener("resize",this._windowResizeBind),delete this._windowResizeBind),this}static getElement(br=".grid-stack-item"){return Yr.Utils.getElement(br)}static getElements(br=".grid-stack-item"){return Yr.Utils.getElements(br)}static getGridElement(br){return Ci.getElement(br)}static getGridElements(br){return Yr.Utils.getElements(br)}_initMargin(){let br,mr=0,Er=[];return typeof this.opts.margin=="string"&&(Er=this.opts.margin.split(" ")),Er.length===2?(this.opts.marginTop=this.opts.marginBottom=Er[0],this.opts.marginLeft=this.opts.marginRight=Er[1]):Er.length===4?(this.opts.marginTop=Er[0],this.opts.marginRight=Er[1],this.opts.marginBottom=Er[2],this.opts.marginLeft=Er[3]):(br=Yr.Utils.parseHeight(this.opts.margin),this.opts.marginUnit=br.unit,mr=this.opts.margin=br.h),this.opts.marginTop===void 0?this.opts.marginTop=mr:(br=Yr.Utils.parseHeight(this.opts.marginTop),this.opts.marginTop=br.h,delete this.opts.margin),this.opts.marginBottom===void 0?this.opts.marginBottom=mr:(br=Yr.Utils.parseHeight(this.opts.marginBottom),this.opts.marginBottom=br.h,delete this.opts.margin),this.opts.marginRight===void 0?this.opts.marginRight=mr:(br=Yr.Utils.parseHeight(this.opts.marginRight),this.opts.marginRight=br.h,delete this.opts.margin),this.opts.marginLeft===void 0?this.opts.marginLeft=mr:(br=Yr.Utils.parseHeight(this.opts.marginLeft),this.opts.marginLeft=br.h,delete this.opts.margin),this.opts.marginUnit=br.unit,this.opts.marginTop===this.opts.marginBottom&&this.opts.marginLeft===this.opts.marginRight&&this.opts.marginTop===this.opts.marginRight&&(this.opts.margin=this.opts.marginTop),this}static getDD(){return Wi}static setupDragIn(br,mr){(mr==null?void 0:mr.pause)!==void 0&&(tu.DDManager.pauseDrag=mr.pause),typeof br=="string"&&(mr=Object.assign(Object.assign({},gn.dragInDefaultOptions),mr||{}),Yr.Utils.getElements(br).forEach(Er=>{Wi.isDraggable(Er)||Wi.dragIn(Er,mr)}))}movable(br,mr){return this.opts.staticGrid?this:(Ci.getElements(br).forEach(Er=>{let wr=Er.gridstackNode;!wr||(mr?delete wr.noMove:wr.noMove=!0,this._prepareDragDropByNode(wr))}),this)}resizable(br,mr){return this.opts.staticGrid?this:(Ci.getElements(br).forEach(Er=>{let wr=Er.gridstackNode;!wr||(mr?delete wr.noResize:wr.noResize=!0,this._prepareDragDropByNode(wr))}),this)}disable(br=!0){if(!this.opts.staticGrid)return this.enableMove(!1,br),this.enableResize(!1,br),this._triggerEvent("disable"),this}enable(br=!0){if(!this.opts.staticGrid)return this.enableMove(!0,br),this.enableResize(!0,br),this._triggerEvent("enable"),this}enableMove(br,mr=!0){return this.opts.staticGrid?this:(this.opts.disableDrag=!br,this.engine.nodes.forEach(Er=>{this.movable(Er.el,br),Er.subGrid&&mr&&Er.subGrid.enableMove(br,mr)}),this)}enableResize(br,mr=!0){return this.opts.staticGrid?this:(this.opts.disableResize=!br,this.engine.nodes.forEach(Er=>{this.resizable(Er.el,br),Er.subGrid&&mr&&Er.subGrid.enableResize(br,mr)}),this)}_removeDD(br){return Wi.draggable(br,"destroy").resizable(br,"destroy"),br.gridstackNode&&delete br.gridstackNode._initDD,delete br.ddElement,this}_setupAcceptWidget(){if(this.opts.staticGrid||!this.opts.acceptWidgets&&!this.opts.removable)return Wi.droppable(this.el,"destroy"),this;let br,mr,Er=(wr,_r,xr)=>{let Sr=_r.gridstackNode;if(!Sr)return;xr=xr||_r;let Tr=this.el.getBoundingClientRect(),{top:Dr,left:Or}=xr.getBoundingClientRect();Or-=Tr.left,Dr-=Tr.top;let Cr={position:{top:Dr,left:Or}};if(Sr._temporaryRemoved){if(Sr.x=Math.max(0,Math.round(Or/mr)),Sr.y=Math.max(0,Math.round(Dr/br)),delete Sr.autoPosition,this.engine.nodeBoundFix(Sr),!this.engine.willItFit(Sr)){if(Sr.autoPosition=!0,!this.engine.willItFit(Sr)){Wi.off(_r,"drag");return}Sr._willFitPos&&(Yr.Utils.copyPos(Sr,Sr._willFitPos),delete Sr._willFitPos)}this._onStartMoving(xr,wr,Cr,Sr,mr,br)}else this._dragOrResize(xr,wr,Cr,Sr,mr,br)};return Wi.droppable(this.el,{accept:wr=>{let _r=wr.gridstackNode;if((_r==null?void 0:_r.grid)===this)return!0;if(!this.opts.acceptWidgets)return!1;let xr=!0;if(typeof this.opts.acceptWidgets=="function")xr=this.opts.acceptWidgets(wr);else{let Sr=this.opts.acceptWidgets===!0?".grid-stack-item":this.opts.acceptWidgets;xr=wr.matches(Sr)}if(xr&&_r&&this.opts.maxRow){let Sr={w:_r.w,h:_r.h,minW:_r.minW,minH:_r.minH};xr=this.engine.willItFit(Sr)}return xr}}).on(this.el,"dropover",(wr,_r,xr)=>{let Sr=_r.gridstackNode;if((Sr==null?void 0:Sr.grid)===this&&!Sr._temporaryRemoved)return!1;(Sr==null?void 0:Sr.grid)&&Sr.grid!==this&&!Sr._temporaryRemoved&&Sr.grid._leave(_r,xr),mr=this.cellWidth(),br=this.getCellHeight(!0),Sr||(Sr=this._readAttr(_r)),Sr.grid||(Sr._isExternal=!0,_r.gridstackNode=Sr),xr=xr||_r;let Tr=Sr.w||Math.round(xr.offsetWidth/mr)||1,Dr=Sr.h||Math.round(xr.offsetHeight/br)||1;return Sr.grid&&Sr.grid!==this?(_r._gridstackNodeOrig||(_r._gridstackNodeOrig=Sr),_r.gridstackNode=Sr=Object.assign(Object.assign({},Sr),{w:Tr,h:Dr,grid:this}),this.engine.cleanupNode(Sr).nodeBoundFix(Sr),Sr._initDD=Sr._isExternal=Sr._temporaryRemoved=!0):(Sr.w=Tr,Sr.h=Dr,Sr._temporaryRemoved=!0),this._itemRemoving(Sr.el,!1),Wi.on(_r,"drag",Er),Er(wr,_r,xr),!1}).on(this.el,"dropout",(wr,_r,xr)=>{let Sr=_r.gridstackNode;return Sr&&(!Sr.grid||Sr.grid===this)&&(this._leave(_r,xr),this._isTemp&&this.removeAsSubGrid(Sr)),!1}).on(this.el,"drop",(wr,_r,xr)=>{var Sr,Tr;let Dr=_r.gridstackNode;if((Dr==null?void 0:Dr.grid)===this&&!Dr._isExternal)return!1;let Or=!!this.placeholder.parentElement;this.placeholder.remove();let Cr=_r._gridstackNodeOrig;if(delete _r._gridstackNodeOrig,Or&&(Cr==null?void 0:Cr.grid)&&Cr.grid!==this){let Lr=Cr.grid;Lr.engine.removedNodes.push(Cr),Lr._triggerRemoveEvent()._triggerChangeEvent(),Lr.parentGridItem&&!Lr.engine.nodes.length&&Lr.opts.subGridDynamic&&Lr.removeAsSubGrid()}if(!Dr||(Or&&(this.engine.cleanupNode(Dr),Dr.grid=this),Wi.off(_r,"drag"),xr!==_r?(xr.remove(),_r.gridstackNode=Cr,Or&&(_r=_r.cloneNode(!0))):(_r.remove(),this._removeDD(_r)),!Or))return!1;_r.gridstackNode=Dr,Dr.el=_r;let Ar=(Tr=(Sr=Dr.subGrid)===null||Sr===void 0?void 0:Sr.el)===null||Tr===void 0?void 0:Tr.gridstack;return Yr.Utils.copyPos(Dr,this._readAttr(this.placeholder)),Yr.Utils.removePositioningStyles(_r),this._writeAttr(_r,Dr),_r.classList.add(gn.gridDefaults.itemClass,this.opts.itemClass),this.el.appendChild(_r),Ar&&(Ar.parentGridItem=Dr,Ar.opts.styleInHead||Ar._updateStyles(!0)),this._updateContainerHeight(),this.engine.addedNodes.push(Dr),this._triggerAddEvent(),this._triggerChangeEvent(),this.engine.endUpdate(),this._gsEventHandler.dropped&&this._gsEventHandler.dropped(Object.assign(Object.assign({},wr),{type:"dropped"}),Cr&&Cr.grid?Cr:void 0,Dr),window.setTimeout(()=>{Dr.el&&Dr.el.parentElement?this._prepareDragDropByNode(Dr):this.engine.removeNode(Dr),delete Dr.grid._isTemp}),!1}),this}_itemRemoving(br,mr){let Er=br?br.gridstackNode:void 0;!Er||!Er.grid||(mr?Er._isAboutToRemove=!0:delete Er._isAboutToRemove,mr?br.classList.add("grid-stack-item-removing"):br.classList.remove("grid-stack-item-removing"))}_setupRemoveDrop(){if(!this.opts.staticGrid&&typeof this.opts.removable=="string"){let br=document.querySelector(this.opts.removable);if(!br)return this;Wi.isDroppable(br)||Wi.droppable(br,this.opts.removableOptions).on(br,"dropover",(mr,Er)=>this._itemRemoving(Er,!0)).on(br,"dropout",(mr,Er)=>this._itemRemoving(Er,!1))}return this}_prepareDragDropByNode(br){let mr=br.el,Er=br.noMove||this.opts.disableDrag,wr=br.noResize||this.opts.disableResize;if(this.opts.staticGrid||Er&&wr)return br._initDD&&(this._removeDD(mr),delete br._initDD),mr.classList.add("ui-draggable-disabled","ui-resizable-disabled"),this;if(!br._initDD){let _r,xr,Sr=(Or,Cr)=>{this._gsEventHandler[Or.type]&&this._gsEventHandler[Or.type](Or,Or.target),_r=this.cellWidth(),xr=this.getCellHeight(!0),this._onStartMoving(mr,Or,Cr,br,_r,xr)},Tr=(Or,Cr)=>{this._dragOrResize(mr,Or,Cr,br,_r,xr)},Dr=Or=>{this.placeholder.remove(),delete br._moving,delete br._event,delete br._lastTried;let Cr=Or.target;if(!(!Cr.gridstackNode||Cr.gridstackNode.grid!==this)){if(br.el=Cr,br._isAboutToRemove){let Ar=mr.gridstackNode.grid;Ar._gsEventHandler[Or.type]&&Ar._gsEventHandler[Or.type](Or,Cr),this._removeDD(mr),Ar.engine.removedNodes.push(br),Ar._triggerRemoveEvent(),delete mr.gridstackNode,delete br.el,mr.remove()}else Yr.Utils.removePositioningStyles(Cr),br._temporaryRemoved?(Yr.Utils.copyPos(br,br._orig),this._writePosAttr(Cr,br),this.engine.addNode(br)):this._writePosAttr(Cr,br),this._gsEventHandler[Or.type]&&this._gsEventHandler[Or.type](Or,Cr);this._extraDragRow=0,this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate()}};Wi.draggable(mr,{start:Sr,stop:Dr,drag:Tr}).resizable(mr,{start:Sr,stop:Dr,resize:Tr}),br._initDD=!0}return Wi.draggable(mr,Er?"disable":"enable").resizable(mr,wr?"disable":"enable"),this}_onStartMoving(br,mr,Er,wr,_r,xr){this.engine.cleanNodes().beginUpdate(wr),this._writePosAttr(this.placeholder,wr),this.el.appendChild(this.placeholder),wr.el=this.placeholder,wr._lastUiPosition=Er.position,wr._prevYPix=Er.position.top,wr._moving=mr.type==="dragstart",delete wr._lastTried,mr.type==="dropover"&&wr._temporaryRemoved&&(this.engine.addNode(wr),wr._moving=!0),this.engine.cacheRects(_r,xr,this.opts.marginTop,this.opts.marginRight,this.opts.marginBottom,this.opts.marginLeft),mr.type==="resizestart"&&(Wi.resizable(br,"option","minWidth",_r*(wr.minW||1)).resizable(br,"option","minHeight",xr*(wr.minH||1)),wr.maxW&&Wi.resizable(br,"option","maxWidth",_r*wr.maxW),wr.maxH&&Wi.resizable(br,"option","maxHeight",xr*wr.maxH))}_dragOrResize(br,mr,Er,wr,_r,xr){let Sr=Object.assign({},wr._orig),Tr,Dr=this.opts.marginLeft,Or=this.opts.marginRight,Cr=this.opts.marginTop,Ar=this.opts.marginBottom,Lr=Math.round(xr*.1),Rr=Math.round(_r*.1);if(Dr=Math.min(Dr,Rr),Or=Math.min(Or,Rr),Cr=Math.min(Cr,Lr),Ar=Math.min(Ar,Lr),mr.type==="drag"){if(wr._temporaryRemoved)return;let Ir=Er.position.top-wr._prevYPix;wr._prevYPix=Er.position.top,this.opts.draggable.scroll!==!1&&Yr.Utils.updateScrollPosition(br,Er.position,Ir);let Pr=Er.position.left+(Er.position.left>wr._lastUiPosition.left?-Or:Dr),Br=Er.position.top+(Er.position.top>wr._lastUiPosition.top?-Ar:Cr);Sr.x=Math.round(Pr/_r),Sr.y=Math.round(Br/xr);let zr=this._extraDragRow;if(this.engine.collide(wr,Sr)){let Ur=this.getRow(),Kr=Math.max(0,Sr.y+wr.h-Ur);this.opts.maxRow&&Ur+Kr>this.opts.maxRow&&(Kr=Math.max(0,this.opts.maxRow-Ur)),this._extraDragRow=Kr}else this._extraDragRow=0;if(this._extraDragRow!==zr&&this._updateContainerHeight(),wr.x===Sr.x&&wr.y===Sr.y)return}else if(mr.type==="resize"){if(Sr.x<0||(Yr.Utils.updateScrollResize(mr,br,xr),Sr.w=Math.round((Er.size.width-Dr)/_r),Sr.h=Math.round((Er.size.height-Cr)/xr),wr.w===Sr.w&&wr.h===Sr.h)||wr._lastTried&&wr._lastTried.w===Sr.w&&wr._lastTried.h===Sr.h)return;let Ir=Er.position.left+Dr,Pr=Er.position.top+Cr;Sr.x=Math.round(Ir/_r),Sr.y=Math.round(Pr/xr),Tr=!0}wr._event=mr,wr._lastTried=Sr;let Nr={x:Er.position.left+Dr,y:Er.position.top+Cr,w:(Er.size?Er.size.width:wr.w*_r)-Dr-Or,h:(Er.size?Er.size.height:wr.h*xr)-Cr-Ar};if(this.engine.moveNodeCheck(wr,Object.assign(Object.assign({},Sr),{cellWidth:_r,cellHeight:xr,rect:Nr,resizing:Tr}))){wr._lastUiPosition=Er.position,this.engine.cacheRects(_r,xr,Cr,Or,Ar,Dr),delete wr._skipDown,Tr&&wr.subGrid&&wr.subGrid.onParentResize(),this._extraDragRow=0,this._updateContainerHeight();let Ir=mr.target;this._writePosAttr(Ir,wr),this._gsEventHandler[mr.type]&&this._gsEventHandler[mr.type](mr,Ir)}}_leave(br,mr){let Er=br.gridstackNode;!Er||(Wi.off(br,"drag"),!Er._temporaryRemoved&&(Er._temporaryRemoved=!0,this.engine.removeNode(Er),Er.el=Er._isExternal&&mr?mr:br,this.opts.removable===!0&&this._itemRemoving(br,!0),br._gridstackNodeOrig?(br.gridstackNode=br._gridstackNodeOrig,delete br._gridstackNodeOrig):Er._isExternal&&(delete Er.el,delete br.gridstackNode,this.engine.restoreInitial())))}commit(){return Yr.obsolete(this,this.batchUpdate(!1),"commit","batchUpdate","5.2"),this}};An.GridStack=Ci;Ci.Utils=Yr.Utils;Ci.Engine=lh.GridStackEngine;Ci.GDRev="7.2.3"});var bl={};V_(bl,{afterMain:()=>wh,afterRead:()=>bh,afterWrite:()=>Sh,applyStyles:()=>bo,arrow:()=>cl,auto:()=>ia,basePlacements:()=>Gn,beforeMain:()=>yh,beforeRead:()=>gh,beforeWrite:()=>_h,bottom:()=>Ri,clippingParents:()=>cu,computeStyles:()=>Eo,createPopper:()=>vl,createPopperBase:()=>Rh,createPopperLite:()=>Nh,detectOverflow:()=>tn,end:()=>ls,eventListeners:()=>wo,flip:()=>hl,hide:()=>pl,left:()=>Ai,main:()=>Eh,modifierPhases:()=>du,offset:()=>ml,placements:()=>sa,popper:()=>As,popperGenerator:()=>Is,popperOffsets:()=>So,preventOverflow:()=>gl,read:()=>vh,reference:()=>uu,right:()=>Li,start:()=>In,top:()=>Di,variationPlacements:()=>ll,viewport:()=>na,write:()=>xh});var Di="top",Ri="bottom",Li="right",Ai="left",ia="auto",Gn=[Di,Ri,Li,Ai],In="start",ls="end",cu="clippingParents",na="viewport",As="popper",uu="reference",ll=Gn.reduce(function(yr,br){return yr.concat([br+"-"+In,br+"-"+ls])},[]),sa=[].concat(Gn,[ia]).reduce(function(yr,br){return yr.concat([br,br+"-"+In,br+"-"+ls])},[]),gh="beforeRead",vh="read",bh="afterRead",yh="beforeMain",Eh="main",wh="afterMain",_h="beforeWrite",xh="write",Sh="afterWrite",du=[gh,vh,bh,yh,Eh,wh,_h,xh,Sh];function ji(yr){return yr?(yr.nodeName||"").toLowerCase():null}function Oi(yr){if(yr==null)return window;if(yr.toString()!=="[object Window]"){var br=yr.ownerDocument;return br&&br.defaultView||window}return yr}function bn(yr){var br=Oi(yr).Element;return yr instanceof br||yr instanceof Element}function Ii(yr){var br=Oi(yr).HTMLElement;return yr instanceof br||yr instanceof HTMLElement}function vo(yr){if(typeof ShadowRoot=="undefined")return!1;var br=Oi(yr).ShadowRoot;return yr instanceof br||yr instanceof ShadowRoot}function G_(yr){var br=yr.state;Object.keys(br.elements).forEach(function(mr){var Er=br.styles[mr]||{},wr=br.attributes[mr]||{},_r=br.elements[mr];!Ii(_r)||!ji(_r)||(Object.assign(_r.style,Er),Object.keys(wr).forEach(function(xr){var Sr=wr[xr];Sr===!1?_r.removeAttribute(xr):_r.setAttribute(xr,Sr===!0?"":Sr)}))})}function Y_(yr){var br=yr.state,mr={popper:{position:br.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(br.elements.popper.style,mr.popper),br.styles=mr,br.elements.arrow&&Object.assign(br.elements.arrow.style,mr.arrow),function(){Object.keys(br.elements).forEach(function(Er){var wr=br.elements[Er],_r=br.attributes[Er]||{},xr=Object.keys(br.styles.hasOwnProperty(Er)?br.styles[Er]:mr[Er]),Sr=xr.reduce(function(Tr,Dr){return Tr[Dr]="",Tr},{});!Ii(wr)||!ji(wr)||(Object.assign(wr.style,Sr),Object.keys(_r).forEach(function(Tr){wr.removeAttribute(Tr)}))})}}var bo={name:"applyStyles",enabled:!0,phase:"write",fn:G_,effect:Y_,requires:["computeStyles"]};function Hi(yr){return yr.split("-")[0]}var Mn=Math.max,Cs=Math.min,Yn=Math.round;function yo(){var yr=navigator.userAgentData;return yr!=null&&yr.brands?yr.brands.map(function(br){return br.brand+"/"+br.version}).join(" "):navigator.userAgent}function oa(){return!/^((?!chrome|android).)*safari/i.test(yo())}function yn(yr,br,mr){br===void 0&&(br=!1),mr===void 0&&(mr=!1);var Er=yr.getBoundingClientRect(),wr=1,_r=1;br&&Ii(yr)&&(wr=yr.offsetWidth>0&&Yn(Er.width)/yr.offsetWidth||1,_r=yr.offsetHeight>0&&Yn(Er.height)/yr.offsetHeight||1);var xr=bn(yr)?Oi(yr):window,Sr=xr.visualViewport,Tr=!oa()&&mr,Dr=(Er.left+(Tr&&Sr?Sr.offsetLeft:0))/wr,Or=(Er.top+(Tr&&Sr?Sr.offsetTop:0))/_r,Cr=Er.width/wr,Ar=Er.height/_r;return{width:Cr,height:Ar,top:Or,right:Dr+Cr,bottom:Or+Ar,left:Dr,x:Dr,y:Or}}function Ls(yr){var br=yn(yr),mr=yr.offsetWidth,Er=yr.offsetHeight;return Math.abs(br.width-mr)<=1&&(mr=br.width),Math.abs(br.height-Er)<=1&&(Er=br.height),{x:yr.offsetLeft,y:yr.offsetTop,width:mr,height:Er}}function aa(yr,br){var mr=br.getRootNode&&br.getRootNode();if(yr.contains(br))return!0;if(mr&&vo(mr)){var Er=br;do{if(Er&&yr.isSameNode(Er))return!0;Er=Er.parentNode||Er.host}while(Er)}return!1}function en(yr){return Oi(yr).getComputedStyle(yr)}function fu(yr){return["table","td","th"].indexOf(ji(yr))>=0}function Ui(yr){return((bn(yr)?yr.ownerDocument:yr.document)||window.document).documentElement}function Kn(yr){return ji(yr)==="html"?yr:yr.assignedSlot||yr.parentNode||(vo(yr)?yr.host:null)||Ui(yr)}function Th(yr){return!Ii(yr)||en(yr).position==="fixed"?null:yr.offsetParent}function K_(yr){var br=/firefox/i.test(yo()),mr=/Trident/i.test(yo());if(mr&&Ii(yr)){var Er=en(yr);if(Er.position==="fixed")return null}var wr=Kn(yr);for(vo(wr)&&(wr=wr.host);Ii(wr)&&["html","body"].indexOf(ji(wr))<0;){var _r=en(wr);if(_r.transform!=="none"||_r.perspective!=="none"||_r.contain==="paint"||["transform","perspective"].indexOf(_r.willChange)!==-1||br&&_r.willChange==="filter"||br&&_r.filter&&_r.filter!=="none")return wr;wr=wr.parentNode}return null}function kn(yr){for(var br=Oi(yr),mr=Th(yr);mr&&fu(mr)&&en(mr).position==="static";)mr=Th(mr);return mr&&(ji(mr)==="html"||ji(mr)==="body"&&en(mr).position==="static")?br:mr||K_(yr)||br}function Ms(yr){return["top","bottom"].indexOf(yr)>=0?"x":"y"}function ks(yr,br,mr){return Mn(yr,Cs(br,mr))}function Dh(yr,br,mr){var Er=ks(yr,br,mr);return Er>mr?mr:Er}function la(){return{top:0,right:0,bottom:0,left:0}}function ca(yr){return Object.assign({},la(),yr)}function ua(yr,br){return br.reduce(function(mr,Er){return mr[Er]=yr,mr},{})}var X_=function(br,mr){return br=typeof br=="function"?br(Object.assign({},mr.rects,{placement:mr.placement})):br,ca(typeof br!="number"?br:ua(br,Gn))};function J_(yr){var br,mr=yr.state,Er=yr.name,wr=yr.options,_r=mr.elements.arrow,xr=mr.modifiersData.popperOffsets,Sr=Hi(mr.placement),Tr=Ms(Sr),Dr=[Ai,Li].indexOf(Sr)>=0,Or=Dr?"height":"width";if(!(!_r||!xr)){var Cr=X_(wr.padding,mr),Ar=Ls(_r),Lr=Tr==="y"?Di:Ai,Rr=Tr==="y"?Ri:Li,Nr=mr.rects.reference[Or]+mr.rects.reference[Tr]-xr[Tr]-mr.rects.popper[Or],Ir=xr[Tr]-mr.rects.reference[Tr],Pr=kn(_r),Br=Pr?Tr==="y"?Pr.clientHeight||0:Pr.clientWidth||0:0,zr=Nr/2-Ir/2,Ur=Cr[Lr],Kr=Br-Ar[Or]-Cr[Rr],Fr=Br/2-Ar[Or]/2+zr,Xr=ks(Ur,Fr,Kr),Jr=Tr;mr.modifiersData[Er]=(br={},br[Jr]=Xr,br.centerOffset=Xr-Fr,br)}}function Q_(yr){var br=yr.state,mr=yr.options,Er=mr.element,wr=Er===void 0?"[data-popper-arrow]":Er;wr!=null&&(typeof wr=="string"&&(wr=br.elements.popper.querySelector(wr),!wr)||!aa(br.elements.popper,wr)||(br.elements.arrow=wr))}var cl={name:"arrow",enabled:!0,phase:"main",fn:J_,effect:Q_,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function En(yr){return yr.split("-")[1]}var Z_={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ex(yr){var br=yr.x,mr=yr.y,Er=window,wr=Er.devicePixelRatio||1;return{x:Yn(br*wr)/wr||0,y:Yn(mr*wr)/wr||0}}function Oh(yr){var br,mr=yr.popper,Er=yr.popperRect,wr=yr.placement,_r=yr.variation,xr=yr.offsets,Sr=yr.position,Tr=yr.gpuAcceleration,Dr=yr.adaptive,Or=yr.roundOffsets,Cr=yr.isFixed,Ar=xr.x,Lr=Ar===void 0?0:Ar,Rr=xr.y,Nr=Rr===void 0?0:Rr,Ir=typeof Or=="function"?Or({x:Lr,y:Nr}):{x:Lr,y:Nr};Lr=Ir.x,Nr=Ir.y;var Pr=xr.hasOwnProperty("x"),Br=xr.hasOwnProperty("y"),zr=Ai,Ur=Di,Kr=window;if(Dr){var Fr=kn(mr),Xr="clientHeight",Jr="clientWidth";if(Fr===Oi(mr)&&(Fr=Ui(mr),en(Fr).position!=="static"&&Sr==="absolute"&&(Xr="scrollHeight",Jr="scrollWidth")),Fr=Fr,wr===Di||(wr===Ai||wr===Li)&&_r===ls){Ur=Ri;var oi=Cr&&Fr===Kr&&Kr.visualViewport?Kr.visualViewport.height:Fr[Xr];Nr-=oi-Er.height,Nr*=Tr?1:-1}if(wr===Ai||(wr===Di||wr===Ri)&&_r===ls){zr=Li;var hi=Cr&&Fr===Kr&&Kr.visualViewport?Kr.visualViewport.width:Fr[Jr];Lr-=hi-Er.width,Lr*=Tr?1:-1}}var pi=Object.assign({position:Sr},Dr&&Z_),_i=Or===!0?ex({x:Lr,y:Nr}):{x:Lr,y:Nr};if(Lr=_i.x,Nr=_i.y,Tr){var Ei;return Object.assign({},pi,(Ei={},Ei[Ur]=Br?"0":"",Ei[zr]=Pr?"0":"",Ei.transform=(Kr.devicePixelRatio||1)<=1?"translate("+Lr+"px, "+Nr+"px)":"translate3d("+Lr+"px, "+Nr+"px, 0)",Ei))}return Object.assign({},pi,(br={},br[Ur]=Br?Nr+"px":"",br[zr]=Pr?Lr+"px":"",br.transform="",br))}function tx(yr){var br=yr.state,mr=yr.options,Er=mr.gpuAcceleration,wr=Er===void 0?!0:Er,_r=mr.adaptive,xr=_r===void 0?!0:_r,Sr=mr.roundOffsets,Tr=Sr===void 0?!0:Sr;if(!1)var Dr;var Or={placement:Hi(br.placement),variation:En(br.placement),popper:br.elements.popper,popperRect:br.rects.popper,gpuAcceleration:wr,isFixed:br.options.strategy==="fixed"};br.modifiersData.popperOffsets!=null&&(br.styles.popper=Object.assign({},br.styles.popper,Oh(Object.assign({},Or,{offsets:br.modifiersData.popperOffsets,position:br.options.strategy,adaptive:xr,roundOffsets:Tr})))),br.modifiersData.arrow!=null&&(br.styles.arrow=Object.assign({},br.styles.arrow,Oh(Object.assign({},Or,{offsets:br.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:Tr})))),br.attributes.popper=Object.assign({},br.attributes.popper,{"data-popper-placement":br.placement})}var Eo={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:tx,data:{}};var ul={passive:!0};function rx(yr){var br=yr.state,mr=yr.instance,Er=yr.options,wr=Er.scroll,_r=wr===void 0?!0:wr,xr=Er.resize,Sr=xr===void 0?!0:xr,Tr=Oi(br.elements.popper),Dr=[].concat(br.scrollParents.reference,br.scrollParents.popper);return _r&&Dr.forEach(function(Or){Or.addEventListener("scroll",mr.update,ul)}),Sr&&Tr.addEventListener("resize",mr.update,ul),function(){_r&&Dr.forEach(function(Or){Or.removeEventListener("scroll",mr.update,ul)}),Sr&&Tr.removeEventListener("resize",mr.update,ul)}}var wo={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:rx,data:{}};var ix={left:"right",right:"left",bottom:"top",top:"bottom"};function _o(yr){return yr.replace(/left|right|bottom|top/g,function(br){return ix[br]})}var nx={start:"end",end:"start"};function dl(yr){return yr.replace(/start|end/g,function(br){return nx[br]})}function Rs(yr){var br=Oi(yr),mr=br.pageXOffset,Er=br.pageYOffset;return{scrollLeft:mr,scrollTop:Er}}function Ns(yr){return yn(Ui(yr)).left+Rs(yr).scrollLeft}function hu(yr,br){var mr=Oi(yr),Er=Ui(yr),wr=mr.visualViewport,_r=Er.clientWidth,xr=Er.clientHeight,Sr=0,Tr=0;if(wr){_r=wr.width,xr=wr.height;var Dr=oa();(Dr||!Dr&&br==="fixed")&&(Sr=wr.offsetLeft,Tr=wr.offsetTop)}return{width:_r,height:xr,x:Sr+Ns(yr),y:Tr}}function pu(yr){var br,mr=Ui(yr),Er=Rs(yr),wr=(br=yr.ownerDocument)==null?void 0:br.body,_r=Mn(mr.scrollWidth,mr.clientWidth,wr?wr.scrollWidth:0,wr?wr.clientWidth:0),xr=Mn(mr.scrollHeight,mr.clientHeight,wr?wr.scrollHeight:0,wr?wr.clientHeight:0),Sr=-Er.scrollLeft+Ns(yr),Tr=-Er.scrollTop;return en(wr||mr).direction==="rtl"&&(Sr+=Mn(mr.clientWidth,wr?wr.clientWidth:0)-_r),{width:_r,height:xr,x:Sr,y:Tr}}function qs(yr){var br=en(yr),mr=br.overflow,Er=br.overflowX,wr=br.overflowY;return/auto|scroll|overlay|hidden/.test(mr+wr+Er)}function fl(yr){return["html","body","#document"].indexOf(ji(yr))>=0?yr.ownerDocument.body:Ii(yr)&&qs(yr)?yr:fl(Kn(yr))}function cs(yr,br){var mr;br===void 0&&(br=[]);var Er=fl(yr),wr=Er===((mr=yr.ownerDocument)==null?void 0:mr.body),_r=Oi(Er),xr=wr?[_r].concat(_r.visualViewport||[],qs(Er)?Er:[]):Er,Sr=br.concat(xr);return wr?Sr:Sr.concat(cs(Kn(xr)))}function xo(yr){return Object.assign({},yr,{left:yr.x,top:yr.y,right:yr.x+yr.width,bottom:yr.y+yr.height})}function sx(yr,br){var mr=yn(yr,!1,br==="fixed");return mr.top=mr.top+yr.clientTop,mr.left=mr.left+yr.clientLeft,mr.bottom=mr.top+yr.clientHeight,mr.right=mr.left+yr.clientWidth,mr.width=yr.clientWidth,mr.height=yr.clientHeight,mr.x=mr.left,mr.y=mr.top,mr}function Ah(yr,br,mr){return br===na?xo(hu(yr,mr)):bn(br)?sx(br,mr):xo(pu(Ui(yr)))}function ox(yr){var br=cs(Kn(yr)),mr=["absolute","fixed"].indexOf(en(yr).position)>=0,Er=mr&&Ii(yr)?kn(yr):yr;return bn(Er)?br.filter(function(wr){return bn(wr)&&aa(wr,Er)&&ji(wr)!=="body"}):[]}function mu(yr,br,mr,Er){var wr=br==="clippingParents"?ox(yr):[].concat(br),_r=[].concat(wr,[mr]),xr=_r[0],Sr=_r.reduce(function(Tr,Dr){var Or=Ah(yr,Dr,Er);return Tr.top=Mn(Or.top,Tr.top),Tr.right=Cs(Or.right,Tr.right),Tr.bottom=Cs(Or.bottom,Tr.bottom),Tr.left=Mn(Or.left,Tr.left),Tr},Ah(yr,xr,Er));return Sr.width=Sr.right-Sr.left,Sr.height=Sr.bottom-Sr.top,Sr.x=Sr.left,Sr.y=Sr.top,Sr}function da(yr){var br=yr.reference,mr=yr.element,Er=yr.placement,wr=Er?Hi(Er):null,_r=Er?En(Er):null,xr=br.x+br.width/2-mr.width/2,Sr=br.y+br.height/2-mr.height/2,Tr;switch(wr){case Di:Tr={x:xr,y:br.y-mr.height};break;case Ri:Tr={x:xr,y:br.y+br.height};break;case Li:Tr={x:br.x+br.width,y:Sr};break;case Ai:Tr={x:br.x-mr.width,y:Sr};break;default:Tr={x:br.x,y:br.y}}var Dr=wr?Ms(wr):null;if(Dr!=null){var Or=Dr==="y"?"height":"width";switch(_r){case In:Tr[Dr]=Tr[Dr]-(br[Or]/2-mr[Or]/2);break;case ls:Tr[Dr]=Tr[Dr]+(br[Or]/2-mr[Or]/2);break;default:}}return Tr}function tn(yr,br){br===void 0&&(br={});var mr=br,Er=mr.placement,wr=Er===void 0?yr.placement:Er,_r=mr.strategy,xr=_r===void 0?yr.strategy:_r,Sr=mr.boundary,Tr=Sr===void 0?cu:Sr,Dr=mr.rootBoundary,Or=Dr===void 0?na:Dr,Cr=mr.elementContext,Ar=Cr===void 0?As:Cr,Lr=mr.altBoundary,Rr=Lr===void 0?!1:Lr,Nr=mr.padding,Ir=Nr===void 0?0:Nr,Pr=ca(typeof Ir!="number"?Ir:ua(Ir,Gn)),Br=Ar===As?uu:As,zr=yr.rects.popper,Ur=yr.elements[Rr?Br:Ar],Kr=mu(bn(Ur)?Ur:Ur.contextElement||Ui(yr.elements.popper),Tr,Or,xr),Fr=yn(yr.elements.reference),Xr=da({reference:Fr,element:zr,strategy:"absolute",placement:wr}),Jr=xo(Object.assign({},zr,Xr)),oi=Ar===As?Jr:Fr,hi={top:Kr.top-oi.top+Pr.top,bottom:oi.bottom-Kr.bottom+Pr.bottom,left:Kr.left-oi.left+Pr.left,right:oi.right-Kr.right+Pr.right},pi=yr.modifiersData.offset;if(Ar===As&&pi){var _i=pi[wr];Object.keys(hi).forEach(function(Ei){var zi=[Li,Ri].indexOf(Ei)>=0?1:-1,Gi=[Di,Ri].indexOf(Ei)>=0?"y":"x";hi[Ei]+=_i[Gi]*zi})}return hi}function gu(yr,br){br===void 0&&(br={});var mr=br,Er=mr.placement,wr=mr.boundary,_r=mr.rootBoundary,xr=mr.padding,Sr=mr.flipVariations,Tr=mr.allowedAutoPlacements,Dr=Tr===void 0?sa:Tr,Or=En(Er),Cr=Or?Sr?ll:ll.filter(function(Rr){return En(Rr)===Or}):Gn,Ar=Cr.filter(function(Rr){return Dr.indexOf(Rr)>=0});Ar.length===0&&(Ar=Cr);var Lr=Ar.reduce(function(Rr,Nr){return Rr[Nr]=tn(yr,{placement:Nr,boundary:wr,rootBoundary:_r,padding:xr})[Hi(Nr)],Rr},{});return Object.keys(Lr).sort(function(Rr,Nr){return Lr[Rr]-Lr[Nr]})}function ax(yr){if(Hi(yr)===ia)return[];var br=_o(yr);return[dl(yr),br,dl(br)]}function lx(yr){var br=yr.state,mr=yr.options,Er=yr.name;if(!br.modifiersData[Er]._skip){for(var wr=mr.mainAxis,_r=wr===void 0?!0:wr,xr=mr.altAxis,Sr=xr===void 0?!0:xr,Tr=mr.fallbackPlacements,Dr=mr.padding,Or=mr.boundary,Cr=mr.rootBoundary,Ar=mr.altBoundary,Lr=mr.flipVariations,Rr=Lr===void 0?!0:Lr,Nr=mr.allowedAutoPlacements,Ir=br.options.placement,Pr=Hi(Ir),Br=Pr===Ir,zr=Tr||(Br||!Rr?[_o(Ir)]:ax(Ir)),Ur=[Ir].concat(zr).reduce(function(Zr,ni){return Zr.concat(Hi(ni)===ia?gu(br,{placement:ni,boundary:Or,rootBoundary:Cr,padding:Dr,flipVariations:Rr,allowedAutoPlacements:Nr}):ni)},[]),Kr=br.rects.reference,Fr=br.rects.popper,Xr=new Map,Jr=!0,oi=Ur[0],hi=0;hi=0,Gi=zi?"width":"height",vi=tn(br,{placement:pi,boundary:Or,rootBoundary:Cr,altBoundary:Ar,padding:Dr}),ki=zi?Ei?Li:Ai:Ei?Ri:Di;Kr[Gi]>Fr[Gi]&&(ki=_o(ki));var Cn=_o(ki),Yi=[];if(_r&&Yi.push(vi[_i]<=0),Sr&&Yi.push(vi[ki]<=0,vi[Cn]<=0),Yi.every(function(Zr){return Zr})){oi=pi,Jr=!1;break}Xr.set(pi,Yi)}if(Jr)for(var ii=Rr?3:1,ei=function(ni){var bi=Ur.find(function(xi){var Si=Xr.get(xi);if(Si)return Si.slice(0,ni).every(function(Ln){return Ln})});if(bi)return oi=bi,"break"},Qr=ii;Qr>0;Qr--){var si=ei(Qr);if(si==="break")break}br.placement!==oi&&(br.modifiersData[Er]._skip=!0,br.placement=oi,br.reset=!0)}}var hl={name:"flip",enabled:!0,phase:"main",fn:lx,requiresIfExists:["offset"],data:{_skip:!1}};function Ch(yr,br,mr){return mr===void 0&&(mr={x:0,y:0}),{top:yr.top-br.height-mr.y,right:yr.right-br.width+mr.x,bottom:yr.bottom-br.height+mr.y,left:yr.left-br.width-mr.x}}function Lh(yr){return[Di,Li,Ri,Ai].some(function(br){return yr[br]>=0})}function cx(yr){var br=yr.state,mr=yr.name,Er=br.rects.reference,wr=br.rects.popper,_r=br.modifiersData.preventOverflow,xr=tn(br,{elementContext:"reference"}),Sr=tn(br,{altBoundary:!0}),Tr=Ch(xr,Er),Dr=Ch(Sr,wr,_r),Or=Lh(Tr),Cr=Lh(Dr);br.modifiersData[mr]={referenceClippingOffsets:Tr,popperEscapeOffsets:Dr,isReferenceHidden:Or,hasPopperEscaped:Cr},br.attributes.popper=Object.assign({},br.attributes.popper,{"data-popper-reference-hidden":Or,"data-popper-escaped":Cr})}var pl={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:cx};function ux(yr,br,mr){var Er=Hi(yr),wr=[Ai,Di].indexOf(Er)>=0?-1:1,_r=typeof mr=="function"?mr(Object.assign({},br,{placement:yr})):mr,xr=_r[0],Sr=_r[1];return xr=xr||0,Sr=(Sr||0)*wr,[Ai,Li].indexOf(Er)>=0?{x:Sr,y:xr}:{x:xr,y:Sr}}function dx(yr){var br=yr.state,mr=yr.options,Er=yr.name,wr=mr.offset,_r=wr===void 0?[0,0]:wr,xr=sa.reduce(function(Or,Cr){return Or[Cr]=ux(Cr,br.rects,_r),Or},{}),Sr=xr[br.placement],Tr=Sr.x,Dr=Sr.y;br.modifiersData.popperOffsets!=null&&(br.modifiersData.popperOffsets.x+=Tr,br.modifiersData.popperOffsets.y+=Dr),br.modifiersData[Er]=xr}var ml={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:dx};function fx(yr){var br=yr.state,mr=yr.name;br.modifiersData[mr]=da({reference:br.rects.reference,element:br.rects.popper,strategy:"absolute",placement:br.placement})}var So={name:"popperOffsets",enabled:!0,phase:"read",fn:fx,data:{}};function vu(yr){return yr==="x"?"y":"x"}function hx(yr){var br=yr.state,mr=yr.options,Er=yr.name,wr=mr.mainAxis,_r=wr===void 0?!0:wr,xr=mr.altAxis,Sr=xr===void 0?!1:xr,Tr=mr.boundary,Dr=mr.rootBoundary,Or=mr.altBoundary,Cr=mr.padding,Ar=mr.tether,Lr=Ar===void 0?!0:Ar,Rr=mr.tetherOffset,Nr=Rr===void 0?0:Rr,Ir=tn(br,{boundary:Tr,rootBoundary:Dr,padding:Cr,altBoundary:Or}),Pr=Hi(br.placement),Br=En(br.placement),zr=!Br,Ur=Ms(Pr),Kr=vu(Ur),Fr=br.modifiersData.popperOffsets,Xr=br.rects.reference,Jr=br.rects.popper,oi=typeof Nr=="function"?Nr(Object.assign({},br.rects,{placement:br.placement})):Nr,hi=typeof oi=="number"?{mainAxis:oi,altAxis:oi}:Object.assign({mainAxis:0,altAxis:0},oi),pi=br.modifiersData.offset?br.modifiersData.offset[br.placement]:null,_i={x:0,y:0};if(!!Fr){if(_r){var Ei,zi=Ur==="y"?Di:Ai,Gi=Ur==="y"?Ri:Li,vi=Ur==="y"?"height":"width",ki=Fr[Ur],Cn=ki+Ir[zi],Yi=ki-Ir[Gi],ii=Lr?-Jr[vi]/2:0,ei=Br===In?Xr[vi]:Jr[vi],Qr=Br===In?-Jr[vi]:-Xr[vi],si=br.elements.arrow,Zr=Lr&&si?Ls(si):{width:0,height:0},ni=br.modifiersData["arrow#persistent"]?br.modifiersData["arrow#persistent"].padding:la(),bi=ni[zi],xi=ni[Gi],Si=ks(0,Xr[vi],Zr[vi]),Ln=zr?Xr[vi]/2-ii-Si-bi-hi.mainAxis:ei-Si-bi-hi.mainAxis,ru=zr?-Xr[vi]/2+ii+Si+xi+hi.mainAxis:Qr+Si+xi+hi.mainAxis,co=br.elements.arrow&&kn(br.elements.arrow),uo=co?Ur==="y"?co.clientTop||0:co.clientLeft||0:0,el=(Ei=pi==null?void 0:pi[Ur])!=null?Ei:0,iu=ki+Ln-el-uo,tl=ki+ru-el,rl=ks(Lr?Cs(Cn,iu):Cn,ki,Lr?Mn(Yi,tl):Yi);Fr[Ur]=rl,_i[Ur]=rl-ki}if(Sr){var Qo,il=Ur==="x"?Di:Ai,fo=Ur==="x"?Ri:Li,Vn=Fr[Kr],ho=Kr==="y"?"height":"width",Zo=Vn+Ir[il],po=Vn-Ir[fo],mo=[Di,Ai].indexOf(Pr)!==-1,Os=(Qo=pi==null?void 0:pi[Kr])!=null?Qo:0,nl=mo?Zo:Vn-Xr[ho]-Jr[ho]-Os+hi.altAxis,ea=mo?Vn+Xr[ho]+Jr[ho]-Os-hi.altAxis:po,sl=Lr&&mo?Dh(nl,Vn,ea):ks(Lr?nl:Zo,Vn,Lr?ea:po);Fr[Kr]=sl,_i[Kr]=sl-Vn}br.modifiersData[Er]=_i}}var gl={name:"preventOverflow",enabled:!0,phase:"main",fn:hx,requiresIfExists:["offset"]};function bu(yr){return{scrollLeft:yr.scrollLeft,scrollTop:yr.scrollTop}}function yu(yr){return yr===Oi(yr)||!Ii(yr)?Rs(yr):bu(yr)}function px(yr){var br=yr.getBoundingClientRect(),mr=Yn(br.width)/yr.offsetWidth||1,Er=Yn(br.height)/yr.offsetHeight||1;return mr!==1||Er!==1}function Eu(yr,br,mr){mr===void 0&&(mr=!1);var Er=Ii(br),wr=Ii(br)&&px(br),_r=Ui(br),xr=yn(yr,wr,mr),Sr={scrollLeft:0,scrollTop:0},Tr={x:0,y:0};return(Er||!Er&&!mr)&&((ji(br)!=="body"||qs(_r))&&(Sr=yu(br)),Ii(br)?(Tr=yn(br,!0),Tr.x+=br.clientLeft,Tr.y+=br.clientTop):_r&&(Tr.x=Ns(_r))),{x:xr.left+Sr.scrollLeft-Tr.x,y:xr.top+Sr.scrollTop-Tr.y,width:xr.width,height:xr.height}}function mx(yr){var br=new Map,mr=new Set,Er=[];yr.forEach(function(_r){br.set(_r.name,_r)});function wr(_r){mr.add(_r.name);var xr=[].concat(_r.requires||[],_r.requiresIfExists||[]);xr.forEach(function(Sr){if(!mr.has(Sr)){var Tr=br.get(Sr);Tr&&wr(Tr)}}),Er.push(_r)}return yr.forEach(function(_r){mr.has(_r.name)||wr(_r)}),Er}function wu(yr){var br=mx(yr);return du.reduce(function(mr,Er){return mr.concat(br.filter(function(wr){return wr.phase===Er}))},[])}function _u(yr){var br;return function(){return br||(br=new Promise(function(mr){Promise.resolve().then(function(){br=void 0,mr(yr())})})),br}}function xu(yr){var br=yr.reduce(function(mr,Er){var wr=mr[Er.name];return mr[Er.name]=wr?Object.assign({},wr,Er,{options:Object.assign({},wr.options,Er.options),data:Object.assign({},wr.data,Er.data)}):Er,mr},{});return Object.keys(br).map(function(mr){return br[mr]})}var Mh={placement:"bottom",modifiers:[],strategy:"absolute"};function kh(){for(var yr=arguments.length,br=new Array(yr),mr=0;mrmr.matches(br))},parents(yr,br){let mr=[],Er=yr.parentNode;for(;Er&&Er.nodeType===Node.ELEMENT_NODE&&Er.nodeType!==bx;)Er.matches(br)&&mr.push(Er),Er=Er.parentNode;return mr},prev(yr,br){let mr=yr.previousElementSibling;for(;mr;){if(mr.matches(br))return[mr];mr=mr.previousElementSibling}return[]},next(yr,br){let mr=yr.nextElementSibling;for(;mr;){if(mr.matches(br))return[mr];mr=mr.nextElementSibling}return[]}},yx=1e6,Ex=1e3,Su="transitionend",wx=yr=>yr==null?`${yr}`:{}.toString.call(yr).match(/\s([a-z]+)/i)[1].toLowerCase(),qh=yr=>{do yr+=Math.floor(Math.random()*yx);while(document.getElementById(yr));return yr},Ih=yr=>{let br=yr.getAttribute("data-bs-target");if(!br||br==="#"){let mr=yr.getAttribute("href");if(!mr||!mr.includes("#")&&!mr.startsWith("."))return null;mr.includes("#")&&!mr.startsWith("#")&&(mr=`#${mr.split("#")[1]}`),br=mr&&mr!=="#"?mr.trim():null}return br},Tu=yr=>{let br=Ih(yr);return br&&document.querySelector(br)?br:null},us=yr=>{let br=Ih(yr);return br?document.querySelector(br):null},_x=yr=>{if(!yr)return 0;let{transitionDuration:br,transitionDelay:mr}=window.getComputedStyle(yr),Er=Number.parseFloat(br),wr=Number.parseFloat(mr);return!Er&&!wr?0:(br=br.split(",")[0],mr=mr.split(",")[0],(Number.parseFloat(br)+Number.parseFloat(mr))*Ex)},Ph=yr=>{yr.dispatchEvent(new Event(Su))},ds=yr=>!yr||typeof yr!="object"?!1:(typeof yr.jquery!="undefined"&&(yr=yr[0]),typeof yr.nodeType!="undefined"),To=yr=>ds(yr)?yr.jquery?yr[0]:yr:typeof yr=="string"&&yr.length>0?ai.findOne(yr):null,Xn=(yr,br,mr)=>{Object.keys(mr).forEach(Er=>{let wr=mr[Er],_r=br[Er],xr=_r&&ds(_r)?"element":wx(_r);if(!new RegExp(wr).test(xr))throw new TypeError(`${yr.toUpperCase()}: Option "${Er}" provided type "${xr}" but expected type "${wr}".`)})},yl=yr=>!ds(yr)||yr.getClientRects().length===0?!1:getComputedStyle(yr).getPropertyValue("visibility")==="visible",Do=yr=>!yr||yr.nodeType!==Node.ELEMENT_NODE||yr.classList.contains("disabled")?!0:typeof yr.disabled!="undefined"?yr.disabled:yr.hasAttribute("disabled")&&yr.getAttribute("disabled")!=="false",jh=yr=>{if(!document.documentElement.attachShadow)return null;if(typeof yr.getRootNode=="function"){let br=yr.getRootNode();return br instanceof ShadowRoot?br:null}return yr instanceof ShadowRoot?yr:yr.parentNode?jh(yr.parentNode):null},El=()=>{},Oo=yr=>yr.offsetHeight,Hh=()=>{let{jQuery:yr}=window;return yr&&!document.body.hasAttribute("data-bs-no-jquery")?yr:null},Du=[],xx=yr=>{document.readyState==="loading"?(Du.length||document.addEventListener("DOMContentLoaded",()=>{Du.forEach(br=>br())}),Du.push(yr)):yr()},nn=()=>document.documentElement.dir==="rtl",wn=yr=>{xx(()=>{let br=Hh();if(br){let mr=yr.NAME,Er=br.fn[mr];br.fn[mr]=yr.jQueryInterface,br.fn[mr].Constructor=yr,br.fn[mr].noConflict=()=>(br.fn[mr]=Er,yr.jQueryInterface)}})},Ps=yr=>{typeof yr=="function"&&yr()},Bh=(yr,br,mr=!0)=>{if(!mr){Ps(yr);return}let Er=5,wr=_x(br)+Er,_r=!1,xr=({target:Sr})=>{Sr===br&&(_r=!0,br.removeEventListener(Su,xr),Ps(yr))};br.addEventListener(Su,xr),setTimeout(()=>{_r||Ph(br)},wr)},Fh=(yr,br,mr,Er)=>{let wr=yr.indexOf(br);if(wr===-1)return yr[!mr&&Er?yr.length-1:0];let _r=yr.length;return wr+=mr?1:-1,Er&&(wr=(wr+_r)%_r),yr[Math.max(0,Math.min(wr,_r-1))]},Sx=/[^.]*(?=\..*)\.|.*/,Tx=/\..*/,Dx=/::\d+$/,Ou={},zh=1,Ox={mouseenter:"mouseover",mouseleave:"mouseout"},Ax=/^(mouseenter|mouseleave)/i,$h=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Uh(yr,br){return br&&`${br}::${zh++}`||yr.uidEvent||zh++}function Vh(yr){let br=Uh(yr);return yr.uidEvent=br,Ou[br]=Ou[br]||{},Ou[br]}function Cx(yr,br){return function mr(Er){return Er.delegateTarget=yr,mr.oneOff&&$r.off(yr,Er.type,br),br.apply(yr,[Er])}}function Lx(yr,br,mr){return function Er(wr){let _r=yr.querySelectorAll(br);for(let{target:xr}=wr;xr&&xr!==this;xr=xr.parentNode)for(let Sr=_r.length;Sr--;)if(_r[Sr]===xr)return wr.delegateTarget=xr,Er.oneOff&&$r.off(yr,wr.type,br,mr),mr.apply(xr,[wr]);return null}}function Wh(yr,br,mr=null){let Er=Object.keys(yr);for(let wr=0,_r=Er.length;wr<_r;wr++){let xr=yr[Er[wr]];if(xr.originalHandler===br&&xr.delegationSelector===mr)return xr}return null}function Gh(yr,br,mr){let Er=typeof br=="string",wr=Er?mr:br,_r=Kh(yr);return $h.has(_r)||(_r=yr),[Er,wr,_r]}function Yh(yr,br,mr,Er,wr){if(typeof br!="string"||!yr)return;if(mr||(mr=Er,Er=null),Ax.test(br)){let Lr=Rr=>function(Nr){if(!Nr.relatedTarget||Nr.relatedTarget!==Nr.delegateTarget&&!Nr.delegateTarget.contains(Nr.relatedTarget))return Rr.call(this,Nr)};Er?Er=Lr(Er):mr=Lr(mr)}let[_r,xr,Sr]=Gh(br,mr,Er),Tr=Vh(yr),Dr=Tr[Sr]||(Tr[Sr]={}),Or=Wh(Dr,xr,_r?mr:null);if(Or){Or.oneOff=Or.oneOff&≀return}let Cr=Uh(xr,br.replace(Sx,"")),Ar=_r?Lx(yr,mr,Er):Cx(yr,mr);Ar.delegationSelector=_r?mr:null,Ar.originalHandler=xr,Ar.oneOff=wr,Ar.uidEvent=Cr,Dr[Cr]=Ar,yr.addEventListener(Sr,Ar,_r)}function Au(yr,br,mr,Er,wr){let _r=Wh(br[mr],Er,wr);!_r||(yr.removeEventListener(mr,_r,Boolean(wr)),delete br[mr][_r.uidEvent])}function Mx(yr,br,mr,Er){let wr=br[mr]||{};Object.keys(wr).forEach(_r=>{if(_r.includes(Er)){let xr=wr[_r];Au(yr,br,mr,xr.originalHandler,xr.delegationSelector)}})}function Kh(yr){return yr=yr.replace(Tx,""),Ox[yr]||yr}var $r={on(yr,br,mr,Er){Yh(yr,br,mr,Er,!1)},one(yr,br,mr,Er){Yh(yr,br,mr,Er,!0)},off(yr,br,mr,Er){if(typeof br!="string"||!yr)return;let[wr,_r,xr]=Gh(br,mr,Er),Sr=xr!==br,Tr=Vh(yr),Dr=br.startsWith(".");if(typeof _r!="undefined"){if(!Tr||!Tr[xr])return;Au(yr,Tr,xr,_r,wr?mr:null);return}Dr&&Object.keys(Tr).forEach(Cr=>{Mx(yr,Tr,Cr,br.slice(1))});let Or=Tr[xr]||{};Object.keys(Or).forEach(Cr=>{let Ar=Cr.replace(Dx,"");if(!Sr||br.includes(Ar)){let Lr=Or[Cr];Au(yr,Tr,xr,Lr.originalHandler,Lr.delegationSelector)}})},trigger(yr,br,mr){if(typeof br!="string"||!yr)return null;let Er=Hh(),wr=Kh(br),_r=br!==wr,xr=$h.has(wr),Sr,Tr=!0,Dr=!0,Or=!1,Cr=null;return _r&&Er&&(Sr=Er.Event(br,mr),Er(yr).trigger(Sr),Tr=!Sr.isPropagationStopped(),Dr=!Sr.isImmediatePropagationStopped(),Or=Sr.isDefaultPrevented()),xr?(Cr=document.createEvent("HTMLEvents"),Cr.initEvent(wr,Tr,!0)):Cr=new CustomEvent(br,{bubbles:Tr,cancelable:!0}),typeof mr!="undefined"&&Object.keys(mr).forEach(Ar=>{Object.defineProperty(Cr,Ar,{get(){return mr[Ar]}})}),Or&&Cr.preventDefault(),Dr&&yr.dispatchEvent(Cr),Cr.defaultPrevented&&typeof Sr!="undefined"&&Sr.preventDefault(),Cr}},fs=new Map,js={set(yr,br,mr){fs.has(yr)||fs.set(yr,new Map);let Er=fs.get(yr);if(!Er.has(br)&&Er.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(Er.keys())[0]}.`);return}Er.set(br,mr)},get(yr,br){return fs.has(yr)&&fs.get(yr).get(br)||null},remove(yr,br){if(!fs.has(yr))return;let mr=fs.get(yr);mr.delete(br),mr.size===0&&fs.delete(yr)}},kx="5.0.2",_n=class{constructor(br){br=To(br),!!br&&(this._element=br,js.set(this._element,this.constructor.DATA_KEY,this))}dispose(){js.remove(this._element,this.constructor.DATA_KEY),$r.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(br=>{this[br]=null})}_queueCallback(br,mr,Er=!0){Bh(br,mr,Er)}static getInstance(br){return js.get(br,this.DATA_KEY)}static getOrCreateInstance(br,mr={}){return this.getInstance(br)||new this(br,typeof mr=="object"?mr:null)}static get VERSION(){return kx}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}},Rx="alert",Nx="bs.alert",Cu=`.${Nx}`,qx=".data-api",Ix='[data-bs-dismiss="alert"]',Px=`close${Cu}`,jx=`closed${Cu}`,Hx=`click${Cu}${qx}`,Bx="alert",Fx="fade",zx="show",Ao=class extends _n{static get NAME(){return Rx}close(br){let mr=br?this._getRootElement(br):this._element,Er=this._triggerCloseEvent(mr);Er===null||Er.defaultPrevented||this._removeElement(mr)}_getRootElement(br){return us(br)||br.closest(`.${Bx}`)}_triggerCloseEvent(br){return $r.trigger(br,Px)}_removeElement(br){br.classList.remove(zx);let mr=br.classList.contains(Fx);this._queueCallback(()=>this._destroyElement(br),br,mr)}_destroyElement(br){br.remove(),$r.trigger(br,jx)}static jQueryInterface(br){return this.each(function(){let mr=Ao.getOrCreateInstance(this);br==="close"&&mr[br](this)})}static handleDismiss(br){return function(mr){mr&&mr.preventDefault(),br.close(this)}}};$r.on(document,Hx,Ix,Ao.handleDismiss(new Ao));wn(Ao);var $x="button",Ux="bs.button",Vx=`.${Ux}`,Wx=".data-api",Gx="active",Xh='[data-bs-toggle="button"]',Yx=`click${Vx}${Wx}`,fa=class extends _n{static get NAME(){return $x}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(Gx))}static jQueryInterface(br){return this.each(function(){let mr=fa.getOrCreateInstance(this);br==="toggle"&&mr[br]()})}};$r.on(document,Yx,Xh,yr=>{yr.preventDefault();let br=yr.target.closest(Xh);fa.getOrCreateInstance(br).toggle()});wn(fa);function Jh(yr){return yr==="true"?!0:yr==="false"?!1:yr===Number(yr).toString()?Number(yr):yr===""||yr==="null"?null:yr}function Lu(yr){return yr.replace(/[A-Z]/g,br=>`-${br.toLowerCase()}`)}var Bi={setDataAttribute(yr,br,mr){yr.setAttribute(`data-bs-${Lu(br)}`,mr)},removeDataAttribute(yr,br){yr.removeAttribute(`data-bs-${Lu(br)}`)},getDataAttributes(yr){if(!yr)return{};let br={};return Object.keys(yr.dataset).filter(mr=>mr.startsWith("bs")).forEach(mr=>{let Er=mr.replace(/^bs/,"");Er=Er.charAt(0).toLowerCase()+Er.slice(1,Er.length),br[Er]=Jh(yr.dataset[mr])}),br},getDataAttribute(yr,br){return Jh(yr.getAttribute(`data-bs-${Lu(br)}`))},offset(yr){let br=yr.getBoundingClientRect();return{top:br.top+document.body.scrollTop,left:br.left+document.body.scrollLeft}},position(yr){return{top:yr.offsetTop,left:yr.offsetLeft}}},Qh="carousel",Kx="bs.carousel",dn=`.${Kx}`,Zh=".data-api",Xx="ArrowLeft",Jx="ArrowRight",Qx=500,Zx=40,ep={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},eS={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Hs="next",Bs="prev",Fs="left",ha="right",tS={[Xx]:ha,[Jx]:Fs},rS=`slide${dn}`,tp=`slid${dn}`,iS=`keydown${dn}`,nS=`mouseenter${dn}`,sS=`mouseleave${dn}`,oS=`touchstart${dn}`,aS=`touchmove${dn}`,lS=`touchend${dn}`,cS=`pointerdown${dn}`,uS=`pointerup${dn}`,dS=`dragstart${dn}`,fS=`load${dn}${Zh}`,hS=`click${dn}${Zh}`,pS="carousel",zs="active",mS="slide",gS="carousel-item-end",vS="carousel-item-start",bS="carousel-item-next",yS="carousel-item-prev",ES="pointer-event",wS=".active",wl=".active.carousel-item",_S=".carousel-item",xS=".carousel-item img",SS=".carousel-item-next, .carousel-item-prev",TS=".carousel-indicators",DS="[data-bs-target]",OS="[data-bs-slide], [data-bs-slide-to]",AS='[data-bs-ride="carousel"]',rp="touch",ip="pen",Pn=class extends _n{constructor(br,mr){super(br);this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(mr),this._indicatorsElement=ai.findOne(TS,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return ep}static get NAME(){return Qh}next(){this._slide(Hs)}nextWhenVisible(){!document.hidden&&yl(this._element)&&this.next()}prev(){this._slide(Bs)}pause(br){br||(this._isPaused=!0),ai.findOne(SS,this._element)&&(Ph(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(br){br||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(br){this._activeElement=ai.findOne(wl,this._element);let mr=this._getItemIndex(this._activeElement);if(br>this._items.length-1||br<0)return;if(this._isSliding){$r.one(this._element,tp,()=>this.to(br));return}if(mr===br){this.pause(),this.cycle();return}let Er=br>mr?Hs:Bs;this._slide(Er,this._items[br])}_getConfig(br){return br=ci(ci(ci({},ep),Bi.getDataAttributes(this._element)),typeof br=="object"?br:{}),Xn(Qh,br,eS),br}_handleSwipe(){let br=Math.abs(this.touchDeltaX);if(br<=Zx)return;let mr=br/this.touchDeltaX;this.touchDeltaX=0,!!mr&&this._slide(mr>0?ha:Fs)}_addEventListeners(){this._config.keyboard&&$r.on(this._element,iS,br=>this._keydown(br)),this._config.pause==="hover"&&($r.on(this._element,nS,br=>this.pause(br)),$r.on(this._element,sS,br=>this.cycle(br))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){let br=wr=>{this._pointerEvent&&(wr.pointerType===ip||wr.pointerType===rp)?this.touchStartX=wr.clientX:this._pointerEvent||(this.touchStartX=wr.touches[0].clientX)},mr=wr=>{this.touchDeltaX=wr.touches&&wr.touches.length>1?0:wr.touches[0].clientX-this.touchStartX},Er=wr=>{this._pointerEvent&&(wr.pointerType===ip||wr.pointerType===rp)&&(this.touchDeltaX=wr.clientX-this.touchStartX),this._handleSwipe(),this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(_r=>this.cycle(_r),Qx+this._config.interval))};ai.find(xS,this._element).forEach(wr=>{$r.on(wr,dS,_r=>_r.preventDefault())}),this._pointerEvent?($r.on(this._element,cS,wr=>br(wr)),$r.on(this._element,uS,wr=>Er(wr)),this._element.classList.add(ES)):($r.on(this._element,oS,wr=>br(wr)),$r.on(this._element,aS,wr=>mr(wr)),$r.on(this._element,lS,wr=>Er(wr)))}_keydown(br){if(/input|textarea/i.test(br.target.tagName))return;let mr=tS[br.key];mr&&(br.preventDefault(),this._slide(mr))}_getItemIndex(br){return this._items=br&&br.parentNode?ai.find(_S,br.parentNode):[],this._items.indexOf(br)}_getItemByOrder(br,mr){let Er=br===Hs;return Fh(this._items,mr,Er,this._config.wrap)}_triggerSlideEvent(br,mr){let Er=this._getItemIndex(br),wr=this._getItemIndex(ai.findOne(wl,this._element));return $r.trigger(this._element,rS,{relatedTarget:br,direction:mr,from:wr,to:Er})}_setActiveIndicatorElement(br){if(this._indicatorsElement){let mr=ai.findOne(wS,this._indicatorsElement);mr.classList.remove(zs),mr.removeAttribute("aria-current");let Er=ai.find(DS,this._indicatorsElement);for(let wr=0;wr{$r.trigger(this._element,tp,{relatedTarget:xr,direction:Ar,from:_r,to:Sr})};if(this._element.classList.contains(mS)){xr.classList.add(Cr),Oo(xr),wr.classList.add(Or),xr.classList.add(Or);let Nr=()=>{xr.classList.remove(Or,Cr),xr.classList.add(zs),wr.classList.remove(zs,Cr,Or),this._isSliding=!1,setTimeout(Rr,0)};this._queueCallback(Nr,wr,!0)}else wr.classList.remove(zs),xr.classList.add(zs),this._isSliding=!1,Rr();Tr&&this.cycle()}_directionToOrder(br){return[ha,Fs].includes(br)?nn()?br===Fs?Bs:Hs:br===Fs?Hs:Bs:br}_orderToDirection(br){return[Hs,Bs].includes(br)?nn()?br===Bs?Fs:ha:br===Bs?ha:Fs:br}static carouselInterface(br,mr){let Er=Pn.getOrCreateInstance(br,mr),{_config:wr}=Er;typeof mr=="object"&&(wr=ci(ci({},wr),mr));let _r=typeof mr=="string"?mr:wr.slide;if(typeof mr=="number")Er.to(mr);else if(typeof _r=="string"){if(typeof Er[_r]=="undefined")throw new TypeError(`No method named "${_r}"`);Er[_r]()}else wr.interval&&wr.ride&&(Er.pause(),Er.cycle())}static jQueryInterface(br){return this.each(function(){Pn.carouselInterface(this,br)})}static dataApiClickHandler(br){let mr=us(this);if(!mr||!mr.classList.contains(pS))return;let Er=ci(ci({},Bi.getDataAttributes(mr)),Bi.getDataAttributes(this)),wr=this.getAttribute("data-bs-slide-to");wr&&(Er.interval=!1),Pn.carouselInterface(mr,Er),wr&&Pn.getInstance(mr).to(wr),br.preventDefault()}};$r.on(document,hS,OS,Pn.dataApiClickHandler);$r.on(window,fS,()=>{let yr=ai.find(AS);for(let br=0,mr=yr.length;brDr===this._element);Sr!==null&&Tr.length&&(this._selector=Sr,this._triggerArray.push(xr))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return Mu}static get NAME(){return np}toggle(){this._element.classList.contains($s)?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains($s))return;let br,mr;this._parent&&(br=ai.find(PS,this._parent).filter(Dr=>typeof this._config.parent=="string"?Dr.getAttribute("data-bs-parent")===this._config.parent:Dr.classList.contains(ma)),br.length===0&&(br=null));let Er=ai.findOne(this._selector);if(br){let Dr=br.find(Or=>Er!==Or);if(mr=Dr?sn.getInstance(Dr):null,mr&&mr._isTransitioning)return}if($r.trigger(this._element,MS).defaultPrevented)return;br&&br.forEach(Dr=>{Er!==Dr&&sn.collapseInterface(Dr,"hide"),mr||js.set(Dr,sp,null)});let _r=this._getDimension();this._element.classList.remove(ma),this._element.classList.add(_l),this._element.style[_r]=0,this._triggerArray.length&&this._triggerArray.forEach(Dr=>{Dr.classList.remove(xl),Dr.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);let xr=()=>{this._element.classList.remove(_l),this._element.classList.add(ma,$s),this._element.style[_r]="",this.setTransitioning(!1),$r.trigger(this._element,kS)},Tr=`scroll${_r[0].toUpperCase()+_r.slice(1)}`;this._queueCallback(xr,this._element,!0),this._element.style[_r]=`${this._element[Tr]}px`}hide(){if(this._isTransitioning||!this._element.classList.contains($s)||$r.trigger(this._element,RS).defaultPrevented)return;let mr=this._getDimension();this._element.style[mr]=`${this._element.getBoundingClientRect()[mr]}px`,Oo(this._element),this._element.classList.add(_l),this._element.classList.remove(ma,$s);let Er=this._triggerArray.length;if(Er>0)for(let _r=0;_r{this.setTransitioning(!1),this._element.classList.remove(_l),this._element.classList.add(ma),$r.trigger(this._element,NS)};this._element.style[mr]="",this._queueCallback(wr,this._element,!0)}setTransitioning(br){this._isTransitioning=br}_getConfig(br){return br=ci(ci({},Mu),br),br.toggle=Boolean(br.toggle),Xn(np,br,LS),br}_getDimension(){return this._element.classList.contains(op)?op:IS}_getParent(){let{parent:br}=this._config;br=To(br);let mr=`${ga}[data-bs-parent="${br}"]`;return ai.find(mr,br).forEach(Er=>{let wr=us(Er);this._addAriaAndCollapsedClass(wr,[Er])}),br}_addAriaAndCollapsedClass(br,mr){if(!br||!mr.length)return;let Er=br.classList.contains($s);mr.forEach(wr=>{Er?wr.classList.remove(xl):wr.classList.add(xl),wr.setAttribute("aria-expanded",Er)})}static collapseInterface(br,mr){let Er=sn.getInstance(br),wr=ci(ci(ci({},Mu),Bi.getDataAttributes(br)),typeof mr=="object"&&mr?mr:{});if(!Er&&wr.toggle&&typeof mr=="string"&&/show|hide/.test(mr)&&(wr.toggle=!1),Er||(Er=new sn(br,wr)),typeof mr=="string"){if(typeof Er[mr]=="undefined")throw new TypeError(`No method named "${mr}"`);Er[mr]()}}static jQueryInterface(br){return this.each(function(){sn.collapseInterface(this,br)})}};$r.on(document,qS,ga,function(yr){(yr.target.tagName==="A"||yr.delegateTarget&&yr.delegateTarget.tagName==="A")&&yr.preventDefault();let br=Bi.getDataAttributes(this),mr=Tu(this);ai.find(mr).forEach(wr=>{let _r=sn.getInstance(wr),xr;_r?(_r._parent===null&&typeof br.parent=="string"&&(_r._config.parent=br.parent,_r._parent=_r._getParent()),xr="toggle"):xr=br,sn.collapseInterface(wr,xr)})});wn(sn);var ku="dropdown",jS="bs.dropdown",hs=`.${jS}`,Ru=".data-api",Sl="Escape",ap="Space",lp="Tab",Nu="ArrowUp",Tl="ArrowDown",HS=2,BS=new RegExp(`${Nu}|${Tl}|${Sl}`),FS=`hide${hs}`,zS=`hidden${hs}`,$S=`show${hs}`,US=`shown${hs}`,VS=`click${hs}`,cp=`click${hs}${Ru}`,up=`keydown${hs}${Ru}`,WS=`keyup${hs}${Ru}`,Jn="show",GS="dropup",YS="dropend",KS="dropstart",XS="navbar",va='[data-bs-toggle="dropdown"]',qu=".dropdown-menu",JS=".navbar-nav",QS=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",ZS=nn()?"top-end":"top-start",eT=nn()?"top-start":"top-end",tT=nn()?"bottom-end":"bottom-start",rT=nn()?"bottom-start":"bottom-end",iT=nn()?"left-start":"right-start",nT=nn()?"right-start":"left-start",sT={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},oT={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"},rn=class extends _n{constructor(br,mr){super(br);this._popper=null,this._config=this._getConfig(mr),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return sT}static get DefaultType(){return oT}static get NAME(){return ku}toggle(){if(Do(this._element))return;if(this._element.classList.contains(Jn)){this.hide();return}this.show()}show(){if(Do(this._element)||this._menu.classList.contains(Jn))return;let br=rn.getParentFromElement(this._element),mr={relatedTarget:this._element};if(!$r.trigger(this._element,$S,mr).defaultPrevented){if(this._inNavbar)Bi.setDataAttribute(this._menu,"popper","none");else{if(typeof bl=="undefined")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let wr=this._element;this._config.reference==="parent"?wr=br:ds(this._config.reference)?wr=To(this._config.reference):typeof this._config.reference=="object"&&(wr=this._config.reference);let _r=this._getPopperConfig(),xr=_r.modifiers.find(Sr=>Sr.name==="applyStyles"&&Sr.enabled===!1);this._popper=vl(wr,this._menu,_r),xr&&Bi.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!br.closest(JS)&&[].concat(...document.body.children).forEach(wr=>$r.on(wr,"mouseover",El)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle(Jn),this._element.classList.toggle(Jn),$r.trigger(this._element,US,mr)}}hide(){if(Do(this._element)||!this._menu.classList.contains(Jn))return;let br={relatedTarget:this._element};this._completeHide(br)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){$r.on(this._element,VS,br=>{br.preventDefault(),this.toggle()})}_completeHide(br){$r.trigger(this._element,FS,br).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(Er=>$r.off(Er,"mouseover",El)),this._popper&&this._popper.destroy(),this._menu.classList.remove(Jn),this._element.classList.remove(Jn),this._element.setAttribute("aria-expanded","false"),Bi.removeDataAttribute(this._menu,"popper"),$r.trigger(this._element,zS,br))}_getConfig(br){if(br=ci(ci(ci({},this.constructor.Default),Bi.getDataAttributes(this._element)),br),Xn(ku,br,this.constructor.DefaultType),typeof br.reference=="object"&&!ds(br.reference)&&typeof br.reference.getBoundingClientRect!="function")throw new TypeError(`${ku.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return br}_getMenuElement(){return ai.next(this._element,qu)[0]}_getPlacement(){let br=this._element.parentNode;if(br.classList.contains(YS))return iT;if(br.classList.contains(KS))return nT;let mr=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return br.classList.contains(GS)?mr?eT:ZS:mr?rT:tT}_detectNavbar(){return this._element.closest(`.${XS}`)!==null}_getOffset(){let{offset:br}=this._config;return typeof br=="string"?br.split(",").map(mr=>Number.parseInt(mr,10)):typeof br=="function"?mr=>br(mr,this._element):br}_getPopperConfig(){let br={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return this._config.display==="static"&&(br.modifiers=[{name:"applyStyles",enabled:!1}]),ci(ci({},br),typeof this._config.popperConfig=="function"?this._config.popperConfig(br):this._config.popperConfig)}_selectMenuItem({key:br,target:mr}){let Er=ai.find(QS,this._menu).filter(yl);!Er.length||Fh(Er,mr,br===Tl,!Er.includes(mr)).focus()}static dropdownInterface(br,mr){let Er=rn.getOrCreateInstance(br,mr);if(typeof mr=="string"){if(typeof Er[mr]=="undefined")throw new TypeError(`No method named "${mr}"`);Er[mr]()}}static jQueryInterface(br){return this.each(function(){rn.dropdownInterface(this,br)})}static clearMenus(br){if(br&&(br.button===HS||br.type==="keyup"&&br.key!==lp))return;let mr=ai.find(va);for(let Er=0,wr=mr.length;Erthis.matches(va)?this:ai.prev(this,va)[0];if(br.key===Sl){Er().focus(),rn.clearMenus();return}if(br.key===Nu||br.key===Tl){mr||Er().click(),rn.getInstance(Er())._selectMenuItem(br);return}(!mr||br.key===ap)&&rn.clearMenus()}};$r.on(document,up,va,rn.dataApiKeydownHandler);$r.on(document,up,qu,rn.dataApiKeydownHandler);$r.on(document,cp,rn.clearMenus);$r.on(document,WS,rn.clearMenus);$r.on(document,cp,va,function(yr){yr.preventDefault(),rn.dropdownInterface(this)});wn(rn);var dp=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",fp=".sticky-top",Dl=class{constructor(){this._element=document.body}getWidth(){let br=document.documentElement.clientWidth;return Math.abs(window.innerWidth-br)}hide(){let br=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",mr=>mr+br),this._setElementAttributes(dp,"paddingRight",mr=>mr+br),this._setElementAttributes(fp,"marginRight",mr=>mr-br)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(br,mr,Er){let wr=this.getWidth(),_r=xr=>{if(xr!==this._element&&window.innerWidth>xr.clientWidth+wr)return;this._saveInitialAttribute(xr,mr);let Sr=window.getComputedStyle(xr)[mr];xr.style[mr]=`${Er(Number.parseFloat(Sr))}px`};this._applyManipulationCallback(br,_r)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(dp,"paddingRight"),this._resetElementAttributes(fp,"marginRight")}_saveInitialAttribute(br,mr){let Er=br.style[mr];Er&&Bi.setDataAttribute(br,mr,Er)}_resetElementAttributes(br,mr){let Er=wr=>{let _r=Bi.getDataAttribute(wr,mr);typeof _r=="undefined"?wr.style.removeProperty(mr):(Bi.removeDataAttribute(wr,mr),wr.style[mr]=_r)};this._applyManipulationCallback(br,Er)}_applyManipulationCallback(br,mr){ds(br)?mr(br):ai.find(br,this._element).forEach(mr)}isOverflowing(){return this.getWidth()>0}},aT={isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},lT={isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},hp="backdrop",cT="modal-backdrop",uT="fade",pp="show",mp=`mousedown.bs.${hp}`,Iu=class{constructor(br){this._config=this._getConfig(br),this._isAppended=!1,this._element=null}show(br){if(!this._config.isVisible){Ps(br);return}this._append(),this._config.isAnimated&&Oo(this._getElement()),this._getElement().classList.add(pp),this._emulateAnimation(()=>{Ps(br)})}hide(br){if(!this._config.isVisible){Ps(br);return}this._getElement().classList.remove(pp),this._emulateAnimation(()=>{this.dispose(),Ps(br)})}_getElement(){if(!this._element){let br=document.createElement("div");br.className=cT,this._config.isAnimated&&br.classList.add(uT),this._element=br}return this._element}_getConfig(br){return br=ci(ci({},aT),typeof br=="object"?br:{}),br.rootElement=To(br.rootElement),Xn(hp,br,lT),br}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),$r.on(this._getElement(),mp,()=>{Ps(this._config.clickCallback)}),this._isAppended=!0)}dispose(){!this._isAppended||($r.off(this._element,mp),this._element.remove(),this._isAppended=!1)}_emulateAnimation(br){Bh(br,this._getElement(),this._config.isAnimated)}},gp="modal",dT="bs.modal",fn=`.${dT}`,fT=".data-api",vp="Escape",bp={backdrop:!0,keyboard:!0,focus:!0},hT={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},pT=`hide${fn}`,mT=`hidePrevented${fn}`,yp=`hidden${fn}`,Ep=`show${fn}`,gT=`shown${fn}`,Ol=`focusin${fn}`,wp=`resize${fn}`,Pu=`click.dismiss${fn}`,_p=`keydown.dismiss${fn}`,vT=`mouseup.dismiss${fn}`,xp=`mousedown.dismiss${fn}`,bT=`click${fn}${fT}`,Sp="modal-open",yT="fade",Tp="show",ju="modal-static",ET=".modal-dialog",wT=".modal-body",_T='[data-bs-toggle="modal"]',xT='[data-bs-dismiss="modal"]',ps=class extends _n{constructor(br,mr){super(br);this._config=this._getConfig(mr),this._dialog=ai.findOne(ET,this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new Dl}static get Default(){return bp}static get NAME(){return gp}toggle(br){return this._isShown?this.hide():this.show(br)}show(br){this._isShown||this._isTransitioning||$r.trigger(this._element,Ep,{relatedTarget:br}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(Sp),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),$r.on(this._element,Pu,xT,Er=>this.hide(Er)),$r.on(this._dialog,xp,()=>{$r.one(this._element,vT,Er=>{Er.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(br)))}hide(br){if(br&&["A","AREA"].includes(br.target.tagName)&&br.preventDefault(),!this._isShown||this._isTransitioning||$r.trigger(this._element,pT).defaultPrevented)return;this._isShown=!1;let Er=this._isAnimated();Er&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),$r.off(document,Ol),this._element.classList.remove(Tp),$r.off(this._element,Pu),$r.off(this._dialog,xp),this._queueCallback(()=>this._hideModal(),this._element,Er)}dispose(){[window,this._dialog].forEach(br=>$r.off(br,fn)),this._backdrop.dispose(),super.dispose(),$r.off(document,Ol)}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Iu({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(br){return br=ci(ci(ci({},bp),Bi.getDataAttributes(this._element)),typeof br=="object"?br:{}),Xn(gp,br,hT),br}_showElement(br){let mr=this._isAnimated(),Er=ai.findOne(wT,this._dialog);(!this._element.parentNode||this._element.parentNode.nodeType!==Node.ELEMENT_NODE)&&document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,Er&&(Er.scrollTop=0),mr&&Oo(this._element),this._element.classList.add(Tp),this._config.focus&&this._enforceFocus();let wr=()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,$r.trigger(this._element,gT,{relatedTarget:br})};this._queueCallback(wr,this._dialog,mr)}_enforceFocus(){$r.off(document,Ol),$r.on(document,Ol,br=>{document!==br.target&&this._element!==br.target&&!this._element.contains(br.target)&&this._element.focus()})}_setEscapeEvent(){this._isShown?$r.on(this._element,_p,br=>{this._config.keyboard&&br.key===vp?(br.preventDefault(),this.hide()):!this._config.keyboard&&br.key===vp&&this._triggerBackdropTransition()}):$r.off(this._element,_p)}_setResizeEvent(){this._isShown?$r.on(window,wp,()=>this._adjustDialog()):$r.off(window,wp)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Sp),this._resetAdjustments(),this._scrollBar.reset(),$r.trigger(this._element,yp)})}_showBackdrop(br){$r.on(this._element,Pu,mr=>{if(this._ignoreBackdropClick){this._ignoreBackdropClick=!1;return}mr.target===mr.currentTarget&&(this._config.backdrop===!0?this.hide():this._config.backdrop==="static"&&this._triggerBackdropTransition())}),this._backdrop.show(br)}_isAnimated(){return this._element.classList.contains(yT)}_triggerBackdropTransition(){if($r.trigger(this._element,mT).defaultPrevented)return;let{classList:mr,scrollHeight:Er,style:wr}=this._element,_r=Er>document.documentElement.clientHeight;!_r&&wr.overflowY==="hidden"||mr.contains(ju)||(_r||(wr.overflowY="hidden"),mr.add(ju),this._queueCallback(()=>{mr.remove(ju),_r||this._queueCallback(()=>{wr.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){let br=this._element.scrollHeight>document.documentElement.clientHeight,mr=this._scrollBar.getWidth(),Er=mr>0;(!Er&&br&&!nn()||Er&&!br&&nn())&&(this._element.style.paddingLeft=`${mr}px`),(Er&&!br&&!nn()||!Er&&br&&nn())&&(this._element.style.paddingRight=`${mr}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(br,mr){return this.each(function(){let Er=ps.getOrCreateInstance(this,br);if(typeof br=="string"){if(typeof Er[br]=="undefined")throw new TypeError(`No method named "${br}"`);Er[br](mr)}})}};$r.on(document,bT,_T,function(yr){let br=us(this);["A","AREA"].includes(this.tagName)&&yr.preventDefault(),$r.one(br,Ep,Er=>{Er.defaultPrevented||$r.one(br,yp,()=>{yl(this)&&this.focus()})}),ps.getOrCreateInstance(br).toggle(this)});wn(ps);var Dp="offcanvas",ST="bs.offcanvas",Qn=`.${ST}`,Op=".data-api",TT=`load${Qn}${Op}`,DT="Escape",Ap={backdrop:!0,keyboard:!0,scroll:!1},OT={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},Cp="show",Lp=".offcanvas.show",AT=`show${Qn}`,CT=`shown${Qn}`,LT=`hide${Qn}`,Mp=`hidden${Qn}`,Al=`focusin${Qn}`,MT=`click${Qn}${Op}`,kT=`click.dismiss${Qn}`,RT=`keydown.dismiss${Qn}`,NT='[data-bs-dismiss="offcanvas"]',qT='[data-bs-toggle="offcanvas"]',Us=class extends _n{constructor(br,mr){super(br);this._config=this._getConfig(mr),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return Dp}static get Default(){return Ap}toggle(br){return this._isShown?this.hide():this.show(br)}show(br){if(this._isShown||$r.trigger(this._element,AT,{relatedTarget:br}).defaultPrevented)return;this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new Dl().hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Cp);let Er=()=>{$r.trigger(this._element,CT,{relatedTarget:br})};this._queueCallback(Er,this._element,!0)}hide(){if(!this._isShown||$r.trigger(this._element,LT).defaultPrevented)return;$r.off(document,Al),this._element.blur(),this._isShown=!1,this._element.classList.remove(Cp),this._backdrop.hide();let mr=()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||new Dl().reset(),$r.trigger(this._element,Mp)};this._queueCallback(mr,this._element,!0)}dispose(){this._backdrop.dispose(),super.dispose(),$r.off(document,Al)}_getConfig(br){return br=ci(ci(ci({},Ap),Bi.getDataAttributes(this._element)),typeof br=="object"?br:{}),Xn(Dp,br,OT),br}_initializeBackDrop(){return new Iu({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(br){$r.off(document,Al),$r.on(document,Al,mr=>{document!==mr.target&&br!==mr.target&&!br.contains(mr.target)&&br.focus()}),br.focus()}_addEventListeners(){$r.on(this._element,kT,NT,()=>this.hide()),$r.on(this._element,RT,br=>{this._config.keyboard&&br.key===DT&&this.hide()})}static jQueryInterface(br){return this.each(function(){let mr=Us.getOrCreateInstance(this,br);if(typeof br=="string"){if(mr[br]===void 0||br.startsWith("_")||br==="constructor")throw new TypeError(`No method named "${br}"`);mr[br](this)}})}};$r.on(document,MT,qT,function(yr){let br=us(this);if(["A","AREA"].includes(this.tagName)&&yr.preventDefault(),Do(this))return;$r.one(br,Mp,()=>{yl(this)&&this.focus()});let mr=ai.findOne(Lp);mr&&mr!==br&&Us.getInstance(mr).hide(),Us.getOrCreateInstance(br).toggle(this)});$r.on(window,TT,()=>ai.find(Lp).forEach(yr=>Us.getOrCreateInstance(yr).show()));wn(Us);var IT=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),PT=/^aria-[\w-]*$/i,jT=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,HT=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,BT=(yr,br)=>{let mr=yr.nodeName.toLowerCase();if(br.includes(mr))return IT.has(mr)?Boolean(jT.test(yr.nodeValue)||HT.test(yr.nodeValue)):!0;let Er=br.filter(wr=>wr instanceof RegExp);for(let wr=0,_r=Er.length;wr<_r;wr++)if(Er[wr].test(mr))return!0;return!1},FT={"*":["class","dir","id","lang","role",PT],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]};function kp(yr,br,mr){if(!yr.length)return yr;if(mr&&typeof mr=="function")return mr(yr);let wr=new window.DOMParser().parseFromString(yr,"text/html"),_r=Object.keys(br),xr=[].concat(...wr.body.querySelectorAll("*"));for(let Sr=0,Tr=xr.length;Sr{BT(Lr,Ar)||Dr.removeAttribute(Lr.nodeName)})}return wr.body.innerHTML}var Rp="tooltip",zT="bs.tooltip",jn=`.${zT}`,Np="bs-tooltip",$T=new RegExp(`(^|\\s)${Np}\\S+`,"g"),UT=new Set(["sanitize","allowList","sanitizeFn"]),VT={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},WT={AUTO:"auto",TOP:"top",RIGHT:nn()?"left":"right",BOTTOM:"bottom",LEFT:nn()?"right":"left"},GT={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:FT,popperConfig:null},YT={HIDE:`hide${jn}`,HIDDEN:`hidden${jn}`,SHOW:`show${jn}`,SHOWN:`shown${jn}`,INSERTED:`inserted${jn}`,CLICK:`click${jn}`,FOCUSIN:`focusin${jn}`,FOCUSOUT:`focusout${jn}`,MOUSEENTER:`mouseenter${jn}`,MOUSELEAVE:`mouseleave${jn}`},Cl="fade",qp="modal",ba="show",ya="show",Hu="out",KT=".tooltip-inner",Ea="hover",Bu="focus",XT="click",JT="manual",Hn=class extends _n{constructor(br,mr){if(typeof bl=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(br);this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(mr),this.tip=null,this._setListeners()}static get Default(){return GT}static get NAME(){return Rp}static get Event(){return YT}static get DefaultType(){return VT}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(br){if(!!this._isEnabled)if(br){let mr=this._initializeOnDelegatedTarget(br);mr._activeTrigger.click=!mr._activeTrigger.click,mr._isWithActiveTrigger()?mr._enter(null,mr):mr._leave(null,mr)}else{if(this.getTipElement().classList.contains(ba)){this._leave(null,this);return}this._enter(null,this)}}dispose(){clearTimeout(this._timeout),$r.off(this._element.closest(`.${qp}`),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this.isWithContent()&&this._isEnabled))return;let br=$r.trigger(this._element,this.constructor.Event.SHOW),mr=jh(this._element),Er=mr===null?this._element.ownerDocument.documentElement.contains(this._element):mr.contains(this._element);if(br.defaultPrevented||!Er)return;let wr=this.getTipElement(),_r=qh(this.constructor.NAME);wr.setAttribute("id",_r),this._element.setAttribute("aria-describedby",_r),this.setContent(),this._config.animation&&wr.classList.add(Cl);let xr=typeof this._config.placement=="function"?this._config.placement.call(this,wr,this._element):this._config.placement,Sr=this._getAttachment(xr);this._addAttachmentClass(Sr);let{container:Tr}=this._config;js.set(wr,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(Tr.appendChild(wr),$r.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=vl(this._element,wr,this._getPopperConfig(Sr)),wr.classList.add(ba);let Dr=typeof this._config.customClass=="function"?this._config.customClass():this._config.customClass;Dr&&wr.classList.add(...Dr.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(Ar=>{$r.on(Ar,"mouseover",El)});let Or=()=>{let Ar=this._hoverState;this._hoverState=null,$r.trigger(this._element,this.constructor.Event.SHOWN),Ar===Hu&&this._leave(null,this)},Cr=this.tip.classList.contains(Cl);this._queueCallback(Or,this.tip,Cr)}hide(){if(!this._popper)return;let br=this.getTipElement(),mr=()=>{this._isWithActiveTrigger()||(this._hoverState!==ya&&br.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),$r.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))};if($r.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;br.classList.remove(ba),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(_r=>$r.off(_r,"mouseover",El)),this._activeTrigger[XT]=!1,this._activeTrigger[Bu]=!1,this._activeTrigger[Ea]=!1;let wr=this.tip.classList.contains(Cl);this._queueCallback(mr,this.tip,wr),this._hoverState=""}update(){this._popper!==null&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;let br=document.createElement("div");return br.innerHTML=this._config.template,this.tip=br.children[0],this.tip}setContent(){let br=this.getTipElement();this.setElementContent(ai.findOne(KT,br),this.getTitle()),br.classList.remove(Cl,ba)}setElementContent(br,mr){if(br!==null){if(ds(mr)){mr=To(mr),this._config.html?mr.parentNode!==br&&(br.innerHTML="",br.appendChild(mr)):br.textContent=mr.textContent;return}this._config.html?(this._config.sanitize&&(mr=kp(mr,this._config.allowList,this._config.sanitizeFn)),br.innerHTML=mr):br.textContent=mr}}getTitle(){let br=this._element.getAttribute("data-bs-original-title");return br||(br=typeof this._config.title=="function"?this._config.title.call(this._element):this._config.title),br}updateAttachment(br){return br==="right"?"end":br==="left"?"start":br}_initializeOnDelegatedTarget(br,mr){let Er=this.constructor.DATA_KEY;return mr=mr||js.get(br.delegateTarget,Er),mr||(mr=new this.constructor(br.delegateTarget,this._getDelegateConfig()),js.set(br.delegateTarget,Er,mr)),mr}_getOffset(){let{offset:br}=this._config;return typeof br=="string"?br.split(",").map(mr=>Number.parseInt(mr,10)):typeof br=="function"?mr=>br(mr,this._element):br}_getPopperConfig(br){let mr={placement:br,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:Er=>this._handlePopperPlacementChange(Er)}],onFirstUpdate:Er=>{Er.options.placement!==Er.placement&&this._handlePopperPlacementChange(Er)}};return ci(ci({},mr),typeof this._config.popperConfig=="function"?this._config.popperConfig(mr):this._config.popperConfig)}_addAttachmentClass(br){this.getTipElement().classList.add(`${Np}-${this.updateAttachment(br)}`)}_getAttachment(br){return WT[br.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(mr=>{if(mr==="click")$r.on(this._element,this.constructor.Event.CLICK,this._config.selector,Er=>this.toggle(Er));else if(mr!==JT){let Er=mr===Ea?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,wr=mr===Ea?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;$r.on(this._element,Er,this._config.selector,_r=>this._enter(_r)),$r.on(this._element,wr,this._config.selector,_r=>this._leave(_r))}}),this._hideModalHandler=()=>{this._element&&this.hide()},$r.on(this._element.closest(`.${qp}`),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config=al(ci({},this._config),{trigger:"manual",selector:""}):this._fixTitle()}_fixTitle(){let br=this._element.getAttribute("title"),mr=typeof this._element.getAttribute("data-bs-original-title");(br||mr!=="string")&&(this._element.setAttribute("data-bs-original-title",br||""),br&&!this._element.getAttribute("aria-label")&&!this._element.textContent&&this._element.setAttribute("aria-label",br),this._element.setAttribute("title",""))}_enter(br,mr){if(mr=this._initializeOnDelegatedTarget(br,mr),br&&(mr._activeTrigger[br.type==="focusin"?Bu:Ea]=!0),mr.getTipElement().classList.contains(ba)||mr._hoverState===ya){mr._hoverState=ya;return}if(clearTimeout(mr._timeout),mr._hoverState=ya,!mr._config.delay||!mr._config.delay.show){mr.show();return}mr._timeout=setTimeout(()=>{mr._hoverState===ya&&mr.show()},mr._config.delay.show)}_leave(br,mr){if(mr=this._initializeOnDelegatedTarget(br,mr),br&&(mr._activeTrigger[br.type==="focusout"?Bu:Ea]=mr._element.contains(br.relatedTarget)),!mr._isWithActiveTrigger()){if(clearTimeout(mr._timeout),mr._hoverState=Hu,!mr._config.delay||!mr._config.delay.hide){mr.hide();return}mr._timeout=setTimeout(()=>{mr._hoverState===Hu&&mr.hide()},mr._config.delay.hide)}}_isWithActiveTrigger(){for(let br in this._activeTrigger)if(this._activeTrigger[br])return!0;return!1}_getConfig(br){let mr=Bi.getDataAttributes(this._element);return Object.keys(mr).forEach(Er=>{UT.has(Er)&&delete mr[Er]}),br=ci(ci(ci({},this.constructor.Default),mr),typeof br=="object"&&br?br:{}),br.container=br.container===!1?document.body:To(br.container),typeof br.delay=="number"&&(br.delay={show:br.delay,hide:br.delay}),typeof br.title=="number"&&(br.title=br.title.toString()),typeof br.content=="number"&&(br.content=br.content.toString()),Xn(Rp,br,this.constructor.DefaultType),br.sanitize&&(br.template=kp(br.template,br.allowList,br.sanitizeFn)),br}_getDelegateConfig(){let br={};if(this._config)for(let mr in this._config)this.constructor.Default[mr]!==this._config[mr]&&(br[mr]=this._config[mr]);return br}_cleanTipClass(){let br=this.getTipElement(),mr=br.getAttribute("class").match($T);mr!==null&&mr.length>0&&mr.map(Er=>Er.trim()).forEach(Er=>br.classList.remove(Er))}_handlePopperPlacementChange(br){let{state:mr}=br;!mr||(this.tip=mr.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(mr.placement)))}static jQueryInterface(br){return this.each(function(){let mr=Hn.getOrCreateInstance(this,br);if(typeof br=="string"){if(typeof mr[br]=="undefined")throw new TypeError(`No method named "${br}"`);mr[br]()}})}};wn(Hn);var QT="popover",ZT="bs.popover",Bn=`.${ZT}`,Ip="bs-popover",eD=new RegExp(`(^|\\s)${Ip}\\S+`,"g"),tD=al(ci({},Hn.Default),{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),rD=al(ci({},Hn.DefaultType),{content:"(string|element|function)"}),iD={HIDE:`hide${Bn}`,HIDDEN:`hidden${Bn}`,SHOW:`show${Bn}`,SHOWN:`shown${Bn}`,INSERTED:`inserted${Bn}`,CLICK:`click${Bn}`,FOCUSIN:`focusin${Bn}`,FOCUSOUT:`focusout${Bn}`,MOUSEENTER:`mouseenter${Bn}`,MOUSELEAVE:`mouseleave${Bn}`},nD="fade",sD="show",Pp=".popover-header",jp=".popover-body",Vs=class extends Hn{static get Default(){return tD}static get NAME(){return QT}static get Event(){return iD}static get DefaultType(){return rD}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip?this.tip:(this.tip=super.getTipElement(),this.getTitle()||ai.findOne(Pp,this.tip).remove(),this._getContent()||ai.findOne(jp,this.tip).remove(),this.tip)}setContent(){let br=this.getTipElement();this.setElementContent(ai.findOne(Pp,br),this.getTitle());let mr=this._getContent();typeof mr=="function"&&(mr=mr.call(this._element)),this.setElementContent(ai.findOne(jp,br),mr),br.classList.remove(nD,sD)}_addAttachmentClass(br){this.getTipElement().classList.add(`${Ip}-${this.updateAttachment(br)}`)}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){let br=this.getTipElement(),mr=br.getAttribute("class").match(eD);mr!==null&&mr.length>0&&mr.map(Er=>Er.trim()).forEach(Er=>br.classList.remove(Er))}static jQueryInterface(br){return this.each(function(){let mr=Vs.getOrCreateInstance(this,br);if(typeof br=="string"){if(typeof mr[br]=="undefined")throw new TypeError(`No method named "${br}"`);mr[br]()}})}};wn(Vs);var Fu="scrollspy",oD="bs.scrollspy",Ll=`.${oD}`,aD=".data-api",Hp={offset:10,method:"auto",target:""},lD={offset:"number",method:"string",target:"(string|element)"},cD=`activate${Ll}`,uD=`scroll${Ll}`,dD=`load${Ll}${aD}`,Bp="dropdown-item",Ws="active",fD='[data-bs-spy="scroll"]',hD=".nav, .list-group",zu=".nav-link",pD=".nav-item",Fp=".list-group-item",mD=".dropdown",gD=".dropdown-toggle",vD="offset",zp="position",wa=class extends _n{constructor(br,mr){super(br);this._scrollElement=this._element.tagName==="BODY"?window:this._element,this._config=this._getConfig(mr),this._selector=`${this._config.target} ${zu}, ${this._config.target} ${Fp}, ${this._config.target} .${Bp}`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,$r.on(this._scrollElement,uD,()=>this._process()),this.refresh(),this._process()}static get Default(){return Hp}static get NAME(){return Fu}refresh(){let br=this._scrollElement===this._scrollElement.window?vD:zp,mr=this._config.method==="auto"?br:this._config.method,Er=mr===zp?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),ai.find(this._selector).map(_r=>{let xr=Tu(_r),Sr=xr?ai.findOne(xr):null;if(Sr){let Tr=Sr.getBoundingClientRect();if(Tr.width||Tr.height)return[Bi[mr](Sr).top+Er,xr]}return null}).filter(_r=>_r).sort((_r,xr)=>_r[0]-xr[0]).forEach(_r=>{this._offsets.push(_r[0]),this._targets.push(_r[1])})}dispose(){$r.off(this._scrollElement,Ll),super.dispose()}_getConfig(br){if(br=ci(ci(ci({},Hp),Bi.getDataAttributes(this._element)),typeof br=="object"&&br?br:{}),typeof br.target!="string"&&ds(br.target)){let{id:mr}=br.target;mr||(mr=qh(Fu),br.target.id=mr),br.target=`#${mr}`}return Xn(Fu,br,lD),br}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){let br=this._getScrollTop()+this._config.offset,mr=this._getScrollHeight(),Er=this._config.offset+mr-this._getOffsetHeight();if(this._scrollHeight!==mr&&this.refresh(),br>=Er){let wr=this._targets[this._targets.length-1];this._activeTarget!==wr&&this._activate(wr);return}if(this._activeTarget&&br0){this._activeTarget=null,this._clear();return}for(let wr=this._offsets.length;wr--;)this._activeTarget!==this._targets[wr]&&br>=this._offsets[wr]&&(typeof this._offsets[wr+1]=="undefined"||br`${wr}[data-bs-target="${br}"],${wr}[href="${br}"]`),Er=ai.findOne(mr.join(","));Er.classList.contains(Bp)?(ai.findOne(gD,Er.closest(mD)).classList.add(Ws),Er.classList.add(Ws)):(Er.classList.add(Ws),ai.parents(Er,hD).forEach(wr=>{ai.prev(wr,`${zu}, ${Fp}`).forEach(_r=>_r.classList.add(Ws)),ai.prev(wr,pD).forEach(_r=>{ai.children(_r,zu).forEach(xr=>xr.classList.add(Ws))})})),$r.trigger(this._scrollElement,cD,{relatedTarget:br})}_clear(){ai.find(this._selector).filter(br=>br.classList.contains(Ws)).forEach(br=>br.classList.remove(Ws))}static jQueryInterface(br){return this.each(function(){let mr=wa.getOrCreateInstance(this,br);if(typeof br=="string"){if(typeof mr[br]=="undefined")throw new TypeError(`No method named "${br}"`);mr[br]()}})}};$r.on(window,dD,()=>{ai.find(fD).forEach(yr=>new wa(yr))});wn(wa);var bD="tab",yD="bs.tab",_a=`.${yD}`,ED=".data-api",wD=`hide${_a}`,_D=`hidden${_a}`,xD=`show${_a}`,SD=`shown${_a}`,TD=`click${_a}${ED}`,DD="dropdown-menu",xa="active",$p="fade",Up="show",OD=".dropdown",AD=".nav, .list-group",Vp=".active",Wp=":scope > li > .active",CD='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',LD=".dropdown-toggle",MD=":scope > .dropdown-menu .active",Gs=class extends _n{static get NAME(){return bD}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(xa))return;let br,mr=us(this._element),Er=this._element.closest(AD);if(Er){let Sr=Er.nodeName==="UL"||Er.nodeName==="OL"?Wp:Vp;br=ai.find(Sr,Er),br=br[br.length-1]}let wr=br?$r.trigger(br,wD,{relatedTarget:this._element}):null;if($r.trigger(this._element,xD,{relatedTarget:br}).defaultPrevented||wr!==null&&wr.defaultPrevented)return;this._activate(this._element,Er);let xr=()=>{$r.trigger(br,_D,{relatedTarget:this._element}),$r.trigger(this._element,SD,{relatedTarget:br})};mr?this._activate(mr,mr.parentNode,xr):xr()}_activate(br,mr,Er){let _r=(mr&&(mr.nodeName==="UL"||mr.nodeName==="OL")?ai.find(Wp,mr):ai.children(mr,Vp))[0],xr=Er&&_r&&_r.classList.contains($p),Sr=()=>this._transitionComplete(br,_r,Er);_r&&xr?(_r.classList.remove(Up),this._queueCallback(Sr,br,!0)):Sr()}_transitionComplete(br,mr,Er){if(mr){mr.classList.remove(xa);let _r=ai.findOne(MD,mr.parentNode);_r&&_r.classList.remove(xa),mr.getAttribute("role")==="tab"&&mr.setAttribute("aria-selected",!1)}br.classList.add(xa),br.getAttribute("role")==="tab"&&br.setAttribute("aria-selected",!0),Oo(br),br.classList.contains($p)&&br.classList.add(Up);let wr=br.parentNode;if(wr&&wr.nodeName==="LI"&&(wr=wr.parentNode),wr&&wr.classList.contains(DD)){let _r=br.closest(OD);_r&&ai.find(LD,_r).forEach(xr=>xr.classList.add(xa)),br.setAttribute("aria-expanded",!0)}Er&&Er()}static jQueryInterface(br){return this.each(function(){let mr=Gs.getOrCreateInstance(this);if(typeof br=="string"){if(typeof mr[br]=="undefined")throw new TypeError(`No method named "${br}"`);mr[br]()}})}};$r.on(document,TD,CD,function(yr){if(["A","AREA"].includes(this.tagName)&&yr.preventDefault(),Do(this))return;Gs.getOrCreateInstance(this).show()});wn(Gs);var Gp="toast",kD="bs.toast",Zn=`.${kD}`,RD=`click.dismiss${Zn}`,ND=`mouseover${Zn}`,qD=`mouseout${Zn}`,ID=`focusin${Zn}`,PD=`focusout${Zn}`,jD=`hide${Zn}`,HD=`hidden${Zn}`,BD=`show${Zn}`,FD=`shown${Zn}`,zD="fade",Yp="hide",Sa="show",Kp="showing",$D={animation:"boolean",autohide:"boolean",delay:"number"},Xp={animation:!0,autohide:!0,delay:5e3},UD='[data-bs-dismiss="toast"]',es=class extends _n{constructor(br,mr){super(br);this._config=this._getConfig(mr),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return $D}static get Default(){return Xp}static get NAME(){return Gp}show(){if($r.trigger(this._element,BD).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(zD);let mr=()=>{this._element.classList.remove(Kp),this._element.classList.add(Sa),$r.trigger(this._element,FD),this._maybeScheduleHide()};this._element.classList.remove(Yp),Oo(this._element),this._element.classList.add(Kp),this._queueCallback(mr,this._element,this._config.animation)}hide(){if(!this._element.classList.contains(Sa)||$r.trigger(this._element,jD).defaultPrevented)return;let mr=()=>{this._element.classList.add(Yp),$r.trigger(this._element,HD)};this._element.classList.remove(Sa),this._queueCallback(mr,this._element,this._config.animation)}dispose(){this._clearTimeout(),this._element.classList.contains(Sa)&&this._element.classList.remove(Sa),super.dispose()}_getConfig(br){return br=ci(ci(ci({},Xp),Bi.getDataAttributes(this._element)),typeof br=="object"&&br?br:{}),Xn(Gp,br,this.constructor.DefaultType),br}_maybeScheduleHide(){!this._config.autohide||this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))}_onInteraction(br,mr){switch(br.type){case"mouseover":case"mouseout":this._hasMouseInteraction=mr;break;case"focusin":case"focusout":this._hasKeyboardInteraction=mr;break}if(mr){this._clearTimeout();return}let Er=br.relatedTarget;this._element===Er||this._element.contains(Er)||this._maybeScheduleHide()}_setListeners(){$r.on(this._element,RD,UD,()=>this.hide()),$r.on(this._element,ND,br=>this._onInteraction(br,!0)),$r.on(this._element,qD,br=>this._onInteraction(br,!1)),$r.on(this._element,ID,br=>this._onInteraction(br,!0)),$r.on(this._element,PD,br=>this._onInteraction(br,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(br){return this.each(function(){let mr=es.getOrCreateInstance(this,br);if(typeof br=="string"){if(typeof mr[br]=="undefined")throw new TypeError(`No method named "${br}"`);mr[br](this)}})}};wn(es);var ZV=vn(Jp());var oA=Hl(),aA=Qs(),lA=cg();oA||aA(Object.prototype,"toString",lA,{unsafe:!0});var MA=Ni(),kA=sd(),cd=Og(),RA=ts();for(Ag in kA)if(ud=MA[Ag],ka=ud&&ud.prototype,ka&&ka.forEach!==cd)try{RA(ka,"forEach",cd)}catch(yr){ka.forEach=cd}var ud,ka,Ag;var _c=vn(Lg());var N0=rs(),sv=nv();N0({global:!0,forced:parseInt!=sv},{parseInt:sv});var z0=rs(),dv=uv();z0({target:"Object",stat:!0,forced:Object.assign!==dv},{assign:dv});"use strict";var G0=rs(),Y0=Wl().filter,K0=hv(),X0=K0("filter");G0({target:"Array",proto:!0,forced:!X0},{filter:function(br){return Y0(this,br,arguments.length>1?arguments[1]:void 0)}});var bz=vn(Pd());"use strict";var YC=jd().charAt,KC=ys(),nb=Js(),XC=qd(),sb="String Iterator",JC=nb.set,QC=nb.getterFor(sb);XC(String,"String",function(yr){JC(this,{type:sb,string:KC(yr),index:0})},function(){var br=QC(this),mr=br.string,Er=br.index,wr;return Er>=mr.length?{value:void 0,done:!0}:(wr=YC(mr,Er),br.index+=wr.length,{value:wr,done:!1})});var Ez=vn(Kb());var nM=Ni(),Xb=sd(),ja=Pd(),ef=ts(),Jb=Ki(),tf=Jb("iterator"),Qb=Jb("toStringTag"),rf=ja.values;for(cc in Xb)if(nf=nM[cc],zn=nf&&nf.prototype,zn){if(zn[tf]!==rf)try{ef(zn,tf,rf)}catch(yr){zn[tf]=rf}if(zn[Qb]||ef(zn,Qb,cc),Xb[cc]){for(to in ja)if(zn[to]!==ja[to])try{ef(zn,to,ja[to])}catch(yr){zn[to]=ja[to]}}}var nf,zn,to,cc;var Rf=vn(iy()),Nf=vn(ay()),uE=vn(gy());var Sn=[];var vy=function(){return Sn.some(function(yr){return yr.activeTargets.length>0})};var by=function(){return Sn.some(function(yr){return yr.skippedTargets.length>0})};var yy="ResizeObserver loop completed with undelivered notifications.",Ey=function(){var yr;typeof ErrorEvent=="function"?yr=new ErrorEvent("error",{message:yy}):(yr=document.createEvent("Event"),yr.initEvent("error",!1,!1),yr.message=yy),window.dispatchEvent(yr)};var no;(function(yr){yr.BORDER_BOX="border-box",yr.CONTENT_BOX="content-box",yr.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(no||(no={}));var Rn=function(yr){return Object.freeze(yr)};var df=function(){function yr(br,mr){this.inlineSize=br,this.blockSize=mr,Rn(this)}return yr}();var ff=function(){function yr(br,mr,Er,wr){return this.x=br,this.y=mr,this.width=Er,this.height=wr,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,Rn(this)}return yr.prototype.toJSON=function(){var br=this,mr=br.x,Er=br.y,wr=br.top,_r=br.right,xr=br.bottom,Sr=br.left,Tr=br.width,Dr=br.height;return{x:mr,y:Er,top:wr,right:_r,bottom:xr,left:Sr,width:Tr,height:Dr}},yr.fromRect=function(br){return new yr(br.x,br.y,br.width,br.height)},yr}();var Ba=function(yr){return yr instanceof SVGElement&&"getBBox"in yr},hc=function(yr){if(Ba(yr)){var br=yr.getBBox(),mr=br.width,Er=br.height;return!mr&&!Er}var wr=yr,_r=wr.offsetWidth,xr=wr.offsetHeight;return!(_r||xr||yr.getClientRects().length)},hf=function(yr){var br,mr;if(yr instanceof Element)return!0;var Er=(mr=(br=yr)===null||br===void 0?void 0:br.ownerDocument)===null||mr===void 0?void 0:mr.defaultView;return!!(Er&&yr instanceof Er.Element)},wy=function(yr){switch(yr.tagName){case"INPUT":if(yr.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1};var so=typeof window!="undefined"?window:{};var pc=new WeakMap,_y=/auto|scroll/,wk=/^tb|vertical/,_k=/msie|trident/i.test(so.navigator&&so.navigator.userAgent),$n=function(yr){return parseFloat(yr||"0")},qo=function(yr,br,mr){return yr===void 0&&(yr=0),br===void 0&&(br=0),mr===void 0&&(mr=!1),new df((mr?br:yr)||0,(mr?yr:br)||0)},xy=Rn({devicePixelContentBoxSize:qo(),borderBoxSize:qo(),contentBoxSize:qo(),contentRect:new ff(0,0,0,0)}),pf=function(yr,br){if(br===void 0&&(br=!1),pc.has(yr)&&!br)return pc.get(yr);if(hc(yr))return pc.set(yr,xy),xy;var mr=getComputedStyle(yr),Er=Ba(yr)&&yr.ownerSVGElement&&yr.getBBox(),wr=!_k&&mr.boxSizing==="border-box",_r=wk.test(mr.writingMode||""),xr=!Er&&_y.test(mr.overflowY||""),Sr=!Er&&_y.test(mr.overflowX||""),Tr=Er?0:$n(mr.paddingTop),Dr=Er?0:$n(mr.paddingRight),Or=Er?0:$n(mr.paddingBottom),Cr=Er?0:$n(mr.paddingLeft),Ar=Er?0:$n(mr.borderTopWidth),Lr=Er?0:$n(mr.borderRightWidth),Rr=Er?0:$n(mr.borderBottomWidth),Nr=Er?0:$n(mr.borderLeftWidth),Ir=Cr+Dr,Pr=Tr+Or,Br=Nr+Lr,zr=Ar+Rr,Ur=Sr?yr.offsetHeight-zr-yr.clientHeight:0,Kr=xr?yr.offsetWidth-Br-yr.clientWidth:0,Fr=wr?Ir+Br:0,Xr=wr?Pr+zr:0,Jr=Er?Er.width:$n(mr.width)-Fr-Kr,oi=Er?Er.height:$n(mr.height)-Xr-Ur,hi=Jr+Ir+Kr+Br,pi=oi+Pr+Ur+zr,_i=Rn({devicePixelContentBoxSize:qo(Math.round(Jr*devicePixelRatio),Math.round(oi*devicePixelRatio),_r),borderBoxSize:qo(hi,pi,_r),contentBoxSize:qo(Jr,oi,_r),contentRect:new ff(Cr,Tr,Jr,oi)});return pc.set(yr,_i),_i},mc=function(yr,br,mr){var Er=pf(yr,mr),wr=Er.borderBoxSize,_r=Er.contentBoxSize,xr=Er.devicePixelContentBoxSize;switch(br){case no.DEVICE_PIXEL_CONTENT_BOX:return xr;case no.BORDER_BOX:return wr;default:return _r}};var mf=function(){function yr(br){var mr=pf(br);this.target=br,this.contentRect=mr.contentRect,this.borderBoxSize=Rn([mr.borderBoxSize]),this.contentBoxSize=Rn([mr.contentBoxSize]),this.devicePixelContentBoxSize=Rn([mr.devicePixelContentBoxSize])}return yr}();var gc=function(yr){if(hc(yr))return 1/0;for(var br=0,mr=yr.parentNode;mr;)br+=1,mr=mr.parentNode;return br};var Sy=function(){var yr=1/0,br=[];Sn.forEach(function(xr){if(xr.activeTargets.length!==0){var Sr=[];xr.activeTargets.forEach(function(Dr){var Or=new mf(Dr.target),Cr=gc(Dr.target);Sr.push(Or),Dr.lastReportedSize=mc(Dr.target,Dr.observedBox),Cryr?mr.activeTargets.push(wr):mr.skippedTargets.push(wr))})})};var Ty=function(){var yr=0;for(gf(yr);vy();)yr=Sy(),gf(yr);return by()&&Ey(),yr>0};var vf,Dy=[],xk=function(){return Dy.splice(0).forEach(function(yr){return yr()})},Oy=function(yr){if(!vf){var br=0,mr=document.createTextNode(""),Er={characterData:!0};new MutationObserver(function(){return xk()}).observe(mr,Er),vf=function(){mr.textContent=""+(br?br--:br++)}}Dy.push(yr),vf()};var Ay=function(yr){Oy(function(){requestAnimationFrame(yr)})};var vc=0,Sk=function(){return!!vc},Tk=250,Dk={attributes:!0,characterData:!0,childList:!0,subtree:!0},Cy=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],Ly=function(yr){return yr===void 0&&(yr=0),Date.now()+yr},bf=!1,Ok=function(){function yr(){var br=this;this.stopped=!0,this.listener=function(){return br.schedule()}}return yr.prototype.run=function(br){var mr=this;if(br===void 0&&(br=Tk),!bf){bf=!0;var Er=Ly(br);Ay(function(){var wr=!1;try{wr=Ty()}finally{if(bf=!1,br=Er-Ly(),!Sk())return;wr?mr.run(1e3):br>0?mr.run(br):mr.start()}})}},yr.prototype.schedule=function(){this.stop(),this.run()},yr.prototype.observe=function(){var br=this,mr=function(){return br.observer&&br.observer.observe(document.body,Dk)};document.body?mr():so.addEventListener("DOMContentLoaded",mr)},yr.prototype.start=function(){var br=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Cy.forEach(function(mr){return so.addEventListener(mr,br.listener,!0)}))},yr.prototype.stop=function(){var br=this;this.stopped||(this.observer&&this.observer.disconnect(),Cy.forEach(function(mr){return so.removeEventListener(mr,br.listener,!0)}),this.stopped=!0)},yr}(),bc=new Ok,yf=function(yr){!vc&&yr>0&&bc.start(),vc+=yr,!vc&&bc.stop()};var Ak=function(yr){return!Ba(yr)&&!wy(yr)&&getComputedStyle(yr).display==="inline"},My=function(){function yr(br,mr){this.target=br,this.observedBox=mr||no.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return yr.prototype.isActive=function(){var br=mc(this.target,this.observedBox,!0);return Ak(this.target)&&(this.lastReportedSize=br),this.lastReportedSize.inlineSize!==br.inlineSize||this.lastReportedSize.blockSize!==br.blockSize},yr}();var ky=function(){function yr(br,mr){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=br,this.callback=mr}return yr}();var yc=new WeakMap,Ry=function(yr,br){for(var mr=0;mr=0&&(_r&&Sn.splice(Sn.indexOf(Er),1),Er.observationTargets.splice(wr,1),yf(-1))},yr.disconnect=function(br){var mr=this,Er=yc.get(br);Er.observationTargets.slice().forEach(function(wr){return mr.unobserve(br,wr.target)}),Er.activeTargets.splice(0,Er.activeTargets.length)},yr}();var Ef=function(){function yr(br){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof br!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");Fa.connect(this,br)}return yr.prototype.observe=function(br,mr){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!hf(br))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");Fa.observe(this,br,mr)},yr.prototype.unobserve=function(br){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!hf(br))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");Fa.unobserve(this,br)},yr.prototype.disconnect=function(){Fa.disconnect(this)},yr.toString=function(){return"function ResizeObserver () { [polyfill code] }"},yr}();"use strict";var qk=rs(),Ik=Iy().left,Pk=ld(),Hy=jl(),jk=jy(),Hk=Pk("reduce"),Bk=!jk&&Hy>79&&Hy<83;qk({target:"Array",proto:!0,forced:!Hk||Bk},{reduce:function(br){return Ik(this,br,arguments.length,arguments.length>1?arguments[1]:void 0)}});var Sz=vn(Tf());"use strict";var dR=Of(),fR=pn(),hR=Zs(),Lf=ys(),pR=Ys(),mR=Af(),sE=Cf();dR("match",function(yr,br,mr){return[function(wr){var _r=pR(this),xr=wr==null?void 0:wr[yr];return xr!==void 0?xr.call(wr,_r):new RegExp(wr)[yr](Lf(_r))},function(Er){var wr=fR(this),_r=Lf(Er),xr=mr(br,wr,_r);if(xr.done)return xr.value;if(!wr.global)return sE(wr,_r);var Sr=wr.unicode;wr.lastIndex=0;for(var Tr=[],Dr=0,Or;(Or=sE(wr,_r))!==null;){var Cr=Lf(Or[0]);Tr[Dr]=Cr,Cr===""&&(wr.lastIndex=mR(_r,hR(wr.lastIndex),Sr)),Dr++}return Dr===0?null:Tr}]});var gR=ms(),vR=gs().f,Mf=Function.prototype,bR=Mf.toString,yR=/^\s*function ([^ (]*)/,oE="name";gR&&!(oE in Mf)&&vR(Mf,oE,{configurable:!0,get:function(){try{return bR.call(this).match(yR)[1]}catch(yr){return""}}});"use strict";var TR=Of(),DR=Fi(),OR=pn(),AR=Ma(),CR=Zs(),Io=ys(),LR=Ys(),MR=Af(),kR=lE(),RR=Cf(),NR=Ki(),kf=NR("replace"),qR=Math.max,IR=Math.min,PR=function(yr){return yr===void 0?yr:String(yr)},jR=function(){return"a".replace(/./,"$0")==="$0"}(),cE=function(){return/./[kf]?/./[kf]("a","$0")==="":!1}(),HR=!DR(function(){var yr=/./;return yr.exec=function(){var br=[];return br.groups={a:"7"},br},"".replace(yr,"$
    ")!=="7"});TR("replace",function(yr,br,mr){var Er=cE?"$":"$0";return[function(_r,xr){var Sr=LR(this),Tr=_r==null?void 0:_r[kf];return Tr!==void 0?Tr.call(_r,Sr,xr):br.call(Io(Sr),_r,xr)},function(wr,_r){var xr=OR(this),Sr=Io(wr);if(typeof _r=="string"&&_r.indexOf(Er)===-1&&_r.indexOf("$<")===-1){var Tr=mr(br,xr,Sr,_r);if(Tr.done)return Tr.value}var Dr=typeof _r=="function";Dr||(_r=Io(_r));var Or=xr.global;if(Or){var Cr=xr.unicode;xr.lastIndex=0}for(var Ar=[];;){var Lr=RR(xr,Sr);if(Lr===null||(Ar.push(Lr),!Or))break;var Rr=Io(Lr[0]);Rr===""&&(xr.lastIndex=MR(Sr,CR(xr.lastIndex),Cr))}for(var Nr="",Ir=0,Pr=0;Pr=Ir&&(Nr+=Sr.slice(Ir,zr)+Jr,Ir=zr+Br.length)}return Nr+Sr.slice(Ir)}]},!HR||!jR||cE);var xc=function(br){var mr=Array.prototype.reduce.call(br,function(Er,wr){var _r=wr.name.match(/data-simplebar-(.+)/);if(_r){var xr=_r[1].replace(/\W+(.)/g,function(Sr,Tr){return Tr.toUpperCase()});switch(wr.value){case"true":Er[xr]=!0;break;case"false":Er[xr]=!1;break;case void 0:Er[xr]=!0;break;default:Er[xr]=wr.value}}return Er},{});return mr};function Es(yr){return!yr||!yr.ownerDocument||!yr.ownerDocument.defaultView?window:yr.ownerDocument.defaultView}function Sc(yr){return!yr||!yr.ownerDocument?document:yr.ownerDocument}var Po=null,dE=null;_c.default&&window.addEventListener("resize",function(){dE!==window.devicePixelRatio&&(dE=window.devicePixelRatio,Po=null)});function fE(yr){if(Po===null){var br=Sc(yr);if(typeof br=="undefined")return Po=0,Po;var mr=br.body,Er=br.createElement("div");Er.classList.add("simplebar-hide-scrollbar"),mr.appendChild(Er);var wr=Er.getBoundingClientRect().right;mr.removeChild(Er),Po=wr}return Po}var Pi=function(){function yr(mr,Er){var wr=this;this.onScroll=function(){var _r=Es(wr.el);wr.scrollXTicking||(_r.requestAnimationFrame(wr.scrollX),wr.scrollXTicking=!0),wr.scrollYTicking||(_r.requestAnimationFrame(wr.scrollY),wr.scrollYTicking=!0)},this.scrollX=function(){wr.axis.x.isOverflowing&&(wr.showScrollbar("x"),wr.positionScrollbar("x")),wr.scrollXTicking=!1},this.scrollY=function(){wr.axis.y.isOverflowing&&(wr.showScrollbar("y"),wr.positionScrollbar("y")),wr.scrollYTicking=!1},this.onMouseEnter=function(){wr.showScrollbar("x"),wr.showScrollbar("y")},this.onMouseMove=function(_r){wr.mouseX=_r.clientX,wr.mouseY=_r.clientY,(wr.axis.x.isOverflowing||wr.axis.x.forceVisible)&&wr.onMouseMoveForAxis("x"),(wr.axis.y.isOverflowing||wr.axis.y.forceVisible)&&wr.onMouseMoveForAxis("y")},this.onMouseLeave=function(){wr.onMouseMove.cancel(),(wr.axis.x.isOverflowing||wr.axis.x.forceVisible)&&wr.onMouseLeaveForAxis("x"),(wr.axis.y.isOverflowing||wr.axis.y.forceVisible)&&wr.onMouseLeaveForAxis("y"),wr.mouseX=-1,wr.mouseY=-1},this.onWindowResize=function(){wr.scrollbarWidth=wr.getScrollbarWidth(),wr.hideNativeScrollbar()},this.hideScrollbars=function(){wr.axis.x.track.rect=wr.axis.x.track.el.getBoundingClientRect(),wr.axis.y.track.rect=wr.axis.y.track.el.getBoundingClientRect(),wr.isWithinBounds(wr.axis.y.track.rect)||(wr.axis.y.scrollbar.el.classList.remove(wr.classNames.visible),wr.axis.y.isVisible=!1),wr.isWithinBounds(wr.axis.x.track.rect)||(wr.axis.x.scrollbar.el.classList.remove(wr.classNames.visible),wr.axis.x.isVisible=!1)},this.onPointerEvent=function(_r){var xr,Sr;wr.axis.x.track.rect=wr.axis.x.track.el.getBoundingClientRect(),wr.axis.y.track.rect=wr.axis.y.track.el.getBoundingClientRect(),(wr.axis.x.isOverflowing||wr.axis.x.forceVisible)&&(xr=wr.isWithinBounds(wr.axis.x.track.rect)),(wr.axis.y.isOverflowing||wr.axis.y.forceVisible)&&(Sr=wr.isWithinBounds(wr.axis.y.track.rect)),(xr||Sr)&&(_r.preventDefault(),_r.stopPropagation(),_r.type==="mousedown"&&(xr&&(wr.axis.x.scrollbar.rect=wr.axis.x.scrollbar.el.getBoundingClientRect(),wr.isWithinBounds(wr.axis.x.scrollbar.rect)?wr.onDragStart(_r,"x"):wr.onTrackClick(_r,"x")),Sr&&(wr.axis.y.scrollbar.rect=wr.axis.y.scrollbar.el.getBoundingClientRect(),wr.isWithinBounds(wr.axis.y.scrollbar.rect)?wr.onDragStart(_r,"y"):wr.onTrackClick(_r,"y"))))},this.drag=function(_r){var xr,Sr=wr.axis[wr.draggedAxis].track,Tr=Sr.rect[wr.axis[wr.draggedAxis].sizeAttr],Dr=wr.axis[wr.draggedAxis].scrollbar,Or=wr.contentWrapperEl[wr.axis[wr.draggedAxis].scrollSizeAttr],Cr=parseInt(wr.elStyles[wr.axis[wr.draggedAxis].sizeAttr],10);_r.preventDefault(),_r.stopPropagation(),wr.draggedAxis==="y"?xr=_r.pageY:xr=_r.pageX;var Ar=xr-Sr.rect[wr.axis[wr.draggedAxis].offsetAttr]-wr.axis[wr.draggedAxis].dragOffset,Lr=Ar/(Tr-Dr.size),Rr=Lr*(Or-Cr);wr.draggedAxis==="x"&&(Rr=wr.isRtl&&yr.getRtlHelpers().isRtlScrollbarInverted?Rr-(Tr+Dr.size):Rr,Rr=wr.isRtl&&yr.getRtlHelpers().isRtlScrollingInverted?-Rr:Rr),wr.contentWrapperEl[wr.axis[wr.draggedAxis].scrollOffsetAttr]=Rr},this.onEndDrag=function(_r){var xr=Sc(wr.el),Sr=Es(wr.el);_r.preventDefault(),_r.stopPropagation(),wr.el.classList.remove(wr.classNames.dragging),xr.removeEventListener("mousemove",wr.drag,!0),xr.removeEventListener("mouseup",wr.onEndDrag,!0),wr.removePreventClickId=Sr.setTimeout(function(){xr.removeEventListener("click",wr.preventClick,!0),xr.removeEventListener("dblclick",wr.preventClick,!0),wr.removePreventClickId=null})},this.preventClick=function(_r){_r.preventDefault(),_r.stopPropagation()},this.el=mr,this.minScrollbarWidth=20,this.options=Object.assign({},yr.defaultOptions,Er),this.classNames=Object.assign({},yr.defaultOptions.classNames,this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,!yr.instances.has(this.el)&&(this.recalculate=(0,Rf.default)(this.recalculate.bind(this),64),this.onMouseMove=(0,Rf.default)(this.onMouseMove.bind(this),64),this.hideScrollbars=(0,Nf.default)(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=(0,Nf.default)(this.onWindowResize.bind(this),64,{leading:!0}),yr.getRtlHelpers=(0,uE.default)(yr.getRtlHelpers),this.init())}yr.getRtlHelpers=function(){var Er=document.createElement("div");Er.innerHTML='
    ';var wr=Er.firstElementChild;document.body.appendChild(wr);var _r=wr.firstElementChild;wr.scrollLeft=0;var xr=yr.getOffset(wr),Sr=yr.getOffset(_r);wr.scrollLeft=999;var Tr=yr.getOffset(_r);return{isRtlScrollingInverted:xr.left!==Sr.left&&Sr.left-Tr.left!=0,isRtlScrollbarInverted:xr.left!==Sr.left}},yr.getOffset=function(Er){var wr=Er.getBoundingClientRect(),_r=Sc(Er),xr=Es(Er);return{top:wr.top+(xr.pageYOffset||_r.documentElement.scrollTop),left:wr.left+(xr.pageXOffset||_r.documentElement.scrollLeft)}};var br=yr.prototype;return br.init=function(){yr.instances.set(this.el,this),_c.default&&(this.initDOM(),this.setAccessibilityAttributes(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},br.initDOM=function(){var Er=this;if(Array.prototype.filter.call(this.el.children,function(xr){return xr.classList.contains(Er.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var wr=document.createElement("div"),_r=document.createElement("div");wr.classList.add(this.classNames.track),_r.classList.add(this.classNames.scrollbar),wr.appendChild(_r),this.axis.x.track.el=wr.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=wr.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},br.setAccessibilityAttributes=function(){var Er=this.options.ariaLabel||"scrollable content";this.contentWrapperEl.setAttribute("tabindex","0"),this.contentWrapperEl.setAttribute("role","region"),this.contentWrapperEl.setAttribute("aria-label",Er)},br.initListeners=function(){var Er=this,wr=Es(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(Tr){Er.el.addEventListener(Tr,Er.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(Tr){Er.el.addEventListener(Tr,Er.onPointerEvent,{capture:!0,passive:!0})}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),wr.addEventListener("resize",this.onWindowResize);var _r=!1,xr=null,Sr=wr.ResizeObserver||Ef;this.resizeObserver=new Sr(function(){!_r||xr!==null||(xr=wr.requestAnimationFrame(function(){Er.recalculate(),xr=null}))}),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),wr.requestAnimationFrame(function(){_r=!0}),this.mutationObserver=new wr.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},br.recalculate=function(){var Er=Es(this.el);this.elStyles=Er.getComputedStyle(this.el),this.isRtl=this.elStyles.direction==="rtl";var wr=this.heightAutoObserverEl.offsetHeight<=1,_r=this.heightAutoObserverEl.offsetWidth<=1,xr=this.contentEl.offsetWidth,Sr=this.contentWrapperEl.offsetWidth,Tr=this.elStyles.overflowX,Dr=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var Or=this.contentEl.scrollHeight,Cr=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=wr?"auto":"100%",this.placeholderEl.style.width=_r?xr+"px":"auto",this.placeholderEl.style.height=Or+"px";var Ar=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=Cr>xr,this.axis.y.isOverflowing=Or>Ar,this.axis.x.isOverflowing=Tr==="hidden"?!1:this.axis.x.isOverflowing,this.axis.y.isOverflowing=Dr==="hidden"?!1:this.axis.y.isOverflowing,this.axis.x.forceVisible=this.options.forceVisible==="x"||this.options.forceVisible===!0,this.axis.y.forceVisible=this.options.forceVisible==="y"||this.options.forceVisible===!0,this.hideNativeScrollbar();var Lr=this.axis.x.isOverflowing?this.scrollbarWidth:0,Rr=this.axis.y.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&Cr>Sr-Rr,this.axis.y.isOverflowing=this.axis.y.isOverflowing&&Or>Ar-Lr,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},br.getScrollbarSize=function(Er){if(Er===void 0&&(Er="y"),!this.axis[Er].isOverflowing)return 0;var wr=this.contentEl[this.axis[Er].scrollSizeAttr],_r=this.axis[Er].track.el[this.axis[Er].offsetSizeAttr],xr,Sr=_r/wr;return xr=Math.max(~~(Sr*_r),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(xr=Math.min(xr,this.options.scrollbarMaxSize)),xr},br.positionScrollbar=function(Er){if(Er===void 0&&(Er="y"),!!this.axis[Er].isOverflowing){var wr=this.contentWrapperEl[this.axis[Er].scrollSizeAttr],_r=this.axis[Er].track.el[this.axis[Er].offsetSizeAttr],xr=parseInt(this.elStyles[this.axis[Er].sizeAttr],10),Sr=this.axis[Er].scrollbar,Tr=this.contentWrapperEl[this.axis[Er].scrollOffsetAttr];Tr=Er==="x"&&this.isRtl&&yr.getRtlHelpers().isRtlScrollingInverted?-Tr:Tr;var Dr=Tr/(wr-xr),Or=~~((_r-Sr.size)*Dr);Or=Er==="x"&&this.isRtl&&yr.getRtlHelpers().isRtlScrollbarInverted?Or+(_r-Sr.size):Or,Sr.el.style.transform=Er==="x"?"translate3d("+Or+"px, 0, 0)":"translate3d(0, "+Or+"px, 0)"}},br.toggleTrackVisibility=function(Er){Er===void 0&&(Er="y");var wr=this.axis[Er].track.el,_r=this.axis[Er].scrollbar.el;this.axis[Er].isOverflowing||this.axis[Er].forceVisible?(wr.style.visibility="visible",this.contentWrapperEl.style[this.axis[Er].overflowAttr]="scroll"):(wr.style.visibility="hidden",this.contentWrapperEl.style[this.axis[Er].overflowAttr]="hidden"),this.axis[Er].isOverflowing?_r.style.display="block":_r.style.display="none"},br.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},br.onMouseMoveForAxis=function(Er){Er===void 0&&(Er="y"),this.axis[Er].track.rect=this.axis[Er].track.el.getBoundingClientRect(),this.axis[Er].scrollbar.rect=this.axis[Er].scrollbar.el.getBoundingClientRect();var wr=this.isWithinBounds(this.axis[Er].scrollbar.rect);wr?this.axis[Er].scrollbar.el.classList.add(this.classNames.hover):this.axis[Er].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[Er].track.rect)?(this.showScrollbar(Er),this.axis[Er].track.el.classList.add(this.classNames.hover)):this.axis[Er].track.el.classList.remove(this.classNames.hover)},br.onMouseLeaveForAxis=function(Er){Er===void 0&&(Er="y"),this.axis[Er].track.el.classList.remove(this.classNames.hover),this.axis[Er].scrollbar.el.classList.remove(this.classNames.hover)},br.showScrollbar=function(Er){Er===void 0&&(Er="y");var wr=this.axis[Er].scrollbar.el;this.axis[Er].isVisible||(wr.classList.add(this.classNames.visible),this.axis[Er].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},br.onDragStart=function(Er,wr){wr===void 0&&(wr="y");var _r=Sc(this.el),xr=Es(this.el),Sr=this.axis[wr].scrollbar,Tr=wr==="y"?Er.pageY:Er.pageX;this.axis[wr].dragOffset=Tr-Sr.rect[this.axis[wr].offsetAttr],this.draggedAxis=wr,this.el.classList.add(this.classNames.dragging),_r.addEventListener("mousemove",this.drag,!0),_r.addEventListener("mouseup",this.onEndDrag,!0),this.removePreventClickId===null?(_r.addEventListener("click",this.preventClick,!0),_r.addEventListener("dblclick",this.preventClick,!0)):(xr.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},br.onTrackClick=function(Er,wr){var _r=this;if(wr===void 0&&(wr="y"),!!this.options.clickOnTrack){var xr=Es(this.el);this.axis[wr].scrollbar.rect=this.axis[wr].scrollbar.el.getBoundingClientRect();var Sr=this.axis[wr].scrollbar,Tr=Sr.rect[this.axis[wr].offsetAttr],Dr=parseInt(this.elStyles[this.axis[wr].sizeAttr],10),Or=this.contentWrapperEl[this.axis[wr].scrollOffsetAttr],Cr=wr==="y"?this.mouseY-Tr:this.mouseX-Tr,Ar=Cr<0?-1:1,Lr=Ar===-1?Or-Dr:Or+Dr,Rr=function Nr(){if(Ar===-1){if(Or>Lr){var Ir;Or-=_r.options.clickOnTrackSpeed,_r.contentWrapperEl.scrollTo((Ir={},Ir[_r.axis[wr].offsetAttr]=Or,Ir)),xr.requestAnimationFrame(Nr)}}else if(Or=Er.left&&this.mouseX<=Er.left+Er.width&&this.mouseY>=Er.top&&this.mouseY<=Er.top+Er.height},br.findChild=function(Er,wr){var _r=Er.matches||Er.webkitMatchesSelector||Er.mozMatchesSelector||Er.msMatchesSelector;return Array.prototype.filter.call(Er.children,function(xr){return _r.call(xr,wr)})[0]},yr}();Pi.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3};Pi.instances=new WeakMap;Pi.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"),function(yr){yr.getAttribute("data-simplebar")!=="init"&&!Pi.instances.has(yr)&&new Pi(yr,xc(yr.attributes))})};Pi.removeObserver=function(){this.globalObserver.disconnect()};Pi.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),typeof MutationObserver!="undefined"&&(this.globalObserver=new MutationObserver(Pi.handleMutations),this.globalObserver.observe(document,{childList:!0,subtree:!0})),document.readyState==="complete"||document.readyState!=="loading"&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))};Pi.handleMutations=function(yr){yr.forEach(function(br){Array.prototype.forEach.call(br.addedNodes,function(mr){mr.nodeType===1&&(mr.hasAttribute("data-simplebar")?!Pi.instances.has(mr)&&document.documentElement.contains(mr)&&new Pi(mr,xc(mr.attributes)):Array.prototype.forEach.call(mr.querySelectorAll("[data-simplebar]"),function(Er){Er.getAttribute("data-simplebar")!=="init"&&!Pi.instances.has(Er)&&document.documentElement.contains(Er)&&new Pi(Er,xc(Er.attributes))}))}),Array.prototype.forEach.call(br.removedNodes,function(mr){mr.nodeType===1&&(mr.getAttribute("data-simplebar")==="init"?Pi.instances.has(mr)&&!document.documentElement.contains(mr)&&Pi.instances.get(mr).unMount():Array.prototype.forEach.call(mr.querySelectorAll('[data-simplebar="init"]'),function(Er){Pi.instances.has(Er)&&!document.documentElement.contains(Er)&&Pi.instances.get(Er).unMount()}))})})};Pi.getOptions=xc;_c.default&&Pi.initHtmlApi();function hE(yr){return"error"in yr&&"exception"in yr}function ns(yr){return"error"in yr}function pE(yr){return typeof yr.next=="string"}function mi(yr){let br=["","null","undefined"];return Array.isArray(yr)?yr.length>0:typeof yr=="string"&&!br.includes(yr)||typeof yr=="number"||typeof yr=="boolean"?!0:typeof yr=="object"&&yr!==null}function qf(yr){return typeof yr!==null&&typeof yr!="undefined"}function mE(yr,br,mr){return $i(this,null,function*(){let Er=window.CSRF_TOKEN,wr=new Headers({"X-CSRFToken":Er}),_r;typeof mr!="undefined"&&(_r=JSON.stringify(mr),wr.set("content-type","application/json"));let xr=yield fetch(yr,{method:br,body:_r,headers:wr,credentials:"same-origin"}),Sr=xr.headers.get("Content-Type");if(typeof Sr=="string"&&Sr.includes("text"))return{error:yield xr.text()};let Tr=yield xr.json();return!xr.ok&&Array.isArray(Tr)?{error:Tr.join(` -`)}:!xr.ok&&"detail"in Tr?{error:Tr.detail}:Tr})}function jo(yr,br){return $i(this,null,function*(){return yield mE(yr,"PATCH",br)})}function BR(yr){return $i(this,null,function*(){return yield mE(yr,"GET")})}function gE(yr){return $i(this,null,function*(){return yield BR(yr)})}function*Wr(...yr){for(let br of yr)for(let mr of document.querySelectorAll(br))mr!==null&&(yield mr)}function za(yr){return document.getElementById(yr)}function vE(yr,br=0){let mr=br,Er=document.getElementById("content-title");Er!==null&&(mr+=Er.getBoundingClientRect().bottom);let wr=yr.getBoundingClientRect().top+window.pageYOffset+mr;window.scrollTo({top:wr,behavior:"smooth"})}function bE(yr,br="select"){let mr=[];for(let Er of yr.querySelectorAll(br))if(Er!==null){let wr={name:Er.name,options:[]};for(let _r of Er.options)_r.selected&&wr.options.push(_r.value);mr=[...mr,wr]}return mr}function If(yr,br){yr!==null&&(typeof br=="undefined"?window.getComputedStyle(yr).display==="none"?yr.style.display="":yr.style.display="none":br==="show"?yr.style.display="":yr.style.display="none")}function ws(yr,br,mr){function Er(_r){return!!(typeof mr=="string"&&_r!==null&&_r.matches(mr))}function wr(_r){if(_r!==null&&_r.parentElement!==null&&!Er(_r)){for(let xr of _r.parentElement.querySelectorAll(br))if(xr!==null)return xr;return wr(_r.parentElement.parentElement)}return null}return wr(yr)}function Ho(yr,br,mr=null,Er=[]){let wr=document.createElement(yr);if(br!==null)for(let _r of Object.keys(br)){let xr=_r,Sr=br[xr];xr in wr&&(wr[xr]=Sr)}mr!==null&&mr.length>0&&wr.classList.add(...mr);for(let _r of Er)wr.appendChild(_r);return wr}function yE(yr,br){let mr=new Map;for(let Er of yr){let wr=Er[br];mr.has(wr)||mr.set(wr,Er)}return Array.from(mr.values())}function _s(yr,br,mr){if(typeof yr!="string")throw new TypeError("replaceAll 'input' argument must be a string");if(typeof br!="string"&&!(br instanceof RegExp))throw new TypeError("replaceAll 'pattern' argument must be a string or RegExp instance");switch(typeof mr){case"boolean":mr=String(mr);break;case"number":mr=String(mr);break;case"string":break;default:throw new TypeError("replaceAll 'replacement' argument must be stringifyable")}if(br instanceof RegExp){let Er=Array.from(new Set([...br.flags.split(""),"g"])).join("");br=new RegExp(br.source,Er)}else br=new RegExp(br,"g");return yr.replace(br,mr)}function FR(yr,br){let mr=new Set;for(let Er of br.querySelectorAll("*[name]"))Er.validity.valid?Er.classList.contains("is-invalid")&&Er.classList.remove("is-invalid"):(mr.add(Er.name),Er.classList.contains("is-invalid")||Er.classList.add("is-invalid"));if(mr.size!==0){let Er=br.elements.namedItem(Array.from(mr)[0]);vE(Er),yr.preventDefault()}}function EE(){for(let yr of Wr("form")){let br=yr.querySelectorAll("button[type=submit]");for(let mr of br)mr.addEventListener("click",Er=>FR(Er,yr))}}function wE(){for(let yr of Wr("a.set_field_value"))if(yr!==null){let br=function(mr){mr.preventDefault();let Er=yr.getAttribute("data"),wr=document.getElementById(yr.target);wr!==null&&Er!==null&&(wr.value=Er)};yr.addEventListener("click",br)}}var _E={vlangroup:{region:{hide:["id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region"]},"site group":{hide:["id_region","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_sitegroup"]},site:{hide:["id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site"]},location:{hide:["id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location"]},rack:{hide:["id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location","id_rack"]},"cluster group":{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_cluster"],show:["id_clustergroup"]},cluster:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack"],show:["id_clustergroup","id_cluster"]},default:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:[]}}},xE={vlangroup_add:"vlangroup",vlangroup_edit:"vlangroup"};function Pf(yr,br){var mr;for(let Er of Wr(yr)){let wr=(mr=Er.parentElement)==null?void 0:mr.parentElement;wr!==null&&(br==="show"?If(wr,"show"):If(wr,"hide"))}}function SE(yr,br){let mr=br.options[br.selectedIndex].innerText.toLowerCase(),Er=xE[yr];for(let[wr,_r]of Object.entries(_E[Er]))if(mr.endsWith(wr)){for(let xr of _r.hide)Pf(`#${xr}`,"hide");for(let xr of _r.show)Pf(`#${xr}`,"show");break}else for(let xr of _E[Er].default.hide)Pf(`#${xr}`,"hide")}function TE(){for(let yr of Object.keys(xE))for(let br of Wr(`html[data-netbox-url-name="${yr}"] #id_scope_type`))SE(yr,br),br.addEventListener("change",()=>SE(yr,br))}function DE(){for(let yr of[EE,wE,TE])yr()}window.Collapse=sn;window.Modal=ps;window.Popover=Vs;window.Toast=es;window.Tooltip=Hn;function zR(){for(let yr of Wr('[data-bs-toggle="tooltip"]'))new Hn(yr,{container:"body"})}function $R(){for(let yr of Wr('[data-bs-toggle="modal"]'))new ps(yr)}function Un(yr,br,mr,Er){let wr="mdi-alert";switch(yr){case"warning":wr="mdi-alert";break;case"success":wr="mdi-check-circle";break;case"info":wr="mdi-information";break;case"danger":wr="mdi-alert";break}let _r=document.createElement("div");_r.setAttribute("class","toast-container position-fixed bottom-0 end-0 m-3");let xr=document.createElement("div");xr.setAttribute("class",`toast bg-${yr}`),xr.setAttribute("role","alert"),xr.setAttribute("aria-live","assertive"),xr.setAttribute("aria-atomic","true");let Sr=document.createElement("div");Sr.setAttribute("class",`toast-header bg-${yr} text-body`);let Tr=document.createElement("i");Tr.setAttribute("class",`mdi ${wr}`);let Dr=document.createElement("strong");Dr.setAttribute("class","me-auto ms-1"),Dr.innerText=br;let Or=document.createElement("button");Or.setAttribute("type","button"),Or.setAttribute("class","btn-close"),Or.setAttribute("data-bs-dismiss","toast"),Or.setAttribute("aria-label","Close");let Cr=document.createElement("div");if(Cr.setAttribute("class","toast-body"),Sr.appendChild(Tr),Sr.appendChild(Dr),typeof Er!="undefined"){let Lr=document.createElement("small");Lr.setAttribute("class","text-muted"),Sr.appendChild(Lr)}return Sr.appendChild(Or),Cr.innerText=mr.trim(),xr.appendChild(Sr),xr.appendChild(Cr),_r.appendChild(xr),document.body.appendChild(_r),new es(xr)}function UR(){let{hash:yr}=location;if(yr&&yr.match(/^#tab_.+$/)){let br=yr.replace("tab_","");for(let mr of Wr(`ul.nav.nav-tabs .nav-link[data-bs-target="${br}"]`))new Gs(mr).show()}}function VR(){let yr=document.querySelectorAll(".sidebar .accordion-item");function br(mr){for(let Er of yr)Er!==mr?Er.classList.remove("is-open"):Er.classList.toggle("is-open")}for(let mr of yr)for(let Er of mr.querySelectorAll(".accordion-button"))Er.addEventListener("click",()=>{br(mr)})}function WR(){for(let yr of Wr("a.image-preview")){let br=`${Math.round(window.innerWidth/4)}px`,mr=Ho("img",{src:yr.href});mr.style.maxWidth=br;let Er=Ho("div",null,null,[mr]);new Vs(yr,{customClass:"image-preview-popover",trigger:"hover",html:!0,content:Er})}}function Tc(){for(let yr of[zR,$R,UR,WR,VR])yr()}function OE(yr){let br=yr.currentTarget,mr=br.parentElement;mi(mr)&&(br.value===""?mr.classList.add("hide-last-child"):mr.classList.remove("hide-last-child"))}function AE(){let yr=document.getElementById("quicksearch"),br=document.getElementById("quicksearch_clear");mi(yr)&&(yr.addEventListener("keyup",OE,{passive:!0}),yr.addEventListener("search",OE,{passive:!0}),mi(br)&&br.addEventListener("click",()=>$i(this,null,function*(){let mr=new Event("search");yr.value="",yield new Promise(Er=>setTimeout(Er,100)),yr.dispatchEvent(mr)}),{passive:!0}))}function CE(yr,br,mr){return Math.min(Math.max(yr,mr),br)}var LE=class extends Error{constructor(br){super(`Failed to parse color: "${br}"`)}},$a=LE;function GR(yr){if(typeof yr!="string")throw new $a(yr);if(yr.trim().toLowerCase()==="transparent")return[0,0,0,0];let br=yr.trim();br=tN.test(yr)?XR(yr):yr;let mr=JR.exec(br);if(mr){let xr=Array.from(mr).slice(1);return[...xr.slice(0,3).map(Sr=>parseInt(Ua(Sr,2),16)),parseInt(Ua(xr[3]||"f",2),16)/255]}let Er=QR.exec(br);if(Er){let xr=Array.from(Er).slice(1);return[...xr.slice(0,3).map(Sr=>parseInt(Sr,16)),parseInt(xr[3]||"ff",16)/255]}let wr=ZR.exec(br);if(wr){let xr=Array.from(wr).slice(1);return[...xr.slice(0,3).map(Sr=>parseInt(Sr,10)),parseFloat(xr[3]||"1")]}let _r=eN.exec(br);if(_r){let[xr,Sr,Tr,Dr]=Array.from(_r).slice(1).map(parseFloat);if(CE(0,100,Sr)!==Sr)throw new $a(yr);if(CE(0,100,Tr)!==Tr)throw new $a(yr);return[...rN(xr,Sr,Tr),Dr||1]}throw new $a(yr)}function YR(yr){let br=5381,mr=yr.length;for(;mr;)br=br*33^yr.charCodeAt(--mr);return(br>>>0)%2341}var ME=yr=>parseInt(yr.replace(/_/g,""),36),KR="1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm".split(" ").reduce((yr,br)=>{let mr=ME(br.substring(0,3)),Er=ME(br.substring(3)).toString(16),wr="";for(let _r=0;_r<6-Er.length;_r++)wr+="0";return yr[mr]=`${wr}${Er}`,yr},{});function XR(yr){let br=yr.toLowerCase().trim(),mr=KR[YR(br)];if(!mr)throw new $a(yr);return`#${mr}`}var Ua=(yr,br)=>Array.from(Array(br)).map(()=>yr).join(""),JR=new RegExp(`^#${Ua("([a-f0-9])",3)}([a-f0-9])?$`,"i"),QR=new RegExp(`^#${Ua("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),ZR=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${Ua(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),eN=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,tN=/^[a-z]+$/i,kE=yr=>Math.round(yr*255),rN=(yr,br,mr)=>{let Er=mr/100;if(br===0)return[Er,Er,Er].map(kE);let wr=(yr%360+360)%360/60,_r=(1-Math.abs(2*Er-1))*(br/100),xr=_r*(1-Math.abs(wr%2-1)),Sr=0,Tr=0,Dr=0;wr>=0&&wr<1?(Sr=_r,Tr=xr):wr>=1&&wr<2?(Sr=xr,Tr=_r):wr>=2&&wr<3?(Tr=_r,Dr=xr):wr>=3&&wr<4?(Tr=xr,Dr=_r):wr>=4&&wr<5?(Sr=xr,Dr=_r):wr>=5&&wr<6&&(Sr=_r,Dr=xr);let Or=Er-_r/2,Cr=Sr+Or,Ar=Tr+Or,Lr=Dr+Or;return[Cr,Ar,Lr].map(kE)};function iN(yr){if(yr==="transparent")return 0;function br(_r){let xr=_r/255;return xr<=.03928?xr/12.92:Math.pow((xr+.055)/1.055,2.4)}let[mr,Er,wr]=GR(yr);return .2126*br(mr)+.7152*br(Er)+.0722*br(wr)}function nN(yr){return iN(yr)>.179}function Va(yr){return nN(yr)?"#000":"#fff"}var RE=sN;function sN(yr,br,mr){var Er=null,wr=null,_r=function(){Er&&(clearTimeout(Er),wr=null,Er=null)},xr=function(){var Tr=wr;_r(),Tr&&Tr()},Sr=function(){if(!br)return yr.apply(this,arguments);var Tr=this,Dr=arguments,Or=mr&&!Er;if(_r(),wr=function(){yr.apply(Tr,Dr)},Er=setTimeout(function(){if(Er=null,!Or){var Cr=wr;return wr=null,Cr()}},br),Or)return wr()};return Sr.cancel=_r,Sr.flush=xr,Sr}var Gf=vn(BE()),Yf=vn(sw());var Oc={};(function(yr,br){typeof Oc=="object"&&typeof module=="object"?module.exports=br():typeof define=="function"&&define.amd?define([],br):typeof Oc=="object"?Oc.SlimSelect=br():yr.SlimSelect=br()})(window,function(){return mr={},yr.m=br=[function(Er,wr,_r){"use strict";function xr(Sr,Tr){Tr=Tr||{bubbles:!1,cancelable:!1,detail:void 0};var Dr=document.createEvent("CustomEvent");return Dr.initCustomEvent(Sr,Tr.bubbles,Tr.cancelable,Tr.detail),Dr}wr.__esModule=!0,wr.kebabCase=wr.highlight=wr.isValueInArrayOfObjects=wr.debounce=wr.putContent=wr.ensureElementInView=wr.hasClassInTree=void 0,wr.hasClassInTree=function(Sr,Tr){function Dr(Or,Cr){return Cr&&Or&&Or.classList&&Or.classList.contains(Cr)?Or:null}return Dr(Sr,Tr)||function Or(Cr,Ar){return Cr&&Cr!==document?Dr(Cr,Ar)?Cr:Or(Cr.parentNode,Ar):null}(Sr,Tr)},wr.ensureElementInView=function(Sr,Tr){var Dr=Sr.scrollTop+Sr.offsetTop,Or=Dr+Sr.clientHeight,Cr=Tr.offsetTop,Tr=Cr+Tr.clientHeight;Cr=window.innerHeight?"above":Dr?Tr:"below"},wr.debounce=function(Sr,Tr,Dr){var Or;return Tr===void 0&&(Tr=100),Dr===void 0&&(Dr=!1),function(){for(var Cr=[],Ar=0;Ar[^<>]*').concat(Tr,""))},wr.kebabCase=function(Sr){var Tr=Sr.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,function(Dr){return"-"+Dr.toLowerCase()});return Sr[0]===Sr[0].toUpperCase()?Tr.substring(1):Tr},typeof(wr=window).CustomEvent!="function"&&(xr.prototype=wr.Event.prototype,wr.CustomEvent=xr)},function(Er,wr,_r){"use strict";wr.__esModule=!0,wr.validateOption=wr.validateData=wr.Data=void 0;var xr=(Sr.prototype.newOption=function(Dr){return{id:Dr.id||String(Math.floor(1e8*Math.random())),value:Dr.value||"",text:Dr.text||"",innerHTML:Dr.innerHTML||"",selected:Dr.selected||!1,display:Dr.display===void 0||Dr.display,disabled:Dr.disabled||!1,placeholder:Dr.placeholder||!1,class:Dr.class||void 0,data:Dr.data||{},mandatory:Dr.mandatory||!1}},Sr.prototype.add=function(Dr){this.data.push({id:String(Math.floor(1e8*Math.random())),value:Dr.value,text:Dr.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:Dr.mandatory,data:{}})},Sr.prototype.parseSelectData=function(){this.data=[];for(var Dr=0,Or=this.main.select.element.childNodes;Dr',placeholder:this.placeholder,searchPlaceholder:"Filter",onChange:()=>this.handleSlimChange()}),this.base.multiple&&(this.slim.config.closeOnSelect=!1),this.getStaticParams(),this.getDynamicParams(),this.getPathKeys();for(let[xr,Sr]of this.staticParams.entries())this.queryParams.set(xr,Sr);for(let xr of this.dynamicParams.keys())this.updateQueryParams(xr);for(let xr of this.pathValues.keys())this.updatePathValues(xr);this.queryParams.set("brief",[!0]),this.updateQueryUrl(),this.resetClasses(),this.setSlimStyles(),this.initResetButton(),this.initRefreshButton(),this.addEventListeners();let wr=this.base.getAttribute("data-fetch-trigger"),_r=this.base.closest(".content-container .collapse");switch(lw(wr)?this.trigger=wr:_r!==null?this.trigger="collapse":this.trigger="open",this.trigger){case"collapse":_r!==null&&(_r.addEventListener("show.bs.collapse",()=>this.loadData()),_r.addEventListener("hide.bs.collapse",()=>this.resetOptions()));break;case"open":this.slim.beforeOpen=()=>this.loadData();break;case"load":Promise.all([this.loadData()]);break}}get options(){return this.slim.data.data.filter(dw)}set options(br){let mr=br;this.nullOption!==null&&(mr=[this.nullOption,...mr]);let Er=yE(mr,"value"),wr=typeof Er.find(xr=>xr.value==="")!="undefined",_r=Er.findIndex(xr=>xr.value==="");wr&&_r>=0?Er[_r]=this.emptyOption:Er.unshift(this.emptyOption),this.slim.setData(Er)}resetOptions(){this.options=[this.emptyOption]}disable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")||this.slim.slim.singleSelected.container.setAttribute("disabled",""):this.slim.slim.multiSelected!==null&&(this.slim.slim.multiSelected.container.hasAttribute("disabled")||this.slim.slim.multiSelected.container.setAttribute("disabled","")),this.slim.disable()}enable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")&&this.slim.slim.singleSelected.container.removeAttribute("disabled"):this.slim.slim.multiSelected!==null&&this.slim.slim.multiSelected.container.hasAttribute("disabled")&&this.slim.slim.multiSelected.container.removeAttribute("disabled"),this.slim.enable()}addEventListeners(){let br=RE(Er=>this.handleSearch(Er),300,!1);this.slim.slim.search.input.addEventListener("keyup",Er=>{if(!Er.key.match(/^(Arrow|Enter|Tab).*/))return br(Er)}),this.slim.slim.search.input.addEventListener("paste",Er=>br(Er)),this.slim.slim.list.addEventListener("scroll",()=>this.handleScroll()),this.base.addEventListener(`netbox.select.atbottom.${this.name}`,()=>this.fetchOptions(this.more,"merge")),this.base.addEventListener(`netbox.select.disabled.${this.name}`,Er=>this.handleDisableEnable(Er));let mr=new Set([...this.dynamicParams.keys(),...this.pathValues.keys()]);for(let Er of mr){let wr=document.querySelector(`[name="${Er}"]`);wr!==null&&wr.addEventListener("change",_r=>this.handleEvent(_r)),this.base.addEventListener(`netbox.select.onload.${Er}`,_r=>this.handleEvent(_r))}}loadData(){return $i(this,null,function*(){try{this.disable(),yield this.getOptions("replace")}catch(br){console.error(br)}finally{this.setOptionStyles(),this.enable(),this.base.dispatchEvent(this.loadEvent)}})}getPreselectedOptions(){return Array.from(this.base.options).filter(br=>br.selected).filter(br=>!(br.value==="---------"||br.innerText==="---------"))}processOptions(br,mr="merge"){return $i(this,null,function*(){let Er=this.getPreselectedOptions(),wr=Er.map(Sr=>Sr.getAttribute("value")).filter(mi),_r=Er.map(Sr=>({value:Sr.value,text:(0,Gf.encode)(Sr.innerText),selected:!0,disabled:!1})),xr=[];for(let Sr of br.results){let Tr=(0,Gf.encode)(Sr.display);typeof Sr._depth=="number"&&Sr._depth>0&&(Tr=`${"\u2500".repeat(Sr._depth)} ${Tr}`);let Dr={},Or=Sr.id.toString(),Cr,Ar,Lr;for(let[Nr,Ir]of Object.entries(Sr)){if(!["id","slug"].includes(Nr)&&["string","number","boolean"].includes(typeof Ir)){let Pr=_s(Nr,"_","-");Dr[Pr]=String(Ir)}this.disabledAttributes.some(Pr=>Pr.toLowerCase()===Nr.toLowerCase())&&(typeof Ir=="string"&&Ir.toLowerCase()!=="false"||typeof Ir=="boolean"&&Ir===!0||typeof Ir=="number"&&Ir>0)&&(Lr=!0)}wr.some(Nr=>this.disabledOptions.includes(Nr))&&(Lr=!0),wr.includes(Or)&&(Ar=!0,Lr=!1);let Rr={value:Or,text:Tr,data:Dr,style:Cr,selected:Ar,disabled:Lr};xr=[...xr,Rr]}switch(mr){case"merge":this.options=[...this.options,...xr];break;case"replace":this.options=[..._r,...xr];break}pE(br)?this.more=br.next:this.more=null})}fetchOptions(br,mr="merge"){return $i(this,null,function*(){if(typeof br=="string"){let Er=yield gE(br);if(ns(Er))return hE(Er)?this.handleError(Er.exception,Er.error):this.handleError(`Error Fetching Options for field '${this.name}'`,Er.error);yield this.processOptions(Er,mr)}})}getOptions(br="merge"){return $i(this,null,function*(){if(this.queryUrl.includes("{{")){this.resetOptions();return}yield this.fetchOptions(this.queryUrl,br)})}handleSearch(br){return $i(this,null,function*(){let{value:mr}=br.target,Er=Yf.default.stringifyUrl({url:this.queryUrl,query:{q:mr}});Er.includes("{{")||(yield this.fetchOptions(Er,"merge"),this.slim.data.search(mr),this.slim.render())})}handleScroll(){let br=Math.floor(this.slim.slim.list.scrollTop)+this.slim.slim.list.offsetHeight===this.slim.slim.list.scrollHeight;this.atBottom&&!br?(this.atBottom=!1,this.base.dispatchEvent(this.bottomEvent)):!this.atBottom&&br&&(this.atBottom=!0,this.base.dispatchEvent(this.bottomEvent))}handleEvent(br){let mr=br.target;this.updateQueryParams(mr.name),this.updatePathValues(mr.name),this.updateQueryUrl(),Promise.all([this.loadData()])}handleDisableEnable(br){let mr=br.target;mr.disabled===!0?this.disable():mr.disabled===!1&&this.enable()}handleError(br,mr){Un("danger",br,mr).show(),this.resetOptions()}handleSlimChange(){let br=this.slim.slim;br&&(br.container.classList.contains("is-invalid")||this.base.classList.contains("is-invalid"))&&(br.container.classList.remove("is-invalid"),this.base.classList.remove("is-invalid")),this.base.dispatchEvent(this.loadEvent)}updateQueryUrl(){let br={};for(let[wr,_r]of this.queryParams.entries())br[wr]=_r;let mr=this.url;for(let[wr,_r]of this.pathValues.entries())for(let xr of this.url.matchAll(new RegExp(`({{${wr}}})`,"g")))mi(_r)&&(mr=_s(mr,xr[1],_r.toString()));let Er=Yf.default.stringifyUrl({url:mr,query:br});this.queryUrl!==Er&&(this.queryUrl=Er,this.base.setAttribute("data-url",Er))}updateQueryParams(br){let mr=document.querySelector(`[name="${br}"]`);if(mr!==null){let Er=[];if(mr.multiple?Er=Array.from(mr.options).filter(wr=>wr.selected).map(wr=>wr.value):mr.value!==""&&(Er=[mr.value]),Er.length>0){this.dynamicParams.updateValue(br,Er);let wr=this.dynamicParams.get(br);if(typeof wr!="undefined"){let{queryParam:_r,queryValue:xr}=wr,Sr=[];if(this.staticParams.has(_r)){let Tr=this.staticParams.get(_r);typeof Tr!="undefined"&&(Sr=[...Tr,...xr])}else Sr=xr;Sr.length>0?this.queryParams.set(_r,Sr):this.queryParams.delete(_r)}}else{let wr=this.dynamicParams.queryParam(br);wr!==null&&this.queryParams.delete(wr)}}}updatePathValues(br){let mr=_s(br,/^id_/i,""),Er=za(`id_${mr}`);Er!==null&&this.url.includes("{{")&&Boolean(this.url.match(new RegExp(`({{(${br})}})`,"g")))&&(mi(Er.value)?this.pathValues.set(br,Er.value):this.pathValues.set(br,""))}getPlaceholder(){let br=this.name;if(this.base.id){let mr=document.querySelector(`label[for="${this.base.id}"]`);mr!==null&&(br=`Select ${mr.innerText.trim()}`)}return br}getDisabledOptions(){var mr;let br=[];if(aw(this.base))try{let Er=JSON.parse((mr=this.base.getAttribute("data-query-param-exclude"))!=null?mr:"[]");br=[...br,...Er]}catch(Er){console.group(`Unable to parse data-query-param-exclude value on select element '${this.name}'`),console.warn(Er),console.groupEnd()}return br}getDisabledAttributes(){let br=[...fw],mr=this.base.getAttribute("disabled-indicator");return mi(mr)&&(br=[...br,mr]),br}getPathKeys(){for(let br of this.url.matchAll(new RegExp("{{(.+)}}","g")))this.pathValues.set(br[1],"")}getDynamicParams(){let br=this.base.getAttribute("data-dynamic-params");try{this.dynamicParams.addFromJson(br)}catch(mr){console.group(`Unable to determine dynamic query parameters for select field '${this.name}'`),console.warn(mr),console.groupEnd()}}getStaticParams(){let br=this.base.getAttribute("data-static-params");try{if(mi(br)){let mr=JSON.parse(br);if(uw(mr))for(let{queryParam:Er,queryValue:wr}of mr)Array.isArray(wr)?this.staticParams.set(Er,wr):this.staticParams.set(Er,[wr])}}catch(mr){console.group(`Unable to determine static query parameters for select field '${this.name}'`),console.warn(mr),console.groupEnd()}}setSlimStyles(){let{width:br,height:mr}=this.slim.slim.container.getBoundingClientRect();this.base.style.opacity="0",this.base.style.width=`${br}px`,this.base.style.height=`${mr}px`,this.base.style.display="block",this.base.style.position="absolute",this.base.style.pointerEvents="none"}setOptionStyles(){for(let br of this.options)if("data"in br&&"id"in br&&typeof br.data!="undefined"&&typeof br.id!="undefined"&&"color"in br.data){let mr=br.id,Er=br.data,wr=document.createElement("style"),_r=`#${Er.color}`,xr=Va(_r);wr.setAttribute("data-netbox",mr),wr.innerHTML=_s(` +Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`),Er}static addGrid(br,mr={}){if(!br)return null;let Er=br;if(!br.classList.contains("grid-stack")){let _r=document.implementation.createHTMLDocument("");_r.body.innerHTML=`
    `,Er=_r.body.children[0],br.appendChild(Er)}return Ci.init(mr,Er)}static registerEngine(br){Ci.engineClass=br}get placeholder(){if(!this._placeholder){let br=document.createElement("div");br.className="placeholder-content",this.opts.placeholderText&&(br.innerHTML=this.opts.placeholderText),this._placeholder=document.createElement("div"),this._placeholder.classList.add(this.opts.placeholderClass,gn.gridDefaults.itemClass,this.opts.itemClass),this.placeholder.appendChild(br)}return this._placeholder}addWidget(br,mr){function Er(Sr){return Sr.el!==void 0||Sr.x!==void 0||Sr.y!==void 0||Sr.w!==void 0||Sr.h!==void 0||Sr.content!==void 0}let wr,_r;if(typeof br=="string"){let Sr=document.implementation.createHTMLDocument("");Sr.body.innerHTML=br,wr=Sr.body.children[0]}else if(arguments.length===0||arguments.length===1&&Er(br))if(_r=mr=br,_r==null?void 0:_r.el)wr=_r.el;else if(this.opts.addRemoveCB)wr=this.opts.addRemoveCB(this,mr,!0);else{let Sr=(mr==null?void 0:mr.content)||"",Tr=document.implementation.createHTMLDocument("");Tr.body.innerHTML=`
    ${Sr}
    `,wr=Tr.body.children[0]}else wr=br;if(!wr)return;let xr=this._readAttr(wr);return mr=Yr.Utils.cloneDeep(mr)||{},Yr.Utils.defaults(mr,xr),_r=this.engine.prepareNode(mr),this._writeAttr(wr,mr),this._insertNotAppend?this.el.prepend(wr):this.el.appendChild(wr),this._prepareElement(wr,!0,mr),this._updateContainerHeight(),_r.subGrid&&this.makeSubGrid(_r.el,void 0,void 0,!1),this._prevColumn&&this.opts.column===1&&(this._ignoreLayoutsNodeChange=!0),this._triggerAddEvent(),this._triggerChangeEvent(),delete this._ignoreLayoutsNodeChange,wr}makeSubGrid(br,mr,Er,wr=!0){var _r,xr,Sr;let Tr=br.gridstackNode;if(Tr||(Tr=this.makeWidget(br).gridstackNode),(_r=Tr.subGrid)===null||_r===void 0?void 0:_r.el)return Tr.subGrid;let Or,Dr=this;for(;Dr&&!Or;)Or=(xr=Dr.opts)===null||xr===void 0?void 0:xr.subGrid,Dr=(Sr=Dr.parentGridItem)===null||Sr===void 0?void 0:Sr.grid;mr=Yr.Utils.cloneDeep(Object.assign(Object.assign(Object.assign({},Or||{}),{children:void 0}),mr||Tr.subGrid)),Tr.subGrid=mr;let Cr;mr.column==="auto"&&(Cr=!0,mr.column=Math.max(Tr.w||1,(Er==null?void 0:Er.w)||1),mr.disableOneColumnMode=!0);let Ar=Tr.el.querySelector(".grid-stack-item-content"),Lr,Rr;if(wr){this._removeDD(Tr.el);let Ir=document.implementation.createHTMLDocument("");Ir.body.innerHTML='
    ',Lr=Ir.body.children[0],Lr.appendChild(Ar),Rr=Object.assign(Object.assign({},Tr),{x:0,y:0}),Yr.Utils.removeInternalForSave(Rr),delete Rr.subGrid,Tr.content&&(Rr.content=Tr.content,delete Tr.content),Ir.body.innerHTML='
    ',Ar=Ir.body.children[0],Tr.el.appendChild(Ar),this._prepareDragDropByNode(Tr)}if(Er){let Ir=Cr?mr.column:Tr.w,Pr=Tr.h+Er.h,Br=Tr.el.style;Br.transition="none",this.update(Tr.el,{w:Ir,h:Pr}),setTimeout(()=>Br.transition=null)}let Nr=Tr.subGrid=Ci.addGrid(Ar,mr);return(Er==null?void 0:Er._moving)&&(Nr._isTemp=!0),Cr&&(Nr._autoColumn=!0),wr&&Nr.addWidget(Lr,Rr),Er&&(Er._moving?window.setTimeout(()=>Yr.Utils.simulateMouseEvent(Er._event,"mouseenter",Nr.el),0):Nr.addWidget(Tr.el,Tr)),Nr}removeAsSubGrid(br){var mr;let Er=(mr=this.parentGridItem)===null||mr===void 0?void 0:mr.grid;!Er||(Er.batchUpdate(),Er.removeWidget(this.parentGridItem.el,!0,!0),this.engine.nodes.forEach(wr=>{wr.x+=this.parentGridItem.x,wr.y+=this.parentGridItem.y,Er.addWidget(wr.el,wr)}),Er.batchUpdate(!1),delete this.parentGridItem,br&&window.setTimeout(()=>Yr.Utils.simulateMouseEvent(br._event,"mouseenter",Er.el),0))}save(br=!0,mr=!1){let Er=this.engine.save(br);if(Er.forEach(wr=>{var _r;if(br&&wr.el&&!wr.subGrid){let xr=wr.el.querySelector(".grid-stack-item-content");wr.content=xr?xr.innerHTML:void 0,wr.content||delete wr.content}else if(br||delete wr.content,(_r=wr.subGrid)===null||_r===void 0?void 0:_r.el){let xr=wr.subGrid.save(br,mr);wr.subGrid=mr?xr:{children:xr}}delete wr.el}),mr){let wr=Yr.Utils.cloneDeep(this.opts);wr.marginBottom===wr.marginTop&&wr.marginRight===wr.marginLeft&&wr.marginTop===wr.marginRight&&(wr.margin=wr.marginTop,delete wr.marginTop,delete wr.marginRight,delete wr.marginBottom,delete wr.marginLeft),wr.rtl===(this.el.style.direction==="rtl")&&(wr.rtl="auto"),this._isAutoCellHeight&&(wr.cellHeight="auto"),this._autoColumn&&(wr.column="auto",delete wr.disableOneColumnMode);let _r=wr._alwaysShowResizeHandle;return delete wr._alwaysShowResizeHandle,_r!==void 0?wr.alwaysShowResizeHandle=_r:delete wr.alwaysShowResizeHandle,Yr.Utils.removeInternalAndSame(wr,gn.gridDefaults),wr.children=Er,wr}return Er}load(br,mr=this.opts.addRemoveCB||!0){let Er=Ci.Utils.sort([...br],-1,this._prevColumn||this.getColumn());this._insertNotAppend=!0,this._prevColumn&&this._prevColumn!==this.opts.column&&Er.some(xr=>xr.x+xr.w>this.opts.column)&&(this._ignoreLayoutsNodeChange=!0,this.engine.cacheLayout(Er,this._prevColumn,!0));let wr=this.opts.addRemoveCB;typeof mr=="function"&&(this.opts.addRemoveCB=mr);let _r=[];return this.batchUpdate(),mr&&[...this.engine.nodes].forEach(Sr=>{Er.find(Or=>Sr.id===Or.id)||(this.opts.addRemoveCB&&this.opts.addRemoveCB(this,Sr,!1),_r.push(Sr),this.removeWidget(Sr.el,!0,!1))}),Er.forEach(xr=>{let Sr=xr.id||xr.id===0?this.engine.nodes.find(Tr=>Tr.id===xr.id):void 0;if(Sr){if(this.update(Sr.el,xr),xr.subGrid&&xr.subGrid.children){let Tr=Sr.el.querySelector(".grid-stack");Tr&&Tr.gridstack&&(Tr.gridstack.load(xr.subGrid.children),this._insertNotAppend=!0)}}else mr&&this.addWidget(xr)}),this.engine.removedNodes=_r,this.batchUpdate(!1),delete this._ignoreLayoutsNodeChange,delete this._insertNotAppend,wr?this.opts.addRemoveCB=wr:delete this.opts.addRemoveCB,this}batchUpdate(br=!0){return this.engine.batchUpdate(br),br||(this._triggerRemoveEvent(),this._triggerAddEvent(),this._triggerChangeEvent()),this}getCellHeight(br=!1){if(this.opts.cellHeight&&this.opts.cellHeight!=="auto"&&(!br||!this.opts.cellHeightUnit||this.opts.cellHeightUnit==="px"))return this.opts.cellHeight;let mr=this.el.querySelector("."+this.opts.itemClass);if(mr){let wr=Yr.Utils.toNumber(mr.getAttribute("gs-h"));return Math.round(mr.offsetHeight/wr)}let Er=parseInt(this.el.getAttribute("gs-current-row"));return Er?Math.round(this.el.getBoundingClientRect().height/Er):this.opts.cellHeight}cellHeight(br,mr=!0){if(mr&&br!==void 0&&this._isAutoCellHeight!==(br==="auto")&&(this._isAutoCellHeight=br==="auto",this._updateWindowResizeEvent()),(br==="initial"||br==="auto")&&(br=void 0),br===void 0){let wr=-this.opts.marginRight-this.opts.marginLeft+this.opts.marginTop+this.opts.marginBottom;br=this.cellWidth()+wr}let Er=Yr.Utils.parseHeight(br);return this.opts.cellHeightUnit===Er.unit&&this.opts.cellHeight===Er.h?this:(this.opts.cellHeightUnit=Er.unit,this.opts.cellHeight=Er.h,mr&&this._updateStyles(!0),this)}cellWidth(){return this._widthOrContainer()/this.getColumn()}_widthOrContainer(){return this.el.clientWidth||this.el.parentElement.clientWidth||window.innerWidth}compact(){return this.engine.compact(),this._triggerChangeEvent(),this}column(br,mr="moveScale"){if(br<1||this.opts.column===br)return this;let Er=this.getColumn();br===1?this._prevColumn=Er:delete this._prevColumn,this.el.classList.remove("grid-stack-"+Er),this.el.classList.add("grid-stack-"+br),this.opts.column=this.engine.column=br;let wr;return br===1&&this.opts.oneColumnModeDomSort&&(wr=[],this.getGridItems().forEach(_r=>{_r.gridstackNode&&wr.push(_r.gridstackNode)}),wr.length||(wr=void 0)),this.engine.updateNodeWidths(Er,br,wr,mr),this._isAutoCellHeight&&this.cellHeight(),this._ignoreLayoutsNodeChange=!0,this._triggerChangeEvent(),delete this._ignoreLayoutsNodeChange,this}getColumn(){return this.opts.column}getGridItems(){return Array.from(this.el.children).filter(br=>br.matches("."+this.opts.itemClass)&&!br.matches("."+this.opts.placeholderClass))}destroy(br=!0){if(!!this.el)return this._updateWindowResizeEvent(!0),this.setStatic(!0,!1),this.setAnimation(!1),br?this.el.parentNode.removeChild(this.el):(this.removeAll(br),this.el.classList.remove(this._styleSheetClass)),this._removeStylesheet(),this.el.removeAttribute("gs-current-row"),delete this.parentGridItem,delete this.opts,delete this._placeholder,delete this.engine,delete this.el.gridstack,delete this.el,this}float(br){return this.opts.float!==br&&(this.opts.float=this.engine.float=br,this._triggerChangeEvent()),this}getFloat(){return this.engine.float}getCellFromPixel(br,mr=!1){let Er=this.el.getBoundingClientRect(),wr;mr?wr={top:Er.top+document.documentElement.scrollTop,left:Er.left}:wr={top:this.el.offsetTop,left:this.el.offsetLeft};let _r=br.left-wr.left,xr=br.top-wr.top,Sr=Er.width/this.getColumn(),Tr=Er.height/parseInt(this.el.getAttribute("gs-current-row"));return{x:Math.floor(_r/Sr),y:Math.floor(xr/Tr)}}getRow(){return Math.max(this.engine.getRow(),this.opts.minRow)}isAreaEmpty(br,mr,Er,wr){return this.engine.isAreaEmpty(br,mr,Er,wr)}makeWidget(br){let mr=Ci.getElement(br);return this._prepareElement(mr,!0),this._updateContainerHeight(),this._triggerAddEvent(),this._triggerChangeEvent(),mr}on(br,mr){return br.indexOf(" ")!==-1?(br.split(" ").forEach(wr=>this.on(wr,mr)),this):(br==="change"||br==="added"||br==="removed"||br==="enable"||br==="disable"?(br==="enable"||br==="disable"?this._gsEventHandler[br]=wr=>mr(wr):this._gsEventHandler[br]=wr=>mr(wr,wr.detail),this.el.addEventListener(br,this._gsEventHandler[br])):br==="drag"||br==="dragstart"||br==="dragstop"||br==="resizestart"||br==="resize"||br==="resizestop"||br==="dropped"?this._gsEventHandler[br]=mr:console.log("GridStack.on("+br+') event not supported, but you can still use $(".grid-stack").on(...) while jquery-ui is still used internally.'),this)}off(br){return br.indexOf(" ")!==-1?(br.split(" ").forEach(Er=>this.off(Er)),this):((br==="change"||br==="added"||br==="removed"||br==="enable"||br==="disable")&&this._gsEventHandler[br]&&this.el.removeEventListener(br,this._gsEventHandler[br]),delete this._gsEventHandler[br],this)}removeWidget(br,mr=!0,Er=!0){return Ci.getElements(br).forEach(wr=>{if(wr.parentElement&&wr.parentElement!==this.el)return;let _r=wr.gridstackNode;_r||(_r=this.engine.nodes.find(xr=>wr===xr.el)),!!_r&&(delete wr.gridstackNode,this._removeDD(wr),this.engine.removeNode(_r,mr,Er),mr&&wr.parentElement&&wr.remove())}),Er&&(this._triggerRemoveEvent(),this._triggerChangeEvent()),this}removeAll(br=!0){return this.engine.nodes.forEach(mr=>{delete mr.el.gridstackNode,this._removeDD(mr.el)}),this.engine.removeAll(br),this._triggerRemoveEvent(),this}setAnimation(br){return br?this.el.classList.add("grid-stack-animate"):this.el.classList.remove("grid-stack-animate"),this}setStatic(br,mr=!0,Er=!0){return this.opts.staticGrid===br?this:(this.opts.staticGrid=br,this._setupRemoveDrop(),this._setupAcceptWidget(),this.engine.nodes.forEach(wr=>{this._prepareDragDropByNode(wr),wr.subGrid&&Er&&wr.subGrid.setStatic(br,mr,Er)}),mr&&this._setStaticClass(),this)}update(br,mr){if(arguments.length>2){console.warn("gridstack.ts: `update(el, x, y, w, h)` is deprecated. Use `update(el, {x, w, content, ...})`. It will be removed soon");let Er=arguments,wr=1;return mr={x:Er[wr++],y:Er[wr++],w:Er[wr++],h:Er[wr++]},this.update(br,mr)}return Ci.getElements(br).forEach(Er=>{if(!Er||!Er.gridstackNode)return;let wr=Er.gridstackNode,_r=Yr.Utils.cloneDeep(mr);delete _r.autoPosition;let xr=["x","y","w","h"],Sr;if(xr.some(Dr=>_r[Dr]!==void 0&&_r[Dr]!==wr[Dr])&&(Sr={},xr.forEach(Dr=>{Sr[Dr]=_r[Dr]!==void 0?_r[Dr]:wr[Dr],delete _r[Dr]})),!Sr&&(_r.minW||_r.minH||_r.maxW||_r.maxH)&&(Sr={}),_r.content){let Dr=Er.querySelector(".grid-stack-item-content");Dr&&Dr.innerHTML!==_r.content&&(Dr.innerHTML=_r.content),delete _r.content}let Tr=!1,Or=!1;for(let Dr in _r)Dr[0]!=="_"&&wr[Dr]!==_r[Dr]&&(wr[Dr]=_r[Dr],Tr=!0,Or=Or||!this.opts.staticGrid&&(Dr==="noResize"||Dr==="noMove"||Dr==="locked"));Sr&&(this.engine.cleanNodes().beginUpdate(wr).moveNode(wr,Sr),this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate()),Tr&&this._writeAttr(Er,wr),Or&&this._prepareDragDropByNode(wr)}),this}margin(br){if(!(typeof br=="string"&&br.split(" ").length>1)){let Er=Yr.Utils.parseHeight(br);if(this.opts.marginUnit===Er.unit&&this.opts.margin===Er.h)return}return this.opts.margin=br,this.opts.marginTop=this.opts.marginBottom=this.opts.marginLeft=this.opts.marginRight=void 0,this._initMargin(),this._updateStyles(!0),this}getMargin(){return this.opts.margin}willItFit(br){if(arguments.length>1){console.warn("gridstack.ts: `willItFit(x,y,w,h,autoPosition)` is deprecated. Use `willItFit({x, y,...})`. It will be removed soon");let mr=arguments,Er=0,wr={x:mr[Er++],y:mr[Er++],w:mr[Er++],h:mr[Er++],autoPosition:mr[Er++]};return this.willItFit(wr)}return this.engine.willItFit(br)}_triggerChangeEvent(){if(this.engine.batchMode)return this;let br=this.engine.getDirtyNodes(!0);return br&&br.length&&(this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(br),this._triggerEvent("change",br)),this.engine.saveInitial(),this}_triggerAddEvent(){return this.engine.batchMode?this:(this.engine.addedNodes&&this.engine.addedNodes.length>0&&(this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(this.engine.addedNodes),this.engine.addedNodes.forEach(br=>{delete br._dirty}),this._triggerEvent("added",this.engine.addedNodes),this.engine.addedNodes=[]),this)}_triggerRemoveEvent(){return this.engine.batchMode?this:(this.engine.removedNodes&&this.engine.removedNodes.length>0&&(this._triggerEvent("removed",this.engine.removedNodes),this.engine.removedNodes=[]),this)}_triggerEvent(br,mr){let Er=mr?new CustomEvent(br,{bubbles:!1,detail:mr}):new Event(br);return this.el.dispatchEvent(Er),this}_removeStylesheet(){return this._styles&&(Yr.Utils.removeStylesheet(this._styleSheetClass),delete this._styles),this}_updateStyles(br=!1,mr){if(br&&this._removeStylesheet(),mr||(mr=this.getRow()),this._updateContainerHeight(),this.opts.cellHeight===0)return this;let Er=this.opts.cellHeight,wr=this.opts.cellHeightUnit,_r=`.${this._styleSheetClass} > .${this.opts.itemClass}`;if(!this._styles){let xr=this.opts.styleInHead?void 0:this.el.parentNode;if(this._styles=Yr.Utils.createStylesheet(this._styleSheetClass,xr),!this._styles)return this;this._styles._max=0,Yr.Utils.addCSSRule(this._styles,_r,`min-height: ${Er}${wr}`);let Sr=this.opts.marginTop+this.opts.marginUnit,Tr=this.opts.marginBottom+this.opts.marginUnit,Or=this.opts.marginRight+this.opts.marginUnit,Dr=this.opts.marginLeft+this.opts.marginUnit,Cr=`${_r} > .grid-stack-item-content`,Ar=`.${this._styleSheetClass} > .grid-stack-placeholder > .placeholder-content`;Yr.Utils.addCSSRule(this._styles,Cr,`top: ${Sr}; right: ${Or}; bottom: ${Tr}; left: ${Dr};`),Yr.Utils.addCSSRule(this._styles,Ar,`top: ${Sr}; right: ${Or}; bottom: ${Tr}; left: ${Dr};`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-ne`,`right: ${Or}`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-e`,`right: ${Or}`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-se`,`right: ${Or}; bottom: ${Tr}`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-nw`,`left: ${Dr}`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-w`,`left: ${Dr}`),Yr.Utils.addCSSRule(this._styles,`${_r} > .ui-resizable-sw`,`left: ${Dr}; bottom: ${Tr}`)}if(mr=mr||this._styles._max,mr>this._styles._max){let xr=Sr=>Er*Sr+wr;for(let Sr=this._styles._max+1;Sr<=mr;Sr++){let Tr=xr(Sr);Yr.Utils.addCSSRule(this._styles,`${_r}[gs-y="${Sr-1}"]`,`top: ${xr(Sr-1)}`),Yr.Utils.addCSSRule(this._styles,`${_r}[gs-h="${Sr}"]`,`height: ${Tr}`),Yr.Utils.addCSSRule(this._styles,`${_r}[gs-min-h="${Sr}"]`,`min-height: ${Tr}`),Yr.Utils.addCSSRule(this._styles,`${_r}[gs-max-h="${Sr}"]`,`max-height: ${Tr}`)}this._styles._max=mr}return this}_updateContainerHeight(){if(!this.engine||this.engine.batchMode)return this;let br=this.getRow()+this._extraDragRow;if(this.el.setAttribute("gs-current-row",String(br)),br===0)return this.el.style.removeProperty("min-height"),this;let mr=this.opts.cellHeight,Er=this.opts.cellHeightUnit;return mr?(this.el.style.minHeight=br*mr+Er,this):this}_prepareElement(br,mr=!1,Er){br.classList.add(this.opts.itemClass),Er=Er||this._readAttr(br),br.gridstackNode=Er,Er.el=br,Er.grid=this;let wr=Object.assign({},Er);return Er=this.engine.addNode(Er,mr),Yr.Utils.same(Er,wr)||this._writeAttr(br,Er),this._prepareDragDropByNode(Er),this}_writePosAttr(br,mr){return mr.x!==void 0&&mr.x!==null&&br.setAttribute("gs-x",String(mr.x)),mr.y!==void 0&&mr.y!==null&&br.setAttribute("gs-y",String(mr.y)),mr.w&&br.setAttribute("gs-w",String(mr.w)),mr.h&&br.setAttribute("gs-h",String(mr.h)),this}_writeAttr(br,mr){if(!mr)return this;this._writePosAttr(br,mr);let Er={autoPosition:"gs-auto-position",minW:"gs-min-w",minH:"gs-min-h",maxW:"gs-max-w",maxH:"gs-max-h",noResize:"gs-no-resize",noMove:"gs-no-move",locked:"gs-locked",id:"gs-id"};for(let wr in Er)mr[wr]?br.setAttribute(Er[wr],String(mr[wr])):br.removeAttribute(Er[wr]);return this}_readAttr(br){let mr={};mr.x=Yr.Utils.toNumber(br.getAttribute("gs-x")),mr.y=Yr.Utils.toNumber(br.getAttribute("gs-y")),mr.w=Yr.Utils.toNumber(br.getAttribute("gs-w")),mr.h=Yr.Utils.toNumber(br.getAttribute("gs-h")),mr.maxW=Yr.Utils.toNumber(br.getAttribute("gs-max-w")),mr.minW=Yr.Utils.toNumber(br.getAttribute("gs-min-w")),mr.maxH=Yr.Utils.toNumber(br.getAttribute("gs-max-h")),mr.minH=Yr.Utils.toNumber(br.getAttribute("gs-min-h")),mr.autoPosition=Yr.Utils.toBool(br.getAttribute("gs-auto-position")),mr.noResize=Yr.Utils.toBool(br.getAttribute("gs-no-resize")),mr.noMove=Yr.Utils.toBool(br.getAttribute("gs-no-move")),mr.locked=Yr.Utils.toBool(br.getAttribute("gs-locked")),mr.id=br.getAttribute("gs-id");for(let Er in mr){if(!mr.hasOwnProperty(Er))return;!mr[Er]&&mr[Er]!==0&&delete mr[Er]}return mr}_setStaticClass(){let br=["grid-stack-static"];return this.opts.staticGrid?(this.el.classList.add(...br),this.el.setAttribute("gs-static","true")):(this.el.classList.remove(...br),this.el.removeAttribute("gs-static")),this}onParentResize(){if(!this.el||!this.el.clientWidth)return;let br=!1;if(this._autoColumn&&this.parentGridItem)this.opts.column!==this.parentGridItem.w&&(br=!0,this.column(this.parentGridItem.w,"none"));else{let mr=!this.opts.disableOneColumnMode&&this.el.clientWidth<=this.opts.oneColumnSize;this.opts.column===1!==mr&&(br=!0,this.opts.animate&&this.setAnimation(!1),this.column(mr?1:this._prevColumn),this.opts.animate&&this.setAnimation(!0))}return this._isAutoCellHeight&&(!br&&this.opts.cellHeightThrottle?(this._cellHeightThrottle||(this._cellHeightThrottle=Yr.Utils.throttle(()=>this.cellHeight(),this.opts.cellHeightThrottle)),this._cellHeightThrottle()):this.cellHeight()),this.engine.nodes.forEach(mr=>{mr.subGrid&&mr.subGrid.onParentResize()}),this}_updateWindowResizeEvent(br=!1){let mr=(this._isAutoCellHeight||!this.opts.disableOneColumnMode)&&!this.parentGridItem;return!br&&mr&&!this._windowResizeBind?(this._windowResizeBind=this.onParentResize.bind(this),window.addEventListener("resize",this._windowResizeBind)):(br||!mr)&&this._windowResizeBind&&(window.removeEventListener("resize",this._windowResizeBind),delete this._windowResizeBind),this}static getElement(br=".grid-stack-item"){return Yr.Utils.getElement(br)}static getElements(br=".grid-stack-item"){return Yr.Utils.getElements(br)}static getGridElement(br){return Ci.getElement(br)}static getGridElements(br){return Yr.Utils.getElements(br)}_initMargin(){let br,mr=0,Er=[];return typeof this.opts.margin=="string"&&(Er=this.opts.margin.split(" ")),Er.length===2?(this.opts.marginTop=this.opts.marginBottom=Er[0],this.opts.marginLeft=this.opts.marginRight=Er[1]):Er.length===4?(this.opts.marginTop=Er[0],this.opts.marginRight=Er[1],this.opts.marginBottom=Er[2],this.opts.marginLeft=Er[3]):(br=Yr.Utils.parseHeight(this.opts.margin),this.opts.marginUnit=br.unit,mr=this.opts.margin=br.h),this.opts.marginTop===void 0?this.opts.marginTop=mr:(br=Yr.Utils.parseHeight(this.opts.marginTop),this.opts.marginTop=br.h,delete this.opts.margin),this.opts.marginBottom===void 0?this.opts.marginBottom=mr:(br=Yr.Utils.parseHeight(this.opts.marginBottom),this.opts.marginBottom=br.h,delete this.opts.margin),this.opts.marginRight===void 0?this.opts.marginRight=mr:(br=Yr.Utils.parseHeight(this.opts.marginRight),this.opts.marginRight=br.h,delete this.opts.margin),this.opts.marginLeft===void 0?this.opts.marginLeft=mr:(br=Yr.Utils.parseHeight(this.opts.marginLeft),this.opts.marginLeft=br.h,delete this.opts.margin),this.opts.marginUnit=br.unit,this.opts.marginTop===this.opts.marginBottom&&this.opts.marginLeft===this.opts.marginRight&&this.opts.marginTop===this.opts.marginRight&&(this.opts.margin=this.opts.marginTop),this}static getDD(){return Wi}static setupDragIn(br,mr){(mr==null?void 0:mr.pause)!==void 0&&(tu.DDManager.pauseDrag=mr.pause),typeof br=="string"&&(mr=Object.assign(Object.assign({},gn.dragInDefaultOptions),mr||{}),Yr.Utils.getElements(br).forEach(Er=>{Wi.isDraggable(Er)||Wi.dragIn(Er,mr)}))}movable(br,mr){return this.opts.staticGrid?this:(Ci.getElements(br).forEach(Er=>{let wr=Er.gridstackNode;!wr||(mr?delete wr.noMove:wr.noMove=!0,this._prepareDragDropByNode(wr))}),this)}resizable(br,mr){return this.opts.staticGrid?this:(Ci.getElements(br).forEach(Er=>{let wr=Er.gridstackNode;!wr||(mr?delete wr.noResize:wr.noResize=!0,this._prepareDragDropByNode(wr))}),this)}disable(br=!0){if(!this.opts.staticGrid)return this.enableMove(!1,br),this.enableResize(!1,br),this._triggerEvent("disable"),this}enable(br=!0){if(!this.opts.staticGrid)return this.enableMove(!0,br),this.enableResize(!0,br),this._triggerEvent("enable"),this}enableMove(br,mr=!0){return this.opts.staticGrid?this:(this.opts.disableDrag=!br,this.engine.nodes.forEach(Er=>{this.movable(Er.el,br),Er.subGrid&&mr&&Er.subGrid.enableMove(br,mr)}),this)}enableResize(br,mr=!0){return this.opts.staticGrid?this:(this.opts.disableResize=!br,this.engine.nodes.forEach(Er=>{this.resizable(Er.el,br),Er.subGrid&&mr&&Er.subGrid.enableResize(br,mr)}),this)}_removeDD(br){return Wi.draggable(br,"destroy").resizable(br,"destroy"),br.gridstackNode&&delete br.gridstackNode._initDD,delete br.ddElement,this}_setupAcceptWidget(){if(this.opts.staticGrid||!this.opts.acceptWidgets&&!this.opts.removable)return Wi.droppable(this.el,"destroy"),this;let br,mr,Er=(wr,_r,xr)=>{let Sr=_r.gridstackNode;if(!Sr)return;xr=xr||_r;let Tr=this.el.getBoundingClientRect(),{top:Or,left:Dr}=xr.getBoundingClientRect();Dr-=Tr.left,Or-=Tr.top;let Cr={position:{top:Or,left:Dr}};if(Sr._temporaryRemoved){if(Sr.x=Math.max(0,Math.round(Dr/mr)),Sr.y=Math.max(0,Math.round(Or/br)),delete Sr.autoPosition,this.engine.nodeBoundFix(Sr),!this.engine.willItFit(Sr)){if(Sr.autoPosition=!0,!this.engine.willItFit(Sr)){Wi.off(_r,"drag");return}Sr._willFitPos&&(Yr.Utils.copyPos(Sr,Sr._willFitPos),delete Sr._willFitPos)}this._onStartMoving(xr,wr,Cr,Sr,mr,br)}else this._dragOrResize(xr,wr,Cr,Sr,mr,br)};return Wi.droppable(this.el,{accept:wr=>{let _r=wr.gridstackNode;if((_r==null?void 0:_r.grid)===this)return!0;if(!this.opts.acceptWidgets)return!1;let xr=!0;if(typeof this.opts.acceptWidgets=="function")xr=this.opts.acceptWidgets(wr);else{let Sr=this.opts.acceptWidgets===!0?".grid-stack-item":this.opts.acceptWidgets;xr=wr.matches(Sr)}if(xr&&_r&&this.opts.maxRow){let Sr={w:_r.w,h:_r.h,minW:_r.minW,minH:_r.minH};xr=this.engine.willItFit(Sr)}return xr}}).on(this.el,"dropover",(wr,_r,xr)=>{let Sr=_r.gridstackNode;if((Sr==null?void 0:Sr.grid)===this&&!Sr._temporaryRemoved)return!1;(Sr==null?void 0:Sr.grid)&&Sr.grid!==this&&!Sr._temporaryRemoved&&Sr.grid._leave(_r,xr),mr=this.cellWidth(),br=this.getCellHeight(!0),Sr||(Sr=this._readAttr(_r)),Sr.grid||(Sr._isExternal=!0,_r.gridstackNode=Sr),xr=xr||_r;let Tr=Sr.w||Math.round(xr.offsetWidth/mr)||1,Or=Sr.h||Math.round(xr.offsetHeight/br)||1;return Sr.grid&&Sr.grid!==this?(_r._gridstackNodeOrig||(_r._gridstackNodeOrig=Sr),_r.gridstackNode=Sr=Object.assign(Object.assign({},Sr),{w:Tr,h:Or,grid:this}),this.engine.cleanupNode(Sr).nodeBoundFix(Sr),Sr._initDD=Sr._isExternal=Sr._temporaryRemoved=!0):(Sr.w=Tr,Sr.h=Or,Sr._temporaryRemoved=!0),this._itemRemoving(Sr.el,!1),Wi.on(_r,"drag",Er),Er(wr,_r,xr),!1}).on(this.el,"dropout",(wr,_r,xr)=>{let Sr=_r.gridstackNode;return Sr&&(!Sr.grid||Sr.grid===this)&&(this._leave(_r,xr),this._isTemp&&this.removeAsSubGrid(Sr)),!1}).on(this.el,"drop",(wr,_r,xr)=>{var Sr,Tr;let Or=_r.gridstackNode;if((Or==null?void 0:Or.grid)===this&&!Or._isExternal)return!1;let Dr=!!this.placeholder.parentElement;this.placeholder.remove();let Cr=_r._gridstackNodeOrig;if(delete _r._gridstackNodeOrig,Dr&&(Cr==null?void 0:Cr.grid)&&Cr.grid!==this){let Lr=Cr.grid;Lr.engine.removedNodes.push(Cr),Lr._triggerRemoveEvent()._triggerChangeEvent(),Lr.parentGridItem&&!Lr.engine.nodes.length&&Lr.opts.subGridDynamic&&Lr.removeAsSubGrid()}if(!Or||(Dr&&(this.engine.cleanupNode(Or),Or.grid=this),Wi.off(_r,"drag"),xr!==_r?(xr.remove(),_r.gridstackNode=Cr,Dr&&(_r=_r.cloneNode(!0))):(_r.remove(),this._removeDD(_r)),!Dr))return!1;_r.gridstackNode=Or,Or.el=_r;let Ar=(Tr=(Sr=Or.subGrid)===null||Sr===void 0?void 0:Sr.el)===null||Tr===void 0?void 0:Tr.gridstack;return Yr.Utils.copyPos(Or,this._readAttr(this.placeholder)),Yr.Utils.removePositioningStyles(_r),this._writeAttr(_r,Or),_r.classList.add(gn.gridDefaults.itemClass,this.opts.itemClass),this.el.appendChild(_r),Ar&&(Ar.parentGridItem=Or,Ar.opts.styleInHead||Ar._updateStyles(!0)),this._updateContainerHeight(),this.engine.addedNodes.push(Or),this._triggerAddEvent(),this._triggerChangeEvent(),this.engine.endUpdate(),this._gsEventHandler.dropped&&this._gsEventHandler.dropped(Object.assign(Object.assign({},wr),{type:"dropped"}),Cr&&Cr.grid?Cr:void 0,Or),window.setTimeout(()=>{Or.el&&Or.el.parentElement?this._prepareDragDropByNode(Or):this.engine.removeNode(Or),delete Or.grid._isTemp}),!1}),this}_itemRemoving(br,mr){let Er=br?br.gridstackNode:void 0;!Er||!Er.grid||(mr?Er._isAboutToRemove=!0:delete Er._isAboutToRemove,mr?br.classList.add("grid-stack-item-removing"):br.classList.remove("grid-stack-item-removing"))}_setupRemoveDrop(){if(!this.opts.staticGrid&&typeof this.opts.removable=="string"){let br=document.querySelector(this.opts.removable);if(!br)return this;Wi.isDroppable(br)||Wi.droppable(br,this.opts.removableOptions).on(br,"dropover",(mr,Er)=>this._itemRemoving(Er,!0)).on(br,"dropout",(mr,Er)=>this._itemRemoving(Er,!1))}return this}_prepareDragDropByNode(br){let mr=br.el,Er=br.noMove||this.opts.disableDrag,wr=br.noResize||this.opts.disableResize;if(this.opts.staticGrid||Er&&wr)return br._initDD&&(this._removeDD(mr),delete br._initDD),mr.classList.add("ui-draggable-disabled","ui-resizable-disabled"),this;if(!br._initDD){let _r,xr,Sr=(Dr,Cr)=>{this._gsEventHandler[Dr.type]&&this._gsEventHandler[Dr.type](Dr,Dr.target),_r=this.cellWidth(),xr=this.getCellHeight(!0),this._onStartMoving(mr,Dr,Cr,br,_r,xr)},Tr=(Dr,Cr)=>{this._dragOrResize(mr,Dr,Cr,br,_r,xr)},Or=Dr=>{this.placeholder.remove(),delete br._moving,delete br._event,delete br._lastTried;let Cr=Dr.target;if(!(!Cr.gridstackNode||Cr.gridstackNode.grid!==this)){if(br.el=Cr,br._isAboutToRemove){let Ar=mr.gridstackNode.grid;Ar._gsEventHandler[Dr.type]&&Ar._gsEventHandler[Dr.type](Dr,Cr),this._removeDD(mr),Ar.engine.removedNodes.push(br),Ar._triggerRemoveEvent(),delete mr.gridstackNode,delete br.el,mr.remove()}else Yr.Utils.removePositioningStyles(Cr),br._temporaryRemoved?(Yr.Utils.copyPos(br,br._orig),this._writePosAttr(Cr,br),this.engine.addNode(br)):this._writePosAttr(Cr,br),this._gsEventHandler[Dr.type]&&this._gsEventHandler[Dr.type](Dr,Cr);this._extraDragRow=0,this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate()}};Wi.draggable(mr,{start:Sr,stop:Or,drag:Tr}).resizable(mr,{start:Sr,stop:Or,resize:Tr}),br._initDD=!0}return Wi.draggable(mr,Er?"disable":"enable").resizable(mr,wr?"disable":"enable"),this}_onStartMoving(br,mr,Er,wr,_r,xr){this.engine.cleanNodes().beginUpdate(wr),this._writePosAttr(this.placeholder,wr),this.el.appendChild(this.placeholder),wr.el=this.placeholder,wr._lastUiPosition=Er.position,wr._prevYPix=Er.position.top,wr._moving=mr.type==="dragstart",delete wr._lastTried,mr.type==="dropover"&&wr._temporaryRemoved&&(this.engine.addNode(wr),wr._moving=!0),this.engine.cacheRects(_r,xr,this.opts.marginTop,this.opts.marginRight,this.opts.marginBottom,this.opts.marginLeft),mr.type==="resizestart"&&(Wi.resizable(br,"option","minWidth",_r*(wr.minW||1)).resizable(br,"option","minHeight",xr*(wr.minH||1)),wr.maxW&&Wi.resizable(br,"option","maxWidth",_r*wr.maxW),wr.maxH&&Wi.resizable(br,"option","maxHeight",xr*wr.maxH))}_dragOrResize(br,mr,Er,wr,_r,xr){let Sr=Object.assign({},wr._orig),Tr,Or=this.opts.marginLeft,Dr=this.opts.marginRight,Cr=this.opts.marginTop,Ar=this.opts.marginBottom,Lr=Math.round(xr*.1),Rr=Math.round(_r*.1);if(Or=Math.min(Or,Rr),Dr=Math.min(Dr,Rr),Cr=Math.min(Cr,Lr),Ar=Math.min(Ar,Lr),mr.type==="drag"){if(wr._temporaryRemoved)return;let Ir=Er.position.top-wr._prevYPix;wr._prevYPix=Er.position.top,this.opts.draggable.scroll!==!1&&Yr.Utils.updateScrollPosition(br,Er.position,Ir);let Pr=Er.position.left+(Er.position.left>wr._lastUiPosition.left?-Dr:Or),Br=Er.position.top+(Er.position.top>wr._lastUiPosition.top?-Ar:Cr);Sr.x=Math.round(Pr/_r),Sr.y=Math.round(Br/xr);let zr=this._extraDragRow;if(this.engine.collide(wr,Sr)){let Ur=this.getRow(),Kr=Math.max(0,Sr.y+wr.h-Ur);this.opts.maxRow&&Ur+Kr>this.opts.maxRow&&(Kr=Math.max(0,this.opts.maxRow-Ur)),this._extraDragRow=Kr}else this._extraDragRow=0;if(this._extraDragRow!==zr&&this._updateContainerHeight(),wr.x===Sr.x&&wr.y===Sr.y)return}else if(mr.type==="resize"){if(Sr.x<0||(Yr.Utils.updateScrollResize(mr,br,xr),Sr.w=Math.round((Er.size.width-Or)/_r),Sr.h=Math.round((Er.size.height-Cr)/xr),wr.w===Sr.w&&wr.h===Sr.h)||wr._lastTried&&wr._lastTried.w===Sr.w&&wr._lastTried.h===Sr.h)return;let Ir=Er.position.left+Or,Pr=Er.position.top+Cr;Sr.x=Math.round(Ir/_r),Sr.y=Math.round(Pr/xr),Tr=!0}wr._event=mr,wr._lastTried=Sr;let Nr={x:Er.position.left+Or,y:Er.position.top+Cr,w:(Er.size?Er.size.width:wr.w*_r)-Or-Dr,h:(Er.size?Er.size.height:wr.h*xr)-Cr-Ar};if(this.engine.moveNodeCheck(wr,Object.assign(Object.assign({},Sr),{cellWidth:_r,cellHeight:xr,rect:Nr,resizing:Tr}))){wr._lastUiPosition=Er.position,this.engine.cacheRects(_r,xr,Cr,Dr,Ar,Or),delete wr._skipDown,Tr&&wr.subGrid&&wr.subGrid.onParentResize(),this._extraDragRow=0,this._updateContainerHeight();let Ir=mr.target;this._writePosAttr(Ir,wr),this._gsEventHandler[mr.type]&&this._gsEventHandler[mr.type](mr,Ir)}}_leave(br,mr){let Er=br.gridstackNode;!Er||(Wi.off(br,"drag"),!Er._temporaryRemoved&&(Er._temporaryRemoved=!0,this.engine.removeNode(Er),Er.el=Er._isExternal&&mr?mr:br,this.opts.removable===!0&&this._itemRemoving(br,!0),br._gridstackNodeOrig?(br.gridstackNode=br._gridstackNodeOrig,delete br._gridstackNodeOrig):Er._isExternal&&(delete Er.el,delete br.gridstackNode,this.engine.restoreInitial())))}commit(){return Yr.obsolete(this,this.batchUpdate(!1),"commit","batchUpdate","5.2"),this}};An.GridStack=Ci;Ci.Utils=Yr.Utils;Ci.Engine=lh.GridStackEngine;Ci.GDRev="7.2.3"});var yl={};V_(yl,{afterMain:()=>wh,afterRead:()=>bh,afterWrite:()=>Sh,applyStyles:()=>bo,arrow:()=>ul,auto:()=>na,basePlacements:()=>Gn,beforeMain:()=>yh,beforeRead:()=>gh,beforeWrite:()=>_h,bottom:()=>Ri,clippingParents:()=>cu,computeStyles:()=>Eo,createPopper:()=>bl,createPopperBase:()=>Rh,createPopperLite:()=>Nh,detectOverflow:()=>tn,end:()=>cs,eventListeners:()=>wo,flip:()=>pl,hide:()=>ml,left:()=>Ai,main:()=>Eh,modifierPhases:()=>du,offset:()=>gl,placements:()=>oa,popper:()=>As,popperGenerator:()=>Is,popperOffsets:()=>So,preventOverflow:()=>vl,read:()=>vh,reference:()=>uu,right:()=>Li,start:()=>In,top:()=>Oi,variationPlacements:()=>cl,viewport:()=>sa,write:()=>xh});var Oi="top",Ri="bottom",Li="right",Ai="left",na="auto",Gn=[Oi,Ri,Li,Ai],In="start",cs="end",cu="clippingParents",sa="viewport",As="popper",uu="reference",cl=Gn.reduce(function(yr,br){return yr.concat([br+"-"+In,br+"-"+cs])},[]),oa=[].concat(Gn,[na]).reduce(function(yr,br){return yr.concat([br,br+"-"+In,br+"-"+cs])},[]),gh="beforeRead",vh="read",bh="afterRead",yh="beforeMain",Eh="main",wh="afterMain",_h="beforeWrite",xh="write",Sh="afterWrite",du=[gh,vh,bh,yh,Eh,wh,_h,xh,Sh];function ji(yr){return yr?(yr.nodeName||"").toLowerCase():null}function Di(yr){if(yr==null)return window;if(yr.toString()!=="[object Window]"){var br=yr.ownerDocument;return br&&br.defaultView||window}return yr}function bn(yr){var br=Di(yr).Element;return yr instanceof br||yr instanceof Element}function Ii(yr){var br=Di(yr).HTMLElement;return yr instanceof br||yr instanceof HTMLElement}function vo(yr){if(typeof ShadowRoot=="undefined")return!1;var br=Di(yr).ShadowRoot;return yr instanceof br||yr instanceof ShadowRoot}function G_(yr){var br=yr.state;Object.keys(br.elements).forEach(function(mr){var Er=br.styles[mr]||{},wr=br.attributes[mr]||{},_r=br.elements[mr];!Ii(_r)||!ji(_r)||(Object.assign(_r.style,Er),Object.keys(wr).forEach(function(xr){var Sr=wr[xr];Sr===!1?_r.removeAttribute(xr):_r.setAttribute(xr,Sr===!0?"":Sr)}))})}function Y_(yr){var br=yr.state,mr={popper:{position:br.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(br.elements.popper.style,mr.popper),br.styles=mr,br.elements.arrow&&Object.assign(br.elements.arrow.style,mr.arrow),function(){Object.keys(br.elements).forEach(function(Er){var wr=br.elements[Er],_r=br.attributes[Er]||{},xr=Object.keys(br.styles.hasOwnProperty(Er)?br.styles[Er]:mr[Er]),Sr=xr.reduce(function(Tr,Or){return Tr[Or]="",Tr},{});!Ii(wr)||!ji(wr)||(Object.assign(wr.style,Sr),Object.keys(_r).forEach(function(Tr){wr.removeAttribute(Tr)}))})}}var bo={name:"applyStyles",enabled:!0,phase:"write",fn:G_,effect:Y_,requires:["computeStyles"]};function Hi(yr){return yr.split("-")[0]}var Mn=Math.max,Cs=Math.min,Yn=Math.round;function yo(){var yr=navigator.userAgentData;return yr!=null&&yr.brands?yr.brands.map(function(br){return br.brand+"/"+br.version}).join(" "):navigator.userAgent}function aa(){return!/^((?!chrome|android).)*safari/i.test(yo())}function yn(yr,br,mr){br===void 0&&(br=!1),mr===void 0&&(mr=!1);var Er=yr.getBoundingClientRect(),wr=1,_r=1;br&&Ii(yr)&&(wr=yr.offsetWidth>0&&Yn(Er.width)/yr.offsetWidth||1,_r=yr.offsetHeight>0&&Yn(Er.height)/yr.offsetHeight||1);var xr=bn(yr)?Di(yr):window,Sr=xr.visualViewport,Tr=!aa()&&mr,Or=(Er.left+(Tr&&Sr?Sr.offsetLeft:0))/wr,Dr=(Er.top+(Tr&&Sr?Sr.offsetTop:0))/_r,Cr=Er.width/wr,Ar=Er.height/_r;return{width:Cr,height:Ar,top:Dr,right:Or+Cr,bottom:Dr+Ar,left:Or,x:Or,y:Dr}}function Ls(yr){var br=yn(yr),mr=yr.offsetWidth,Er=yr.offsetHeight;return Math.abs(br.width-mr)<=1&&(mr=br.width),Math.abs(br.height-Er)<=1&&(Er=br.height),{x:yr.offsetLeft,y:yr.offsetTop,width:mr,height:Er}}function la(yr,br){var mr=br.getRootNode&&br.getRootNode();if(yr.contains(br))return!0;if(mr&&vo(mr)){var Er=br;do{if(Er&&yr.isSameNode(Er))return!0;Er=Er.parentNode||Er.host}while(Er)}return!1}function en(yr){return Di(yr).getComputedStyle(yr)}function fu(yr){return["table","td","th"].indexOf(ji(yr))>=0}function Ui(yr){return((bn(yr)?yr.ownerDocument:yr.document)||window.document).documentElement}function Kn(yr){return ji(yr)==="html"?yr:yr.assignedSlot||yr.parentNode||(vo(yr)?yr.host:null)||Ui(yr)}function Th(yr){return!Ii(yr)||en(yr).position==="fixed"?null:yr.offsetParent}function K_(yr){var br=/firefox/i.test(yo()),mr=/Trident/i.test(yo());if(mr&&Ii(yr)){var Er=en(yr);if(Er.position==="fixed")return null}var wr=Kn(yr);for(vo(wr)&&(wr=wr.host);Ii(wr)&&["html","body"].indexOf(ji(wr))<0;){var _r=en(wr);if(_r.transform!=="none"||_r.perspective!=="none"||_r.contain==="paint"||["transform","perspective"].indexOf(_r.willChange)!==-1||br&&_r.willChange==="filter"||br&&_r.filter&&_r.filter!=="none")return wr;wr=wr.parentNode}return null}function kn(yr){for(var br=Di(yr),mr=Th(yr);mr&&fu(mr)&&en(mr).position==="static";)mr=Th(mr);return mr&&(ji(mr)==="html"||ji(mr)==="body"&&en(mr).position==="static")?br:mr||K_(yr)||br}function Ms(yr){return["top","bottom"].indexOf(yr)>=0?"x":"y"}function ks(yr,br,mr){return Mn(yr,Cs(br,mr))}function Oh(yr,br,mr){var Er=ks(yr,br,mr);return Er>mr?mr:Er}function ca(){return{top:0,right:0,bottom:0,left:0}}function ua(yr){return Object.assign({},ca(),yr)}function da(yr,br){return br.reduce(function(mr,Er){return mr[Er]=yr,mr},{})}var X_=function(br,mr){return br=typeof br=="function"?br(Object.assign({},mr.rects,{placement:mr.placement})):br,ua(typeof br!="number"?br:da(br,Gn))};function J_(yr){var br,mr=yr.state,Er=yr.name,wr=yr.options,_r=mr.elements.arrow,xr=mr.modifiersData.popperOffsets,Sr=Hi(mr.placement),Tr=Ms(Sr),Or=[Ai,Li].indexOf(Sr)>=0,Dr=Or?"height":"width";if(!(!_r||!xr)){var Cr=X_(wr.padding,mr),Ar=Ls(_r),Lr=Tr==="y"?Oi:Ai,Rr=Tr==="y"?Ri:Li,Nr=mr.rects.reference[Dr]+mr.rects.reference[Tr]-xr[Tr]-mr.rects.popper[Dr],Ir=xr[Tr]-mr.rects.reference[Tr],Pr=kn(_r),Br=Pr?Tr==="y"?Pr.clientHeight||0:Pr.clientWidth||0:0,zr=Nr/2-Ir/2,Ur=Cr[Lr],Kr=Br-Ar[Dr]-Cr[Rr],Fr=Br/2-Ar[Dr]/2+zr,Xr=ks(Ur,Fr,Kr),Jr=Tr;mr.modifiersData[Er]=(br={},br[Jr]=Xr,br.centerOffset=Xr-Fr,br)}}function Q_(yr){var br=yr.state,mr=yr.options,Er=mr.element,wr=Er===void 0?"[data-popper-arrow]":Er;wr!=null&&(typeof wr=="string"&&(wr=br.elements.popper.querySelector(wr),!wr)||!la(br.elements.popper,wr)||(br.elements.arrow=wr))}var ul={name:"arrow",enabled:!0,phase:"main",fn:J_,effect:Q_,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function En(yr){return yr.split("-")[1]}var Z_={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ex(yr){var br=yr.x,mr=yr.y,Er=window,wr=Er.devicePixelRatio||1;return{x:Yn(br*wr)/wr||0,y:Yn(mr*wr)/wr||0}}function Dh(yr){var br,mr=yr.popper,Er=yr.popperRect,wr=yr.placement,_r=yr.variation,xr=yr.offsets,Sr=yr.position,Tr=yr.gpuAcceleration,Or=yr.adaptive,Dr=yr.roundOffsets,Cr=yr.isFixed,Ar=xr.x,Lr=Ar===void 0?0:Ar,Rr=xr.y,Nr=Rr===void 0?0:Rr,Ir=typeof Dr=="function"?Dr({x:Lr,y:Nr}):{x:Lr,y:Nr};Lr=Ir.x,Nr=Ir.y;var Pr=xr.hasOwnProperty("x"),Br=xr.hasOwnProperty("y"),zr=Ai,Ur=Oi,Kr=window;if(Or){var Fr=kn(mr),Xr="clientHeight",Jr="clientWidth";if(Fr===Di(mr)&&(Fr=Ui(mr),en(Fr).position!=="static"&&Sr==="absolute"&&(Xr="scrollHeight",Jr="scrollWidth")),Fr=Fr,wr===Oi||(wr===Ai||wr===Li)&&_r===cs){Ur=Ri;var oi=Cr&&Fr===Kr&&Kr.visualViewport?Kr.visualViewport.height:Fr[Xr];Nr-=oi-Er.height,Nr*=Tr?1:-1}if(wr===Ai||(wr===Oi||wr===Ri)&&_r===cs){zr=Li;var hi=Cr&&Fr===Kr&&Kr.visualViewport?Kr.visualViewport.width:Fr[Jr];Lr-=hi-Er.width,Lr*=Tr?1:-1}}var pi=Object.assign({position:Sr},Or&&Z_),_i=Dr===!0?ex({x:Lr,y:Nr}):{x:Lr,y:Nr};if(Lr=_i.x,Nr=_i.y,Tr){var Ei;return Object.assign({},pi,(Ei={},Ei[Ur]=Br?"0":"",Ei[zr]=Pr?"0":"",Ei.transform=(Kr.devicePixelRatio||1)<=1?"translate("+Lr+"px, "+Nr+"px)":"translate3d("+Lr+"px, "+Nr+"px, 0)",Ei))}return Object.assign({},pi,(br={},br[Ur]=Br?Nr+"px":"",br[zr]=Pr?Lr+"px":"",br.transform="",br))}function tx(yr){var br=yr.state,mr=yr.options,Er=mr.gpuAcceleration,wr=Er===void 0?!0:Er,_r=mr.adaptive,xr=_r===void 0?!0:_r,Sr=mr.roundOffsets,Tr=Sr===void 0?!0:Sr;if(!1)var Or;var Dr={placement:Hi(br.placement),variation:En(br.placement),popper:br.elements.popper,popperRect:br.rects.popper,gpuAcceleration:wr,isFixed:br.options.strategy==="fixed"};br.modifiersData.popperOffsets!=null&&(br.styles.popper=Object.assign({},br.styles.popper,Dh(Object.assign({},Dr,{offsets:br.modifiersData.popperOffsets,position:br.options.strategy,adaptive:xr,roundOffsets:Tr})))),br.modifiersData.arrow!=null&&(br.styles.arrow=Object.assign({},br.styles.arrow,Dh(Object.assign({},Dr,{offsets:br.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:Tr})))),br.attributes.popper=Object.assign({},br.attributes.popper,{"data-popper-placement":br.placement})}var Eo={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:tx,data:{}};var dl={passive:!0};function rx(yr){var br=yr.state,mr=yr.instance,Er=yr.options,wr=Er.scroll,_r=wr===void 0?!0:wr,xr=Er.resize,Sr=xr===void 0?!0:xr,Tr=Di(br.elements.popper),Or=[].concat(br.scrollParents.reference,br.scrollParents.popper);return _r&&Or.forEach(function(Dr){Dr.addEventListener("scroll",mr.update,dl)}),Sr&&Tr.addEventListener("resize",mr.update,dl),function(){_r&&Or.forEach(function(Dr){Dr.removeEventListener("scroll",mr.update,dl)}),Sr&&Tr.removeEventListener("resize",mr.update,dl)}}var wo={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:rx,data:{}};var ix={left:"right",right:"left",bottom:"top",top:"bottom"};function _o(yr){return yr.replace(/left|right|bottom|top/g,function(br){return ix[br]})}var nx={start:"end",end:"start"};function fl(yr){return yr.replace(/start|end/g,function(br){return nx[br]})}function Rs(yr){var br=Di(yr),mr=br.pageXOffset,Er=br.pageYOffset;return{scrollLeft:mr,scrollTop:Er}}function Ns(yr){return yn(Ui(yr)).left+Rs(yr).scrollLeft}function hu(yr,br){var mr=Di(yr),Er=Ui(yr),wr=mr.visualViewport,_r=Er.clientWidth,xr=Er.clientHeight,Sr=0,Tr=0;if(wr){_r=wr.width,xr=wr.height;var Or=aa();(Or||!Or&&br==="fixed")&&(Sr=wr.offsetLeft,Tr=wr.offsetTop)}return{width:_r,height:xr,x:Sr+Ns(yr),y:Tr}}function pu(yr){var br,mr=Ui(yr),Er=Rs(yr),wr=(br=yr.ownerDocument)==null?void 0:br.body,_r=Mn(mr.scrollWidth,mr.clientWidth,wr?wr.scrollWidth:0,wr?wr.clientWidth:0),xr=Mn(mr.scrollHeight,mr.clientHeight,wr?wr.scrollHeight:0,wr?wr.clientHeight:0),Sr=-Er.scrollLeft+Ns(yr),Tr=-Er.scrollTop;return en(wr||mr).direction==="rtl"&&(Sr+=Mn(mr.clientWidth,wr?wr.clientWidth:0)-_r),{width:_r,height:xr,x:Sr,y:Tr}}function qs(yr){var br=en(yr),mr=br.overflow,Er=br.overflowX,wr=br.overflowY;return/auto|scroll|overlay|hidden/.test(mr+wr+Er)}function hl(yr){return["html","body","#document"].indexOf(ji(yr))>=0?yr.ownerDocument.body:Ii(yr)&&qs(yr)?yr:hl(Kn(yr))}function us(yr,br){var mr;br===void 0&&(br=[]);var Er=hl(yr),wr=Er===((mr=yr.ownerDocument)==null?void 0:mr.body),_r=Di(Er),xr=wr?[_r].concat(_r.visualViewport||[],qs(Er)?Er:[]):Er,Sr=br.concat(xr);return wr?Sr:Sr.concat(us(Kn(xr)))}function xo(yr){return Object.assign({},yr,{left:yr.x,top:yr.y,right:yr.x+yr.width,bottom:yr.y+yr.height})}function sx(yr,br){var mr=yn(yr,!1,br==="fixed");return mr.top=mr.top+yr.clientTop,mr.left=mr.left+yr.clientLeft,mr.bottom=mr.top+yr.clientHeight,mr.right=mr.left+yr.clientWidth,mr.width=yr.clientWidth,mr.height=yr.clientHeight,mr.x=mr.left,mr.y=mr.top,mr}function Ah(yr,br,mr){return br===sa?xo(hu(yr,mr)):bn(br)?sx(br,mr):xo(pu(Ui(yr)))}function ox(yr){var br=us(Kn(yr)),mr=["absolute","fixed"].indexOf(en(yr).position)>=0,Er=mr&&Ii(yr)?kn(yr):yr;return bn(Er)?br.filter(function(wr){return bn(wr)&&la(wr,Er)&&ji(wr)!=="body"}):[]}function mu(yr,br,mr,Er){var wr=br==="clippingParents"?ox(yr):[].concat(br),_r=[].concat(wr,[mr]),xr=_r[0],Sr=_r.reduce(function(Tr,Or){var Dr=Ah(yr,Or,Er);return Tr.top=Mn(Dr.top,Tr.top),Tr.right=Cs(Dr.right,Tr.right),Tr.bottom=Cs(Dr.bottom,Tr.bottom),Tr.left=Mn(Dr.left,Tr.left),Tr},Ah(yr,xr,Er));return Sr.width=Sr.right-Sr.left,Sr.height=Sr.bottom-Sr.top,Sr.x=Sr.left,Sr.y=Sr.top,Sr}function fa(yr){var br=yr.reference,mr=yr.element,Er=yr.placement,wr=Er?Hi(Er):null,_r=Er?En(Er):null,xr=br.x+br.width/2-mr.width/2,Sr=br.y+br.height/2-mr.height/2,Tr;switch(wr){case Oi:Tr={x:xr,y:br.y-mr.height};break;case Ri:Tr={x:xr,y:br.y+br.height};break;case Li:Tr={x:br.x+br.width,y:Sr};break;case Ai:Tr={x:br.x-mr.width,y:Sr};break;default:Tr={x:br.x,y:br.y}}var Or=wr?Ms(wr):null;if(Or!=null){var Dr=Or==="y"?"height":"width";switch(_r){case In:Tr[Or]=Tr[Or]-(br[Dr]/2-mr[Dr]/2);break;case cs:Tr[Or]=Tr[Or]+(br[Dr]/2-mr[Dr]/2);break;default:}}return Tr}function tn(yr,br){br===void 0&&(br={});var mr=br,Er=mr.placement,wr=Er===void 0?yr.placement:Er,_r=mr.strategy,xr=_r===void 0?yr.strategy:_r,Sr=mr.boundary,Tr=Sr===void 0?cu:Sr,Or=mr.rootBoundary,Dr=Or===void 0?sa:Or,Cr=mr.elementContext,Ar=Cr===void 0?As:Cr,Lr=mr.altBoundary,Rr=Lr===void 0?!1:Lr,Nr=mr.padding,Ir=Nr===void 0?0:Nr,Pr=ua(typeof Ir!="number"?Ir:da(Ir,Gn)),Br=Ar===As?uu:As,zr=yr.rects.popper,Ur=yr.elements[Rr?Br:Ar],Kr=mu(bn(Ur)?Ur:Ur.contextElement||Ui(yr.elements.popper),Tr,Dr,xr),Fr=yn(yr.elements.reference),Xr=fa({reference:Fr,element:zr,strategy:"absolute",placement:wr}),Jr=xo(Object.assign({},zr,Xr)),oi=Ar===As?Jr:Fr,hi={top:Kr.top-oi.top+Pr.top,bottom:oi.bottom-Kr.bottom+Pr.bottom,left:Kr.left-oi.left+Pr.left,right:oi.right-Kr.right+Pr.right},pi=yr.modifiersData.offset;if(Ar===As&&pi){var _i=pi[wr];Object.keys(hi).forEach(function(Ei){var zi=[Li,Ri].indexOf(Ei)>=0?1:-1,Gi=[Oi,Ri].indexOf(Ei)>=0?"y":"x";hi[Ei]+=_i[Gi]*zi})}return hi}function gu(yr,br){br===void 0&&(br={});var mr=br,Er=mr.placement,wr=mr.boundary,_r=mr.rootBoundary,xr=mr.padding,Sr=mr.flipVariations,Tr=mr.allowedAutoPlacements,Or=Tr===void 0?oa:Tr,Dr=En(Er),Cr=Dr?Sr?cl:cl.filter(function(Rr){return En(Rr)===Dr}):Gn,Ar=Cr.filter(function(Rr){return Or.indexOf(Rr)>=0});Ar.length===0&&(Ar=Cr);var Lr=Ar.reduce(function(Rr,Nr){return Rr[Nr]=tn(yr,{placement:Nr,boundary:wr,rootBoundary:_r,padding:xr})[Hi(Nr)],Rr},{});return Object.keys(Lr).sort(function(Rr,Nr){return Lr[Rr]-Lr[Nr]})}function ax(yr){if(Hi(yr)===na)return[];var br=_o(yr);return[fl(yr),br,fl(br)]}function lx(yr){var br=yr.state,mr=yr.options,Er=yr.name;if(!br.modifiersData[Er]._skip){for(var wr=mr.mainAxis,_r=wr===void 0?!0:wr,xr=mr.altAxis,Sr=xr===void 0?!0:xr,Tr=mr.fallbackPlacements,Or=mr.padding,Dr=mr.boundary,Cr=mr.rootBoundary,Ar=mr.altBoundary,Lr=mr.flipVariations,Rr=Lr===void 0?!0:Lr,Nr=mr.allowedAutoPlacements,Ir=br.options.placement,Pr=Hi(Ir),Br=Pr===Ir,zr=Tr||(Br||!Rr?[_o(Ir)]:ax(Ir)),Ur=[Ir].concat(zr).reduce(function(Zr,ni){return Zr.concat(Hi(ni)===na?gu(br,{placement:ni,boundary:Dr,rootBoundary:Cr,padding:Or,flipVariations:Rr,allowedAutoPlacements:Nr}):ni)},[]),Kr=br.rects.reference,Fr=br.rects.popper,Xr=new Map,Jr=!0,oi=Ur[0],hi=0;hi=0,Gi=zi?"width":"height",vi=tn(br,{placement:pi,boundary:Dr,rootBoundary:Cr,altBoundary:Ar,padding:Or}),ki=zi?Ei?Li:Ai:Ei?Ri:Oi;Kr[Gi]>Fr[Gi]&&(ki=_o(ki));var Cn=_o(ki),Yi=[];if(_r&&Yi.push(vi[_i]<=0),Sr&&Yi.push(vi[ki]<=0,vi[Cn]<=0),Yi.every(function(Zr){return Zr})){oi=pi,Jr=!1;break}Xr.set(pi,Yi)}if(Jr)for(var ii=Rr?3:1,ei=function(ni){var bi=Ur.find(function(xi){var Si=Xr.get(xi);if(Si)return Si.slice(0,ni).every(function(Ln){return Ln})});if(bi)return oi=bi,"break"},Qr=ii;Qr>0;Qr--){var si=ei(Qr);if(si==="break")break}br.placement!==oi&&(br.modifiersData[Er]._skip=!0,br.placement=oi,br.reset=!0)}}var pl={name:"flip",enabled:!0,phase:"main",fn:lx,requiresIfExists:["offset"],data:{_skip:!1}};function Ch(yr,br,mr){return mr===void 0&&(mr={x:0,y:0}),{top:yr.top-br.height-mr.y,right:yr.right-br.width+mr.x,bottom:yr.bottom-br.height+mr.y,left:yr.left-br.width-mr.x}}function Lh(yr){return[Oi,Li,Ri,Ai].some(function(br){return yr[br]>=0})}function cx(yr){var br=yr.state,mr=yr.name,Er=br.rects.reference,wr=br.rects.popper,_r=br.modifiersData.preventOverflow,xr=tn(br,{elementContext:"reference"}),Sr=tn(br,{altBoundary:!0}),Tr=Ch(xr,Er),Or=Ch(Sr,wr,_r),Dr=Lh(Tr),Cr=Lh(Or);br.modifiersData[mr]={referenceClippingOffsets:Tr,popperEscapeOffsets:Or,isReferenceHidden:Dr,hasPopperEscaped:Cr},br.attributes.popper=Object.assign({},br.attributes.popper,{"data-popper-reference-hidden":Dr,"data-popper-escaped":Cr})}var ml={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:cx};function ux(yr,br,mr){var Er=Hi(yr),wr=[Ai,Oi].indexOf(Er)>=0?-1:1,_r=typeof mr=="function"?mr(Object.assign({},br,{placement:yr})):mr,xr=_r[0],Sr=_r[1];return xr=xr||0,Sr=(Sr||0)*wr,[Ai,Li].indexOf(Er)>=0?{x:Sr,y:xr}:{x:xr,y:Sr}}function dx(yr){var br=yr.state,mr=yr.options,Er=yr.name,wr=mr.offset,_r=wr===void 0?[0,0]:wr,xr=oa.reduce(function(Dr,Cr){return Dr[Cr]=ux(Cr,br.rects,_r),Dr},{}),Sr=xr[br.placement],Tr=Sr.x,Or=Sr.y;br.modifiersData.popperOffsets!=null&&(br.modifiersData.popperOffsets.x+=Tr,br.modifiersData.popperOffsets.y+=Or),br.modifiersData[Er]=xr}var gl={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:dx};function fx(yr){var br=yr.state,mr=yr.name;br.modifiersData[mr]=fa({reference:br.rects.reference,element:br.rects.popper,strategy:"absolute",placement:br.placement})}var So={name:"popperOffsets",enabled:!0,phase:"read",fn:fx,data:{}};function vu(yr){return yr==="x"?"y":"x"}function hx(yr){var br=yr.state,mr=yr.options,Er=yr.name,wr=mr.mainAxis,_r=wr===void 0?!0:wr,xr=mr.altAxis,Sr=xr===void 0?!1:xr,Tr=mr.boundary,Or=mr.rootBoundary,Dr=mr.altBoundary,Cr=mr.padding,Ar=mr.tether,Lr=Ar===void 0?!0:Ar,Rr=mr.tetherOffset,Nr=Rr===void 0?0:Rr,Ir=tn(br,{boundary:Tr,rootBoundary:Or,padding:Cr,altBoundary:Dr}),Pr=Hi(br.placement),Br=En(br.placement),zr=!Br,Ur=Ms(Pr),Kr=vu(Ur),Fr=br.modifiersData.popperOffsets,Xr=br.rects.reference,Jr=br.rects.popper,oi=typeof Nr=="function"?Nr(Object.assign({},br.rects,{placement:br.placement})):Nr,hi=typeof oi=="number"?{mainAxis:oi,altAxis:oi}:Object.assign({mainAxis:0,altAxis:0},oi),pi=br.modifiersData.offset?br.modifiersData.offset[br.placement]:null,_i={x:0,y:0};if(!!Fr){if(_r){var Ei,zi=Ur==="y"?Oi:Ai,Gi=Ur==="y"?Ri:Li,vi=Ur==="y"?"height":"width",ki=Fr[Ur],Cn=ki+Ir[zi],Yi=ki-Ir[Gi],ii=Lr?-Jr[vi]/2:0,ei=Br===In?Xr[vi]:Jr[vi],Qr=Br===In?-Jr[vi]:-Xr[vi],si=br.elements.arrow,Zr=Lr&&si?Ls(si):{width:0,height:0},ni=br.modifiersData["arrow#persistent"]?br.modifiersData["arrow#persistent"].padding:ca(),bi=ni[zi],xi=ni[Gi],Si=ks(0,Xr[vi],Zr[vi]),Ln=zr?Xr[vi]/2-ii-Si-bi-hi.mainAxis:ei-Si-bi-hi.mainAxis,ru=zr?-Xr[vi]/2+ii+Si+xi+hi.mainAxis:Qr+Si+xi+hi.mainAxis,co=br.elements.arrow&&kn(br.elements.arrow),uo=co?Ur==="y"?co.clientTop||0:co.clientLeft||0:0,tl=(Ei=pi==null?void 0:pi[Ur])!=null?Ei:0,iu=ki+Ln-tl-uo,rl=ki+ru-tl,il=ks(Lr?Cs(Cn,iu):Cn,ki,Lr?Mn(Yi,rl):Yi);Fr[Ur]=il,_i[Ur]=il-ki}if(Sr){var Zo,nl=Ur==="x"?Oi:Ai,fo=Ur==="x"?Ri:Li,Vn=Fr[Kr],ho=Kr==="y"?"height":"width",ea=Vn+Ir[nl],po=Vn-Ir[fo],mo=[Oi,Ai].indexOf(Pr)!==-1,Ds=(Zo=pi==null?void 0:pi[Kr])!=null?Zo:0,sl=mo?ea:Vn-Xr[ho]-Jr[ho]-Ds+hi.altAxis,ta=mo?Vn+Xr[ho]+Jr[ho]-Ds-hi.altAxis:po,ol=Lr&&mo?Oh(sl,Vn,ta):ks(Lr?sl:ea,Vn,Lr?ta:po);Fr[Kr]=ol,_i[Kr]=ol-Vn}br.modifiersData[Er]=_i}}var vl={name:"preventOverflow",enabled:!0,phase:"main",fn:hx,requiresIfExists:["offset"]};function bu(yr){return{scrollLeft:yr.scrollLeft,scrollTop:yr.scrollTop}}function yu(yr){return yr===Di(yr)||!Ii(yr)?Rs(yr):bu(yr)}function px(yr){var br=yr.getBoundingClientRect(),mr=Yn(br.width)/yr.offsetWidth||1,Er=Yn(br.height)/yr.offsetHeight||1;return mr!==1||Er!==1}function Eu(yr,br,mr){mr===void 0&&(mr=!1);var Er=Ii(br),wr=Ii(br)&&px(br),_r=Ui(br),xr=yn(yr,wr,mr),Sr={scrollLeft:0,scrollTop:0},Tr={x:0,y:0};return(Er||!Er&&!mr)&&((ji(br)!=="body"||qs(_r))&&(Sr=yu(br)),Ii(br)?(Tr=yn(br,!0),Tr.x+=br.clientLeft,Tr.y+=br.clientTop):_r&&(Tr.x=Ns(_r))),{x:xr.left+Sr.scrollLeft-Tr.x,y:xr.top+Sr.scrollTop-Tr.y,width:xr.width,height:xr.height}}function mx(yr){var br=new Map,mr=new Set,Er=[];yr.forEach(function(_r){br.set(_r.name,_r)});function wr(_r){mr.add(_r.name);var xr=[].concat(_r.requires||[],_r.requiresIfExists||[]);xr.forEach(function(Sr){if(!mr.has(Sr)){var Tr=br.get(Sr);Tr&&wr(Tr)}}),Er.push(_r)}return yr.forEach(function(_r){mr.has(_r.name)||wr(_r)}),Er}function wu(yr){var br=mx(yr);return du.reduce(function(mr,Er){return mr.concat(br.filter(function(wr){return wr.phase===Er}))},[])}function _u(yr){var br;return function(){return br||(br=new Promise(function(mr){Promise.resolve().then(function(){br=void 0,mr(yr())})})),br}}function xu(yr){var br=yr.reduce(function(mr,Er){var wr=mr[Er.name];return mr[Er.name]=wr?Object.assign({},wr,Er,{options:Object.assign({},wr.options,Er.options),data:Object.assign({},wr.data,Er.data)}):Er,mr},{});return Object.keys(br).map(function(mr){return br[mr]})}var Mh={placement:"bottom",modifiers:[],strategy:"absolute"};function kh(){for(var yr=arguments.length,br=new Array(yr),mr=0;mrmr.matches(br))},parents(yr,br){let mr=[],Er=yr.parentNode;for(;Er&&Er.nodeType===Node.ELEMENT_NODE&&Er.nodeType!==bx;)Er.matches(br)&&mr.push(Er),Er=Er.parentNode;return mr},prev(yr,br){let mr=yr.previousElementSibling;for(;mr;){if(mr.matches(br))return[mr];mr=mr.previousElementSibling}return[]},next(yr,br){let mr=yr.nextElementSibling;for(;mr;){if(mr.matches(br))return[mr];mr=mr.nextElementSibling}return[]}},yx=1e6,Ex=1e3,Su="transitionend",wx=yr=>yr==null?`${yr}`:{}.toString.call(yr).match(/\s([a-z]+)/i)[1].toLowerCase(),qh=yr=>{do yr+=Math.floor(Math.random()*yx);while(document.getElementById(yr));return yr},Ih=yr=>{let br=yr.getAttribute("data-bs-target");if(!br||br==="#"){let mr=yr.getAttribute("href");if(!mr||!mr.includes("#")&&!mr.startsWith("."))return null;mr.includes("#")&&!mr.startsWith("#")&&(mr=`#${mr.split("#")[1]}`),br=mr&&mr!=="#"?mr.trim():null}return br},Tu=yr=>{let br=Ih(yr);return br&&document.querySelector(br)?br:null},ds=yr=>{let br=Ih(yr);return br?document.querySelector(br):null},_x=yr=>{if(!yr)return 0;let{transitionDuration:br,transitionDelay:mr}=window.getComputedStyle(yr),Er=Number.parseFloat(br),wr=Number.parseFloat(mr);return!Er&&!wr?0:(br=br.split(",")[0],mr=mr.split(",")[0],(Number.parseFloat(br)+Number.parseFloat(mr))*Ex)},Ph=yr=>{yr.dispatchEvent(new Event(Su))},fs=yr=>!yr||typeof yr!="object"?!1:(typeof yr.jquery!="undefined"&&(yr=yr[0]),typeof yr.nodeType!="undefined"),To=yr=>fs(yr)?yr.jquery?yr[0]:yr:typeof yr=="string"&&yr.length>0?ai.findOne(yr):null,Xn=(yr,br,mr)=>{Object.keys(mr).forEach(Er=>{let wr=mr[Er],_r=br[Er],xr=_r&&fs(_r)?"element":wx(_r);if(!new RegExp(wr).test(xr))throw new TypeError(`${yr.toUpperCase()}: Option "${Er}" provided type "${xr}" but expected type "${wr}".`)})},El=yr=>!fs(yr)||yr.getClientRects().length===0?!1:getComputedStyle(yr).getPropertyValue("visibility")==="visible",Oo=yr=>!yr||yr.nodeType!==Node.ELEMENT_NODE||yr.classList.contains("disabled")?!0:typeof yr.disabled!="undefined"?yr.disabled:yr.hasAttribute("disabled")&&yr.getAttribute("disabled")!=="false",jh=yr=>{if(!document.documentElement.attachShadow)return null;if(typeof yr.getRootNode=="function"){let br=yr.getRootNode();return br instanceof ShadowRoot?br:null}return yr instanceof ShadowRoot?yr:yr.parentNode?jh(yr.parentNode):null},wl=()=>{},Do=yr=>yr.offsetHeight,Hh=()=>{let{jQuery:yr}=window;return yr&&!document.body.hasAttribute("data-bs-no-jquery")?yr:null},Ou=[],xx=yr=>{document.readyState==="loading"?(Ou.length||document.addEventListener("DOMContentLoaded",()=>{Ou.forEach(br=>br())}),Ou.push(yr)):yr()},nn=()=>document.documentElement.dir==="rtl",wn=yr=>{xx(()=>{let br=Hh();if(br){let mr=yr.NAME,Er=br.fn[mr];br.fn[mr]=yr.jQueryInterface,br.fn[mr].Constructor=yr,br.fn[mr].noConflict=()=>(br.fn[mr]=Er,yr.jQueryInterface)}})},Ps=yr=>{typeof yr=="function"&&yr()},Bh=(yr,br,mr=!0)=>{if(!mr){Ps(yr);return}let Er=5,wr=_x(br)+Er,_r=!1,xr=({target:Sr})=>{Sr===br&&(_r=!0,br.removeEventListener(Su,xr),Ps(yr))};br.addEventListener(Su,xr),setTimeout(()=>{_r||Ph(br)},wr)},Fh=(yr,br,mr,Er)=>{let wr=yr.indexOf(br);if(wr===-1)return yr[!mr&&Er?yr.length-1:0];let _r=yr.length;return wr+=mr?1:-1,Er&&(wr=(wr+_r)%_r),yr[Math.max(0,Math.min(wr,_r-1))]},Sx=/[^.]*(?=\..*)\.|.*/,Tx=/\..*/,Ox=/::\d+$/,Du={},zh=1,Dx={mouseenter:"mouseover",mouseleave:"mouseout"},Ax=/^(mouseenter|mouseleave)/i,$h=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function Uh(yr,br){return br&&`${br}::${zh++}`||yr.uidEvent||zh++}function Vh(yr){let br=Uh(yr);return yr.uidEvent=br,Du[br]=Du[br]||{},Du[br]}function Cx(yr,br){return function mr(Er){return Er.delegateTarget=yr,mr.oneOff&&$r.off(yr,Er.type,br),br.apply(yr,[Er])}}function Lx(yr,br,mr){return function Er(wr){let _r=yr.querySelectorAll(br);for(let{target:xr}=wr;xr&&xr!==this;xr=xr.parentNode)for(let Sr=_r.length;Sr--;)if(_r[Sr]===xr)return wr.delegateTarget=xr,Er.oneOff&&$r.off(yr,wr.type,br,mr),mr.apply(xr,[wr]);return null}}function Wh(yr,br,mr=null){let Er=Object.keys(yr);for(let wr=0,_r=Er.length;wr<_r;wr++){let xr=yr[Er[wr]];if(xr.originalHandler===br&&xr.delegationSelector===mr)return xr}return null}function Gh(yr,br,mr){let Er=typeof br=="string",wr=Er?mr:br,_r=Kh(yr);return $h.has(_r)||(_r=yr),[Er,wr,_r]}function Yh(yr,br,mr,Er,wr){if(typeof br!="string"||!yr)return;if(mr||(mr=Er,Er=null),Ax.test(br)){let Lr=Rr=>function(Nr){if(!Nr.relatedTarget||Nr.relatedTarget!==Nr.delegateTarget&&!Nr.delegateTarget.contains(Nr.relatedTarget))return Rr.call(this,Nr)};Er?Er=Lr(Er):mr=Lr(mr)}let[_r,xr,Sr]=Gh(br,mr,Er),Tr=Vh(yr),Or=Tr[Sr]||(Tr[Sr]={}),Dr=Wh(Or,xr,_r?mr:null);if(Dr){Dr.oneOff=Dr.oneOff&≀return}let Cr=Uh(xr,br.replace(Sx,"")),Ar=_r?Lx(yr,mr,Er):Cx(yr,mr);Ar.delegationSelector=_r?mr:null,Ar.originalHandler=xr,Ar.oneOff=wr,Ar.uidEvent=Cr,Or[Cr]=Ar,yr.addEventListener(Sr,Ar,_r)}function Au(yr,br,mr,Er,wr){let _r=Wh(br[mr],Er,wr);!_r||(yr.removeEventListener(mr,_r,Boolean(wr)),delete br[mr][_r.uidEvent])}function Mx(yr,br,mr,Er){let wr=br[mr]||{};Object.keys(wr).forEach(_r=>{if(_r.includes(Er)){let xr=wr[_r];Au(yr,br,mr,xr.originalHandler,xr.delegationSelector)}})}function Kh(yr){return yr=yr.replace(Tx,""),Dx[yr]||yr}var $r={on(yr,br,mr,Er){Yh(yr,br,mr,Er,!1)},one(yr,br,mr,Er){Yh(yr,br,mr,Er,!0)},off(yr,br,mr,Er){if(typeof br!="string"||!yr)return;let[wr,_r,xr]=Gh(br,mr,Er),Sr=xr!==br,Tr=Vh(yr),Or=br.startsWith(".");if(typeof _r!="undefined"){if(!Tr||!Tr[xr])return;Au(yr,Tr,xr,_r,wr?mr:null);return}Or&&Object.keys(Tr).forEach(Cr=>{Mx(yr,Tr,Cr,br.slice(1))});let Dr=Tr[xr]||{};Object.keys(Dr).forEach(Cr=>{let Ar=Cr.replace(Ox,"");if(!Sr||br.includes(Ar)){let Lr=Dr[Cr];Au(yr,Tr,xr,Lr.originalHandler,Lr.delegationSelector)}})},trigger(yr,br,mr){if(typeof br!="string"||!yr)return null;let Er=Hh(),wr=Kh(br),_r=br!==wr,xr=$h.has(wr),Sr,Tr=!0,Or=!0,Dr=!1,Cr=null;return _r&&Er&&(Sr=Er.Event(br,mr),Er(yr).trigger(Sr),Tr=!Sr.isPropagationStopped(),Or=!Sr.isImmediatePropagationStopped(),Dr=Sr.isDefaultPrevented()),xr?(Cr=document.createEvent("HTMLEvents"),Cr.initEvent(wr,Tr,!0)):Cr=new CustomEvent(br,{bubbles:Tr,cancelable:!0}),typeof mr!="undefined"&&Object.keys(mr).forEach(Ar=>{Object.defineProperty(Cr,Ar,{get(){return mr[Ar]}})}),Dr&&Cr.preventDefault(),Or&&yr.dispatchEvent(Cr),Cr.defaultPrevented&&typeof Sr!="undefined"&&Sr.preventDefault(),Cr}},hs=new Map,js={set(yr,br,mr){hs.has(yr)||hs.set(yr,new Map);let Er=hs.get(yr);if(!Er.has(br)&&Er.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(Er.keys())[0]}.`);return}Er.set(br,mr)},get(yr,br){return hs.has(yr)&&hs.get(yr).get(br)||null},remove(yr,br){if(!hs.has(yr))return;let mr=hs.get(yr);mr.delete(br),mr.size===0&&hs.delete(yr)}},kx="5.0.2",_n=class{constructor(br){br=To(br),!!br&&(this._element=br,js.set(this._element,this.constructor.DATA_KEY,this))}dispose(){js.remove(this._element,this.constructor.DATA_KEY),$r.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(br=>{this[br]=null})}_queueCallback(br,mr,Er=!0){Bh(br,mr,Er)}static getInstance(br){return js.get(br,this.DATA_KEY)}static getOrCreateInstance(br,mr={}){return this.getInstance(br)||new this(br,typeof mr=="object"?mr:null)}static get VERSION(){return kx}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}},Rx="alert",Nx="bs.alert",Cu=`.${Nx}`,qx=".data-api",Ix='[data-bs-dismiss="alert"]',Px=`close${Cu}`,jx=`closed${Cu}`,Hx=`click${Cu}${qx}`,Bx="alert",Fx="fade",zx="show",Ao=class extends _n{static get NAME(){return Rx}close(br){let mr=br?this._getRootElement(br):this._element,Er=this._triggerCloseEvent(mr);Er===null||Er.defaultPrevented||this._removeElement(mr)}_getRootElement(br){return ds(br)||br.closest(`.${Bx}`)}_triggerCloseEvent(br){return $r.trigger(br,Px)}_removeElement(br){br.classList.remove(zx);let mr=br.classList.contains(Fx);this._queueCallback(()=>this._destroyElement(br),br,mr)}_destroyElement(br){br.remove(),$r.trigger(br,jx)}static jQueryInterface(br){return this.each(function(){let mr=Ao.getOrCreateInstance(this);br==="close"&&mr[br](this)})}static handleDismiss(br){return function(mr){mr&&mr.preventDefault(),br.close(this)}}};$r.on(document,Hx,Ix,Ao.handleDismiss(new Ao));wn(Ao);var $x="button",Ux="bs.button",Vx=`.${Ux}`,Wx=".data-api",Gx="active",Xh='[data-bs-toggle="button"]',Yx=`click${Vx}${Wx}`,ha=class extends _n{static get NAME(){return $x}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(Gx))}static jQueryInterface(br){return this.each(function(){let mr=ha.getOrCreateInstance(this);br==="toggle"&&mr[br]()})}};$r.on(document,Yx,Xh,yr=>{yr.preventDefault();let br=yr.target.closest(Xh);ha.getOrCreateInstance(br).toggle()});wn(ha);function Jh(yr){return yr==="true"?!0:yr==="false"?!1:yr===Number(yr).toString()?Number(yr):yr===""||yr==="null"?null:yr}function Lu(yr){return yr.replace(/[A-Z]/g,br=>`-${br.toLowerCase()}`)}var Bi={setDataAttribute(yr,br,mr){yr.setAttribute(`data-bs-${Lu(br)}`,mr)},removeDataAttribute(yr,br){yr.removeAttribute(`data-bs-${Lu(br)}`)},getDataAttributes(yr){if(!yr)return{};let br={};return Object.keys(yr.dataset).filter(mr=>mr.startsWith("bs")).forEach(mr=>{let Er=mr.replace(/^bs/,"");Er=Er.charAt(0).toLowerCase()+Er.slice(1,Er.length),br[Er]=Jh(yr.dataset[mr])}),br},getDataAttribute(yr,br){return Jh(yr.getAttribute(`data-bs-${Lu(br)}`))},offset(yr){let br=yr.getBoundingClientRect();return{top:br.top+document.body.scrollTop,left:br.left+document.body.scrollLeft}},position(yr){return{top:yr.offsetTop,left:yr.offsetLeft}}},Qh="carousel",Kx="bs.carousel",dn=`.${Kx}`,Zh=".data-api",Xx="ArrowLeft",Jx="ArrowRight",Qx=500,Zx=40,ep={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},eS={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Hs="next",Bs="prev",Fs="left",pa="right",tS={[Xx]:pa,[Jx]:Fs},rS=`slide${dn}`,tp=`slid${dn}`,iS=`keydown${dn}`,nS=`mouseenter${dn}`,sS=`mouseleave${dn}`,oS=`touchstart${dn}`,aS=`touchmove${dn}`,lS=`touchend${dn}`,cS=`pointerdown${dn}`,uS=`pointerup${dn}`,dS=`dragstart${dn}`,fS=`load${dn}${Zh}`,hS=`click${dn}${Zh}`,pS="carousel",zs="active",mS="slide",gS="carousel-item-end",vS="carousel-item-start",bS="carousel-item-next",yS="carousel-item-prev",ES="pointer-event",wS=".active",_l=".active.carousel-item",_S=".carousel-item",xS=".carousel-item img",SS=".carousel-item-next, .carousel-item-prev",TS=".carousel-indicators",OS="[data-bs-target]",DS="[data-bs-slide], [data-bs-slide-to]",AS='[data-bs-ride="carousel"]',rp="touch",ip="pen",Pn=class extends _n{constructor(br,mr){super(br);this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(mr),this._indicatorsElement=ai.findOne(TS,this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return ep}static get NAME(){return Qh}next(){this._slide(Hs)}nextWhenVisible(){!document.hidden&&El(this._element)&&this.next()}prev(){this._slide(Bs)}pause(br){br||(this._isPaused=!0),ai.findOne(SS,this._element)&&(Ph(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(br){br||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(br){this._activeElement=ai.findOne(_l,this._element);let mr=this._getItemIndex(this._activeElement);if(br>this._items.length-1||br<0)return;if(this._isSliding){$r.one(this._element,tp,()=>this.to(br));return}if(mr===br){this.pause(),this.cycle();return}let Er=br>mr?Hs:Bs;this._slide(Er,this._items[br])}_getConfig(br){return br=ci(ci(ci({},ep),Bi.getDataAttributes(this._element)),typeof br=="object"?br:{}),Xn(Qh,br,eS),br}_handleSwipe(){let br=Math.abs(this.touchDeltaX);if(br<=Zx)return;let mr=br/this.touchDeltaX;this.touchDeltaX=0,!!mr&&this._slide(mr>0?pa:Fs)}_addEventListeners(){this._config.keyboard&&$r.on(this._element,iS,br=>this._keydown(br)),this._config.pause==="hover"&&($r.on(this._element,nS,br=>this.pause(br)),$r.on(this._element,sS,br=>this.cycle(br))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){let br=wr=>{this._pointerEvent&&(wr.pointerType===ip||wr.pointerType===rp)?this.touchStartX=wr.clientX:this._pointerEvent||(this.touchStartX=wr.touches[0].clientX)},mr=wr=>{this.touchDeltaX=wr.touches&&wr.touches.length>1?0:wr.touches[0].clientX-this.touchStartX},Er=wr=>{this._pointerEvent&&(wr.pointerType===ip||wr.pointerType===rp)&&(this.touchDeltaX=wr.clientX-this.touchStartX),this._handleSwipe(),this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(_r=>this.cycle(_r),Qx+this._config.interval))};ai.find(xS,this._element).forEach(wr=>{$r.on(wr,dS,_r=>_r.preventDefault())}),this._pointerEvent?($r.on(this._element,cS,wr=>br(wr)),$r.on(this._element,uS,wr=>Er(wr)),this._element.classList.add(ES)):($r.on(this._element,oS,wr=>br(wr)),$r.on(this._element,aS,wr=>mr(wr)),$r.on(this._element,lS,wr=>Er(wr)))}_keydown(br){if(/input|textarea/i.test(br.target.tagName))return;let mr=tS[br.key];mr&&(br.preventDefault(),this._slide(mr))}_getItemIndex(br){return this._items=br&&br.parentNode?ai.find(_S,br.parentNode):[],this._items.indexOf(br)}_getItemByOrder(br,mr){let Er=br===Hs;return Fh(this._items,mr,Er,this._config.wrap)}_triggerSlideEvent(br,mr){let Er=this._getItemIndex(br),wr=this._getItemIndex(ai.findOne(_l,this._element));return $r.trigger(this._element,rS,{relatedTarget:br,direction:mr,from:wr,to:Er})}_setActiveIndicatorElement(br){if(this._indicatorsElement){let mr=ai.findOne(wS,this._indicatorsElement);mr.classList.remove(zs),mr.removeAttribute("aria-current");let Er=ai.find(OS,this._indicatorsElement);for(let wr=0;wr{$r.trigger(this._element,tp,{relatedTarget:xr,direction:Ar,from:_r,to:Sr})};if(this._element.classList.contains(mS)){xr.classList.add(Cr),Do(xr),wr.classList.add(Dr),xr.classList.add(Dr);let Nr=()=>{xr.classList.remove(Dr,Cr),xr.classList.add(zs),wr.classList.remove(zs,Cr,Dr),this._isSliding=!1,setTimeout(Rr,0)};this._queueCallback(Nr,wr,!0)}else wr.classList.remove(zs),xr.classList.add(zs),this._isSliding=!1,Rr();Tr&&this.cycle()}_directionToOrder(br){return[pa,Fs].includes(br)?nn()?br===Fs?Bs:Hs:br===Fs?Hs:Bs:br}_orderToDirection(br){return[Hs,Bs].includes(br)?nn()?br===Bs?Fs:pa:br===Bs?pa:Fs:br}static carouselInterface(br,mr){let Er=Pn.getOrCreateInstance(br,mr),{_config:wr}=Er;typeof mr=="object"&&(wr=ci(ci({},wr),mr));let _r=typeof mr=="string"?mr:wr.slide;if(typeof mr=="number")Er.to(mr);else if(typeof _r=="string"){if(typeof Er[_r]=="undefined")throw new TypeError(`No method named "${_r}"`);Er[_r]()}else wr.interval&&wr.ride&&(Er.pause(),Er.cycle())}static jQueryInterface(br){return this.each(function(){Pn.carouselInterface(this,br)})}static dataApiClickHandler(br){let mr=ds(this);if(!mr||!mr.classList.contains(pS))return;let Er=ci(ci({},Bi.getDataAttributes(mr)),Bi.getDataAttributes(this)),wr=this.getAttribute("data-bs-slide-to");wr&&(Er.interval=!1),Pn.carouselInterface(mr,Er),wr&&Pn.getInstance(mr).to(wr),br.preventDefault()}};$r.on(document,hS,DS,Pn.dataApiClickHandler);$r.on(window,fS,()=>{let yr=ai.find(AS);for(let br=0,mr=yr.length;brOr===this._element);Sr!==null&&Tr.length&&(this._selector=Sr,this._triggerArray.push(xr))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return Mu}static get NAME(){return np}toggle(){this._element.classList.contains($s)?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains($s))return;let br,mr;this._parent&&(br=ai.find(PS,this._parent).filter(Or=>typeof this._config.parent=="string"?Or.getAttribute("data-bs-parent")===this._config.parent:Or.classList.contains(ga)),br.length===0&&(br=null));let Er=ai.findOne(this._selector);if(br){let Or=br.find(Dr=>Er!==Dr);if(mr=Or?sn.getInstance(Or):null,mr&&mr._isTransitioning)return}if($r.trigger(this._element,MS).defaultPrevented)return;br&&br.forEach(Or=>{Er!==Or&&sn.collapseInterface(Or,"hide"),mr||js.set(Or,sp,null)});let _r=this._getDimension();this._element.classList.remove(ga),this._element.classList.add(xl),this._element.style[_r]=0,this._triggerArray.length&&this._triggerArray.forEach(Or=>{Or.classList.remove(Sl),Or.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);let xr=()=>{this._element.classList.remove(xl),this._element.classList.add(ga,$s),this._element.style[_r]="",this.setTransitioning(!1),$r.trigger(this._element,kS)},Tr=`scroll${_r[0].toUpperCase()+_r.slice(1)}`;this._queueCallback(xr,this._element,!0),this._element.style[_r]=`${this._element[Tr]}px`}hide(){if(this._isTransitioning||!this._element.classList.contains($s)||$r.trigger(this._element,RS).defaultPrevented)return;let mr=this._getDimension();this._element.style[mr]=`${this._element.getBoundingClientRect()[mr]}px`,Do(this._element),this._element.classList.add(xl),this._element.classList.remove(ga,$s);let Er=this._triggerArray.length;if(Er>0)for(let _r=0;_r{this.setTransitioning(!1),this._element.classList.remove(xl),this._element.classList.add(ga),$r.trigger(this._element,NS)};this._element.style[mr]="",this._queueCallback(wr,this._element,!0)}setTransitioning(br){this._isTransitioning=br}_getConfig(br){return br=ci(ci({},Mu),br),br.toggle=Boolean(br.toggle),Xn(np,br,LS),br}_getDimension(){return this._element.classList.contains(op)?op:IS}_getParent(){let{parent:br}=this._config;br=To(br);let mr=`${va}[data-bs-parent="${br}"]`;return ai.find(mr,br).forEach(Er=>{let wr=ds(Er);this._addAriaAndCollapsedClass(wr,[Er])}),br}_addAriaAndCollapsedClass(br,mr){if(!br||!mr.length)return;let Er=br.classList.contains($s);mr.forEach(wr=>{Er?wr.classList.remove(Sl):wr.classList.add(Sl),wr.setAttribute("aria-expanded",Er)})}static collapseInterface(br,mr){let Er=sn.getInstance(br),wr=ci(ci(ci({},Mu),Bi.getDataAttributes(br)),typeof mr=="object"&&mr?mr:{});if(!Er&&wr.toggle&&typeof mr=="string"&&/show|hide/.test(mr)&&(wr.toggle=!1),Er||(Er=new sn(br,wr)),typeof mr=="string"){if(typeof Er[mr]=="undefined")throw new TypeError(`No method named "${mr}"`);Er[mr]()}}static jQueryInterface(br){return this.each(function(){sn.collapseInterface(this,br)})}};$r.on(document,qS,va,function(yr){(yr.target.tagName==="A"||yr.delegateTarget&&yr.delegateTarget.tagName==="A")&&yr.preventDefault();let br=Bi.getDataAttributes(this),mr=Tu(this);ai.find(mr).forEach(wr=>{let _r=sn.getInstance(wr),xr;_r?(_r._parent===null&&typeof br.parent=="string"&&(_r._config.parent=br.parent,_r._parent=_r._getParent()),xr="toggle"):xr=br,sn.collapseInterface(wr,xr)})});wn(sn);var ku="dropdown",jS="bs.dropdown",ps=`.${jS}`,Ru=".data-api",Tl="Escape",ap="Space",lp="Tab",Nu="ArrowUp",Ol="ArrowDown",HS=2,BS=new RegExp(`${Nu}|${Ol}|${Tl}`),FS=`hide${ps}`,zS=`hidden${ps}`,$S=`show${ps}`,US=`shown${ps}`,VS=`click${ps}`,cp=`click${ps}${Ru}`,up=`keydown${ps}${Ru}`,WS=`keyup${ps}${Ru}`,Jn="show",GS="dropup",YS="dropend",KS="dropstart",XS="navbar",ba='[data-bs-toggle="dropdown"]',qu=".dropdown-menu",JS=".navbar-nav",QS=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",ZS=nn()?"top-end":"top-start",eT=nn()?"top-start":"top-end",tT=nn()?"bottom-end":"bottom-start",rT=nn()?"bottom-start":"bottom-end",iT=nn()?"left-start":"right-start",nT=nn()?"right-start":"left-start",sT={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},oT={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"},rn=class extends _n{constructor(br,mr){super(br);this._popper=null,this._config=this._getConfig(mr),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return sT}static get DefaultType(){return oT}static get NAME(){return ku}toggle(){if(Oo(this._element))return;if(this._element.classList.contains(Jn)){this.hide();return}this.show()}show(){if(Oo(this._element)||this._menu.classList.contains(Jn))return;let br=rn.getParentFromElement(this._element),mr={relatedTarget:this._element};if(!$r.trigger(this._element,$S,mr).defaultPrevented){if(this._inNavbar)Bi.setDataAttribute(this._menu,"popper","none");else{if(typeof yl=="undefined")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let wr=this._element;this._config.reference==="parent"?wr=br:fs(this._config.reference)?wr=To(this._config.reference):typeof this._config.reference=="object"&&(wr=this._config.reference);let _r=this._getPopperConfig(),xr=_r.modifiers.find(Sr=>Sr.name==="applyStyles"&&Sr.enabled===!1);this._popper=bl(wr,this._menu,_r),xr&&Bi.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!br.closest(JS)&&[].concat(...document.body.children).forEach(wr=>$r.on(wr,"mouseover",wl)),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle(Jn),this._element.classList.toggle(Jn),$r.trigger(this._element,US,mr)}}hide(){if(Oo(this._element)||!this._menu.classList.contains(Jn))return;let br={relatedTarget:this._element};this._completeHide(br)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){$r.on(this._element,VS,br=>{br.preventDefault(),this.toggle()})}_completeHide(br){$r.trigger(this._element,FS,br).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(Er=>$r.off(Er,"mouseover",wl)),this._popper&&this._popper.destroy(),this._menu.classList.remove(Jn),this._element.classList.remove(Jn),this._element.setAttribute("aria-expanded","false"),Bi.removeDataAttribute(this._menu,"popper"),$r.trigger(this._element,zS,br))}_getConfig(br){if(br=ci(ci(ci({},this.constructor.Default),Bi.getDataAttributes(this._element)),br),Xn(ku,br,this.constructor.DefaultType),typeof br.reference=="object"&&!fs(br.reference)&&typeof br.reference.getBoundingClientRect!="function")throw new TypeError(`${ku.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return br}_getMenuElement(){return ai.next(this._element,qu)[0]}_getPlacement(){let br=this._element.parentNode;if(br.classList.contains(YS))return iT;if(br.classList.contains(KS))return nT;let mr=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return br.classList.contains(GS)?mr?eT:ZS:mr?rT:tT}_detectNavbar(){return this._element.closest(`.${XS}`)!==null}_getOffset(){let{offset:br}=this._config;return typeof br=="string"?br.split(",").map(mr=>Number.parseInt(mr,10)):typeof br=="function"?mr=>br(mr,this._element):br}_getPopperConfig(){let br={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return this._config.display==="static"&&(br.modifiers=[{name:"applyStyles",enabled:!1}]),ci(ci({},br),typeof this._config.popperConfig=="function"?this._config.popperConfig(br):this._config.popperConfig)}_selectMenuItem({key:br,target:mr}){let Er=ai.find(QS,this._menu).filter(El);!Er.length||Fh(Er,mr,br===Ol,!Er.includes(mr)).focus()}static dropdownInterface(br,mr){let Er=rn.getOrCreateInstance(br,mr);if(typeof mr=="string"){if(typeof Er[mr]=="undefined")throw new TypeError(`No method named "${mr}"`);Er[mr]()}}static jQueryInterface(br){return this.each(function(){rn.dropdownInterface(this,br)})}static clearMenus(br){if(br&&(br.button===HS||br.type==="keyup"&&br.key!==lp))return;let mr=ai.find(ba);for(let Er=0,wr=mr.length;Erthis.matches(ba)?this:ai.prev(this,ba)[0];if(br.key===Tl){Er().focus(),rn.clearMenus();return}if(br.key===Nu||br.key===Ol){mr||Er().click(),rn.getInstance(Er())._selectMenuItem(br);return}(!mr||br.key===ap)&&rn.clearMenus()}};$r.on(document,up,ba,rn.dataApiKeydownHandler);$r.on(document,up,qu,rn.dataApiKeydownHandler);$r.on(document,cp,rn.clearMenus);$r.on(document,WS,rn.clearMenus);$r.on(document,cp,ba,function(yr){yr.preventDefault(),rn.dropdownInterface(this)});wn(rn);var dp=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",fp=".sticky-top",Dl=class{constructor(){this._element=document.body}getWidth(){let br=document.documentElement.clientWidth;return Math.abs(window.innerWidth-br)}hide(){let br=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,"paddingRight",mr=>mr+br),this._setElementAttributes(dp,"paddingRight",mr=>mr+br),this._setElementAttributes(fp,"marginRight",mr=>mr-br)}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(br,mr,Er){let wr=this.getWidth(),_r=xr=>{if(xr!==this._element&&window.innerWidth>xr.clientWidth+wr)return;this._saveInitialAttribute(xr,mr);let Sr=window.getComputedStyle(xr)[mr];xr.style[mr]=`${Er(Number.parseFloat(Sr))}px`};this._applyManipulationCallback(br,_r)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(dp,"paddingRight"),this._resetElementAttributes(fp,"marginRight")}_saveInitialAttribute(br,mr){let Er=br.style[mr];Er&&Bi.setDataAttribute(br,mr,Er)}_resetElementAttributes(br,mr){let Er=wr=>{let _r=Bi.getDataAttribute(wr,mr);typeof _r=="undefined"?wr.style.removeProperty(mr):(Bi.removeDataAttribute(wr,mr),wr.style[mr]=_r)};this._applyManipulationCallback(br,Er)}_applyManipulationCallback(br,mr){fs(br)?mr(br):ai.find(br,this._element).forEach(mr)}isOverflowing(){return this.getWidth()>0}},aT={isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},lT={isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},hp="backdrop",cT="modal-backdrop",uT="fade",pp="show",mp=`mousedown.bs.${hp}`,Iu=class{constructor(br){this._config=this._getConfig(br),this._isAppended=!1,this._element=null}show(br){if(!this._config.isVisible){Ps(br);return}this._append(),this._config.isAnimated&&Do(this._getElement()),this._getElement().classList.add(pp),this._emulateAnimation(()=>{Ps(br)})}hide(br){if(!this._config.isVisible){Ps(br);return}this._getElement().classList.remove(pp),this._emulateAnimation(()=>{this.dispose(),Ps(br)})}_getElement(){if(!this._element){let br=document.createElement("div");br.className=cT,this._config.isAnimated&&br.classList.add(uT),this._element=br}return this._element}_getConfig(br){return br=ci(ci({},aT),typeof br=="object"?br:{}),br.rootElement=To(br.rootElement),Xn(hp,br,lT),br}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),$r.on(this._getElement(),mp,()=>{Ps(this._config.clickCallback)}),this._isAppended=!0)}dispose(){!this._isAppended||($r.off(this._element,mp),this._element.remove(),this._isAppended=!1)}_emulateAnimation(br){Bh(br,this._getElement(),this._config.isAnimated)}},gp="modal",dT="bs.modal",fn=`.${dT}`,fT=".data-api",vp="Escape",bp={backdrop:!0,keyboard:!0,focus:!0},hT={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},pT=`hide${fn}`,mT=`hidePrevented${fn}`,yp=`hidden${fn}`,Ep=`show${fn}`,gT=`shown${fn}`,Al=`focusin${fn}`,wp=`resize${fn}`,Pu=`click.dismiss${fn}`,_p=`keydown.dismiss${fn}`,vT=`mouseup.dismiss${fn}`,xp=`mousedown.dismiss${fn}`,bT=`click${fn}${fT}`,Sp="modal-open",yT="fade",Tp="show",ju="modal-static",ET=".modal-dialog",wT=".modal-body",_T='[data-bs-toggle="modal"]',xT='[data-bs-dismiss="modal"]',ms=class extends _n{constructor(br,mr){super(br);this._config=this._getConfig(mr),this._dialog=ai.findOne(ET,this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new Dl}static get Default(){return bp}static get NAME(){return gp}toggle(br){return this._isShown?this.hide():this.show(br)}show(br){this._isShown||this._isTransitioning||$r.trigger(this._element,Ep,{relatedTarget:br}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(Sp),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),$r.on(this._element,Pu,xT,Er=>this.hide(Er)),$r.on(this._dialog,xp,()=>{$r.one(this._element,vT,Er=>{Er.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(br)))}hide(br){if(br&&["A","AREA"].includes(br.target.tagName)&&br.preventDefault(),!this._isShown||this._isTransitioning||$r.trigger(this._element,pT).defaultPrevented)return;this._isShown=!1;let Er=this._isAnimated();Er&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),$r.off(document,Al),this._element.classList.remove(Tp),$r.off(this._element,Pu),$r.off(this._dialog,xp),this._queueCallback(()=>this._hideModal(),this._element,Er)}dispose(){[window,this._dialog].forEach(br=>$r.off(br,fn)),this._backdrop.dispose(),super.dispose(),$r.off(document,Al)}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Iu({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(br){return br=ci(ci(ci({},bp),Bi.getDataAttributes(this._element)),typeof br=="object"?br:{}),Xn(gp,br,hT),br}_showElement(br){let mr=this._isAnimated(),Er=ai.findOne(wT,this._dialog);(!this._element.parentNode||this._element.parentNode.nodeType!==Node.ELEMENT_NODE)&&document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,Er&&(Er.scrollTop=0),mr&&Do(this._element),this._element.classList.add(Tp),this._config.focus&&this._enforceFocus();let wr=()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,$r.trigger(this._element,gT,{relatedTarget:br})};this._queueCallback(wr,this._dialog,mr)}_enforceFocus(){$r.off(document,Al),$r.on(document,Al,br=>{document!==br.target&&this._element!==br.target&&!this._element.contains(br.target)&&this._element.focus()})}_setEscapeEvent(){this._isShown?$r.on(this._element,_p,br=>{this._config.keyboard&&br.key===vp?(br.preventDefault(),this.hide()):!this._config.keyboard&&br.key===vp&&this._triggerBackdropTransition()}):$r.off(this._element,_p)}_setResizeEvent(){this._isShown?$r.on(window,wp,()=>this._adjustDialog()):$r.off(window,wp)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Sp),this._resetAdjustments(),this._scrollBar.reset(),$r.trigger(this._element,yp)})}_showBackdrop(br){$r.on(this._element,Pu,mr=>{if(this._ignoreBackdropClick){this._ignoreBackdropClick=!1;return}mr.target===mr.currentTarget&&(this._config.backdrop===!0?this.hide():this._config.backdrop==="static"&&this._triggerBackdropTransition())}),this._backdrop.show(br)}_isAnimated(){return this._element.classList.contains(yT)}_triggerBackdropTransition(){if($r.trigger(this._element,mT).defaultPrevented)return;let{classList:mr,scrollHeight:Er,style:wr}=this._element,_r=Er>document.documentElement.clientHeight;!_r&&wr.overflowY==="hidden"||mr.contains(ju)||(_r||(wr.overflowY="hidden"),mr.add(ju),this._queueCallback(()=>{mr.remove(ju),_r||this._queueCallback(()=>{wr.overflowY=""},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){let br=this._element.scrollHeight>document.documentElement.clientHeight,mr=this._scrollBar.getWidth(),Er=mr>0;(!Er&&br&&!nn()||Er&&!br&&nn())&&(this._element.style.paddingLeft=`${mr}px`),(Er&&!br&&!nn()||!Er&&br&&nn())&&(this._element.style.paddingRight=`${mr}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(br,mr){return this.each(function(){let Er=ms.getOrCreateInstance(this,br);if(typeof br=="string"){if(typeof Er[br]=="undefined")throw new TypeError(`No method named "${br}"`);Er[br](mr)}})}};$r.on(document,bT,_T,function(yr){let br=ds(this);["A","AREA"].includes(this.tagName)&&yr.preventDefault(),$r.one(br,Ep,Er=>{Er.defaultPrevented||$r.one(br,yp,()=>{El(this)&&this.focus()})}),ms.getOrCreateInstance(br).toggle(this)});wn(ms);var Op="offcanvas",ST="bs.offcanvas",Qn=`.${ST}`,Dp=".data-api",TT=`load${Qn}${Dp}`,OT="Escape",Ap={backdrop:!0,keyboard:!0,scroll:!1},DT={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},Cp="show",Lp=".offcanvas.show",AT=`show${Qn}`,CT=`shown${Qn}`,LT=`hide${Qn}`,Mp=`hidden${Qn}`,Cl=`focusin${Qn}`,MT=`click${Qn}${Dp}`,kT=`click.dismiss${Qn}`,RT=`keydown.dismiss${Qn}`,NT='[data-bs-dismiss="offcanvas"]',qT='[data-bs-toggle="offcanvas"]',Us=class extends _n{constructor(br,mr){super(br);this._config=this._getConfig(mr),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return Op}static get Default(){return Ap}toggle(br){return this._isShown?this.hide():this.show(br)}show(br){if(this._isShown||$r.trigger(this._element,AT,{relatedTarget:br}).defaultPrevented)return;this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new Dl().hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Cp);let Er=()=>{$r.trigger(this._element,CT,{relatedTarget:br})};this._queueCallback(Er,this._element,!0)}hide(){if(!this._isShown||$r.trigger(this._element,LT).defaultPrevented)return;$r.off(document,Cl),this._element.blur(),this._isShown=!1,this._element.classList.remove(Cp),this._backdrop.hide();let mr=()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||new Dl().reset(),$r.trigger(this._element,Mp)};this._queueCallback(mr,this._element,!0)}dispose(){this._backdrop.dispose(),super.dispose(),$r.off(document,Cl)}_getConfig(br){return br=ci(ci(ci({},Ap),Bi.getDataAttributes(this._element)),typeof br=="object"?br:{}),Xn(Op,br,DT),br}_initializeBackDrop(){return new Iu({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(br){$r.off(document,Cl),$r.on(document,Cl,mr=>{document!==mr.target&&br!==mr.target&&!br.contains(mr.target)&&br.focus()}),br.focus()}_addEventListeners(){$r.on(this._element,kT,NT,()=>this.hide()),$r.on(this._element,RT,br=>{this._config.keyboard&&br.key===OT&&this.hide()})}static jQueryInterface(br){return this.each(function(){let mr=Us.getOrCreateInstance(this,br);if(typeof br=="string"){if(mr[br]===void 0||br.startsWith("_")||br==="constructor")throw new TypeError(`No method named "${br}"`);mr[br](this)}})}};$r.on(document,MT,qT,function(yr){let br=ds(this);if(["A","AREA"].includes(this.tagName)&&yr.preventDefault(),Oo(this))return;$r.one(br,Mp,()=>{El(this)&&this.focus()});let mr=ai.findOne(Lp);mr&&mr!==br&&Us.getInstance(mr).hide(),Us.getOrCreateInstance(br).toggle(this)});$r.on(window,TT,()=>ai.find(Lp).forEach(yr=>Us.getOrCreateInstance(yr).show()));wn(Us);var IT=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),PT=/^aria-[\w-]*$/i,jT=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,HT=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,BT=(yr,br)=>{let mr=yr.nodeName.toLowerCase();if(br.includes(mr))return IT.has(mr)?Boolean(jT.test(yr.nodeValue)||HT.test(yr.nodeValue)):!0;let Er=br.filter(wr=>wr instanceof RegExp);for(let wr=0,_r=Er.length;wr<_r;wr++)if(Er[wr].test(mr))return!0;return!1},FT={"*":["class","dir","id","lang","role",PT],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]};function kp(yr,br,mr){if(!yr.length)return yr;if(mr&&typeof mr=="function")return mr(yr);let wr=new window.DOMParser().parseFromString(yr,"text/html"),_r=Object.keys(br),xr=[].concat(...wr.body.querySelectorAll("*"));for(let Sr=0,Tr=xr.length;Sr{BT(Lr,Ar)||Or.removeAttribute(Lr.nodeName)})}return wr.body.innerHTML}var Rp="tooltip",zT="bs.tooltip",jn=`.${zT}`,Np="bs-tooltip",$T=new RegExp(`(^|\\s)${Np}\\S+`,"g"),UT=new Set(["sanitize","allowList","sanitizeFn"]),VT={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},WT={AUTO:"auto",TOP:"top",RIGHT:nn()?"left":"right",BOTTOM:"bottom",LEFT:nn()?"right":"left"},GT={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:FT,popperConfig:null},YT={HIDE:`hide${jn}`,HIDDEN:`hidden${jn}`,SHOW:`show${jn}`,SHOWN:`shown${jn}`,INSERTED:`inserted${jn}`,CLICK:`click${jn}`,FOCUSIN:`focusin${jn}`,FOCUSOUT:`focusout${jn}`,MOUSEENTER:`mouseenter${jn}`,MOUSELEAVE:`mouseleave${jn}`},Ll="fade",qp="modal",ya="show",Ea="show",Hu="out",KT=".tooltip-inner",wa="hover",Bu="focus",XT="click",JT="manual",Hn=class extends _n{constructor(br,mr){if(typeof yl=="undefined")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(br);this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(mr),this.tip=null,this._setListeners()}static get Default(){return GT}static get NAME(){return Rp}static get Event(){return YT}static get DefaultType(){return VT}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(br){if(!!this._isEnabled)if(br){let mr=this._initializeOnDelegatedTarget(br);mr._activeTrigger.click=!mr._activeTrigger.click,mr._isWithActiveTrigger()?mr._enter(null,mr):mr._leave(null,mr)}else{if(this.getTipElement().classList.contains(ya)){this._leave(null,this);return}this._enter(null,this)}}dispose(){clearTimeout(this._timeout),$r.off(this._element.closest(`.${qp}`),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this.isWithContent()&&this._isEnabled))return;let br=$r.trigger(this._element,this.constructor.Event.SHOW),mr=jh(this._element),Er=mr===null?this._element.ownerDocument.documentElement.contains(this._element):mr.contains(this._element);if(br.defaultPrevented||!Er)return;let wr=this.getTipElement(),_r=qh(this.constructor.NAME);wr.setAttribute("id",_r),this._element.setAttribute("aria-describedby",_r),this.setContent(),this._config.animation&&wr.classList.add(Ll);let xr=typeof this._config.placement=="function"?this._config.placement.call(this,wr,this._element):this._config.placement,Sr=this._getAttachment(xr);this._addAttachmentClass(Sr);let{container:Tr}=this._config;js.set(wr,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(Tr.appendChild(wr),$r.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=bl(this._element,wr,this._getPopperConfig(Sr)),wr.classList.add(ya);let Or=typeof this._config.customClass=="function"?this._config.customClass():this._config.customClass;Or&&wr.classList.add(...Or.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(Ar=>{$r.on(Ar,"mouseover",wl)});let Dr=()=>{let Ar=this._hoverState;this._hoverState=null,$r.trigger(this._element,this.constructor.Event.SHOWN),Ar===Hu&&this._leave(null,this)},Cr=this.tip.classList.contains(Ll);this._queueCallback(Dr,this.tip,Cr)}hide(){if(!this._popper)return;let br=this.getTipElement(),mr=()=>{this._isWithActiveTrigger()||(this._hoverState!==Ea&&br.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),$r.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))};if($r.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;br.classList.remove(ya),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(_r=>$r.off(_r,"mouseover",wl)),this._activeTrigger[XT]=!1,this._activeTrigger[Bu]=!1,this._activeTrigger[wa]=!1;let wr=this.tip.classList.contains(Ll);this._queueCallback(mr,this.tip,wr),this._hoverState=""}update(){this._popper!==null&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;let br=document.createElement("div");return br.innerHTML=this._config.template,this.tip=br.children[0],this.tip}setContent(){let br=this.getTipElement();this.setElementContent(ai.findOne(KT,br),this.getTitle()),br.classList.remove(Ll,ya)}setElementContent(br,mr){if(br!==null){if(fs(mr)){mr=To(mr),this._config.html?mr.parentNode!==br&&(br.innerHTML="",br.appendChild(mr)):br.textContent=mr.textContent;return}this._config.html?(this._config.sanitize&&(mr=kp(mr,this._config.allowList,this._config.sanitizeFn)),br.innerHTML=mr):br.textContent=mr}}getTitle(){let br=this._element.getAttribute("data-bs-original-title");return br||(br=typeof this._config.title=="function"?this._config.title.call(this._element):this._config.title),br}updateAttachment(br){return br==="right"?"end":br==="left"?"start":br}_initializeOnDelegatedTarget(br,mr){let Er=this.constructor.DATA_KEY;return mr=mr||js.get(br.delegateTarget,Er),mr||(mr=new this.constructor(br.delegateTarget,this._getDelegateConfig()),js.set(br.delegateTarget,Er,mr)),mr}_getOffset(){let{offset:br}=this._config;return typeof br=="string"?br.split(",").map(mr=>Number.parseInt(mr,10)):typeof br=="function"?mr=>br(mr,this._element):br}_getPopperConfig(br){let mr={placement:br,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:Er=>this._handlePopperPlacementChange(Er)}],onFirstUpdate:Er=>{Er.options.placement!==Er.placement&&this._handlePopperPlacementChange(Er)}};return ci(ci({},mr),typeof this._config.popperConfig=="function"?this._config.popperConfig(mr):this._config.popperConfig)}_addAttachmentClass(br){this.getTipElement().classList.add(`${Np}-${this.updateAttachment(br)}`)}_getAttachment(br){return WT[br.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach(mr=>{if(mr==="click")$r.on(this._element,this.constructor.Event.CLICK,this._config.selector,Er=>this.toggle(Er));else if(mr!==JT){let Er=mr===wa?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,wr=mr===wa?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;$r.on(this._element,Er,this._config.selector,_r=>this._enter(_r)),$r.on(this._element,wr,this._config.selector,_r=>this._leave(_r))}}),this._hideModalHandler=()=>{this._element&&this.hide()},$r.on(this._element.closest(`.${qp}`),"hide.bs.modal",this._hideModalHandler),this._config.selector?this._config=ll(ci({},this._config),{trigger:"manual",selector:""}):this._fixTitle()}_fixTitle(){let br=this._element.getAttribute("title"),mr=typeof this._element.getAttribute("data-bs-original-title");(br||mr!=="string")&&(this._element.setAttribute("data-bs-original-title",br||""),br&&!this._element.getAttribute("aria-label")&&!this._element.textContent&&this._element.setAttribute("aria-label",br),this._element.setAttribute("title",""))}_enter(br,mr){if(mr=this._initializeOnDelegatedTarget(br,mr),br&&(mr._activeTrigger[br.type==="focusin"?Bu:wa]=!0),mr.getTipElement().classList.contains(ya)||mr._hoverState===Ea){mr._hoverState=Ea;return}if(clearTimeout(mr._timeout),mr._hoverState=Ea,!mr._config.delay||!mr._config.delay.show){mr.show();return}mr._timeout=setTimeout(()=>{mr._hoverState===Ea&&mr.show()},mr._config.delay.show)}_leave(br,mr){if(mr=this._initializeOnDelegatedTarget(br,mr),br&&(mr._activeTrigger[br.type==="focusout"?Bu:wa]=mr._element.contains(br.relatedTarget)),!mr._isWithActiveTrigger()){if(clearTimeout(mr._timeout),mr._hoverState=Hu,!mr._config.delay||!mr._config.delay.hide){mr.hide();return}mr._timeout=setTimeout(()=>{mr._hoverState===Hu&&mr.hide()},mr._config.delay.hide)}}_isWithActiveTrigger(){for(let br in this._activeTrigger)if(this._activeTrigger[br])return!0;return!1}_getConfig(br){let mr=Bi.getDataAttributes(this._element);return Object.keys(mr).forEach(Er=>{UT.has(Er)&&delete mr[Er]}),br=ci(ci(ci({},this.constructor.Default),mr),typeof br=="object"&&br?br:{}),br.container=br.container===!1?document.body:To(br.container),typeof br.delay=="number"&&(br.delay={show:br.delay,hide:br.delay}),typeof br.title=="number"&&(br.title=br.title.toString()),typeof br.content=="number"&&(br.content=br.content.toString()),Xn(Rp,br,this.constructor.DefaultType),br.sanitize&&(br.template=kp(br.template,br.allowList,br.sanitizeFn)),br}_getDelegateConfig(){let br={};if(this._config)for(let mr in this._config)this.constructor.Default[mr]!==this._config[mr]&&(br[mr]=this._config[mr]);return br}_cleanTipClass(){let br=this.getTipElement(),mr=br.getAttribute("class").match($T);mr!==null&&mr.length>0&&mr.map(Er=>Er.trim()).forEach(Er=>br.classList.remove(Er))}_handlePopperPlacementChange(br){let{state:mr}=br;!mr||(this.tip=mr.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(mr.placement)))}static jQueryInterface(br){return this.each(function(){let mr=Hn.getOrCreateInstance(this,br);if(typeof br=="string"){if(typeof mr[br]=="undefined")throw new TypeError(`No method named "${br}"`);mr[br]()}})}};wn(Hn);var QT="popover",ZT="bs.popover",Bn=`.${ZT}`,Ip="bs-popover",eO=new RegExp(`(^|\\s)${Ip}\\S+`,"g"),tO=ll(ci({},Hn.Default),{placement:"right",offset:[0,8],trigger:"click",content:"",template:''}),rO=ll(ci({},Hn.DefaultType),{content:"(string|element|function)"}),iO={HIDE:`hide${Bn}`,HIDDEN:`hidden${Bn}`,SHOW:`show${Bn}`,SHOWN:`shown${Bn}`,INSERTED:`inserted${Bn}`,CLICK:`click${Bn}`,FOCUSIN:`focusin${Bn}`,FOCUSOUT:`focusout${Bn}`,MOUSEENTER:`mouseenter${Bn}`,MOUSELEAVE:`mouseleave${Bn}`},nO="fade",sO="show",Pp=".popover-header",jp=".popover-body",Vs=class extends Hn{static get Default(){return tO}static get NAME(){return QT}static get Event(){return iO}static get DefaultType(){return rO}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip?this.tip:(this.tip=super.getTipElement(),this.getTitle()||ai.findOne(Pp,this.tip).remove(),this._getContent()||ai.findOne(jp,this.tip).remove(),this.tip)}setContent(){let br=this.getTipElement();this.setElementContent(ai.findOne(Pp,br),this.getTitle());let mr=this._getContent();typeof mr=="function"&&(mr=mr.call(this._element)),this.setElementContent(ai.findOne(jp,br),mr),br.classList.remove(nO,sO)}_addAttachmentClass(br){this.getTipElement().classList.add(`${Ip}-${this.updateAttachment(br)}`)}_getContent(){return this._element.getAttribute("data-bs-content")||this._config.content}_cleanTipClass(){let br=this.getTipElement(),mr=br.getAttribute("class").match(eO);mr!==null&&mr.length>0&&mr.map(Er=>Er.trim()).forEach(Er=>br.classList.remove(Er))}static jQueryInterface(br){return this.each(function(){let mr=Vs.getOrCreateInstance(this,br);if(typeof br=="string"){if(typeof mr[br]=="undefined")throw new TypeError(`No method named "${br}"`);mr[br]()}})}};wn(Vs);var Fu="scrollspy",oO="bs.scrollspy",Ml=`.${oO}`,aO=".data-api",Hp={offset:10,method:"auto",target:""},lO={offset:"number",method:"string",target:"(string|element)"},cO=`activate${Ml}`,uO=`scroll${Ml}`,dO=`load${Ml}${aO}`,Bp="dropdown-item",Ws="active",fO='[data-bs-spy="scroll"]',hO=".nav, .list-group",zu=".nav-link",pO=".nav-item",Fp=".list-group-item",mO=".dropdown",gO=".dropdown-toggle",vO="offset",zp="position",_a=class extends _n{constructor(br,mr){super(br);this._scrollElement=this._element.tagName==="BODY"?window:this._element,this._config=this._getConfig(mr),this._selector=`${this._config.target} ${zu}, ${this._config.target} ${Fp}, ${this._config.target} .${Bp}`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,$r.on(this._scrollElement,uO,()=>this._process()),this.refresh(),this._process()}static get Default(){return Hp}static get NAME(){return Fu}refresh(){let br=this._scrollElement===this._scrollElement.window?vO:zp,mr=this._config.method==="auto"?br:this._config.method,Er=mr===zp?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),ai.find(this._selector).map(_r=>{let xr=Tu(_r),Sr=xr?ai.findOne(xr):null;if(Sr){let Tr=Sr.getBoundingClientRect();if(Tr.width||Tr.height)return[Bi[mr](Sr).top+Er,xr]}return null}).filter(_r=>_r).sort((_r,xr)=>_r[0]-xr[0]).forEach(_r=>{this._offsets.push(_r[0]),this._targets.push(_r[1])})}dispose(){$r.off(this._scrollElement,Ml),super.dispose()}_getConfig(br){if(br=ci(ci(ci({},Hp),Bi.getDataAttributes(this._element)),typeof br=="object"&&br?br:{}),typeof br.target!="string"&&fs(br.target)){let{id:mr}=br.target;mr||(mr=qh(Fu),br.target.id=mr),br.target=`#${mr}`}return Xn(Fu,br,lO),br}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){let br=this._getScrollTop()+this._config.offset,mr=this._getScrollHeight(),Er=this._config.offset+mr-this._getOffsetHeight();if(this._scrollHeight!==mr&&this.refresh(),br>=Er){let wr=this._targets[this._targets.length-1];this._activeTarget!==wr&&this._activate(wr);return}if(this._activeTarget&&br0){this._activeTarget=null,this._clear();return}for(let wr=this._offsets.length;wr--;)this._activeTarget!==this._targets[wr]&&br>=this._offsets[wr]&&(typeof this._offsets[wr+1]=="undefined"||br`${wr}[data-bs-target="${br}"],${wr}[href="${br}"]`),Er=ai.findOne(mr.join(","));Er.classList.contains(Bp)?(ai.findOne(gO,Er.closest(mO)).classList.add(Ws),Er.classList.add(Ws)):(Er.classList.add(Ws),ai.parents(Er,hO).forEach(wr=>{ai.prev(wr,`${zu}, ${Fp}`).forEach(_r=>_r.classList.add(Ws)),ai.prev(wr,pO).forEach(_r=>{ai.children(_r,zu).forEach(xr=>xr.classList.add(Ws))})})),$r.trigger(this._scrollElement,cO,{relatedTarget:br})}_clear(){ai.find(this._selector).filter(br=>br.classList.contains(Ws)).forEach(br=>br.classList.remove(Ws))}static jQueryInterface(br){return this.each(function(){let mr=_a.getOrCreateInstance(this,br);if(typeof br=="string"){if(typeof mr[br]=="undefined")throw new TypeError(`No method named "${br}"`);mr[br]()}})}};$r.on(window,dO,()=>{ai.find(fO).forEach(yr=>new _a(yr))});wn(_a);var bO="tab",yO="bs.tab",xa=`.${yO}`,EO=".data-api",wO=`hide${xa}`,_O=`hidden${xa}`,xO=`show${xa}`,SO=`shown${xa}`,TO=`click${xa}${EO}`,OO="dropdown-menu",Sa="active",$p="fade",Up="show",DO=".dropdown",AO=".nav, .list-group",Vp=".active",Wp=":scope > li > .active",CO='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',LO=".dropdown-toggle",MO=":scope > .dropdown-menu .active",Gs=class extends _n{static get NAME(){return bO}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(Sa))return;let br,mr=ds(this._element),Er=this._element.closest(AO);if(Er){let Sr=Er.nodeName==="UL"||Er.nodeName==="OL"?Wp:Vp;br=ai.find(Sr,Er),br=br[br.length-1]}let wr=br?$r.trigger(br,wO,{relatedTarget:this._element}):null;if($r.trigger(this._element,xO,{relatedTarget:br}).defaultPrevented||wr!==null&&wr.defaultPrevented)return;this._activate(this._element,Er);let xr=()=>{$r.trigger(br,_O,{relatedTarget:this._element}),$r.trigger(this._element,SO,{relatedTarget:br})};mr?this._activate(mr,mr.parentNode,xr):xr()}_activate(br,mr,Er){let _r=(mr&&(mr.nodeName==="UL"||mr.nodeName==="OL")?ai.find(Wp,mr):ai.children(mr,Vp))[0],xr=Er&&_r&&_r.classList.contains($p),Sr=()=>this._transitionComplete(br,_r,Er);_r&&xr?(_r.classList.remove(Up),this._queueCallback(Sr,br,!0)):Sr()}_transitionComplete(br,mr,Er){if(mr){mr.classList.remove(Sa);let _r=ai.findOne(MO,mr.parentNode);_r&&_r.classList.remove(Sa),mr.getAttribute("role")==="tab"&&mr.setAttribute("aria-selected",!1)}br.classList.add(Sa),br.getAttribute("role")==="tab"&&br.setAttribute("aria-selected",!0),Do(br),br.classList.contains($p)&&br.classList.add(Up);let wr=br.parentNode;if(wr&&wr.nodeName==="LI"&&(wr=wr.parentNode),wr&&wr.classList.contains(OO)){let _r=br.closest(DO);_r&&ai.find(LO,_r).forEach(xr=>xr.classList.add(Sa)),br.setAttribute("aria-expanded",!0)}Er&&Er()}static jQueryInterface(br){return this.each(function(){let mr=Gs.getOrCreateInstance(this);if(typeof br=="string"){if(typeof mr[br]=="undefined")throw new TypeError(`No method named "${br}"`);mr[br]()}})}};$r.on(document,TO,CO,function(yr){if(["A","AREA"].includes(this.tagName)&&yr.preventDefault(),Oo(this))return;Gs.getOrCreateInstance(this).show()});wn(Gs);var Gp="toast",kO="bs.toast",Zn=`.${kO}`,RO=`click.dismiss${Zn}`,NO=`mouseover${Zn}`,qO=`mouseout${Zn}`,IO=`focusin${Zn}`,PO=`focusout${Zn}`,jO=`hide${Zn}`,HO=`hidden${Zn}`,BO=`show${Zn}`,FO=`shown${Zn}`,zO="fade",Yp="hide",Ta="show",Kp="showing",$O={animation:"boolean",autohide:"boolean",delay:"number"},Xp={animation:!0,autohide:!0,delay:5e3},UO='[data-bs-dismiss="toast"]',es=class extends _n{constructor(br,mr){super(br);this._config=this._getConfig(mr),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return $O}static get Default(){return Xp}static get NAME(){return Gp}show(){if($r.trigger(this._element,BO).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(zO);let mr=()=>{this._element.classList.remove(Kp),this._element.classList.add(Ta),$r.trigger(this._element,FO),this._maybeScheduleHide()};this._element.classList.remove(Yp),Do(this._element),this._element.classList.add(Kp),this._queueCallback(mr,this._element,this._config.animation)}hide(){if(!this._element.classList.contains(Ta)||$r.trigger(this._element,jO).defaultPrevented)return;let mr=()=>{this._element.classList.add(Yp),$r.trigger(this._element,HO)};this._element.classList.remove(Ta),this._queueCallback(mr,this._element,this._config.animation)}dispose(){this._clearTimeout(),this._element.classList.contains(Ta)&&this._element.classList.remove(Ta),super.dispose()}_getConfig(br){return br=ci(ci(ci({},Xp),Bi.getDataAttributes(this._element)),typeof br=="object"&&br?br:{}),Xn(Gp,br,this.constructor.DefaultType),br}_maybeScheduleHide(){!this._config.autohide||this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))}_onInteraction(br,mr){switch(br.type){case"mouseover":case"mouseout":this._hasMouseInteraction=mr;break;case"focusin":case"focusout":this._hasKeyboardInteraction=mr;break}if(mr){this._clearTimeout();return}let Er=br.relatedTarget;this._element===Er||this._element.contains(Er)||this._maybeScheduleHide()}_setListeners(){$r.on(this._element,RO,UO,()=>this.hide()),$r.on(this._element,NO,br=>this._onInteraction(br,!0)),$r.on(this._element,qO,br=>this._onInteraction(br,!1)),$r.on(this._element,IO,br=>this._onInteraction(br,!0)),$r.on(this._element,PO,br=>this._onInteraction(br,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(br){return this.each(function(){let mr=es.getOrCreateInstance(this,br);if(typeof br=="string"){if(typeof mr[br]=="undefined")throw new TypeError(`No method named "${br}"`);mr[br](this)}})}};wn(es);var ZV=vn(Jp());var oA=Bl(),aA=Qs(),lA=cg();oA||aA(Object.prototype,"toString",lA,{unsafe:!0});var MA=Ni(),kA=sd(),cd=Dg(),RA=ts();for(Ag in kA)if(ud=MA[Ag],Ra=ud&&ud.prototype,Ra&&Ra.forEach!==cd)try{RA(Ra,"forEach",cd)}catch(yr){Ra.forEach=cd}var ud,Ra,Ag;var xc=vn(Lg());var N0=rs(),sv=nv();N0({global:!0,forced:parseInt!=sv},{parseInt:sv});var z0=rs(),dv=uv();z0({target:"Object",stat:!0,forced:Object.assign!==dv},{assign:dv});"use strict";var G0=rs(),Y0=Gl().filter,K0=hv(),X0=K0("filter");G0({target:"Array",proto:!0,forced:!X0},{filter:function(br){return Y0(this,br,arguments.length>1?arguments[1]:void 0)}});var bz=vn(Pd());"use strict";var YC=jd().charAt,KC=Es(),nb=Js(),XC=qd(),sb="String Iterator",JC=nb.set,QC=nb.getterFor(sb);XC(String,"String",function(yr){JC(this,{type:sb,string:KC(yr),index:0})},function(){var br=QC(this),mr=br.string,Er=br.index,wr;return Er>=mr.length?{value:void 0,done:!0}:(wr=YC(mr,Er),br.index+=wr.length,{value:wr,done:!1})});var Ez=vn(Kb());var nM=Ni(),Xb=sd(),Ha=Pd(),ef=ts(),Jb=Ki(),tf=Jb("iterator"),Qb=Jb("toStringTag"),rf=Ha.values;for(uc in Xb)if(nf=nM[uc],zn=nf&&nf.prototype,zn){if(zn[tf]!==rf)try{ef(zn,tf,rf)}catch(yr){zn[tf]=rf}if(zn[Qb]||ef(zn,Qb,uc),Xb[uc]){for(to in Ha)if(zn[to]!==Ha[to])try{ef(zn,to,Ha[to])}catch(yr){zn[to]=Ha[to]}}}var nf,zn,to,uc;var Rf=vn(iy()),Nf=vn(ay()),uE=vn(gy());var Sn=[];var vy=function(){return Sn.some(function(yr){return yr.activeTargets.length>0})};var by=function(){return Sn.some(function(yr){return yr.skippedTargets.length>0})};var yy="ResizeObserver loop completed with undelivered notifications.",Ey=function(){var yr;typeof ErrorEvent=="function"?yr=new ErrorEvent("error",{message:yy}):(yr=document.createEvent("Event"),yr.initEvent("error",!1,!1),yr.message=yy),window.dispatchEvent(yr)};var no;(function(yr){yr.BORDER_BOX="border-box",yr.CONTENT_BOX="content-box",yr.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(no||(no={}));var Rn=function(yr){return Object.freeze(yr)};var df=function(){function yr(br,mr){this.inlineSize=br,this.blockSize=mr,Rn(this)}return yr}();var ff=function(){function yr(br,mr,Er,wr){return this.x=br,this.y=mr,this.width=Er,this.height=wr,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,Rn(this)}return yr.prototype.toJSON=function(){var br=this,mr=br.x,Er=br.y,wr=br.top,_r=br.right,xr=br.bottom,Sr=br.left,Tr=br.width,Or=br.height;return{x:mr,y:Er,top:wr,right:_r,bottom:xr,left:Sr,width:Tr,height:Or}},yr.fromRect=function(br){return new yr(br.x,br.y,br.width,br.height)},yr}();var Fa=function(yr){return yr instanceof SVGElement&&"getBBox"in yr},pc=function(yr){if(Fa(yr)){var br=yr.getBBox(),mr=br.width,Er=br.height;return!mr&&!Er}var wr=yr,_r=wr.offsetWidth,xr=wr.offsetHeight;return!(_r||xr||yr.getClientRects().length)},hf=function(yr){var br,mr;if(yr instanceof Element)return!0;var Er=(mr=(br=yr)===null||br===void 0?void 0:br.ownerDocument)===null||mr===void 0?void 0:mr.defaultView;return!!(Er&&yr instanceof Er.Element)},wy=function(yr){switch(yr.tagName){case"INPUT":if(yr.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1};var so=typeof window!="undefined"?window:{};var mc=new WeakMap,_y=/auto|scroll/,wk=/^tb|vertical/,_k=/msie|trident/i.test(so.navigator&&so.navigator.userAgent),$n=function(yr){return parseFloat(yr||"0")},qo=function(yr,br,mr){return yr===void 0&&(yr=0),br===void 0&&(br=0),mr===void 0&&(mr=!1),new df((mr?br:yr)||0,(mr?yr:br)||0)},xy=Rn({devicePixelContentBoxSize:qo(),borderBoxSize:qo(),contentBoxSize:qo(),contentRect:new ff(0,0,0,0)}),pf=function(yr,br){if(br===void 0&&(br=!1),mc.has(yr)&&!br)return mc.get(yr);if(pc(yr))return mc.set(yr,xy),xy;var mr=getComputedStyle(yr),Er=Fa(yr)&&yr.ownerSVGElement&&yr.getBBox(),wr=!_k&&mr.boxSizing==="border-box",_r=wk.test(mr.writingMode||""),xr=!Er&&_y.test(mr.overflowY||""),Sr=!Er&&_y.test(mr.overflowX||""),Tr=Er?0:$n(mr.paddingTop),Or=Er?0:$n(mr.paddingRight),Dr=Er?0:$n(mr.paddingBottom),Cr=Er?0:$n(mr.paddingLeft),Ar=Er?0:$n(mr.borderTopWidth),Lr=Er?0:$n(mr.borderRightWidth),Rr=Er?0:$n(mr.borderBottomWidth),Nr=Er?0:$n(mr.borderLeftWidth),Ir=Cr+Or,Pr=Tr+Dr,Br=Nr+Lr,zr=Ar+Rr,Ur=Sr?yr.offsetHeight-zr-yr.clientHeight:0,Kr=xr?yr.offsetWidth-Br-yr.clientWidth:0,Fr=wr?Ir+Br:0,Xr=wr?Pr+zr:0,Jr=Er?Er.width:$n(mr.width)-Fr-Kr,oi=Er?Er.height:$n(mr.height)-Xr-Ur,hi=Jr+Ir+Kr+Br,pi=oi+Pr+Ur+zr,_i=Rn({devicePixelContentBoxSize:qo(Math.round(Jr*devicePixelRatio),Math.round(oi*devicePixelRatio),_r),borderBoxSize:qo(hi,pi,_r),contentBoxSize:qo(Jr,oi,_r),contentRect:new ff(Cr,Tr,Jr,oi)});return mc.set(yr,_i),_i},gc=function(yr,br,mr){var Er=pf(yr,mr),wr=Er.borderBoxSize,_r=Er.contentBoxSize,xr=Er.devicePixelContentBoxSize;switch(br){case no.DEVICE_PIXEL_CONTENT_BOX:return xr;case no.BORDER_BOX:return wr;default:return _r}};var mf=function(){function yr(br){var mr=pf(br);this.target=br,this.contentRect=mr.contentRect,this.borderBoxSize=Rn([mr.borderBoxSize]),this.contentBoxSize=Rn([mr.contentBoxSize]),this.devicePixelContentBoxSize=Rn([mr.devicePixelContentBoxSize])}return yr}();var vc=function(yr){if(pc(yr))return 1/0;for(var br=0,mr=yr.parentNode;mr;)br+=1,mr=mr.parentNode;return br};var Sy=function(){var yr=1/0,br=[];Sn.forEach(function(xr){if(xr.activeTargets.length!==0){var Sr=[];xr.activeTargets.forEach(function(Or){var Dr=new mf(Or.target),Cr=vc(Or.target);Sr.push(Dr),Or.lastReportedSize=gc(Or.target,Or.observedBox),Cryr?mr.activeTargets.push(wr):mr.skippedTargets.push(wr))})})};var Ty=function(){var yr=0;for(gf(yr);vy();)yr=Sy(),gf(yr);return by()&&Ey(),yr>0};var vf,Oy=[],xk=function(){return Oy.splice(0).forEach(function(yr){return yr()})},Dy=function(yr){if(!vf){var br=0,mr=document.createTextNode(""),Er={characterData:!0};new MutationObserver(function(){return xk()}).observe(mr,Er),vf=function(){mr.textContent=""+(br?br--:br++)}}Oy.push(yr),vf()};var Ay=function(yr){Dy(function(){requestAnimationFrame(yr)})};var bc=0,Sk=function(){return!!bc},Tk=250,Ok={attributes:!0,characterData:!0,childList:!0,subtree:!0},Cy=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],Ly=function(yr){return yr===void 0&&(yr=0),Date.now()+yr},bf=!1,Dk=function(){function yr(){var br=this;this.stopped=!0,this.listener=function(){return br.schedule()}}return yr.prototype.run=function(br){var mr=this;if(br===void 0&&(br=Tk),!bf){bf=!0;var Er=Ly(br);Ay(function(){var wr=!1;try{wr=Ty()}finally{if(bf=!1,br=Er-Ly(),!Sk())return;wr?mr.run(1e3):br>0?mr.run(br):mr.start()}})}},yr.prototype.schedule=function(){this.stop(),this.run()},yr.prototype.observe=function(){var br=this,mr=function(){return br.observer&&br.observer.observe(document.body,Ok)};document.body?mr():so.addEventListener("DOMContentLoaded",mr)},yr.prototype.start=function(){var br=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Cy.forEach(function(mr){return so.addEventListener(mr,br.listener,!0)}))},yr.prototype.stop=function(){var br=this;this.stopped||(this.observer&&this.observer.disconnect(),Cy.forEach(function(mr){return so.removeEventListener(mr,br.listener,!0)}),this.stopped=!0)},yr}(),yc=new Dk,yf=function(yr){!bc&&yr>0&&yc.start(),bc+=yr,!bc&&yc.stop()};var Ak=function(yr){return!Fa(yr)&&!wy(yr)&&getComputedStyle(yr).display==="inline"},My=function(){function yr(br,mr){this.target=br,this.observedBox=mr||no.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return yr.prototype.isActive=function(){var br=gc(this.target,this.observedBox,!0);return Ak(this.target)&&(this.lastReportedSize=br),this.lastReportedSize.inlineSize!==br.inlineSize||this.lastReportedSize.blockSize!==br.blockSize},yr}();var ky=function(){function yr(br,mr){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=br,this.callback=mr}return yr}();var Ec=new WeakMap,Ry=function(yr,br){for(var mr=0;mr=0&&(_r&&Sn.splice(Sn.indexOf(Er),1),Er.observationTargets.splice(wr,1),yf(-1))},yr.disconnect=function(br){var mr=this,Er=Ec.get(br);Er.observationTargets.slice().forEach(function(wr){return mr.unobserve(br,wr.target)}),Er.activeTargets.splice(0,Er.activeTargets.length)},yr}();var Ef=function(){function yr(br){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof br!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");za.connect(this,br)}return yr.prototype.observe=function(br,mr){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!hf(br))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");za.observe(this,br,mr)},yr.prototype.unobserve=function(br){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!hf(br))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");za.unobserve(this,br)},yr.prototype.disconnect=function(){za.disconnect(this)},yr.toString=function(){return"function ResizeObserver () { [polyfill code] }"},yr}();"use strict";var qk=rs(),Ik=Iy().left,Pk=ld(),Hy=Hl(),jk=jy(),Hk=Pk("reduce"),Bk=!jk&&Hy>79&&Hy<83;qk({target:"Array",proto:!0,forced:!Hk||Bk},{reduce:function(br){return Ik(this,br,arguments.length,arguments.length>1?arguments[1]:void 0)}});var Sz=vn(Tf());"use strict";var dR=Df(),fR=pn(),hR=Zs(),Lf=Es(),pR=Ys(),mR=Af(),sE=Cf();dR("match",function(yr,br,mr){return[function(wr){var _r=pR(this),xr=wr==null?void 0:wr[yr];return xr!==void 0?xr.call(wr,_r):new RegExp(wr)[yr](Lf(_r))},function(Er){var wr=fR(this),_r=Lf(Er),xr=mr(br,wr,_r);if(xr.done)return xr.value;if(!wr.global)return sE(wr,_r);var Sr=wr.unicode;wr.lastIndex=0;for(var Tr=[],Or=0,Dr;(Dr=sE(wr,_r))!==null;){var Cr=Lf(Dr[0]);Tr[Or]=Cr,Cr===""&&(wr.lastIndex=mR(_r,hR(wr.lastIndex),Sr)),Or++}return Or===0?null:Tr}]});var gR=gs(),vR=vs().f,Mf=Function.prototype,bR=Mf.toString,yR=/^\s*function ([^ (]*)/,oE="name";gR&&!(oE in Mf)&&vR(Mf,oE,{configurable:!0,get:function(){try{return bR.call(this).match(yR)[1]}catch(yr){return""}}});"use strict";var TR=Df(),OR=Fi(),DR=pn(),AR=ka(),CR=Zs(),Io=Es(),LR=Ys(),MR=Af(),kR=lE(),RR=Cf(),NR=Ki(),kf=NR("replace"),qR=Math.max,IR=Math.min,PR=function(yr){return yr===void 0?yr:String(yr)},jR=function(){return"a".replace(/./,"$0")==="$0"}(),cE=function(){return/./[kf]?/./[kf]("a","$0")==="":!1}(),HR=!OR(function(){var yr=/./;return yr.exec=function(){var br=[];return br.groups={a:"7"},br},"".replace(yr,"$
    ")!=="7"});TR("replace",function(yr,br,mr){var Er=cE?"$":"$0";return[function(_r,xr){var Sr=LR(this),Tr=_r==null?void 0:_r[kf];return Tr!==void 0?Tr.call(_r,Sr,xr):br.call(Io(Sr),_r,xr)},function(wr,_r){var xr=DR(this),Sr=Io(wr);if(typeof _r=="string"&&_r.indexOf(Er)===-1&&_r.indexOf("$<")===-1){var Tr=mr(br,xr,Sr,_r);if(Tr.done)return Tr.value}var Or=typeof _r=="function";Or||(_r=Io(_r));var Dr=xr.global;if(Dr){var Cr=xr.unicode;xr.lastIndex=0}for(var Ar=[];;){var Lr=RR(xr,Sr);if(Lr===null||(Ar.push(Lr),!Dr))break;var Rr=Io(Lr[0]);Rr===""&&(xr.lastIndex=MR(Sr,CR(xr.lastIndex),Cr))}for(var Nr="",Ir=0,Pr=0;Pr=Ir&&(Nr+=Sr.slice(Ir,zr)+Jr,Ir=zr+Br.length)}return Nr+Sr.slice(Ir)}]},!HR||!jR||cE);var Sc=function(br){var mr=Array.prototype.reduce.call(br,function(Er,wr){var _r=wr.name.match(/data-simplebar-(.+)/);if(_r){var xr=_r[1].replace(/\W+(.)/g,function(Sr,Tr){return Tr.toUpperCase()});switch(wr.value){case"true":Er[xr]=!0;break;case"false":Er[xr]=!1;break;case void 0:Er[xr]=!0;break;default:Er[xr]=wr.value}}return Er},{});return mr};function ws(yr){return!yr||!yr.ownerDocument||!yr.ownerDocument.defaultView?window:yr.ownerDocument.defaultView}function Tc(yr){return!yr||!yr.ownerDocument?document:yr.ownerDocument}var Po=null,dE=null;xc.default&&window.addEventListener("resize",function(){dE!==window.devicePixelRatio&&(dE=window.devicePixelRatio,Po=null)});function fE(yr){if(Po===null){var br=Tc(yr);if(typeof br=="undefined")return Po=0,Po;var mr=br.body,Er=br.createElement("div");Er.classList.add("simplebar-hide-scrollbar"),mr.appendChild(Er);var wr=Er.getBoundingClientRect().right;mr.removeChild(Er),Po=wr}return Po}var Pi=function(){function yr(mr,Er){var wr=this;this.onScroll=function(){var _r=ws(wr.el);wr.scrollXTicking||(_r.requestAnimationFrame(wr.scrollX),wr.scrollXTicking=!0),wr.scrollYTicking||(_r.requestAnimationFrame(wr.scrollY),wr.scrollYTicking=!0)},this.scrollX=function(){wr.axis.x.isOverflowing&&(wr.showScrollbar("x"),wr.positionScrollbar("x")),wr.scrollXTicking=!1},this.scrollY=function(){wr.axis.y.isOverflowing&&(wr.showScrollbar("y"),wr.positionScrollbar("y")),wr.scrollYTicking=!1},this.onMouseEnter=function(){wr.showScrollbar("x"),wr.showScrollbar("y")},this.onMouseMove=function(_r){wr.mouseX=_r.clientX,wr.mouseY=_r.clientY,(wr.axis.x.isOverflowing||wr.axis.x.forceVisible)&&wr.onMouseMoveForAxis("x"),(wr.axis.y.isOverflowing||wr.axis.y.forceVisible)&&wr.onMouseMoveForAxis("y")},this.onMouseLeave=function(){wr.onMouseMove.cancel(),(wr.axis.x.isOverflowing||wr.axis.x.forceVisible)&&wr.onMouseLeaveForAxis("x"),(wr.axis.y.isOverflowing||wr.axis.y.forceVisible)&&wr.onMouseLeaveForAxis("y"),wr.mouseX=-1,wr.mouseY=-1},this.onWindowResize=function(){wr.scrollbarWidth=wr.getScrollbarWidth(),wr.hideNativeScrollbar()},this.hideScrollbars=function(){wr.axis.x.track.rect=wr.axis.x.track.el.getBoundingClientRect(),wr.axis.y.track.rect=wr.axis.y.track.el.getBoundingClientRect(),wr.isWithinBounds(wr.axis.y.track.rect)||(wr.axis.y.scrollbar.el.classList.remove(wr.classNames.visible),wr.axis.y.isVisible=!1),wr.isWithinBounds(wr.axis.x.track.rect)||(wr.axis.x.scrollbar.el.classList.remove(wr.classNames.visible),wr.axis.x.isVisible=!1)},this.onPointerEvent=function(_r){var xr,Sr;wr.axis.x.track.rect=wr.axis.x.track.el.getBoundingClientRect(),wr.axis.y.track.rect=wr.axis.y.track.el.getBoundingClientRect(),(wr.axis.x.isOverflowing||wr.axis.x.forceVisible)&&(xr=wr.isWithinBounds(wr.axis.x.track.rect)),(wr.axis.y.isOverflowing||wr.axis.y.forceVisible)&&(Sr=wr.isWithinBounds(wr.axis.y.track.rect)),(xr||Sr)&&(_r.preventDefault(),_r.stopPropagation(),_r.type==="mousedown"&&(xr&&(wr.axis.x.scrollbar.rect=wr.axis.x.scrollbar.el.getBoundingClientRect(),wr.isWithinBounds(wr.axis.x.scrollbar.rect)?wr.onDragStart(_r,"x"):wr.onTrackClick(_r,"x")),Sr&&(wr.axis.y.scrollbar.rect=wr.axis.y.scrollbar.el.getBoundingClientRect(),wr.isWithinBounds(wr.axis.y.scrollbar.rect)?wr.onDragStart(_r,"y"):wr.onTrackClick(_r,"y"))))},this.drag=function(_r){var xr,Sr=wr.axis[wr.draggedAxis].track,Tr=Sr.rect[wr.axis[wr.draggedAxis].sizeAttr],Or=wr.axis[wr.draggedAxis].scrollbar,Dr=wr.contentWrapperEl[wr.axis[wr.draggedAxis].scrollSizeAttr],Cr=parseInt(wr.elStyles[wr.axis[wr.draggedAxis].sizeAttr],10);_r.preventDefault(),_r.stopPropagation(),wr.draggedAxis==="y"?xr=_r.pageY:xr=_r.pageX;var Ar=xr-Sr.rect[wr.axis[wr.draggedAxis].offsetAttr]-wr.axis[wr.draggedAxis].dragOffset,Lr=Ar/(Tr-Or.size),Rr=Lr*(Dr-Cr);wr.draggedAxis==="x"&&(Rr=wr.isRtl&&yr.getRtlHelpers().isRtlScrollbarInverted?Rr-(Tr+Or.size):Rr,Rr=wr.isRtl&&yr.getRtlHelpers().isRtlScrollingInverted?-Rr:Rr),wr.contentWrapperEl[wr.axis[wr.draggedAxis].scrollOffsetAttr]=Rr},this.onEndDrag=function(_r){var xr=Tc(wr.el),Sr=ws(wr.el);_r.preventDefault(),_r.stopPropagation(),wr.el.classList.remove(wr.classNames.dragging),xr.removeEventListener("mousemove",wr.drag,!0),xr.removeEventListener("mouseup",wr.onEndDrag,!0),wr.removePreventClickId=Sr.setTimeout(function(){xr.removeEventListener("click",wr.preventClick,!0),xr.removeEventListener("dblclick",wr.preventClick,!0),wr.removePreventClickId=null})},this.preventClick=function(_r){_r.preventDefault(),_r.stopPropagation()},this.el=mr,this.minScrollbarWidth=20,this.options=Object.assign({},yr.defaultOptions,Er),this.classNames=Object.assign({},yr.defaultOptions.classNames,this.options.classNames),this.axis={x:{scrollOffsetAttr:"scrollLeft",sizeAttr:"width",scrollSizeAttr:"scrollWidth",offsetSizeAttr:"offsetWidth",offsetAttr:"left",overflowAttr:"overflowX",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}},y:{scrollOffsetAttr:"scrollTop",sizeAttr:"height",scrollSizeAttr:"scrollHeight",offsetSizeAttr:"offsetHeight",offsetAttr:"top",overflowAttr:"overflowY",dragOffset:0,isOverflowing:!0,isVisible:!1,forceVisible:!1,track:{},scrollbar:{}}},this.removePreventClickId=null,!yr.instances.has(this.el)&&(this.recalculate=(0,Rf.default)(this.recalculate.bind(this),64),this.onMouseMove=(0,Rf.default)(this.onMouseMove.bind(this),64),this.hideScrollbars=(0,Nf.default)(this.hideScrollbars.bind(this),this.options.timeout),this.onWindowResize=(0,Nf.default)(this.onWindowResize.bind(this),64,{leading:!0}),yr.getRtlHelpers=(0,uE.default)(yr.getRtlHelpers),this.init())}yr.getRtlHelpers=function(){var Er=document.createElement("div");Er.innerHTML='
    ';var wr=Er.firstElementChild;document.body.appendChild(wr);var _r=wr.firstElementChild;wr.scrollLeft=0;var xr=yr.getOffset(wr),Sr=yr.getOffset(_r);wr.scrollLeft=999;var Tr=yr.getOffset(_r);return{isRtlScrollingInverted:xr.left!==Sr.left&&Sr.left-Tr.left!=0,isRtlScrollbarInverted:xr.left!==Sr.left}},yr.getOffset=function(Er){var wr=Er.getBoundingClientRect(),_r=Tc(Er),xr=ws(Er);return{top:wr.top+(xr.pageYOffset||_r.documentElement.scrollTop),left:wr.left+(xr.pageXOffset||_r.documentElement.scrollLeft)}};var br=yr.prototype;return br.init=function(){yr.instances.set(this.el,this),xc.default&&(this.initDOM(),this.setAccessibilityAttributes(),this.scrollbarWidth=this.getScrollbarWidth(),this.recalculate(),this.initListeners())},br.initDOM=function(){var Er=this;if(Array.prototype.filter.call(this.el.children,function(xr){return xr.classList.contains(Er.classNames.wrapper)}).length)this.wrapperEl=this.el.querySelector("."+this.classNames.wrapper),this.contentWrapperEl=this.options.scrollableNode||this.el.querySelector("."+this.classNames.contentWrapper),this.contentEl=this.options.contentNode||this.el.querySelector("."+this.classNames.contentEl),this.offsetEl=this.el.querySelector("."+this.classNames.offset),this.maskEl=this.el.querySelector("."+this.classNames.mask),this.placeholderEl=this.findChild(this.wrapperEl,"."+this.classNames.placeholder),this.heightAutoObserverWrapperEl=this.el.querySelector("."+this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl=this.el.querySelector("."+this.classNames.heightAutoObserverEl),this.axis.x.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.horizontal),this.axis.y.track.el=this.findChild(this.el,"."+this.classNames.track+"."+this.classNames.vertical);else{for(this.wrapperEl=document.createElement("div"),this.contentWrapperEl=document.createElement("div"),this.offsetEl=document.createElement("div"),this.maskEl=document.createElement("div"),this.contentEl=document.createElement("div"),this.placeholderEl=document.createElement("div"),this.heightAutoObserverWrapperEl=document.createElement("div"),this.heightAutoObserverEl=document.createElement("div"),this.wrapperEl.classList.add(this.classNames.wrapper),this.contentWrapperEl.classList.add(this.classNames.contentWrapper),this.offsetEl.classList.add(this.classNames.offset),this.maskEl.classList.add(this.classNames.mask),this.contentEl.classList.add(this.classNames.contentEl),this.placeholderEl.classList.add(this.classNames.placeholder),this.heightAutoObserverWrapperEl.classList.add(this.classNames.heightAutoObserverWrapperEl),this.heightAutoObserverEl.classList.add(this.classNames.heightAutoObserverEl);this.el.firstChild;)this.contentEl.appendChild(this.el.firstChild);this.contentWrapperEl.appendChild(this.contentEl),this.offsetEl.appendChild(this.contentWrapperEl),this.maskEl.appendChild(this.offsetEl),this.heightAutoObserverWrapperEl.appendChild(this.heightAutoObserverEl),this.wrapperEl.appendChild(this.heightAutoObserverWrapperEl),this.wrapperEl.appendChild(this.maskEl),this.wrapperEl.appendChild(this.placeholderEl),this.el.appendChild(this.wrapperEl)}if(!this.axis.x.track.el||!this.axis.y.track.el){var wr=document.createElement("div"),_r=document.createElement("div");wr.classList.add(this.classNames.track),_r.classList.add(this.classNames.scrollbar),wr.appendChild(_r),this.axis.x.track.el=wr.cloneNode(!0),this.axis.x.track.el.classList.add(this.classNames.horizontal),this.axis.y.track.el=wr.cloneNode(!0),this.axis.y.track.el.classList.add(this.classNames.vertical),this.el.appendChild(this.axis.x.track.el),this.el.appendChild(this.axis.y.track.el)}this.axis.x.scrollbar.el=this.axis.x.track.el.querySelector("."+this.classNames.scrollbar),this.axis.y.scrollbar.el=this.axis.y.track.el.querySelector("."+this.classNames.scrollbar),this.options.autoHide||(this.axis.x.scrollbar.el.classList.add(this.classNames.visible),this.axis.y.scrollbar.el.classList.add(this.classNames.visible)),this.el.setAttribute("data-simplebar","init")},br.setAccessibilityAttributes=function(){var Er=this.options.ariaLabel||"scrollable content";this.contentWrapperEl.setAttribute("tabindex","0"),this.contentWrapperEl.setAttribute("role","region"),this.contentWrapperEl.setAttribute("aria-label",Er)},br.initListeners=function(){var Er=this,wr=ws(this.el);this.options.autoHide&&this.el.addEventListener("mouseenter",this.onMouseEnter),["mousedown","click","dblclick"].forEach(function(Tr){Er.el.addEventListener(Tr,Er.onPointerEvent,!0)}),["touchstart","touchend","touchmove"].forEach(function(Tr){Er.el.addEventListener(Tr,Er.onPointerEvent,{capture:!0,passive:!0})}),this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseleave",this.onMouseLeave),this.contentWrapperEl.addEventListener("scroll",this.onScroll),wr.addEventListener("resize",this.onWindowResize);var _r=!1,xr=null,Sr=wr.ResizeObserver||Ef;this.resizeObserver=new Sr(function(){!_r||xr!==null||(xr=wr.requestAnimationFrame(function(){Er.recalculate(),xr=null}))}),this.resizeObserver.observe(this.el),this.resizeObserver.observe(this.contentEl),wr.requestAnimationFrame(function(){_r=!0}),this.mutationObserver=new wr.MutationObserver(this.recalculate),this.mutationObserver.observe(this.contentEl,{childList:!0,subtree:!0,characterData:!0})},br.recalculate=function(){var Er=ws(this.el);this.elStyles=Er.getComputedStyle(this.el),this.isRtl=this.elStyles.direction==="rtl";var wr=this.heightAutoObserverEl.offsetHeight<=1,_r=this.heightAutoObserverEl.offsetWidth<=1,xr=this.contentEl.offsetWidth,Sr=this.contentWrapperEl.offsetWidth,Tr=this.elStyles.overflowX,Or=this.elStyles.overflowY;this.contentEl.style.padding=this.elStyles.paddingTop+" "+this.elStyles.paddingRight+" "+this.elStyles.paddingBottom+" "+this.elStyles.paddingLeft,this.wrapperEl.style.margin="-"+this.elStyles.paddingTop+" -"+this.elStyles.paddingRight+" -"+this.elStyles.paddingBottom+" -"+this.elStyles.paddingLeft;var Dr=this.contentEl.scrollHeight,Cr=this.contentEl.scrollWidth;this.contentWrapperEl.style.height=wr?"auto":"100%",this.placeholderEl.style.width=_r?xr+"px":"auto",this.placeholderEl.style.height=Dr+"px";var Ar=this.contentWrapperEl.offsetHeight;this.axis.x.isOverflowing=Cr>xr,this.axis.y.isOverflowing=Dr>Ar,this.axis.x.isOverflowing=Tr==="hidden"?!1:this.axis.x.isOverflowing,this.axis.y.isOverflowing=Or==="hidden"?!1:this.axis.y.isOverflowing,this.axis.x.forceVisible=this.options.forceVisible==="x"||this.options.forceVisible===!0,this.axis.y.forceVisible=this.options.forceVisible==="y"||this.options.forceVisible===!0,this.hideNativeScrollbar();var Lr=this.axis.x.isOverflowing?this.scrollbarWidth:0,Rr=this.axis.y.isOverflowing?this.scrollbarWidth:0;this.axis.x.isOverflowing=this.axis.x.isOverflowing&&Cr>Sr-Rr,this.axis.y.isOverflowing=this.axis.y.isOverflowing&&Dr>Ar-Lr,this.axis.x.scrollbar.size=this.getScrollbarSize("x"),this.axis.y.scrollbar.size=this.getScrollbarSize("y"),this.axis.x.scrollbar.el.style.width=this.axis.x.scrollbar.size+"px",this.axis.y.scrollbar.el.style.height=this.axis.y.scrollbar.size+"px",this.positionScrollbar("x"),this.positionScrollbar("y"),this.toggleTrackVisibility("x"),this.toggleTrackVisibility("y")},br.getScrollbarSize=function(Er){if(Er===void 0&&(Er="y"),!this.axis[Er].isOverflowing)return 0;var wr=this.contentEl[this.axis[Er].scrollSizeAttr],_r=this.axis[Er].track.el[this.axis[Er].offsetSizeAttr],xr,Sr=_r/wr;return xr=Math.max(~~(Sr*_r),this.options.scrollbarMinSize),this.options.scrollbarMaxSize&&(xr=Math.min(xr,this.options.scrollbarMaxSize)),xr},br.positionScrollbar=function(Er){if(Er===void 0&&(Er="y"),!!this.axis[Er].isOverflowing){var wr=this.contentWrapperEl[this.axis[Er].scrollSizeAttr],_r=this.axis[Er].track.el[this.axis[Er].offsetSizeAttr],xr=parseInt(this.elStyles[this.axis[Er].sizeAttr],10),Sr=this.axis[Er].scrollbar,Tr=this.contentWrapperEl[this.axis[Er].scrollOffsetAttr];Tr=Er==="x"&&this.isRtl&&yr.getRtlHelpers().isRtlScrollingInverted?-Tr:Tr;var Or=Tr/(wr-xr),Dr=~~((_r-Sr.size)*Or);Dr=Er==="x"&&this.isRtl&&yr.getRtlHelpers().isRtlScrollbarInverted?Dr+(_r-Sr.size):Dr,Sr.el.style.transform=Er==="x"?"translate3d("+Dr+"px, 0, 0)":"translate3d(0, "+Dr+"px, 0)"}},br.toggleTrackVisibility=function(Er){Er===void 0&&(Er="y");var wr=this.axis[Er].track.el,_r=this.axis[Er].scrollbar.el;this.axis[Er].isOverflowing||this.axis[Er].forceVisible?(wr.style.visibility="visible",this.contentWrapperEl.style[this.axis[Er].overflowAttr]="scroll"):(wr.style.visibility="hidden",this.contentWrapperEl.style[this.axis[Er].overflowAttr]="hidden"),this.axis[Er].isOverflowing?_r.style.display="block":_r.style.display="none"},br.hideNativeScrollbar=function(){this.offsetEl.style[this.isRtl?"left":"right"]=this.axis.y.isOverflowing||this.axis.y.forceVisible?"-"+this.scrollbarWidth+"px":0,this.offsetEl.style.bottom=this.axis.x.isOverflowing||this.axis.x.forceVisible?"-"+this.scrollbarWidth+"px":0},br.onMouseMoveForAxis=function(Er){Er===void 0&&(Er="y"),this.axis[Er].track.rect=this.axis[Er].track.el.getBoundingClientRect(),this.axis[Er].scrollbar.rect=this.axis[Er].scrollbar.el.getBoundingClientRect();var wr=this.isWithinBounds(this.axis[Er].scrollbar.rect);wr?this.axis[Er].scrollbar.el.classList.add(this.classNames.hover):this.axis[Er].scrollbar.el.classList.remove(this.classNames.hover),this.isWithinBounds(this.axis[Er].track.rect)?(this.showScrollbar(Er),this.axis[Er].track.el.classList.add(this.classNames.hover)):this.axis[Er].track.el.classList.remove(this.classNames.hover)},br.onMouseLeaveForAxis=function(Er){Er===void 0&&(Er="y"),this.axis[Er].track.el.classList.remove(this.classNames.hover),this.axis[Er].scrollbar.el.classList.remove(this.classNames.hover)},br.showScrollbar=function(Er){Er===void 0&&(Er="y");var wr=this.axis[Er].scrollbar.el;this.axis[Er].isVisible||(wr.classList.add(this.classNames.visible),this.axis[Er].isVisible=!0),this.options.autoHide&&this.hideScrollbars()},br.onDragStart=function(Er,wr){wr===void 0&&(wr="y");var _r=Tc(this.el),xr=ws(this.el),Sr=this.axis[wr].scrollbar,Tr=wr==="y"?Er.pageY:Er.pageX;this.axis[wr].dragOffset=Tr-Sr.rect[this.axis[wr].offsetAttr],this.draggedAxis=wr,this.el.classList.add(this.classNames.dragging),_r.addEventListener("mousemove",this.drag,!0),_r.addEventListener("mouseup",this.onEndDrag,!0),this.removePreventClickId===null?(_r.addEventListener("click",this.preventClick,!0),_r.addEventListener("dblclick",this.preventClick,!0)):(xr.clearTimeout(this.removePreventClickId),this.removePreventClickId=null)},br.onTrackClick=function(Er,wr){var _r=this;if(wr===void 0&&(wr="y"),!!this.options.clickOnTrack){var xr=ws(this.el);this.axis[wr].scrollbar.rect=this.axis[wr].scrollbar.el.getBoundingClientRect();var Sr=this.axis[wr].scrollbar,Tr=Sr.rect[this.axis[wr].offsetAttr],Or=parseInt(this.elStyles[this.axis[wr].sizeAttr],10),Dr=this.contentWrapperEl[this.axis[wr].scrollOffsetAttr],Cr=wr==="y"?this.mouseY-Tr:this.mouseX-Tr,Ar=Cr<0?-1:1,Lr=Ar===-1?Dr-Or:Dr+Or,Rr=function Nr(){if(Ar===-1){if(Dr>Lr){var Ir;Dr-=_r.options.clickOnTrackSpeed,_r.contentWrapperEl.scrollTo((Ir={},Ir[_r.axis[wr].offsetAttr]=Dr,Ir)),xr.requestAnimationFrame(Nr)}}else if(Dr=Er.left&&this.mouseX<=Er.left+Er.width&&this.mouseY>=Er.top&&this.mouseY<=Er.top+Er.height},br.findChild=function(Er,wr){var _r=Er.matches||Er.webkitMatchesSelector||Er.mozMatchesSelector||Er.msMatchesSelector;return Array.prototype.filter.call(Er.children,function(xr){return _r.call(xr,wr)})[0]},yr}();Pi.defaultOptions={autoHide:!0,forceVisible:!1,clickOnTrack:!0,clickOnTrackSpeed:40,classNames:{contentEl:"simplebar-content",contentWrapper:"simplebar-content-wrapper",offset:"simplebar-offset",mask:"simplebar-mask",wrapper:"simplebar-wrapper",placeholder:"simplebar-placeholder",scrollbar:"simplebar-scrollbar",track:"simplebar-track",heightAutoObserverWrapperEl:"simplebar-height-auto-observer-wrapper",heightAutoObserverEl:"simplebar-height-auto-observer",visible:"simplebar-visible",horizontal:"simplebar-horizontal",vertical:"simplebar-vertical",hover:"simplebar-hover",dragging:"simplebar-dragging"},scrollbarMinSize:25,scrollbarMaxSize:0,timeout:1e3};Pi.instances=new WeakMap;Pi.initDOMLoadedElements=function(){document.removeEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.removeEventListener("load",this.initDOMLoadedElements),Array.prototype.forEach.call(document.querySelectorAll("[data-simplebar]"),function(yr){yr.getAttribute("data-simplebar")!=="init"&&!Pi.instances.has(yr)&&new Pi(yr,Sc(yr.attributes))})};Pi.removeObserver=function(){this.globalObserver.disconnect()};Pi.initHtmlApi=function(){this.initDOMLoadedElements=this.initDOMLoadedElements.bind(this),typeof MutationObserver!="undefined"&&(this.globalObserver=new MutationObserver(Pi.handleMutations),this.globalObserver.observe(document,{childList:!0,subtree:!0})),document.readyState==="complete"||document.readyState!=="loading"&&!document.documentElement.doScroll?window.setTimeout(this.initDOMLoadedElements):(document.addEventListener("DOMContentLoaded",this.initDOMLoadedElements),window.addEventListener("load",this.initDOMLoadedElements))};Pi.handleMutations=function(yr){yr.forEach(function(br){Array.prototype.forEach.call(br.addedNodes,function(mr){mr.nodeType===1&&(mr.hasAttribute("data-simplebar")?!Pi.instances.has(mr)&&document.documentElement.contains(mr)&&new Pi(mr,Sc(mr.attributes)):Array.prototype.forEach.call(mr.querySelectorAll("[data-simplebar]"),function(Er){Er.getAttribute("data-simplebar")!=="init"&&!Pi.instances.has(Er)&&document.documentElement.contains(Er)&&new Pi(Er,Sc(Er.attributes))}))}),Array.prototype.forEach.call(br.removedNodes,function(mr){mr.nodeType===1&&(mr.getAttribute("data-simplebar")==="init"?Pi.instances.has(mr)&&!document.documentElement.contains(mr)&&Pi.instances.get(mr).unMount():Array.prototype.forEach.call(mr.querySelectorAll('[data-simplebar="init"]'),function(Er){Pi.instances.has(Er)&&!document.documentElement.contains(Er)&&Pi.instances.get(Er).unMount()}))})})};Pi.getOptions=Sc;xc.default&&Pi.initHtmlApi();function hE(yr){return"error"in yr&&"exception"in yr}function ns(yr){return"error"in yr}function pE(yr){return typeof yr.next=="string"}function mi(yr){let br=["","null","undefined"];return Array.isArray(yr)?yr.length>0:typeof yr=="string"&&!br.includes(yr)||typeof yr=="number"||typeof yr=="boolean"?!0:typeof yr=="object"&&yr!==null}function qf(yr){return typeof yr!==null&&typeof yr!="undefined"}function mE(yr,br,mr){return $i(this,null,function*(){let Er=window.CSRF_TOKEN,wr=new Headers({"X-CSRFToken":Er}),_r;typeof mr!="undefined"&&(_r=JSON.stringify(mr),wr.set("content-type","application/json"));let xr=yield fetch(yr,{method:br,body:_r,headers:wr,credentials:"same-origin"}),Sr=xr.headers.get("Content-Type");if(typeof Sr=="string"&&Sr.includes("text"))return{error:yield xr.text()};let Tr=yield xr.json();return!xr.ok&&Array.isArray(Tr)?{error:Tr.join(` +`)}:!xr.ok&&"detail"in Tr?{error:Tr.detail}:Tr})}function jo(yr,br){return $i(this,null,function*(){return yield mE(yr,"PATCH",br)})}function BR(yr){return $i(this,null,function*(){return yield mE(yr,"GET")})}function gE(yr){return $i(this,null,function*(){return yield BR(yr)})}function*Wr(...yr){for(let br of yr)for(let mr of document.querySelectorAll(br))mr!==null&&(yield mr)}function $a(yr){return document.getElementById(yr)}function vE(yr,br=0){let mr=br,Er=document.getElementById("content-title");Er!==null&&(mr+=Er.getBoundingClientRect().bottom);let wr=yr.getBoundingClientRect().top+window.pageYOffset+mr;window.scrollTo({top:wr,behavior:"smooth"})}function bE(yr,br="select"){let mr=[];for(let Er of yr.querySelectorAll(br))if(Er!==null){let wr={name:Er.name,options:[]};for(let _r of Er.options)_r.selected&&wr.options.push(_r.value);mr=[...mr,wr]}return mr}function If(yr,br){yr!==null&&(typeof br=="undefined"?window.getComputedStyle(yr).display==="none"?yr.style.display="":yr.style.display="none":br==="show"?yr.style.display="":yr.style.display="none")}function ss(yr,br,mr){function Er(_r){return!!(typeof mr=="string"&&_r!==null&&_r.matches(mr))}function wr(_r){if(_r!==null&&_r.parentElement!==null&&!Er(_r)){for(let xr of _r.parentElement.querySelectorAll(br))if(xr!==null)return xr;return wr(_r.parentElement.parentElement)}return null}return wr(yr)}function Ho(yr,br,mr=null,Er=[]){let wr=document.createElement(yr);if(br!==null)for(let _r of Object.keys(br)){let xr=_r,Sr=br[xr];xr in wr&&(wr[xr]=Sr)}mr!==null&&mr.length>0&&wr.classList.add(...mr);for(let _r of Er)wr.appendChild(_r);return wr}function yE(yr,br){let mr=new Map;for(let Er of yr){let wr=Er[br];mr.has(wr)||mr.set(wr,Er)}return Array.from(mr.values())}function _s(yr,br,mr){if(typeof yr!="string")throw new TypeError("replaceAll 'input' argument must be a string");if(typeof br!="string"&&!(br instanceof RegExp))throw new TypeError("replaceAll 'pattern' argument must be a string or RegExp instance");switch(typeof mr){case"boolean":mr=String(mr);break;case"number":mr=String(mr);break;case"string":break;default:throw new TypeError("replaceAll 'replacement' argument must be stringifyable")}if(br instanceof RegExp){let Er=Array.from(new Set([...br.flags.split(""),"g"])).join("");br=new RegExp(br.source,Er)}else br=new RegExp(br,"g");return yr.replace(br,mr)}function FR(yr,br){let mr=new Set;for(let Er of br.querySelectorAll("*[name]"))Er.validity.valid?Er.classList.contains("is-invalid")&&Er.classList.remove("is-invalid"):(mr.add(Er.name),Er.classList.contains("is-invalid")||Er.classList.add("is-invalid"));if(mr.size!==0){let Er=br.elements.namedItem(Array.from(mr)[0]);vE(Er),yr.preventDefault()}}function EE(){for(let yr of Wr("form")){let br=yr.querySelectorAll("button[type=submit]");for(let mr of br)mr.addEventListener("click",Er=>FR(Er,yr))}}function wE(){for(let yr of Wr("a.set_field_value"))if(yr!==null){let br=function(mr){mr.preventDefault();let Er=yr.getAttribute("data"),wr=document.getElementById(yr.target);wr!==null&&Er!==null&&(wr.value=Er)};yr.addEventListener("click",br)}}var _E={vlangroup:{region:{hide:["id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region"]},"site group":{hide:["id_region","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:["id_sitegroup"]},site:{hide:["id_location","id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site"]},location:{hide:["id_rack","id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location"]},rack:{hide:["id_clustergroup","id_cluster"],show:["id_region","id_sitegroup","id_site","id_location","id_rack"]},"cluster group":{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_cluster"],show:["id_clustergroup"]},cluster:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack"],show:["id_clustergroup","id_cluster"]},default:{hide:["id_region","id_sitegroup","id_site","id_location","id_rack","id_clustergroup","id_cluster"],show:[]}}},xE={vlangroup_add:"vlangroup",vlangroup_edit:"vlangroup",vlangroup_bulk_edit:"vlangroup"};function Pf(yr,br){var mr;for(let Er of Wr(yr)){let wr=(mr=Er.parentElement)==null?void 0:mr.parentElement;wr!==null&&(br==="show"?If(wr,"show"):If(wr,"hide"))}}function SE(yr,br){let mr=br.options[br.selectedIndex].innerText.toLowerCase(),Er=xE[yr];for(let[wr,_r]of Object.entries(_E[Er]))if(mr.endsWith(wr)){for(let xr of _r.hide)Pf(`#${xr}`,"hide");for(let xr of _r.show)Pf(`#${xr}`,"show");break}else for(let xr of _E[Er].default.hide)Pf(`#${xr}`,"hide")}function TE(){for(let yr of Object.keys(xE))for(let br of Wr(`html[data-netbox-url-name="${yr}"] #id_scope_type`))SE(yr,br),br.addEventListener("change",()=>SE(yr,br))}function OE(){for(let yr of[EE,wE,TE])yr()}window.Collapse=sn;window.Modal=ms;window.Popover=Vs;window.Toast=es;window.Tooltip=Hn;function zR(){for(let yr of Wr('[data-bs-toggle="tooltip"]'))new Hn(yr,{container:"body"})}function $R(){for(let yr of Wr('[data-bs-toggle="modal"]'))new ms(yr)}function Un(yr,br,mr,Er){let wr="mdi-alert";switch(yr){case"warning":wr="mdi-alert";break;case"success":wr="mdi-check-circle";break;case"info":wr="mdi-information";break;case"danger":wr="mdi-alert";break}let _r=document.createElement("div");_r.setAttribute("class","toast-container position-fixed bottom-0 end-0 m-3");let xr=document.createElement("div");xr.setAttribute("class",`toast bg-${yr}`),xr.setAttribute("role","alert"),xr.setAttribute("aria-live","assertive"),xr.setAttribute("aria-atomic","true");let Sr=document.createElement("div");Sr.setAttribute("class",`toast-header bg-${yr} text-body`);let Tr=document.createElement("i");Tr.setAttribute("class",`mdi ${wr}`);let Or=document.createElement("strong");Or.setAttribute("class","me-auto ms-1"),Or.innerText=br;let Dr=document.createElement("button");Dr.setAttribute("type","button"),Dr.setAttribute("class","btn-close"),Dr.setAttribute("data-bs-dismiss","toast"),Dr.setAttribute("aria-label","Close");let Cr=document.createElement("div");if(Cr.setAttribute("class","toast-body"),Sr.appendChild(Tr),Sr.appendChild(Or),typeof Er!="undefined"){let Lr=document.createElement("small");Lr.setAttribute("class","text-muted"),Sr.appendChild(Lr)}return Sr.appendChild(Dr),Cr.innerText=mr.trim(),xr.appendChild(Sr),xr.appendChild(Cr),_r.appendChild(xr),document.body.appendChild(_r),new es(xr)}function UR(){let{hash:yr}=location;if(yr&&yr.match(/^#tab_.+$/)){let br=yr.replace("tab_","");for(let mr of Wr(`ul.nav.nav-tabs .nav-link[data-bs-target="${br}"]`))new Gs(mr).show()}}function VR(){let yr=document.querySelectorAll(".sidebar .accordion-item");function br(mr){for(let Er of yr)Er!==mr?Er.classList.remove("is-open"):Er.classList.toggle("is-open")}for(let mr of yr)for(let Er of mr.querySelectorAll(".accordion-button"))Er.addEventListener("click",()=>{br(mr)})}function WR(){for(let yr of Wr("a.image-preview")){let br=`${Math.round(window.innerWidth/4)}px`,mr=Ho("img",{src:yr.href});mr.style.maxWidth=br;let Er=Ho("div",null,null,[mr]);new Vs(yr,{customClass:"image-preview-popover",trigger:"hover",html:!0,content:Er})}}function Oc(){for(let yr of[zR,$R,UR,WR,VR])yr()}function DE(yr){let br=yr.currentTarget,mr=br.parentElement;mi(mr)&&(br.value===""?mr.classList.add("hide-last-child"):mr.classList.remove("hide-last-child"))}function AE(){let yr=document.getElementById("quicksearch"),br=document.getElementById("quicksearch_clear");mi(yr)&&(yr.addEventListener("keyup",DE,{passive:!0}),yr.addEventListener("search",DE,{passive:!0}),mi(br)&&br.addEventListener("click",()=>$i(this,null,function*(){let mr=new Event("search");yr.value="",yield new Promise(Er=>setTimeout(Er,100)),yr.dispatchEvent(mr)}),{passive:!0}))}function CE(yr,br,mr){return Math.min(Math.max(yr,mr),br)}var LE=class extends Error{constructor(br){super(`Failed to parse color: "${br}"`)}},Ua=LE;function GR(yr){if(typeof yr!="string")throw new Ua(yr);if(yr.trim().toLowerCase()==="transparent")return[0,0,0,0];let br=yr.trim();br=tN.test(yr)?XR(yr):yr;let mr=JR.exec(br);if(mr){let xr=Array.from(mr).slice(1);return[...xr.slice(0,3).map(Sr=>parseInt(Va(Sr,2),16)),parseInt(Va(xr[3]||"f",2),16)/255]}let Er=QR.exec(br);if(Er){let xr=Array.from(Er).slice(1);return[...xr.slice(0,3).map(Sr=>parseInt(Sr,16)),parseInt(xr[3]||"ff",16)/255]}let wr=ZR.exec(br);if(wr){let xr=Array.from(wr).slice(1);return[...xr.slice(0,3).map(Sr=>parseInt(Sr,10)),parseFloat(xr[3]||"1")]}let _r=eN.exec(br);if(_r){let[xr,Sr,Tr,Or]=Array.from(_r).slice(1).map(parseFloat);if(CE(0,100,Sr)!==Sr)throw new Ua(yr);if(CE(0,100,Tr)!==Tr)throw new Ua(yr);return[...rN(xr,Sr,Tr),Or||1]}throw new Ua(yr)}function YR(yr){let br=5381,mr=yr.length;for(;mr;)br=br*33^yr.charCodeAt(--mr);return(br>>>0)%2341}var ME=yr=>parseInt(yr.replace(/_/g,""),36),KR="1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm".split(" ").reduce((yr,br)=>{let mr=ME(br.substring(0,3)),Er=ME(br.substring(3)).toString(16),wr="";for(let _r=0;_r<6-Er.length;_r++)wr+="0";return yr[mr]=`${wr}${Er}`,yr},{});function XR(yr){let br=yr.toLowerCase().trim(),mr=KR[YR(br)];if(!mr)throw new Ua(yr);return`#${mr}`}var Va=(yr,br)=>Array.from(Array(br)).map(()=>yr).join(""),JR=new RegExp(`^#${Va("([a-f0-9])",3)}([a-f0-9])?$`,"i"),QR=new RegExp(`^#${Va("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),ZR=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${Va(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),eN=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,tN=/^[a-z]+$/i,kE=yr=>Math.round(yr*255),rN=(yr,br,mr)=>{let Er=mr/100;if(br===0)return[Er,Er,Er].map(kE);let wr=(yr%360+360)%360/60,_r=(1-Math.abs(2*Er-1))*(br/100),xr=_r*(1-Math.abs(wr%2-1)),Sr=0,Tr=0,Or=0;wr>=0&&wr<1?(Sr=_r,Tr=xr):wr>=1&&wr<2?(Sr=xr,Tr=_r):wr>=2&&wr<3?(Tr=_r,Or=xr):wr>=3&&wr<4?(Tr=xr,Or=_r):wr>=4&&wr<5?(Sr=xr,Or=_r):wr>=5&&wr<6&&(Sr=_r,Or=xr);let Dr=Er-_r/2,Cr=Sr+Dr,Ar=Tr+Dr,Lr=Or+Dr;return[Cr,Ar,Lr].map(kE)};function iN(yr){if(yr==="transparent")return 0;function br(_r){let xr=_r/255;return xr<=.03928?xr/12.92:Math.pow((xr+.055)/1.055,2.4)}let[mr,Er,wr]=GR(yr);return .2126*br(mr)+.7152*br(Er)+.0722*br(wr)}function nN(yr){return iN(yr)>.179}function Wa(yr){return nN(yr)?"#000":"#fff"}var RE=sN;function sN(yr,br,mr){var Er=null,wr=null,_r=function(){Er&&(clearTimeout(Er),wr=null,Er=null)},xr=function(){var Tr=wr;_r(),Tr&&Tr()},Sr=function(){if(!br)return yr.apply(this,arguments);var Tr=this,Or=arguments,Dr=mr&&!Er;if(_r(),wr=function(){yr.apply(Tr,Or)},Er=setTimeout(function(){if(Er=null,!Dr){var Cr=wr;return wr=null,Cr()}},br),Dr)return wr()};return Sr.cancel=_r,Sr.flush=xr,Sr}var Gf=vn(BE()),Yf=vn(sw());var Ac={};(function(yr,br){typeof Ac=="object"&&typeof module=="object"?module.exports=br():typeof define=="function"&&define.amd?define([],br):typeof Ac=="object"?Ac.SlimSelect=br():yr.SlimSelect=br()})(window,function(){return mr={},yr.m=br=[function(Er,wr,_r){"use strict";function xr(Sr,Tr){Tr=Tr||{bubbles:!1,cancelable:!1,detail:void 0};var Or=document.createEvent("CustomEvent");return Or.initCustomEvent(Sr,Tr.bubbles,Tr.cancelable,Tr.detail),Or}wr.__esModule=!0,wr.kebabCase=wr.highlight=wr.isValueInArrayOfObjects=wr.debounce=wr.putContent=wr.ensureElementInView=wr.hasClassInTree=void 0,wr.hasClassInTree=function(Sr,Tr){function Or(Dr,Cr){return Cr&&Dr&&Dr.classList&&Dr.classList.contains(Cr)?Dr:null}return Or(Sr,Tr)||function Dr(Cr,Ar){return Cr&&Cr!==document?Or(Cr,Ar)?Cr:Dr(Cr.parentNode,Ar):null}(Sr,Tr)},wr.ensureElementInView=function(Sr,Tr){var Or=Sr.scrollTop+Sr.offsetTop,Dr=Or+Sr.clientHeight,Cr=Tr.offsetTop,Tr=Cr+Tr.clientHeight;Cr=window.innerHeight?"above":Or?Tr:"below"},wr.debounce=function(Sr,Tr,Or){var Dr;return Tr===void 0&&(Tr=100),Or===void 0&&(Or=!1),function(){for(var Cr=[],Ar=0;Ar[^<>]*').concat(Tr,""))},wr.kebabCase=function(Sr){var Tr=Sr.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,function(Or){return"-"+Or.toLowerCase()});return Sr[0]===Sr[0].toUpperCase()?Tr.substring(1):Tr},typeof(wr=window).CustomEvent!="function"&&(xr.prototype=wr.Event.prototype,wr.CustomEvent=xr)},function(Er,wr,_r){"use strict";wr.__esModule=!0,wr.validateOption=wr.validateData=wr.Data=void 0;var xr=(Sr.prototype.newOption=function(Or){return{id:Or.id||String(Math.floor(1e8*Math.random())),value:Or.value||"",text:Or.text||"",innerHTML:Or.innerHTML||"",selected:Or.selected||!1,display:Or.display===void 0||Or.display,disabled:Or.disabled||!1,placeholder:Or.placeholder||!1,class:Or.class||void 0,data:Or.data||{},mandatory:Or.mandatory||!1}},Sr.prototype.add=function(Or){this.data.push({id:String(Math.floor(1e8*Math.random())),value:Or.value,text:Or.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:Or.mandatory,data:{}})},Sr.prototype.parseSelectData=function(){this.data=[];for(var Or=0,Dr=this.main.select.element.childNodes;Or',placeholder:this.placeholder,searchPlaceholder:"Filter",onChange:()=>this.handleSlimChange()}),this.base.multiple&&(this.slim.config.closeOnSelect=!1),this.getStaticParams(),this.getDynamicParams(),this.getPathKeys();for(let[xr,Sr]of this.staticParams.entries())this.queryParams.set(xr,Sr);for(let xr of this.dynamicParams.keys())this.updateQueryParams(xr);for(let xr of this.pathValues.keys())this.updatePathValues(xr);this.queryParams.set("brief",[!0]),this.updateQueryUrl(),this.resetClasses(),this.setSlimStyles(),this.initResetButton(),this.initRefreshButton(),this.addEventListeners();let wr=this.base.getAttribute("data-fetch-trigger"),_r=this.base.closest(".content-container .collapse");switch(lw(wr)?this.trigger=wr:_r!==null?this.trigger="collapse":this.trigger="open",this.trigger){case"collapse":_r!==null&&(_r.classList.contains("show")&&Promise.all([this.loadData()]),_r.addEventListener("show.bs.collapse",()=>this.loadData()),_r.addEventListener("hide.bs.collapse",()=>this.resetOptions()));break;case"open":this.slim.beforeOpen=()=>this.loadData();break;case"load":Promise.all([this.loadData()]);break}}get options(){return this.slim.data.data.filter(dw)}set options(br){let mr=br;this.nullOption!==null&&(mr=[this.nullOption,...mr]);let Er=yE(mr,"value"),wr=typeof Er.find(xr=>xr.value==="")!="undefined",_r=Er.findIndex(xr=>xr.value==="");wr&&_r>=0?Er[_r]=this.emptyOption:Er.unshift(this.emptyOption),this.slim.setData(Er)}resetOptions(){this.options=[this.emptyOption]}disable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")||this.slim.slim.singleSelected.container.setAttribute("disabled",""):this.slim.slim.multiSelected!==null&&(this.slim.slim.multiSelected.container.hasAttribute("disabled")||this.slim.slim.multiSelected.container.setAttribute("disabled","")),this.slim.disable()}enable(){this.slim.slim.singleSelected!==null?this.slim.slim.singleSelected.container.hasAttribute("disabled")&&this.slim.slim.singleSelected.container.removeAttribute("disabled"):this.slim.slim.multiSelected!==null&&this.slim.slim.multiSelected.container.hasAttribute("disabled")&&this.slim.slim.multiSelected.container.removeAttribute("disabled"),this.slim.enable()}addEventListeners(){let br=RE(Er=>this.handleSearch(Er),300,!1);this.slim.slim.search.input.addEventListener("keyup",Er=>{if(!Er.key.match(/^(Arrow|Enter|Tab).*/))return br(Er)}),this.slim.slim.search.input.addEventListener("paste",Er=>br(Er)),this.slim.slim.list.addEventListener("scroll",()=>this.handleScroll()),this.base.addEventListener(`netbox.select.atbottom.${this.name}`,()=>this.fetchOptions(this.more,"merge")),this.base.addEventListener(`netbox.select.disabled.${this.name}`,Er=>this.handleDisableEnable(Er));let mr=new Set([...this.dynamicParams.keys(),...this.pathValues.keys()]);for(let Er of mr){let wr=document.querySelector(`[name="${Er}"]`);wr!==null&&wr.addEventListener("change",_r=>this.handleEvent(_r)),this.base.addEventListener(`netbox.select.onload.${Er}`,_r=>this.handleEvent(_r))}}loadData(){return $i(this,null,function*(){try{this.disable(),yield this.getOptions("replace")}catch(br){console.error(br)}finally{this.setOptionStyles(),this.enable(),this.base.dispatchEvent(this.loadEvent)}})}getPreselectedOptions(){return Array.from(this.base.options).filter(br=>br.selected).filter(br=>!(br.value==="---------"||br.innerText==="---------"))}processOptions(br,mr="merge"){return $i(this,null,function*(){let Er=this.getPreselectedOptions(),wr=Er.map(Sr=>Sr.getAttribute("value")).filter(mi),_r=Er.map(Sr=>({value:Sr.value,text:(0,Gf.encode)(Sr.innerText),selected:!0,disabled:!1})),xr=[];for(let Sr of br.results){let Tr=(0,Gf.encode)(Sr.display);typeof Sr._depth=="number"&&Sr._depth>0&&(Tr=`${"\u2500".repeat(Sr._depth)} ${Tr}`);let Or={},Dr=Sr.id.toString(),Cr,Ar,Lr;for(let[Nr,Ir]of Object.entries(Sr)){if(!["id","slug"].includes(Nr)&&["string","number","boolean"].includes(typeof Ir)){let Pr=_s(Nr,"_","-");Or[Pr]=String(Ir)}this.disabledAttributes.some(Pr=>Pr.toLowerCase()===Nr.toLowerCase())&&(typeof Ir=="string"&&Ir.toLowerCase()!=="false"||typeof Ir=="boolean"&&Ir===!0||typeof Ir=="number"&&Ir>0)&&(Lr=!0)}wr.some(Nr=>this.disabledOptions.includes(Nr))&&(Lr=!0),wr.includes(Dr)&&(Ar=!0,Lr=!1);let Rr={value:Dr,text:Tr,data:Or,style:Cr,selected:Ar,disabled:Lr};xr=[...xr,Rr]}switch(mr){case"merge":this.options=[...this.options,...xr];break;case"replace":this.options=[..._r,...xr];break}pE(br)?this.more=br.next:this.more=null})}fetchOptions(br,mr="merge"){return $i(this,null,function*(){if(typeof br=="string"){let Er=yield gE(br);if(ns(Er))return hE(Er)?this.handleError(Er.exception,Er.error):this.handleError(`Error Fetching Options for field '${this.name}'`,Er.error);yield this.processOptions(Er,mr)}})}getOptions(br="merge"){return $i(this,null,function*(){if(this.queryUrl.includes("{{")){this.resetOptions();return}yield this.fetchOptions(this.queryUrl,br)})}handleSearch(br){return $i(this,null,function*(){let{value:mr}=br.target,Er=Yf.default.stringifyUrl({url:this.queryUrl,query:{q:mr}});Er.includes("{{")||(yield this.fetchOptions(Er,"merge"),this.slim.data.search(mr),this.slim.render())})}handleScroll(){let br=Math.floor(this.slim.slim.list.scrollTop)+this.slim.slim.list.offsetHeight===this.slim.slim.list.scrollHeight;this.atBottom&&!br?(this.atBottom=!1,this.base.dispatchEvent(this.bottomEvent)):!this.atBottom&&br&&(this.atBottom=!0,this.base.dispatchEvent(this.bottomEvent))}handleEvent(br){let mr=br.target;this.updateQueryParams(mr.name),this.updatePathValues(mr.name),this.updateQueryUrl(),Promise.all([this.loadData()])}handleDisableEnable(br){let mr=br.target;mr.disabled===!0?this.disable():mr.disabled===!1&&this.enable()}handleError(br,mr){Un("danger",br,mr).show(),this.resetOptions()}handleSlimChange(){let br=this.slim.slim;br&&(br.container.classList.contains("is-invalid")||this.base.classList.contains("is-invalid"))&&(br.container.classList.remove("is-invalid"),this.base.classList.remove("is-invalid")),this.base.dispatchEvent(this.loadEvent)}updateQueryUrl(){let br={};for(let[wr,_r]of this.queryParams.entries())br[wr]=_r;let mr=this.url;for(let[wr,_r]of this.pathValues.entries())for(let xr of this.url.matchAll(new RegExp(`({{${wr}}})`,"g")))mi(_r)&&(mr=_s(mr,xr[1],_r.toString()));let Er=Yf.default.stringifyUrl({url:mr,query:br});this.queryUrl!==Er&&(this.queryUrl=Er,this.base.setAttribute("data-url",Er))}updateQueryParams(br){let mr=document.querySelector(`[name="${br}"]`);if(mr!==null){let Er=[];if(mr.multiple?Er=Array.from(mr.options).filter(wr=>wr.selected).map(wr=>wr.value):mr.value!==""&&(Er=[mr.value]),Er.length>0){this.dynamicParams.updateValue(br,Er);let wr=this.dynamicParams.get(br);if(typeof wr!="undefined"){let{queryParam:_r,queryValue:xr}=wr,Sr=[];if(this.staticParams.has(_r)){let Tr=this.staticParams.get(_r);typeof Tr!="undefined"&&(Sr=[...Tr,...xr])}else Sr=xr;Sr.length>0?this.queryParams.set(_r,Sr):this.queryParams.delete(_r)}}else{let wr=this.dynamicParams.queryParam(br);wr!==null&&this.queryParams.delete(wr)}}}updatePathValues(br){let mr=_s(br,/^id_/i,""),Er=$a(`id_${mr}`);Er!==null&&this.url.includes("{{")&&Boolean(this.url.match(new RegExp(`({{(${br})}})`,"g")))&&(mi(Er.value)?this.pathValues.set(br,Er.value):this.pathValues.set(br,""))}getPlaceholder(){let br=this.name;if(this.base.id){let mr=document.querySelector(`label[for="${this.base.id}"]`);mr!==null&&(br=`Select ${mr.innerText.trim()}`)}return br}getDisabledOptions(){var mr;let br=[];if(aw(this.base))try{let Er=JSON.parse((mr=this.base.getAttribute("data-query-param-exclude"))!=null?mr:"[]");br=[...br,...Er]}catch(Er){console.group(`Unable to parse data-query-param-exclude value on select element '${this.name}'`),console.warn(Er),console.groupEnd()}return br}getDisabledAttributes(){let br=[...fw],mr=this.base.getAttribute("disabled-indicator");return mi(mr)&&(br=[...br,mr]),br}getPathKeys(){for(let br of this.url.matchAll(new RegExp("{{(.+)}}","g")))this.pathValues.set(br[1],"")}getDynamicParams(){let br=this.base.getAttribute("data-dynamic-params");try{this.dynamicParams.addFromJson(br)}catch(mr){console.group(`Unable to determine dynamic query parameters for select field '${this.name}'`),console.warn(mr),console.groupEnd()}}getStaticParams(){let br=this.base.getAttribute("data-static-params");try{if(mi(br)){let mr=JSON.parse(br);if(uw(mr))for(let{queryParam:Er,queryValue:wr}of mr)Array.isArray(wr)?this.staticParams.set(Er,wr):this.staticParams.set(Er,[wr])}}catch(mr){console.group(`Unable to determine static query parameters for select field '${this.name}'`),console.warn(mr),console.groupEnd()}}setSlimStyles(){let{width:br,height:mr}=this.slim.slim.container.getBoundingClientRect();this.base.style.opacity="0",this.base.style.width=`${br}px`,this.base.style.height=`${mr}px`,this.base.style.display="block",this.base.style.position="absolute",this.base.style.pointerEvents="none"}setOptionStyles(){for(let br of this.options)if("data"in br&&"id"in br&&typeof br.data!="undefined"&&typeof br.id!="undefined"&&"color"in br.data){let mr=br.id,Er=br.data,wr=document.createElement("style"),_r=`#${Er.color}`,xr=Wa(_r);wr.setAttribute("data-netbox",mr),wr.innerHTML=_s(` div.ss-values div.ss-value[data-id="${mr}"], div.ss-list div.ss-option:not(.ss-disabled)[data-id="${mr}"] { @@ -13,11 +13,11 @@ Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the color: ${xr} !important; } `,` -`,"").trim(),document.head.appendChild(wr)}}resetClasses(){let br=this.slim.slim;if(br)for(let mr of this.base.classList)br.container.classList.remove(mr)}initResetButton(){let br=ws(this.base,"button[data-reset-select]");br!==null&&br.addEventListener("click",()=>{window.location.assign(window.location.origin+window.location.pathname)})}initRefreshButton(){if(this.allowRefresh){let br=Ho("button",{type:"button"},["btn","btn-sm","btn-ghost-dark"],[Ho("i",null,["mdi","mdi-reload"])]);br.addEventListener("click",()=>this.loadData()),br.type="button",this.slim.slim.search.container.appendChild(br)}}};function hw(){for(let yr of Wr(".netbox-api-select:not([data-ssid])"))new Kf(yr)}function pw(yr){return typeof yr.value=="string"&&yr.value!==""}function mw(yr,br){if(yr.slim.singleSelected!==null)if(pw(br)){let mr=`#${br.value}`,Er=Va(mr);yr.slim.singleSelected.container.style.backgroundColor=mr,yr.slim.singleSelected.container.style.color=Er}else yr.slim.singleSelected.container.removeAttribute("style")}function gw(){for(let yr of Wr("select.netbox-color-select:not([data-ssid])")){for(let mr of yr.options)if(pw(mr)){let Er=`#${mr.value}`,wr=Va(Er);mr.style.backgroundColor=Er,mr.style.color=wr}let br=new zo({select:yr,allowDeselect:!0,deselectLabel:''});for(let mr of br.data.data)if("selected"in mr&&mr.selected){mw(br,mr);break}for(let mr of yr.classList)br.slim.container.classList.remove(mr);br.onChange=mr=>mw(br,mr)}}function vw(){for(let yr of Wr(".netbox-static-select:not([data-ssid])"))if(yr!==null){let br=document.querySelector(`label[for="${yr.id}"]`),mr;br!==null&&(mr=`Select ${br.innerText.trim()}`);let Er=new zo({select:yr,allowDeselect:!0,deselectLabel:'',placeholder:mr});for(let wr of yr.classList)Er.slim.container.classList.remove(wr)}}function Ac(){for(let yr of[hw,gw,vw])yr()}function SN(yr){let br=yr.getAttribute("data-url"),mr=yr.classList.contains("connected"),Er=mr?"planned":"connected";mi(br)&&jo(br,{status:Er}).then(wr=>{var _r;if(ns(wr)){Un("danger","Error",wr.error).show();return}else{let xr=(_r=yr.parentElement)==null?void 0:_r.parentElement,Sr=yr.querySelector("i.mdi, span.mdi");mr?(xr.classList.remove("success"),xr.classList.add("info"),yr.classList.remove("connected","btn-warning"),yr.classList.add("btn-info"),yr.title="Mark Installed",Sr.classList.remove("mdi-lan-disconnect"),Sr.classList.add("mdi-lan-connect")):(xr.classList.remove("info"),xr.classList.add("success"),yr.classList.remove("btn-success"),yr.classList.add("connected","btn-warning"),yr.title="Mark Installed",Sr.classList.remove("mdi-lan-connect"),Sr.classList.add("mdi-lan-disconnect"))}})}function bw(){for(let yr of Wr("button.cable-toggle"))yr.addEventListener("click",()=>SN(yr))}var yw=class{set(br,mr,Er){return br[mr]=Er,!0}get(br,mr){return br[mr]}has(br,mr){return mr in br}},Cc=class{constructor(br,mr){di(this,"handlers");di(this,"proxy");di(this,"options");di(this,"key","");if(this.options=mr,typeof this.options.key=="string"?this.key=this.options.key:this.key=this.generateStateKey(br),this.options.persist){let Er=this.retrieve();Er!==null&&(br=ci(ci({},br),Er))}this.handlers=new yw,this.proxy=new Proxy(br,this.handlers),this.options.persist&&this.save()}generateStateKey(br){return`netbox-${window.btoa(Object.keys(br).join("---"))}`}get(br){return this.handlers.get(this.proxy,br)}set(br,mr){this.handlers.set(this.proxy,br,mr),this.options.persist&&this.save()}all(){return this.proxy}keys(){return Object.keys(this.proxy)}values(){return Object.values(this.proxy)}save(){let br=JSON.stringify(this.proxy);localStorage.setItem(this.key,br)}retrieve(){let br=localStorage.getItem(this.key);return br!==null?JSON.parse(br):null}};function xs(yr,br={}){return new Cc(yr,br)}var Xf=xs({hidden:!1},{persist:!0,key:"netbox-object-depth"});var Jf=xs({view:"images-and-labels"},{persist:!0});var Ew=xs({element:null},{persist:!1});var ww=xs({hidden:!0},{persist:!0,key:"netbox-secret"});function _w(yr,br){br.setAttribute("data-depth-indicators",yr?"hidden":"shown"),br.innerText=yr?"Show Depth Indicators":"Hide Depth Indicators"}function xw(){for(let yr of Wr(".record-depth"))yr.style.display=""}function Sw(){for(let yr of Wr(".record-depth"))yr.style.display="none"}function TN(yr,br){let mr=yr.get("hidden");yr.set("hidden",!mr);let Er=yr.get("hidden");Er?Sw():xw(),_w(Er,br)}function Tw(){let yr=Xf.get("hidden");for(let br of Wr("button.toggle-depth"))_w(yr,br),br.addEventListener("click",mr=>{TN(Xf,mr.currentTarget)},!1);yr?Sw():yr||xw()}function DN(yr){let br=Array.from(yr.options);for(let mr=1;mr=0;mr--){let Er=br[mr];if(Er.selected){let wr=yr.options[mr+1];Er=yr.removeChild(Er),wr=yr.replaceChild(Er,wr),yr.insertBefore(wr,Er)}}}function Dw(){for(let yr of Wr("#move-option-up")){let br=yr.getAttribute("data-target");if(br!==null)for(let mr of Wr(`#${br}`))yr.addEventListener("click",()=>DN(mr))}for(let yr of Wr("#move-option-down")){let br=yr.getAttribute("data-target");if(br!==null)for(let mr of Wr(`#${br}`))yr.addEventListener("click",()=>ON(mr))}}function Ow(yr,br){return yr.replace(/[^\-.\w\s]/g,"").replace(/^[\s.]+|[\s.]+$/g,"").replace(/[-.\s]+/g,"-").toLowerCase().substring(0,br)}function Aw(){let yr=document.getElementById("id_slug"),br=document.getElementById("reslug");if(yr===null||br===null)return;let mr=yr.getAttribute("slug-source"),Er=document.getElementById(`id_${mr}`);if(Er===null){console.error("Unable to find field for slug field.");return}let wr=yr.getAttribute("maxlength"),_r=50;wr&&(_r=Number(wr)),Er.addEventListener("blur",()=>{yr.value||(yr.value=Ow(Er.value,_r))}),br.addEventListener("click",()=>{yr.value=Ow(Er.value,_r)})}function AN(yr){if(!yr.currentTarget.checked)for(let mr of Wr('input[type="checkbox"].toggle',"input#select-all"))mr.checked=!1}function CN(yr){let br=yr.currentTarget,mr=ws(br,"table"),Er=document.getElementById("select-all-box"),wr=document.getElementById("select-all");if(mr!==null){for(let _r of mr.querySelectorAll('tr:not(.d-none) input[type="checkbox"][name="pk"]'))br.checked?_r.checked=!0:_r.checked=!1;Er!==null&&(br.checked?Er.classList.remove("d-none"):(Er.classList.add("d-none"),wr!==null&&(wr.checked=!1)))}}function Cw(){for(let yr of Wr('table tr th > input[type="checkbox"].toggle'))yr.addEventListener("change",CN);for(let yr of Wr('input[type="checkbox"][name="pk"]'))yr.addEventListener("change",AN)}function Lw(){var yr;(yr=window.getSelection())==null||yr.removeAllRanges()}function Mw(yr,br){br.set("element",yr)}function LN(yr,br,mr){let Er=!1;for(let wr of mr){let _r=wr;if(Er===!0&&(_r.checked=yr.checked),wr===br){if(Er===!0){Er=!1;return}Er=!0,_r.checked=yr.checked}if(wr===yr){if(Er===!0){Er=!1;return}Er=!0}}}function MN(yr,br){let mr=yr.target,Er=br.get("element");if(Mw(mr,br),!yr.shiftKey)return;if(Lw(),Er===null)return Mw(mr,br);let wr=Wr('input[type="checkbox"][name="pk"]');LN(mr,Er,wr)}function kw(){let yr=Wr('input[type="checkbox"][name="pk"]');for(let br of yr)br.addEventListener("click",mr=>{Lw(),mr.stopPropagation(),MN(mr,Ew)})}function kN(yr){let br=yr.querySelector("button.preview-button"),mr=yr.querySelector("textarea"),Er=yr.querySelector("div.preview");if(!mi(mr.style.height)){let{height:wr}=mr.getBoundingClientRect();mr.style.height=`${wr}px`}br.addEventListener("htmx:configRequest",wr=>{wr.detail.parameters={text:mr.value||""},wr.detail.headers["X-CSRFToken"]=window.CSRF_TOKEN,Er.style.minHeight=mr.style.height,Er.innerHTML=""})}function Rw(){for(let yr of document.querySelectorAll(".markdown-widget"))kN(yr)}function RN(yr,br){br.setAttribute("data-secret-visibility",yr?"hidden":"shown"),br.innerText=yr?"Show Secret":"Hide Secret"}function NN(){let yr=za("secret");if(mi(yr)){let br=yr.getAttribute("data-secret");mi(br)&&(yr.innerText=br)}}function Nw(){let yr=za("secret");if(mi(yr)){let br=yr.getAttribute("data-secret");mi(br)&&(yr.innerText="\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022")}}function qN(yr,br){yr.set("hidden",!yr.get("hidden"));let mr=yr.get("hidden");mr?Nw():NN(),RN(mr,br)}function qw(){Nw();for(let yr of Wr("button.toggle-secret"))yr.addEventListener("click",br=>{qN(ww,br.currentTarget)},!1)}function Lc(){for(let yr of[Tw,bw,Aw,Cw,kw,Dw,Rw,qw])yr()}var $o="netbox-color-mode",IN="Light Mode",PN="Dark Mode",Iw="mdi-lightbulb-on",Pw="mdi-lightbulb";function jN(yr){return yr==="dark"||yr==="light"}function HN(yr){return localStorage.setItem($o,yr)}function BN(yr){var br,mr;document.documentElement.setAttribute(`data-${$o}`,yr);for(let Er of Wr("span.color-mode-text"))yr==="light"?Er.innerText=PN:yr==="dark"&&(Er.innerText=IN);for(let Er of Wr("i.color-mode-icon","span.color-mode-icon"))yr==="light"?(Er.classList.remove(Iw),Er.classList.add(Pw)):yr==="dark"&&(Er.classList.remove(Pw),Er.classList.add(Iw));for(let Er of Wr(".rack_elevation")){let wr=(mr=(br=Er.contentDocument)==null?void 0:br.querySelector("svg"))!=null?mr:null;wr!==null&&wr.setAttribute(`data-${$o}`,yr)}}function Ss(yr){for(let br of[HN,BN])br(yr)}function FN(){let yr=localStorage.getItem($o);yr==="light"?Ss("dark"):yr==="dark"?Ss("light"):console.warn("Unable to determine the current color mode")}function zN(){let yr=localStorage.getItem($o),br=document.documentElement.getAttribute(`data-${$o}`);if(mi(br)&&mi(yr))return Ss(yr);let mr="none";for(let Er of["dark","light"])if(window.matchMedia(`(prefers-color-scheme: ${Er})`).matches){mr=Er;break}if(mi(yr)&&!mi(br)&&jN(yr))return Ss(yr);switch(mr){case"dark":return Ss("dark");case"light":return Ss("light");case"none":return Ss("light");default:return Ss("light")}}function $N(){for(let yr of Wr("button.color-mode-toggle"))yr.addEventListener("click",FN)}function jw(){window.addEventListener("load",zN);for(let yr of[$N])yr()}function Hw(){let yr=document.querySelectorAll("body > div#django-messages > div.django-message.toast");for(let br of yr)br!==null&&new es(br).show()}var Fw=vn(Bw());function zw(){for(let yr of Wr("a.copy-content"))new Fw.default(yr)}var Mc=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],Ts={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:typeof window=="object"&&window.navigator.userAgent.indexOf("MSIE")===-1,ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:function(yr){return typeof console!="undefined"&&console.warn(yr)},getWeek:function(yr){var br=new Date(yr.getTime());br.setHours(0,0,0,0),br.setDate(br.getDate()+3-(br.getDay()+6)%7);var mr=new Date(br.getFullYear(),0,4);return 1+Math.round(((br.getTime()-mr.getTime())/864e5-3+(mr.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1};var kc={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(yr){var br=yr%100;if(br>3&&br<21)return"th";switch(br%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},Rc=kc;var Xi=function(yr,br){return br===void 0&&(br=2),("000"+yr).slice(br*-1)},an=function(yr){return yr===!0?1:0};function Zf(yr,br){var mr;return function(){var Er=this,wr=arguments;clearTimeout(mr),mr=setTimeout(function(){return yr.apply(Er,wr)},br)}}var Nc=function(yr){return yr instanceof Array?yr:[yr]};function Ji(yr,br,mr){if(mr===!0)return yr.classList.add(br);yr.classList.remove(br)}function gi(yr,br,mr){var Er=window.document.createElement(yr);return br=br||"",mr=mr||"",Er.className=br,mr!==void 0&&(Er.textContent=mr),Er}function Ya(yr){for(;yr.firstChild;)yr.removeChild(yr.firstChild)}function eh(yr,br){if(br(yr))return yr;if(yr.parentNode)return eh(yr.parentNode,br)}function Ka(yr,br){var mr=gi("div","numInputWrapper"),Er=gi("input","numInput "+yr),wr=gi("span","arrowUp"),_r=gi("span","arrowDown");if(navigator.userAgent.indexOf("MSIE 9.0")===-1?Er.type="number":(Er.type="text",Er.pattern="\\d*"),br!==void 0)for(var xr in br)Er.setAttribute(xr,br[xr]);return mr.appendChild(Er),mr.appendChild(wr),mr.appendChild(_r),mr}function ln(yr){try{if(typeof yr.composedPath=="function"){var br=yr.composedPath();return br[0]}return yr.target}catch(mr){return yr.target}}var th=function(){},Xa=function(yr,br,mr){return mr.months[br?"shorthand":"longhand"][yr]},$w={D:th,F:function(yr,br,mr){yr.setMonth(mr.months.longhand.indexOf(br))},G:function(yr,br){yr.setHours((yr.getHours()>=12?12:0)+parseFloat(br))},H:function(yr,br){yr.setHours(parseFloat(br))},J:function(yr,br){yr.setDate(parseFloat(br))},K:function(yr,br,mr){yr.setHours(yr.getHours()%12+12*an(new RegExp(mr.amPM[1],"i").test(br)))},M:function(yr,br,mr){yr.setMonth(mr.months.shorthand.indexOf(br))},S:function(yr,br){yr.setSeconds(parseFloat(br))},U:function(yr,br){return new Date(parseFloat(br)*1e3)},W:function(yr,br,mr){var Er=parseInt(br),wr=new Date(yr.getFullYear(),0,2+(Er-1)*7,0,0,0,0);return wr.setDate(wr.getDate()-wr.getDay()+mr.firstDayOfWeek),wr},Y:function(yr,br){yr.setFullYear(parseFloat(br))},Z:function(yr,br){return new Date(br)},d:function(yr,br){yr.setDate(parseFloat(br))},h:function(yr,br){yr.setHours((yr.getHours()>=12?12:0)+parseFloat(br))},i:function(yr,br){yr.setMinutes(parseFloat(br))},j:function(yr,br){yr.setDate(parseFloat(br))},l:th,m:function(yr,br){yr.setMonth(parseFloat(br)-1)},n:function(yr,br){yr.setMonth(parseFloat(br)-1)},s:function(yr,br){yr.setSeconds(parseFloat(br))},u:function(yr,br){return new Date(parseFloat(br))},w:th,y:function(yr,br){yr.setFullYear(2e3+parseFloat(br))}},os={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},Uo={Z:function(yr){return yr.toISOString()},D:function(yr,br,mr){return br.weekdays.shorthand[Uo.w(yr,br,mr)]},F:function(yr,br,mr){return Xa(Uo.n(yr,br,mr)-1,!1,br)},G:function(yr,br,mr){return Xi(Uo.h(yr,br,mr))},H:function(yr){return Xi(yr.getHours())},J:function(yr,br){return br.ordinal!==void 0?yr.getDate()+br.ordinal(yr.getDate()):yr.getDate()},K:function(yr,br){return br.amPM[an(yr.getHours()>11)]},M:function(yr,br){return Xa(yr.getMonth(),!0,br)},S:function(yr){return Xi(yr.getSeconds())},U:function(yr){return yr.getTime()/1e3},W:function(yr,br,mr){return mr.getWeek(yr)},Y:function(yr){return Xi(yr.getFullYear(),4)},d:function(yr){return Xi(yr.getDate())},h:function(yr){return yr.getHours()%12?yr.getHours()%12:12},i:function(yr){return Xi(yr.getMinutes())},j:function(yr){return yr.getDate()},l:function(yr,br){return br.weekdays.longhand[yr.getDay()]},m:function(yr){return Xi(yr.getMonth()+1)},n:function(yr){return yr.getMonth()+1},s:function(yr){return yr.getSeconds()},u:function(yr){return yr.getTime()},w:function(yr){return yr.getDay()},y:function(yr){return String(yr.getFullYear()).substring(2)}};var rh=function(yr){var br=yr.config,mr=br===void 0?Ts:br,Er=yr.l10n,wr=Er===void 0?kc:Er,_r=yr.isMobile,xr=_r===void 0?!1:_r;return function(Sr,Tr,Dr){var Or=Dr||wr;return mr.formatDate!==void 0&&!xr?mr.formatDate(Sr,Tr,Or):Tr.split("").map(function(Cr,Ar,Lr){return Uo[Cr]&&Lr[Ar-1]!=="\\"?Uo[Cr](Sr,Or,mr):Cr!=="\\"?Cr:""}).join("")}},qc=function(yr){var br=yr.config,mr=br===void 0?Ts:br,Er=yr.l10n,wr=Er===void 0?kc:Er;return function(_r,xr,Sr,Tr){if(!(_r!==0&&!_r)){var Dr=Tr||wr,Or,Cr=_r;if(_r instanceof Date)Or=new Date(_r.getTime());else if(typeof _r!="string"&&_r.toFixed!==void 0)Or=new Date(_r);else if(typeof _r=="string"){var Ar=xr||(mr||Ts).dateFormat,Lr=String(_r).trim();if(Lr==="today")Or=new Date,Sr=!0;else if(mr&&mr.parseDate)Or=mr.parseDate(_r,Ar);else if(/Z$/.test(Lr)||/GMT$/.test(Lr))Or=new Date(_r);else{for(var Rr=void 0,Nr=[],Ir=0,Pr=0,Br="";IrMath.min(br,mr)&&yr=0?new Date:new Date(mr.config.minDate.getTime()),qr=Pc(mr.config);kr.setHours(qr.hours,qr.minutes,qr.seconds,kr.getMilliseconds()),mr.selectedDates=[kr],mr.latestSelectedDateObj=kr}Mr!==void 0&&Mr.type!=="blur"&&A_(Mr);var Hr=mr._input.value;Cr(),Wn(),mr._input.value!==Hr&&mr._debouncedChange()}function Dr(Mr,kr){return Mr%12+12*an(kr===mr.l10n.amPM[1])}function Or(Mr){switch(Mr%24){case 0:case 12:return 12;default:return Mr%12}}function Cr(){if(!(mr.hourElement===void 0||mr.minuteElement===void 0)){var Mr=(parseInt(mr.hourElement.value.slice(-2),10)||0)%24,kr=(parseInt(mr.minuteElement.value,10)||0)%60,qr=mr.secondElement!==void 0?(parseInt(mr.secondElement.value,10)||0)%60:0;mr.amPM!==void 0&&(Mr=Dr(Mr,mr.amPM.textContent));var Hr=mr.config.minTime!==void 0||mr.config.minDate&&mr.minDateHasTime&&mr.latestSelectedDateObj&&cn(mr.latestSelectedDateObj,mr.config.minDate,!0)===0,Vr=mr.config.maxTime!==void 0||mr.config.maxDate&&mr.maxDateHasTime&&mr.latestSelectedDateObj&&cn(mr.latestSelectedDateObj,mr.config.maxDate,!0)===0;if(mr.config.maxTime!==void 0&&mr.config.minTime!==void 0&&mr.config.minTime>mr.config.maxTime){var Gr=Ic(mr.config.minTime.getHours(),mr.config.minTime.getMinutes(),mr.config.minTime.getSeconds()),ui=Ic(mr.config.maxTime.getHours(),mr.config.maxTime.getMinutes(),mr.config.maxTime.getSeconds()),ri=Ic(Mr,kr,qr);if(ri>ui&&ri=12)]),mr.secondElement!==void 0&&(mr.secondElement.value=Xi(qr)))}function Rr(Mr){var kr=ln(Mr),qr=parseInt(kr.value)+(Mr.delta||0);(qr/1e3>1||Mr.key==="Enter"&&!/[^\d]/.test(qr.toString()))&&xi(qr)}function Nr(Mr,kr,qr,Hr){if(kr instanceof Array)return kr.forEach(function(Vr){return Nr(Mr,Vr,qr,Hr)});if(Mr instanceof Array)return Mr.forEach(function(Vr){return Nr(Vr,kr,qr,Hr)});Mr.addEventListener(kr,qr,Hr),mr._handlers.push({remove:function(){return Mr.removeEventListener(kr,qr,Hr)}})}function Ir(){Ti("onChange")}function Pr(){if(mr.config.wrap&&["open","close","toggle","clear"].forEach(function(qr){Array.prototype.forEach.call(mr.element.querySelectorAll("[data-"+qr+"]"),function(Hr){return Nr(Hr,"click",mr[qr])})}),mr.isMobile){S_();return}var Mr=Zf(el,50);if(mr._debouncedChange=Zf(Ir,UN),mr.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&Nr(mr.daysContainer,"mouseover",function(qr){mr.config.mode==="range"&&uo(ln(qr))}),Nr(mr._input,"keydown",co),mr.calendarContainer!==void 0&&Nr(mr.calendarContainer,"keydown",co),!mr.config.inline&&!mr.config.static&&Nr(window,"resize",Mr),window.ontouchstart!==void 0?Nr(window.document,"touchstart",bi):Nr(window.document,"mousedown",bi),Nr(window.document,"focus",bi,{capture:!0}),mr.config.clickOpens===!0&&(Nr(mr._input,"focus",mr.open),Nr(mr._input,"click",mr.open)),mr.daysContainer!==void 0&&(Nr(mr.monthNav,"click",O_),Nr(mr.monthNav,["keyup","increment"],Rr),Nr(mr.daysContainer,"click",mo)),mr.timeContainer!==void 0&&mr.minuteElement!==void 0&&mr.hourElement!==void 0){var kr=function(qr){return ln(qr).select()};Nr(mr.timeContainer,["increment"],Tr),Nr(mr.timeContainer,"blur",Tr,{capture:!0}),Nr(mr.timeContainer,"click",zr),Nr([mr.hourElement,mr.minuteElement],["focus","click"],kr),mr.secondElement!==void 0&&Nr(mr.secondElement,"focus",function(){return mr.secondElement&&mr.secondElement.select()}),mr.amPM!==void 0&&Nr(mr.amPM,"click",function(qr){Tr(qr)})}mr.config.allowInput&&Nr(mr._input,"blur",ru)}function Br(Mr,kr){var qr=Mr!==void 0?mr.parseDate(Mr):mr.latestSelectedDateObj||(mr.config.minDate&&mr.config.minDate>mr.now?mr.config.minDate:mr.config.maxDate&&mr.config.maxDate1),mr.calendarContainer.appendChild(Mr);var Vr=mr.config.appendTo!==void 0&&mr.config.appendTo.nodeType!==void 0;if((mr.config.inline||mr.config.static)&&(mr.calendarContainer.classList.add(mr.config.inline?"inline":"static"),mr.config.inline&&(!Vr&&mr.element.parentNode?mr.element.parentNode.insertBefore(mr.calendarContainer,mr._input.nextSibling):mr.config.appendTo!==void 0&&mr.config.appendTo.appendChild(mr.calendarContainer)),mr.config.static)){var Gr=gi("div","flatpickr-wrapper");mr.element.parentNode&&mr.element.parentNode.insertBefore(Gr,mr.element),Gr.appendChild(mr.element),mr.altInput&&Gr.appendChild(mr.altInput),Gr.appendChild(mr.calendarContainer)}!mr.config.static&&!mr.config.inline&&(mr.config.appendTo!==void 0?mr.config.appendTo:window.document.body).appendChild(mr.calendarContainer)}function Fr(Mr,kr,qr,Hr){var Vr=Si(kr,!0),Gr=gi("span",Mr,kr.getDate().toString());return Gr.dateObj=kr,Gr.$i=Hr,Gr.setAttribute("aria-label",mr.formatDate(kr,mr.config.ariaDateFormat)),Mr.indexOf("hidden")===-1&&cn(kr,mr.now)===0&&(mr.todayDateElem=Gr,Gr.classList.add("today"),Gr.setAttribute("aria-current","date")),Vr?(Gr.tabIndex=-1,su(kr)&&(Gr.classList.add("selected"),mr.selectedDateElem=Gr,mr.config.mode==="range"&&(Ji(Gr,"startRange",mr.selectedDates[0]&&cn(kr,mr.selectedDates[0],!0)===0),Ji(Gr,"endRange",mr.selectedDates[1]&&cn(kr,mr.selectedDates[1],!0)===0),Mr==="nextMonthDay"&&Gr.classList.add("inRange")))):Gr.classList.add("flatpickr-disabled"),mr.config.mode==="range"&&D_(kr)&&!su(kr)&&Gr.classList.add("inRange"),mr.weekNumbers&&mr.config.showMonths===1&&Mr!=="prevMonthDay"&&Hr%7==6&&mr.weekNumbers.insertAdjacentHTML("beforeend",""+mr.config.getWeek(kr)+""),Ti("onDayCreate",Gr),Gr}function Xr(Mr){Mr.focus(),mr.config.mode==="range"&&uo(Mr)}function Jr(Mr){for(var kr=Mr>0?0:mr.config.showMonths-1,qr=Mr>0?mr.config.showMonths:-1,Hr=kr;Hr!=qr;Hr+=Mr)for(var Vr=mr.daysContainer.children[Hr],Gr=Mr>0?0:Vr.children.length-1,ui=Mr>0?Vr.children.length:-1,ri=Gr;ri!=ui;ri+=Mr){var fi=Vr.children[ri];if(fi.className.indexOf("hidden")===-1&&Si(fi.dateObj))return fi}}function oi(Mr,kr){for(var qr=Mr.className.indexOf("Month")===-1?Mr.dateObj.getMonth():mr.currentMonth,Hr=kr>0?mr.config.showMonths:-1,Vr=kr>0?1:-1,Gr=qr-mr.currentMonth;Gr!=Hr;Gr+=Vr)for(var ui=mr.daysContainer.children[Gr],ri=qr-mr.currentMonth===Gr?Mr.$i+kr:kr<0?ui.children.length-1:0,fi=ui.children.length,ti=ri;ti>=0&&ti0?fi:-1);ti+=Vr){var li=ui.children[ti];if(li.className.indexOf("hidden")===-1&&Si(li.dateObj)&&Math.abs(Mr.$i-ti)>=Math.abs(kr))return Xr(li)}mr.changeMonth(Vr),hi(Jr(Vr),0)}function hi(Mr,kr){var qr=_r(),Hr=Ln(qr||document.body),Vr=Mr!==void 0?Mr:Hr?qr:mr.selectedDateElem!==void 0&&Ln(mr.selectedDateElem)?mr.selectedDateElem:mr.todayDateElem!==void 0&&Ln(mr.todayDateElem)?mr.todayDateElem:Jr(kr>0?1:-1);Vr===void 0?mr._input.focus():Hr?oi(Vr,kr):Xr(Vr)}function pi(Mr,kr){for(var qr=(new Date(Mr,kr,1).getDay()-mr.l10n.firstDayOfWeek+7)%7,Hr=mr.utils.getDaysInMonth((kr-1+12)%12,Mr),Vr=mr.utils.getDaysInMonth(kr,Mr),Gr=window.document.createDocumentFragment(),ui=mr.config.showMonths>1,ri=ui?"prevMonthDay hidden":"prevMonthDay",fi=ui?"nextMonthDay hidden":"nextMonthDay",ti=Hr+1-qr,li=0;ti<=Hr;ti++,li++)Gr.appendChild(Fr("flatpickr-day "+ri,new Date(Mr,kr-1,ti),ti,li));for(ti=1;ti<=Vr;ti++,li++)Gr.appendChild(Fr("flatpickr-day",new Date(Mr,kr,ti),ti,li));for(var wi=Vr+1;wi<=42-qr&&(mr.config.showMonths===1||li%7!=0);wi++,li++)Gr.appendChild(Fr("flatpickr-day "+fi,new Date(Mr,kr+1,wi%Vr),wi,li));var qn=gi("div","dayContainer");return qn.appendChild(Gr),qn}function _i(){if(mr.daysContainer!==void 0){Ya(mr.daysContainer),mr.weekNumbers&&Ya(mr.weekNumbers);for(var Mr=document.createDocumentFragment(),kr=0;kr1||mr.config.monthSelectorType!=="dropdown")){var Mr=function(Hr){return mr.config.minDate!==void 0&&mr.currentYear===mr.config.minDate.getFullYear()&&Hrmr.config.maxDate.getMonth())};mr.monthsDropdownContainer.tabIndex=-1,mr.monthsDropdownContainer.innerHTML="";for(var kr=0;kr<12;kr++)if(!!Mr(kr)){var qr=gi("option","flatpickr-monthDropdown-month");qr.value=new Date(mr.currentYear,kr).getMonth().toString(),qr.textContent=Xa(kr,mr.config.shorthandCurrentMonth,mr.l10n),qr.tabIndex=-1,mr.currentMonth===kr&&(qr.selected=!0),mr.monthsDropdownContainer.appendChild(qr)}}}function zi(){var Mr=gi("div","flatpickr-month"),kr=window.document.createDocumentFragment(),qr;mr.config.showMonths>1||mr.config.monthSelectorType==="static"?qr=gi("span","cur-month"):(mr.monthsDropdownContainer=gi("select","flatpickr-monthDropdown-months"),mr.monthsDropdownContainer.setAttribute("aria-label",mr.l10n.monthAriaLabel),Nr(mr.monthsDropdownContainer,"change",function(ui){var ri=ln(ui),fi=parseInt(ri.value,10);mr.changeMonth(fi-mr.currentMonth),Ti("onMonthChange")}),Ei(),qr=mr.monthsDropdownContainer);var Hr=Ka("cur-year",{tabindex:"-1"}),Vr=Hr.getElementsByTagName("input")[0];Vr.setAttribute("aria-label",mr.l10n.yearAriaLabel),mr.config.minDate&&Vr.setAttribute("min",mr.config.minDate.getFullYear().toString()),mr.config.maxDate&&(Vr.setAttribute("max",mr.config.maxDate.getFullYear().toString()),Vr.disabled=!!mr.config.minDate&&mr.config.minDate.getFullYear()===mr.config.maxDate.getFullYear());var Gr=gi("div","flatpickr-current-month");return Gr.appendChild(qr),Gr.appendChild(Hr),kr.appendChild(Gr),Mr.appendChild(kr),{container:Mr,yearElement:Vr,monthElement:qr}}function Gi(){Ya(mr.monthNav),mr.monthNav.appendChild(mr.prevMonthNav),mr.config.showMonths&&(mr.yearElements=[],mr.monthElements=[]);for(var Mr=mr.config.showMonths;Mr--;){var kr=zi();mr.yearElements.push(kr.yearElement),mr.monthElements.push(kr.monthElement),mr.monthNav.appendChild(kr.container)}mr.monthNav.appendChild(mr.nextMonthNav)}function vi(){return mr.monthNav=gi("div","flatpickr-months"),mr.yearElements=[],mr.monthElements=[],mr.prevMonthNav=gi("span","flatpickr-prev-month"),mr.prevMonthNav.innerHTML=mr.config.prevArrow,mr.nextMonthNav=gi("span","flatpickr-next-month"),mr.nextMonthNav.innerHTML=mr.config.nextArrow,Gi(),Object.defineProperty(mr,"_hidePrevMonthArrow",{get:function(){return mr.__hidePrevMonthArrow},set:function(Mr){mr.__hidePrevMonthArrow!==Mr&&(Ji(mr.prevMonthNav,"flatpickr-disabled",Mr),mr.__hidePrevMonthArrow=Mr)}}),Object.defineProperty(mr,"_hideNextMonthArrow",{get:function(){return mr.__hideNextMonthArrow},set:function(Mr){mr.__hideNextMonthArrow!==Mr&&(Ji(mr.nextMonthNav,"flatpickr-disabled",Mr),mr.__hideNextMonthArrow=Mr)}}),mr.currentYearElement=mr.yearElements[0],ol(),mr.monthNav}function ki(){mr.calendarContainer.classList.add("hasTime"),mr.config.noCalendar&&mr.calendarContainer.classList.add("noCalendar");var Mr=Pc(mr.config);mr.timeContainer=gi("div","flatpickr-time"),mr.timeContainer.tabIndex=-1;var kr=gi("span","flatpickr-time-separator",":"),qr=Ka("flatpickr-hour",{"aria-label":mr.l10n.hourAriaLabel});mr.hourElement=qr.getElementsByTagName("input")[0];var Hr=Ka("flatpickr-minute",{"aria-label":mr.l10n.minuteAriaLabel});if(mr.minuteElement=Hr.getElementsByTagName("input")[0],mr.hourElement.tabIndex=mr.minuteElement.tabIndex=-1,mr.hourElement.value=Xi(mr.latestSelectedDateObj?mr.latestSelectedDateObj.getHours():mr.config.time_24hr?Mr.hours:Or(Mr.hours)),mr.minuteElement.value=Xi(mr.latestSelectedDateObj?mr.latestSelectedDateObj.getMinutes():Mr.minutes),mr.hourElement.setAttribute("step",mr.config.hourIncrement.toString()),mr.minuteElement.setAttribute("step",mr.config.minuteIncrement.toString()),mr.hourElement.setAttribute("min",mr.config.time_24hr?"0":"1"),mr.hourElement.setAttribute("max",mr.config.time_24hr?"23":"12"),mr.hourElement.setAttribute("maxlength","2"),mr.minuteElement.setAttribute("min","0"),mr.minuteElement.setAttribute("max","59"),mr.minuteElement.setAttribute("maxlength","2"),mr.timeContainer.appendChild(qr),mr.timeContainer.appendChild(kr),mr.timeContainer.appendChild(Hr),mr.config.time_24hr&&mr.timeContainer.classList.add("time24hr"),mr.config.enableSeconds){mr.timeContainer.classList.add("hasSeconds");var Vr=Ka("flatpickr-second");mr.secondElement=Vr.getElementsByTagName("input")[0],mr.secondElement.value=Xi(mr.latestSelectedDateObj?mr.latestSelectedDateObj.getSeconds():Mr.seconds),mr.secondElement.setAttribute("step",mr.minuteElement.getAttribute("step")),mr.secondElement.setAttribute("min","0"),mr.secondElement.setAttribute("max","59"),mr.secondElement.setAttribute("maxlength","2"),mr.timeContainer.appendChild(gi("span","flatpickr-time-separator",":")),mr.timeContainer.appendChild(Vr)}return mr.config.time_24hr||(mr.amPM=gi("span","flatpickr-am-pm",mr.l10n.amPM[an((mr.latestSelectedDateObj?mr.hourElement.value:mr.config.defaultHour)>11)]),mr.amPM.title=mr.l10n.toggleTitle,mr.amPM.tabIndex=-1,mr.timeContainer.appendChild(mr.amPM)),mr.timeContainer}function Cn(){mr.weekdayContainer?Ya(mr.weekdayContainer):mr.weekdayContainer=gi("div","flatpickr-weekdays");for(var Mr=mr.config.showMonths;Mr--;){var kr=gi("div","flatpickr-weekdaycontainer");mr.weekdayContainer.appendChild(kr)}return Yi(),mr.weekdayContainer}function Yi(){if(!!mr.weekdayContainer){var Mr=mr.l10n.firstDayOfWeek,kr=Gw(mr.l10n.weekdays.shorthand);Mr>0&&Mr{window.location.assign(window.location.origin+window.location.pathname)})}initRefreshButton(){if(this.allowRefresh){let br=Ho("button",{type:"button"},["btn","btn-sm","btn-ghost-dark"],[Ho("i",null,["mdi","mdi-reload"])]);br.addEventListener("click",()=>this.loadData()),br.type="button",this.slim.slim.search.container.appendChild(br)}}};function hw(){for(let yr of Wr(".netbox-api-select:not([data-ssid])"))new Kf(yr)}function pw(yr){return typeof yr.value=="string"&&yr.value!==""}function mw(yr,br){if(yr.slim.singleSelected!==null)if(pw(br)){let mr=`#${br.value}`,Er=Wa(mr);yr.slim.singleSelected.container.style.backgroundColor=mr,yr.slim.singleSelected.container.style.color=Er}else yr.slim.singleSelected.container.removeAttribute("style")}function gw(){for(let yr of Wr("select.netbox-color-select:not([data-ssid])")){for(let mr of yr.options)if(pw(mr)){let Er=`#${mr.value}`,wr=Wa(Er);mr.style.backgroundColor=Er,mr.style.color=wr}let br=new zo({select:yr,allowDeselect:!0,deselectLabel:''});for(let mr of br.data.data)if("selected"in mr&&mr.selected){mw(br,mr);break}for(let mr of yr.classList)br.slim.container.classList.remove(mr);br.onChange=mr=>mw(br,mr)}}function vw(){for(let yr of Wr(".netbox-static-select:not([data-ssid])"))if(yr!==null){let br=document.querySelector(`label[for="${yr.id}"]`),mr;br!==null&&(mr=`Select ${br.innerText.trim()}`);let Er=new zo({select:yr,allowDeselect:!0,deselectLabel:'',placeholder:mr});for(let wr of yr.classList)Er.slim.container.classList.remove(wr)}}function Cc(){for(let yr of[hw,gw,vw])yr()}function SN(yr){let br=yr.getAttribute("data-url"),mr=yr.classList.contains("connected"),Er=mr?"planned":"connected";mi(br)&&jo(br,{status:Er}).then(wr=>{var _r;if(ns(wr)){Un("danger","Error",wr.error).show();return}else{let xr=(_r=yr.parentElement)==null?void 0:_r.parentElement,Sr=yr.querySelector("i.mdi, span.mdi");mr?(xr.classList.remove("success"),xr.classList.add("info"),yr.classList.remove("connected","btn-warning"),yr.classList.add("btn-info"),yr.title="Mark Installed",Sr.classList.remove("mdi-lan-disconnect"),Sr.classList.add("mdi-lan-connect")):(xr.classList.remove("info"),xr.classList.add("success"),yr.classList.remove("btn-success"),yr.classList.add("connected","btn-warning"),yr.title="Mark Installed",Sr.classList.remove("mdi-lan-connect"),Sr.classList.add("mdi-lan-disconnect"))}})}function bw(){for(let yr of Wr("button.cable-toggle"))yr.addEventListener("click",()=>SN(yr))}var yw=class{set(br,mr,Er){return br[mr]=Er,!0}get(br,mr){return br[mr]}has(br,mr){return mr in br}},Lc=class{constructor(br,mr){di(this,"handlers");di(this,"proxy");di(this,"options");di(this,"key","");if(this.options=mr,typeof this.options.key=="string"?this.key=this.options.key:this.key=this.generateStateKey(br),this.options.persist){let Er=this.retrieve();Er!==null&&(br=ci(ci({},br),Er))}this.handlers=new yw,this.proxy=new Proxy(br,this.handlers),this.options.persist&&this.save()}generateStateKey(br){return`netbox-${window.btoa(Object.keys(br).join("---"))}`}get(br){return this.handlers.get(this.proxy,br)}set(br,mr){this.handlers.set(this.proxy,br,mr),this.options.persist&&this.save()}all(){return this.proxy}keys(){return Object.keys(this.proxy)}values(){return Object.values(this.proxy)}save(){let br=JSON.stringify(this.proxy);localStorage.setItem(this.key,br)}retrieve(){let br=localStorage.getItem(this.key);return br!==null?JSON.parse(br):null}};function xs(yr,br={}){return new Lc(yr,br)}var Xf=xs({hidden:!1},{persist:!0,key:"netbox-object-depth"});var Jf=xs({view:"images-and-labels"},{persist:!0});var Ew=xs({element:null},{persist:!1});var ww=xs({hidden:!0},{persist:!0,key:"netbox-secret"});function _w(yr,br){br.setAttribute("data-depth-indicators",yr?"hidden":"shown"),br.innerText=yr?"Show Depth Indicators":"Hide Depth Indicators"}function xw(){for(let yr of Wr(".record-depth"))yr.style.display=""}function Sw(){for(let yr of Wr(".record-depth"))yr.style.display="none"}function TN(yr,br){let mr=yr.get("hidden");yr.set("hidden",!mr);let Er=yr.get("hidden");Er?Sw():xw(),_w(Er,br)}function Tw(){let yr=Xf.get("hidden");for(let br of Wr("button.toggle-depth"))_w(yr,br),br.addEventListener("click",mr=>{TN(Xf,mr.currentTarget)},!1);yr?Sw():yr||xw()}function ON(yr){let br=Array.from(yr.options);for(let mr=1;mr=0;mr--){let Er=br[mr];if(Er.selected){let wr=yr.options[mr+1];Er=yr.removeChild(Er),wr=yr.replaceChild(Er,wr),yr.insertBefore(wr,Er)}}}function Ow(){for(let yr of Wr("#move-option-up")){let br=yr.getAttribute("data-target");if(br!==null)for(let mr of Wr(`#${br}`))yr.addEventListener("click",()=>ON(mr))}for(let yr of Wr("#move-option-down")){let br=yr.getAttribute("data-target");if(br!==null)for(let mr of Wr(`#${br}`))yr.addEventListener("click",()=>DN(mr))}}function Dw(yr,br){return yr.replace(/[^\-.\w\s]/g,"").replace(/^[\s.]+|[\s.]+$/g,"").replace(/[-.\s]+/g,"-").toLowerCase().substring(0,br)}function Aw(){let yr=document.getElementById("id_slug"),br=document.getElementById("reslug");if(yr===null||br===null)return;let mr=yr.getAttribute("slug-source"),Er=document.getElementById(`id_${mr}`);if(Er===null){console.error("Unable to find field for slug field.");return}let wr=yr.getAttribute("maxlength"),_r=50;wr&&(_r=Number(wr)),Er.addEventListener("blur",()=>{yr.value||(yr.value=Dw(Er.value,_r))}),br.addEventListener("click",()=>{yr.value=Dw(Er.value,_r)})}function AN(yr){if(!yr.currentTarget.checked)for(let mr of Wr('input[type="checkbox"].toggle',"input#select-all"))mr.checked=!1}function CN(yr){let br=yr.currentTarget,mr=ss(br,"table"),Er=document.getElementById("select-all-box"),wr=document.getElementById("select-all");if(mr!==null){for(let _r of mr.querySelectorAll('tr:not(.d-none) input[type="checkbox"][name="pk"]'))br.checked?_r.checked=!0:_r.checked=!1;Er!==null&&(br.checked?Er.classList.remove("d-none"):(Er.classList.add("d-none"),wr!==null&&(wr.checked=!1)))}}function Cw(){for(let yr of Wr('table tr th > input[type="checkbox"].toggle'))yr.addEventListener("change",CN);for(let yr of Wr('input[type="checkbox"][name="pk"]'))yr.addEventListener("change",AN)}function Lw(){var yr;(yr=window.getSelection())==null||yr.removeAllRanges()}function Mw(yr,br){br.set("element",yr)}function LN(yr,br,mr){let Er=!1;for(let wr of mr){let _r=wr;if(Er===!0&&(_r.checked=yr.checked),wr===br){if(Er===!0){Er=!1;return}Er=!0,_r.checked=yr.checked}if(wr===yr){if(Er===!0){Er=!1;return}Er=!0}}}function MN(yr,br){let mr=yr.target,Er=br.get("element");if(Mw(mr,br),!yr.shiftKey)return;if(Lw(),Er===null)return Mw(mr,br);let wr=Wr('input[type="checkbox"][name="pk"]');LN(mr,Er,wr)}function kw(){let yr=Wr('input[type="checkbox"][name="pk"]');for(let br of yr)br.addEventListener("click",mr=>{Lw(),mr.stopPropagation(),MN(mr,Ew)})}function kN(yr){let br=yr.querySelector("button.preview-button"),mr=yr.querySelector("textarea"),Er=yr.querySelector("div.preview");if(!mi(mr.style.height)){let{height:wr}=mr.getBoundingClientRect();mr.style.height=`${wr}px`}br.addEventListener("htmx:configRequest",wr=>{wr.detail.parameters={text:mr.value||""},wr.detail.headers["X-CSRFToken"]=window.CSRF_TOKEN,Er.style.minHeight=mr.style.height,Er.innerHTML=""})}function Rw(){for(let yr of document.querySelectorAll(".markdown-widget"))kN(yr)}function RN(yr,br){br.setAttribute("data-secret-visibility",yr?"hidden":"shown"),br.innerText=yr?"Show Secret":"Hide Secret"}function NN(){let yr=$a("secret");if(mi(yr)){let br=yr.getAttribute("data-secret");mi(br)&&(yr.innerText=br)}}function Nw(){let yr=$a("secret");if(mi(yr)){let br=yr.getAttribute("data-secret");mi(br)&&(yr.innerText="\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022")}}function qN(yr,br){yr.set("hidden",!yr.get("hidden"));let mr=yr.get("hidden");mr?Nw():NN(),RN(mr,br)}function qw(){Nw();for(let yr of Wr("button.toggle-secret"))yr.addEventListener("click",br=>{qN(ww,br.currentTarget)},!1)}function Mc(){for(let yr of[Tw,bw,Aw,Cw,kw,Ow,Rw,qw])yr()}var $o="netbox-color-mode",IN="Light Mode",PN="Dark Mode",Iw="mdi-lightbulb-on",Pw="mdi-lightbulb";function jN(yr){return yr==="dark"||yr==="light"}function HN(yr){return localStorage.setItem($o,yr)}function BN(yr){var br,mr;document.documentElement.setAttribute(`data-${$o}`,yr);for(let Er of Wr("span.color-mode-text"))yr==="light"?Er.innerText=PN:yr==="dark"&&(Er.innerText=IN);for(let Er of Wr("i.color-mode-icon","span.color-mode-icon"))yr==="light"?(Er.classList.remove(Iw),Er.classList.add(Pw)):yr==="dark"&&(Er.classList.remove(Pw),Er.classList.add(Iw));for(let Er of Wr(".rack_elevation")){let wr=(mr=(br=Er.contentDocument)==null?void 0:br.querySelector("svg"))!=null?mr:null;wr!==null&&wr.setAttribute(`data-${$o}`,yr)}}function Ss(yr){for(let br of[HN,BN])br(yr)}function FN(){let yr=localStorage.getItem($o);yr==="light"?Ss("dark"):yr==="dark"?Ss("light"):console.warn("Unable to determine the current color mode")}function zN(){let yr=localStorage.getItem($o),br=document.documentElement.getAttribute(`data-${$o}`);if(mi(br)&&mi(yr))return Ss(yr);let mr="none";for(let Er of["dark","light"])if(window.matchMedia(`(prefers-color-scheme: ${Er})`).matches){mr=Er;break}if(mi(yr)&&!mi(br)&&jN(yr))return Ss(yr);switch(mr){case"dark":return Ss("dark");case"light":return Ss("light");case"none":return Ss("light");default:return Ss("light")}}function $N(){for(let yr of Wr("button.color-mode-toggle"))yr.addEventListener("click",FN)}function jw(){window.addEventListener("load",zN);for(let yr of[$N])yr()}function Hw(){let yr=document.querySelectorAll("body > div#django-messages > div.django-message.toast");for(let br of yr)br!==null&&new es(br).show()}var Fw=vn(Bw());function zw(){for(let yr of Wr(".copy-content"))new Fw.default(yr)}var kc=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],Ts={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:typeof window=="object"&&window.navigator.userAgent.indexOf("MSIE")===-1,ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:function(yr){return typeof console!="undefined"&&console.warn(yr)},getWeek:function(yr){var br=new Date(yr.getTime());br.setHours(0,0,0,0),br.setDate(br.getDate()+3-(br.getDay()+6)%7);var mr=new Date(br.getFullYear(),0,4);return 1+Math.round(((br.getTime()-mr.getTime())/864e5-3+(mr.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1};var Rc={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(yr){var br=yr%100;if(br>3&&br<21)return"th";switch(br%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},Nc=Rc;var Xi=function(yr,br){return br===void 0&&(br=2),("000"+yr).slice(br*-1)},an=function(yr){return yr===!0?1:0};function Zf(yr,br){var mr;return function(){var Er=this,wr=arguments;clearTimeout(mr),mr=setTimeout(function(){return yr.apply(Er,wr)},br)}}var qc=function(yr){return yr instanceof Array?yr:[yr]};function Ji(yr,br,mr){if(mr===!0)return yr.classList.add(br);yr.classList.remove(br)}function gi(yr,br,mr){var Er=window.document.createElement(yr);return br=br||"",mr=mr||"",Er.className=br,mr!==void 0&&(Er.textContent=mr),Er}function Ka(yr){for(;yr.firstChild;)yr.removeChild(yr.firstChild)}function eh(yr,br){if(br(yr))return yr;if(yr.parentNode)return eh(yr.parentNode,br)}function Xa(yr,br){var mr=gi("div","numInputWrapper"),Er=gi("input","numInput "+yr),wr=gi("span","arrowUp"),_r=gi("span","arrowDown");if(navigator.userAgent.indexOf("MSIE 9.0")===-1?Er.type="number":(Er.type="text",Er.pattern="\\d*"),br!==void 0)for(var xr in br)Er.setAttribute(xr,br[xr]);return mr.appendChild(Er),mr.appendChild(wr),mr.appendChild(_r),mr}function ln(yr){try{if(typeof yr.composedPath=="function"){var br=yr.composedPath();return br[0]}return yr.target}catch(mr){return yr.target}}var th=function(){},Ja=function(yr,br,mr){return mr.months[br?"shorthand":"longhand"][yr]},$w={D:th,F:function(yr,br,mr){yr.setMonth(mr.months.longhand.indexOf(br))},G:function(yr,br){yr.setHours((yr.getHours()>=12?12:0)+parseFloat(br))},H:function(yr,br){yr.setHours(parseFloat(br))},J:function(yr,br){yr.setDate(parseFloat(br))},K:function(yr,br,mr){yr.setHours(yr.getHours()%12+12*an(new RegExp(mr.amPM[1],"i").test(br)))},M:function(yr,br,mr){yr.setMonth(mr.months.shorthand.indexOf(br))},S:function(yr,br){yr.setSeconds(parseFloat(br))},U:function(yr,br){return new Date(parseFloat(br)*1e3)},W:function(yr,br,mr){var Er=parseInt(br),wr=new Date(yr.getFullYear(),0,2+(Er-1)*7,0,0,0,0);return wr.setDate(wr.getDate()-wr.getDay()+mr.firstDayOfWeek),wr},Y:function(yr,br){yr.setFullYear(parseFloat(br))},Z:function(yr,br){return new Date(br)},d:function(yr,br){yr.setDate(parseFloat(br))},h:function(yr,br){yr.setHours((yr.getHours()>=12?12:0)+parseFloat(br))},i:function(yr,br){yr.setMinutes(parseFloat(br))},j:function(yr,br){yr.setDate(parseFloat(br))},l:th,m:function(yr,br){yr.setMonth(parseFloat(br)-1)},n:function(yr,br){yr.setMonth(parseFloat(br)-1)},s:function(yr,br){yr.setSeconds(parseFloat(br))},u:function(yr,br){return new Date(parseFloat(br))},w:th,y:function(yr,br){yr.setFullYear(2e3+parseFloat(br))}},as={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},Uo={Z:function(yr){return yr.toISOString()},D:function(yr,br,mr){return br.weekdays.shorthand[Uo.w(yr,br,mr)]},F:function(yr,br,mr){return Ja(Uo.n(yr,br,mr)-1,!1,br)},G:function(yr,br,mr){return Xi(Uo.h(yr,br,mr))},H:function(yr){return Xi(yr.getHours())},J:function(yr,br){return br.ordinal!==void 0?yr.getDate()+br.ordinal(yr.getDate()):yr.getDate()},K:function(yr,br){return br.amPM[an(yr.getHours()>11)]},M:function(yr,br){return Ja(yr.getMonth(),!0,br)},S:function(yr){return Xi(yr.getSeconds())},U:function(yr){return yr.getTime()/1e3},W:function(yr,br,mr){return mr.getWeek(yr)},Y:function(yr){return Xi(yr.getFullYear(),4)},d:function(yr){return Xi(yr.getDate())},h:function(yr){return yr.getHours()%12?yr.getHours()%12:12},i:function(yr){return Xi(yr.getMinutes())},j:function(yr){return yr.getDate()},l:function(yr,br){return br.weekdays.longhand[yr.getDay()]},m:function(yr){return Xi(yr.getMonth()+1)},n:function(yr){return yr.getMonth()+1},s:function(yr){return yr.getSeconds()},u:function(yr){return yr.getTime()},w:function(yr){return yr.getDay()},y:function(yr){return String(yr.getFullYear()).substring(2)}};var rh=function(yr){var br=yr.config,mr=br===void 0?Ts:br,Er=yr.l10n,wr=Er===void 0?Rc:Er,_r=yr.isMobile,xr=_r===void 0?!1:_r;return function(Sr,Tr,Or){var Dr=Or||wr;return mr.formatDate!==void 0&&!xr?mr.formatDate(Sr,Tr,Dr):Tr.split("").map(function(Cr,Ar,Lr){return Uo[Cr]&&Lr[Ar-1]!=="\\"?Uo[Cr](Sr,Dr,mr):Cr!=="\\"?Cr:""}).join("")}},Ic=function(yr){var br=yr.config,mr=br===void 0?Ts:br,Er=yr.l10n,wr=Er===void 0?Rc:Er;return function(_r,xr,Sr,Tr){if(!(_r!==0&&!_r)){var Or=Tr||wr,Dr,Cr=_r;if(_r instanceof Date)Dr=new Date(_r.getTime());else if(typeof _r!="string"&&_r.toFixed!==void 0)Dr=new Date(_r);else if(typeof _r=="string"){var Ar=xr||(mr||Ts).dateFormat,Lr=String(_r).trim();if(Lr==="today")Dr=new Date,Sr=!0;else if(mr&&mr.parseDate)Dr=mr.parseDate(_r,Ar);else if(/Z$/.test(Lr)||/GMT$/.test(Lr))Dr=new Date(_r);else{for(var Rr=void 0,Nr=[],Ir=0,Pr=0,Br="";IrMath.min(br,mr)&&yr=0?new Date:new Date(mr.config.minDate.getTime()),qr=jc(mr.config);kr.setHours(qr.hours,qr.minutes,qr.seconds,kr.getMilliseconds()),mr.selectedDates=[kr],mr.latestSelectedDateObj=kr}Mr!==void 0&&Mr.type!=="blur"&&A_(Mr);var Hr=mr._input.value;Cr(),Wn(),mr._input.value!==Hr&&mr._debouncedChange()}function Or(Mr,kr){return Mr%12+12*an(kr===mr.l10n.amPM[1])}function Dr(Mr){switch(Mr%24){case 0:case 12:return 12;default:return Mr%12}}function Cr(){if(!(mr.hourElement===void 0||mr.minuteElement===void 0)){var Mr=(parseInt(mr.hourElement.value.slice(-2),10)||0)%24,kr=(parseInt(mr.minuteElement.value,10)||0)%60,qr=mr.secondElement!==void 0?(parseInt(mr.secondElement.value,10)||0)%60:0;mr.amPM!==void 0&&(Mr=Or(Mr,mr.amPM.textContent));var Hr=mr.config.minTime!==void 0||mr.config.minDate&&mr.minDateHasTime&&mr.latestSelectedDateObj&&cn(mr.latestSelectedDateObj,mr.config.minDate,!0)===0,Vr=mr.config.maxTime!==void 0||mr.config.maxDate&&mr.maxDateHasTime&&mr.latestSelectedDateObj&&cn(mr.latestSelectedDateObj,mr.config.maxDate,!0)===0;if(mr.config.maxTime!==void 0&&mr.config.minTime!==void 0&&mr.config.minTime>mr.config.maxTime){var Gr=Pc(mr.config.minTime.getHours(),mr.config.minTime.getMinutes(),mr.config.minTime.getSeconds()),ui=Pc(mr.config.maxTime.getHours(),mr.config.maxTime.getMinutes(),mr.config.maxTime.getSeconds()),ri=Pc(Mr,kr,qr);if(ri>ui&&ri=12)]),mr.secondElement!==void 0&&(mr.secondElement.value=Xi(qr)))}function Rr(Mr){var kr=ln(Mr),qr=parseInt(kr.value)+(Mr.delta||0);(qr/1e3>1||Mr.key==="Enter"&&!/[^\d]/.test(qr.toString()))&&xi(qr)}function Nr(Mr,kr,qr,Hr){if(kr instanceof Array)return kr.forEach(function(Vr){return Nr(Mr,Vr,qr,Hr)});if(Mr instanceof Array)return Mr.forEach(function(Vr){return Nr(Vr,kr,qr,Hr)});Mr.addEventListener(kr,qr,Hr),mr._handlers.push({remove:function(){return Mr.removeEventListener(kr,qr,Hr)}})}function Ir(){Ti("onChange")}function Pr(){if(mr.config.wrap&&["open","close","toggle","clear"].forEach(function(qr){Array.prototype.forEach.call(mr.element.querySelectorAll("[data-"+qr+"]"),function(Hr){return Nr(Hr,"click",mr[qr])})}),mr.isMobile){S_();return}var Mr=Zf(tl,50);if(mr._debouncedChange=Zf(Ir,UN),mr.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&Nr(mr.daysContainer,"mouseover",function(qr){mr.config.mode==="range"&&uo(ln(qr))}),Nr(mr._input,"keydown",co),mr.calendarContainer!==void 0&&Nr(mr.calendarContainer,"keydown",co),!mr.config.inline&&!mr.config.static&&Nr(window,"resize",Mr),window.ontouchstart!==void 0?Nr(window.document,"touchstart",bi):Nr(window.document,"mousedown",bi),Nr(window.document,"focus",bi,{capture:!0}),mr.config.clickOpens===!0&&(Nr(mr._input,"focus",mr.open),Nr(mr._input,"click",mr.open)),mr.daysContainer!==void 0&&(Nr(mr.monthNav,"click",D_),Nr(mr.monthNav,["keyup","increment"],Rr),Nr(mr.daysContainer,"click",mo)),mr.timeContainer!==void 0&&mr.minuteElement!==void 0&&mr.hourElement!==void 0){var kr=function(qr){return ln(qr).select()};Nr(mr.timeContainer,["increment"],Tr),Nr(mr.timeContainer,"blur",Tr,{capture:!0}),Nr(mr.timeContainer,"click",zr),Nr([mr.hourElement,mr.minuteElement],["focus","click"],kr),mr.secondElement!==void 0&&Nr(mr.secondElement,"focus",function(){return mr.secondElement&&mr.secondElement.select()}),mr.amPM!==void 0&&Nr(mr.amPM,"click",function(qr){Tr(qr)})}mr.config.allowInput&&Nr(mr._input,"blur",ru)}function Br(Mr,kr){var qr=Mr!==void 0?mr.parseDate(Mr):mr.latestSelectedDateObj||(mr.config.minDate&&mr.config.minDate>mr.now?mr.config.minDate:mr.config.maxDate&&mr.config.maxDate1),mr.calendarContainer.appendChild(Mr);var Vr=mr.config.appendTo!==void 0&&mr.config.appendTo.nodeType!==void 0;if((mr.config.inline||mr.config.static)&&(mr.calendarContainer.classList.add(mr.config.inline?"inline":"static"),mr.config.inline&&(!Vr&&mr.element.parentNode?mr.element.parentNode.insertBefore(mr.calendarContainer,mr._input.nextSibling):mr.config.appendTo!==void 0&&mr.config.appendTo.appendChild(mr.calendarContainer)),mr.config.static)){var Gr=gi("div","flatpickr-wrapper");mr.element.parentNode&&mr.element.parentNode.insertBefore(Gr,mr.element),Gr.appendChild(mr.element),mr.altInput&&Gr.appendChild(mr.altInput),Gr.appendChild(mr.calendarContainer)}!mr.config.static&&!mr.config.inline&&(mr.config.appendTo!==void 0?mr.config.appendTo:window.document.body).appendChild(mr.calendarContainer)}function Fr(Mr,kr,qr,Hr){var Vr=Si(kr,!0),Gr=gi("span",Mr,kr.getDate().toString());return Gr.dateObj=kr,Gr.$i=Hr,Gr.setAttribute("aria-label",mr.formatDate(kr,mr.config.ariaDateFormat)),Mr.indexOf("hidden")===-1&&cn(kr,mr.now)===0&&(mr.todayDateElem=Gr,Gr.classList.add("today"),Gr.setAttribute("aria-current","date")),Vr?(Gr.tabIndex=-1,su(kr)&&(Gr.classList.add("selected"),mr.selectedDateElem=Gr,mr.config.mode==="range"&&(Ji(Gr,"startRange",mr.selectedDates[0]&&cn(kr,mr.selectedDates[0],!0)===0),Ji(Gr,"endRange",mr.selectedDates[1]&&cn(kr,mr.selectedDates[1],!0)===0),Mr==="nextMonthDay"&&Gr.classList.add("inRange")))):Gr.classList.add("flatpickr-disabled"),mr.config.mode==="range"&&O_(kr)&&!su(kr)&&Gr.classList.add("inRange"),mr.weekNumbers&&mr.config.showMonths===1&&Mr!=="prevMonthDay"&&Hr%7==6&&mr.weekNumbers.insertAdjacentHTML("beforeend",""+mr.config.getWeek(kr)+""),Ti("onDayCreate",Gr),Gr}function Xr(Mr){Mr.focus(),mr.config.mode==="range"&&uo(Mr)}function Jr(Mr){for(var kr=Mr>0?0:mr.config.showMonths-1,qr=Mr>0?mr.config.showMonths:-1,Hr=kr;Hr!=qr;Hr+=Mr)for(var Vr=mr.daysContainer.children[Hr],Gr=Mr>0?0:Vr.children.length-1,ui=Mr>0?Vr.children.length:-1,ri=Gr;ri!=ui;ri+=Mr){var fi=Vr.children[ri];if(fi.className.indexOf("hidden")===-1&&Si(fi.dateObj))return fi}}function oi(Mr,kr){for(var qr=Mr.className.indexOf("Month")===-1?Mr.dateObj.getMonth():mr.currentMonth,Hr=kr>0?mr.config.showMonths:-1,Vr=kr>0?1:-1,Gr=qr-mr.currentMonth;Gr!=Hr;Gr+=Vr)for(var ui=mr.daysContainer.children[Gr],ri=qr-mr.currentMonth===Gr?Mr.$i+kr:kr<0?ui.children.length-1:0,fi=ui.children.length,ti=ri;ti>=0&&ti0?fi:-1);ti+=Vr){var li=ui.children[ti];if(li.className.indexOf("hidden")===-1&&Si(li.dateObj)&&Math.abs(Mr.$i-ti)>=Math.abs(kr))return Xr(li)}mr.changeMonth(Vr),hi(Jr(Vr),0)}function hi(Mr,kr){var qr=_r(),Hr=Ln(qr||document.body),Vr=Mr!==void 0?Mr:Hr?qr:mr.selectedDateElem!==void 0&&Ln(mr.selectedDateElem)?mr.selectedDateElem:mr.todayDateElem!==void 0&&Ln(mr.todayDateElem)?mr.todayDateElem:Jr(kr>0?1:-1);Vr===void 0?mr._input.focus():Hr?oi(Vr,kr):Xr(Vr)}function pi(Mr,kr){for(var qr=(new Date(Mr,kr,1).getDay()-mr.l10n.firstDayOfWeek+7)%7,Hr=mr.utils.getDaysInMonth((kr-1+12)%12,Mr),Vr=mr.utils.getDaysInMonth(kr,Mr),Gr=window.document.createDocumentFragment(),ui=mr.config.showMonths>1,ri=ui?"prevMonthDay hidden":"prevMonthDay",fi=ui?"nextMonthDay hidden":"nextMonthDay",ti=Hr+1-qr,li=0;ti<=Hr;ti++,li++)Gr.appendChild(Fr("flatpickr-day "+ri,new Date(Mr,kr-1,ti),ti,li));for(ti=1;ti<=Vr;ti++,li++)Gr.appendChild(Fr("flatpickr-day",new Date(Mr,kr,ti),ti,li));for(var wi=Vr+1;wi<=42-qr&&(mr.config.showMonths===1||li%7!=0);wi++,li++)Gr.appendChild(Fr("flatpickr-day "+fi,new Date(Mr,kr+1,wi%Vr),wi,li));var qn=gi("div","dayContainer");return qn.appendChild(Gr),qn}function _i(){if(mr.daysContainer!==void 0){Ka(mr.daysContainer),mr.weekNumbers&&Ka(mr.weekNumbers);for(var Mr=document.createDocumentFragment(),kr=0;kr1||mr.config.monthSelectorType!=="dropdown")){var Mr=function(Hr){return mr.config.minDate!==void 0&&mr.currentYear===mr.config.minDate.getFullYear()&&Hrmr.config.maxDate.getMonth())};mr.monthsDropdownContainer.tabIndex=-1,mr.monthsDropdownContainer.innerHTML="";for(var kr=0;kr<12;kr++)if(!!Mr(kr)){var qr=gi("option","flatpickr-monthDropdown-month");qr.value=new Date(mr.currentYear,kr).getMonth().toString(),qr.textContent=Ja(kr,mr.config.shorthandCurrentMonth,mr.l10n),qr.tabIndex=-1,mr.currentMonth===kr&&(qr.selected=!0),mr.monthsDropdownContainer.appendChild(qr)}}}function zi(){var Mr=gi("div","flatpickr-month"),kr=window.document.createDocumentFragment(),qr;mr.config.showMonths>1||mr.config.monthSelectorType==="static"?qr=gi("span","cur-month"):(mr.monthsDropdownContainer=gi("select","flatpickr-monthDropdown-months"),mr.monthsDropdownContainer.setAttribute("aria-label",mr.l10n.monthAriaLabel),Nr(mr.monthsDropdownContainer,"change",function(ui){var ri=ln(ui),fi=parseInt(ri.value,10);mr.changeMonth(fi-mr.currentMonth),Ti("onMonthChange")}),Ei(),qr=mr.monthsDropdownContainer);var Hr=Xa("cur-year",{tabindex:"-1"}),Vr=Hr.getElementsByTagName("input")[0];Vr.setAttribute("aria-label",mr.l10n.yearAriaLabel),mr.config.minDate&&Vr.setAttribute("min",mr.config.minDate.getFullYear().toString()),mr.config.maxDate&&(Vr.setAttribute("max",mr.config.maxDate.getFullYear().toString()),Vr.disabled=!!mr.config.minDate&&mr.config.minDate.getFullYear()===mr.config.maxDate.getFullYear());var Gr=gi("div","flatpickr-current-month");return Gr.appendChild(qr),Gr.appendChild(Hr),kr.appendChild(Gr),Mr.appendChild(kr),{container:Mr,yearElement:Vr,monthElement:qr}}function Gi(){Ka(mr.monthNav),mr.monthNav.appendChild(mr.prevMonthNav),mr.config.showMonths&&(mr.yearElements=[],mr.monthElements=[]);for(var Mr=mr.config.showMonths;Mr--;){var kr=zi();mr.yearElements.push(kr.yearElement),mr.monthElements.push(kr.monthElement),mr.monthNav.appendChild(kr.container)}mr.monthNav.appendChild(mr.nextMonthNav)}function vi(){return mr.monthNav=gi("div","flatpickr-months"),mr.yearElements=[],mr.monthElements=[],mr.prevMonthNav=gi("span","flatpickr-prev-month"),mr.prevMonthNav.innerHTML=mr.config.prevArrow,mr.nextMonthNav=gi("span","flatpickr-next-month"),mr.nextMonthNav.innerHTML=mr.config.nextArrow,Gi(),Object.defineProperty(mr,"_hidePrevMonthArrow",{get:function(){return mr.__hidePrevMonthArrow},set:function(Mr){mr.__hidePrevMonthArrow!==Mr&&(Ji(mr.prevMonthNav,"flatpickr-disabled",Mr),mr.__hidePrevMonthArrow=Mr)}}),Object.defineProperty(mr,"_hideNextMonthArrow",{get:function(){return mr.__hideNextMonthArrow},set:function(Mr){mr.__hideNextMonthArrow!==Mr&&(Ji(mr.nextMonthNav,"flatpickr-disabled",Mr),mr.__hideNextMonthArrow=Mr)}}),mr.currentYearElement=mr.yearElements[0],al(),mr.monthNav}function ki(){mr.calendarContainer.classList.add("hasTime"),mr.config.noCalendar&&mr.calendarContainer.classList.add("noCalendar");var Mr=jc(mr.config);mr.timeContainer=gi("div","flatpickr-time"),mr.timeContainer.tabIndex=-1;var kr=gi("span","flatpickr-time-separator",":"),qr=Xa("flatpickr-hour",{"aria-label":mr.l10n.hourAriaLabel});mr.hourElement=qr.getElementsByTagName("input")[0];var Hr=Xa("flatpickr-minute",{"aria-label":mr.l10n.minuteAriaLabel});if(mr.minuteElement=Hr.getElementsByTagName("input")[0],mr.hourElement.tabIndex=mr.minuteElement.tabIndex=-1,mr.hourElement.value=Xi(mr.latestSelectedDateObj?mr.latestSelectedDateObj.getHours():mr.config.time_24hr?Mr.hours:Dr(Mr.hours)),mr.minuteElement.value=Xi(mr.latestSelectedDateObj?mr.latestSelectedDateObj.getMinutes():Mr.minutes),mr.hourElement.setAttribute("step",mr.config.hourIncrement.toString()),mr.minuteElement.setAttribute("step",mr.config.minuteIncrement.toString()),mr.hourElement.setAttribute("min",mr.config.time_24hr?"0":"1"),mr.hourElement.setAttribute("max",mr.config.time_24hr?"23":"12"),mr.hourElement.setAttribute("maxlength","2"),mr.minuteElement.setAttribute("min","0"),mr.minuteElement.setAttribute("max","59"),mr.minuteElement.setAttribute("maxlength","2"),mr.timeContainer.appendChild(qr),mr.timeContainer.appendChild(kr),mr.timeContainer.appendChild(Hr),mr.config.time_24hr&&mr.timeContainer.classList.add("time24hr"),mr.config.enableSeconds){mr.timeContainer.classList.add("hasSeconds");var Vr=Xa("flatpickr-second");mr.secondElement=Vr.getElementsByTagName("input")[0],mr.secondElement.value=Xi(mr.latestSelectedDateObj?mr.latestSelectedDateObj.getSeconds():Mr.seconds),mr.secondElement.setAttribute("step",mr.minuteElement.getAttribute("step")),mr.secondElement.setAttribute("min","0"),mr.secondElement.setAttribute("max","59"),mr.secondElement.setAttribute("maxlength","2"),mr.timeContainer.appendChild(gi("span","flatpickr-time-separator",":")),mr.timeContainer.appendChild(Vr)}return mr.config.time_24hr||(mr.amPM=gi("span","flatpickr-am-pm",mr.l10n.amPM[an((mr.latestSelectedDateObj?mr.hourElement.value:mr.config.defaultHour)>11)]),mr.amPM.title=mr.l10n.toggleTitle,mr.amPM.tabIndex=-1,mr.timeContainer.appendChild(mr.amPM)),mr.timeContainer}function Cn(){mr.weekdayContainer?Ka(mr.weekdayContainer):mr.weekdayContainer=gi("div","flatpickr-weekdays");for(var Mr=mr.config.showMonths;Mr--;){var kr=gi("div","flatpickr-weekdaycontainer");mr.weekdayContainer.appendChild(kr)}return Yi(),mr.weekdayContainer}function Yi(){if(!!mr.weekdayContainer){var Mr=mr.l10n.firstDayOfWeek,kr=Gw(mr.l10n.weekdays.shorthand);Mr>0&&Mr `+kr.join("")+` - `}}function ii(){mr.calendarContainer.classList.add("hasWeeks");var Mr=gi("div","flatpickr-weekwrapper");Mr.appendChild(gi("span","flatpickr-weekday",mr.l10n.weekAbbreviation));var kr=gi("div","flatpickr-weeks");return Mr.appendChild(kr),{weekWrapper:Mr,weekNumbers:kr}}function ei(Mr,kr){kr===void 0&&(kr=!0);var qr=kr?Mr:Mr-mr.currentMonth;qr<0&&mr._hidePrevMonthArrow===!0||qr>0&&mr._hideNextMonthArrow===!0||(mr.currentMonth+=qr,(mr.currentMonth<0||mr.currentMonth>11)&&(mr.currentYear+=mr.currentMonth>11?1:-1,mr.currentMonth=(mr.currentMonth+12)%12,Ti("onYearChange"),Ei()),_i(),Ti("onMonthChange"),ol())}function Qr(Mr,kr){if(Mr===void 0&&(Mr=!0),kr===void 0&&(kr=!0),mr.input.value="",mr.altInput!==void 0&&(mr.altInput.value=""),mr.mobileInput!==void 0&&(mr.mobileInput.value=""),mr.selectedDates=[],mr.latestSelectedDateObj=void 0,kr===!0&&(mr.currentYear=mr._initialDate.getFullYear(),mr.currentMonth=mr._initialDate.getMonth()),mr.config.enableTime===!0){var qr=Pc(mr.config),Hr=qr.hours,Vr=qr.minutes,Gr=qr.seconds;Lr(Hr,Vr,Gr)}mr.redraw(),Mr&&Ti("onChange")}function si(){mr.isOpen=!1,mr.isMobile||(mr.calendarContainer!==void 0&&mr.calendarContainer.classList.remove("open"),mr._input!==void 0&&mr._input.classList.remove("active")),Ti("onClose")}function Zr(){mr.config!==void 0&&Ti("onDestroy");for(var Mr=mr._handlers.length;Mr--;)mr._handlers[Mr].remove();if(mr._handlers=[],mr.mobileInput)mr.mobileInput.parentNode&&mr.mobileInput.parentNode.removeChild(mr.mobileInput),mr.mobileInput=void 0;else if(mr.calendarContainer&&mr.calendarContainer.parentNode)if(mr.config.static&&mr.calendarContainer.parentNode){var kr=mr.calendarContainer.parentNode;if(kr.lastChild&&kr.removeChild(kr.lastChild),kr.parentNode){for(;kr.firstChild;)kr.parentNode.insertBefore(kr.firstChild,kr);kr.parentNode.removeChild(kr)}}else mr.calendarContainer.parentNode.removeChild(mr.calendarContainer);mr.altInput&&(mr.input.type="text",mr.altInput.parentNode&&mr.altInput.parentNode.removeChild(mr.altInput),delete mr.altInput),mr.input&&(mr.input.type=mr.input._type,mr.input.classList.remove("flatpickr-input"),mr.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(qr){try{delete mr[qr]}catch(Hr){}})}function ni(Mr){return mr.calendarContainer.contains(Mr)}function bi(Mr){if(mr.isOpen&&!mr.config.inline){var kr=ln(Mr),qr=ni(kr),Hr=kr===mr.input||kr===mr.altInput||mr.element.contains(kr)||Mr.path&&Mr.path.indexOf&&(~Mr.path.indexOf(mr.input)||~Mr.path.indexOf(mr.altInput)),Vr=!Hr&&!qr&&!ni(Mr.relatedTarget),Gr=!mr.config.ignoredFocusElements.some(function(ui){return ui.contains(kr)});Vr&&Gr&&(mr.config.allowInput&&mr.setDate(mr._input.value,!1,mr.config.altInput?mr.config.altFormat:mr.config.dateFormat),mr.timeContainer!==void 0&&mr.minuteElement!==void 0&&mr.hourElement!==void 0&&mr.input.value!==""&&mr.input.value!==void 0&&Tr(),mr.close(),mr.config&&mr.config.mode==="range"&&mr.selectedDates.length===1&&mr.clear(!1))}}function xi(Mr){if(!(!Mr||mr.config.minDate&&Mrmr.config.maxDate.getFullYear())){var kr=Mr,qr=mr.currentYear!==kr;mr.currentYear=kr||mr.currentYear,mr.config.maxDate&&mr.currentYear===mr.config.maxDate.getFullYear()?mr.currentMonth=Math.min(mr.config.maxDate.getMonth(),mr.currentMonth):mr.config.minDate&&mr.currentYear===mr.config.minDate.getFullYear()&&(mr.currentMonth=Math.max(mr.config.minDate.getMonth(),mr.currentMonth)),qr&&(mr.redraw(),Ti("onYearChange"),Ei())}}function Si(Mr,kr){var qr;kr===void 0&&(kr=!0);var Hr=mr.parseDate(Mr,void 0,kr);if(mr.config.minDate&&Hr&&cn(Hr,mr.config.minDate,kr!==void 0?kr:!mr.minDateHasTime)<0||mr.config.maxDate&&Hr&&cn(Hr,mr.config.maxDate,kr!==void 0?kr:!mr.maxDateHasTime)>0)return!1;if(!mr.config.enable&&mr.config.disable.length===0)return!0;if(Hr===void 0)return!1;for(var Vr=!!mr.config.enable,Gr=(qr=mr.config.enable)!==null&&qr!==void 0?qr:mr.config.disable,ui=0,ri=void 0;ui=ri.from.getTime()&&Hr.getTime()<=ri.to.getTime())return Vr}return!Vr}function Ln(Mr){return mr.daysContainer!==void 0?Mr.className.indexOf("hidden")===-1&&Mr.className.indexOf("flatpickr-disabled")===-1&&mr.daysContainer.contains(Mr):!1}function ru(Mr){var kr=Mr.target===mr._input,qr=mr._input.value.trimEnd()!==ou();kr&&qr&&!(Mr.relatedTarget&&ni(Mr.relatedTarget))&&mr.setDate(mr._input.value,!0,Mr.target===mr.altInput?mr.config.altFormat:mr.config.dateFormat)}function co(Mr){var kr=ln(Mr),qr=mr.config.wrap?yr.contains(kr):kr===mr._input,Hr=mr.config.allowInput,Vr=mr.isOpen&&(!Hr||!qr),Gr=mr.config.inline&&qr&&!Hr;if(Mr.keyCode===13&&qr){if(Hr)return mr.setDate(mr._input.value,!0,kr===mr.altInput?mr.config.altFormat:mr.config.dateFormat),mr.close(),kr.blur();mr.open()}else if(ni(kr)||Vr||Gr){var ui=!!mr.timeContainer&&mr.timeContainer.contains(kr);switch(Mr.keyCode){case 13:ui?(Mr.preventDefault(),Tr(),po()):mo(Mr);break;case 27:Mr.preventDefault(),po();break;case 8:case 46:qr&&!mr.config.allowInput&&(Mr.preventDefault(),mr.clear());break;case 37:case 39:if(!ui&&!qr){Mr.preventDefault();var ri=_r();if(mr.daysContainer!==void 0&&(Hr===!1||ri&&Ln(ri))){var fi=Mr.keyCode===39?1:-1;Mr.ctrlKey?(Mr.stopPropagation(),ei(fi),hi(Jr(1),0)):hi(void 0,fi)}}else mr.hourElement&&mr.hourElement.focus();break;case 38:case 40:Mr.preventDefault();var ti=Mr.keyCode===40?1:-1;mr.daysContainer&&kr.$i!==void 0||kr===mr.input||kr===mr.altInput?Mr.ctrlKey?(Mr.stopPropagation(),xi(mr.currentYear-ti),hi(Jr(1),0)):ui||hi(void 0,ti*7):kr===mr.currentYearElement?xi(mr.currentYear-ti):mr.config.enableTime&&(!ui&&mr.hourElement&&mr.hourElement.focus(),Tr(Mr),mr._debouncedChange());break;case 9:if(ui){var li=[mr.hourElement,mr.minuteElement,mr.secondElement,mr.amPM].concat(mr.pluginElements).filter(function(un){return un}),wi=li.indexOf(kr);if(wi!==-1){var qn=li[wi+(Mr.shiftKey?-1:1)];Mr.preventDefault(),(qn||mr._input).focus()}}else!mr.config.noCalendar&&mr.daysContainer&&mr.daysContainer.contains(kr)&&Mr.shiftKey&&(Mr.preventDefault(),mr._input.focus());break;default:break}}if(mr.amPM!==void 0&&kr===mr.amPM)switch(Mr.key){case mr.l10n.amPM[0].charAt(0):case mr.l10n.amPM[0].charAt(0).toLowerCase():mr.amPM.textContent=mr.l10n.amPM[0],Cr(),Wn();break;case mr.l10n.amPM[1].charAt(0):case mr.l10n.amPM[1].charAt(0).toLowerCase():mr.amPM.textContent=mr.l10n.amPM[1],Cr(),Wn();break}(qr||ni(kr))&&Ti("onKeyDown",Mr)}function uo(Mr,kr){if(kr===void 0&&(kr="flatpickr-day"),!(mr.selectedDates.length!==1||Mr&&(!Mr.classList.contains(kr)||Mr.classList.contains("flatpickr-disabled")))){for(var qr=Mr?Mr.dateObj.getTime():mr.days.firstElementChild.dateObj.getTime(),Hr=mr.parseDate(mr.selectedDates[0],void 0,!0).getTime(),Vr=Math.min(qr,mr.selectedDates[0].getTime()),Gr=Math.max(qr,mr.selectedDates[0].getTime()),ui=!1,ri=0,fi=0,ti=Vr;tiVr&&tiri)?ri=ti:ti>Hr&&(!fi||ti ."+kr));li.forEach(function(wi){var qn=wi.dateObj,un=qn.getTime(),ta=ri>0&&un0&&un>fi;if(ta){wi.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(go){wi.classList.remove(go)});return}else if(ui&&!ta)return;["startRange","inRange","endRange","notAllowed"].forEach(function(go){wi.classList.remove(go)}),Mr!==void 0&&(Mr.classList.add(qr<=mr.selectedDates[0].getTime()?"startRange":"endRange"),Hrqr&&un===Hr&&wi.classList.add("endRange"),un>=ri&&(fi===0||un<=fi)&&Uw(un,Hr,qr)&&wi.classList.add("inRange"))})}}function el(){mr.isOpen&&!mr.config.static&&!mr.config.inline&&fo()}function iu(Mr,kr){if(kr===void 0&&(kr=mr._positionElement),mr.isMobile===!0){if(Mr){Mr.preventDefault();var qr=ln(Mr);qr&&qr.blur()}mr.mobileInput!==void 0&&(mr.mobileInput.focus(),mr.mobileInput.click()),Ti("onOpen");return}else if(mr._input.disabled||mr.config.inline)return;var Hr=mr.isOpen;mr.isOpen=!0,Hr||(mr.calendarContainer.classList.add("open"),mr._input.classList.add("active"),Ti("onOpen"),fo(kr)),mr.config.enableTime===!0&&mr.config.noCalendar===!0&&mr.config.allowInput===!1&&(Mr===void 0||!mr.timeContainer.contains(Mr.relatedTarget))&&setTimeout(function(){return mr.hourElement.select()},50)}function tl(Mr){return function(kr){var qr=mr.config["_"+Mr+"Date"]=mr.parseDate(kr,mr.config.dateFormat),Hr=mr.config["_"+(Mr==="min"?"max":"min")+"Date"];qr!==void 0&&(mr[Mr==="min"?"minDateHasTime":"maxDateHasTime"]=qr.getHours()>0||qr.getMinutes()>0||qr.getSeconds()>0),mr.selectedDates&&(mr.selectedDates=mr.selectedDates.filter(function(Vr){return Si(Vr)}),!mr.selectedDates.length&&Mr==="min"&&Ar(qr),Wn()),mr.daysContainer&&(Zo(),qr!==void 0?mr.currentYearElement[Mr]=qr.getFullYear().toString():mr.currentYearElement.removeAttribute(Mr),mr.currentYearElement.disabled=!!Hr&&qr!==void 0&&Hr.getFullYear()===qr.getFullYear())}}function rl(){var Mr=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],kr=Qi(Qi({},JSON.parse(JSON.stringify(yr.dataset||{}))),br),qr={};mr.config.parseDate=kr.parseDate,mr.config.formatDate=kr.formatDate,Object.defineProperty(mr.config,"enable",{get:function(){return mr.config._enable},set:function(li){mr.config._enable=dh(li)}}),Object.defineProperty(mr.config,"disable",{get:function(){return mr.config._disable},set:function(li){mr.config._disable=dh(li)}});var Hr=kr.mode==="time";if(!kr.dateFormat&&(kr.enableTime||Hr)){var Vr=qi.defaultConfig.dateFormat||Ts.dateFormat;qr.dateFormat=kr.noCalendar||Hr?"H:i"+(kr.enableSeconds?":S":""):Vr+" H:i"+(kr.enableSeconds?":S":"")}if(kr.altInput&&(kr.enableTime||Hr)&&!kr.altFormat){var Gr=qi.defaultConfig.altFormat||Ts.altFormat;qr.altFormat=kr.noCalendar||Hr?"h:i"+(kr.enableSeconds?":S K":" K"):Gr+(" h:i"+(kr.enableSeconds?":S":"")+" K")}Object.defineProperty(mr.config,"minDate",{get:function(){return mr.config._minDate},set:tl("min")}),Object.defineProperty(mr.config,"maxDate",{get:function(){return mr.config._maxDate},set:tl("max")});var ui=function(li){return function(wi){mr.config[li==="min"?"_minTime":"_maxTime"]=mr.parseDate(wi,"H:i:S")}};Object.defineProperty(mr.config,"minTime",{get:function(){return mr.config._minTime},set:ui("min")}),Object.defineProperty(mr.config,"maxTime",{get:function(){return mr.config._maxTime},set:ui("max")}),kr.mode==="time"&&(mr.config.noCalendar=!0,mr.config.enableTime=!0),Object.assign(mr.config,qr,kr);for(var ri=0;ri-1?mr.config[ti]=Nc(fi[ti]).map(xr).concat(mr.config[ti]):typeof kr[ti]=="undefined"&&(mr.config[ti]=fi[ti])}kr.altInputClass||(mr.config.altInputClass=Qo().className+" "+mr.config.altInputClass),Ti("onParseConfig")}function Qo(){return mr.config.wrap?yr.querySelector("[data-input]"):yr}function il(){typeof mr.config.locale!="object"&&typeof qi.l10ns[mr.config.locale]=="undefined"&&mr.config.errorHandler(new Error("flatpickr: invalid locale "+mr.config.locale)),mr.l10n=Qi(Qi({},qi.l10ns.default),typeof mr.config.locale=="object"?mr.config.locale:mr.config.locale!=="default"?qi.l10ns[mr.config.locale]:void 0),os.D="("+mr.l10n.weekdays.shorthand.join("|")+")",os.l="("+mr.l10n.weekdays.longhand.join("|")+")",os.M="("+mr.l10n.months.shorthand.join("|")+")",os.F="("+mr.l10n.months.longhand.join("|")+")",os.K="("+mr.l10n.amPM[0]+"|"+mr.l10n.amPM[1]+"|"+mr.l10n.amPM[0].toLowerCase()+"|"+mr.l10n.amPM[1].toLowerCase()+")";var Mr=Qi(Qi({},br),JSON.parse(JSON.stringify(yr.dataset||{})));Mr.time_24hr===void 0&&qi.defaultConfig.time_24hr===void 0&&(mr.config.time_24hr=mr.l10n.time_24hr),mr.formatDate=rh(mr),mr.parseDate=qc({config:mr.config,l10n:mr.l10n})}function fo(Mr){if(typeof mr.config.position=="function")return void mr.config.position(mr,Mr);if(mr.calendarContainer!==void 0){Ti("onPreCalendarPosition");var kr=Mr||mr._positionElement,qr=Array.prototype.reduce.call(mr.calendarContainer.children,function(I_,P_){return I_+P_.offsetHeight},0),Hr=mr.calendarContainer.offsetWidth,Vr=mr.config.position.split(" "),Gr=Vr[0],ui=Vr.length>1?Vr[1]:null,ri=kr.getBoundingClientRect(),fi=window.innerHeight-ri.bottom,ti=Gr==="above"||Gr!=="below"&&fiqr,li=window.pageYOffset+ri.top+(ti?-qr-2:kr.offsetHeight+2);if(Ji(mr.calendarContainer,"arrowTop",!ti),Ji(mr.calendarContainer,"arrowBottom",ti),!mr.config.inline){var wi=window.pageXOffset+ri.left,qn=!1,un=!1;ui==="center"?(wi-=(Hr-ri.width)/2,qn=!0):ui==="right"&&(wi-=Hr-ri.width,un=!0),Ji(mr.calendarContainer,"arrowLeft",!qn&&!un),Ji(mr.calendarContainer,"arrowCenter",qn),Ji(mr.calendarContainer,"arrowRight",un);var ta=window.document.body.offsetWidth-(window.pageXOffset+ri.right),go=wi+Hr>window.document.body.offsetWidth,C_=ta+Hr>window.document.body.offsetWidth;if(Ji(mr.calendarContainer,"rightMost",go),!mr.config.static)if(mr.calendarContainer.style.top=li+"px",!go)mr.calendarContainer.style.left=wi+"px",mr.calendarContainer.style.right="auto";else if(!C_)mr.calendarContainer.style.left="auto",mr.calendarContainer.style.right=ta+"px";else{var au=Vn();if(au===void 0)return;var L_=window.document.body.offsetWidth,M_=Math.max(0,L_/2-Hr/2),k_=".flatpickr-calendar.centerMost:before",R_=".flatpickr-calendar.centerMost:after",N_=au.cssRules.length,q_="{left:"+ri.left+"px;right:auto;}";Ji(mr.calendarContainer,"rightMost",!1),Ji(mr.calendarContainer,"centerMost",!0),au.insertRule(k_+","+R_+q_,N_),mr.calendarContainer.style.left=M_+"px",mr.calendarContainer.style.right="auto"}}}}function Vn(){for(var Mr=null,kr=0;krmr.currentMonth+mr.config.showMonths-1)&&mr.config.mode!=="range";if(mr.selectedDateElem=Hr,mr.config.mode==="single")mr.selectedDates=[Vr];else if(mr.config.mode==="multiple"){var ui=su(Vr);ui?mr.selectedDates.splice(parseInt(ui),1):mr.selectedDates.push(Vr)}else mr.config.mode==="range"&&(mr.selectedDates.length===2&&mr.clear(!1,!1),mr.latestSelectedDateObj=Vr,mr.selectedDates.push(Vr),cn(Vr,mr.selectedDates[0],!0)!==0&&mr.selectedDates.sort(function(li,wi){return li.getTime()-wi.getTime()}));if(Cr(),Gr){var ri=mr.currentYear!==Vr.getFullYear();mr.currentYear=Vr.getFullYear(),mr.currentMonth=Vr.getMonth(),ri&&(Ti("onYearChange"),Ei()),Ti("onMonthChange")}if(ol(),_i(),Wn(),!Gr&&mr.config.mode!=="range"&&mr.config.showMonths===1?Xr(Hr):mr.selectedDateElem!==void 0&&mr.hourElement===void 0&&mr.selectedDateElem&&mr.selectedDateElem.focus(),mr.hourElement!==void 0&&mr.hourElement!==void 0&&mr.hourElement.focus(),mr.config.closeOnSelect){var fi=mr.config.mode==="single"&&!mr.config.enableTime,ti=mr.config.mode==="range"&&mr.selectedDates.length===2&&!mr.config.enableTime;(fi||ti)&&po()}Ir()}}var Os={locale:[il,Yi],showMonths:[Gi,Sr,Cn],minDate:[Br],maxDate:[Br],positionElement:[fh],clickOpens:[function(){mr.config.clickOpens===!0?(Nr(mr._input,"focus",mr.open),Nr(mr._input,"click",mr.open)):(mr._input.removeEventListener("focus",mr.open),mr._input.removeEventListener("click",mr.open))}]};function nl(Mr,kr){if(Mr!==null&&typeof Mr=="object"){Object.assign(mr.config,Mr);for(var qr in Mr)Os[qr]!==void 0&&Os[qr].forEach(function(Hr){return Hr()})}else mr.config[Mr]=kr,Os[Mr]!==void 0?Os[Mr].forEach(function(Hr){return Hr()}):Mc.indexOf(Mr)>-1&&(mr.config[Mr]=Nc(kr));mr.redraw(),Wn(!0)}function ea(Mr,kr){var qr=[];if(Mr instanceof Array)qr=Mr.map(function(Hr){return mr.parseDate(Hr,kr)});else if(Mr instanceof Date||typeof Mr=="number")qr=[mr.parseDate(Mr,kr)];else if(typeof Mr=="string")switch(mr.config.mode){case"single":case"time":qr=[mr.parseDate(Mr,kr)];break;case"multiple":qr=Mr.split(mr.config.conjunction).map(function(Hr){return mr.parseDate(Hr,kr)});break;case"range":qr=Mr.split(mr.l10n.rangeSeparator).map(function(Hr){return mr.parseDate(Hr,kr)});break;default:break}else mr.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(Mr)));mr.selectedDates=mr.config.allowInvalidPreload?qr:qr.filter(function(Hr){return Hr instanceof Date&&Si(Hr,!1)}),mr.config.mode==="range"&&mr.selectedDates.sort(function(Hr,Vr){return Hr.getTime()-Vr.getTime()})}function sl(Mr,kr,qr){if(kr===void 0&&(kr=!1),qr===void 0&&(qr=mr.config.dateFormat),Mr!==0&&!Mr||Mr instanceof Array&&Mr.length===0)return mr.clear(kr);ea(Mr,qr),mr.latestSelectedDateObj=mr.selectedDates[mr.selectedDates.length-1],mr.redraw(),Br(void 0,kr),Ar(),mr.selectedDates.length===0&&mr.clear(!1),Wn(kr),kr&&Ti("onChange")}function dh(Mr){return Mr.slice().map(function(kr){return typeof kr=="string"||typeof kr=="number"||kr instanceof Date?mr.parseDate(kr,void 0,!0):kr&&typeof kr=="object"&&kr.from&&kr.to?{from:mr.parseDate(kr.from,void 0),to:mr.parseDate(kr.to,void 0)}:kr}).filter(function(kr){return kr})}function __(){mr.selectedDates=[],mr.now=mr.parseDate(mr.config.now)||new Date;var Mr=mr.config.defaultDate||((mr.input.nodeName==="INPUT"||mr.input.nodeName==="TEXTAREA")&&mr.input.placeholder&&mr.input.value===mr.input.placeholder?null:mr.input.value);Mr&&ea(Mr,mr.config.dateFormat),mr._initialDate=mr.selectedDates.length>0?mr.selectedDates[0]:mr.config.minDate&&mr.config.minDate.getTime()>mr.now.getTime()?mr.config.minDate:mr.config.maxDate&&mr.config.maxDate.getTime()0&&(mr.latestSelectedDateObj=mr.selectedDates[0]),mr.config.minTime!==void 0&&(mr.config.minTime=mr.parseDate(mr.config.minTime,"H:i")),mr.config.maxTime!==void 0&&(mr.config.maxTime=mr.parseDate(mr.config.maxTime,"H:i")),mr.minDateHasTime=!!mr.config.minDate&&(mr.config.minDate.getHours()>0||mr.config.minDate.getMinutes()>0||mr.config.minDate.getSeconds()>0),mr.maxDateHasTime=!!mr.config.maxDate&&(mr.config.maxDate.getHours()>0||mr.config.maxDate.getMinutes()>0||mr.config.maxDate.getSeconds()>0)}function x_(){if(mr.input=Qo(),!mr.input){mr.config.errorHandler(new Error("Invalid input element specified"));return}mr.input._type=mr.input.type,mr.input.type="text",mr.input.classList.add("flatpickr-input"),mr._input=mr.input,mr.config.altInput&&(mr.altInput=gi(mr.input.nodeName,mr.config.altInputClass),mr._input=mr.altInput,mr.altInput.placeholder=mr.input.placeholder,mr.altInput.disabled=mr.input.disabled,mr.altInput.required=mr.input.required,mr.altInput.tabIndex=mr.input.tabIndex,mr.altInput.type="text",mr.input.setAttribute("type","hidden"),!mr.config.static&&mr.input.parentNode&&mr.input.parentNode.insertBefore(mr.altInput,mr.input.nextSibling)),mr.config.allowInput||mr._input.setAttribute("readonly","readonly"),fh()}function fh(){mr._positionElement=mr.config.positionElement||mr._input}function S_(){var Mr=mr.config.enableTime?mr.config.noCalendar?"time":"datetime-local":"date";mr.mobileInput=gi("input",mr.input.className+" flatpickr-mobile"),mr.mobileInput.tabIndex=1,mr.mobileInput.type=Mr,mr.mobileInput.disabled=mr.input.disabled,mr.mobileInput.required=mr.input.required,mr.mobileInput.placeholder=mr.input.placeholder,mr.mobileFormatStr=Mr==="datetime-local"?"Y-m-d\\TH:i:S":Mr==="date"?"Y-m-d":"H:i:S",mr.selectedDates.length>0&&(mr.mobileInput.defaultValue=mr.mobileInput.value=mr.formatDate(mr.selectedDates[0],mr.mobileFormatStr)),mr.config.minDate&&(mr.mobileInput.min=mr.formatDate(mr.config.minDate,"Y-m-d")),mr.config.maxDate&&(mr.mobileInput.max=mr.formatDate(mr.config.maxDate,"Y-m-d")),mr.input.getAttribute("step")&&(mr.mobileInput.step=String(mr.input.getAttribute("step"))),mr.input.type="hidden",mr.altInput!==void 0&&(mr.altInput.type="hidden");try{mr.input.parentNode&&mr.input.parentNode.insertBefore(mr.mobileInput,mr.input.nextSibling)}catch(kr){}Nr(mr.mobileInput,"change",function(kr){mr.setDate(ln(kr).value,!1,mr.mobileFormatStr),Ti("onChange"),Ti("onClose")})}function T_(Mr){if(mr.isOpen===!0)return mr.close();mr.open(Mr)}function Ti(Mr,kr){if(mr.config!==void 0){var qr=mr.config[Mr];if(qr!==void 0&&qr.length>0)for(var Hr=0;qr[Hr]&&Hr=0&&cn(Mr,mr.selectedDates[1])<=0}function ol(){mr.config.noCalendar||mr.isMobile||!mr.monthNav||(mr.yearElements.forEach(function(Mr,kr){var qr=new Date(mr.currentYear,mr.currentMonth,1);qr.setMonth(mr.currentMonth+kr),mr.config.showMonths>1||mr.config.monthSelectorType==="static"?mr.monthElements[kr].textContent=Xa(qr.getMonth(),mr.config.shorthandCurrentMonth,mr.l10n)+" ":mr.monthsDropdownContainer.value=qr.getMonth().toString(),Mr.value=qr.getFullYear().toString()}),mr._hidePrevMonthArrow=mr.config.minDate!==void 0&&(mr.currentYear===mr.config.minDate.getFullYear()?mr.currentMonth<=mr.config.minDate.getMonth():mr.currentYearmr.config.maxDate.getMonth():mr.currentYear>mr.config.maxDate.getFullYear()))}function ou(Mr){var kr=Mr||(mr.config.altInput?mr.config.altFormat:mr.config.dateFormat);return mr.selectedDates.map(function(qr){return mr.formatDate(qr,kr)}).filter(function(qr,Hr,Vr){return mr.config.mode!=="range"||mr.config.enableTime||Vr.indexOf(qr)===Hr}).join(mr.config.mode!=="range"?mr.config.conjunction:mr.l10n.rangeSeparator)}function Wn(Mr){Mr===void 0&&(Mr=!0),mr.mobileInput!==void 0&&mr.mobileFormatStr&&(mr.mobileInput.value=mr.latestSelectedDateObj!==void 0?mr.formatDate(mr.latestSelectedDateObj,mr.mobileFormatStr):""),mr.input.value=ou(mr.config.dateFormat),mr.altInput!==void 0&&(mr.altInput.value=ou(mr.config.altFormat)),Mr!==!1&&Ti("onValueUpdate")}function O_(Mr){var kr=ln(Mr),qr=mr.prevMonthNav.contains(kr),Hr=mr.nextMonthNav.contains(kr);qr||Hr?ei(qr?-1:1):mr.yearElements.indexOf(kr)>=0?kr.select():kr.classList.contains("arrowUp")?mr.changeYear(mr.currentYear+1):kr.classList.contains("arrowDown")&&mr.changeYear(mr.currentYear-1)}function A_(Mr){Mr.preventDefault();var kr=Mr.type==="keydown",qr=ln(Mr),Hr=qr;mr.amPM!==void 0&&qr===mr.amPM&&(mr.amPM.textContent=mr.l10n.amPM[an(mr.amPM.textContent===mr.l10n.amPM[0])]);var Vr=parseFloat(Hr.getAttribute("min")),Gr=parseFloat(Hr.getAttribute("max")),ui=parseFloat(Hr.getAttribute("step")),ri=parseInt(Hr.value,10),fi=Mr.delta||(kr?Mr.which===38?1:-1:0),ti=ri+ui*fi;if(typeof Hr.value!="undefined"&&Hr.value.length===2){var li=Hr===mr.hourElement,wi=Hr===mr.minuteElement;tiGr&&(ti=Hr===mr.hourElement?ti-Gr-an(!mr.amPM):Vr,wi&&Ur(void 0,1,mr.hourElement)),mr.amPM&&li&&(ui===1?ti+ri===23:Math.abs(ti-ri)>ui)&&(mr.amPM.textContent=mr.l10n.amPM[an(mr.amPM.textContent===mr.l10n.amPM[0])]),Hr.value=Xi(ti)}}return wr(),mr}function Vo(yr,br){for(var mr=Array.prototype.slice.call(yr).filter(function(xr){return xr instanceof HTMLElement}),Er=[],wr=0;wr option"))if(br.selected){for(let mr of Wr("#id_columns"))mr.appendChild(br.cloneNode(!0));br.remove()}yr.preventDefault()}function YN(yr){for(let br of Wr("#id_columns > option"))if(br.selected){for(let mr of Wr("#id_available_columns"))mr.appendChild(br.cloneNode(!0));br.remove()}yr.preventDefault()}function Kw(yr,br){return $i(this,null,function*(){return yield jo(yr,br)})}function KN(yr){var Tr,Dr,Or;yr.preventDefault();let br=yr.currentTarget,mr=br.getAttribute("data-url");if(mr==null){Un("danger","Error Updating Table Configuration","No API path defined for configuration form.").show();return}let Er=((Tr=document.activeElement)==null?void 0:Tr.getAttribute("value"))==="Reset",wr=(Or=(Dr=br.getAttribute("data-config-root"))==null?void 0:Dr.split("."))!=null?Or:[];if(Er){let Cr=wr.reduceRight((Ar,Lr)=>({[Lr]:Ar}),{});Kw(mr,Cr).then(Ar=>{ns(Ar)?Un("danger","Error Resetting Table Configuration",Ar.error).show():location.reload()});return}let _r=bE(br,"select[name=columns]"),xr=Object.assign({},..._r.map(Cr=>({[Cr.name]:Cr.options}))),Sr=wr.reduceRight((Cr,Ar)=>({[Ar]:Cr}),xr);Kw(mr,Sr).then(Cr=>{ns(Cr)?Un("danger","Error Updating Table Configuration",Cr.error).show():location.reload()})}function Xw(){for(let yr of Wr("#save_tableconfig"))yr.addEventListener("click",WN);for(let yr of Wr("#add_columns"))yr.addEventListener("click",GN);for(let yr of Wr("#remove_columns"))yr.addEventListener("click",YN);for(let yr of Wr("form.userconfigform"))yr.addEventListener("submit",KN)}function Jw(yr){return typeof yr=="string"&&["show","hide"].includes(yr)}var Ja=class extends Error{constructor(br,mr){super(br);di(this,"table");this.table=mr}},Hc=class{constructor(br,mr){di(this,"button");di(this,"rows");this.button=br,this.rows=mr}hideRows(){for(let br of this.rows)br.classList.add("d-none")}set buttonState(br){Jw(br)&&this.button.setAttribute("data-state",br)}get buttonState(){let br=this.button.getAttribute("data-state");return Jw(br)?br:null}toggleButton(){this.buttonState==="show"?this.button.innerText=_s(this.button.innerText,"Show","Hide"):this.buttonState==="hide"&&(this.button.innerText=_s(this.button.innerHTML,"Hide","Show"))}toggleState(){this.buttonState==="show"?this.buttonState="hide":this.buttonState==="hide"&&(this.buttonState="show")}toggle(){this.toggleState(),this.toggleButton()}handleClick(br){br.currentTarget.isEqualNode(this.button)&&this.toggle(),this.buttonState==="hide"&&this.hideRows()}},Qw=class{constructor(br){di(this,"table");di(this,"enabledButton");di(this,"disabledButton");di(this,"virtualButton");di(this,"caption",null);di(this,"rows");this.table=br,this.rows=this.table.querySelectorAll("tr");try{let mr=ws(this.table,"button.toggle-enabled"),Er=ws(this.table,"button.toggle-disabled"),wr=ws(this.table,"button.toggle-virtual"),_r=this.table.querySelector("caption");if(this.caption=_r,mr===null)throw new Ja("Table is missing a 'toggle-enabled' button.",br);if(Er===null)throw new Ja("Table is missing a 'toggle-disabled' button.",br);if(wr===null)throw new Ja("Table is missing a 'toggle-virtual' button.",br);mr.addEventListener("click",xr=>this.handleClick(xr,this)),Er.addEventListener("click",xr=>this.handleClick(xr,this)),wr.addEventListener("click",xr=>this.handleClick(xr,this)),this.enabledButton=new Hc(mr,br.querySelectorAll('tr[data-enabled="enabled"]')),this.disabledButton=new Hc(Er,br.querySelectorAll('tr[data-enabled="disabled"]')),this.virtualButton=new Hc(wr,br.querySelectorAll('tr[data-type="virtual"]'))}catch(mr){if(mr instanceof Ja){console.debug("Table does not contain enable/disable toggle buttons");return}else throw mr}}get captionText(){return this.caption!==null?this.caption.innerText:""}set captionText(br){this.caption!==null&&(this.caption.innerText=br)}toggleCaption(){let br=this.enabledButton.buttonState==="show",mr=this.disabledButton.buttonState==="show",Er=this.virtualButton.buttonState==="show";br&&!mr&&!Er?this.captionText="Showing Enabled Interfaces":br&&mr&&!Er?this.captionText="Showing Enabled & Disabled Interfaces":!br&&mr&&!Er?this.captionText="Showing Disabled Interfaces":!br&&!mr&&!Er?this.captionText="Hiding Enabled, Disabled & Virtual Interfaces":!br&&!mr&&Er?this.captionText="Showing Virtual Interfaces":br&&!mr&&Er?this.captionText="Showing Enabled & Virtual Interfaces":br&&mr&&Er?this.captionText="Showing Enabled, Disabled & Virtual Interfaces":this.captionText=""}handleClick(br,mr){for(let Er of this.rows)Er.classList.remove("d-none");mr.enabledButton.handleClick(br),mr.disabledButton.handleClick(br),mr.virtualButton.handleClick(br),mr.toggleCaption()}};function Zw(){for(let yr of Wr("table"))new Qw(yr)}var e_=class{constructor(br){di(this,"base");di(this,"state");di(this,"activeLink",null);di(this,"sections",[]);this.base=br,this.state=new Cc({pinned:!0},{persist:!0,key:"netbox-sidenav"}),this.init(),this.initSectionLinks(),this.initLinks()}bodyHas(br){return document.body.hasAttribute(`data-sidenav-${br}`)}bodyRemove(...br){for(let mr of br)document.body.removeAttribute(`data-sidenav-${mr}`)}bodyAdd(...br){for(let mr of br)document.body.setAttribute(`data-sidenav-${mr}`,"")}init(){for(let br of this.base.querySelectorAll(".sidenav-toggle"))br.addEventListener("click",mr=>this.onToggle(mr));for(let br of Wr(".sidenav-toggle-mobile"))br.addEventListener("click",mr=>this.onMobileToggle(mr));window.innerWidth>1200&&(this.state.get("pinned")&&this.pin(),this.state.get("pinned")||this.unpin(),window.addEventListener("resize",()=>this.onResize())),window.innerWidth<1200&&(this.bodyRemove("hide"),this.bodyAdd("hidden"),window.addEventListener("resize",()=>this.onResize())),this.base.addEventListener("mouseenter",()=>this.onEnter()),this.base.addEventListener("mouseleave",()=>this.onLeave())}initLinks(){for(let br of this.getActiveLinks())this.bodyHas("show")?this.activateLink(br,"expand"):this.bodyHas("hidden")&&this.activateLink(br,"collapse")}show(){this.bodyAdd("show"),this.bodyRemove("hidden","hide")}hide(){this.bodyAdd("hidden"),this.bodyRemove("pinned","show");for(let br of this.base.querySelectorAll(".collapse"))br.classList.remove("show")}pin(){this.bodyAdd("show","pinned"),this.bodyRemove("hidden"),this.state.set("pinned",!0)}unpin(){this.bodyRemove("pinned","show"),this.bodyAdd("hidden");for(let br of this.base.querySelectorAll(".collapse"))br.classList.remove("show");this.state.set("pinned",!1)}handleSectionClick(br){br.preventDefault();let mr=br.target;this.activeLink=mr,this.closeInactiveSections()}closeInactiveSections(){for(let[br,mr]of this.sections)br!==this.activeLink&&(br.classList.add("collapsed"),br.setAttribute("aria-expanded","false"),mr.hide())}initSectionLinks(){for(let br of Wr(".navbar-nav .nav-item .nav-link[data-bs-toggle]"))if(br.parentElement!==null){let mr=br.parentElement.querySelector(".collapse");if(mr!==null){let Er=new sn(mr,{toggle:!1});this.sections.push([br,Er]),br.addEventListener("click",wr=>this.handleSectionClick(wr))}}}activateLink(br,mr){var wr;let Er=br.closest(".collapse");if(qf(Er)){let _r=(wr=Er.parentElement)==null?void 0:wr.querySelector(".nav-link");if(qf(_r))switch(_r.classList.add("active"),mr){case"expand":_r.setAttribute("aria-expanded","true"),Er.classList.add("show"),br.classList.add("active");break;case"collapse":_r.setAttribute("aria-expanded","false"),Er.classList.remove("show"),br.classList.remove("active");break}}}*getActiveLinks(){for(let br of this.base.querySelectorAll(".navbar-nav .nav .nav-item a.nav-link")){let mr=new RegExp(br.href,"gi");window.location.href.match(mr)&&(yield br)}}onEnter(){if(!this.bodyHas("pinned")){this.bodyRemove("hide","hidden"),this.bodyAdd("show");for(let br of this.getActiveLinks())this.activateLink(br,"expand")}}onLeave(){if(!this.bodyHas("pinned")){this.bodyRemove("show"),this.bodyAdd("hide");for(let br of this.getActiveLinks())this.activateLink(br,"collapse");this.bodyRemove("hide"),this.bodyAdd("hidden")}}onResize(){this.bodyHas("show")&&!this.bodyHas("pinned")&&(this.bodyRemove("show"),this.bodyAdd("hidden"))}onToggle(br){br.preventDefault(),this.state.get("pinned")?this.unpin():this.pin()}onMobileToggle(br){br.preventDefault(),this.bodyHas("hidden")?this.show():this.hide()}};function t_(){for(let yr of Wr(".sidenav"))new e_(yr)}var h_=vn(f_());function bq(){let yr=document.getElementById("dashboard");yr&&yr.gridstack.disable()}function yq(){let yr=document.getElementById("dashboard");yr&&yr.gridstack.enable()}function Eq(yr,br){return $i(this,null,function*(){return yield jo(yr,{layout:br})})}function p_(){if(document.getElementById("dashboard")==null)return;let br=h_.GridStack.init({cellHeight:100,disableDrag:!0,disableResize:!0,draggable:{handle:".grid-stack-item-content .card-header",appendTo:"body",scroll:!0}}),mr=document.getElementById("lock_dashboard");mr&&mr.addEventListener("click",()=>{bq()});let Er=document.getElementById("unlock_dashboard");Er&&Er.addEventListener("click",()=>{yq()});let wr=document.getElementById("save_dashboard");wr!==null&&wr.addEventListener("click",()=>{let _r=wr.getAttribute("data-url");if(_r==null)return;let xr=br.save(!1);Eq(_r,xr).then(Sr=>{ns(Sr)?Un("danger","Error Saving Dashboard Config",Sr.error).show():location.reload()})})}function m_(yr,br){switch(yr){case"images-and-labels":{ch("image.device-image",br),ch("text.device-image-label",br);break}case"images-only":{ch("image.device-image",br),uh("text.device-image-label",br);break}case"labels-only":{uh("image.device-image",br),uh("text.device-image-label",br);break}}}function ch(yr,br){var Er,wr;let mr=(wr=(Er=br.contentDocument)==null?void 0:Er.querySelectorAll(yr))!=null?wr:[];for(let _r of mr)_r.classList.remove("hidden")}function uh(yr,br){var Er,wr;let mr=(wr=(Er=br.contentDocument)==null?void 0:Er.querySelectorAll(yr))!=null?wr:[];for(let _r of mr)_r.classList.add("hidden")}function wq(yr,br){br.set("view",yr);for(let mr of Wr(".rack_elevation"))m_(yr,mr)}function g_(){let yr=Jf.get("view");for(let br of Wr("select.rack-view"))br.selectedIndex=[...br.options].findIndex(mr=>mr.value==yr),br.addEventListener("change",mr=>{wq(mr.currentTarget.value,Jf)},!1);for(let br of Wr(".rack_elevation"))br.addEventListener("load",()=>{m_(yr,br)})}function v_(){for(let yr of Wr("*[data-href]")){let br=yr.getAttribute("data-href");mi(br)&&yr.addEventListener("click",()=>{window.location.assign(br)})}}function _q(yr){let br=document.getElementById("selector_results");if(br==null)return;let mr=br.getAttribute("data-selector-target");if(mr==null)return;let Er=document.getElementById(mr);if(Er==null)return;let wr=yr.getAttribute("data-label"),_r=yr.getAttribute("data-value");Er.slim.setData([{text:wr,value:_r}]);let xr=new Event("change");Er.dispatchEvent(xr)}function b_(){for(let yr of Wr("#selector_results a"))yr.addEventListener("click",()=>_q(yr))}function y_(){for(let yr of[Lc,Ac,b_,Tc])yr()}function E_(){for(let yr of Wr("[hx-target]")){let br=yr.getAttribute("hx-target");if(mi(br))for(let mr of Wr(br))mr.addEventListener("htmx:afterSettle",y_)}for(let yr of Wr("[hx-trigger=load]"))yr.addEventListener("htmx:afterSettle",y_)}function w_(){for(let yr of[Tc,jw,Hw,DE,AE,Ac,Yw,Lc,zw,Xw,Zw,t_,p_,g_,v_,E_])yr()}function xq(){let yr=document.forms;for(let mr of yr)mr.method.toUpperCase()=="GET"&&mr.addEventListener("formdata",function(Er){let wr=Er.formData;for(let[_r,xr]of Array.from(wr.entries()))xr===""&&wr.delete(_r)});let br=document.querySelector(".content-container");br!==null&&br.focus()}window.addEventListener("load",xq);document.readyState!=="loading"?w_():document.addEventListener("DOMContentLoaded",w_);})(); + `}}function ii(){mr.calendarContainer.classList.add("hasWeeks");var Mr=gi("div","flatpickr-weekwrapper");Mr.appendChild(gi("span","flatpickr-weekday",mr.l10n.weekAbbreviation));var kr=gi("div","flatpickr-weeks");return Mr.appendChild(kr),{weekWrapper:Mr,weekNumbers:kr}}function ei(Mr,kr){kr===void 0&&(kr=!0);var qr=kr?Mr:Mr-mr.currentMonth;qr<0&&mr._hidePrevMonthArrow===!0||qr>0&&mr._hideNextMonthArrow===!0||(mr.currentMonth+=qr,(mr.currentMonth<0||mr.currentMonth>11)&&(mr.currentYear+=mr.currentMonth>11?1:-1,mr.currentMonth=(mr.currentMonth+12)%12,Ti("onYearChange"),Ei()),_i(),Ti("onMonthChange"),al())}function Qr(Mr,kr){if(Mr===void 0&&(Mr=!0),kr===void 0&&(kr=!0),mr.input.value="",mr.altInput!==void 0&&(mr.altInput.value=""),mr.mobileInput!==void 0&&(mr.mobileInput.value=""),mr.selectedDates=[],mr.latestSelectedDateObj=void 0,kr===!0&&(mr.currentYear=mr._initialDate.getFullYear(),mr.currentMonth=mr._initialDate.getMonth()),mr.config.enableTime===!0){var qr=jc(mr.config),Hr=qr.hours,Vr=qr.minutes,Gr=qr.seconds;Lr(Hr,Vr,Gr)}mr.redraw(),Mr&&Ti("onChange")}function si(){mr.isOpen=!1,mr.isMobile||(mr.calendarContainer!==void 0&&mr.calendarContainer.classList.remove("open"),mr._input!==void 0&&mr._input.classList.remove("active")),Ti("onClose")}function Zr(){mr.config!==void 0&&Ti("onDestroy");for(var Mr=mr._handlers.length;Mr--;)mr._handlers[Mr].remove();if(mr._handlers=[],mr.mobileInput)mr.mobileInput.parentNode&&mr.mobileInput.parentNode.removeChild(mr.mobileInput),mr.mobileInput=void 0;else if(mr.calendarContainer&&mr.calendarContainer.parentNode)if(mr.config.static&&mr.calendarContainer.parentNode){var kr=mr.calendarContainer.parentNode;if(kr.lastChild&&kr.removeChild(kr.lastChild),kr.parentNode){for(;kr.firstChild;)kr.parentNode.insertBefore(kr.firstChild,kr);kr.parentNode.removeChild(kr)}}else mr.calendarContainer.parentNode.removeChild(mr.calendarContainer);mr.altInput&&(mr.input.type="text",mr.altInput.parentNode&&mr.altInput.parentNode.removeChild(mr.altInput),delete mr.altInput),mr.input&&(mr.input.type=mr.input._type,mr.input.classList.remove("flatpickr-input"),mr.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(qr){try{delete mr[qr]}catch(Hr){}})}function ni(Mr){return mr.calendarContainer.contains(Mr)}function bi(Mr){if(mr.isOpen&&!mr.config.inline){var kr=ln(Mr),qr=ni(kr),Hr=kr===mr.input||kr===mr.altInput||mr.element.contains(kr)||Mr.path&&Mr.path.indexOf&&(~Mr.path.indexOf(mr.input)||~Mr.path.indexOf(mr.altInput)),Vr=!Hr&&!qr&&!ni(Mr.relatedTarget),Gr=!mr.config.ignoredFocusElements.some(function(ui){return ui.contains(kr)});Vr&&Gr&&(mr.config.allowInput&&mr.setDate(mr._input.value,!1,mr.config.altInput?mr.config.altFormat:mr.config.dateFormat),mr.timeContainer!==void 0&&mr.minuteElement!==void 0&&mr.hourElement!==void 0&&mr.input.value!==""&&mr.input.value!==void 0&&Tr(),mr.close(),mr.config&&mr.config.mode==="range"&&mr.selectedDates.length===1&&mr.clear(!1))}}function xi(Mr){if(!(!Mr||mr.config.minDate&&Mrmr.config.maxDate.getFullYear())){var kr=Mr,qr=mr.currentYear!==kr;mr.currentYear=kr||mr.currentYear,mr.config.maxDate&&mr.currentYear===mr.config.maxDate.getFullYear()?mr.currentMonth=Math.min(mr.config.maxDate.getMonth(),mr.currentMonth):mr.config.minDate&&mr.currentYear===mr.config.minDate.getFullYear()&&(mr.currentMonth=Math.max(mr.config.minDate.getMonth(),mr.currentMonth)),qr&&(mr.redraw(),Ti("onYearChange"),Ei())}}function Si(Mr,kr){var qr;kr===void 0&&(kr=!0);var Hr=mr.parseDate(Mr,void 0,kr);if(mr.config.minDate&&Hr&&cn(Hr,mr.config.minDate,kr!==void 0?kr:!mr.minDateHasTime)<0||mr.config.maxDate&&Hr&&cn(Hr,mr.config.maxDate,kr!==void 0?kr:!mr.maxDateHasTime)>0)return!1;if(!mr.config.enable&&mr.config.disable.length===0)return!0;if(Hr===void 0)return!1;for(var Vr=!!mr.config.enable,Gr=(qr=mr.config.enable)!==null&&qr!==void 0?qr:mr.config.disable,ui=0,ri=void 0;ui=ri.from.getTime()&&Hr.getTime()<=ri.to.getTime())return Vr}return!Vr}function Ln(Mr){return mr.daysContainer!==void 0?Mr.className.indexOf("hidden")===-1&&Mr.className.indexOf("flatpickr-disabled")===-1&&mr.daysContainer.contains(Mr):!1}function ru(Mr){var kr=Mr.target===mr._input,qr=mr._input.value.trimEnd()!==ou();kr&&qr&&!(Mr.relatedTarget&&ni(Mr.relatedTarget))&&mr.setDate(mr._input.value,!0,Mr.target===mr.altInput?mr.config.altFormat:mr.config.dateFormat)}function co(Mr){var kr=ln(Mr),qr=mr.config.wrap?yr.contains(kr):kr===mr._input,Hr=mr.config.allowInput,Vr=mr.isOpen&&(!Hr||!qr),Gr=mr.config.inline&&qr&&!Hr;if(Mr.keyCode===13&&qr){if(Hr)return mr.setDate(mr._input.value,!0,kr===mr.altInput?mr.config.altFormat:mr.config.dateFormat),mr.close(),kr.blur();mr.open()}else if(ni(kr)||Vr||Gr){var ui=!!mr.timeContainer&&mr.timeContainer.contains(kr);switch(Mr.keyCode){case 13:ui?(Mr.preventDefault(),Tr(),po()):mo(Mr);break;case 27:Mr.preventDefault(),po();break;case 8:case 46:qr&&!mr.config.allowInput&&(Mr.preventDefault(),mr.clear());break;case 37:case 39:if(!ui&&!qr){Mr.preventDefault();var ri=_r();if(mr.daysContainer!==void 0&&(Hr===!1||ri&&Ln(ri))){var fi=Mr.keyCode===39?1:-1;Mr.ctrlKey?(Mr.stopPropagation(),ei(fi),hi(Jr(1),0)):hi(void 0,fi)}}else mr.hourElement&&mr.hourElement.focus();break;case 38:case 40:Mr.preventDefault();var ti=Mr.keyCode===40?1:-1;mr.daysContainer&&kr.$i!==void 0||kr===mr.input||kr===mr.altInput?Mr.ctrlKey?(Mr.stopPropagation(),xi(mr.currentYear-ti),hi(Jr(1),0)):ui||hi(void 0,ti*7):kr===mr.currentYearElement?xi(mr.currentYear-ti):mr.config.enableTime&&(!ui&&mr.hourElement&&mr.hourElement.focus(),Tr(Mr),mr._debouncedChange());break;case 9:if(ui){var li=[mr.hourElement,mr.minuteElement,mr.secondElement,mr.amPM].concat(mr.pluginElements).filter(function(un){return un}),wi=li.indexOf(kr);if(wi!==-1){var qn=li[wi+(Mr.shiftKey?-1:1)];Mr.preventDefault(),(qn||mr._input).focus()}}else!mr.config.noCalendar&&mr.daysContainer&&mr.daysContainer.contains(kr)&&Mr.shiftKey&&(Mr.preventDefault(),mr._input.focus());break;default:break}}if(mr.amPM!==void 0&&kr===mr.amPM)switch(Mr.key){case mr.l10n.amPM[0].charAt(0):case mr.l10n.amPM[0].charAt(0).toLowerCase():mr.amPM.textContent=mr.l10n.amPM[0],Cr(),Wn();break;case mr.l10n.amPM[1].charAt(0):case mr.l10n.amPM[1].charAt(0).toLowerCase():mr.amPM.textContent=mr.l10n.amPM[1],Cr(),Wn();break}(qr||ni(kr))&&Ti("onKeyDown",Mr)}function uo(Mr,kr){if(kr===void 0&&(kr="flatpickr-day"),!(mr.selectedDates.length!==1||Mr&&(!Mr.classList.contains(kr)||Mr.classList.contains("flatpickr-disabled")))){for(var qr=Mr?Mr.dateObj.getTime():mr.days.firstElementChild.dateObj.getTime(),Hr=mr.parseDate(mr.selectedDates[0],void 0,!0).getTime(),Vr=Math.min(qr,mr.selectedDates[0].getTime()),Gr=Math.max(qr,mr.selectedDates[0].getTime()),ui=!1,ri=0,fi=0,ti=Vr;tiVr&&tiri)?ri=ti:ti>Hr&&(!fi||ti ."+kr));li.forEach(function(wi){var qn=wi.dateObj,un=qn.getTime(),ra=ri>0&&un0&&un>fi;if(ra){wi.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(go){wi.classList.remove(go)});return}else if(ui&&!ra)return;["startRange","inRange","endRange","notAllowed"].forEach(function(go){wi.classList.remove(go)}),Mr!==void 0&&(Mr.classList.add(qr<=mr.selectedDates[0].getTime()?"startRange":"endRange"),Hrqr&&un===Hr&&wi.classList.add("endRange"),un>=ri&&(fi===0||un<=fi)&&Uw(un,Hr,qr)&&wi.classList.add("inRange"))})}}function tl(){mr.isOpen&&!mr.config.static&&!mr.config.inline&&fo()}function iu(Mr,kr){if(kr===void 0&&(kr=mr._positionElement),mr.isMobile===!0){if(Mr){Mr.preventDefault();var qr=ln(Mr);qr&&qr.blur()}mr.mobileInput!==void 0&&(mr.mobileInput.focus(),mr.mobileInput.click()),Ti("onOpen");return}else if(mr._input.disabled||mr.config.inline)return;var Hr=mr.isOpen;mr.isOpen=!0,Hr||(mr.calendarContainer.classList.add("open"),mr._input.classList.add("active"),Ti("onOpen"),fo(kr)),mr.config.enableTime===!0&&mr.config.noCalendar===!0&&mr.config.allowInput===!1&&(Mr===void 0||!mr.timeContainer.contains(Mr.relatedTarget))&&setTimeout(function(){return mr.hourElement.select()},50)}function rl(Mr){return function(kr){var qr=mr.config["_"+Mr+"Date"]=mr.parseDate(kr,mr.config.dateFormat),Hr=mr.config["_"+(Mr==="min"?"max":"min")+"Date"];qr!==void 0&&(mr[Mr==="min"?"minDateHasTime":"maxDateHasTime"]=qr.getHours()>0||qr.getMinutes()>0||qr.getSeconds()>0),mr.selectedDates&&(mr.selectedDates=mr.selectedDates.filter(function(Vr){return Si(Vr)}),!mr.selectedDates.length&&Mr==="min"&&Ar(qr),Wn()),mr.daysContainer&&(ea(),qr!==void 0?mr.currentYearElement[Mr]=qr.getFullYear().toString():mr.currentYearElement.removeAttribute(Mr),mr.currentYearElement.disabled=!!Hr&&qr!==void 0&&Hr.getFullYear()===qr.getFullYear())}}function il(){var Mr=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],kr=Qi(Qi({},JSON.parse(JSON.stringify(yr.dataset||{}))),br),qr={};mr.config.parseDate=kr.parseDate,mr.config.formatDate=kr.formatDate,Object.defineProperty(mr.config,"enable",{get:function(){return mr.config._enable},set:function(li){mr.config._enable=dh(li)}}),Object.defineProperty(mr.config,"disable",{get:function(){return mr.config._disable},set:function(li){mr.config._disable=dh(li)}});var Hr=kr.mode==="time";if(!kr.dateFormat&&(kr.enableTime||Hr)){var Vr=qi.defaultConfig.dateFormat||Ts.dateFormat;qr.dateFormat=kr.noCalendar||Hr?"H:i"+(kr.enableSeconds?":S":""):Vr+" H:i"+(kr.enableSeconds?":S":"")}if(kr.altInput&&(kr.enableTime||Hr)&&!kr.altFormat){var Gr=qi.defaultConfig.altFormat||Ts.altFormat;qr.altFormat=kr.noCalendar||Hr?"h:i"+(kr.enableSeconds?":S K":" K"):Gr+(" h:i"+(kr.enableSeconds?":S":"")+" K")}Object.defineProperty(mr.config,"minDate",{get:function(){return mr.config._minDate},set:rl("min")}),Object.defineProperty(mr.config,"maxDate",{get:function(){return mr.config._maxDate},set:rl("max")});var ui=function(li){return function(wi){mr.config[li==="min"?"_minTime":"_maxTime"]=mr.parseDate(wi,"H:i:S")}};Object.defineProperty(mr.config,"minTime",{get:function(){return mr.config._minTime},set:ui("min")}),Object.defineProperty(mr.config,"maxTime",{get:function(){return mr.config._maxTime},set:ui("max")}),kr.mode==="time"&&(mr.config.noCalendar=!0,mr.config.enableTime=!0),Object.assign(mr.config,qr,kr);for(var ri=0;ri-1?mr.config[ti]=qc(fi[ti]).map(xr).concat(mr.config[ti]):typeof kr[ti]=="undefined"&&(mr.config[ti]=fi[ti])}kr.altInputClass||(mr.config.altInputClass=Zo().className+" "+mr.config.altInputClass),Ti("onParseConfig")}function Zo(){return mr.config.wrap?yr.querySelector("[data-input]"):yr}function nl(){typeof mr.config.locale!="object"&&typeof qi.l10ns[mr.config.locale]=="undefined"&&mr.config.errorHandler(new Error("flatpickr: invalid locale "+mr.config.locale)),mr.l10n=Qi(Qi({},qi.l10ns.default),typeof mr.config.locale=="object"?mr.config.locale:mr.config.locale!=="default"?qi.l10ns[mr.config.locale]:void 0),as.D="("+mr.l10n.weekdays.shorthand.join("|")+")",as.l="("+mr.l10n.weekdays.longhand.join("|")+")",as.M="("+mr.l10n.months.shorthand.join("|")+")",as.F="("+mr.l10n.months.longhand.join("|")+")",as.K="("+mr.l10n.amPM[0]+"|"+mr.l10n.amPM[1]+"|"+mr.l10n.amPM[0].toLowerCase()+"|"+mr.l10n.amPM[1].toLowerCase()+")";var Mr=Qi(Qi({},br),JSON.parse(JSON.stringify(yr.dataset||{})));Mr.time_24hr===void 0&&qi.defaultConfig.time_24hr===void 0&&(mr.config.time_24hr=mr.l10n.time_24hr),mr.formatDate=rh(mr),mr.parseDate=Ic({config:mr.config,l10n:mr.l10n})}function fo(Mr){if(typeof mr.config.position=="function")return void mr.config.position(mr,Mr);if(mr.calendarContainer!==void 0){Ti("onPreCalendarPosition");var kr=Mr||mr._positionElement,qr=Array.prototype.reduce.call(mr.calendarContainer.children,function(I_,P_){return I_+P_.offsetHeight},0),Hr=mr.calendarContainer.offsetWidth,Vr=mr.config.position.split(" "),Gr=Vr[0],ui=Vr.length>1?Vr[1]:null,ri=kr.getBoundingClientRect(),fi=window.innerHeight-ri.bottom,ti=Gr==="above"||Gr!=="below"&&fiqr,li=window.pageYOffset+ri.top+(ti?-qr-2:kr.offsetHeight+2);if(Ji(mr.calendarContainer,"arrowTop",!ti),Ji(mr.calendarContainer,"arrowBottom",ti),!mr.config.inline){var wi=window.pageXOffset+ri.left,qn=!1,un=!1;ui==="center"?(wi-=(Hr-ri.width)/2,qn=!0):ui==="right"&&(wi-=Hr-ri.width,un=!0),Ji(mr.calendarContainer,"arrowLeft",!qn&&!un),Ji(mr.calendarContainer,"arrowCenter",qn),Ji(mr.calendarContainer,"arrowRight",un);var ra=window.document.body.offsetWidth-(window.pageXOffset+ri.right),go=wi+Hr>window.document.body.offsetWidth,C_=ra+Hr>window.document.body.offsetWidth;if(Ji(mr.calendarContainer,"rightMost",go),!mr.config.static)if(mr.calendarContainer.style.top=li+"px",!go)mr.calendarContainer.style.left=wi+"px",mr.calendarContainer.style.right="auto";else if(!C_)mr.calendarContainer.style.left="auto",mr.calendarContainer.style.right=ra+"px";else{var au=Vn();if(au===void 0)return;var L_=window.document.body.offsetWidth,M_=Math.max(0,L_/2-Hr/2),k_=".flatpickr-calendar.centerMost:before",R_=".flatpickr-calendar.centerMost:after",N_=au.cssRules.length,q_="{left:"+ri.left+"px;right:auto;}";Ji(mr.calendarContainer,"rightMost",!1),Ji(mr.calendarContainer,"centerMost",!0),au.insertRule(k_+","+R_+q_,N_),mr.calendarContainer.style.left=M_+"px",mr.calendarContainer.style.right="auto"}}}}function Vn(){for(var Mr=null,kr=0;krmr.currentMonth+mr.config.showMonths-1)&&mr.config.mode!=="range";if(mr.selectedDateElem=Hr,mr.config.mode==="single")mr.selectedDates=[Vr];else if(mr.config.mode==="multiple"){var ui=su(Vr);ui?mr.selectedDates.splice(parseInt(ui),1):mr.selectedDates.push(Vr)}else mr.config.mode==="range"&&(mr.selectedDates.length===2&&mr.clear(!1,!1),mr.latestSelectedDateObj=Vr,mr.selectedDates.push(Vr),cn(Vr,mr.selectedDates[0],!0)!==0&&mr.selectedDates.sort(function(li,wi){return li.getTime()-wi.getTime()}));if(Cr(),Gr){var ri=mr.currentYear!==Vr.getFullYear();mr.currentYear=Vr.getFullYear(),mr.currentMonth=Vr.getMonth(),ri&&(Ti("onYearChange"),Ei()),Ti("onMonthChange")}if(al(),_i(),Wn(),!Gr&&mr.config.mode!=="range"&&mr.config.showMonths===1?Xr(Hr):mr.selectedDateElem!==void 0&&mr.hourElement===void 0&&mr.selectedDateElem&&mr.selectedDateElem.focus(),mr.hourElement!==void 0&&mr.hourElement!==void 0&&mr.hourElement.focus(),mr.config.closeOnSelect){var fi=mr.config.mode==="single"&&!mr.config.enableTime,ti=mr.config.mode==="range"&&mr.selectedDates.length===2&&!mr.config.enableTime;(fi||ti)&&po()}Ir()}}var Ds={locale:[nl,Yi],showMonths:[Gi,Sr,Cn],minDate:[Br],maxDate:[Br],positionElement:[fh],clickOpens:[function(){mr.config.clickOpens===!0?(Nr(mr._input,"focus",mr.open),Nr(mr._input,"click",mr.open)):(mr._input.removeEventListener("focus",mr.open),mr._input.removeEventListener("click",mr.open))}]};function sl(Mr,kr){if(Mr!==null&&typeof Mr=="object"){Object.assign(mr.config,Mr);for(var qr in Mr)Ds[qr]!==void 0&&Ds[qr].forEach(function(Hr){return Hr()})}else mr.config[Mr]=kr,Ds[Mr]!==void 0?Ds[Mr].forEach(function(Hr){return Hr()}):kc.indexOf(Mr)>-1&&(mr.config[Mr]=qc(kr));mr.redraw(),Wn(!0)}function ta(Mr,kr){var qr=[];if(Mr instanceof Array)qr=Mr.map(function(Hr){return mr.parseDate(Hr,kr)});else if(Mr instanceof Date||typeof Mr=="number")qr=[mr.parseDate(Mr,kr)];else if(typeof Mr=="string")switch(mr.config.mode){case"single":case"time":qr=[mr.parseDate(Mr,kr)];break;case"multiple":qr=Mr.split(mr.config.conjunction).map(function(Hr){return mr.parseDate(Hr,kr)});break;case"range":qr=Mr.split(mr.l10n.rangeSeparator).map(function(Hr){return mr.parseDate(Hr,kr)});break;default:break}else mr.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(Mr)));mr.selectedDates=mr.config.allowInvalidPreload?qr:qr.filter(function(Hr){return Hr instanceof Date&&Si(Hr,!1)}),mr.config.mode==="range"&&mr.selectedDates.sort(function(Hr,Vr){return Hr.getTime()-Vr.getTime()})}function ol(Mr,kr,qr){if(kr===void 0&&(kr=!1),qr===void 0&&(qr=mr.config.dateFormat),Mr!==0&&!Mr||Mr instanceof Array&&Mr.length===0)return mr.clear(kr);ta(Mr,qr),mr.latestSelectedDateObj=mr.selectedDates[mr.selectedDates.length-1],mr.redraw(),Br(void 0,kr),Ar(),mr.selectedDates.length===0&&mr.clear(!1),Wn(kr),kr&&Ti("onChange")}function dh(Mr){return Mr.slice().map(function(kr){return typeof kr=="string"||typeof kr=="number"||kr instanceof Date?mr.parseDate(kr,void 0,!0):kr&&typeof kr=="object"&&kr.from&&kr.to?{from:mr.parseDate(kr.from,void 0),to:mr.parseDate(kr.to,void 0)}:kr}).filter(function(kr){return kr})}function __(){mr.selectedDates=[],mr.now=mr.parseDate(mr.config.now)||new Date;var Mr=mr.config.defaultDate||((mr.input.nodeName==="INPUT"||mr.input.nodeName==="TEXTAREA")&&mr.input.placeholder&&mr.input.value===mr.input.placeholder?null:mr.input.value);Mr&&ta(Mr,mr.config.dateFormat),mr._initialDate=mr.selectedDates.length>0?mr.selectedDates[0]:mr.config.minDate&&mr.config.minDate.getTime()>mr.now.getTime()?mr.config.minDate:mr.config.maxDate&&mr.config.maxDate.getTime()0&&(mr.latestSelectedDateObj=mr.selectedDates[0]),mr.config.minTime!==void 0&&(mr.config.minTime=mr.parseDate(mr.config.minTime,"H:i")),mr.config.maxTime!==void 0&&(mr.config.maxTime=mr.parseDate(mr.config.maxTime,"H:i")),mr.minDateHasTime=!!mr.config.minDate&&(mr.config.minDate.getHours()>0||mr.config.minDate.getMinutes()>0||mr.config.minDate.getSeconds()>0),mr.maxDateHasTime=!!mr.config.maxDate&&(mr.config.maxDate.getHours()>0||mr.config.maxDate.getMinutes()>0||mr.config.maxDate.getSeconds()>0)}function x_(){if(mr.input=Zo(),!mr.input){mr.config.errorHandler(new Error("Invalid input element specified"));return}mr.input._type=mr.input.type,mr.input.type="text",mr.input.classList.add("flatpickr-input"),mr._input=mr.input,mr.config.altInput&&(mr.altInput=gi(mr.input.nodeName,mr.config.altInputClass),mr._input=mr.altInput,mr.altInput.placeholder=mr.input.placeholder,mr.altInput.disabled=mr.input.disabled,mr.altInput.required=mr.input.required,mr.altInput.tabIndex=mr.input.tabIndex,mr.altInput.type="text",mr.input.setAttribute("type","hidden"),!mr.config.static&&mr.input.parentNode&&mr.input.parentNode.insertBefore(mr.altInput,mr.input.nextSibling)),mr.config.allowInput||mr._input.setAttribute("readonly","readonly"),fh()}function fh(){mr._positionElement=mr.config.positionElement||mr._input}function S_(){var Mr=mr.config.enableTime?mr.config.noCalendar?"time":"datetime-local":"date";mr.mobileInput=gi("input",mr.input.className+" flatpickr-mobile"),mr.mobileInput.tabIndex=1,mr.mobileInput.type=Mr,mr.mobileInput.disabled=mr.input.disabled,mr.mobileInput.required=mr.input.required,mr.mobileInput.placeholder=mr.input.placeholder,mr.mobileFormatStr=Mr==="datetime-local"?"Y-m-d\\TH:i:S":Mr==="date"?"Y-m-d":"H:i:S",mr.selectedDates.length>0&&(mr.mobileInput.defaultValue=mr.mobileInput.value=mr.formatDate(mr.selectedDates[0],mr.mobileFormatStr)),mr.config.minDate&&(mr.mobileInput.min=mr.formatDate(mr.config.minDate,"Y-m-d")),mr.config.maxDate&&(mr.mobileInput.max=mr.formatDate(mr.config.maxDate,"Y-m-d")),mr.input.getAttribute("step")&&(mr.mobileInput.step=String(mr.input.getAttribute("step"))),mr.input.type="hidden",mr.altInput!==void 0&&(mr.altInput.type="hidden");try{mr.input.parentNode&&mr.input.parentNode.insertBefore(mr.mobileInput,mr.input.nextSibling)}catch(kr){}Nr(mr.mobileInput,"change",function(kr){mr.setDate(ln(kr).value,!1,mr.mobileFormatStr),Ti("onChange"),Ti("onClose")})}function T_(Mr){if(mr.isOpen===!0)return mr.close();mr.open(Mr)}function Ti(Mr,kr){if(mr.config!==void 0){var qr=mr.config[Mr];if(qr!==void 0&&qr.length>0)for(var Hr=0;qr[Hr]&&Hr=0&&cn(Mr,mr.selectedDates[1])<=0}function al(){mr.config.noCalendar||mr.isMobile||!mr.monthNav||(mr.yearElements.forEach(function(Mr,kr){var qr=new Date(mr.currentYear,mr.currentMonth,1);qr.setMonth(mr.currentMonth+kr),mr.config.showMonths>1||mr.config.monthSelectorType==="static"?mr.monthElements[kr].textContent=Ja(qr.getMonth(),mr.config.shorthandCurrentMonth,mr.l10n)+" ":mr.monthsDropdownContainer.value=qr.getMonth().toString(),Mr.value=qr.getFullYear().toString()}),mr._hidePrevMonthArrow=mr.config.minDate!==void 0&&(mr.currentYear===mr.config.minDate.getFullYear()?mr.currentMonth<=mr.config.minDate.getMonth():mr.currentYearmr.config.maxDate.getMonth():mr.currentYear>mr.config.maxDate.getFullYear()))}function ou(Mr){var kr=Mr||(mr.config.altInput?mr.config.altFormat:mr.config.dateFormat);return mr.selectedDates.map(function(qr){return mr.formatDate(qr,kr)}).filter(function(qr,Hr,Vr){return mr.config.mode!=="range"||mr.config.enableTime||Vr.indexOf(qr)===Hr}).join(mr.config.mode!=="range"?mr.config.conjunction:mr.l10n.rangeSeparator)}function Wn(Mr){Mr===void 0&&(Mr=!0),mr.mobileInput!==void 0&&mr.mobileFormatStr&&(mr.mobileInput.value=mr.latestSelectedDateObj!==void 0?mr.formatDate(mr.latestSelectedDateObj,mr.mobileFormatStr):""),mr.input.value=ou(mr.config.dateFormat),mr.altInput!==void 0&&(mr.altInput.value=ou(mr.config.altFormat)),Mr!==!1&&Ti("onValueUpdate")}function D_(Mr){var kr=ln(Mr),qr=mr.prevMonthNav.contains(kr),Hr=mr.nextMonthNav.contains(kr);qr||Hr?ei(qr?-1:1):mr.yearElements.indexOf(kr)>=0?kr.select():kr.classList.contains("arrowUp")?mr.changeYear(mr.currentYear+1):kr.classList.contains("arrowDown")&&mr.changeYear(mr.currentYear-1)}function A_(Mr){Mr.preventDefault();var kr=Mr.type==="keydown",qr=ln(Mr),Hr=qr;mr.amPM!==void 0&&qr===mr.amPM&&(mr.amPM.textContent=mr.l10n.amPM[an(mr.amPM.textContent===mr.l10n.amPM[0])]);var Vr=parseFloat(Hr.getAttribute("min")),Gr=parseFloat(Hr.getAttribute("max")),ui=parseFloat(Hr.getAttribute("step")),ri=parseInt(Hr.value,10),fi=Mr.delta||(kr?Mr.which===38?1:-1:0),ti=ri+ui*fi;if(typeof Hr.value!="undefined"&&Hr.value.length===2){var li=Hr===mr.hourElement,wi=Hr===mr.minuteElement;tiGr&&(ti=Hr===mr.hourElement?ti-Gr-an(!mr.amPM):Vr,wi&&Ur(void 0,1,mr.hourElement)),mr.amPM&&li&&(ui===1?ti+ri===23:Math.abs(ti-ri)>ui)&&(mr.amPM.textContent=mr.l10n.amPM[an(mr.amPM.textContent===mr.l10n.amPM[0])]),Hr.value=Xi(ti)}}return wr(),mr}function Vo(yr,br){for(var mr=Array.prototype.slice.call(yr).filter(function(xr){return xr instanceof HTMLElement}),Er=[],wr=0;wr option"))if(br.selected){for(let mr of Wr("#id_columns"))mr.appendChild(br.cloneNode(!0));br.remove()}yr.preventDefault()}function YN(yr){for(let br of Wr("#id_columns > option"))if(br.selected){for(let mr of Wr("#id_available_columns"))mr.appendChild(br.cloneNode(!0));br.remove()}yr.preventDefault()}function Kw(yr,br){return $i(this,null,function*(){return yield jo(yr,br)})}function KN(yr){var Tr,Or,Dr;yr.preventDefault();let br=yr.currentTarget,mr=br.getAttribute("data-url");if(mr==null){Un("danger","Error Updating Table Configuration","No API path defined for configuration form.").show();return}let Er=((Tr=document.activeElement)==null?void 0:Tr.getAttribute("value"))==="Reset",wr=(Dr=(Or=br.getAttribute("data-config-root"))==null?void 0:Or.split("."))!=null?Dr:[];if(Er){let Cr=wr.reduceRight((Ar,Lr)=>({[Lr]:Ar}),{});Kw(mr,Cr).then(Ar=>{ns(Ar)?Un("danger","Error Resetting Table Configuration",Ar.error).show():location.reload()});return}let _r=bE(br,"select[name=columns]"),xr=Object.assign({},..._r.map(Cr=>({[Cr.name]:Cr.options}))),Sr=wr.reduceRight((Cr,Ar)=>({[Ar]:Cr}),xr);Kw(mr,Sr).then(Cr=>{ns(Cr)?Un("danger","Error Updating Table Configuration",Cr.error).show():location.reload()})}function Xw(){for(let yr of Wr("#save_tableconfig"))yr.addEventListener("click",WN);for(let yr of Wr("#add_columns"))yr.addEventListener("click",GN);for(let yr of Wr("#remove_columns"))yr.addEventListener("click",YN);for(let yr of Wr("form.userconfigform"))yr.addEventListener("submit",KN)}function Jw(yr){return typeof yr=="string"&&["show","hide"].includes(yr)}var Wo=class extends Error{constructor(br,mr){super(br);di(this,"table");this.table=mr}},Qa=class{constructor(br,mr){di(this,"button");di(this,"rows");this.button=br,this.rows=mr}hideRows(){for(let br of this.rows)br.classList.add("d-none")}set buttonState(br){Jw(br)&&this.button.setAttribute("data-state",br)}get buttonState(){let br=this.button.getAttribute("data-state");return Jw(br)?br:null}toggleButton(){this.buttonState==="show"?this.button.innerText=_s(this.button.innerText,"Show","Hide"):this.buttonState==="hide"&&(this.button.innerText=_s(this.button.innerHTML,"Hide","Show"))}toggleState(){this.buttonState==="show"?this.buttonState="hide":this.buttonState==="hide"&&(this.buttonState="show")}toggle(){this.toggleState(),this.toggleButton()}handleClick(br){br.currentTarget.isEqualNode(this.button)&&this.toggle(),this.buttonState==="hide"&&this.hideRows()}},Qw=class{constructor(br){di(this,"table");di(this,"enabledButton");di(this,"disabledButton");di(this,"virtualButton");di(this,"disconnectedButton");di(this,"rows");this.table=br,this.rows=this.table.querySelectorAll("tr");try{let mr=ss(this.table,"button.toggle-enabled"),Er=ss(this.table,"button.toggle-disabled"),wr=ss(this.table,"button.toggle-virtual"),_r=ss(this.table,"button.toggle-disconnected");if(mr===null)throw new Wo("Table is missing a 'toggle-enabled' button.",br);if(Er===null)throw new Wo("Table is missing a 'toggle-disabled' button.",br);if(wr===null)throw new Wo("Table is missing a 'toggle-virtual' button.",br);if(_r===null)throw new Wo("Table is missing a 'toggle-disconnected' button.",br);mr.addEventListener("click",xr=>this.handleClick(xr,this)),Er.addEventListener("click",xr=>this.handleClick(xr,this)),wr.addEventListener("click",xr=>this.handleClick(xr,this)),_r.addEventListener("click",xr=>this.handleClick(xr,this)),this.enabledButton=new Qa(mr,br.querySelectorAll('tr[data-enabled="enabled"]')),this.disabledButton=new Qa(Er,br.querySelectorAll('tr[data-enabled="disabled"]')),this.virtualButton=new Qa(wr,br.querySelectorAll('tr[data-type="virtual"]')),this.disconnectedButton=new Qa(_r,br.querySelectorAll('tr[data-connected="disconnected"]'))}catch(mr){if(mr instanceof Wo){console.debug("Table does not contain enable/disable toggle buttons");return}else throw mr}}handleClick(br,mr){for(let Er of this.rows)Er.classList.remove("d-none");mr.enabledButton.handleClick(br),mr.disabledButton.handleClick(br),mr.virtualButton.handleClick(br),mr.disconnectedButton.handleClick(br)}};function Zw(){for(let yr of Wr("table"))new Qw(yr)}var e_=class{constructor(br){di(this,"base");di(this,"state");di(this,"activeLink",null);di(this,"sections",[]);this.base=br,this.state=new Lc({pinned:!0},{persist:!0,key:"netbox-sidenav"}),this.init(),this.initSectionLinks(),this.initLinks()}bodyHas(br){return document.body.hasAttribute(`data-sidenav-${br}`)}bodyRemove(...br){for(let mr of br)document.body.removeAttribute(`data-sidenav-${mr}`)}bodyAdd(...br){for(let mr of br)document.body.setAttribute(`data-sidenav-${mr}`,"")}init(){for(let br of this.base.querySelectorAll(".sidenav-toggle"))br.addEventListener("click",mr=>this.onToggle(mr));for(let br of Wr(".sidenav-toggle-mobile"))br.addEventListener("click",mr=>this.onMobileToggle(mr));window.innerWidth>1200&&(this.state.get("pinned")&&this.pin(),this.state.get("pinned")||this.unpin(),window.addEventListener("resize",()=>this.onResize())),window.innerWidth<1200&&(this.bodyRemove("hide"),this.bodyAdd("hidden"),window.addEventListener("resize",()=>this.onResize())),this.base.addEventListener("mouseenter",()=>this.onEnter()),this.base.addEventListener("mouseleave",()=>this.onLeave())}initLinks(){for(let br of this.getActiveLinks())this.bodyHas("show")?this.activateLink(br,"expand"):this.bodyHas("hidden")&&this.activateLink(br,"collapse")}show(){this.bodyAdd("show"),this.bodyRemove("hidden","hide")}hide(){this.bodyAdd("hidden"),this.bodyRemove("pinned","show");for(let br of this.base.querySelectorAll(".collapse"))br.classList.remove("show")}pin(){this.bodyAdd("show","pinned"),this.bodyRemove("hidden"),this.state.set("pinned",!0)}unpin(){this.bodyRemove("pinned","show"),this.bodyAdd("hidden");for(let br of this.base.querySelectorAll(".collapse"))br.classList.remove("show");this.state.set("pinned",!1)}handleSectionClick(br){br.preventDefault();let mr=br.target;this.activeLink=mr,this.closeInactiveSections()}closeInactiveSections(){for(let[br,mr]of this.sections)br!==this.activeLink&&(br.classList.add("collapsed"),br.setAttribute("aria-expanded","false"),mr.hide())}initSectionLinks(){for(let br of Wr(".navbar-nav .nav-item .nav-link[data-bs-toggle]"))if(br.parentElement!==null){let mr=br.parentElement.querySelector(".collapse");if(mr!==null){let Er=new sn(mr,{toggle:!1});this.sections.push([br,Er]),br.addEventListener("click",wr=>this.handleSectionClick(wr))}}}activateLink(br,mr){var wr;let Er=br.closest(".collapse");if(qf(Er)){let _r=(wr=Er.parentElement)==null?void 0:wr.querySelector(".nav-link");if(qf(_r))switch(_r.classList.add("active"),mr){case"expand":_r.setAttribute("aria-expanded","true"),Er.classList.add("show"),br.classList.add("active");break;case"collapse":_r.setAttribute("aria-expanded","false"),Er.classList.remove("show"),br.classList.remove("active");break}}}*getActiveLinks(){for(let br of this.base.querySelectorAll(".navbar-nav .nav .nav-item a.nav-link")){let mr=new RegExp(br.href,"gi");window.location.href.match(mr)&&(yield br)}}onEnter(){if(!this.bodyHas("pinned")){this.bodyRemove("hide","hidden"),this.bodyAdd("show");for(let br of this.getActiveLinks())this.activateLink(br,"expand")}}onLeave(){if(!this.bodyHas("pinned")){this.bodyRemove("show"),this.bodyAdd("hide");for(let br of this.getActiveLinks())this.activateLink(br,"collapse");this.bodyRemove("hide"),this.bodyAdd("hidden")}}onResize(){this.bodyHas("show")&&!this.bodyHas("pinned")&&(this.bodyRemove("show"),this.bodyAdd("hidden"))}onToggle(br){br.preventDefault(),this.state.get("pinned")?this.unpin():this.pin()}onMobileToggle(br){br.preventDefault(),this.bodyHas("hidden")?this.show():this.hide()}};function t_(){for(let yr of Wr(".sidenav"))new e_(yr)}var h_=vn(f_());function bq(){let yr=document.getElementById("dashboard");yr&&yr.gridstack.disable()}function yq(){let yr=document.getElementById("dashboard");yr&&yr.gridstack.enable()}function Eq(yr,br){return $i(this,null,function*(){return yield jo(yr,{layout:br})})}function p_(){if(document.getElementById("dashboard")==null)return;let br=h_.GridStack.init({cellHeight:100,disableDrag:!0,disableResize:!0,draggable:{handle:".grid-stack-item-content .card-header",appendTo:"body",scroll:!0}}),mr=document.getElementById("lock_dashboard");mr&&mr.addEventListener("click",()=>{bq()});let Er=document.getElementById("unlock_dashboard");Er&&Er.addEventListener("click",()=>{yq()});let wr=document.getElementById("save_dashboard");wr!==null&&wr.addEventListener("click",()=>{let _r=wr.getAttribute("data-url");if(_r==null)return;let xr=br.save(!1);Eq(_r,xr).then(Sr=>{ns(Sr)?Un("danger","Error Saving Dashboard Config",Sr.error).show():location.reload()})})}function m_(yr,br){switch(yr){case"images-and-labels":{ch("image.device-image",br),ch("text.device-image-label",br);break}case"images-only":{ch("image.device-image",br),uh("text.device-image-label",br);break}case"labels-only":{uh("image.device-image",br),uh("text.device-image-label",br);break}}}function ch(yr,br){var Er,wr;let mr=(wr=(Er=br.contentDocument)==null?void 0:Er.querySelectorAll(yr))!=null?wr:[];for(let _r of mr)_r.classList.remove("hidden")}function uh(yr,br){var Er,wr;let mr=(wr=(Er=br.contentDocument)==null?void 0:Er.querySelectorAll(yr))!=null?wr:[];for(let _r of mr)_r.classList.add("hidden")}function wq(yr,br){br.set("view",yr);for(let mr of Wr(".rack_elevation"))m_(yr,mr)}function g_(){let yr=Jf.get("view");for(let br of Wr("select.rack-view"))br.selectedIndex=[...br.options].findIndex(mr=>mr.value==yr),br.addEventListener("change",mr=>{wq(mr.currentTarget.value,Jf)},!1);for(let br of Wr(".rack_elevation"))br.addEventListener("load",()=>{m_(yr,br)})}function v_(){for(let yr of Wr("*[data-href]")){let br=yr.getAttribute("data-href");mi(br)&&yr.addEventListener("click",()=>{window.location.assign(br)})}}function _q(yr){let br=document.getElementById("selector_results");if(br==null)return;let mr=br.getAttribute("data-selector-target");if(mr==null)return;let Er=document.getElementById(mr);if(Er==null)return;let wr=yr.getAttribute("data-label"),_r=yr.getAttribute("data-value");Er.slim.setData([{text:wr,value:_r}]);let xr=new Event("change");Er.dispatchEvent(xr)}function b_(){for(let yr of Wr("#selector_results a"))yr.addEventListener("click",()=>_q(yr))}function y_(){for(let yr of[Mc,Cc,b_,Oc])yr()}function E_(){for(let yr of Wr("[hx-target]")){let br=yr.getAttribute("hx-target");if(mi(br))for(let mr of Wr(br))mr.addEventListener("htmx:afterSettle",y_)}for(let yr of Wr("[hx-trigger=load]"))yr.addEventListener("htmx:afterSettle",y_)}function w_(){for(let yr of[Oc,jw,Hw,OE,AE,Cc,Yw,Mc,zw,Xw,Zw,t_,p_,g_,v_,E_])yr()}function xq(){let yr=document.forms;for(let mr of yr)mr.method.toUpperCase()=="GET"&&mr.addEventListener("formdata",function(Er){let wr=Er.formData;for(let[_r,xr]of Array.from(wr.entries()))xr===""&&wr.delete(_r)});let br=document.querySelector(".content-container");br!==null&&br.focus()}window.addEventListener("load",xq);document.readyState!=="loading"?w_():document.addEventListener("DOMContentLoaded",w_);})(); /*! * Bootstrap v5.0.2 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index 7f2400ed2..bbb2a3cc0 100644 --- a/netbox/project-static/dist/netbox.js.map +++ b/netbox/project-static/dist/netbox.js.map @@ -1,6 +1,6 @@ { "version": 3, "sources": ["../node_modules/htmx.org/dist/htmx.min.js", "../node_modules/core-js/internals/global.js", "../node_modules/core-js/internals/is-pure.js", "../node_modules/core-js/internals/set-global.js", "../node_modules/core-js/internals/shared-store.js", "../node_modules/core-js/internals/shared.js", "../node_modules/core-js/internals/require-object-coercible.js", "../node_modules/core-js/internals/to-object.js", "../node_modules/core-js/internals/has.js", "../node_modules/core-js/internals/uid.js", "../node_modules/core-js/internals/get-built-in.js", "../node_modules/core-js/internals/engine-user-agent.js", "../node_modules/core-js/internals/engine-v8-version.js", "../node_modules/core-js/internals/fails.js", "../node_modules/core-js/internals/native-symbol.js", "../node_modules/core-js/internals/use-symbol-as-uid.js", "../node_modules/core-js/internals/well-known-symbol.js", "../node_modules/core-js/internals/to-string-tag-support.js", "../node_modules/core-js/internals/descriptors.js", "../node_modules/core-js/internals/is-object.js", "../node_modules/core-js/internals/document-create-element.js", "../node_modules/core-js/internals/ie8-dom-define.js", "../node_modules/core-js/internals/an-object.js", "../node_modules/core-js/internals/is-symbol.js", "../node_modules/core-js/internals/ordinary-to-primitive.js", "../node_modules/core-js/internals/to-primitive.js", "../node_modules/core-js/internals/to-property-key.js", "../node_modules/core-js/internals/object-define-property.js", "../node_modules/core-js/internals/create-property-descriptor.js", "../node_modules/core-js/internals/create-non-enumerable-property.js", "../node_modules/core-js/internals/inspect-source.js", "../node_modules/core-js/internals/native-weak-map.js", "../node_modules/core-js/internals/shared-key.js", "../node_modules/core-js/internals/hidden-keys.js", "../node_modules/core-js/internals/internal-state.js", "../node_modules/core-js/internals/redefine.js", "../node_modules/core-js/internals/classof-raw.js", "../node_modules/core-js/internals/classof.js", "../node_modules/core-js/internals/object-to-string.js", "../node_modules/core-js/internals/dom-iterables.js", "../node_modules/core-js/internals/a-function.js", "../node_modules/core-js/internals/function-bind-context.js", "../node_modules/core-js/internals/indexed-object.js", "../node_modules/core-js/internals/to-integer.js", "../node_modules/core-js/internals/to-length.js", "../node_modules/core-js/internals/is-array.js", "../node_modules/core-js/internals/array-species-constructor.js", "../node_modules/core-js/internals/array-species-create.js", "../node_modules/core-js/internals/array-iteration.js", "../node_modules/core-js/internals/array-method-is-strict.js", "../node_modules/core-js/internals/array-for-each.js", "../node_modules/can-use-dom/index.js", "../node_modules/core-js/internals/object-property-is-enumerable.js", "../node_modules/core-js/internals/to-indexed-object.js", "../node_modules/core-js/internals/object-get-own-property-descriptor.js", "../node_modules/core-js/internals/to-absolute-index.js", "../node_modules/core-js/internals/array-includes.js", "../node_modules/core-js/internals/object-keys-internal.js", "../node_modules/core-js/internals/enum-bug-keys.js", "../node_modules/core-js/internals/object-get-own-property-names.js", "../node_modules/core-js/internals/object-get-own-property-symbols.js", "../node_modules/core-js/internals/own-keys.js", "../node_modules/core-js/internals/copy-constructor-properties.js", "../node_modules/core-js/internals/is-forced.js", "../node_modules/core-js/internals/export.js", "../node_modules/core-js/internals/to-string.js", "../node_modules/core-js/internals/whitespaces.js", "../node_modules/core-js/internals/string-trim.js", "../node_modules/core-js/internals/number-parse-int.js", "../node_modules/core-js/internals/object-keys.js", "../node_modules/core-js/internals/object-assign.js", "../node_modules/core-js/internals/array-method-has-species-support.js", "../node_modules/core-js/internals/object-define-properties.js", "../node_modules/core-js/internals/html.js", "../node_modules/core-js/internals/object-create.js", "../node_modules/core-js/internals/add-to-unscopables.js", "../node_modules/core-js/internals/iterators.js", "../node_modules/core-js/internals/correct-prototype-getter.js", "../node_modules/core-js/internals/object-get-prototype-of.js", "../node_modules/core-js/internals/iterators-core.js", "../node_modules/core-js/internals/set-to-string-tag.js", "../node_modules/core-js/internals/create-iterator-constructor.js", "../node_modules/core-js/internals/a-possible-prototype.js", "../node_modules/core-js/internals/object-set-prototype-of.js", "../node_modules/core-js/internals/define-iterator.js", "../node_modules/core-js/modules/es.array.iterator.js", "../node_modules/core-js/internals/string-multibyte.js", "../node_modules/core-js/internals/redefine-all.js", "../node_modules/core-js/internals/object-get-own-property-names-external.js", "../node_modules/core-js/internals/freezing.js", "../node_modules/core-js/internals/internal-metadata.js", "../node_modules/core-js/internals/is-array-iterator-method.js", "../node_modules/core-js/internals/get-iterator-method.js", "../node_modules/core-js/internals/get-iterator.js", "../node_modules/core-js/internals/iterator-close.js", "../node_modules/core-js/internals/iterate.js", "../node_modules/core-js/internals/an-instance.js", "../node_modules/core-js/internals/check-correctness-of-iteration.js", "../node_modules/core-js/internals/inherit-if-required.js", "../node_modules/core-js/internals/collection.js", "../node_modules/core-js/internals/collection-weak.js", "../node_modules/core-js/modules/es.weak-map.js", "../node_modules/lodash.throttle/index.js", "../node_modules/lodash.debounce/index.js", "../node_modules/lodash.memoize/index.js", "../node_modules/core-js/internals/array-reduce.js", "../node_modules/core-js/internals/engine-is-node.js", "../node_modules/core-js/internals/regexp-flags.js", "../node_modules/core-js/internals/regexp-sticky-helpers.js", "../node_modules/core-js/internals/regexp-unsupported-dot-all.js", "../node_modules/core-js/internals/regexp-unsupported-ncg.js", "../node_modules/core-js/internals/regexp-exec.js", "../node_modules/core-js/modules/es.regexp.exec.js", "../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "../node_modules/core-js/internals/advance-string-index.js", "../node_modules/core-js/internals/regexp-exec-abstract.js", "../node_modules/core-js/internals/get-substitution.js", "../node_modules/html-entities/lib/named-references.js", "../node_modules/html-entities/lib/numeric-unicode-map.js", "../node_modules/html-entities/lib/surrogate-pairs.js", "../node_modules/html-entities/lib/index.js", "../node_modules/strict-uri-encode/index.js", "../node_modules/decode-uri-component/index.js", "../node_modules/split-on-first/index.js", "../node_modules/filter-obj/index.js", "../node_modules/query-string/index.js", "../node_modules/clipboard/dist/clipboard.js", "../node_modules/gridstack/src/utils.ts", "../node_modules/gridstack/src/gridstack-engine.ts", "../node_modules/gridstack/src/types.ts", "../node_modules/gridstack/src/dd-manager.ts", "../node_modules/gridstack/src/dd-touch.ts", "../node_modules/gridstack/src/dd-resizable-handle.ts", "../node_modules/gridstack/src/dd-base-impl.ts", "../node_modules/gridstack/src/dd-resizable.ts", "../node_modules/gridstack/src/dd-draggable.ts", "../node_modules/gridstack/src/dd-droppable.ts", "../node_modules/gridstack/src/dd-element.ts", "../node_modules/gridstack/src/dd-gridstack.ts", "../node_modules/gridstack/src/gridstack.ts", "../node_modules/@popperjs/core/lib/index.js", "../node_modules/@popperjs/core/lib/enums.js", "../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js", "../node_modules/@popperjs/core/lib/dom-utils/getWindow.js", "../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js", "../node_modules/@popperjs/core/lib/modifiers/applyStyles.js", "../node_modules/@popperjs/core/lib/utils/getBasePlacement.js", "../node_modules/@popperjs/core/lib/utils/math.js", "../node_modules/@popperjs/core/lib/utils/userAgent.js", "../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js", "../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js", "../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js", "../node_modules/@popperjs/core/lib/dom-utils/contains.js", "../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js", "../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js", "../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js", "../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js", "../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js", "../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js", "../node_modules/@popperjs/core/lib/utils/within.js", "../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js", "../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js", "../node_modules/@popperjs/core/lib/utils/expandToHashMap.js", "../node_modules/@popperjs/core/lib/modifiers/arrow.js", "../node_modules/@popperjs/core/lib/utils/getVariation.js", "../node_modules/@popperjs/core/lib/modifiers/computeStyles.js", "../node_modules/@popperjs/core/lib/modifiers/eventListeners.js", "../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js", "../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js", "../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js", "../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js", "../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js", "../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js", "../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js", "../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js", "../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js", "../node_modules/@popperjs/core/lib/utils/rectToClientRect.js", "../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js", "../node_modules/@popperjs/core/lib/utils/computeOffsets.js", "../node_modules/@popperjs/core/lib/utils/detectOverflow.js", "../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js", "../node_modules/@popperjs/core/lib/modifiers/flip.js", "../node_modules/@popperjs/core/lib/modifiers/hide.js", "../node_modules/@popperjs/core/lib/modifiers/offset.js", "../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js", "../node_modules/@popperjs/core/lib/utils/getAltAxis.js", "../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js", "../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js", "../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js", "../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js", "../node_modules/@popperjs/core/lib/utils/orderModifiers.js", "../node_modules/@popperjs/core/lib/utils/debounce.js", "../node_modules/@popperjs/core/lib/utils/mergeByName.js", "../node_modules/@popperjs/core/lib/createPopper.js", "../node_modules/@popperjs/core/lib/popper-lite.js", "../node_modules/@popperjs/core/lib/popper.js", "../node_modules/bootstrap/js/src/dom/selector-engine.js", "../node_modules/bootstrap/js/src/util/index.js", "../node_modules/bootstrap/js/src/dom/event-handler.js", "../node_modules/bootstrap/js/src/dom/data.js", "../node_modules/bootstrap/js/src/base-component.js", "../node_modules/bootstrap/js/src/alert.js", "../node_modules/bootstrap/js/src/button.js", "../node_modules/bootstrap/js/src/dom/manipulator.js", "../node_modules/bootstrap/js/src/carousel.js", "../node_modules/bootstrap/js/src/collapse.js", "../node_modules/bootstrap/js/src/dropdown.js", "../node_modules/bootstrap/js/src/util/scrollbar.js", "../node_modules/bootstrap/js/src/util/backdrop.js", "../node_modules/bootstrap/js/src/modal.js", "../node_modules/bootstrap/js/src/offcanvas.js", "../node_modules/bootstrap/js/src/util/sanitizer.js", "../node_modules/bootstrap/js/src/tooltip.js", "../node_modules/bootstrap/js/src/popover.js", "../node_modules/bootstrap/js/src/scrollspy.js", "../node_modules/bootstrap/js/src/tab.js", "../node_modules/bootstrap/js/src/toast.js", "../src/index.ts", "../node_modules/core-js/modules/es.object.to-string.js", "../node_modules/core-js/modules/web.dom-collections.for-each.js", "../node_modules/core-js/modules/es.parse-int.js", "../node_modules/core-js/modules/es.object.assign.js", "../node_modules/core-js/modules/es.array.filter.js", "../node_modules/core-js/modules/es.string.iterator.js", "../node_modules/core-js/modules/web.dom-collections.iterator.js", "../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js", "../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js", "../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js", "../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js", "../node_modules/@juggle/resize-observer/lib/utils/freeze.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js", "../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js", "../node_modules/@juggle/resize-observer/lib/utils/element.js", "../node_modules/@juggle/resize-observer/lib/utils/global.js", "../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js", "../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js", "../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js", "../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js", "../node_modules/@juggle/resize-observer/lib/utils/process.js", "../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js", "../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js", "../node_modules/@juggle/resize-observer/lib/utils/scheduler.js", "../node_modules/@juggle/resize-observer/lib/ResizeObservation.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js", "../node_modules/@juggle/resize-observer/lib/ResizeObserver.js", "../node_modules/core-js/modules/es.array.reduce.js", "../node_modules/core-js/modules/es.string.match.js", "../node_modules/core-js/modules/es.function.name.js", "../node_modules/core-js/modules/es.string.replace.js", "../node_modules/simplebar/src/helpers.js", "../node_modules/simplebar/src/scrollbar-width.js", "../node_modules/simplebar/src/simplebar.js", "../node_modules/simplebar/src/index.js", "../src/util.ts", "../src/forms/elements.ts", "../src/forms/speedSelector.ts", "../src/forms/scopeSelector.ts", "../src/forms/index.ts", "../src/bs.ts", "../src/search.ts", "../node_modules/color2k/src/guard.ts", "../node_modules/color2k/src/ColorError.ts", "../node_modules/color2k/src/parseToRgba.ts", "../node_modules/color2k/src/parseToHsla.ts", "../node_modules/color2k/src/hsla.ts", "../node_modules/color2k/src/adjustHue.ts", "../node_modules/color2k/src/darken.ts", "../node_modules/color2k/src/desaturate.ts", "../node_modules/color2k/src/getLuminance.ts", "../node_modules/color2k/src/getContrast.ts", "../node_modules/color2k/src/rgba.ts", "../node_modules/color2k/src/mix.ts", "../node_modules/color2k/src/getScale.ts", "../node_modules/color2k/src/hasBadContrast.ts", "../node_modules/color2k/src/lighten.ts", "../node_modules/color2k/src/transparentize.ts", "../node_modules/color2k/src/opacify.ts", "../node_modules/color2k/src/readableColorIsBlack.ts", "../node_modules/color2k/src/readableColor.ts", "../node_modules/color2k/src/saturate.ts", "../node_modules/color2k/src/toHex.ts", "../node_modules/color2k/src/toRgba.ts", "../node_modules/color2k/src/toHsla.ts", "../node_modules/just-debounce-it/index.mjs", "../src/select/api/apiSelect.ts", "../node_modules/slim-select/dist/slimselect.min.mjs", "../src/select/util.ts", "../src/select/api/types.ts", "../src/select/api/dynamicParams.ts", "../src/select/api/index.ts", "../src/select/color.ts", "../src/select/static.ts", "../src/select/index.ts", "../src/buttons/connectionToggle.ts", "../src/state/index.ts", "../src/stores/objectDepth.ts", "../src/stores/rackImages.ts", "../src/stores/previousPkCheck.ts", "../src/stores/secret.ts", "../src/buttons/depthToggle.ts", "../src/buttons/moveOptions.ts", "../src/buttons/reslug.ts", "../src/buttons/selectAll.ts", "../src/buttons/selectMultiple.ts", "../src/buttons/markdownPreview.ts", "../src/buttons/secretToggle.ts", "../src/buttons/index.ts", "../src/colorMode.ts", "../src/messages.ts", "../src/clipboard.ts", "../node_modules/flatpickr/dist/esm/types/options.js", "../node_modules/flatpickr/dist/esm/l10n/default.js", "../node_modules/flatpickr/dist/esm/utils/index.js", "../node_modules/flatpickr/dist/esm/utils/dom.js", "../node_modules/flatpickr/dist/esm/utils/formatting.js", "../node_modules/flatpickr/dist/esm/utils/dates.js", "../node_modules/flatpickr/dist/esm/utils/polyfills.js", "../node_modules/flatpickr/dist/esm/index.js", "../src/dateSelector.ts", "../src/tableConfig.ts", "../src/tables/interfaceTable.ts", "../src/sidenav.ts", "../src/dashboard.ts", "../src/racks.ts", "../src/links.ts", "../src/objectSelector.ts", "../src/htmx.ts", "../src/netbox.ts"], - "mappings": "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AAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,OAAO,OAAI,QAAQ,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,QAAQ,OAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,QAAQ,OAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,OAAO,OAAI,QAAQ,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,QAAQ,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,UAAU,SAAI,UAAU,SAAI,WAAW,SAAI,WAAW,SAAI,SAAS,SAAI,SAAS,SAAI,UAAU,SAAI,SAAS,SAAI,SAAS,SAAI,WAAW,SAAI,SAAS,SAAI,QAAQ,SAAI,QAAQ,SAAI,QAAQ,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,WAAW,SAAI,WAAW,SAAI,WAAW,SAAI,WAAW,SAAI,WAAW,SAAI,SAAS,SAAI,SAAS,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,UAAU,SAAI,YAAY,SAAI,SAAS,SAAI,QAAQ,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,WAAW,SAAI,OAAO,SAAI,OAAO,SAAI,OAAO,SAAI,YAAY,SAAI,OAAO,SAAI,QAAQ,SAAI,UAAU,SAAI,QAAQ,SAAI,YAAY,SAAI,QAAQ,SAAI,QAAQ,SAAI,QAAQ,SAAI,UAAU,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,UAAU,SAAI,YAAY,SAAI,SAAS,SAAI,QAAQ,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,WAAW,SAAI,OAAO,SAAI,OAAO,SAAI,OAAO,SAAI,YAAY,SAAI,OAAO,SAAI,QAAQ,SAAI,WAAW,SAAI,UAAU,SAAI,QAAQ,SAAI,YAAY,SAAI,QAAQ,SAAI,QAAQ,SAAI,QAAQ,SAAI,UAAU,SAAI,aAAa,SAAI,UAAU,SAAI,QAAQ,SAAI,SAAS,SAAI,WAAW,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,WAAW,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,YAAY,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,UAAU,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,WAAW,SAAI,SAAS,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,OAAO,SAAI,SAAS,SAAI,QAAQ,SAAI,UAAU,SAAI,WAAW,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,QAAQ,SAAI,QAAQ,SAAI,OAAO,SAAI,QAAQ,SAAI,QAAQ,SAAI,QAAQ,SAAI,WAAW,SAAI,QAAQ,SAAI,SAAS,SAAI,UAAU,SAAI,OAAO,SAAI,UAAU,SAAI,OAAO,SAAI,OAAO,SAAI,QAAQ,SAAI,QAAQ,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,UAAU,SAAI,WAAW,SAAI,SAAS,SAAI,SAAS,SAAI,UAAU,SAAI,UAAU,SAAI,WAAW,SAAI,WAAW,SAAI,SAAS,SAAI,SAAS,SAAI,QAAQ,SAAI,WAAW,SAAI,UAAU,SAAI,WAAW,SAAI,UAAU,UAAK,WAAW,CAAC,IAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,QAAQ,OAAI,WAAW,OAAI,SAAS,OAAI,QAAQ,OAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,QAAQ,OAAI,QAAQ,OAAI,SAAS,OAAI,QAAQ,OAAI,WAAW,OAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,SAAS,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,QAAQ,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,WAAW,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,QAAQ,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,O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", + "mappings": "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AAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,OAAO,OAAI,QAAQ,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,QAAQ,OAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,QAAQ,OAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,OAAO,OAAI,QAAQ,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,QAAQ,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,SAAS,OAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,UAAU,SAAI,UAAU,SAAI,WAAW,SAAI,WAAW,SAAI,SAAS,SAAI,SAAS,SAAI,UAAU,SAAI,SAAS,SAAI,SAAS,SAAI,WAAW,SAAI,SAAS,SAAI,QAAQ,SAAI,QAAQ,SAAI,QAAQ,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,WAAW,SAAI,WAAW,SAAI,WAAW,SAAI,WAAW,SAAI,WAAW,SAAI,SAAS,SAAI,SAAS,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,UAAU,SAAI,YAAY,SAAI,SAAS,SAAI,QAAQ,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,WAAW,SAAI,OAAO,SAAI,OAAO,SAAI,OAAO,SAAI,YAAY,SAAI,OAAO,SAAI,QAAQ,SAAI,UAAU,SAAI,QAAQ,SAAI,YAAY,SAAI,QAAQ,SAAI,QAAQ,SAAI,QAAQ,SAAI,UAAU,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,UAAU,SAAI,YAAY,SAAI,SAAS,SAAI,QAAQ,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,WAAW,SAAI,OAAO,SAAI,OAAO,SAAI,OAAO,SAAI,YAAY,SAAI,OAAO,SAAI,QAAQ,SAAI,WAAW,SAAI,UAAU,SAAI,QAAQ,SAAI,YAAY,SAAI,QAAQ,SAAI,QAAQ,SAAI,QAAQ,SAAI,UAAU,SAAI,aAAa,SAAI,UAAU,SAAI,QAAQ,SAAI,SAAS,SAAI,WAAW,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,WAAW,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,YAAY,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,UAAU,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,WAAW,SAAI,SAAS,SAAI,UAAU,SAAI,UAAU,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,OAAO,SAAI,SAAS,SAAI,QAAQ,SAAI,UAAU,SAAI,WAAW,SAAI,UAAU,SAAI,SAAS,SAAI,UAAU,SAAI,QAAQ,SAAI,QAAQ,SAAI,OAAO,SAAI,QAAQ,SAAI,QAAQ,SAAI,QAAQ,SAAI,WAAW,SAAI,QAAQ,SAAI,SAAS,SAAI,UAAU,SAAI,OAAO,SAAI,UAAU,SAAI,OAAO,SAAI,OAAO,SAAI,QAAQ,SAAI,QAAQ,SAAI,SAAS,SAAI,SAAS,SAAI,SAAS,SAAI,UAAU,SAAI,WAAW,SAAI,SAAS,SAAI,SAAS,SAAI,UAAU,SAAI,UAAU,SAAI,WAAW,SAAI,WAAW,SAAI,SAAS,SAAI,SAAS,SAAI,QAAQ,SAAI,WAAW,SAAI,UAAU,SAAI,WAAW,SAAI,UAAU,UAAK,WAAW,CAAC,IAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,QAAQ,OAAI,WAAW,OAAI,SAAS,OAAI,QAAQ,OAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,QAAQ,OAAI,QAAQ,OAAI,QAAQ,OAAI,SAAS,OAAI,QAAQ,OAAI,WAAW,OAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,SAAS,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,QAAQ,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,WAAW,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,UAAU,OAAI,UAAU,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,QAAQ,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,WAAW,OAAI,SAAS,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,OAAI,WAAW,OAAI,UAAU,OAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,O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", "names": [] } diff --git a/netbox/project-static/netbox-graphiql/package.json b/netbox/project-static/netbox-graphiql/package.json index d58d9c0a5..20f73b093 100644 --- a/netbox/project-static/netbox-graphiql/package.json +++ b/netbox/project-static/netbox-graphiql/package.json @@ -6,7 +6,7 @@ "license": "Apache-2.0", "private": true, "dependencies": { - "graphiql": "1.4.1", + "graphiql": "1.8.9", "graphql": ">= v14.5.0 <= 15.5.0", "react": "17.0.2", "react-dom": "17.0.2", diff --git a/netbox/project-static/src/clipboard.ts b/netbox/project-static/src/clipboard.ts index 46ca5e36c..ddcb7b96e 100644 --- a/netbox/project-static/src/clipboard.ts +++ b/netbox/project-static/src/clipboard.ts @@ -2,7 +2,7 @@ import Clipboard from 'clipboard'; import { getElements } from './util'; export function initClipboard(): void { - for (const element of getElements('a.copy-content')) { + for (const element of getElements('.copy-content')) { new Clipboard(element); } } diff --git a/netbox/project-static/src/forms/scopeSelector.ts b/netbox/project-static/src/forms/scopeSelector.ts index 14ef972f8..f7b77f041 100644 --- a/netbox/project-static/src/forms/scopeSelector.ts +++ b/netbox/project-static/src/forms/scopeSelector.ts @@ -88,6 +88,7 @@ const showHideLayout: ShowHideLayout = { const showHideMap: ShowHideMap = { vlangroup_add: 'vlangroup', vlangroup_edit: 'vlangroup', + vlangroup_bulk_edit: 'vlangroup', }; /** diff --git a/netbox/project-static/src/select/api/apiSelect.ts b/netbox/project-static/src/select/api/apiSelect.ts index 53996910e..279340c12 100644 --- a/netbox/project-static/src/select/api/apiSelect.ts +++ b/netbox/project-static/src/select/api/apiSelect.ts @@ -264,6 +264,11 @@ export class APISelect { switch (this.trigger) { case 'collapse': if (collapse !== null) { + // If the element is collapsible but already shown, load the data immediately. + if (collapse.classList.contains('show')) { + Promise.all([this.loadData()]); + } + // If this element is part of a collapsible element, only load the data when the // collapsible element is shown. // See: https://getbootstrap.com/docs/5.0/components/collapse/#events diff --git a/netbox/project-static/src/tables/interfaceTable.ts b/netbox/project-static/src/tables/interfaceTable.ts index 56a0ae754..70243cf41 100644 --- a/netbox/project-static/src/tables/interfaceTable.ts +++ b/netbox/project-static/src/tables/interfaceTable.ts @@ -141,9 +141,10 @@ class TableState { private virtualButton: ButtonState; /** - * Underlying DOM Table Caption Element. + * Instance of ButtonState for the 'show/hide virtual rows' button. */ - private caption: Nullable = null; + // @ts-expect-error null handling is performed in the constructor + private disconnectedButton: ButtonState; /** * All table rows in table @@ -166,9 +167,10 @@ class TableState { this.table, 'button.toggle-virtual', ); - - const caption = this.table.querySelector('caption'); - this.caption = caption; + const toggleDisconnectedButton = findFirstAdjacent( + this.table, + 'button.toggle-disconnected', + ); if (toggleEnabledButton === null) { throw new TableStateError("Table is missing a 'toggle-enabled' button.", table); @@ -182,10 +184,15 @@ class TableState { throw new TableStateError("Table is missing a 'toggle-virtual' button.", table); } + if (toggleDisconnectedButton === null) { + throw new TableStateError("Table is missing a 'toggle-disconnected' button.", table); + } + // Attach event listeners to the buttons elements. toggleEnabledButton.addEventListener('click', event => this.handleClick(event, this)); toggleDisabledButton.addEventListener('click', event => this.handleClick(event, this)); toggleVirtualButton.addEventListener('click', event => this.handleClick(event, this)); + toggleDisconnectedButton.addEventListener('click', event => this.handleClick(event, this)); // Instantiate ButtonState for each button for state management. this.enabledButton = new ButtonState( @@ -200,6 +207,10 @@ class TableState { toggleVirtualButton, table.querySelectorAll('tr[data-type="virtual"]'), ); + this.disconnectedButton = new ButtonState( + toggleDisconnectedButton, + table.querySelectorAll('tr[data-connected="disconnected"]'), + ); } catch (err) { if (err instanceof TableStateError) { // This class is useless for tables that don't have toggle buttons. @@ -211,52 +222,6 @@ class TableState { } } - /** - * Get the table caption's text. - */ - private get captionText(): string { - if (this.caption !== null) { - return this.caption.innerText; - } - return ''; - } - - /** - * Set the table caption's text. - */ - private set captionText(value: string) { - if (this.caption !== null) { - this.caption.innerText = value; - } - } - - /** - * Update the table caption's text based on the state of each toggle button. - */ - private toggleCaption(): void { - const showEnabled = this.enabledButton.buttonState === 'show'; - const showDisabled = this.disabledButton.buttonState === 'show'; - const showVirtual = this.virtualButton.buttonState === 'show'; - - if (showEnabled && !showDisabled && !showVirtual) { - this.captionText = 'Showing Enabled Interfaces'; - } else if (showEnabled && showDisabled && !showVirtual) { - this.captionText = 'Showing Enabled & Disabled Interfaces'; - } else if (!showEnabled && showDisabled && !showVirtual) { - this.captionText = 'Showing Disabled Interfaces'; - } else if (!showEnabled && !showDisabled && !showVirtual) { - this.captionText = 'Hiding Enabled, Disabled & Virtual Interfaces'; - } else if (!showEnabled && !showDisabled && showVirtual) { - this.captionText = 'Showing Virtual Interfaces'; - } else if (showEnabled && !showDisabled && showVirtual) { - this.captionText = 'Showing Enabled & Virtual Interfaces'; - } else if (showEnabled && showDisabled && showVirtual) { - this.captionText = 'Showing Enabled, Disabled & Virtual Interfaces'; - } else { - this.captionText = ''; - } - } - /** * When toggle buttons are clicked, reapply visability all rows and * pass the event to all button handlers @@ -272,7 +237,7 @@ class TableState { instance.enabledButton.handleClick(event); instance.disabledButton.handleClick(event); instance.virtualButton.handleClick(event); - instance.toggleCaption(); + instance.disconnectedButton.handleClick(event); } } diff --git a/netbox/project-static/styles/netbox.scss b/netbox/project-static/styles/netbox.scss index 94fddc32c..a38633b5c 100644 --- a/netbox/project-static/styles/netbox.scss +++ b/netbox/project-static/styles/netbox.scss @@ -167,6 +167,12 @@ table td > .progress { } } +.alert { + code { + color: $gray-600; + } +} + span.profile-button .dropdown-menu { right: 0; left: auto; diff --git a/netbox/project-static/yarn.lock b/netbox/project-static/yarn.lock index 2adc50001..583b434f8 100644 --- a/netbox/project-static/yarn.lock +++ b/netbox/project-static/yarn.lock @@ -2,41 +2,6 @@ # yarn lockfile v1 -"@ardatan/sync-fetch@0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz#3385d3feedceb60a896518a1db857ec1e945348f" - integrity sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA== - dependencies: - node-fetch "^2.6.1" - -"@babel/code-frame@^7.0.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/helper-validator-identifier@^7.18.6": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - "@esbuild/linux-loong64@0.14.54": version "0.14.54" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" @@ -57,134 +22,13 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@graphiql/toolkit@^0.2.0": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@graphiql/toolkit/-/toolkit-0.2.2.tgz#193d570afcf686c9ee61c92054c1782b9f3c1255" - integrity sha512-kDgYhqnS4p4LqSo1KvLd3tbX8Hhdj0ZrgQuGsosjjEnahiPYmmylxUL1p9lj6348OsypcTlCncGpEjeb9S3TiQ== +"@graphiql/toolkit@^0.4.4": + version "0.4.5" + resolved "https://registry.yarnpkg.com/@graphiql/toolkit/-/toolkit-0.4.5.tgz#9fb5020444712562eae9581724695c235f610836" + integrity sha512-QXuuMSSK/0GfBS7tltrGZdyhIvm6oe9TK4VW9pfa8dALYttpzyJ64Q4Sx9I1Ng++yOMJWziM/ksa043zkNHsjQ== dependencies: - "@n1ru4l/push-pull-async-iterable-iterator" "^2.1.4" - graphql-ws "^4.3.2" + "@n1ru4l/push-pull-async-iterable-iterator" "^3.1.0" meros "^1.1.4" - optionalDependencies: - subscriptions-transport-ws "^0.9.18" - -"@graphql-tools/batch-execute@8.5.6": - version "8.5.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.5.6.tgz#476c2f9af1c302567e798d63063f1a2dfaad754a" - integrity sha512-33vMvVDLBKsNJVNhcySVXF+zkcRL/GRs1Lt+MxygrYCypcAPpFm+amE2y9vOCFufuaKExIX7Lonnmxu19vPzaQ== - dependencies: - "@graphql-tools/utils" "8.12.0" - dataloader "2.1.0" - tslib "^2.4.0" - value-or-promise "1.0.11" - -"@graphql-tools/delegate@9.0.8": - version "9.0.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-9.0.8.tgz#aa792f419a041de0c6341eaecf9694cf6f16f76f" - integrity sha512-h+Uce0Np0eKj7wILOvlffRQ9jEQ4KelNXfqG8A2w+2sO2P6CbKsR7bJ4ch9lcUdCBbZ4Wg6L/K+1C4NRFfzbNw== - dependencies: - "@graphql-tools/batch-execute" "8.5.6" - "@graphql-tools/schema" "9.0.4" - "@graphql-tools/utils" "8.12.0" - dataloader "2.1.0" - tslib "~2.4.0" - value-or-promise "1.0.11" - -"@graphql-tools/graphql-file-loader@^7.3.7": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.5.5.tgz#d8afb391282e3dc33005df04bdec8488e4ab101d" - integrity sha512-OL+7qO1S66TpMK7OGz8Ag2WL08HlxKxrObVSDlxzWbSubWuXM5v959XscYAKRf6daYcVpkfNvO37QjflL9mjhg== - dependencies: - "@graphql-tools/import" "6.7.6" - "@graphql-tools/utils" "8.12.0" - globby "^11.0.3" - tslib "^2.4.0" - unixify "^1.0.0" - -"@graphql-tools/import@6.7.6": - version "6.7.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.7.6.tgz#9bc0bb304a6fcc43aa2c9177631670b1fdfb2115" - integrity sha512-WtUyiO2qCaK/H4u81zAw/NbBvCOzwKl4N+Vl+FqrFCzYobscwL6x6roePyoXM1O3+JJIIn3CETv4kg4kwxaBVw== - dependencies: - "@graphql-tools/utils" "8.12.0" - resolve-from "5.0.0" - tslib "^2.4.0" - -"@graphql-tools/json-file-loader@^7.3.7": - version "7.4.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-7.4.6.tgz#d4135c3e15491eda653f58ed89efbd5e21d0b1b8" - integrity sha512-34AfjCitO4NtJ5AcXYLcFF3GDsMVTycrljSaBA2t1d7B4bMPtREDphKXLMc/Uf2zW6IW1i1sZZyrcmArPy1Z8A== - dependencies: - "@graphql-tools/utils" "8.12.0" - globby "^11.0.3" - tslib "^2.4.0" - unixify "^1.0.0" - -"@graphql-tools/load@^7.5.5": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.7.7.tgz#0d6fb0804177658f609562982a6a68e008073ca0" - integrity sha512-IpI2672zcoAX4FLjcH5kvHc7eqjPyLP1svrIcZKQenv0GRS6dW0HI9E5UCBs0y/yy8yW6s+SvpmNsfIlkMj3Kw== - dependencies: - "@graphql-tools/schema" "9.0.4" - "@graphql-tools/utils" "8.12.0" - p-limit "3.1.0" - tslib "^2.4.0" - -"@graphql-tools/merge@8.3.6", "@graphql-tools/merge@^8.2.6": - version "8.3.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.6.tgz#97a936d4c8e8f935e58a514bb516c476437b5b2c" - integrity sha512-uUBokxXi89bj08P+iCvQk3Vew4vcfL5ZM6NTylWi8PIpoq4r5nJ625bRuN8h2uubEdRiH8ntN9M4xkd/j7AybQ== - dependencies: - "@graphql-tools/utils" "8.12.0" - tslib "^2.4.0" - -"@graphql-tools/schema@9.0.4": - version "9.0.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.4.tgz#1a74608b57abf90fae6fd929d25e5482c57bc05d" - integrity sha512-B/b8ukjs18fq+/s7p97P8L1VMrwapYc3N2KvdG/uNThSazRRn8GsBK0Nr+FH+mVKiUfb4Dno79e3SumZVoHuOQ== - dependencies: - "@graphql-tools/merge" "8.3.6" - "@graphql-tools/utils" "8.12.0" - tslib "^2.4.0" - value-or-promise "1.0.11" - -"@graphql-tools/url-loader@^7.9.7": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-7.16.4.tgz#d27787ef9f35fe71b456c067c3a1759b1ecd76a8" - integrity sha512-7yGrJJNcqVQIplCyVLk7tW2mAgYyZ06FRmCBnzw3B61+aIjFavrm6YlnKkhdqYSYyFmIbVcigdP3vkoYIu23TA== - dependencies: - "@ardatan/sync-fetch" "0.0.1" - "@graphql-tools/delegate" "9.0.8" - "@graphql-tools/utils" "8.12.0" - "@graphql-tools/wrap" "9.2.3" - "@types/ws" "^8.0.0" - "@whatwg-node/fetch" "^0.4.0" - dset "^3.1.2" - extract-files "^11.0.0" - graphql-ws "^5.4.1" - isomorphic-ws "^5.0.0" - meros "^1.1.4" - tslib "^2.4.0" - value-or-promise "^1.0.11" - ws "^8.3.0" - -"@graphql-tools/utils@8.12.0", "@graphql-tools/utils@^8.6.5": - version "8.12.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.12.0.tgz#243bc4f5fc2edbc9e8fd1038189e57d837cbe31f" - integrity sha512-TeO+MJWGXjUTS52qfK4R8HiPoF/R7X+qmgtOYd8DTH0l6b+5Y/tlg5aGeUJefqImRq7nvi93Ms40k/Uz4D5CWw== - dependencies: - tslib "^2.4.0" - -"@graphql-tools/wrap@9.2.3": - version "9.2.3" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-9.2.3.tgz#70f7602aed9781fbc860cea64a918636599883be" - integrity sha512-aiLjcAuUwcvA1mF25c7KFDPXEdQDpo6bTDyAMCSlFXpF4T01hoxLERmfmbRmsmy/dP80ZB31a+t70aspVdqZSA== - dependencies: - "@graphql-tools/delegate" "9.0.8" - "@graphql-tools/schema" "9.0.4" - "@graphql-tools/utils" "8.12.0" - tslib "^2.4.0" - value-or-promise "1.0.11" "@humanwhocodes/config-array@^0.10.5": version "0.10.7" @@ -210,29 +54,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@iarna/toml@^2.2.5": - version "2.2.5" - resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@juggle/resize-observer@^3.3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.3.1.tgz#b50a781709c81e10701004214340f25475a171a0" @@ -243,10 +64,10 @@ resolved "https://registry.yarnpkg.com/@mdi/font/-/font-7.0.96.tgz#9853c222623072f5575b4039c8c195ea929b61fc" integrity sha512-rzlxTfR64hqY8yiBzDjmANfcd8rv+T5C0Yedv/TWk2QyAQYdc66e0kaN1ipmnYU3RukHRTRcBARHzzm+tIhL7w== -"@n1ru4l/push-pull-async-iterable-iterator@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-2.1.4.tgz#a90225474352f9f159bff979905f707b9c6bcf04" - integrity sha512-qLIvoOUJ+zritv+BlzcBMePKNjKQzH9Rb2i9W98YXxf/M62Lye8qH0peyiU8yJ1tL0kfulWi31BoK10E6BKJeA== +"@n1ru4l/push-pull-async-iterable-iterator@^3.1.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@n1ru4l/push-pull-async-iterable-iterator/-/push-pull-async-iterable-iterator-3.2.0.tgz#c15791112db68dd9315d329d652b7e797f737655" + integrity sha512-3fkKj25kEjsfObL6IlKPAlHYPq/oYwUkkQ03zsTTiDjD7vg/RxjdiLeCydqtxHZP0JgsXL3D/X5oAkMGzuUp/Q== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -269,33 +90,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@peculiar/asn1-schema@^2.1.6": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.0.tgz#5368416eb336138770c692ffc2bab119ee3ae917" - integrity sha512-DtNLAG4vmDrdSJFPe7rypkcj597chNQL7u+2dBtYo5mh7VW2+im6ke+O0NVr8W1f4re4C3F71LhoMb0Yxqa48Q== - dependencies: - asn1js "^3.0.5" - pvtsutils "^1.3.2" - tslib "^2.4.0" - -"@peculiar/json-schema@^1.1.12": - version "1.1.12" - resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" - integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== - dependencies: - tslib "^2.0.0" - -"@peculiar/webcrypto@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.4.0.tgz#f941bd95285a0f8a3d2af39ccda5197b80cd32bf" - integrity sha512-U58N44b2m3OuTgpmKgf0LPDOmP3bhwNz01vAnj1mBwxBASRhptWYK+M3zG+HBkDqGQM+bFsoIihTW8MdmPXEqg== - dependencies: - "@peculiar/asn1-schema" "^2.1.6" - "@peculiar/json-schema" "^1.1.12" - pvtsutils "^1.3.2" - tslib "^2.4.0" - webcrypto-core "^1.7.4" - "@pkgr/utils@^2.3.1": version "2.3.1" resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.3.1.tgz#0a9b06ffddee364d6642b3cd562ca76f55b34a03" @@ -313,26 +107,6 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== - "@types/bootstrap@^5.0.17": version "5.2.5" resolved "https://registry.yarnpkg.com/@types/bootstrap/-/bootstrap-5.2.5.tgz#0bb5dea7720611b2bb7ba16bd8a64fafd86fb658" @@ -352,11 +126,6 @@ dependencies: "@types/sizzle" "*" -"@types/json-schema@7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== - "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" @@ -374,28 +143,11 @@ dependencies: "@types/jquery" "*" -"@types/node@*": - version "18.8.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.8.1.tgz#33e6759935f7a82821b72fb936e66f6b99a36173" - integrity sha512-vuYaNuEIbOYLTLUAJh50ezEbvxrD43iby+lpUA2aa148Nh5kX/AVO/9m1Ahmbux2iU5uxJTNF9g2Y+31uml7RQ== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - "@types/sizzle@*": version "2.3.3" resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== -"@types/ws@^8.0.0": - version "8.5.3" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" - integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== - dependencies: - "@types/node" "*" - "@typescript-eslint/eslint-plugin@^5.39.0": version "5.39.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.39.0.tgz#778b2d9e7f293502c7feeea6c74dca8eb3e67511" @@ -476,38 +228,12 @@ "@typescript-eslint/types" "5.39.0" eslint-visitor-keys "^3.3.0" -"@whatwg-node/fetch@^0.4.0": - version "0.4.7" - resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.4.7.tgz#4cbcda3ba93d5ae15ab823aae5869eae4a0cb14b" - integrity sha512-+oKDMGtmUJ7H37VDL5U2Vdk+ZxsIypZxO2q6y42ytu6W3PL6OIIUYZGliNqQgWtCdtxOZ9WPQvbIAuiLpnLlUw== - dependencies: - "@peculiar/webcrypto" "^1.4.0" - abort-controller "^3.0.0" - busboy "^1.6.0" - form-data-encoder "^1.7.1" - formdata-node "^4.3.1" - node-fetch "^2.6.7" - undici "^5.10.0" - web-streams-polyfill "^3.2.0" - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.4.1, acorn@^8.8.0: +acorn@^8.8.0: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== @@ -527,13 +253,6 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -549,18 +268,6 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -592,15 +299,6 @@ array.prototype.flat@^1.2.5: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" -asn1js@^3.0.1, asn1js@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" - integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== - dependencies: - pvtsutils "^1.3.2" - pvutils "^1.1.3" - tslib "^2.4.0" - async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -641,13 +339,6 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -busboy@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -666,15 +357,6 @@ can-use-dom@^0.1.0: resolved "https://registry.yarnpkg.com/can-use-dom/-/can-use-dom-0.1.0.tgz#22cc4a34a0abc43950f42c6411024a3f6366b45a" integrity sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo= -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -707,24 +389,17 @@ clipboard@^2.0.11: select "^1.1.2" tiny-emitter "^2.0.0" -codemirror-graphql@^1.0.0: +codemirror-graphql@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/codemirror-graphql/-/codemirror-graphql-1.3.2.tgz#e9d1d18b4a160f0016a28465805284636ee42d2a" integrity sha512-glwFsEVlH5TvxjSKGymZ1sNy37f3Mes58CB4fXOd0zy9+JzDL08Wti1b5ycy4vFZYghMDK1/Or/zRSjMAGtC2w== dependencies: graphql-language-service "^5.0.6" -codemirror@^5.54.0: - version "5.65.9" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.9.tgz#ec70c92aa206ee4c9853d5f1e7c4ed356cdab68c" - integrity sha512-19Jox5sAKpusTDgqgKB5dawPpQcY+ipQK7xoEI+MVucEF9qqFaXpeqY1KaoyGBso/wHQoDa4HMMxMjdsS3Zzzw== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" +codemirror@^5.65.3: + version "5.65.14" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.65.14.tgz#e75fbc7247453f1baa71463c33b52adba7e41b2a" + integrity sha512-VSNugIBDGt0OU9gDjeVr6fNkoFQznrWEUdAApMlXQNbfE8gGO19776D6MwSqF/V/w/sDwonsQ0z7KmmI9guScg== color-convert@^2.0.1: version "2.0.1" @@ -733,11 +408,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -765,34 +435,6 @@ core-js@^3.0.1: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.16.4.tgz#0fb1029a554fc2688c0963d7c900e188188a78e0" integrity sha512-Tq4GVE6XCjE+hcyW6hPy0ofN3hwtLudz5ZRdrlCnsnD/xkm/PWQRudzYHiKgZKUcefV6Q57fhDHjZHJP5dpfSg== -cosmiconfig-toml-loader@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz#0681383651cceff918177debe9084c0d3769509b" - integrity sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA== - dependencies: - "@iarna/toml" "^2.2.5" - -cosmiconfig-typescript-loader@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.1.1.tgz#38dd3578344038dae40fdf09792bc2e9df529f78" - integrity sha512-9DHpa379Gp0o0Zefii35fcmuuin6q92FnLDffzdZ0l9tVd3nEobG3O+MZ06+kuBvFTSVScvNb/oHA13Nd4iipg== - -cosmiconfig@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -802,11 +444,6 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -dataloader@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.1.0.tgz#c69c538235e85e7ac6c6c444bae8ecabf5de9df7" - integrity sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ== - dayjs@^1.11.5: version "1.11.5" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.5.tgz#00e8cc627f231f9499c19b38af49f56dc0ac5e93" @@ -875,11 +512,6 @@ delegate@^3.1.2: resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -901,11 +533,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dset@^3.1.0, dset@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.2.tgz#89c436ca6450398396dc6538ea00abc0c54cd45a" - integrity sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q== - enhanced-resolve@^5.10.0: version "5.10.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" @@ -919,17 +546,10 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@~2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: version "1.20.3" @@ -1221,10 +841,10 @@ esbuild@^0.14.13: esbuild-windows-64 "0.14.54" esbuild-windows-arm64 "0.14.54" -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@^4.0.0: version "4.0.0" @@ -1406,21 +1026,11 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - eventemitter3@^3.1.0: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== -extract-files@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" - integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -1504,19 +1114,6 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561" integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== -form-data-encoder@^1.7.1: - version "1.7.2" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040" - integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== - -formdata-node@^4.3.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2" - integrity sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ== - dependencies: - node-domexception "1.0.0" - web-streams-polyfill "4.0.0-beta.3" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1616,7 +1213,7 @@ globalyzer@0.1.0: resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== -globby@^11.0.3, globby@^11.1.0: +globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -1661,83 +1258,28 @@ grapheme-splitter@^1.0.4: resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== -graphiql@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/graphiql/-/graphiql-1.4.1.tgz#8df7a60a487aef32b71274ad1bb93118ac9f2213" - integrity sha512-C7S36lTgCw2/C/Dt90eJSI9VdxQfohrUoDV1dt/WecS7dm5HcaQUIYFqvLQMZG1cSRJttRKwNwP1rYfs73v8SQ== +graphiql@1.8.9: + version "1.8.9" + resolved "https://registry.yarnpkg.com/graphiql/-/graphiql-1.8.9.tgz#96063ace9379699e873da078bf0f2ae7062f370e" + integrity sha512-X+olqol3VfOrFrsAfYzgNbvHoEE0lDUtg52+f3yLeNY4Ens+rAH4RSdH4wVtoRdh3CafmhVsfLQvn04hHkgftQ== dependencies: - "@graphiql/toolkit" "^0.2.0" - codemirror "^5.54.0" - codemirror-graphql "^1.0.0" + "@graphiql/toolkit" "^0.4.4" + codemirror "^5.65.3" + codemirror-graphql "^1.3.0" copy-to-clipboard "^3.2.0" - dset "^3.1.0" entities "^2.0.0" - graphql-language-service "^3.1.2" - markdown-it "^10.0.0" + escape-html "^1.0.3" + graphql-language-service "^5.0.4" + markdown-it "^12.2.0" + set-value "^4.1.0" -graphql-config@^4.1.0: - version "4.3.5" - resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.3.5.tgz#bd197ec9c1e86d2696c61332be35b920ba7be700" - integrity sha512-B4jXhHL7j3llCem+ACeo48wvVYhtJxRyt5SfSnvywbRlVYyUzt5ibZV6WJU2Yii2/rcVRIGi7BHDgcAPWdWdJg== +graphql-language-service@^5.0.4: + version "5.1.7" + resolved "https://registry.yarnpkg.com/graphql-language-service/-/graphql-language-service-5.1.7.tgz#2b35df573de265eb2623843721702f07ff9ee130" + integrity sha512-xkawYMJeoNYGhT+SpSH3c2qf6HpGHQ/duDmrseVHBpVCrXAiGnliXGSCC4jyMGgZQ05GytsZ12p0nUo7s6lSSw== dependencies: - "@graphql-tools/graphql-file-loader" "^7.3.7" - "@graphql-tools/json-file-loader" "^7.3.7" - "@graphql-tools/load" "^7.5.5" - "@graphql-tools/merge" "^8.2.6" - "@graphql-tools/url-loader" "^7.9.7" - "@graphql-tools/utils" "^8.6.5" - cosmiconfig "7.0.1" - cosmiconfig-toml-loader "1.0.0" - cosmiconfig-typescript-loader "^4.0.0" - minimatch "4.2.1" - string-env-interpolation "1.0.1" - ts-node "^10.8.1" - tslib "^2.4.0" - -graphql-language-service-interface@^2.9.5: - version "2.10.2" - resolved "https://registry.yarnpkg.com/graphql-language-service-interface/-/graphql-language-service-interface-2.10.2.tgz#de9386f699e446320256175e215cdc10ccf9f9b7" - integrity sha512-RKIEBPhRMWdXY3fxRs99XysTDnEgAvNbu8ov/5iOlnkZsWQNzitjtd0O0l1CutQOQt3iXoHde7w8uhCnKL4tcg== - dependencies: - graphql-config "^4.1.0" - graphql-language-service-parser "^1.10.4" - graphql-language-service-types "^1.8.7" - graphql-language-service-utils "^2.7.1" - vscode-languageserver-types "^3.15.1" - -graphql-language-service-parser@^1.10.3, graphql-language-service-parser@^1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/graphql-language-service-parser/-/graphql-language-service-parser-1.10.4.tgz#b2979deefc5c0df571dacd409b2d5fbf1cdf7a9d" - integrity sha512-duDE+0aeKLFVrb9Kf28U84ZEHhHcvTjWIT6dJbIAQJWBaDoht0D4BK9EIhd94I3DtKRc1JCJb2+70y1lvP/hiA== - dependencies: - graphql-language-service-types "^1.8.7" - -graphql-language-service-types@^1.8.6, graphql-language-service-types@^1.8.7: - version "1.8.7" - resolved "https://registry.yarnpkg.com/graphql-language-service-types/-/graphql-language-service-types-1.8.7.tgz#f5e909e6d9334ea2d8d1f7281b695b6f5602c07f" - integrity sha512-LP/Mx0nFBshYEyD0Ny6EVGfacJAGVx+qXtlJP4hLzUdBNOGimfDNtMVIdZANBXHXcM41MDgMHTnyEx2g6/Ttbw== - dependencies: - graphql-config "^4.1.0" - vscode-languageserver-types "^3.15.1" - -graphql-language-service-utils@^2.6.3, graphql-language-service-utils@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/graphql-language-service-utils/-/graphql-language-service-utils-2.7.1.tgz#c97c8d744a761480aba7e03e4a42adf28b6fce39" - integrity sha512-Wci5MbrQj+6d7rfvbORrA9uDlfMysBWYaG49ST5TKylNaXYFf3ixFOa74iM1KtM9eidosUbI3E1JlWi0JaidJA== - dependencies: - "@types/json-schema" "7.0.9" - graphql-language-service-types "^1.8.7" nullthrows "^1.0.0" - -graphql-language-service@^3.1.2: - version "3.2.5" - resolved "https://registry.yarnpkg.com/graphql-language-service/-/graphql-language-service-3.2.5.tgz#aa73884fced898e8efeaa5a13188e00a9c1b4552" - integrity sha512-utkQ8GfYrR310E7AWk2dGE9QRidIEtAJPJ5j0THHlA+h12s4loZmmGosaHpjzbKy6WCNKNw8aKkqt3eEBxJJRg== - dependencies: - graphql-language-service-interface "^2.9.5" - graphql-language-service-parser "^1.10.3" - graphql-language-service-types "^1.8.6" - graphql-language-service-utils "^2.6.3" + vscode-languageserver-types "^3.17.1" graphql-language-service@^5.0.6: version "5.0.6" @@ -1747,16 +1289,6 @@ graphql-language-service@^5.0.6: nullthrows "^1.0.0" vscode-languageserver-types "^3.15.1" -graphql-ws@^4.3.2: - version "4.9.0" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-4.9.0.tgz#5cfd8bb490b35e86583d8322f5d5d099c26e365c" - integrity sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag== - -graphql-ws@^5.4.1: - version "5.11.2" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.11.2.tgz#d5e0acae8b4d4a4cf7be410a24135cfcefd7ddc0" - integrity sha512-4EiZ3/UXYcjm+xFGP544/yW1+DVI8ZpKASFbzrV5EDTFWJp0ZvLl4Dy2fSZAzz9imKp5pZMIcjB0x/H69Pv/6w== - "graphql@>= v14.5.0 <= 15.5.0": version "15.5.0" resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5" @@ -1777,11 +1309,6 @@ has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -1873,11 +1400,6 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -1972,6 +1494,18 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-primitive@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-3.0.1.tgz#98c4db1abff185485a657fc2905052b940524d05" + integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -2020,10 +1554,10 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isomorphic-ws@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" - integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== iterall@^1.2.1: version "1.3.0" @@ -2035,7 +1569,7 @@ js-sdsl@^4.1.4: resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +"js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -2047,11 +1581,6 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -2082,15 +1611,10 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -linkify-it@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" - integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== +linkify-it@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" + integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== dependencies: uc.micro "^1.0.1" @@ -2135,19 +1659,14 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -markdown-it@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc" - integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== +markdown-it@^12.2.0: + version "12.3.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" + integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== dependencies: - argparse "^1.0.7" - entities "~2.0.0" - linkify-it "^2.0.0" + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" mdurl "^1.0.1" uc.micro "^1.0.5" @@ -2174,13 +1693,6 @@ micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" -minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== - dependencies: - brace-expansion "^1.1.7" - minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -2225,25 +1737,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -node-domexception@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - -node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -2321,7 +1814,7 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -p-limit@3.1.0, p-limit@^3.0.2: +p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -2342,16 +1835,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -2409,18 +1892,6 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pvtsutils@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.2.tgz#9f8570d132cdd3c27ab7d51a2799239bf8d8d5de" - integrity sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ== - dependencies: - tslib "^2.4.0" - -pvutils@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" - integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== - query-string@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1" @@ -2474,16 +1945,6 @@ regexpp@^3.2.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - -resolve-from@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -2563,6 +2024,14 @@ semver@^7.3.7: dependencies: lru-cache "^6.0.0" +set-value@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-4.1.0.tgz#aa433662d87081b75ad88a4743bd450f044e7d09" + integrity sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw== + dependencies: + is-plain-object "^2.0.4" + is-primitive "^3.0.1" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -2621,26 +2090,11 @@ split-on-first@^1.0.0: resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= -string-env-interpolation@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152" - integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== - string.prototype.trimend@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" @@ -2687,24 +2141,6 @@ subscriptions-transport-ws@0.9.18: symbol-observable "^1.0.4" ws "^5.2.0" -subscriptions-transport-ws@^0.9.18: - version "0.9.19" - resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz#10ca32f7e291d5ee8eb728b9c02e43c52606cdcf" - integrity sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw== - dependencies: - backo2 "^1.0.2" - eventemitter3 "^3.1.0" - iterall "^1.2.1" - symbol-observable "^1.0.4" - ws "^5.2.0 || ^6.0.0 || ^7.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -2765,30 +2201,6 @@ toggle-selection@^1.0.6: resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -ts-node@^10.8.1: - version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" - integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" @@ -2804,7 +2216,7 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.4.0, tslib@~2.4.0: +tslib@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== @@ -2848,20 +2260,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undici@^5.10.0: - version "5.11.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.11.0.tgz#1db25f285821828fc09d3804b9e2e934ae86fc13" - integrity sha512-oWjWJHzFet0Ow4YZBkyiJwiK5vWqEYoH7BINzJAJOLedZ++JpAlCbUktW2GQ2DS2FpKmxD/JMtWUUWl1BtghGw== - dependencies: - busboy "^1.6.0" - -unixify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" - integrity sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg== - dependencies: - normalize-path "^2.1.1" - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -2869,60 +2267,21 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -value-or-promise@1.0.11, value-or-promise@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" - integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== - vscode-languageserver-types@^3.15.1: version "3.17.2" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz#b2c2e7de405ad3d73a883e91989b850170ffc4f2" integrity sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA== -web-streams-polyfill@4.0.0-beta.3: - version "4.0.0-beta.3" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz#2898486b74f5156095e473efe989dcf185047a38" - integrity sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug== - -web-streams-polyfill@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" - integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== - -webcrypto-core@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.5.tgz#c02104c953ca7107557f9c165d194c6316587ca4" - integrity sha512-gaExY2/3EHQlRNNNVSrbG2Cg94Rutl7fAaKILS1w8ZDhGxdFOaw6EbCfHIxPy9vt/xwp5o0VQAx9aySPF6hU1A== - dependencies: - "@peculiar/asn1-schema" "^2.1.6" - "@peculiar/json-schema" "^1.1.12" - asn1js "^3.0.1" - pvtsutils "^1.3.2" - tslib "^2.4.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== +vscode-languageserver-types@^3.17.1: + version "3.17.3" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64" + integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA== whatwg-fetch@3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -2958,31 +2317,11 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" -"ws@^5.2.0 || ^6.0.0 || ^7.0.0": - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^8.3.0: - version "8.9.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.9.0.tgz#2a994bb67144be1b53fe2d23c53c028adeb7f45e" - integrity sha512-Ja7nszREasGaYUYCI2k4lCKIRTt+y7XuqVoHR44YpI49TtryyqbqvDMn5eqfW7e6HzTukDRIsXqzVHScqRcafg== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" diff --git a/netbox/templates/account/token.html b/netbox/templates/account/token.html index d83e13ff5..57d1de3f4 100644 --- a/netbox/templates/account/token.html +++ b/netbox/templates/account/token.html @@ -15,11 +15,6 @@ {% block content %}
    - {% if key and not settings.ALLOW_TOKEN_RETRIEVAL %} - - {% endif %}
    {% trans "Token" %}
    diff --git a/netbox/templates/circuits/circuit_terminations_swap.html b/netbox/templates/circuits/circuit_terminations_swap.html index 7c9094d42..1ddb67bac 100644 --- a/netbox/templates/circuits/circuit_terminations_swap.html +++ b/netbox/templates/circuits/circuit_terminations_swap.html @@ -4,14 +4,18 @@ {% block title %}{% trans "Swap Circuit Terminations" %}{% endblock %} {% block message %} -

    {% blocktrans %}Swap these terminations for circuit {{ circuit }}?{% endblocktrans %}

    +

    + {% blocktrans trimmed %} + Swap these terminations for circuit {{ circuit }}? + {% endblocktrans %} +

    • {% trans "A side" %}: {% if termination_a %} {{ termination_a.site }} {% if termination_a.interface %}- {{ termination_a.interface.device }} {{ termination_a.interface }}{% endif %} {% else %} - {{ ''|placeholder }} + {% trans "None" %} {% endif %}
    • @@ -19,7 +23,7 @@ {% if termination_z %} {{ termination_z.site }} {% if termination_z.interface %}- {{ termination_z.interface.device }} {{ termination_z.interface }}{% endif %} {% else %} - {{ ''|placeholder }} + {% trans "None" %} {% endif %}
    diff --git a/netbox/templates/circuits/circuittype.html b/netbox/templates/circuits/circuittype.html index b8b08baf0..407ee4042 100644 --- a/netbox/templates/circuits/circuittype.html +++ b/netbox/templates/circuits/circuittype.html @@ -29,6 +29,16 @@ {% trans "Description" %} {{ object.description|placeholder }} + + {% trans "Color" %} + + {% if object.color %} +   + {% else %} + {{ ''|placeholder }} + {% endif %} + +
    diff --git a/netbox/templates/extras/configrevision.html b/netbox/templates/core/configrevision.html similarity index 59% rename from netbox/templates/extras/configrevision.html rename to netbox/templates/core/configrevision.html index ea3962b20..7e7f49f2f 100644 --- a/netbox/templates/extras/configrevision.html +++ b/netbox/templates/core/configrevision.html @@ -14,6 +14,13 @@
    {% plugin_buttons object %} + {% if not object.pk or object.is_active and perms.core.add_configrevision %} + {% url 'core:configrevision_add' as edit_url %} + {% include "buttons/edit.html" with url=edit_url %} + {% endif %} + {% if object.pk and not object.is_active and perms.core.delete_configrevision %} + {% delete_button object %} + {% endif %}
    {% custom_links object %} @@ -21,19 +28,27 @@
    {% endblock controls %} +{% block subtitle %} + {% if object.created %} +
    + {% trans "Created" %} {{ object.created|annotated_date }} +
    + {% endif %} +{% endblock subtitle %} + {% block content %}
    -
    +
    -
    {% trans "Rack Elevation" %}
    +
    {% trans "Rack Elevations" %}
    - + - +
    {% trans "Rack elevation default unit height" %}:{% trans "Default unit height" %} {{ object.data.RACK_ELEVATION_DEFAULT_UNIT_HEIGHT }}
    {% trans "Rack elevation default unit width" %}:{% trans "Default unit width" %} {{ object.data.RACK_ELEVATION_DEFAULT_UNIT_WIDTH }}
    @@ -41,19 +56,19 @@
    -
    {% trans "Power" %}
    +
    {% trans "Power Feeds" %}
    - + - + - +
    {% trans "Powerfeed default voltage" %}:{% trans "Default voltage" %} {{ object.data.POWERFEED_DEFAULT_VOLTAGE }}
    {% trans "Powerfeed default amperage" %}:{% trans "Default amperage" %} {{ object.data.POWERFEED_DEFAULT_AMPERAGE }}
    {% trans "Powerfeed default max utilization" %}:{% trans "Default max utilization" %} {{ object.data.POWERFEED_DEFAULT_MAX_UTILIZATION }}
    @@ -65,11 +80,11 @@
    - + - +
    {% trans "Enforce global unique" %}:{% trans "Enforce global unique" %} {{ object.data.ENFORCE_GLOBAL_UNIQUE }}
    {% trans "Prefer IPv4" %}:{% trans "Prefer IPv4" %} {{ object.data.PREFER_IPV4 }}
    @@ -81,8 +96,8 @@
    - - + +
    {% trans "Allowed URL schemes" %}:{{ object.data.ALLOWED_URL_SCHEMES }}{% trans "Allowed URL schemes" %}{{ object.data.ALLOWED_URL_SCHEMES|join:", "|placeholder }}
    @@ -93,39 +108,35 @@
    - + - + - + - +
    {% trans "Login banner" %}:{% trans "Login banner" %} {{ object.data.BANNER_LOGIN }}
    {% trans "Maintenance banner" %}:{% trans "Maintenance banner" %} {{ object.data.BANNER_MAINTENANCE }}
    {% trans "Top banner" %}:{% trans "Top banner" %} {{ object.data.BANNER_TOP }}
    {% trans "Bottom banner" %}:{% trans "Bottom banner" %} {{ object.data.BANNER_BOTTOM }}
    - -
    -
    -
    {% trans "Pagination" %}
    - + - +
    {% trans "Paginate count" %}:{% trans "Paginate count" %} {{ object.data.PAGINATE_COUNT }}
    {% trans "Max page size" %}:{% trans "Max page size" %} {{ object.data.MAX_PAGE_SIZE }}
    @@ -137,8 +148,24 @@
    - - + + {% if object.data.CUSTOM_VALIDATORS %} + + {% else %} + + {% endif %} + + + + {% if object.data.PROTECTION_RULES %} + + {% else %} + + {% endif %}
    {% trans "Custom validators" %}:{{ object.data.CUSTOM_VALIDATORS }}{% trans "Custom validators" %} +
    {{ object.data.CUSTOM_VALIDATORS|json }}
    +
    {{ ''|placeholder }}
    {% trans "Protection rules" %} +
    {{ object.data.PROTECTION_RULES|json }}
    +
    {{ ''|placeholder }}
    @@ -149,8 +176,14 @@
    - - + + {% if object.data.DEFAULT_USER_PREFERENCES %} + + {% else %} + + {% endif %}
    {% trans "Default user preferences" %}:{{ object.data.DEFAULT_USER_PREFERENCES }}{% trans "Default user preferences" %} +
    {{ object.data.DEFAULT_USER_PREFERENCES|json }}
    +
    {{ ''|placeholder }}
    @@ -161,23 +194,23 @@
    - + - + - + - + - +
    {% trans "Maintenance mode" %}:{% trans "Maintenance mode" %} {{ object.data.MAINTENANCE_MODE }}
    {% trans "GraphQL enabled" %}:{% trans "GraphQL enabled" %} {{ object.data.GRAPHQL_ENABLED }}
    {% trans "Changelog retention" %}:{% trans "Changelog retention" %} {{ object.data.CHANGELOG_RETENTION }}
    {% trans "Job retention" %}:{% trans "Job retention" %} {{ object.data.JOB_RETENTION }}
    {% trans "Maps URL" %}:{% trans "Maps URL" %} {{ object.data.MAPS_URL }}
    @@ -185,14 +218,9 @@
    -
    {% trans "Config Revision" %}
    +
    {% trans "Comment" %}
    - - - - - -
    {% trans "Comment" %}:{{ object.comment }}
    + {{ object.comment|placeholder }}
    diff --git a/netbox/templates/extras/configrevision_restore.html b/netbox/templates/core/configrevision_restore.html similarity index 85% rename from netbox/templates/extras/configrevision_restore.html rename to netbox/templates/core/configrevision_restore.html index 134a0b547..ad6fb1bd9 100644 --- a/netbox/templates/extras/configrevision_restore.html +++ b/netbox/templates/core/configrevision_restore.html @@ -18,8 +18,8 @@ @@ -77,7 +77,7 @@
    - {% trans "Cancel" %} + {% trans "Cancel" %}
    diff --git a/netbox/templates/core/datasource.html b/netbox/templates/core/datasource.html index 369c395f8..51090b0c9 100644 --- a/netbox/templates/core/datasource.html +++ b/netbox/templates/core/datasource.html @@ -58,7 +58,7 @@ {% trans "URL" %} - {% if not object.is_local %} + {% if not object.type.is_local %} {{ object.source_url }} {% else %} {{ object.source_url }} diff --git a/netbox/templates/core/job.html b/netbox/templates/core/job.html index 1fe3862cd..deb651739 100644 --- a/netbox/templates/core/job.html +++ b/netbox/templates/core/job.html @@ -35,6 +35,12 @@ {% trans "Status" %} {% badge object.get_status_display object.get_status_color %} + {% if object.error %} + + {% trans "Error" %} + {{ object.error }} + + {% endif %} {% trans "Created By" %} {{ object.user|placeholder }} diff --git a/netbox/templates/dcim/bulk_disconnect.html b/netbox/templates/dcim/bulk_disconnect.html index ede0df357..555ed635b 100644 --- a/netbox/templates/dcim/bulk_disconnect.html +++ b/netbox/templates/dcim/bulk_disconnect.html @@ -6,7 +6,7 @@ {% block message %}

    - {% blocktrans with count=selected_objects|length %} + {% blocktrans trimmed with count=selected_objects|length %} Are you sure you want to disconnect these {{ count }} {{ obj_type_plural }}? {% endblocktrans %}

    diff --git a/netbox/templates/dcim/cable.html b/netbox/templates/dcim/cable.html index 535b96977..caa1a9fe0 100644 --- a/netbox/templates/dcim/cable.html +++ b/netbox/templates/dcim/cable.html @@ -50,7 +50,7 @@ {% trans "Length" %} - {% if object.length %} + {% if object.length is not None %} {{ object.length|floatformat }} {{ object.get_length_unit_display }} {% else %} {{ ''|placeholder }} diff --git a/netbox/templates/dcim/cable_trace.html b/netbox/templates/dcim/cable_trace.html index 12000f09d..b004634bb 100644 --- a/netbox/templates/dcim/cable_trace.html +++ b/netbox/templates/dcim/cable_trace.html @@ -3,7 +3,7 @@ {% load i18n %} {% block title %} - {% blocktrans with object_type=object|meta:"verbose_name"|bettertitle %} + {% blocktrans trimmed with object_type=object|meta:"verbose_name"|bettertitle %} Cable Trace for {{ object_type }} {{ object }} {% endblocktrans %} {% endblock %} @@ -23,7 +23,15 @@
    - {% if path.is_split %} + {% if path.is_split and path.get_asymmetric_nodes %} +

    {% trans "Asymmetric Path" %}!

    +

    {% trans "The nodes below have no links and result in an asymmetric path" %}:

    +
      + {% for next_node in path.get_asymmetric_nodes %} +
    • {{ next_node|linkify }}
    • + {% endfor %} +
    + {% elif path.is_split %}

    {% trans "Path split" %}!

    {% trans "Select a node below to continue" %}:

      @@ -51,10 +59,10 @@ {% trans "Total length" %} {% if total_length %} - {{ total_length|floatformat:"-2" }}{% if not is_definitive %}+{% endif %} {% trans "Meters" %} / - {{ total_length|meters_to_feet|floatformat:"-2" }} {% trans "Feet" %} + {{ total_length|floatformat:"-2" }}{% if not is_definitive %}+{% endif %} {% trans "Meters" %} / + {{ total_length|meters_to_feet|floatformat:"-2" }} {% trans "Feet" %} {% else %} - {% trans "N/A" %} + {{ ''|placeholder }} {% endif %} diff --git a/netbox/templates/dcim/component_list.html b/netbox/templates/dcim/component_list.html new file mode 100644 index 000000000..a80dcfea8 --- /dev/null +++ b/netbox/templates/dcim/component_list.html @@ -0,0 +1,22 @@ +{% extends 'generic/object_list.html' %} +{% load buttons %} +{% load helpers %} +{% load i18n %} + +{% block bulk_buttons %} +
      + {% if 'bulk_edit' in actions %} + {% bulk_edit_button model query_params=request.GET %} + {% endif %} + {% if 'bulk_rename' in actions %} + {% with bulk_rename_view=model|validated_viewname:"bulk_rename" %} + + {% endwith %} + {% endif %} +
      + {% if 'bulk_delete' in actions %} + {% bulk_delete_button model query_params=request.GET %} + {% endif %} +{% endblock %} diff --git a/netbox/templates/dcim/device.html b/netbox/templates/dcim/device.html index aeab6e399..39e78c81b 100644 --- a/netbox/templates/dcim/device.html +++ b/netbox/templates/dcim/device.html @@ -5,6 +5,7 @@ {% load helpers %} {% load plugins %} {% load i18n %} +{% load mptt %} {% block content %}
      @@ -15,16 +16,7 @@ - + @@ -32,16 +24,7 @@ - + @@ -296,7 +279,7 @@ {% for leg in utilization.legs %} diff --git a/netbox/templates/dcim/device/components_base.html b/netbox/templates/dcim/device/components_base.html index 1e3d8a39d..b6ec700b0 100644 --- a/netbox/templates/dcim/device/components_base.html +++ b/netbox/templates/dcim/device/components_base.html @@ -2,7 +2,15 @@ {% load helpers %} {% block bulk_edit_controls %} - {{ block.super }} + {% with bulk_edit_view=child_model|validated_viewname:"bulk_edit" %} + {% if 'bulk_edit' in actions and bulk_edit_view %} + + {% endif %} + {% endwith %} {% with bulk_rename_view=child_model|validated_viewname:"bulk_rename" %} {% if 'bulk_rename' in actions and bulk_rename_view %} + {% endblock extra_table_controls %} diff --git a/netbox/templates/dcim/device/interfaces.html b/netbox/templates/dcim/device/interfaces.html index cab46886b..8b3fe3097 100644 --- a/netbox/templates/dcim/device/interfaces.html +++ b/netbox/templates/dcim/device/interfaces.html @@ -2,6 +2,10 @@ {% load helpers %} {% load i18n %} +{% block table_controls %} + {% include 'dcim/device/inc/interface_table_controls.html' with table_modal="DeviceInterfaceTable_config" %} +{% endblock table_controls %} + {% block bulk_delete_controls %} {{ block.super }} {% with bulk_disconnect_view=child_model|validated_viewname:"bulk_disconnect" %} diff --git a/netbox/templates/dcim/devicebay_delete.html b/netbox/templates/dcim/devicebay_delete.html index 47e2ba545..9e54baa86 100644 --- a/netbox/templates/dcim/devicebay_delete.html +++ b/netbox/templates/dcim/devicebay_delete.html @@ -2,8 +2,14 @@ {% load form_helpers %} {% load i18n %} -{% block title %}{% blocktrans %}Delete device bay {{ devicebay }}?{% endblocktrans %}{% endblock %} +{% block title %} + {% blocktrans %}Delete device bay {{ devicebay }}?{% endblocktrans %} +{% endblock %} {% block message %} -

      {% blocktrans %}Are you sure you want to delete this device bay from {{ devicebay.device }}?{% endblocktrans %}

      +

      + {% blocktrans trimmed with device=devicebay.device %} + Are you sure you want to delete this device bay from {{ device }}? + {% endblocktrans %} +

      {% endblock %} diff --git a/netbox/templates/dcim/devicebay_depopulate.html b/netbox/templates/dcim/devicebay_depopulate.html index a0c026800..b094f5993 100644 --- a/netbox/templates/dcim/devicebay_depopulate.html +++ b/netbox/templates/dcim/devicebay_depopulate.html @@ -3,14 +3,14 @@ {% load i18n %} {% block title %} - {% blocktrans with device=device_bay.installed_device %} + {% blocktrans trimmed with device=device_bay.installed_device %} Remove {{ device }} from {{ device_bay }}? {% endblocktrans %} {% endblock %} {% block message %}

      - {% blocktrans with device=device_bay.installed_device %} + {% blocktrans trimmed with device=device_bay.installed_device %} Are you sure you want to remove {{ device }} from {{ device_bay }}? {% endblocktrans %}

      diff --git a/netbox/templates/dcim/devicetype.html b/netbox/templates/dcim/devicetype.html index 419ab7f00..35b089664 100644 --- a/netbox/templates/dcim/devicetype.html +++ b/netbox/templates/dcim/devicetype.html @@ -40,6 +40,10 @@ + + + + diff --git a/netbox/templates/dcim/devicetype/component_templates.html b/netbox/templates/dcim/devicetype/component_templates.html index a2dcb6c0e..9a5210762 100644 --- a/netbox/templates/dcim/devicetype/component_templates.html +++ b/netbox/templates/dcim/devicetype/component_templates.html @@ -27,7 +27,7 @@
      diff --git a/netbox/templates/dcim/inc/nonracked_devices.html b/netbox/templates/dcim/inc/nonracked_devices.html deleted file mode 100644 index f6a427d25..000000000 --- a/netbox/templates/dcim/inc/nonracked_devices.html +++ /dev/null @@ -1,83 +0,0 @@ -{% load helpers %} -{% load i18n %} - -
      -
      - {% trans "Non-Racked Devices" %} -
      -
      - {% if nonracked_devices %} -
      {% trans "Region" %} - {% if object.site.region %} - {% for region in object.site.region.get_ancestors %} - {{ region|linkify }} / - {% endfor %} - {{ object.site.region|linkify }} - {% else %} - {{ ''|placeholder }} - {% endif %} - {% nested_tree object.site.region %}
      {% trans "Site" %}
      {% trans "Location" %} - {% if object.location %} - {% for location in object.location.get_ancestors %} - {{ location|linkify }} / - {% endfor %} - {{ object.location|linkify }} - {% else %} - {{ ''|placeholder }} - {% endif %} - {% nested_tree object.location %}
      {% trans "Rack" %}
      - {% trans "Leg" context "Leg of a power feed" %} {{ leg }} + {% trans "Leg" context "Leg of a power feed" %} {{ leg.name }} {{ leg.outlet_count }} {{ leg.allocated }} {% trans "Height (U" %}) {{ object.u_height|floatformat }}
      {% trans "Exclude From Utilization" %}){% checkmark object.exclude_from_utilization %}
      {% trans "Full Depth" %} {% checkmark object.is_full_depth %}
      - - - - - - - {% for device in nonracked_devices %} - - - - - {% if device.parent_bay %} - - - {% else %} - - {% endif %} - - {% endfor %} -
      {% trans "Name" %}{% trans "Role" %}{% trans "Type" %}{% trans "Parent Device" %}
      - {{ device }} - {{ device.role }}{{ device.device_type }}{{ device.parent_bay.device|linkify }}{{ device.parent_bay }}
      - - {% if total_nonracked_devices_count > nonracked_devices.count %} - {% if object|meta:'verbose_name' == 'site' %} -
      - {% blocktrans with count=nonracked_devices.count total=total_nonracked_devices_count %} - Displaying {{ count }} of {{ total }} devices - {% endblocktrans %} - ({% trans "View full list" %}) -
      - {% elif object|meta:'verbose_name' == 'location' %} -
      - {% blocktrans with count=nonracked_devices.count total=total_nonracked_devices_count %} - Displaying {{ count }} of {{ total }} devices - {% endblocktrans %} - ({% trans "View full list" %}) -
      - {% endif %} - {% endif %} - - {% else %} -
      - {% trans "None" %} -
      - {% endif %} -
      - - {% if perms.dcim.add_device %} - {% if object|meta:'verbose_name' == 'rack' %} - - {% elif object|meta:'verbose_name' == 'site' %} - - {% elif object|meta:'verbose_name' == 'location' %} - - {% endif %} - {% endif %} -
    diff --git a/netbox/templates/dcim/interface.html b/netbox/templates/dcim/interface.html index f4cba49ee..6b15a766d 100644 --- a/netbox/templates/dcim/interface.html +++ b/netbox/templates/dcim/interface.html @@ -86,6 +86,14 @@ {% trans "Transmit power (dBm)" %} {{ object.tx_power|placeholder }} + + {% trans "Tunnel" %} + {{ object.tunnel_termination.tunnel|linkify|placeholder }} + + + {% trans "L2VPN" %} + {{ object.l2vpn_termination.l2vpn|linkify|placeholder }} +
    @@ -105,10 +113,6 @@ {% trans "LAG" %} {{ object.lag|linkify|placeholder }} - - {% trans "L2VPN" %} - {{ object.l2vpn_termination.l2vpn|linkify|placeholder }} -
    diff --git a/netbox/templates/dcim/location.html b/netbox/templates/dcim/location.html index c9a8231b9..854b93f9e 100644 --- a/netbox/templates/dcim/location.html +++ b/netbox/templates/dcim/location.html @@ -66,7 +66,6 @@
    {% include 'inc/panels/related_objects.html' %} - {% include 'dcim/inc/nonracked_devices.html' %} {% include 'inc/panels/image_attachments.html' %} {% plugin_right_page object %}
    @@ -79,6 +78,27 @@ hx-get="{% url 'dcim:location_list' %}?parent_id={{ object.pk }}" hx-trigger="load" >
    + {% if perms.dcim.add_location %} + + {% endif %} +
    +
    +
    Non-Racked Devices
    +
    + {% if perms.dcim.add_device %} + + {% endif %}
    {% plugin_full_width_page object %}
    diff --git a/netbox/templates/dcim/moduletype/component_templates.html b/netbox/templates/dcim/moduletype/component_templates.html index 63cc1bb99..bb54a33f9 100644 --- a/netbox/templates/dcim/moduletype/component_templates.html +++ b/netbox/templates/dcim/moduletype/component_templates.html @@ -27,7 +27,7 @@
    diff --git a/netbox/templates/dcim/platform.html b/netbox/templates/dcim/platform.html index a974f9f93..9448ad3e5 100644 --- a/netbox/templates/dcim/platform.html +++ b/netbox/templates/dcim/platform.html @@ -13,7 +13,7 @@ {% block extra_controls %} {% if perms.dcim.add_device %} - + {% trans "Add Device" %} {% endif %} @@ -44,17 +44,6 @@ {% trans "Config Template" %} {{ object.config_template|linkify|placeholder }} - - - {% trans "NAPALM Driver" %} - - - diff --git a/netbox/templates/dcim/powerfeed.html b/netbox/templates/dcim/powerfeed.html index ce00f333c..9b791d0e2 100644 --- a/netbox/templates/dcim/powerfeed.html +++ b/netbox/templates/dcim/powerfeed.html @@ -73,7 +73,7 @@ {% endif %} {% else %} - {% trans "N/A" %} + {{ ''|placeholder }} {% endif %} {% endwith %} diff --git a/netbox/templates/dcim/rack.html b/netbox/templates/dcim/rack.html index 671c7ab2e..857061d00 100644 --- a/netbox/templates/dcim/rack.html +++ b/netbox/templates/dcim/rack.html @@ -4,6 +4,7 @@ {% load static %} {% load plugins %} {% load i18n %} +{% load mptt %} {% block content %}
    @@ -15,26 +16,18 @@
    - + + + + + - + diff --git a/netbox/templates/dcim/rack/base.html b/netbox/templates/dcim/rack/base.html index 27ac284a2..2f4eb227c 100644 --- a/netbox/templates/dcim/rack/base.html +++ b/netbox/templates/dcim/rack/base.html @@ -1,7 +1,7 @@ {% extends 'generic/object.html' %} {% load i18n %} -{% block title %}{% blocktrans %}Rack {{ object }}{% endblocktrans %}{% endblock %} +{% block title %}{% trans "Rack" %} {{ object }}{% endblock %} {% block breadcrumbs %} {{ block.super }} diff --git a/netbox/templates/dcim/rackreservation.html b/netbox/templates/dcim/rackreservation.html index 8edb75f32..3d145145f 100644 --- a/netbox/templates/dcim/rackreservation.html +++ b/netbox/templates/dcim/rackreservation.html @@ -4,6 +4,7 @@ {% load static %} {% load plugins %} {% load i18n %} +{% load mptt %} {% block breadcrumbs %} {{ block.super }} @@ -20,25 +21,24 @@
    {% trans "Site" %}{% trans "Region" %} - {% if object.site.region %} - {{ object.site.region|linkify }} / - {% endif %} - {{ object.site|linkify }} + {% nested_tree object.site.region %}
    {% trans "Site" %}{{ object.site|linkify }}
    {% trans "Location" %} - {% if object.location %} - {% for location in object.location.get_ancestors %} - {{ location|linkify }} / - {% endfor %} - {{ object.location|linkify }} - {% else %} - {{ ''|placeholder }} - {% endif %} - {% nested_tree object.location %}
    {% trans "Facility ID" %}
    - {% with rack=object.rack %} - - - - - - - - - - - - - {% endwith %} + + + + + + + + + + + + + + + +
    {% trans "Site" %} - {% if rack.site.region %} - {{ rack.site.region|linkify }} / - {% endif %} - {{ rack.site|linkify }} -
    {% trans "Location" %}{{ rack.location|linkify|placeholder }}
    {% trans "Rack" %}{{ rack|linkify }}
    {% trans "Region" %} + {% nested_tree object.rack.site.region %} +
    {% trans "Site" %}{{ object.rack.site|linkify }}
    {% trans "Location" %}{{ object.rack.location|linkify|placeholder }}
    {% trans "Rack" %}{{ object.rack|linkify }}
    diff --git a/netbox/templates/dcim/site.html b/netbox/templates/dcim/site.html index cec954324..16a870182 100644 --- a/netbox/templates/dcim/site.html +++ b/netbox/templates/dcim/site.html @@ -3,6 +3,7 @@ {% load plugins %} {% load tz %} {% load i18n %} +{% load mptt %} {% block breadcrumbs %} {{ block.super }} @@ -29,27 +30,13 @@ {% trans "Region" %} - {% if object.region %} - {% for region in object.region.get_ancestors %} - {{ region|linkify }} / - {% endfor %} - {{ object.region|linkify }} - {% else %} - {{ ''|placeholder }} - {% endif %} + {% nested_tree object.region %} {% trans "Group" %} - {% if object.group %} - {% for group in object.group.get_ancestors %} - {{ group|linkify }} / - {% endfor %} - {{ object.group|linkify }} - {% else %} - {{ ''|placeholder }} - {% endif %} + {% nested_tree object.group %} @@ -132,56 +119,40 @@
    {% include 'inc/panels/related_objects.html' with filter_name='site_id' %} -
    -
    {% trans "Locations" %}
    -
    - {% if locations %} - - - - - - - - {% for location in locations %} - - - - - - - {% endfor %} -
    {% trans "Location" %}{% trans "Racks" %}{% trans "Devices" %}
    - {% for i in location.level|as_range %}{% endfor %} - {{ location|linkify }} - - {{ location.rack_count }} - - {{ location.device_count }} - - - - -
    - {% else %} - {% trans "None" %} - {% endif %} -
    - {% if perms.dcim.add_location %} - - {% endif %} -
    {% include 'inc/panels/image_attachments.html' %} {% plugin_right_page object %}
    - {% include 'dcim/inc/nonracked_devices.html' %} +
    +
    Locations
    +
    + {% if perms.dcim.add_location %} + + {% endif %} +
    +
    +
    Non-Racked Devices
    +
    + {% if perms.dcim.add_device %} + + {% endif %} +
    {% plugin_full_width_page object %}
    diff --git a/netbox/templates/dcim/virtualchassis_add_member.html b/netbox/templates/dcim/virtualchassis_add_member.html index 6f9b24183..ceb2c71b3 100644 --- a/netbox/templates/dcim/virtualchassis_add_member.html +++ b/netbox/templates/dcim/virtualchassis_add_member.html @@ -2,7 +2,11 @@ {% load form_helpers %} {% load i18n %} -{% block title %}{% blocktrans %}Add New Member to Virtual Chassis {{ virtual_chassis }}{% endblocktrans %}{% endblock %} +{% block title %} + {% blocktrans trimmed %} + Add New Member to Virtual Chassis {{ virtual_chassis }} + {% endblocktrans %} +{% endblock %} {% block content %}
    diff --git a/netbox/templates/dcim/virtualchassis_edit.html b/netbox/templates/dcim/virtualchassis_edit.html index cfc3de2ec..b8f232fc2 100644 --- a/netbox/templates/dcim/virtualchassis_edit.html +++ b/netbox/templates/dcim/virtualchassis_edit.html @@ -4,7 +4,7 @@ {% load i18n %} {% block title %} - {% blocktrans with name=vc_form.instance %} + {% blocktrans trimmed with name=vc_form.instance %} Editing Virtual Chassis {{ name }} {% endblocktrans %} {% endblock %} diff --git a/netbox/templates/dcim/virtualchassis_remove_member.html b/netbox/templates/dcim/virtualchassis_remove_member.html index 520f3d862..363c2b195 100644 --- a/netbox/templates/dcim/virtualchassis_remove_member.html +++ b/netbox/templates/dcim/virtualchassis_remove_member.html @@ -6,7 +6,7 @@ {% block message %}

    - {% blocktrans with name=device.virtual_chassis %} + {% blocktrans trimmed with name=device.virtual_chassis %} Are you sure you want to remove {{ device }} from virtual chassis {{ name }}? {% endblocktrans %}

    diff --git a/netbox/templates/django/forms/widgets/checkbox.html b/netbox/templates/django/forms/widgets/checkbox.html new file mode 100644 index 000000000..359657136 --- /dev/null +++ b/netbox/templates/django/forms/widgets/checkbox.html @@ -0,0 +1,7 @@ +{% comment %} + Include a hidden field of the same name to ensure that unchecked checkboxes + are always included in the submitted form data. Omit fields names + _selected_action to avoid breaking the admin UI. +{% endcomment %} +{% if widget.name != '_selected_action' %}{% endif %} +{% include "django/forms/widgets/input.html" %} diff --git a/netbox/templates/exceptions/import_error.html b/netbox/templates/exceptions/import_error.html index 70896328d..1996412e1 100644 --- a/netbox/templates/exceptions/import_error.html +++ b/netbox/templates/exceptions/import_error.html @@ -7,19 +7,20 @@

    - {% blocktrans %} - Missing required packages. This installation of NetBox might be missing one or more required - Python packages. These packages are listed in requirements.txt and - local_requirements.txt, and are normally installed as part of the installation or upgrade process. - To verify installed packages, run pip freeze from the console and compare the output to the list of - required packages. + {% trans "Missing required packages" %}. + {% blocktrans trimmed %} + This installation of NetBox might be missing one or more required Python packages. These packages are listed in + requirements.txt and local_requirements.txt, and are normally installed as part of the + installation or upgrade process. To verify installed packages, run pip freeze from the console and + compare the output to the list of required packages. {% endblocktrans %}

    - {% blocktrans %} - WSGI service not restarted after upgrade. If this installation has recently been upgraded, check - that the WSGI service (e.g. gunicorn or uWSGI) has been restarted. This ensures that the new code is running. + {% trans "WSGI service not restarted after upgrade" %}. + {% blocktrans trimmed %} + If this installation has recently been upgraded, check that the WSGI service (e.g. gunicorn or uWSGI) has been + restarted. This ensures that the new code is running. {% endblocktrans %}

    {% endblock message %} diff --git a/netbox/templates/exceptions/permission_error.html b/netbox/templates/exceptions/permission_error.html index 3df6ad5c8..778508117 100644 --- a/netbox/templates/exceptions/permission_error.html +++ b/netbox/templates/exceptions/permission_error.html @@ -7,10 +7,10 @@

    - {% blocktrans with media_root=settings.MEDIA_ROOT %} - Insufficient write permission to the media root. The configured media root is - {{ media_root }}. Ensure that the user NetBox runs as has access to write files to all locations - within this path. + {% trans "Insufficient write permission to the media root" %}. + {% blocktrans trimmed with media_root=settings.MEDIA_ROOT %} + The configured media root is {{ media_root }}. Ensure that the user NetBox runs as has access to + write files to all locations within this path. {% endblocktrans %}

    {% endblock message %} diff --git a/netbox/templates/exceptions/programming_error.html b/netbox/templates/exceptions/programming_error.html index 5d82e4511..fdcbcbda0 100644 --- a/netbox/templates/exceptions/programming_error.html +++ b/netbox/templates/exceptions/programming_error.html @@ -7,18 +7,18 @@

    - {% blocktrans %} - Database migrations missing. When upgrading to a new NetBox release, the upgrade script must be - run to apply any new database migrations. You can run migrations manually by executing - python3 manage.py migrate from the command line. + {% trans "Database migrations missing" %}. + {% blocktrans trimmed %} + When upgrading to a new NetBox release, the upgrade script must be run to apply any new database migrations. You + can run migrations manually by executing python3 manage.py migrate from the command line. {% endblocktrans %}

    - {% blocktrans %} - Unsupported PostgreSQL version. Ensure that PostgreSQL version 12 or later is in use. You can - check this by connecting to the database using NetBox's credentials and issuing a query for - SELECT VERSION(). + {% trans "Unsupported PostgreSQL version" %}. + {% blocktrans trimmed %} + Ensure that PostgreSQL version 12 or later is in use. You can check this by connecting to the database using + NetBox's credentials and issuing a query for SELECT VERSION(). {% endblocktrans %}

    {% endblock message %} diff --git a/netbox/templates/extras/customfield.html b/netbox/templates/extras/customfield.html index 8204fcbdd..95919b414 100644 --- a/netbox/templates/extras/customfield.html +++ b/netbox/templates/extras/customfield.html @@ -32,7 +32,7 @@ {{ object.group_name|placeholder }} - + {% trans "Description" %} {{ object.description|markdown|placeholder }} @@ -79,8 +79,12 @@ {{ object.weight }} - {% trans "UI Visibility" %} - {{ object.get_ui_visibility_display }} + {% trans "UI Visible" %} + {{ object.get_ui_visible_display }} + + + {% trans "UI Editable" %} + {{ object.get_ui_editable_display }} @@ -125,6 +129,24 @@ + + {% plugin_right_page object %} diff --git a/netbox/templates/extras/dashboard/reset.html b/netbox/templates/extras/dashboard/reset.html index ceb032c0d..b163cabb7 100644 --- a/netbox/templates/extras/dashboard/reset.html +++ b/netbox/templates/extras/dashboard/reset.html @@ -4,6 +4,14 @@ {% block title %}{% trans "Reset Dashboard" %}?{% endblock %} {% block message %} -

    {% blocktrans %}This will remove all configured widgets and restore the default dashboard configuration.{% endblocktrans %}

    -

    {% blocktrans %}This change affects only your dashboard, and will not impact other users.{% endblocktrans %}

    +

    + {% blocktrans trimmed %} + This will remove all configured widgets and restore the default dashboard configuration. + {% endblocktrans %} +

    +

    + {% blocktrans trimmed %} + This change affects only your dashboard, and will not impact other users. + {% endblocktrans %} +

    {% endblock %} diff --git a/netbox/templates/extras/dashboard/widget.html b/netbox/templates/extras/dashboard/widget.html index 1559363d3..b8dec3de2 100644 --- a/netbox/templates/extras/dashboard/widget.html +++ b/netbox/templates/extras/dashboard/widget.html @@ -9,14 +9,16 @@ gs-id="{{ widget.id }}" >
    -
    +
    + > + +
    + > + +
    {% if widget.title %} {{ widget.title }} diff --git a/netbox/templates/extras/dashboard/widgets/bookmarks.html b/netbox/templates/extras/dashboard/widgets/bookmarks.html index e8638d20e..80eb6238e 100644 --- a/netbox/templates/extras/dashboard/widgets/bookmarks.html +++ b/netbox/templates/extras/dashboard/widgets/bookmarks.html @@ -11,6 +11,6 @@ {% else %}

    - {% blocktrans %}No bookmarks have been added yet.{% endblocktrans %} + {% trans "No bookmarks have been added yet." %}

    {% endif %} diff --git a/netbox/templates/extras/eventrule.html b/netbox/templates/extras/eventrule.html new file mode 100644 index 000000000..eff7e60e5 --- /dev/null +++ b/netbox/templates/extras/eventrule.html @@ -0,0 +1,133 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} +{% load i18n %} + +{% block content %} +
    +
    +
    +
    + {% trans "Event Rule" %} +
    +
    + + + + + + + + + + + + + +
    {% trans "Name" %}{{ object.name }}
    {% trans "Enabled" %}{% checkmark object.enabled %}
    {% trans "Description" %}{{ object.description|placeholder }}
    +
    +
    +
    +
    + {% trans "Object Types" %} +
    +
    + + {% for ct in object.content_types.all %} + + + + {% endfor %} +
    {{ ct }}
    +
    +
    +
    +
    + {% trans "Events" %} +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    {% trans "Create" %}{% checkmark object.type_create %}
    {% trans "Update" %}{% checkmark object.type_update %}
    {% trans "Delete" %}{% checkmark object.type_delete %}
    {% trans "Job start" %}{% checkmark object.type_job_start %}
    {% trans "Job end" %}{% checkmark object.type_job_end %}
    +
    +
    + {% plugin_left_page object %} +
    +
    +
    +
    + {% trans "Conditions" %} +
    +
    + {% if object.conditions %} +
    {{ object.conditions|json }}
    + {% else %} +

    {% trans "None" %}

    + {% endif %} +
    +
    +
    +
    + {% trans "Action" %} +
    +
    + + + + + + + + + + + + + +
    {% trans "Type" %}{{ object.get_action_type_display }}
    {% trans "Object" %} + {% if object.action_type == 'script' %} + + {{ object.action_object }} / {{ object.action_parameters.script_name }} + + {% else %} + {{ object.action_object|linkify }} + {% endif %} +
    {% trans "Data" %} + {% if object.action_data %} +
    {{ object.action_data|json }}
    + {% else %} + {{ ''|placeholder }} + {% endif %} +
    +
    +
    + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' %} + {% plugin_right_page object %} +
    +
    +
    +
    + {% plugin_full_width_page object %} +
    +
    +{% endblock %} diff --git a/netbox/templates/extras/objectchange.html b/netbox/templates/extras/objectchange.html index d681ecd75..63f2019ae 100644 --- a/netbox/templates/extras/objectchange.html +++ b/netbox/templates/extras/objectchange.html @@ -153,7 +153,11 @@ {% include 'inc/panel_table.html' with table=related_changes_table heading='Related Changes' panel_class='default' %} {% if related_changes_count > related_changes_table.rows|length %} {% endif %}
    diff --git a/netbox/templates/extras/report.html b/netbox/templates/extras/report.html index 07d6fcfd5..806279d20 100644 --- a/netbox/templates/extras/report.html +++ b/netbox/templates/extras/report.html @@ -8,11 +8,17 @@ {% if perms.extras.run_report %}
    + {% if not report.is_valid %} +
    + + {% trans "This report is invalid and cannot be run." %} +
    + {% endif %} {% csrf_token %} {% render_form form %}
    -
    -
    -
    - {% trans "Events" %} -
    -
    - - - - - - - - - - - - - - - - - - - - + +
    {% trans "Create" %}{% checkmark object.type_create %}
    {% trans "Update" %}{% checkmark object.type_update %}
    {% trans "Delete" %}{% checkmark object.type_delete %}
    {% trans "Job start" %}{% checkmark object.type_job_start %}
    {% trans "Job end" %}{% checkmark object.type_job_end %}{% trans "Description" %}{{ object.description|placeholder }}
    @@ -97,32 +68,6 @@ {% plugin_left_page object %}
    -
    -
    - {% trans "Assigned Models" %} -
    -
    - - {% for ct in object.content_types.all %} - - - - {% endfor %} -
    {{ ct }}
    -
    -
    -
    -
    - {% trans "Conditions" %} -
    -
    - {% if object.conditions %} -
    {{ object.conditions|json }}
    - {% else %} -

    {% trans "None" %}

    - {% endif %} -
    -
    {% trans "Additional Headers" %} diff --git a/netbox/templates/generic/bulk_delete.html b/netbox/templates/generic/bulk_delete.html index 58b0e83ee..47aca4171 100644 --- a/netbox/templates/generic/bulk_delete.html +++ b/netbox/templates/generic/bulk_delete.html @@ -24,7 +24,7 @@ Context:

    {% trans "Confirm Bulk Deletion" %}


    {% trans "Warning" context "Noun" %}: - {% blocktrans with count=table.rows|length type_plural=model|meta:"verbose_name_plural" %} + {% blocktrans trimmed with count=table.rows|length type_plural=model|meta:"verbose_name_plural" %} The following operation will delete {{ count }} {{ type_plural }}. Please carefully review the objects to be deleted and confirm below. {% endblocktrans %} diff --git a/netbox/templates/generic/bulk_import.html b/netbox/templates/generic/bulk_import.html index 08f13765c..f78cb0bf5 100644 --- a/netbox/templates/generic/bulk_import.html +++ b/netbox/templates/generic/bulk_import.html @@ -45,6 +45,7 @@ Context: {% render_field form.data %} {% render_field form.format %} + {% render_field form.csv_delimiter %}
    @@ -66,6 +67,7 @@ Context: {% render_field form.upload_file %} {% render_field form.format %} + {% render_field form.csv_delimiter %}
    @@ -87,6 +89,7 @@ Context: {% render_field form.data_source %} {% render_field form.data_file %} {% render_field form.format %} + {% render_field form.csv_delimiter %}
    @@ -177,7 +180,7 @@ Context: {% if field|widget_type == 'dateinput' %} {% trans "Format: YYYY-MM-DD" %} {% elif field|widget_type == 'checkboxinput' %} - {% trans "Specify \"true\" or \"false" %}" + {% trans "Specify true or false" %} {% endif %} @@ -189,11 +192,15 @@ Context:

    - {% blocktrans %}Required fields must be specified for all objects.{% endblocktrans %} + {% blocktrans trimmed %} + Required fields must be specified for all objects. + {% endblocktrans %}

    - {% blocktrans with example="vrf.rd" %}Related objects may be referenced by any unique attribute. For example, {{ example }} would identify a VRF by its route distinguisher.{% endblocktrans %} + {% blocktrans trimmed with example="vrf.rd" %} + Related objects may be referenced by any unique attribute. For example, {{ example }} would identify a VRF by its route distinguisher. + {% endblocktrans %}

    {% endif %} diff --git a/netbox/templates/generic/bulk_remove.html b/netbox/templates/generic/bulk_remove.html index 2691fbd3a..0c76897db 100644 --- a/netbox/templates/generic/bulk_remove.html +++ b/netbox/templates/generic/bulk_remove.html @@ -12,13 +12,13 @@ + +
    +
    +
    +
    {% trans "Virtual Disks" %}
    +
    + {% if perms.virtualization.add_virtualdisk %} + + {% endif %} +
    +
    +
    +
    {% plugin_full_width_page object %} diff --git a/netbox/templates/virtualization/virtualmachine/base.html b/netbox/templates/virtualization/virtualmachine/base.html index 8a1d68ed6..a147ef944 100644 --- a/netbox/templates/virtualization/virtualmachine/base.html +++ b/netbox/templates/virtualization/virtualmachine/base.html @@ -16,9 +16,23 @@ {% endblock %} {% block extra_controls %} - {% if perms.virtualization.add_vminterface %} - - {% trans "Add Interfaces" %} - - {% endif %} + + + {% endblock %} diff --git a/netbox/templates/virtualization/virtualmachine/virtual_disks.html b/netbox/templates/virtualization/virtualmachine/virtual_disks.html new file mode 100644 index 000000000..a947f9824 --- /dev/null +++ b/netbox/templates/virtualization/virtualmachine/virtual_disks.html @@ -0,0 +1,14 @@ +{% extends 'generic/object_children.html' %} +{% load helpers %} +{% load i18n %} + +{% block bulk_edit_controls %} + {{ block.super }} + {% if 'bulk_rename' in actions %} + + {% endif %} +{% endblock bulk_edit_controls %} diff --git a/netbox/templates/virtualization/virtualmachine_list.html b/netbox/templates/virtualization/virtualmachine_list.html index bbb3ddab4..8c5e81256 100644 --- a/netbox/templates/virtualization/virtualmachine_list.html +++ b/netbox/templates/virtualization/virtualmachine_list.html @@ -15,6 +15,13 @@ {% endif %} + {% if perms.virtualization.add_virtualdisk %} +
  • + +
  • + {% endif %}
    {% endif %} diff --git a/netbox/templates/virtualization/vminterface.html b/netbox/templates/virtualization/vminterface.html index b7cfb9b98..cf22ddf89 100644 --- a/netbox/templates/virtualization/vminterface.html +++ b/netbox/templates/virtualization/vminterface.html @@ -66,6 +66,10 @@ {% trans "802.1Q Mode" %} {{ object.get_mode_display|placeholder }} + + {% trans "Tunnel" %} + {{ object.tunnel_termination.tunnel|linkify|placeholder }} +
    diff --git a/netbox/templates/vpn/ikepolicy.html b/netbox/templates/vpn/ikepolicy.html new file mode 100644 index 000000000..da116cfa2 --- /dev/null +++ b/netbox/templates/vpn/ikepolicy.html @@ -0,0 +1,68 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} +{% load i18n %} + +{% block content %} +
    +
    +
    +
    {% trans "IKE Policy" %}
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "IKE Version" %}{{ object.get_version_display }}
    {% trans "Mode" %}{{ object.get_mode_display }}
    {% trans "Pre-Shared Key" %} + {{ object.preshared_key|placeholder }} + {% if object.preshared_key %} + + {% endif %} +
    {% trans "IPSec Profiles" %} + {{ object.ipsec_profiles.count }} +
    +
    +
    + {% plugin_left_page object %} +
    +
    + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/comments.html' %} + {% include 'inc/panels/tags.html' %} + {% plugin_right_page object %} +
    +
    +
    +
    +
    +
    {% trans "Proposals" %}
    +
    +
    + {% plugin_full_width_page object %} +
    +
    +{% endblock %} diff --git a/netbox/templates/vpn/ikeproposal.html b/netbox/templates/vpn/ikeproposal.html new file mode 100644 index 000000000..c8b25f623 --- /dev/null +++ b/netbox/templates/vpn/ikeproposal.html @@ -0,0 +1,64 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} +{% load i18n %} + +{% block content %} +
    +
    +
    +
    {% trans "IKE Proposal" %}
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Authentication method" %}{{ object.get_authentication_method_display }}
    {% trans "Encryption algorithm" %}{{ object.get_encryption_algorithm_display }}
    {% trans "Authentication algorithm" %}{{ object.get_authentication_algorithm_display }}
    {% trans "DH group" %}{{ object.get_group_display }}
    {% trans "SA lifetime (seconds)" %}{{ object.sa_lifetime|placeholder }}
    {% trans "IKE Policies" %} + {{ object.ike_policies.count }} +
    +
    +
    + {% plugin_left_page object %} +
    +
    + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/comments.html' %} + {% include 'inc/panels/tags.html' %} + {% plugin_right_page object %} +
    +
    +
    +
    + {% plugin_full_width_page object %} +
    +
    +{% endblock %} diff --git a/netbox/templates/vpn/ipsecpolicy.html b/netbox/templates/vpn/ipsecpolicy.html new file mode 100644 index 000000000..3e75a7db7 --- /dev/null +++ b/netbox/templates/vpn/ipsecpolicy.html @@ -0,0 +1,56 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} +{% load i18n %} + +{% block content %} +
    +
    +
    +
    {% trans "IPSec Policy" %}
    +
    + + + + + + + + + + + + + + + + + +
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "PFS group" %}{{ object.get_pfs_group_display|placeholder }}
    {% trans "IPSec Profiles" %} + {{ object.ipsec_profiles.count }} +
    +
    +
    + {% plugin_left_page object %} +
    +
    + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/comments.html' %} + {% include 'inc/panels/tags.html' %} + {% plugin_right_page object %} +
    +
    +
    +
    +
    +
    +
    {% trans "Proposals" %}
    +
    +
    + {% plugin_full_width_page object %} +
    +
    +{% endblock %} diff --git a/netbox/templates/vpn/ipsecprofile.html b/netbox/templates/vpn/ipsecprofile.html new file mode 100644 index 000000000..c1172870f --- /dev/null +++ b/netbox/templates/vpn/ipsecprofile.html @@ -0,0 +1,108 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} +{% load i18n %} + +{% block content %} +
    +
    +
    +
    {% trans "IPSec Profile" %}
    +
    + + + + + + + + + + + + + +
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Mode" %}{{ object.get_mode_display }}
    +
    +
    + {% include 'inc/panels/tags.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/comments.html' %} + {% plugin_left_page object %} +
    +
    +
    +
    {% trans "IKE Policy" %}
    +
    + + + + + + + + + + + + + + + + + + + + + +
    {% trans "Name" %}{{ object.ike_policy|linkify }}
    {% trans "Description" %}{{ object.ike_policy.description|placeholder }}
    {% trans "Version" %}{{ object.ike_policy.get_version_display }}
    {% trans "Mode" %}{{ object.ike_policy.get_mode_display }}
    {% trans "Proposals" %} +
      + {% for proposal in object.ike_policy.proposals.all %} +
    • + {{ proposal }} +
    • + {% endfor %} +
    +
    +
    +
    +
    +
    {% trans "IPSec Policy" %}
    +
    + + + + + + + + + + + + + + + + + +
    {% trans "Name" %}{{ object.ipsec_policy|linkify }}
    {% trans "Description" %}{{ object.ipsec_policy.description|placeholder }}
    {% trans "Proposals" %} +
      + {% for proposal in object.ipsec_policy.proposals.all %} +
    • + {{ proposal }} +
    • + {% endfor %} +
    +
    {% trans "PFS Group" %}{{ object.ipsec_policy.get_pfs_group_display }}
    +
    +
    + {% plugin_right_page object %} +
    +
    +
    +
    + {% plugin_full_width_page object %} +
    +
    +{% endblock %} diff --git a/netbox/templates/vpn/ipsecproposal.html b/netbox/templates/vpn/ipsecproposal.html new file mode 100644 index 000000000..d97775bf8 --- /dev/null +++ b/netbox/templates/vpn/ipsecproposal.html @@ -0,0 +1,60 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} +{% load i18n %} + +{% block content %} +
    +
    +
    +
    {% trans "IPSec Proposal" %}
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Encryption algorithm" %}{{ object.get_encryption_algorithm_display }}
    {% trans "Authentication algorithm" %}{{ object.get_authentication_algorithm_display }}
    {% trans "SA lifetime (seconds)" %}{{ object.sa_lifetime_seconds|placeholder }}
    {% trans "SA lifetime (KB)" %}{{ object.sa_lifetime_data|placeholder }}
    {% trans "IPSec Policies" %} + {{ object.ipsec_policies.count }} +
    +
    +
    + {% plugin_left_page object %} +
    +
    + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/comments.html' %} + {% include 'inc/panels/tags.html' %} + {% plugin_right_page object %} +
    +
    +
    +
    + {% plugin_full_width_page object %} +
    +
    +{% endblock %} diff --git a/netbox/templates/ipam/l2vpn.html b/netbox/templates/vpn/l2vpn.html similarity index 85% rename from netbox/templates/ipam/l2vpn.html rename to netbox/templates/vpn/l2vpn.html index af95aba9f..2176a537f 100644 --- a/netbox/templates/ipam/l2vpn.html +++ b/netbox/templates/vpn/l2vpn.html @@ -34,7 +34,7 @@
    - {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:l2vpn_list' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='vpn:l2vpn_list' %} {% plugin_left_page object %}
    @@ -56,12 +56,12 @@
    {% trans "Terminations" %}
    - {% if perms.ipam.add_l2vpntermination %} + {% if perms.vpn.add_l2vpntermination %} diff --git a/netbox/templates/ipam/l2vpntermination.html b/netbox/templates/vpn/l2vpntermination.html similarity index 96% rename from netbox/templates/ipam/l2vpntermination.html rename to netbox/templates/vpn/l2vpntermination.html index cc316bf39..0e7539481 100644 --- a/netbox/templates/ipam/l2vpntermination.html +++ b/netbox/templates/vpn/l2vpntermination.html @@ -25,7 +25,7 @@
    {% include 'inc/panels/custom_fields.html' %} - {% include 'inc/panels/tags.html' with tags=object.tags.all url='ipam:l2vpntermination_list' %} + {% include 'inc/panels/tags.html' with tags=object.tags.all url='vpn:l2vpntermination_list' %}
    diff --git a/netbox/templates/ipam/l2vpntermination_edit.html b/netbox/templates/vpn/l2vpntermination_edit.html similarity index 98% rename from netbox/templates/ipam/l2vpntermination_edit.html rename to netbox/templates/vpn/l2vpntermination_edit.html index 3db0d0102..0df2c883e 100644 --- a/netbox/templates/ipam/l2vpntermination_edit.html +++ b/netbox/templates/vpn/l2vpntermination_edit.html @@ -41,6 +41,7 @@
    {% render_field form.vminterface %}
    + {% render_field form.tags %}
    diff --git a/netbox/templates/vpn/tunnel.html b/netbox/templates/vpn/tunnel.html new file mode 100644 index 000000000..d1607bd95 --- /dev/null +++ b/netbox/templates/vpn/tunnel.html @@ -0,0 +1,89 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} +{% load i18n %} + +{% block extra_controls %} + {% if perms.vpn.add_tunneltermination %} + + {% trans "Add Termination" %} + + {% endif %} +{% endblock %} + +{% block content %} +
    +
    +
    +
    {% trans "Tunnel" %}
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    {% trans "Name" %}{{ object.name }}
    {% trans "Status" %}{% badge object.get_status_display bg_color=object.get_status_color %}
    {% trans "Group" %}{{ object.group|linkify|placeholder }}
    {% trans "Description" %}{{ object.description|placeholder }}
    {% trans "Encapsulation" %}{{ object.get_encapsulation_display }}
    {% trans "IPSec profile" %}{{ object.ipsec_profile|linkify|placeholder }}
    {% trans "Tunnel ID" %}{{ object.tunnel_id|placeholder }}
    {% trans "Tenant" %} + {% if object.tenant.group %} + {{ object.tenant.group|linkify }} / + {% endif %} + {{ object.tenant|linkify|placeholder }} +
    +
    +
    + {% plugin_left_page object %} +
    +
    + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' %} + {% include 'inc/panels/comments.html' %} + {% plugin_right_page object %} +
    +
    +
    +
    +
    +
    {% trans "Terminations" %}
    +
    + {% if perms.vpn.add_tunneltermination %} + + {% endif %} +
    + {% plugin_full_width_page object %} +
    +
    +{% endblock %} diff --git a/netbox/templates/vpn/tunnelgroup.html b/netbox/templates/vpn/tunnelgroup.html new file mode 100644 index 000000000..3afea48c4 --- /dev/null +++ b/netbox/templates/vpn/tunnelgroup.html @@ -0,0 +1,53 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} +{% load render_table from django_tables2 %} +{% load i18n %} + +{% block breadcrumbs %} + +{% endblock %} + +{% block extra_controls %} + {% if perms.vpn.add_tunnel %} + + {% trans "Add Tunnel" %} + + {% endif %} +{% endblock extra_controls %} + +{% block content %} +
    +
    +
    +
    + {% trans "Tunnel Group" %} +
    +
    + + + + + + + + + +
    {% trans "Name" %}{{ object.name }}
    {% trans "Description" %}{{ object.description|placeholder }}
    +
    +
    + {% include 'inc/panels/tags.html' %} + {% plugin_left_page object %} +
    +
    + {% include 'inc/panels/related_objects.html' %} + {% include 'inc/panels/custom_fields.html' %} + {% plugin_right_page object %} +
    +
    +
    +
    + {% plugin_full_width_page object %} +
    +
    +{% endblock %} diff --git a/netbox/templates/vpn/tunneltermination.html b/netbox/templates/vpn/tunneltermination.html new file mode 100644 index 000000000..6f4e83ce0 --- /dev/null +++ b/netbox/templates/vpn/tunneltermination.html @@ -0,0 +1,62 @@ +{% extends 'generic/object.html' %} +{% load helpers %} +{% load plugins %} +{% load i18n %} + +{% block content %} +
    +
    +
    +
    {% trans "Tunnel Termination" %}
    +
    + + + + + + + + + + + + + + + + + + + + + +
    {% trans "Tunnel" %}{{ object.tunnel|linkify }}
    {% trans "Role" %}{% badge object.get_role_display bg_color=object.get_role_color %}
    + {% if object.termination.device %} + {% trans "Device" %} + {% elif object.termination.virtual_machine %} + {% trans "Virtual Machine" %} + {% endif %} + {{ object.termination.parent_object|linkify }}
    {% trans "Interface" %}{{ object.termination|linkify }}
    {% trans "Outside IP" %}{{ object.outside_ip|linkify|placeholder }}
    +
    +
    + {% plugin_left_page object %} +
    +
    + {% include 'inc/panels/custom_fields.html' %} + {% include 'inc/panels/tags.html' %} + {% plugin_right_page object %} +
    +
    +
    +
    +
    +
    {% trans "Peer Terminations" %}
    +
    +
    + {% plugin_full_width_page object %} +
    +
    +{% endblock %} diff --git a/netbox/tenancy/api/serializers.py b/netbox/tenancy/api/serializers.py index da0ad04bd..118cafd81 100644 --- a/netbox/tenancy/api/serializers.py +++ b/netbox/tenancy/api/serializers.py @@ -105,7 +105,7 @@ class ContactAssignmentSerializer(NetBoxModelSerializer): model = ContactAssignment fields = [ 'id', 'url', 'display', 'content_type', 'object_id', 'object', 'contact', 'role', 'priority', 'tags', - 'created', 'last_updated', + 'custom_fields', 'created', 'last_updated', ] @extend_schema_field(OpenApiTypes.OBJECT) diff --git a/netbox/tenancy/api/views.py b/netbox/tenancy/api/views.py index 39c86d80e..71a4961c3 100644 --- a/netbox/tenancy/api/views.py +++ b/netbox/tenancy/api/views.py @@ -3,7 +3,7 @@ from rest_framework.routers import APIRootView from circuits.models import Circuit from dcim.models import Device, Rack, Site from ipam.models import IPAddress, Prefix, VLAN, VRF -from netbox.api.viewsets import NetBoxModelViewSet +from netbox.api.viewsets import NetBoxModelViewSet, MPTTLockedMixin from tenancy import filtersets from tenancy.models import * from utilities.utils import count_related @@ -23,7 +23,7 @@ class TenancyRootView(APIRootView): # Tenants # -class TenantGroupViewSet(NetBoxModelViewSet): +class TenantGroupViewSet(MPTTLockedMixin, NetBoxModelViewSet): queryset = TenantGroup.objects.add_related_count( TenantGroup.objects.all(), Tenant, @@ -58,7 +58,7 @@ class TenantViewSet(NetBoxModelViewSet): # Contacts # -class ContactGroupViewSet(NetBoxModelViewSet): +class ContactGroupViewSet(MPTTLockedMixin, NetBoxModelViewSet): queryset = ContactGroup.objects.add_related_count( ContactGroup.objects.all(), Contact, diff --git a/netbox/tenancy/filtersets.py b/netbox/tenancy/filtersets.py index 0f4900f54..8079b4035 100644 --- a/netbox/tenancy/filtersets.py +++ b/netbox/tenancy/filtersets.py @@ -3,11 +3,10 @@ from django.db.models import Q from django.utils.translation import gettext as _ from extras.filters import TagFilter -from netbox.filtersets import ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, NetBoxModelFilterSet +from netbox.filtersets import NetBoxModelFilterSet, OrganizationalModelFilterSet from utilities.filters import ContentTypeFilter, TreeNodeMultipleChoiceFilter from .models import * - __all__ = ( 'ContactAssignmentFilterSet', 'ContactFilterSet', @@ -65,7 +64,7 @@ class ContactFilterSet(NetBoxModelFilterSet): class Meta: model = Contact - fields = ['id', 'name', 'title', 'phone', 'email', 'address', 'link'] + fields = ['id', 'name', 'title', 'phone', 'email', 'address', 'link', 'description'] def search(self, queryset, name, value): if not value.strip(): @@ -77,11 +76,12 @@ class ContactFilterSet(NetBoxModelFilterSet): Q(email__icontains=value) | Q(address__icontains=value) | Q(link__icontains=value) | + Q(description__icontains=value) | Q(comments__icontains=value) ) -class ContactAssignmentFilterSet(ChangeLoggedModelFilterSet): +class ContactAssignmentFilterSet(NetBoxModelFilterSet): q = django_filters.CharFilter( method='search', label=_('Search'), @@ -91,6 +91,19 @@ class ContactAssignmentFilterSet(ChangeLoggedModelFilterSet): queryset=Contact.objects.all(), label=_('Contact (ID)'), ) + group_id = TreeNodeMultipleChoiceFilter( + queryset=ContactGroup.objects.all(), + field_name='contact__group', + lookup_expr='in', + label=_('Contact group (ID)'), + ) + group = TreeNodeMultipleChoiceFilter( + queryset=ContactGroup.objects.all(), + field_name='contact__group', + lookup_expr='in', + to_field_name='slug', + label=_('Contact group (slug)'), + ) role_id = django_filters.ModelMultipleChoiceFilter( queryset=ContactRole.objects.all(), label=_('Contact role (ID)'), diff --git a/netbox/tenancy/forms/filtersets.py b/netbox/tenancy/forms/filtersets.py index 692b8963f..77e945542 100644 --- a/netbox/tenancy/forms/filtersets.py +++ b/netbox/tenancy/forms/filtersets.py @@ -1,8 +1,7 @@ from django import forms -from django.contrib.contenttypes.models import ContentType from django.utils.translation import gettext_lazy as _ -from extras.utils import FeatureQuery +from core.models import ContentType from netbox.forms import NetBoxModelFilterSetForm from tenancy.choices import * from tenancy.models import * @@ -87,8 +86,7 @@ class ContactAssignmentFilterForm(NetBoxModelFilterSetForm): (_('Assignment'), ('content_type_id', 'group_id', 'contact_id', 'role_id', 'priority')), ) content_type_id = ContentTypeMultipleChoiceField( - queryset=ContentType.objects.all(), - limit_choices_to=FeatureQuery('contacts'), + queryset=ContentType.objects.with_feature('contacts'), required=False, label=_('Object type') ) diff --git a/netbox/tenancy/forms/model_forms.py b/netbox/tenancy/forms/model_forms.py index 72c030d84..9a53eba17 100644 --- a/netbox/tenancy/forms/model_forms.py +++ b/netbox/tenancy/forms/model_forms.py @@ -1,11 +1,9 @@ from django import forms from django.utils.translation import gettext_lazy as _ -from extras.models import Tag from netbox.forms import NetBoxModelForm from tenancy.models import * -from utilities.forms import BootstrapMixin -from utilities.forms.fields import CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField +from utilities.forms.fields import CommentField, DynamicModelChoiceField, SlugField __all__ = ( 'ContactAssignmentForm', @@ -121,7 +119,7 @@ class ContactForm(NetBoxModelForm): } -class ContactAssignmentForm(BootstrapMixin, forms.ModelForm): +class ContactAssignmentForm(NetBoxModelForm): group = DynamicModelChoiceField( label=_('Group'), queryset=ContactGroup.objects.all(), @@ -141,11 +139,6 @@ class ContactAssignmentForm(BootstrapMixin, forms.ModelForm): label=_('Role'), queryset=ContactRole.objects.all() ) - tags = DynamicModelMultipleChoiceField( - queryset=Tag.objects.all(), - required=False, - label=_('Tags') - ) class Meta: model = ContactAssignment diff --git a/netbox/tenancy/graphql/types.py b/netbox/tenancy/graphql/types.py index 727aa2eac..aab02b121 100644 --- a/netbox/tenancy/graphql/types.py +++ b/netbox/tenancy/graphql/types.py @@ -1,6 +1,6 @@ import graphene -from extras.graphql.mixins import TagsMixin +from extras.graphql.mixins import CustomFieldsMixin, TagsMixin from tenancy import filtersets, models from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, NetBoxObjectType @@ -69,7 +69,7 @@ class ContactGroupType(OrganizationalObjectType): filterset_class = filtersets.ContactGroupFilterSet -class ContactAssignmentType(TagsMixin, BaseObjectType): +class ContactAssignmentType(CustomFieldsMixin, TagsMixin, BaseObjectType): class Meta: model = models.ContactAssignment diff --git a/netbox/tenancy/migrations/0012_contactassignment_custom_fields.py b/netbox/tenancy/migrations/0012_contactassignment_custom_fields.py new file mode 100644 index 000000000..ee6726822 --- /dev/null +++ b/netbox/tenancy/migrations/0012_contactassignment_custom_fields.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.6 on 2023-11-06 20:23 + +from django.db import migrations, models +import utilities.json + + +class Migration(migrations.Migration): + + dependencies = [ + ('tenancy', '0011_contactassignment_tags'), + ] + + operations = [ + migrations.AddField( + model_name='contactassignment', + name='custom_field_data', + field=models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder), + ), + ] diff --git a/netbox/tenancy/migrations/0013_gfk_indexes.py b/netbox/tenancy/migrations/0013_gfk_indexes.py new file mode 100644 index 000000000..dd23cefbb --- /dev/null +++ b/netbox/tenancy/migrations/0013_gfk_indexes.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.7 on 2023-12-07 16:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tenancy', '0012_contactassignment_custom_fields'), + ] + + operations = [ + migrations.AddIndex( + model_name='contactassignment', + index=models.Index(fields=['content_type', 'object_id'], name='tenancy_con_content_693ff4_idx'), + ), + ] diff --git a/netbox/tenancy/models/contacts.py b/netbox/tenancy/models/contacts.py index e8327248d..81e11a7dd 100644 --- a/netbox/tenancy/models/contacts.py +++ b/netbox/tenancy/models/contacts.py @@ -1,11 +1,12 @@ from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse from django.utils.translation import gettext_lazy as _ +from core.models import ContentType from netbox.models import ChangeLoggedModel, NestedGroupModel, OrganizationalModel, PrimaryModel -from netbox.models.features import TagsMixin +from netbox.models.features import CustomFieldsMixin, ExportTemplatesMixin, TagsMixin from tenancy.choices import * __all__ = ( @@ -109,9 +110,9 @@ class Contact(PrimaryModel): return reverse('tenancy:contact', args=[self.pk]) -class ContactAssignment(ChangeLoggedModel, TagsMixin): +class ContactAssignment(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLoggedModel): content_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', on_delete=models.CASCADE ) object_id = models.PositiveBigIntegerField() @@ -140,6 +141,9 @@ class ContactAssignment(ChangeLoggedModel, TagsMixin): class Meta: ordering = ('priority', 'contact') + indexes = ( + models.Index(fields=('content_type', 'object_id')), + ) constraints = ( models.UniqueConstraint( fields=('content_type', 'object_id', 'contact', 'role'), @@ -157,6 +161,15 @@ class ContactAssignment(ChangeLoggedModel, TagsMixin): def get_absolute_url(self): return reverse('tenancy:contact', args=[self.contact.pk]) + def clean(self): + super().clean() + + # Validate the assigned object type + if self.content_type not in ContentType.objects.with_feature('contacts'): + raise ValidationError( + _("Contacts cannot be assigned to this object type ({type}).").format(type=self.content_type) + ) + def to_objectchange(self, action): objectchange = super().to_objectchange(action) objectchange.related_object = self.object diff --git a/netbox/tenancy/search.py b/netbox/tenancy/search.py index bee497608..56903d6b1 100644 --- a/netbox/tenancy/search.py +++ b/netbox/tenancy/search.py @@ -15,6 +15,7 @@ class ContactIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('group', 'title', 'phone', 'email', 'description') @register_search @@ -25,6 +26,7 @@ class ContactGroupIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -35,6 +37,7 @@ class ContactRoleIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -46,6 +49,7 @@ class TenantIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('group', 'description') @register_search @@ -56,3 +60,4 @@ class TenantGroupIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) diff --git a/netbox/tenancy/tables/contacts.py b/netbox/tenancy/tables/contacts.py index 2e7525481..a22c04569 100644 --- a/netbox/tenancy/tables/contacts.py +++ b/netbox/tenancy/tables/contacts.py @@ -102,6 +102,11 @@ class ContactAssignmentTable(NetBoxTable): verbose_name=_('Role'), linkify=True ) + contact_group = tables.Column( + accessor=Accessor('contact__group'), + verbose_name=_('Group'), + linkify=True + ) contact_title = tables.Column( accessor=Accessor('contact__title'), verbose_name=_('Contact Title') @@ -137,7 +142,8 @@ class ContactAssignmentTable(NetBoxTable): model = ContactAssignment fields = ( 'pk', 'content_type', 'object', 'contact', 'role', 'priority', 'contact_title', 'contact_phone', - 'contact_email', 'contact_address', 'contact_link', 'contact_description', 'tags', 'actions' + 'contact_email', 'contact_address', 'contact_link', 'contact_description', 'contact_group', 'tags', + 'actions' ) default_columns = ( 'pk', 'content_type', 'object', 'contact', 'role', 'priority', 'contact_email', 'contact_phone' diff --git a/netbox/tenancy/tests/test_filtersets.py b/netbox/tenancy/tests/test_filtersets.py index e427c90ce..ab72bd39f 100644 --- a/netbox/tenancy/tests/test_filtersets.py +++ b/netbox/tenancy/tests/test_filtersets.py @@ -1,5 +1,7 @@ +from django.contrib.contenttypes.models import ContentType from django.test import TestCase +from dcim.models import Manufacturer, Site from tenancy.filtersets import * from tenancy.models import * from utilities.testing import ChangeLoggedFilterSetTests @@ -21,13 +23,32 @@ class TenantGroupTestCase(TestCase, ChangeLoggedFilterSetTests): tenantgroup.save() tenant_groups = ( - TenantGroup(name='Tenant Group 1', slug='tenant-group-1', parent=parent_tenant_groups[0], description='A'), - TenantGroup(name='Tenant Group 2', slug='tenant-group-2', parent=parent_tenant_groups[1], description='B'), - TenantGroup(name='Tenant Group 3', slug='tenant-group-3', parent=parent_tenant_groups[2], description='C'), + TenantGroup( + name='Tenant Group 1', + slug='tenant-group-1', + parent=parent_tenant_groups[0], + description='foobar1' + ), + TenantGroup( + name='Tenant Group 2', + slug='tenant-group-2', + parent=parent_tenant_groups[1], + description='foobar2' + ), + TenantGroup( + name='Tenant Group 3', + slug='tenant-group-3', + parent=parent_tenant_groups[2], + description='foobar3' + ), ) for tenantgroup in tenant_groups: tenantgroup.save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Tenant Group 1', 'Tenant Group 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -37,7 +58,7 @@ class TenantGroupTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_parent(self): @@ -66,10 +87,14 @@ class TenantTestCase(TestCase, ChangeLoggedFilterSetTests): tenants = ( Tenant(name='Tenant 1', slug='tenant-1', group=tenant_groups[0], description='foobar1'), Tenant(name='Tenant 2', slug='tenant-2', group=tenant_groups[1], description='foobar2'), - Tenant(name='Tenant 3', slug='tenant-3', group=tenant_groups[2]), + Tenant(name='Tenant 3', slug='tenant-3', group=tenant_groups[2], description='foobar3'), ) Tenant.objects.bulk_create(tenants) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Tenant 1', 'Tenant 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -106,13 +131,32 @@ class ContactGroupTestCase(TestCase, ChangeLoggedFilterSetTests): contactgroup.save() contact_groups = ( - ContactGroup(name='Contact Group 1', slug='contact-group-1', parent=parent_contact_groups[0], description='A'), - ContactGroup(name='Contact Group 2', slug='contact-group-2', parent=parent_contact_groups[1], description='B'), - ContactGroup(name='Contact Group 3', slug='contact-group-3', parent=parent_contact_groups[2], description='C'), + ContactGroup( + name='Contact Group 1', + slug='contact-group-1', + parent=parent_contact_groups[0], + description='foobar1' + ), + ContactGroup( + name='Contact Group 2', + slug='contact-group-2', + parent=parent_contact_groups[1], + description='foobar2' + ), + ContactGroup( + name='Contact Group 3', + slug='contact-group-3', + parent=parent_contact_groups[2], + description='foobar3' + ), ) for contactgroup in contact_groups: contactgroup.save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Contact Group 1', 'Contact Group 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -122,7 +166,7 @@ class ContactGroupTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_parent(self): @@ -143,10 +187,14 @@ class ContactRoleTestCase(TestCase, ChangeLoggedFilterSetTests): contact_roles = ( ContactRole(name='Contact Role 1', slug='contact-role-1', description='foobar1'), ContactRole(name='Contact Role 2', slug='contact-role-2', description='foobar2'), - ContactRole(name='Contact Role 3', slug='contact-role-3'), + ContactRole(name='Contact Role 3', slug='contact-role-3', description='foobar3'), ) ContactRole.objects.bulk_create(contact_roles) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Contact Role 1', 'Contact Role 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -176,19 +224,96 @@ class ContactTestCase(TestCase, ChangeLoggedFilterSetTests): contactgroup.save() contacts = ( - Contact(name='Contact 1', group=contact_groups[0]), - Contact(name='Contact 2', group=contact_groups[1]), - Contact(name='Contact 3', group=contact_groups[2]), + Contact(name='Contact 1', group=contact_groups[0], description='foobar1'), + Contact(name='Contact 2', group=contact_groups[1], description='foobar2'), + Contact(name='Contact 3', group=contact_groups[2], description='foobar3'), ) Contact.objects.bulk_create(contacts) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Contact 1', 'Contact 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_group(self): group = ContactGroup.objects.all()[:2] params = {'group_id': [group[0].pk, group[1].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) params = {'group': [group[0].slug, group[1].slug]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class ContactAssignmentTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = ContactAssignment.objects.all() + filterset = ContactAssignmentFilterSet + + @classmethod + def setUpTestData(cls): + + manufacturer = Manufacturer.objects.create(name='Manufacturer 1', slug='manufacturer-1') + sites = ( + Site(name='Site 1', slug='site-1'), + Site(name='Site 2', slug='site-2'), + Site(name='Site 3', slug='site-3'), + ) + Site.objects.bulk_create(sites) + + contact_groups = ( + ContactGroup(name='Contact Group 1', slug='contact-group-1'), + ContactGroup(name='Contact Group 2', slug='contact-group-2'), + ContactGroup(name='Contact Group 3', slug='contact-group-3'), + ) + for contactgroup in contact_groups: + contactgroup.save() + + contact_roles = ( + ContactRole(name='Contact Role 1', slug='contact-role-1'), + ContactRole(name='Contact Role 2', slug='contact-role-2'), + ContactRole(name='Contact Role 3', slug='contact-role-3'), + ) + ContactRole.objects.bulk_create(contact_roles) + + contacts = ( + Contact(name='Contact 1', group=contact_groups[0]), + Contact(name='Contact 2', group=contact_groups[1]), + Contact(name='Contact 3', group=contact_groups[2]), + ) + Contact.objects.bulk_create(contacts) + + assignments = ( + ContactAssignment(object=sites[0], contact=contacts[0], role=contact_roles[0]), + ContactAssignment(object=sites[1], contact=contacts[1], role=contact_roles[1]), + ContactAssignment(object=sites[2], contact=contacts[2], role=contact_roles[2]), + ContactAssignment(object=manufacturer, contact=contacts[2], role=contact_roles[2]), + ) + ContactAssignment.objects.bulk_create(assignments) + + def test_content_type(self): + params = {'content_type_id': ContentType.objects.get_by_natural_key('dcim', 'site')} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + + def test_contact(self): + contacts = Contact.objects.all()[:2] + params = {'contact_id': [contacts[0].pk, contacts[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_group(self): + group = ContactGroup.objects.all()[:2] + params = {'group_id': [group[0].pk, group[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'group': [group[0].slug, group[1].slug]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_role(self): + role = ContactRole.objects.all()[:2] + params = {'role_id': [role[0].pk, role[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'role': [role[0].slug, role[1].slug]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/tenancy/views.py b/netbox/tenancy/views.py index 76a86146c..27d5750ac 100644 --- a/netbox/tenancy/views.py +++ b/netbox/tenancy/views.py @@ -2,14 +2,9 @@ from django.contrib.contenttypes.models import ContentType from django.shortcuts import get_object_or_404 from django.utils.translation import gettext as _ -from circuits.models import Circuit -from dcim.models import Cable, Device, Location, PowerFeed, Rack, RackReservation, Site, VirtualDeviceContext -from ipam.models import Aggregate, ASN, IPAddress, IPRange, L2VPN, Prefix, VLAN, VRF from netbox.views import generic -from utilities.utils import count_related +from utilities.utils import count_related, get_related_models from utilities.views import register_model_view, ViewTab -from virtualization.models import VirtualMachine, Cluster -from wireless.models import WirelessLAN, WirelessLink from . import filtersets, forms, tables from .models import * @@ -132,32 +127,8 @@ class TenantView(generic.ObjectView): def get_extra_context(self, request, instance): related_models = [ - # DCIM - (Site.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (Rack.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (RackReservation.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (Location.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (Device.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (VirtualDeviceContext.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (Cable.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (PowerFeed.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - # IPAM - (VRF.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (Aggregate.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (Prefix.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (IPRange.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (IPAddress.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (ASN.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (VLAN.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (L2VPN.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - # Circuits - (Circuit.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - # Virtualization - (VirtualMachine.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (Cluster.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - # Wireless - (WirelessLAN.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), - (WirelessLink.objects.restrict(request.user, 'view').filter(tenant=instance), 'tenant_id'), + (model.objects.restrict(request.user, 'view').filter(tenant=instance), f'{field}_id') + for model, field in get_related_models(Tenant) ] return { @@ -386,7 +357,12 @@ class ContactAssignmentListView(generic.ObjectListView): filterset = filtersets.ContactAssignmentFilterSet filterset_form = forms.ContactAssignmentFilterForm table = tables.ContactAssignmentTable - actions = ('export', 'bulk_edit', 'bulk_delete') + actions = { + 'import': {'add'}, + 'export': {'view'}, + 'bulk_edit': {'change'}, + 'bulk_delete': {'delete'}, + } @register_model_view(ContactAssignment, 'edit') diff --git a/netbox/translations/en/LC_MESSAGES/django.mo b/netbox/translations/en/LC_MESSAGES/django.mo new file mode 100644 index 000000000..71cbdf3e9 Binary files /dev/null and b/netbox/translations/en/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/en/LC_MESSAGES/django.po b/netbox/translations/en/LC_MESSAGES/django.po new file mode 100644 index 000000000..adc38c45e --- /dev/null +++ b/netbox/translations/en/LC_MESSAGES/django.po @@ -0,0 +1,13160 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-21 17:54+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: account/tables.py:27 templates/account/token.html:23 +#: templates/users/token.html:18 users/forms/bulk_import.py:41 +#: users/forms/model_forms.py:113 +msgid "Key" +msgstr "" + +#: account/tables.py:31 users/forms/filtersets.py:133 +msgid "Write Enabled" +msgstr "" + +#: account/tables.py:34 core/tables/jobs.py:29 extras/choices.py:135 +#: extras/tables/tables.py:469 templates/account/token.html:44 +#: templates/core/configrevision.html:34 +#: templates/core/configrevision_restore.html:12 templates/core/job.html:58 +#: templates/extras/htmx/report_result.html:11 +#: templates/extras/htmx/script_result.html:12 +#: templates/extras/journalentry.html:25 templates/generic/object.html:48 +#: templates/users/token.html:36 +msgid "Created" +msgstr "" + +#: account/tables.py:37 templates/account/token.html:48 +#: templates/users/token.html:40 users/forms/bulk_edit.py:97 +#: users/forms/filtersets.py:137 +msgid "Expires" +msgstr "" + +#: account/tables.py:40 users/forms/filtersets.py:142 +msgid "Last Used" +msgstr "" + +#: account/tables.py:43 templates/account/token.html:56 +#: templates/users/token.html:48 users/forms/bulk_edit.py:102 +#: users/forms/model_forms.py:125 +msgid "Allowed IPs" +msgstr "" + +#: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1419 +#: dcim/choices.py:1495 dcim/choices.py:1545 virtualization/choices.py:20 +#: virtualization/choices.py:45 vpn/choices.py:18 +msgid "Planned" +msgstr "" + +#: circuits/choices.py:22 netbox/navigation/menu.py:290 +msgid "Provisioning" +msgstr "" + +#: circuits/choices.py:23 dcim/choices.py:22 dcim/choices.py:103 +#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1494 +#: dcim/choices.py:1544 extras/tables/tables.py:375 ipam/choices.py:31 +#: ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 +#: templates/extras/configcontext.html:26 templates/users/user.html:34 +#: users/forms/bulk_edit.py:36 virtualization/choices.py:22 +#: virtualization/choices.py:44 vpn/choices.py:19 wireless/choices.py:25 +msgid "Active" +msgstr "" + +#: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 +#: dcim/choices.py:1493 dcim/choices.py:1546 virtualization/choices.py:24 +#: virtualization/choices.py:43 +msgid "Offline" +msgstr "" + +#: circuits/choices.py:25 +msgid "Deprovisioning" +msgstr "" + +#: circuits/choices.py:26 +msgid "Decommissioned" +msgstr "" + +#: circuits/filtersets.py:29 circuits/filtersets.py:182 dcim/filtersets.py:120 +#: dcim/filtersets.py:181 dcim/filtersets.py:256 dcim/filtersets.py:364 +#: dcim/filtersets.py:881 dcim/filtersets.py:1177 dcim/filtersets.py:1672 +#: dcim/filtersets.py:1845 dcim/filtersets.py:1902 ipam/filtersets.py:305 +#: ipam/filtersets.py:896 virtualization/filtersets.py:45 +#: virtualization/filtersets.py:172 vpn/filtersets.py:330 +msgid "Region (ID)" +msgstr "" + +#: circuits/filtersets.py:36 circuits/filtersets.py:189 dcim/filtersets.py:126 +#: dcim/filtersets.py:188 dcim/filtersets.py:263 dcim/filtersets.py:371 +#: dcim/filtersets.py:888 dcim/filtersets.py:1184 dcim/filtersets.py:1679 +#: dcim/filtersets.py:1852 dcim/filtersets.py:1909 extras/filtersets.py:414 +#: ipam/filtersets.py:312 ipam/filtersets.py:903 +#: virtualization/filtersets.py:52 virtualization/filtersets.py:179 +#: vpn/filtersets.py:325 +msgid "Region (slug)" +msgstr "" + +#: circuits/filtersets.py:42 circuits/filtersets.py:195 dcim/filtersets.py:194 +#: dcim/filtersets.py:269 dcim/filtersets.py:377 dcim/filtersets.py:894 +#: dcim/filtersets.py:1190 dcim/filtersets.py:1685 dcim/filtersets.py:1858 +#: dcim/filtersets.py:1915 ipam/filtersets.py:318 ipam/filtersets.py:909 +#: virtualization/filtersets.py:58 virtualization/filtersets.py:185 +msgid "Site group (ID)" +msgstr "" + +#: circuits/filtersets.py:49 circuits/filtersets.py:202 dcim/filtersets.py:201 +#: dcim/filtersets.py:276 dcim/filtersets.py:384 dcim/filtersets.py:901 +#: dcim/filtersets.py:1197 dcim/filtersets.py:1692 dcim/filtersets.py:1865 +#: dcim/filtersets.py:1922 extras/filtersets.py:420 ipam/filtersets.py:325 +#: ipam/filtersets.py:916 virtualization/filtersets.py:65 +#: virtualization/filtersets.py:192 +msgid "Site group (slug)" +msgstr "" + +#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:117 +#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:171 +#: circuits/forms/model_forms.py:137 dcim/forms/bulk_edit.py:166 +#: dcim/forms/bulk_edit.py:238 dcim/forms/bulk_edit.py:570 +#: dcim/forms/bulk_edit.py:763 dcim/forms/bulk_import.py:130 +#: dcim/forms/bulk_import.py:176 dcim/forms/bulk_import.py:249 +#: dcim/forms/bulk_import.py:477 dcim/forms/bulk_import.py:1239 +#: dcim/forms/bulk_import.py:1267 dcim/forms/filtersets.py:84 +#: dcim/forms/filtersets.py:217 dcim/forms/filtersets.py:264 +#: dcim/forms/filtersets.py:373 dcim/forms/filtersets.py:680 +#: dcim/forms/filtersets.py:910 dcim/forms/filtersets.py:934 +#: dcim/forms/filtersets.py:1024 dcim/forms/filtersets.py:1062 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:138 +#: dcim/forms/model_forms.py:167 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:397 dcim/forms/model_forms.py:630 +#: dcim/forms/object_create.py:390 dcim/tables/devices.py:186 +#: dcim/tables/power.py:26 dcim/tables/power.py:93 dcim/tables/racks.py:62 +#: dcim/tables/racks.py:138 dcim/tables/sites.py:129 extras/filtersets.py:430 +#: ipam/forms/bulk_edit.py:215 ipam/forms/bulk_edit.py:269 +#: ipam/forms/bulk_edit.py:447 ipam/forms/bulk_edit.py:519 +#: ipam/forms/bulk_import.py:170 ipam/forms/bulk_import.py:437 +#: ipam/forms/filtersets.py:152 ipam/forms/filtersets.py:226 +#: ipam/forms/filtersets.py:417 ipam/forms/filtersets.py:470 +#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:548 +#: ipam/forms/model_forms.py:640 ipam/tables/ip.py:244 ipam/tables/vlans.py:114 +#: ipam/tables/vlans.py:216 templates/circuits/circuittermination_edit.html:20 +#: templates/circuits/inc/circuit_termination.html:33 +#: templates/dcim/device.html:22 templates/dcim/inc/cable_termination.html:8 +#: templates/dcim/inc/cable_termination.html:33 templates/dcim/location.html:40 +#: templates/dcim/powerpanel.html:23 templates/dcim/rack.html:25 +#: templates/dcim/rackreservation.html:31 templates/dcim/site.html:27 +#: templates/ipam/prefix.html:57 templates/ipam/vlan.html:26 +#: templates/ipam/vlan_edit.html:40 templates/virtualization/cluster.html:45 +#: templates/virtualization/virtualmachine.html:96 +#: virtualization/forms/bulk_edit.py:90 virtualization/forms/bulk_edit.py:99 +#: virtualization/forms/bulk_edit.py:108 virtualization/forms/bulk_edit.py:123 +#: virtualization/forms/bulk_import.py:59 +#: virtualization/forms/bulk_import.py:85 virtualization/forms/filtersets.py:78 +#: virtualization/forms/filtersets.py:144 +#: virtualization/forms/model_forms.py:74 +#: virtualization/forms/model_forms.py:107 +#: virtualization/forms/model_forms.py:174 virtualization/tables/clusters.py:77 +#: virtualization/tables/virtualmachines.py:53 vpn/forms/filtersets.py:262 +#: wireless/forms/model_forms.py:77 wireless/forms/model_forms.py:117 +msgid "Site" +msgstr "" + +#: circuits/filtersets.py:60 circuits/filtersets.py:213 +#: circuits/filtersets.py:250 dcim/filtersets.py:211 dcim/filtersets.py:286 +#: dcim/filtersets.py:358 extras/filtersets.py:436 ipam/filtersets.py:215 +#: ipam/filtersets.py:335 ipam/filtersets.py:926 +#: virtualization/filtersets.py:75 virtualization/filtersets.py:202 +#: vpn/filtersets.py:335 +msgid "Site (slug)" +msgstr "" + +#: circuits/filtersets.py:65 +msgid "ASN (ID)" +msgstr "" + +#: circuits/filtersets.py:86 circuits/filtersets.py:112 +#: circuits/filtersets.py:146 +msgid "Provider (ID)" +msgstr "" + +#: circuits/filtersets.py:92 circuits/filtersets.py:118 +#: circuits/filtersets.py:152 +msgid "Provider (slug)" +msgstr "" + +#: circuits/filtersets.py:157 +msgid "Provider account (ID)" +msgstr "" + +#: circuits/filtersets.py:162 +msgid "Provider network (ID)" +msgstr "" + +#: circuits/filtersets.py:166 +msgid "Circuit type (ID)" +msgstr "" + +#: circuits/filtersets.py:172 +msgid "Circuit type (slug)" +msgstr "" + +#: circuits/filtersets.py:207 circuits/filtersets.py:244 dcim/filtersets.py:205 +#: dcim/filtersets.py:280 dcim/filtersets.py:352 dcim/filtersets.py:905 +#: dcim/filtersets.py:1202 dcim/filtersets.py:1697 dcim/filtersets.py:1869 +#: dcim/filtersets.py:1927 ipam/filtersets.py:209 ipam/filtersets.py:329 +#: ipam/filtersets.py:920 virtualization/filtersets.py:69 +#: virtualization/filtersets.py:196 vpn/filtersets.py:340 +msgid "Site (ID)" +msgstr "" + +#: circuits/filtersets.py:236 core/filtersets.py:73 core/filtersets.py:132 +#: dcim/filtersets.py:633 dcim/filtersets.py:1171 dcim/filtersets.py:1973 +#: extras/filtersets.py:40 extras/filtersets.py:69 extras/filtersets.py:101 +#: extras/filtersets.py:140 extras/filtersets.py:168 extras/filtersets.py:195 +#: extras/filtersets.py:226 extras/filtersets.py:295 extras/filtersets.py:343 +#: extras/filtersets.py:403 extras/filtersets.py:562 extras/filtersets.py:604 +#: extras/filtersets.py:645 ipam/forms/model_forms.py:430 +#: netbox/filtersets.py:275 netbox/forms/__init__.py:23 +#: netbox/forms/base.py:152 templates/htmx/object_selector.html:28 +#: templates/inc/filter_list.html:53 templates/ipam/ipaddress_assign.html:32 +#: templates/search.html:7 templates/search.html:26 tenancy/filtersets.py:86 +#: users/filtersets.py:21 users/filtersets.py:37 users/filtersets.py:69 +#: users/filtersets.py:117 utilities/forms/forms.py:99 +msgid "Search" +msgstr "" + +#: circuits/filtersets.py:240 circuits/forms/bulk_edit.py:167 +#: circuits/forms/model_forms.py:110 circuits/forms/model_forms.py:132 +#: dcim/forms/connections.py:66 templates/circuits/circuit.html:15 +#: templates/dcim/inc/cable_termination.html:55 +#: templates/dcim/trace/circuit.html:4 +msgid "Circuit" +msgstr "" + +#: circuits/filtersets.py:254 +msgid "ProviderNetwork (ID)" +msgstr "" + +#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:56 +#: circuits/forms/model_forms.py:26 circuits/tables/providers.py:33 +#: dcim/forms/bulk_edit.py:126 dcim/forms/filtersets.py:187 +#: dcim/forms/model_forms.py:126 dcim/tables/sites.py:94 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 +#: netbox/navigation/menu.py:160 netbox/navigation/menu.py:163 +#: templates/circuits/provider.html:24 +msgid "ASNs" +msgstr "" + +#: circuits/forms/bulk_edit.py:29 circuits/forms/bulk_edit.py:51 +#: circuits/forms/bulk_edit.py:78 circuits/forms/bulk_edit.py:99 +#: circuits/forms/bulk_edit.py:159 core/forms/bulk_edit.py:27 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:71 +#: dcim/forms/bulk_edit.py:90 dcim/forms/bulk_edit.py:149 +#: dcim/forms/bulk_edit.py:190 dcim/forms/bulk_edit.py:208 +#: dcim/forms/bulk_edit.py:336 dcim/forms/bulk_edit.py:371 +#: dcim/forms/bulk_edit.py:386 dcim/forms/bulk_edit.py:445 +#: dcim/forms/bulk_edit.py:484 dcim/forms/bulk_edit.py:514 +#: dcim/forms/bulk_edit.py:538 dcim/forms/bulk_edit.py:608 +#: dcim/forms/bulk_edit.py:657 dcim/forms/bulk_edit.py:709 +#: dcim/forms/bulk_edit.py:732 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_edit.py:850 dcim/forms/bulk_edit.py:903 +#: dcim/forms/bulk_edit.py:938 dcim/forms/bulk_edit.py:978 +#: dcim/forms/bulk_edit.py:1022 dcim/forms/bulk_edit.py:1067 +#: dcim/forms/bulk_edit.py:1094 dcim/forms/bulk_edit.py:1112 +#: dcim/forms/bulk_edit.py:1130 dcim/forms/bulk_edit.py:1148 +#: dcim/forms/bulk_edit.py:1566 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:123 extras/forms/bulk_edit.py:152 +#: extras/forms/bulk_edit.py:182 extras/forms/bulk_edit.py:263 +#: extras/forms/bulk_edit.py:287 extras/forms/bulk_edit.py:301 +#: extras/tables/tables.py:56 ipam/forms/bulk_edit.py:50 +#: ipam/forms/bulk_edit.py:70 ipam/forms/bulk_edit.py:90 +#: ipam/forms/bulk_edit.py:114 ipam/forms/bulk_edit.py:143 +#: ipam/forms/bulk_edit.py:172 ipam/forms/bulk_edit.py:191 +#: ipam/forms/bulk_edit.py:260 ipam/forms/bulk_edit.py:304 +#: ipam/forms/bulk_edit.py:352 ipam/forms/bulk_edit.py:395 +#: ipam/forms/bulk_edit.py:423 ipam/forms/bulk_edit.py:551 +#: ipam/forms/bulk_edit.py:582 templates/account/token.html:36 +#: templates/circuits/circuit.html:60 templates/circuits/circuittype.html:29 +#: templates/circuits/inc/circuit_termination.html:115 +#: templates/circuits/provider.html:34 +#: templates/circuits/providernetwork.html:35 templates/core/datasource.html:55 +#: templates/dcim/cable.html:37 templates/dcim/consoleport.html:47 +#: templates/dcim/consoleserverport.html:47 templates/dcim/device.html:96 +#: templates/dcim/devicebay.html:35 templates/dcim/devicerole.html:33 +#: templates/dcim/devicetype.html:36 templates/dcim/frontport.html:61 +#: templates/dcim/interface.html:70 templates/dcim/inventoryitem.html:61 +#: templates/dcim/inventoryitemrole.html:23 templates/dcim/location.html:36 +#: templates/dcim/manufacturer.html:43 templates/dcim/module.html:71 +#: templates/dcim/modulebay.html:39 templates/dcim/moduletype.html:27 +#: templates/dcim/platform.html:36 templates/dcim/powerfeed.html:43 +#: templates/dcim/poweroutlet.html:43 templates/dcim/powerpanel.html:31 +#: templates/dcim/powerport.html:43 templates/dcim/rack.html:54 +#: templates/dcim/rackreservation.html:69 templates/dcim/rackrole.html:29 +#: templates/dcim/rearport.html:57 templates/dcim/region.html:34 +#: templates/dcim/site.html:60 templates/dcim/sitegroup.html:34 +#: templates/dcim/virtualchassis.html:32 +#: templates/extras/admin/plugins_list.html:26 +#: templates/extras/configcontext.html:22 +#: templates/extras/configtemplate.html:18 templates/extras/customfield.html:35 +#: templates/extras/dashboard/widget_add.html:14 +#: templates/extras/eventrule.html:24 templates/extras/exporttemplate.html:25 +#: templates/extras/report_list.html:47 templates/extras/savedfilter.html:18 +#: templates/extras/script_list.html:53 templates/extras/tag.html:23 +#: templates/extras/webhook.html:20 templates/generic/bulk_import.html:118 +#: templates/ipam/aggregate.html:44 templates/ipam/asn.html:43 +#: templates/ipam/asnrange.html:39 templates/ipam/fhrpgroup.html:35 +#: templates/ipam/ipaddress.html:58 templates/ipam/iprange.html:70 +#: templates/ipam/prefix.html:82 templates/ipam/rir.html:29 +#: templates/ipam/role.html:29 templates/ipam/routetarget.html:22 +#: templates/ipam/service.html:53 templates/ipam/servicetemplate.html:28 +#: templates/ipam/vlan.html:65 templates/ipam/vlangroup.html:35 +#: templates/ipam/vrf.html:36 templates/tenancy/contact.html:68 +#: templates/tenancy/contactgroup.html:28 templates/tenancy/contactrole.html:23 +#: templates/tenancy/tenant.html:25 templates/tenancy/tenantgroup.html:36 +#: templates/users/objectpermission.html:22 templates/users/token.html:28 +#: templates/virtualization/cluster.html:28 +#: templates/virtualization/clustergroup.html:29 +#: templates/virtualization/clustertype.html:29 +#: templates/virtualization/virtualdisk.html:40 +#: templates/virtualization/virtualmachine.html:34 +#: templates/virtualization/vminterface.html:54 templates/vpn/ikepolicy.html:18 +#: templates/vpn/ikeproposal.html:18 templates/vpn/ipsecpolicy.html:18 +#: templates/vpn/ipsecprofile.html:18 templates/vpn/ipsecprofile.html:43 +#: templates/vpn/ipsecprofile.html:78 templates/vpn/ipsecproposal.html:18 +#: templates/vpn/l2vpn.html:27 templates/vpn/tunnel.html:34 +#: templates/vpn/tunnelgroup.html:33 templates/wireless/wirelesslan.html:27 +#: templates/wireless/wirelesslangroup.html:34 +#: templates/wireless/wirelesslink.html:37 tenancy/forms/bulk_edit.py:31 +#: tenancy/forms/bulk_edit.py:79 tenancy/forms/bulk_edit.py:121 +#: users/forms/bulk_edit.py:62 users/forms/bulk_edit.py:92 +#: virtualization/forms/bulk_edit.py:31 virtualization/forms/bulk_edit.py:45 +#: virtualization/forms/bulk_edit.py:176 virtualization/forms/bulk_edit.py:227 +#: virtualization/forms/bulk_edit.py:336 vpn/forms/bulk_edit.py:27 +#: vpn/forms/bulk_edit.py:63 vpn/forms/bulk_edit.py:120 +#: vpn/forms/bulk_edit.py:154 vpn/forms/bulk_edit.py:191 +#: vpn/forms/bulk_edit.py:216 vpn/forms/bulk_edit.py:248 +#: vpn/forms/bulk_edit.py:277 wireless/forms/bulk_edit.py:28 +#: wireless/forms/bulk_edit.py:81 wireless/forms/bulk_edit.py:128 +msgid "Description" +msgstr "" + +#: circuits/forms/bulk_edit.py:46 circuits/forms/bulk_edit.py:68 +#: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 +#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 +#: circuits/forms/model_forms.py:32 circuits/forms/model_forms.py:44 +#: circuits/forms/model_forms.py:58 circuits/forms/model_forms.py:92 +#: circuits/tables/circuits.py:55 circuits/tables/providers.py:72 +#: circuits/tables/providers.py:103 templates/circuits/circuit.html:19 +#: templates/circuits/provider.html:20 +#: templates/circuits/provideraccount.html:21 +#: templates/circuits/providernetwork.html:23 +#: templates/dcim/inc/cable_termination.html:51 +msgid "Provider" +msgstr "" + +#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:91 +#: templates/circuits/providernetwork.html:31 +msgid "Service ID" +msgstr "" + +#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:107 +#: dcim/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:500 +#: dcim/forms/bulk_edit.py:694 dcim/forms/bulk_edit.py:1063 +#: dcim/forms/bulk_edit.py:1090 dcim/forms/bulk_edit.py:1562 +#: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1353 +#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:717 +#: dcim/tables/devices.py:777 dcim/tables/devices.py:1004 +#: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 +#: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:259 +#: extras/tables/tables.py:323 templates/circuits/circuittype.html:33 +#: templates/dcim/cable.html:41 templates/dcim/devicerole.html:37 +#: templates/dcim/frontport.html:43 templates/dcim/inventoryitemrole.html:27 +#: templates/dcim/rackrole.html:33 templates/dcim/rearport.html:43 +#: templates/extras/tag.html:29 +msgid "Color" +msgstr "" + +#: circuits/forms/bulk_edit.py:113 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:17 +#: core/forms/filtersets.py:29 core/tables/data.py:20 core/tables/jobs.py:18 +#: dcim/forms/bulk_edit.py:281 dcim/forms/bulk_edit.py:672 +#: dcim/forms/bulk_edit.py:811 dcim/forms/bulk_edit.py:879 +#: dcim/forms/bulk_edit.py:898 dcim/forms/bulk_edit.py:921 +#: dcim/forms/bulk_edit.py:963 dcim/forms/bulk_edit.py:1007 +#: dcim/forms/bulk_edit.py:1058 dcim/forms/bulk_edit.py:1085 +#: dcim/forms/bulk_import.py:206 dcim/forms/bulk_import.py:645 +#: dcim/forms/bulk_import.py:671 dcim/forms/bulk_import.py:697 +#: dcim/forms/bulk_import.py:717 dcim/forms/bulk_import.py:800 +#: dcim/forms/bulk_import.py:890 dcim/forms/bulk_import.py:932 +#: dcim/forms/bulk_import.py:1145 dcim/forms/bulk_import.py:1304 +#: dcim/forms/filtersets.py:286 dcim/forms/filtersets.py:867 +#: dcim/forms/filtersets.py:967 dcim/forms/filtersets.py:1088 +#: dcim/forms/filtersets.py:1158 dcim/forms/filtersets.py:1180 +#: dcim/forms/filtersets.py:1202 dcim/forms/filtersets.py:1219 +#: dcim/forms/filtersets.py:1253 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1369 dcim/forms/object_import.py:89 +#: dcim/forms/object_import.py:118 dcim/forms/object_import.py:150 +#: dcim/tables/devices.py:211 dcim/tables/devices.py:833 +#: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 +#: extras/tables/tables.py:345 extras/tables/tables.py:443 +#: netbox/tables/tables.py:234 templates/circuits/circuit.html:31 +#: templates/core/datasource.html:39 templates/dcim/cable.html:16 +#: templates/dcim/consoleport.html:39 templates/dcim/consoleserverport.html:39 +#: templates/dcim/frontport.html:39 templates/dcim/interface.html:47 +#: templates/dcim/interface.html:175 templates/dcim/interface.html:323 +#: templates/dcim/powerfeed.html:35 templates/dcim/poweroutlet.html:39 +#: templates/dcim/powerport.html:39 templates/dcim/rack.html:81 +#: templates/dcim/rearport.html:39 templates/extras/eventrule.html:95 +#: templates/virtualization/cluster.html:20 templates/vpn/l2vpn.html:23 +#: templates/wireless/inc/authentication_attrs.html:9 +#: templates/wireless/inc/wirelesslink_interface.html:14 +#: virtualization/forms/bulk_edit.py:59 virtualization/forms/bulk_import.py:41 +#: virtualization/forms/filtersets.py:53 virtualization/forms/model_forms.py:65 +#: virtualization/tables/clusters.py:66 vpn/forms/bulk_edit.py:267 +#: vpn/forms/bulk_import.py:259 vpn/forms/filtersets.py:214 +#: vpn/forms/model_forms.py:83 vpn/forms/model_forms.py:118 +#: vpn/forms/model_forms.py:232 +msgid "Type" +msgstr "" + +#: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:97 +msgid "Provider account" +msgstr "" + +#: circuits/forms/bulk_edit.py:131 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:34 +#: core/forms/filtersets.py:75 core/tables/data.py:23 core/tables/jobs.py:26 +#: dcim/forms/bulk_edit.py:104 dcim/forms/bulk_edit.py:179 +#: dcim/forms/bulk_edit.py:260 dcim/forms/bulk_edit.py:593 +#: dcim/forms/bulk_edit.py:646 dcim/forms/bulk_edit.py:678 +#: dcim/forms/bulk_edit.py:805 dcim/forms/bulk_edit.py:1585 +#: dcim/forms/bulk_import.py:87 dcim/forms/bulk_import.py:146 +#: dcim/forms/bulk_import.py:194 dcim/forms/bulk_import.py:442 +#: dcim/forms/bulk_import.py:596 dcim/forms/bulk_import.py:1139 +#: dcim/forms/bulk_import.py:1299 dcim/forms/filtersets.py:170 +#: dcim/forms/filtersets.py:229 dcim/forms/filtersets.py:281 +#: dcim/forms/filtersets.py:726 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:871 dcim/forms/filtersets.py:972 +#: dcim/forms/filtersets.py:1083 dcim/tables/devices.py:173 +#: dcim/tables/devices.py:836 dcim/tables/devices.py:1064 +#: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 +#: dcim/tables/sites.py:82 dcim/tables/sites.py:133 ipam/forms/bulk_edit.py:240 +#: ipam/forms/bulk_edit.py:289 ipam/forms/bulk_edit.py:337 +#: ipam/forms/bulk_edit.py:541 ipam/forms/bulk_import.py:191 +#: ipam/forms/bulk_import.py:256 ipam/forms/bulk_import.py:292 +#: ipam/forms/bulk_import.py:458 ipam/forms/filtersets.py:205 +#: ipam/forms/filtersets.py:270 ipam/forms/filtersets.py:341 +#: ipam/forms/filtersets.py:482 ipam/forms/model_forms.py:449 +#: ipam/tables/ip.py:236 ipam/tables/ip.py:309 ipam/tables/ip.py:359 +#: ipam/tables/ip.py:421 ipam/tables/ip.py:448 ipam/tables/vlans.py:122 +#: ipam/tables/vlans.py:227 templates/circuits/circuit.html:35 +#: templates/core/datasource.html:47 templates/core/job.html:35 +#: templates/dcim/cable.html:20 templates/dcim/device.html:183 +#: templates/dcim/location.html:48 templates/dcim/module.html:67 +#: templates/dcim/powerfeed.html:39 templates/dcim/rack.html:46 +#: templates/dcim/site.html:43 templates/extras/report_list.html:49 +#: templates/extras/script_list.html:55 templates/ipam/ipaddress.html:40 +#: templates/ipam/iprange.html:57 templates/ipam/prefix.html:74 +#: templates/ipam/vlan.html:51 templates/virtualization/cluster.html:24 +#: templates/virtualization/virtualmachine.html:22 templates/vpn/tunnel.html:26 +#: templates/wireless/wirelesslan.html:23 +#: templates/wireless/wirelesslink.html:20 users/forms/filtersets.py:33 +#: users/forms/model_forms.py:196 virtualization/forms/bulk_edit.py:69 +#: virtualization/forms/bulk_edit.py:117 virtualization/forms/bulk_import.py:54 +#: virtualization/forms/bulk_import.py:80 virtualization/forms/filtersets.py:61 +#: virtualization/forms/filtersets.py:156 virtualization/tables/clusters.py:74 +#: virtualization/tables/virtualmachines.py:50 vpn/forms/bulk_edit.py:38 +#: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:46 +#: vpn/tables/tunnels.py:44 wireless/forms/bulk_edit.py:42 +#: wireless/forms/bulk_edit.py:104 wireless/forms/bulk_import.py:43 +#: wireless/forms/bulk_import.py:84 wireless/forms/filtersets.py:48 +#: wireless/forms/filtersets.py:82 wireless/tables/wirelesslan.py:52 +#: wireless/tables/wirelesslink.py:19 +msgid "Status" +msgstr "" + +#: circuits/forms/bulk_edit.py:137 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:119 dcim/forms/bulk_edit.py:120 +#: dcim/forms/bulk_edit.py:185 dcim/forms/bulk_edit.py:255 +#: dcim/forms/bulk_edit.py:366 dcim/forms/bulk_edit.py:583 +#: dcim/forms/bulk_edit.py:684 dcim/forms/bulk_edit.py:1590 +#: dcim/forms/bulk_import.py:106 dcim/forms/bulk_import.py:151 +#: dcim/forms/bulk_import.py:187 dcim/forms/bulk_import.py:274 +#: dcim/forms/bulk_import.py:416 dcim/forms/bulk_import.py:1151 +#: dcim/forms/bulk_import.py:1356 dcim/forms/filtersets.py:165 +#: dcim/forms/filtersets.py:197 dcim/forms/filtersets.py:248 +#: dcim/forms/filtersets.py:333 dcim/forms/filtersets.py:354 +#: dcim/forms/filtersets.py:653 dcim/forms/filtersets.py:826 +#: dcim/forms/filtersets.py:891 dcim/forms/filtersets.py:921 +#: dcim/forms/filtersets.py:1043 dcim/tables/power.py:88 +#: extras/filtersets.py:517 extras/forms/filtersets.py:331 +#: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:40 +#: ipam/forms/bulk_edit.py:65 ipam/forms/bulk_edit.py:109 +#: ipam/forms/bulk_edit.py:138 ipam/forms/bulk_edit.py:163 +#: ipam/forms/bulk_edit.py:235 ipam/forms/bulk_edit.py:284 +#: ipam/forms/bulk_edit.py:332 ipam/forms/bulk_edit.py:536 +#: ipam/forms/bulk_import.py:37 ipam/forms/bulk_import.py:66 +#: ipam/forms/bulk_import.py:94 ipam/forms/bulk_import.py:114 +#: ipam/forms/bulk_import.py:134 ipam/forms/bulk_import.py:163 +#: ipam/forms/bulk_import.py:249 ipam/forms/bulk_import.py:285 +#: ipam/forms/bulk_import.py:451 ipam/forms/filtersets.py:47 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:99 +#: ipam/forms/filtersets.py:119 ipam/forms/filtersets.py:142 +#: ipam/forms/filtersets.py:169 ipam/forms/filtersets.py:256 +#: ipam/forms/filtersets.py:296 ipam/forms/filtersets.py:450 +#: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 +#: templates/circuits/circuit.html:39 templates/dcim/cable.html:24 +#: templates/dcim/device.html:81 templates/dcim/location.html:52 +#: templates/dcim/powerfeed.html:47 templates/dcim/rack.html:37 +#: templates/dcim/rackreservation.html:56 templates/dcim/site.html:47 +#: templates/dcim/virtualdevicecontext.html:55 templates/ipam/aggregate.html:31 +#: templates/ipam/asn.html:34 templates/ipam/asnrange.html:30 +#: templates/ipam/ipaddress.html:31 templates/ipam/iprange.html:61 +#: templates/ipam/prefix.html:30 templates/ipam/routetarget.html:18 +#: templates/ipam/vlan.html:42 templates/ipam/vrf.html:23 +#: templates/tenancy/tenant.html:17 templates/virtualization/cluster.html:36 +#: templates/virtualization/virtualmachine.html:38 templates/vpn/l2vpn.html:31 +#: templates/vpn/tunnel.html:50 templates/wireless/wirelesslan.html:35 +#: templates/wireless/wirelesslink.html:28 tenancy/forms/forms.py:25 +#: tenancy/forms/forms.py:48 tenancy/forms/model_forms.py:53 +#: tenancy/tables/columns.py:64 virtualization/forms/bulk_edit.py:75 +#: virtualization/forms/bulk_edit.py:154 virtualization/forms/bulk_import.py:66 +#: virtualization/forms/bulk_import.py:115 +#: virtualization/forms/filtersets.py:46 virtualization/forms/filtersets.py:101 +#: vpn/forms/bulk_edit.py:58 vpn/forms/bulk_edit.py:272 +#: vpn/forms/bulk_import.py:59 vpn/forms/bulk_import.py:253 +#: vpn/forms/filtersets.py:211 wireless/forms/bulk_edit.py:62 +#: wireless/forms/bulk_edit.py:109 wireless/forms/bulk_import.py:55 +#: wireless/forms/bulk_import.py:97 wireless/forms/filtersets.py:34 +#: wireless/forms/filtersets.py:74 +msgid "Tenant" +msgstr "" + +#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:174 +msgid "Install date" +msgstr "" + +#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:179 +msgid "Termination date" +msgstr "" + +#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:186 +msgid "Commit rate (Kbps)" +msgstr "" + +#: circuits/forms/bulk_edit.py:168 circuits/forms/model_forms.py:111 +msgid "Service Parameters" +msgstr "" + +#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:112 +#: dcim/forms/model_forms.py:141 dcim/forms/model_forms.py:183 +#: dcim/forms/model_forms.py:260 dcim/forms/model_forms.py:672 +#: dcim/forms/model_forms.py:1478 ipam/forms/model_forms.py:61 +#: ipam/forms/model_forms.py:114 ipam/forms/model_forms.py:135 +#: ipam/forms/model_forms.py:159 ipam/forms/model_forms.py:231 +#: ipam/forms/model_forms.py:257 netbox/navigation/menu.py:38 +#: templates/dcim/cable_edit.html:68 templates/dcim/device_edit.html:85 +#: templates/dcim/rack_edit.html:30 templates/ipam/ipaddress_bulk_add.html:27 +#: templates/ipam/ipaddress_edit.html:27 templates/ipam/vlan_edit.html:22 +#: virtualization/forms/model_forms.py:83 +#: virtualization/forms/model_forms.py:225 vpn/forms/bulk_edit.py:77 +#: vpn/forms/filtersets.py:43 vpn/forms/model_forms.py:61 +#: vpn/forms/model_forms.py:146 vpn/forms/model_forms.py:404 +#: wireless/forms/model_forms.py:55 wireless/forms/model_forms.py:160 +msgid "Tenancy" +msgstr "" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 +msgid "Assigned provider" +msgstr "" + +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:170 +#: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:1092 +#: dcim/forms/bulk_import.py:1171 extras/forms/bulk_import.py:229 +msgid "RGB color in hexadecimal. Example:" +msgstr "" + +#: circuits/forms/bulk_import.py:85 +msgid "Assigned provider account" +msgstr "" + +#: circuits/forms/bulk_import.py:92 +msgid "Type of circuit" +msgstr "" + +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 +#: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:196 +#: dcim/forms/bulk_import.py:444 dcim/forms/bulk_import.py:598 +#: dcim/forms/bulk_import.py:1301 ipam/forms/bulk_import.py:193 +#: ipam/forms/bulk_import.py:258 ipam/forms/bulk_import.py:294 +#: ipam/forms/bulk_import.py:460 virtualization/forms/bulk_import.py:56 +#: virtualization/forms/bulk_import.py:82 vpn/forms/bulk_import.py:39 +msgid "Operational status" +msgstr "" + +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 +#: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:278 +#: dcim/forms/bulk_import.py:420 dcim/forms/bulk_import.py:1155 +#: dcim/forms/bulk_import.py:1296 ipam/forms/bulk_import.py:41 +#: ipam/forms/bulk_import.py:70 ipam/forms/bulk_import.py:98 +#: ipam/forms/bulk_import.py:118 ipam/forms/bulk_import.py:138 +#: ipam/forms/bulk_import.py:167 ipam/forms/bulk_import.py:253 +#: ipam/forms/bulk_import.py:289 ipam/forms/bulk_import.py:455 +#: virtualization/forms/bulk_import.py:70 +#: virtualization/forms/bulk_import.py:119 vpn/forms/bulk_import.py:63 +#: wireless/forms/bulk_import.py:59 wireless/forms/bulk_import.py:101 +msgid "Assigned tenant" +msgstr "" + +#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:147 +#: circuits/forms/model_forms.py:143 +msgid "Provider network" +msgstr "" + +#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:118 +#: dcim/forms/bulk_edit.py:247 dcim/forms/bulk_edit.py:345 +#: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:622 +#: dcim/forms/bulk_edit.py:772 dcim/forms/bulk_import.py:181 +#: dcim/forms/bulk_import.py:255 dcim/forms/bulk_import.py:483 +#: dcim/forms/bulk_import.py:1245 dcim/forms/bulk_import.py:1279 +#: dcim/forms/filtersets.py:92 dcim/forms/filtersets.py:245 +#: dcim/forms/filtersets.py:278 dcim/forms/filtersets.py:330 +#: dcim/forms/filtersets.py:381 dcim/forms/filtersets.py:650 +#: dcim/forms/filtersets.py:689 dcim/forms/filtersets.py:890 +#: dcim/forms/filtersets.py:919 dcim/forms/filtersets.py:939 +#: dcim/forms/filtersets.py:1003 dcim/forms/filtersets.py:1033 +#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1153 +#: dcim/forms/filtersets.py:1175 dcim/forms/filtersets.py:1197 +#: dcim/forms/filtersets.py:1214 dcim/forms/filtersets.py:1234 +#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 +#: dcim/forms/filtersets.py:1385 dcim/forms/filtersets.py:1400 +#: dcim/forms/filtersets.py:1411 dcim/forms/model_forms.py:182 +#: dcim/forms/model_forms.py:216 dcim/forms/model_forms.py:402 +#: dcim/forms/model_forms.py:635 dcim/tables/devices.py:190 +#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 +#: extras/filtersets.py:441 extras/forms/filtersets.py:328 +#: ipam/forms/bulk_edit.py:456 ipam/forms/filtersets.py:168 +#: ipam/forms/filtersets.py:400 ipam/forms/filtersets.py:422 +#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:560 +#: templates/dcim/device.html:26 templates/dcim/device_edit.html:30 +#: templates/dcim/inc/cable_termination.html:12 templates/dcim/location.html:27 +#: templates/dcim/powerpanel.html:27 templates/dcim/rack.html:29 +#: templates/dcim/rackreservation.html:35 virtualization/forms/filtersets.py:45 +#: virtualization/forms/filtersets.py:99 wireless/forms/model_forms.py:88 +#: wireless/forms/model_forms.py:128 +msgid "Location" +msgstr "" + +#: circuits/forms/filtersets.py:27 ipam/forms/model_forms.py:158 +#: ipam/models/asns.py:108 ipam/models/asns.py:125 ipam/tables/asn.py:41 +#: templates/ipam/asn.html:20 +msgid "ASN" +msgstr "" + +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:120 +#: dcim/forms/filtersets.py:136 dcim/forms/filtersets.py:150 +#: dcim/forms/filtersets.py:166 dcim/forms/filtersets.py:198 +#: dcim/forms/filtersets.py:249 dcim/forms/filtersets.py:334 +#: dcim/forms/filtersets.py:408 dcim/forms/filtersets.py:654 +#: dcim/forms/filtersets.py:1004 netbox/navigation/menu.py:45 +#: netbox/navigation/menu.py:47 tenancy/tables/columns.py:70 +#: tenancy/tables/contacts.py:25 tenancy/views.py:18 +#: virtualization/forms/filtersets.py:36 virtualization/forms/filtersets.py:47 +#: virtualization/forms/filtersets.py:102 +msgid "Contacts" +msgstr "" + +#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:157 +#: dcim/forms/bulk_edit.py:110 dcim/forms/bulk_edit.py:222 +#: dcim/forms/bulk_edit.py:747 dcim/forms/bulk_import.py:92 +#: dcim/forms/filtersets.py:70 dcim/forms/filtersets.py:177 +#: dcim/forms/filtersets.py:203 dcim/forms/filtersets.py:256 +#: dcim/forms/filtersets.py:359 dcim/forms/filtersets.py:666 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1010 dcim/forms/filtersets.py:1049 +#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 +#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:80 +#: dcim/forms/model_forms.py:115 dcim/forms/object_create.py:374 +#: dcim/tables/devices.py:176 dcim/tables/sites.py:85 extras/filtersets.py:408 +#: ipam/forms/bulk_edit.py:205 ipam/forms/bulk_edit.py:437 +#: ipam/forms/bulk_edit.py:509 ipam/forms/filtersets.py:212 +#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:456 +#: ipam/forms/model_forms.py:532 templates/dcim/device.html:18 +#: templates/dcim/rack.html:19 templates/dcim/rackreservation.html:25 +#: templates/dcim/region.html:26 templates/dcim/site.html:31 +#: templates/ipam/prefix.html:50 templates/ipam/vlan.html:19 +#: virtualization/forms/bulk_edit.py:80 virtualization/forms/filtersets.py:58 +#: virtualization/forms/filtersets.py:129 +#: virtualization/forms/model_forms.py:95 vpn/forms/filtersets.py:253 +msgid "Region" +msgstr "" + +#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:162 +#: dcim/forms/bulk_edit.py:230 dcim/forms/bulk_edit.py:755 +#: dcim/forms/filtersets.py:75 dcim/forms/filtersets.py:182 +#: dcim/forms/filtersets.py:208 dcim/forms/filtersets.py:269 +#: dcim/forms/filtersets.py:364 dcim/forms/filtersets.py:671 +#: dcim/forms/filtersets.py:901 dcim/forms/filtersets.py:1015 +#: dcim/forms/filtersets.py:1054 dcim/forms/object_create.py:382 +#: extras/filtersets.py:425 ipam/forms/bulk_edit.py:210 +#: ipam/forms/bulk_edit.py:444 ipam/forms/bulk_edit.py:514 +#: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:412 +#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:545 +#: virtualization/forms/bulk_edit.py:85 virtualization/forms/filtersets.py:68 +#: virtualization/forms/filtersets.py:134 +#: virtualization/forms/model_forms.py:101 +msgid "Site group" +msgstr "" + +#: circuits/forms/filtersets.py:51 +msgid "ASN (legacy)" +msgstr "" + +#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 +#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 +#: core/forms/filtersets.py:63 dcim/forms/bulk_edit.py:718 +#: dcim/forms/filtersets.py:164 dcim/forms/filtersets.py:196 +#: dcim/forms/filtersets.py:825 dcim/forms/filtersets.py:920 +#: dcim/forms/filtersets.py:1044 dcim/forms/filtersets.py:1152 +#: dcim/forms/filtersets.py:1174 dcim/forms/filtersets.py:1196 +#: dcim/forms/filtersets.py:1213 dcim/forms/filtersets.py:1230 +#: dcim/forms/filtersets.py:1341 dcim/forms/filtersets.py:1363 +#: dcim/forms/filtersets.py:1384 dcim/forms/filtersets.py:1399 +#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:40 +#: extras/forms/filtersets.py:111 extras/forms/filtersets.py:142 +#: extras/forms/filtersets.py:182 extras/forms/filtersets.py:198 +#: extras/forms/filtersets.py:229 extras/forms/filtersets.py:253 +#: extras/forms/filtersets.py:450 extras/forms/filtersets.py:491 +#: ipam/forms/filtersets.py:98 ipam/forms/filtersets.py:255 +#: ipam/forms/filtersets.py:294 ipam/forms/filtersets.py:368 +#: ipam/forms/filtersets.py:449 ipam/forms/filtersets.py:508 +#: ipam/forms/filtersets.py:526 netbox/tables/tables.py:250 +#: virtualization/forms/filtersets.py:44 virtualization/forms/filtersets.py:100 +#: virtualization/forms/filtersets.py:190 +#: virtualization/forms/filtersets.py:235 vpn/forms/filtersets.py:210 +#: wireless/forms/filtersets.py:33 wireless/forms/filtersets.py:73 +msgid "Attributes" +msgstr "" + +#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:60 +#: circuits/tables/providers.py:66 templates/circuits/circuit.html:23 +#: templates/circuits/provideraccount.html:25 +msgid "Account" +msgstr "" + +#: circuits/forms/model_forms.py:64 +#: templates/circuits/circuittermination_edit.html:23 +#: templates/circuits/inc/circuit_termination.html:89 +#: templates/circuits/providernetwork.html:18 +msgid "Provider Network" +msgstr "" + +#: circuits/forms/model_forms.py:78 templates/circuits/circuittype.html:20 +msgid "Circuit Type" +msgstr "" + +#: circuits/models/circuits.py:25 dcim/models/cables.py:67 +#: dcim/models/device_component_templates.py:491 +#: dcim/models/device_component_templates.py:591 +#: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 +#: dcim/models/device_components.py:1166 dcim/models/devices.py:467 +#: dcim/models/racks.py:43 extras/models/tags.py:28 +msgid "color" +msgstr "" + +#: circuits/models/circuits.py:34 +msgid "circuit type" +msgstr "" + +#: circuits/models/circuits.py:35 +msgid "circuit types" +msgstr "" + +#: circuits/models/circuits.py:46 +msgid "circuit ID" +msgstr "" + +#: circuits/models/circuits.py:47 +msgid "Unique circuit ID" +msgstr "" + +#: circuits/models/circuits.py:67 core/models/data.py:54 core/models/jobs.py:85 +#: dcim/models/cables.py:49 dcim/models/devices.py:641 +#: dcim/models/devices.py:1165 dcim/models/devices.py:1374 +#: dcim/models/power.py:95 dcim/models/racks.py:97 dcim/models/sites.py:154 +#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 +#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: virtualization/models/clusters.py:74 +#: virtualization/models/virtualmachines.py:82 vpn/models/tunnels.py:40 +#: wireless/models.py:94 wireless/models.py:158 +msgid "status" +msgstr "" + +#: circuits/models/circuits.py:82 +msgid "installed" +msgstr "" + +#: circuits/models/circuits.py:87 +msgid "terminates" +msgstr "" + +#: circuits/models/circuits.py:92 +msgid "commit rate (Kbps)" +msgstr "" + +#: circuits/models/circuits.py:93 +msgid "Committed rate" +msgstr "" + +#: circuits/models/circuits.py:135 +msgid "circuit" +msgstr "" + +#: circuits/models/circuits.py:136 +msgid "circuits" +msgstr "" + +#: circuits/models/circuits.py:169 +msgid "termination" +msgstr "" + +#: circuits/models/circuits.py:186 +msgid "port speed (Kbps)" +msgstr "" + +#: circuits/models/circuits.py:189 +msgid "Physical circuit speed" +msgstr "" + +#: circuits/models/circuits.py:194 +msgid "upstream speed (Kbps)" +msgstr "" + +#: circuits/models/circuits.py:195 +msgid "Upstream speed, if different from port speed" +msgstr "" + +#: circuits/models/circuits.py:200 +msgid "cross-connect ID" +msgstr "" + +#: circuits/models/circuits.py:201 +msgid "ID of the local cross-connect" +msgstr "" + +#: circuits/models/circuits.py:206 +msgid "patch panel/port(s)" +msgstr "" + +#: circuits/models/circuits.py:207 +msgid "Patch panel ID and port number(s)" +msgstr "" + +#: circuits/models/circuits.py:210 dcim/models/device_component_templates.py:61 +#: dcim/models/device_components.py:69 dcim/models/racks.py:537 +#: extras/models/configs.py:45 extras/models/configs.py:219 +#: extras/models/customfields.py:122 extras/models/models.py:58 +#: extras/models/models.py:188 extras/models/models.py:426 +#: extras/models/models.py:541 extras/models/staging.py:31 +#: extras/models/tags.py:32 netbox/models/__init__.py:109 +#: netbox/models/__init__.py:144 netbox/models/__init__.py:190 +#: users/models.py:273 users/models.py:348 +#: virtualization/models/virtualmachines.py:282 +msgid "description" +msgstr "" + +#: circuits/models/circuits.py:223 +msgid "circuit termination" +msgstr "" + +#: circuits/models/circuits.py:224 +msgid "circuit terminations" +msgstr "" + +#: circuits/models/providers.py:22 circuits/models/providers.py:66 +#: circuits/models/providers.py:104 core/models/data.py:41 +#: core/models/jobs.py:46 dcim/models/device_component_templates.py:43 +#: dcim/models/device_components.py:54 dcim/models/devices.py:581 +#: dcim/models/devices.py:1305 dcim/models/devices.py:1370 +#: dcim/models/power.py:39 dcim/models/power.py:91 dcim/models/racks.py:62 +#: dcim/models/sites.py:138 extras/models/configs.py:36 +#: extras/models/configs.py:215 extras/models/customfields.py:89 +#: extras/models/models.py:53 extras/models/models.py:183 +#: extras/models/models.py:326 extras/models/models.py:422 +#: extras/models/models.py:531 extras/models/models.py:626 +#: extras/models/staging.py:26 ipam/models/asns.py:18 ipam/models/fhrp.py:25 +#: ipam/models/services.py:52 ipam/models/services.py:88 +#: ipam/models/vlans.py:26 ipam/models/vlans.py:164 ipam/models/vrfs.py:22 +#: ipam/models/vrfs.py:79 netbox/models/__init__.py:136 +#: netbox/models/__init__.py:180 tenancy/models/contacts.py:64 +#: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 +#: users/models.py:344 virtualization/models/clusters.py:57 +#: virtualization/models/virtualmachines.py:70 +#: virtualization/models/virtualmachines.py:272 vpn/models/crypto.py:24 +#: vpn/models/crypto.py:71 vpn/models/crypto.py:119 vpn/models/crypto.py:171 +#: vpn/models/crypto.py:209 vpn/models/l2vpn.py:22 vpn/models/tunnels.py:35 +#: wireless/models.py:50 +msgid "name" +msgstr "" + +#: circuits/models/providers.py:25 +msgid "Full name of the provider" +msgstr "" + +#: circuits/models/providers.py:28 dcim/models/devices.py:86 +#: dcim/models/sites.py:149 extras/models/models.py:536 ipam/models/asns.py:23 +#: ipam/models/vlans.py:30 netbox/models/__init__.py:140 +#: netbox/models/__init__.py:185 tenancy/models/tenants.py:25 +#: tenancy/models/tenants.py:49 vpn/models/l2vpn.py:27 wireless/models.py:55 +msgid "slug" +msgstr "" + +#: circuits/models/providers.py:42 +msgid "provider" +msgstr "" + +#: circuits/models/providers.py:43 +msgid "providers" +msgstr "" + +#: circuits/models/providers.py:63 +msgid "account ID" +msgstr "" + +#: circuits/models/providers.py:86 +msgid "provider account" +msgstr "" + +#: circuits/models/providers.py:87 +msgid "provider accounts" +msgstr "" + +#: circuits/models/providers.py:115 +msgid "service ID" +msgstr "" + +#: circuits/models/providers.py:126 +msgid "provider network" +msgstr "" + +#: circuits/models/providers.py:127 +msgid "provider networks" +msgstr "" + +#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/providers.py:69 circuits/tables/providers.py:99 +#: core/tables/data.py:16 core/tables/jobs.py:14 dcim/forms/filtersets.py:60 +#: dcim/forms/object_create.py:42 dcim/tables/devices.py:88 +#: dcim/tables/devices.py:125 dcim/tables/devices.py:167 +#: dcim/tables/devices.py:318 dcim/tables/devices.py:395 +#: dcim/tables/devices.py:439 dcim/tables/devices.py:491 +#: dcim/tables/devices.py:543 dcim/tables/devices.py:663 +#: dcim/tables/devices.py:744 dcim/tables/devices.py:794 +#: dcim/tables/devices.py:860 dcim/tables/devices.py:975 +#: dcim/tables/devices.py:995 dcim/tables/devices.py:1024 +#: dcim/tables/devices.py:1054 dcim/tables/devicetypes.py:32 +#: dcim/tables/power.py:22 dcim/tables/power.py:62 dcim/tables/racks.py:23 +#: dcim/tables/racks.py:53 dcim/tables/sites.py:24 dcim/tables/sites.py:51 +#: dcim/tables/sites.py:78 dcim/tables/sites.py:125 +#: extras/forms/filtersets.py:190 extras/tables/tables.py:40 +#: extras/tables/tables.py:83 extras/tables/tables.py:115 +#: extras/tables/tables.py:139 extras/tables/tables.py:204 +#: extras/tables/tables.py:251 extras/tables/tables.py:274 +#: extras/tables/tables.py:319 extras/tables/tables.py:371 +#: extras/tables/tables.py:394 ipam/forms/bulk_edit.py:390 +#: ipam/forms/filtersets.py:372 ipam/tables/asn.py:16 ipam/tables/ip.py:85 +#: ipam/tables/ip.py:159 ipam/tables/services.py:15 ipam/tables/services.py:40 +#: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 +#: ipam/tables/vrfs.py:67 templates/circuits/circuittype.html:25 +#: templates/circuits/provideraccount.html:29 +#: templates/circuits/providernetwork.html:27 templates/core/datasource.html:35 +#: templates/core/job.html:31 templates/dcim/consoleport.html:31 +#: templates/dcim/consoleserverport.html:31 templates/dcim/devicebay.html:27 +#: templates/dcim/devicerole.html:29 templates/dcim/frontport.html:31 +#: templates/dcim/inc/interface_vlans_table.html:5 +#: templates/dcim/inc/panels/inventory_items.html:10 +#: templates/dcim/interface.html:39 templates/dcim/interface.html:171 +#: templates/dcim/inventoryitem.html:29 +#: templates/dcim/inventoryitemrole.html:19 templates/dcim/location.html:32 +#: templates/dcim/manufacturer.html:39 templates/dcim/modulebay.html:27 +#: templates/dcim/platform.html:32 templates/dcim/poweroutlet.html:31 +#: templates/dcim/powerport.html:31 templates/dcim/rackrole.html:25 +#: templates/dcim/rearport.html:31 templates/dcim/region.html:30 +#: templates/dcim/sitegroup.html:30 templates/dcim/virtualdevicecontext.html:21 +#: templates/extras/admin/plugins_list.html:22 +#: templates/extras/configcontext.html:14 +#: templates/extras/configtemplate.html:14 templates/extras/customfield.html:16 +#: templates/extras/customlink.html:14 templates/extras/eventrule.html:16 +#: templates/extras/exporttemplate.html:21 templates/extras/report_list.html:46 +#: templates/extras/savedfilter.html:14 templates/extras/script_list.html:52 +#: templates/extras/tag.html:17 templates/extras/webhook.html:16 +#: templates/ipam/asnrange.html:16 templates/ipam/fhrpgroup.html:31 +#: templates/ipam/rir.html:25 templates/ipam/role.html:25 +#: templates/ipam/routetarget.html:14 templates/ipam/service.html:27 +#: templates/ipam/servicetemplate.html:16 templates/ipam/vlan.html:38 +#: templates/ipam/vlangroup.html:31 templates/tenancy/contact.html:26 +#: templates/tenancy/contactgroup.html:24 templates/tenancy/contactrole.html:19 +#: templates/tenancy/tenantgroup.html:32 templates/users/group.html:18 +#: templates/users/objectpermission.html:18 +#: templates/virtualization/cluster.html:16 +#: templates/virtualization/clustergroup.html:25 +#: templates/virtualization/clustertype.html:25 +#: templates/virtualization/virtualdisk.html:26 +#: templates/virtualization/virtualmachine.html:18 +#: templates/virtualization/vminterface.html:28 templates/vpn/ikepolicy.html:14 +#: templates/vpn/ikeproposal.html:14 templates/vpn/ipsecpolicy.html:14 +#: templates/vpn/ipsecprofile.html:14 templates/vpn/ipsecprofile.html:39 +#: templates/vpn/ipsecprofile.html:74 templates/vpn/ipsecproposal.html:14 +#: templates/vpn/l2vpn.html:15 templates/vpn/tunnel.html:22 +#: templates/vpn/tunnelgroup.html:29 +#: templates/wireless/wirelesslangroup.html:30 tenancy/tables/contacts.py:19 +#: tenancy/tables/contacts.py:41 tenancy/tables/contacts.py:56 +#: tenancy/tables/tenants.py:16 tenancy/tables/tenants.py:38 users/tables.py:62 +#: users/tables.py:79 virtualization/forms/bulk_create.py:20 +#: virtualization/forms/object_create.py:13 +#: virtualization/forms/object_create.py:23 +#: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 +#: virtualization/tables/clusters.py:62 +#: virtualization/tables/virtualmachines.py:45 +#: virtualization/tables/virtualmachines.py:119 +#: virtualization/tables/virtualmachines.py:172 vpn/tables/crypto.py:18 +#: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 +#: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 +#: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 +#: wireless/tables/wirelesslan.py:79 +msgid "Name" +msgstr "" + +#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/providers.py:79 netbox/navigation/menu.py:254 +#: netbox/navigation/menu.py:258 netbox/navigation/menu.py:260 +#: templates/circuits/provider.html:61 +#: templates/circuits/provideraccount.html:46 +#: templates/circuits/providernetwork.html:54 +msgid "Circuits" +msgstr "" + +#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:27 +msgid "Circuit ID" +msgstr "" + +#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:157 +msgid "Side A" +msgstr "" + +#: circuits/tables/circuits.py:69 +msgid "Side Z" +msgstr "" + +#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:56 +msgid "Commit Rate" +msgstr "" + +#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/providers.py:82 circuits/tables/providers.py:107 +#: dcim/tables/devices.py:1037 dcim/tables/devicetypes.py:92 +#: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 +#: dcim/tables/power.py:96 dcim/tables/racks.py:76 dcim/tables/racks.py:156 +#: dcim/tables/sites.py:103 extras/forms/bulk_edit.py:320 +#: extras/tables/tables.py:485 ipam/tables/asn.py:69 ipam/tables/fhrp.py:34 +#: ipam/tables/ip.py:135 ipam/tables/ip.py:272 ipam/tables/ip.py:325 +#: ipam/tables/ip.py:392 ipam/tables/services.py:24 ipam/tables/services.py:54 +#: ipam/tables/vlans.py:141 ipam/tables/vrfs.py:46 ipam/tables/vrfs.py:71 +#: templates/dcim/cable_edit.html:85 templates/generic/bulk_edit.html:102 +#: templates/inc/panels/comments.html:6 tenancy/tables/contacts.py:68 +#: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 +#: virtualization/tables/clusters.py:91 +#: virtualization/tables/virtualmachines.py:68 vpn/tables/crypto.py:37 +#: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 +#: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:57 +#: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 +msgid "Comments" +msgstr "" + +#: circuits/tables/providers.py:23 +msgid "Accounts" +msgstr "" + +#: circuits/tables/providers.py:29 +msgid "Account Count" +msgstr "" + +#: circuits/tables/providers.py:39 dcim/tables/sites.py:100 +msgid "ASN Count" +msgstr "" + +#: core/choices.py:18 +msgid "New" +msgstr "" + +#: core/choices.py:19 +msgid "Queued" +msgstr "" + +#: core/choices.py:20 +msgid "Syncing" +msgstr "" + +#: core/choices.py:21 core/choices.py:57 core/tables/jobs.py:41 +#: extras/choices.py:210 templates/core/job.html:75 +msgid "Completed" +msgstr "" + +#: core/choices.py:22 core/choices.py:59 dcim/choices.py:176 +#: dcim/choices.py:222 dcim/choices.py:1496 extras/choices.py:212 +#: virtualization/choices.py:47 +msgid "Failed" +msgstr "" + +#: core/choices.py:35 netbox/navigation/menu.py:330 +#: templates/extras/script/base.html:14 templates/extras/script_list.html:6 +#: templates/extras/script_list.html:20 templates/extras/script_result.html:18 +msgid "Scripts" +msgstr "" + +#: core/choices.py:36 netbox/navigation/menu.py:324 +#: templates/extras/report/base.html:13 templates/extras/report_list.html:7 +#: templates/extras/report_list.html:12 +msgid "Reports" +msgstr "" + +#: core/choices.py:54 extras/choices.py:207 +msgid "Pending" +msgstr "" + +#: core/choices.py:55 core/tables/jobs.py:32 extras/choices.py:208 +#: templates/core/job.html:62 +msgid "Scheduled" +msgstr "" + +#: core/choices.py:56 extras/choices.py:209 +msgid "Running" +msgstr "" + +#: core/choices.py:58 extras/choices.py:211 +msgid "Errored" +msgstr "" + +#: core/data_backends.py:29 templates/dcim/interface.html:224 +msgid "Local" +msgstr "" + +#: core/data_backends.py:47 extras/tables/tables.py:431 +#: templates/account/profile.html:16 templates/users/user.html:18 +#: users/tables.py:31 +msgid "Username" +msgstr "" + +#: core/data_backends.py:49 core/data_backends.py:55 +msgid "Only used for cloning with HTTP(S)" +msgstr "" + +#: core/data_backends.py:53 templates/account/base.html:17 +#: templates/account/password.html:11 users/forms/model_forms.py:171 +msgid "Password" +msgstr "" + +#: core/data_backends.py:59 +msgid "Branch" +msgstr "" + +#: core/data_backends.py:118 +msgid "AWS access key ID" +msgstr "" + +#: core/data_backends.py:122 +msgid "AWS secret access key" +msgstr "" + +#: core/filtersets.py:49 extras/filtersets.py:203 extras/filtersets.py:538 +#: extras/filtersets.py:566 +msgid "Data source (ID)" +msgstr "" + +#: core/filtersets.py:55 +msgid "Data source (name)" +msgstr "" + +#: core/forms/bulk_edit.py:24 ipam/forms/bulk_edit.py:47 +msgid "Enforce unique space" +msgstr "" + +#: core/forms/bulk_edit.py:33 extras/forms/model_forms.py:202 +#: templates/extras/savedfilter.html:57 vpn/forms/filtersets.py:95 +#: vpn/forms/filtersets.py:124 vpn/forms/filtersets.py:148 +#: vpn/forms/filtersets.py:167 vpn/forms/model_forms.py:294 +#: vpn/forms/model_forms.py:315 vpn/forms/model_forms.py:329 +#: vpn/forms/model_forms.py:350 vpn/forms/model_forms.py:373 +msgid "Parameters" +msgstr "" + +#: core/forms/bulk_edit.py:37 templates/core/datasource.html:69 +msgid "Ignore rules" +msgstr "" + +#: core/forms/filtersets.py:26 core/forms/model_forms.py:95 +#: extras/forms/model_forms.py:165 extras/forms/model_forms.py:455 +#: extras/forms/model_forms.py:508 extras/tables/tables.py:149 +#: extras/tables/tables.py:363 extras/tables/tables.py:398 +#: templates/core/datasource.html:31 +#: templates/dcim/device/render_config.html:19 +#: templates/extras/configcontext.html:30 +#: templates/extras/configtemplate.html:22 +#: templates/extras/exporttemplate.html:41 +#: templates/virtualization/virtualmachine/render_config.html:19 +msgid "Data Source" +msgstr "" + +#: core/forms/filtersets.py:39 core/tables/data.py:26 +#: dcim/forms/bulk_edit.py:1012 dcim/forms/bulk_edit.py:1285 +#: dcim/forms/filtersets.py:1270 dcim/tables/devices.py:568 +#: dcim/tables/devicetypes.py:221 extras/forms/bulk_edit.py:97 +#: extras/forms/bulk_edit.py:161 extras/forms/bulk_edit.py:220 +#: extras/forms/filtersets.py:119 extras/forms/filtersets.py:206 +#: extras/forms/filtersets.py:267 extras/tables/tables.py:122 +#: extras/tables/tables.py:211 extras/tables/tables.py:284 +#: templates/core/datasource.html:43 templates/dcim/interface.html:62 +#: templates/extras/customlink.html:18 templates/extras/eventrule.html:20 +#: templates/extras/savedfilter.html:26 +#: templates/users/objectpermission.html:26 +#: templates/virtualization/vminterface.html:32 users/forms/bulk_edit.py:69 +#: users/forms/filtersets.py:71 users/tables.py:86 +#: virtualization/forms/bulk_edit.py:216 virtualization/forms/filtersets.py:207 +msgid "Enabled" +msgstr "" + +#: core/forms/filtersets.py:51 core/forms/mixins.py:21 +msgid "File" +msgstr "" + +#: core/forms/filtersets.py:56 core/forms/mixins.py:16 +#: extras/forms/filtersets.py:147 extras/forms/filtersets.py:336 +#: extras/forms/filtersets.py:422 +msgid "Data source" +msgstr "" + +#: core/forms/filtersets.py:64 extras/forms/filtersets.py:449 +msgid "Creation" +msgstr "" + +#: core/forms/filtersets.py:70 extras/forms/filtersets.py:473 +#: extras/forms/filtersets.py:519 extras/tables/tables.py:474 +#: templates/core/job.html:25 templates/extras/objectchange.html:56 +#: tenancy/tables/contacts.py:90 vpn/tables/l2vpn.py:59 +msgid "Object Type" +msgstr "" + +#: core/forms/filtersets.py:80 +msgid "Created after" +msgstr "" + +#: core/forms/filtersets.py:85 +msgid "Created before" +msgstr "" + +#: core/forms/filtersets.py:90 +msgid "Scheduled after" +msgstr "" + +#: core/forms/filtersets.py:95 +msgid "Scheduled before" +msgstr "" + +#: core/forms/filtersets.py:100 +msgid "Started after" +msgstr "" + +#: core/forms/filtersets.py:105 +msgid "Started before" +msgstr "" + +#: core/forms/filtersets.py:110 +msgid "Completed after" +msgstr "" + +#: core/forms/filtersets.py:115 +msgid "Completed before" +msgstr "" + +#: core/forms/filtersets.py:122 dcim/forms/bulk_edit.py:359 +#: dcim/forms/filtersets.py:352 dcim/forms/filtersets.py:396 +#: dcim/forms/model_forms.py:251 extras/forms/filtersets.py:465 +#: extras/forms/filtersets.py:511 templates/dcim/rackreservation.html:65 +#: templates/extras/objectchange.html:40 templates/extras/savedfilter.html:22 +#: templates/users/token.html:22 templates/users/user.html:6 +#: templates/users/user.html:14 users/filtersets.py:74 users/filtersets.py:134 +#: users/forms/filtersets.py:85 users/forms/filtersets.py:126 +#: users/forms/model_forms.py:156 users/forms/model_forms.py:194 +#: users/tables.py:19 +msgid "User" +msgstr "" + +#: core/forms/model_forms.py:52 core/tables/data.py:46 +#: templates/core/datafile.html:36 templates/extras/report/base.html:33 +#: templates/extras/script/base.html:32 templates/extras/script_result.html:45 +msgid "Source" +msgstr "" + +#: core/forms/model_forms.py:56 +msgid "Backend Parameters" +msgstr "" + +#: core/forms/model_forms.py:94 +msgid "File Upload" +msgstr "" + +#: core/forms/model_forms.py:147 templates/core/configrevision.html:43 +#: templates/dcim/rack_elevation_list.html:6 +msgid "Rack Elevations" +msgstr "" + +#: core/forms/model_forms.py:148 dcim/choices.py:1407 +#: dcim/forms/bulk_edit.py:859 dcim/forms/bulk_edit.py:1242 +#: dcim/forms/bulk_edit.py:1260 dcim/tables/racks.py:89 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 +msgid "Power" +msgstr "" + +#: core/forms/model_forms.py:149 netbox/navigation/menu.py:142 +#: templates/core/configrevision.html:79 +msgid "IPAM" +msgstr "" + +#: core/forms/model_forms.py:150 netbox/navigation/menu.py:218 +#: templates/core/configrevision.html:95 vpn/forms/bulk_edit.py:76 +#: vpn/forms/filtersets.py:42 vpn/forms/model_forms.py:60 +#: vpn/forms/model_forms.py:145 +msgid "Security" +msgstr "" + +#: core/forms/model_forms.py:151 templates/core/configrevision.html:107 +msgid "Banners" +msgstr "" + +#: core/forms/model_forms.py:152 templates/core/configrevision.html:131 +msgid "Pagination" +msgstr "" + +#: core/forms/model_forms.py:153 extras/forms/model_forms.py:63 +#: templates/core/configrevision.html:147 +msgid "Validation" +msgstr "" + +#: core/forms/model_forms.py:154 templates/account/preferences.html:6 +#: templates/core/configrevision.html:175 +msgid "User Preferences" +msgstr "" + +#: core/forms/model_forms.py:155 dcim/forms/filtersets.py:658 +#: templates/core/configrevision.html:193 users/forms/model_forms.py:63 +msgid "Miscellaneous" +msgstr "" + +#: core/forms/model_forms.py:158 +msgid "Config Revision" +msgstr "" + +#: core/forms/model_forms.py:197 +msgid "This parameter has been defined statically and cannot be modified." +msgstr "" + +#: core/forms/model_forms.py:205 +#, python-brace-format +msgid "Current value: {value}" +msgstr "" + +#: core/forms/model_forms.py:207 +msgid " (default)" +msgstr "" + +#: core/models/config.py:18 core/models/data.py:259 core/models/files.py:27 +#: core/models/jobs.py:50 extras/models/models.py:760 +#: netbox/models/features.py:52 users/models.py:248 +msgid "created" +msgstr "" + +#: core/models/config.py:22 +msgid "comment" +msgstr "" + +#: core/models/config.py:29 +msgid "configuration data" +msgstr "" + +#: core/models/config.py:36 +msgid "config revision" +msgstr "" + +#: core/models/config.py:37 +msgid "config revisions" +msgstr "" + +#: core/models/config.py:41 +msgid "Default configuration" +msgstr "" + +#: core/models/config.py:43 +msgid "Current configuration" +msgstr "" + +#: core/models/config.py:44 +#, python-brace-format +msgid "Config revision #{id}" +msgstr "" + +#: core/models/data.py:46 dcim/models/cables.py:43 +#: dcim/models/device_component_templates.py:177 +#: dcim/models/device_component_templates.py:211 +#: dcim/models/device_component_templates.py:246 +#: dcim/models/device_component_templates.py:308 +#: dcim/models/device_component_templates.py:387 +#: dcim/models/device_component_templates.py:486 +#: dcim/models/device_component_templates.py:586 +#: dcim/models/device_components.py:284 dcim/models/device_components.py:313 +#: dcim/models/device_components.py:346 dcim/models/device_components.py:464 +#: dcim/models/device_components.py:606 dcim/models/device_components.py:971 +#: dcim/models/device_components.py:1045 dcim/models/power.py:101 +#: dcim/models/racks.py:127 extras/models/customfields.py:75 +#: extras/models/search.py:43 virtualization/models/clusters.py:61 +#: vpn/models/l2vpn.py:32 +msgid "type" +msgstr "" + +#: core/models/data.py:51 extras/choices.py:34 extras/models/models.py:194 +#: templates/core/datasource.html:59 +msgid "URL" +msgstr "" + +#: core/models/data.py:61 dcim/models/device_component_templates.py:392 +#: dcim/models/device_components.py:513 extras/models/models.py:88 +#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:353 +msgid "enabled" +msgstr "" + +#: core/models/data.py:65 +msgid "ignore rules" +msgstr "" + +#: core/models/data.py:67 +msgid "Patterns (one per line) matching files to ignore when syncing" +msgstr "" + +#: core/models/data.py:70 extras/models/models.py:564 +msgid "parameters" +msgstr "" + +#: core/models/data.py:75 +msgid "last synced" +msgstr "" + +#: core/models/data.py:83 +msgid "data source" +msgstr "" + +#: core/models/data.py:84 +msgid "data sources" +msgstr "" + +#: core/models/data.py:124 +#, python-brace-format +msgid "Unknown backend type: {type}" +msgstr "" + +#: core/models/data.py:263 core/models/files.py:31 netbox/models/features.py:58 +msgid "last updated" +msgstr "" + +#: core/models/data.py:273 dcim/models/cables.py:430 +msgid "path" +msgstr "" + +#: core/models/data.py:276 +msgid "File path relative to the data source's root" +msgstr "" + +#: core/models/data.py:280 ipam/models/ip.py:502 +msgid "size" +msgstr "" + +#: core/models/data.py:283 +msgid "hash" +msgstr "" + +#: core/models/data.py:287 +msgid "Length must be 64 hexadecimal characters." +msgstr "" + +#: core/models/data.py:289 +msgid "SHA256 hash of the file data" +msgstr "" + +#: core/models/data.py:306 +msgid "data file" +msgstr "" + +#: core/models/data.py:307 +msgid "data files" +msgstr "" + +#: core/models/data.py:393 +msgid "auto sync record" +msgstr "" + +#: core/models/data.py:394 +msgid "auto sync records" +msgstr "" + +#: core/models/files.py:37 +msgid "file root" +msgstr "" + +#: core/models/files.py:42 +msgid "file path" +msgstr "" + +#: core/models/files.py:44 +msgid "File path relative to the designated root path" +msgstr "" + +#: core/models/files.py:61 +msgid "managed file" +msgstr "" + +#: core/models/files.py:62 +msgid "managed files" +msgstr "" + +#: core/models/jobs.py:54 +msgid "scheduled" +msgstr "" + +#: core/models/jobs.py:59 +msgid "interval" +msgstr "" + +#: core/models/jobs.py:65 +msgid "Recurrence interval (in minutes)" +msgstr "" + +#: core/models/jobs.py:68 +msgid "started" +msgstr "" + +#: core/models/jobs.py:73 +msgid "completed" +msgstr "" + +#: core/models/jobs.py:91 extras/models/models.py:123 +#: extras/models/staging.py:87 +msgid "data" +msgstr "" + +#: core/models/jobs.py:96 +msgid "error" +msgstr "" + +#: core/models/jobs.py:101 +msgid "job ID" +msgstr "" + +#: core/models/jobs.py:112 +msgid "job" +msgstr "" + +#: core/models/jobs.py:113 +msgid "jobs" +msgstr "" + +#: core/models/jobs.py:135 +#, python-brace-format +msgid "Jobs cannot be assigned to this object type ({type})." +msgstr "" + +#: core/tables/config.py:21 users/forms/filtersets.py:45 users/tables.py:39 +msgid "Is Active" +msgstr "" + +#: core/tables/data.py:50 templates/core/datafile.html:40 +msgid "Path" +msgstr "" + +#: core/tables/data.py:54 templates/extras/inc/result_pending.html:7 +msgid "Last updated" +msgstr "" + +#: core/tables/jobs.py:10 dcim/tables/devicetypes.py:161 +#: extras/tables/tables.py:174 extras/tables/tables.py:340 +#: netbox/tables/tables.py:184 templates/dcim/virtualchassis_edit.html:53 +#: wireless/tables/wirelesslink.py:16 +msgid "ID" +msgstr "" + +#: core/tables/jobs.py:21 extras/choices.py:38 extras/tables/tables.py:236 +#: extras/tables/tables.py:350 extras/tables/tables.py:448 +#: extras/tables/tables.py:479 netbox/tables/tables.py:238 +#: templates/extras/eventrule.html:99 +#: templates/extras/htmx/report_result.html:45 +#: templates/extras/journalentry.html:21 templates/extras/objectchange.html:62 +#: tenancy/tables/contacts.py:93 vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "" + +#: core/tables/jobs.py:35 +msgid "Interval" +msgstr "" + +#: core/tables/jobs.py:38 templates/core/job.html:71 +#: templates/extras/htmx/report_result.html:7 +#: templates/extras/htmx/script_result.html:8 +msgid "Started" +msgstr "" + +#: dcim/api/serializers.py:205 templates/dcim/rack.html:33 +msgid "Facility ID" +msgstr "" + +#: dcim/api/serializers.py:321 dcim/api/serializers.py:680 +msgid "Position (U)" +msgstr "" + +#: dcim/choices.py:21 virtualization/choices.py:21 +msgid "Staging" +msgstr "" + +#: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 +#: dcim/choices.py:1420 virtualization/choices.py:23 +#: virtualization/choices.py:48 +msgid "Decommissioning" +msgstr "" + +#: dcim/choices.py:24 +msgid "Retired" +msgstr "" + +#: dcim/choices.py:65 +msgid "2-post frame" +msgstr "" + +#: dcim/choices.py:66 +msgid "4-post frame" +msgstr "" + +#: dcim/choices.py:67 +msgid "4-post cabinet" +msgstr "" + +#: dcim/choices.py:68 +msgid "Wall-mounted frame" +msgstr "" + +#: dcim/choices.py:69 +msgid "Wall-mounted frame (vertical)" +msgstr "" + +#: dcim/choices.py:70 +msgid "Wall-mounted cabinet" +msgstr "" + +#: dcim/choices.py:71 +msgid "Wall-mounted cabinet (vertical)" +msgstr "" + +#: dcim/choices.py:83 dcim/choices.py:84 dcim/choices.py:85 dcim/choices.py:86 +#, python-brace-format +msgid "{n} inches" +msgstr "" + +#: dcim/choices.py:100 ipam/choices.py:32 ipam/choices.py:50 ipam/choices.py:70 +#: ipam/choices.py:155 wireless/choices.py:26 +msgid "Reserved" +msgstr "" + +#: dcim/choices.py:101 templates/dcim/device.html:262 +msgid "Available" +msgstr "" + +#: dcim/choices.py:104 ipam/choices.py:33 ipam/choices.py:51 ipam/choices.py:71 +#: ipam/choices.py:156 wireless/choices.py:28 +msgid "Deprecated" +msgstr "" + +#: dcim/choices.py:114 templates/dcim/rack.html:128 +msgid "Millimeters" +msgstr "" + +#: dcim/choices.py:115 dcim/choices.py:1442 +msgid "Inches" +msgstr "" + +#: dcim/choices.py:140 dcim/forms/bulk_edit.py:66 dcim/forms/bulk_edit.py:85 +#: dcim/forms/bulk_edit.py:171 dcim/forms/bulk_edit.py:1290 +#: dcim/forms/bulk_import.py:59 dcim/forms/bulk_import.py:73 +#: dcim/forms/bulk_import.py:136 dcim/forms/bulk_import.py:503 +#: dcim/forms/bulk_import.py:770 dcim/forms/bulk_import.py:1021 +#: dcim/forms/filtersets.py:226 dcim/forms/model_forms.py:73 +#: dcim/forms/model_forms.py:94 dcim/forms/model_forms.py:172 +#: dcim/forms/model_forms.py:955 dcim/forms/model_forms.py:1296 +#: dcim/forms/object_import.py:181 dcim/tables/devices.py:671 +#: dcim/tables/devices.py:955 extras/tables/tables.py:181 +#: ipam/tables/fhrp.py:59 ipam/tables/ip.py:374 ipam/tables/services.py:44 +#: templates/dcim/interface.html:105 templates/dcim/interface.html:321 +#: templates/dcim/location.html:44 templates/dcim/region.html:38 +#: templates/dcim/sitegroup.html:38 templates/ipam/service.html:31 +#: templates/tenancy/contactgroup.html:32 templates/tenancy/tenantgroup.html:40 +#: templates/virtualization/vminterface.html:42 +#: templates/wireless/wirelesslangroup.html:38 tenancy/forms/bulk_edit.py:26 +#: tenancy/forms/bulk_edit.py:60 tenancy/forms/bulk_import.py:24 +#: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:24 +#: tenancy/forms/model_forms.py:69 virtualization/forms/bulk_edit.py:206 +#: virtualization/forms/bulk_import.py:151 +#: virtualization/tables/virtualmachines.py:142 wireless/forms/bulk_edit.py:23 +#: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:20 +msgid "Parent" +msgstr "" + +#: dcim/choices.py:141 +msgid "Child" +msgstr "" + +#: dcim/choices.py:155 templates/dcim/device.html:345 +#: templates/dcim/rack.html:181 templates/dcim/rack_elevation_list.html:22 +#: templates/dcim/rackreservation.html:84 +msgid "Front" +msgstr "" + +#: dcim/choices.py:156 templates/dcim/device.html:351 +#: templates/dcim/rack.html:187 templates/dcim/rack_elevation_list.html:23 +#: templates/dcim/rackreservation.html:90 +msgid "Rear" +msgstr "" + +#: dcim/choices.py:175 dcim/choices.py:221 virtualization/choices.py:46 +msgid "Staged" +msgstr "" + +#: dcim/choices.py:177 +msgid "Inventory" +msgstr "" + +#: dcim/choices.py:193 +msgid "Front to rear" +msgstr "" + +#: dcim/choices.py:194 +msgid "Rear to front" +msgstr "" + +#: dcim/choices.py:195 +msgid "Left to right" +msgstr "" + +#: dcim/choices.py:196 +msgid "Right to left" +msgstr "" + +#: dcim/choices.py:197 +msgid "Side to rear" +msgstr "" + +#: dcim/choices.py:198 dcim/choices.py:1215 +msgid "Passive" +msgstr "" + +#: dcim/choices.py:199 +msgid "Mixed" +msgstr "" + +#: dcim/choices.py:443 dcim/choices.py:680 +msgid "NEMA (Non-locking)" +msgstr "" + +#: dcim/choices.py:465 dcim/choices.py:702 +msgid "NEMA (Locking)" +msgstr "" + +#: dcim/choices.py:488 dcim/choices.py:725 +msgid "California Style" +msgstr "" + +#: dcim/choices.py:496 +msgid "International/ITA" +msgstr "" + +#: dcim/choices.py:526 dcim/choices.py:755 +msgid "Proprietary" +msgstr "" + +#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1131 +#: dcim/choices.py:1133 dcim/choices.py:1338 dcim/choices.py:1340 +#: netbox/navigation/menu.py:188 +msgid "Other" +msgstr "" + +#: dcim/choices.py:733 +msgid "ITA/International" +msgstr "" + +#: dcim/choices.py:794 +msgid "Physical" +msgstr "" + +#: dcim/choices.py:795 dcim/choices.py:949 +msgid "Virtual" +msgstr "" + +#: dcim/choices.py:796 dcim/choices.py:1019 dcim/forms/bulk_edit.py:1398 +#: dcim/forms/filtersets.py:1233 dcim/forms/model_forms.py:881 +#: dcim/forms/model_forms.py:1190 netbox/navigation/menu.py:128 +#: netbox/navigation/menu.py:132 templates/dcim/interface.html:217 +msgid "Wireless" +msgstr "" + +#: dcim/choices.py:947 +msgid "Virtual interfaces" +msgstr "" + +#: dcim/choices.py:950 dcim/forms/bulk_edit.py:1295 +#: dcim/forms/bulk_import.py:777 dcim/forms/model_forms.py:869 +#: dcim/tables/devices.py:675 templates/dcim/interface.html:109 +#: templates/virtualization/vminterface.html:46 +#: virtualization/forms/bulk_edit.py:211 +#: virtualization/forms/bulk_import.py:158 +#: virtualization/tables/virtualmachines.py:146 +msgid "Bridge" +msgstr "" + +#: dcim/choices.py:951 +msgid "Link Aggregation Group (LAG)" +msgstr "" + +#: dcim/choices.py:955 +msgid "Ethernet (fixed)" +msgstr "" + +#: dcim/choices.py:969 +msgid "Ethernet (modular)" +msgstr "" + +#: dcim/choices.py:1005 +msgid "Ethernet (backplane)" +msgstr "" + +#: dcim/choices.py:1033 +msgid "Cellular" +msgstr "" + +#: dcim/choices.py:1080 dcim/forms/filtersets.py:302 +#: dcim/forms/filtersets.py:736 dcim/forms/filtersets.py:876 +#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:53 +#: templates/dcim/virtualchassis_edit.html:55 +msgid "Serial" +msgstr "" + +#: dcim/choices.py:1095 +msgid "Coaxial" +msgstr "" + +#: dcim/choices.py:1112 +msgid "Stacking" +msgstr "" + +#: dcim/choices.py:1162 +msgid "Half" +msgstr "" + +#: dcim/choices.py:1163 +msgid "Full" +msgstr "" + +#: dcim/choices.py:1164 wireless/choices.py:480 +msgid "Auto" +msgstr "" + +#: dcim/choices.py:1175 +msgid "Access" +msgstr "" + +#: dcim/choices.py:1176 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: templates/dcim/inc/interface_vlans_table.html:7 +msgid "Tagged" +msgstr "" + +#: dcim/choices.py:1177 +msgid "Tagged (All)" +msgstr "" + +#: dcim/choices.py:1206 +msgid "IEEE Standard" +msgstr "" + +#: dcim/choices.py:1217 +msgid "Passive 24V (2-pair)" +msgstr "" + +#: dcim/choices.py:1218 +msgid "Passive 24V (4-pair)" +msgstr "" + +#: dcim/choices.py:1219 +msgid "Passive 48V (2-pair)" +msgstr "" + +#: dcim/choices.py:1220 +msgid "Passive 48V (4-pair)" +msgstr "" + +#: dcim/choices.py:1282 dcim/choices.py:1378 +msgid "Copper" +msgstr "" + +#: dcim/choices.py:1305 +msgid "Fiber Optic" +msgstr "" + +#: dcim/choices.py:1394 +msgid "Fiber" +msgstr "" + +#: dcim/choices.py:1418 dcim/forms/filtersets.py:1140 +msgid "Connected" +msgstr "" + +#: dcim/choices.py:1437 +msgid "Kilometers" +msgstr "" + +#: dcim/choices.py:1438 templates/dcim/cable_trace.html:62 +msgid "Meters" +msgstr "" + +#: dcim/choices.py:1439 +msgid "Centimeters" +msgstr "" + +#: dcim/choices.py:1440 +msgid "Miles" +msgstr "" + +#: dcim/choices.py:1441 templates/dcim/cable_trace.html:63 +msgid "Feet" +msgstr "" + +#: dcim/choices.py:1457 templates/dcim/device.html:332 +#: templates/dcim/rack.html:157 +msgid "Kilograms" +msgstr "" + +#: dcim/choices.py:1458 +msgid "Grams" +msgstr "" + +#: dcim/choices.py:1459 templates/dcim/rack.html:158 +msgid "Pounds" +msgstr "" + +#: dcim/choices.py:1460 +msgid "Ounces" +msgstr "" + +#: dcim/choices.py:1506 tenancy/choices.py:17 +msgid "Primary" +msgstr "" + +#: dcim/choices.py:1507 +msgid "Redundant" +msgstr "" + +#: dcim/choices.py:1528 +msgid "Single phase" +msgstr "" + +#: dcim/choices.py:1529 +msgid "Three-phase" +msgstr "" + +#: dcim/filtersets.py:80 +msgid "Parent region (ID)" +msgstr "" + +#: dcim/filtersets.py:86 +msgid "Parent region (slug)" +msgstr "" + +#: dcim/filtersets.py:97 +msgid "Parent site group (ID)" +msgstr "" + +#: dcim/filtersets.py:103 +msgid "Parent site group (slug)" +msgstr "" + +#: dcim/filtersets.py:132 ipam/filtersets.py:797 ipam/filtersets.py:930 +msgid "Group (ID)" +msgstr "" + +#: dcim/filtersets.py:138 +msgid "Group (slug)" +msgstr "" + +#: dcim/filtersets.py:144 dcim/filtersets.py:149 +msgid "AS (ID)" +msgstr "" + +#: dcim/filtersets.py:217 dcim/filtersets.py:292 dcim/filtersets.py:390 +#: dcim/filtersets.py:917 dcim/filtersets.py:1213 dcim/filtersets.py:1881 +msgid "Location (ID)" +msgstr "" + +#: dcim/filtersets.py:224 dcim/filtersets.py:299 dcim/filtersets.py:397 +#: dcim/filtersets.py:1219 extras/filtersets.py:447 +msgid "Location (slug)" +msgstr "" + +#: dcim/filtersets.py:313 dcim/filtersets.py:764 dcim/filtersets.py:854 +#: dcim/filtersets.py:1619 ipam/filtersets.py:347 ipam/filtersets.py:459 +#: ipam/filtersets.py:940 virtualization/filtersets.py:209 +msgid "Role (ID)" +msgstr "" + +#: dcim/filtersets.py:319 dcim/filtersets.py:770 dcim/filtersets.py:860 +#: dcim/filtersets.py:1625 extras/filtersets.py:463 ipam/filtersets.py:353 +#: ipam/filtersets.py:465 ipam/filtersets.py:946 +#: virtualization/filtersets.py:215 +msgid "Role (slug)" +msgstr "" + +#: dcim/filtersets.py:347 dcim/filtersets.py:922 dcim/filtersets.py:1224 +#: dcim/filtersets.py:1942 +msgid "Rack (ID)" +msgstr "" + +#: dcim/filtersets.py:401 extras/filtersets.py:234 extras/filtersets.py:278 +#: extras/filtersets.py:318 extras/filtersets.py:613 +msgid "User (ID)" +msgstr "" + +#: dcim/filtersets.py:407 extras/filtersets.py:240 extras/filtersets.py:284 +#: extras/filtersets.py:324 users/filtersets.py:80 users/filtersets.py:140 +msgid "User (name)" +msgstr "" + +#: dcim/filtersets.py:435 dcim/filtersets.py:561 dcim/filtersets.py:754 +#: dcim/filtersets.py:805 dcim/filtersets.py:833 dcim/filtersets.py:1116 +#: dcim/filtersets.py:1609 +msgid "Manufacturer (ID)" +msgstr "" + +#: dcim/filtersets.py:441 dcim/filtersets.py:567 dcim/filtersets.py:760 +#: dcim/filtersets.py:811 dcim/filtersets.py:839 dcim/filtersets.py:1122 +#: dcim/filtersets.py:1615 +msgid "Manufacturer (slug)" +msgstr "" + +#: dcim/filtersets.py:445 +msgid "Default platform (ID)" +msgstr "" + +#: dcim/filtersets.py:451 +msgid "Default platform (slug)" +msgstr "" + +#: dcim/filtersets.py:454 dcim/forms/filtersets.py:452 +msgid "Has a front image" +msgstr "" + +#: dcim/filtersets.py:458 dcim/forms/filtersets.py:459 +msgid "Has a rear image" +msgstr "" + +#: dcim/filtersets.py:463 dcim/filtersets.py:571 dcim/filtersets.py:975 +#: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:563 +#: dcim/forms/filtersets.py:775 +msgid "Has console ports" +msgstr "" + +#: dcim/filtersets.py:467 dcim/filtersets.py:575 dcim/filtersets.py:979 +#: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:570 +#: dcim/forms/filtersets.py:782 +msgid "Has console server ports" +msgstr "" + +#: dcim/filtersets.py:471 dcim/filtersets.py:579 dcim/filtersets.py:983 +#: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:577 +#: dcim/forms/filtersets.py:789 +msgid "Has power ports" +msgstr "" + +#: dcim/filtersets.py:475 dcim/filtersets.py:583 dcim/filtersets.py:987 +#: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:584 +#: dcim/forms/filtersets.py:796 +msgid "Has power outlets" +msgstr "" + +#: dcim/filtersets.py:479 dcim/filtersets.py:587 dcim/filtersets.py:991 +#: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:591 +#: dcim/forms/filtersets.py:803 +msgid "Has interfaces" +msgstr "" + +#: dcim/filtersets.py:483 dcim/filtersets.py:591 dcim/filtersets.py:995 +#: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:598 +#: dcim/forms/filtersets.py:810 +msgid "Has pass-through ports" +msgstr "" + +#: dcim/filtersets.py:487 dcim/filtersets.py:999 dcim/forms/filtersets.py:515 +msgid "Has module bays" +msgstr "" + +#: dcim/filtersets.py:491 dcim/filtersets.py:1003 dcim/forms/filtersets.py:508 +msgid "Has device bays" +msgstr "" + +#: dcim/filtersets.py:495 dcim/forms/filtersets.py:522 +msgid "Has inventory items" +msgstr "" + +#: dcim/filtersets.py:638 dcim/filtersets.py:849 dcim/filtersets.py:1245 +msgid "Device type (ID)" +msgstr "" + +#: dcim/filtersets.py:651 dcim/filtersets.py:1127 +msgid "Module type (ID)" +msgstr "" + +#: dcim/filtersets.py:750 dcim/filtersets.py:1605 +msgid "Parent inventory item (ID)" +msgstr "" + +#: dcim/filtersets.py:793 dcim/filtersets.py:815 dcim/filtersets.py:971 +#: virtualization/filtersets.py:237 +msgid "Config template (ID)" +msgstr "" + +#: dcim/filtersets.py:845 +msgid "Device type (slug)" +msgstr "" + +#: dcim/filtersets.py:865 +msgid "Parent Device (ID)" +msgstr "" + +#: dcim/filtersets.py:869 virtualization/filtersets.py:219 +msgid "Platform (ID)" +msgstr "" + +#: dcim/filtersets.py:875 extras/filtersets.py:474 +#: virtualization/filtersets.py:225 +msgid "Platform (slug)" +msgstr "" + +#: dcim/filtersets.py:911 dcim/filtersets.py:1208 dcim/filtersets.py:1703 +#: dcim/filtersets.py:1875 dcim/filtersets.py:1933 +msgid "Site name (slug)" +msgstr "" + +#: dcim/filtersets.py:926 +msgid "VM cluster (ID)" +msgstr "" + +#: dcim/filtersets.py:932 +msgid "Device model (slug)" +msgstr "" + +#: dcim/filtersets.py:943 dcim/forms/bulk_edit.py:421 +msgid "Is full depth" +msgstr "" + +#: dcim/filtersets.py:947 dcim/forms/common.py:18 dcim/forms/filtersets.py:745 +#: dcim/forms/filtersets.py:1285 dcim/models/device_components.py:519 +#: virtualization/filtersets.py:229 virtualization/filtersets.py:295 +#: virtualization/forms/filtersets.py:168 +#: virtualization/forms/filtersets.py:215 +msgid "MAC address" +msgstr "" + +#: dcim/filtersets.py:954 dcim/forms/filtersets.py:754 +#: dcim/forms/filtersets.py:841 virtualization/filtersets.py:233 +#: virtualization/forms/filtersets.py:172 +msgid "Has a primary IP" +msgstr "" + +#: dcim/filtersets.py:958 +msgid "Has an out-of-band IP" +msgstr "" + +#: dcim/filtersets.py:963 +msgid "Virtual chassis (ID)" +msgstr "" + +#: dcim/filtersets.py:967 +msgid "Is a virtual chassis member" +msgstr "" + +#: dcim/filtersets.py:1008 +msgid "OOB IP (ID)" +msgstr "" + +#: dcim/filtersets.py:1133 +msgid "Module type (model)" +msgstr "" + +#: dcim/filtersets.py:1139 +msgid "Module Bay (ID)" +msgstr "" + +#: dcim/filtersets.py:1143 dcim/filtersets.py:1234 ipam/filtersets.py:577 +#: ipam/filtersets.py:807 ipam/filtersets.py:1015 +#: virtualization/filtersets.py:160 vpn/filtersets.py:351 +msgid "Device (ID)" +msgstr "" + +#: dcim/filtersets.py:1230 +msgid "Rack (name)" +msgstr "" + +#: dcim/filtersets.py:1240 ipam/filtersets.py:572 ipam/filtersets.py:802 +#: ipam/filtersets.py:1021 vpn/filtersets.py:346 +msgid "Device (name)" +msgstr "" + +#: dcim/filtersets.py:1251 +msgid "Device type (model)" +msgstr "" + +#: dcim/filtersets.py:1256 dcim/filtersets.py:1279 +msgid "Device role (ID)" +msgstr "" + +#: dcim/filtersets.py:1262 dcim/filtersets.py:1285 +msgid "Device role (slug)" +msgstr "" + +#: dcim/filtersets.py:1267 +msgid "Virtual Chassis (ID)" +msgstr "" + +#: dcim/filtersets.py:1273 dcim/forms/filtersets.py:106 +#: dcim/tables/devices.py:235 netbox/navigation/menu.py:67 +#: templates/dcim/device.html:123 templates/dcim/device_edit.html:93 +#: templates/dcim/virtualchassis.html:20 +#: templates/dcim/virtualchassis_add.html:8 +#: templates/dcim/virtualchassis_edit.html:25 +msgid "Virtual Chassis" +msgstr "" + +#: dcim/filtersets.py:1305 +msgid "Module (ID)" +msgstr "" + +#: dcim/filtersets.py:1409 ipam/forms/bulk_import.py:188 +#: vpn/forms/bulk_import.py:303 +msgid "Assigned VLAN" +msgstr "" + +#: dcim/filtersets.py:1413 +msgid "Assigned VID" +msgstr "" + +#: dcim/filtersets.py:1418 dcim/forms/bulk_edit.py:1374 +#: dcim/forms/bulk_import.py:828 dcim/forms/filtersets.py:1328 +#: dcim/forms/model_forms.py:1175 dcim/models/device_components.py:712 +#: dcim/tables/devices.py:637 ipam/filtersets.py:282 ipam/filtersets.py:293 +#: ipam/filtersets.py:449 ipam/filtersets.py:550 ipam/filtersets.py:561 +#: ipam/forms/bulk_edit.py:226 ipam/forms/bulk_edit.py:281 +#: ipam/forms/bulk_edit.py:323 ipam/forms/bulk_import.py:156 +#: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 +#: ipam/forms/filtersets.py:66 ipam/forms/filtersets.py:167 +#: ipam/forms/filtersets.py:295 ipam/forms/model_forms.py:59 +#: ipam/forms/model_forms.py:203 ipam/forms/model_forms.py:246 +#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:412 +#: ipam/forms/model_forms.py:426 ipam/forms/model_forms.py:440 +#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 +#: ipam/tables/ip.py:356 ipam/tables/ip.py:445 +#: templates/dcim/interface.html:138 templates/ipam/ipaddress.html:21 +#: templates/ipam/iprange.html:43 templates/ipam/prefix.html:20 +#: templates/ipam/vrf.html:7 templates/ipam/vrf.html:14 +#: templates/virtualization/vminterface.html:50 +#: virtualization/forms/bulk_edit.py:260 +#: virtualization/forms/bulk_import.py:171 +#: virtualization/forms/filtersets.py:220 +#: virtualization/forms/model_forms.py:347 +#: virtualization/models/virtualmachines.py:348 +#: virtualization/tables/virtualmachines.py:123 +msgid "VRF" +msgstr "" + +#: dcim/filtersets.py:1424 ipam/filtersets.py:288 ipam/filtersets.py:299 +#: ipam/filtersets.py:455 ipam/filtersets.py:556 ipam/filtersets.py:567 +msgid "VRF (RD)" +msgstr "" + +#: dcim/filtersets.py:1429 ipam/filtersets.py:963 vpn/filtersets.py:314 +msgid "L2VPN (ID)" +msgstr "" + +#: dcim/filtersets.py:1435 dcim/forms/filtersets.py:1333 +#: dcim/tables/devices.py:585 ipam/filtersets.py:969 +#: ipam/forms/filtersets.py:499 ipam/tables/vlans.py:133 +#: templates/dcim/interface.html:94 templates/ipam/vlan.html:69 +#: templates/vpn/l2vpntermination.html:15 +#: virtualization/forms/filtersets.py:225 vpn/forms/bulk_import.py:275 +#: vpn/forms/filtersets.py:242 vpn/forms/model_forms.py:402 +#: vpn/forms/model_forms.py:420 vpn/models/l2vpn.py:63 vpn/tables/l2vpn.py:55 +msgid "L2VPN" +msgstr "" + +#: dcim/filtersets.py:1467 +msgid "Virtual Chassis Interfaces for Device" +msgstr "" + +#: dcim/filtersets.py:1472 +msgid "Virtual Chassis Interfaces for Device (ID)" +msgstr "" + +#: dcim/filtersets.py:1476 +msgid "Kind of interface" +msgstr "" + +#: dcim/filtersets.py:1481 virtualization/filtersets.py:287 +msgid "Parent interface (ID)" +msgstr "" + +#: dcim/filtersets.py:1486 virtualization/filtersets.py:292 +msgid "Bridged interface (ID)" +msgstr "" + +#: dcim/filtersets.py:1491 +msgid "LAG interface (ID)" +msgstr "" + +#: dcim/filtersets.py:1660 +msgid "Master (ID)" +msgstr "" + +#: dcim/filtersets.py:1666 +msgid "Master (name)" +msgstr "" + +#: dcim/filtersets.py:1708 tenancy/filtersets.py:220 +msgid "Tenant (ID)" +msgstr "" + +#: dcim/filtersets.py:1714 extras/filtersets.py:523 tenancy/filtersets.py:226 +msgid "Tenant (slug)" +msgstr "" + +#: dcim/filtersets.py:1749 dcim/forms/filtersets.py:990 +msgid "Unterminated" +msgstr "" + +#: dcim/filtersets.py:1937 +msgid "Power panel (ID)" +msgstr "" + +#: dcim/forms/bulk_create.py:40 extras/forms/filtersets.py:410 +#: extras/forms/model_forms.py:444 extras/forms/model_forms.py:495 +#: netbox/forms/base.py:71 netbox/forms/mixins.py:79 +#: netbox/tables/columns.py:448 +#: templates/circuits/inc/circuit_termination.html:119 +#: templates/generic/bulk_edit.html:81 templates/inc/panels/tags.html:5 +#: utilities/forms/fields/fields.py:81 +msgid "Tags" +msgstr "" + +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1390 +#: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:468 +#: dcim/forms/object_create.py:196 dcim/forms/object_create.py:352 +#: dcim/tables/devices.py:198 dcim/tables/devices.py:720 +#: dcim/tables/devicetypes.py:242 templates/dcim/device.html:45 +#: templates/dcim/device.html:129 templates/dcim/modulebay.html:35 +#: templates/dcim/virtualchassis.html:59 +#: templates/dcim/virtualchassis_edit.html:56 +msgid "Position" +msgstr "" + +#: dcim/forms/bulk_create.py:114 +msgid "" +"Alphanumeric ranges are supported. (Must match the number of names being " +"created.)" +msgstr "" + +#: dcim/forms/bulk_edit.py:115 dcim/forms/bulk_import.py:99 +#: dcim/forms/model_forms.py:120 dcim/tables/sites.py:89 ipam/filtersets.py:936 +#: ipam/forms/bulk_edit.py:528 ipam/forms/bulk_import.py:444 +#: ipam/forms/model_forms.py:509 ipam/tables/fhrp.py:67 +#: ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 +#: templates/dcim/interface.html:294 templates/dcim/site.html:37 +#: templates/ipam/inc/panels/fhrp_groups.html:10 templates/ipam/vlan.html:30 +#: templates/tenancy/contact.html:22 templates/tenancy/tenant.html:21 +#: templates/users/group.html:6 templates/users/group.html:14 +#: templates/virtualization/cluster.html:32 templates/vpn/tunnel.html:30 +#: templates/wireless/wirelesslan.html:19 tenancy/forms/bulk_edit.py:42 +#: tenancy/forms/bulk_edit.py:93 tenancy/forms/bulk_import.py:40 +#: tenancy/forms/bulk_import.py:81 tenancy/forms/filtersets.py:47 +#: tenancy/forms/filtersets.py:77 tenancy/forms/filtersets.py:96 +#: tenancy/forms/model_forms.py:46 tenancy/forms/model_forms.py:102 +#: tenancy/forms/model_forms.py:124 tenancy/tables/contacts.py:60 +#: tenancy/tables/contacts.py:107 tenancy/tables/tenants.py:42 +#: users/filtersets.py:42 users/filtersets.py:145 users/forms/filtersets.py:32 +#: users/forms/filtersets.py:38 users/forms/filtersets.py:80 +#: virtualization/forms/bulk_edit.py:64 virtualization/forms/bulk_import.py:47 +#: virtualization/forms/filtersets.py:84 virtualization/forms/model_forms.py:69 +#: virtualization/tables/clusters.py:70 vpn/forms/bulk_edit.py:111 +#: vpn/forms/bulk_import.py:157 vpn/forms/filtersets.py:113 +#: vpn/tables/crypto.py:31 wireless/forms/bulk_edit.py:47 +#: wireless/forms/bulk_import.py:36 wireless/forms/filtersets.py:45 +#: wireless/forms/model_forms.py:41 wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "" + +#: dcim/forms/bulk_edit.py:130 +msgid "Contact name" +msgstr "" + +#: dcim/forms/bulk_edit.py:135 +msgid "Contact phone" +msgstr "" + +#: dcim/forms/bulk_edit.py:141 +msgid "Contact E-mail" +msgstr "" + +#: dcim/forms/bulk_edit.py:144 dcim/forms/bulk_import.py:122 +#: dcim/forms/model_forms.py:131 +msgid "Time zone" +msgstr "" + +#: dcim/forms/bulk_edit.py:266 dcim/forms/bulk_edit.py:1152 +#: dcim/forms/bulk_edit.py:1539 dcim/forms/bulk_import.py:199 +#: dcim/forms/bulk_import.py:1009 dcim/forms/filtersets.py:299 +#: dcim/forms/filtersets.py:704 dcim/forms/filtersets.py:1417 +#: dcim/forms/model_forms.py:224 dcim/forms/model_forms.py:963 +#: dcim/forms/model_forms.py:1304 dcim/forms/object_import.py:186 +#: dcim/tables/devices.py:202 dcim/tables/devices.py:828 +#: dcim/tables/devices.py:939 dcim/tables/devicetypes.py:300 +#: dcim/tables/racks.py:69 extras/filtersets.py:457 ipam/forms/bulk_edit.py:245 +#: ipam/forms/bulk_edit.py:294 ipam/forms/bulk_edit.py:342 +#: ipam/forms/bulk_edit.py:546 ipam/forms/bulk_import.py:196 +#: ipam/forms/bulk_import.py:261 ipam/forms/bulk_import.py:297 +#: ipam/forms/bulk_import.py:463 ipam/forms/filtersets.py:232 +#: ipam/forms/filtersets.py:278 ipam/forms/filtersets.py:346 +#: ipam/forms/filtersets.py:490 ipam/forms/model_forms.py:187 +#: ipam/forms/model_forms.py:222 ipam/forms/model_forms.py:249 +#: ipam/forms/model_forms.py:647 ipam/tables/ip.py:257 ipam/tables/ip.py:313 +#: ipam/tables/ip.py:363 ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 +#: templates/dcim/device.html:187 +#: templates/dcim/inc/panels/inventory_items.html:12 +#: templates/dcim/interface.html:231 templates/dcim/inventoryitem.html:37 +#: templates/dcim/rack.html:50 templates/ipam/ipaddress.html:44 +#: templates/ipam/iprange.html:53 templates/ipam/prefix.html:78 +#: templates/ipam/role.html:20 templates/ipam/vlan.html:55 +#: templates/virtualization/virtualmachine.html:26 +#: templates/vpn/tunneltermination.html:18 +#: templates/wireless/inc/wirelesslink_interface.html:20 +#: tenancy/forms/bulk_edit.py:141 tenancy/forms/filtersets.py:106 +#: tenancy/forms/model_forms.py:139 tenancy/tables/contacts.py:102 +#: virtualization/forms/bulk_edit.py:144 +#: virtualization/forms/bulk_import.py:106 +#: virtualization/forms/filtersets.py:153 +#: virtualization/forms/model_forms.py:198 +#: virtualization/tables/virtualmachines.py:65 vpn/forms/bulk_edit.py:86 +#: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:84 +#: vpn/forms/model_forms.py:77 vpn/forms/model_forms.py:112 +#: vpn/tables/tunnels.py:78 +msgid "Role" +msgstr "" + +#: dcim/forms/bulk_edit.py:273 dcim/forms/bulk_edit.py:605 +#: dcim/forms/bulk_edit.py:654 templates/dcim/device.html:106 +#: templates/dcim/module.html:75 templates/dcim/modulebay.html:69 +#: templates/dcim/rack.html:58 +msgid "Serial Number" +msgstr "" + +#: dcim/forms/bulk_edit.py:276 dcim/forms/filtersets.py:306 +#: dcim/forms/filtersets.py:740 dcim/forms/filtersets.py:880 +#: dcim/forms/filtersets.py:1430 +msgid "Asset tag" +msgstr "" + +#: dcim/forms/bulk_edit.py:286 dcim/forms/bulk_import.py:212 +#: dcim/forms/filtersets.py:291 templates/dcim/rack.html:91 +#: templates/dcim/rack_edit.html:48 +msgid "Width" +msgstr "" + +#: dcim/forms/bulk_edit.py:292 +msgid "Height (U)" +msgstr "" + +#: dcim/forms/bulk_edit.py:297 +msgid "Descending units" +msgstr "" + +#: dcim/forms/bulk_edit.py:300 +msgid "Outer width" +msgstr "" + +#: dcim/forms/bulk_edit.py:305 +msgid "Outer depth" +msgstr "" + +#: dcim/forms/bulk_edit.py:310 dcim/forms/bulk_import.py:217 +msgid "Outer unit" +msgstr "" + +#: dcim/forms/bulk_edit.py:315 +msgid "Mounting depth" +msgstr "" + +#: dcim/forms/bulk_edit.py:320 dcim/forms/bulk_edit.py:349 +#: dcim/forms/bulk_edit.py:434 dcim/forms/bulk_edit.py:457 +#: dcim/forms/bulk_edit.py:473 dcim/forms/bulk_edit.py:493 +#: dcim/forms/bulk_import.py:324 dcim/forms/bulk_import.py:350 +#: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:311 +#: dcim/forms/filtersets.py:335 dcim/forms/filtersets.py:423 +#: dcim/forms/filtersets.py:529 dcim/forms/filtersets.py:548 +#: dcim/forms/filtersets.py:605 dcim/forms/model_forms.py:337 +#: dcim/tables/devicetypes.py:103 dcim/tables/modules.py:35 +#: dcim/tables/racks.py:103 extras/forms/bulk_edit.py:45 +#: extras/forms/bulk_edit.py:107 extras/forms/bulk_edit.py:157 +#: extras/forms/bulk_edit.py:277 extras/forms/filtersets.py:60 +#: extras/forms/filtersets.py:133 extras/forms/filtersets.py:220 +#: ipam/forms/bulk_edit.py:187 templates/dcim/device.html:329 +#: templates/dcim/devicetype.html:52 templates/dcim/moduletype.html:31 +#: templates/dcim/rack_edit.html:60 templates/dcim/rack_edit.html:63 +#: templates/extras/configcontext.html:18 templates/extras/customlink.html:26 +#: templates/extras/savedfilter.html:34 templates/ipam/role.html:33 +msgid "Weight" +msgstr "" + +#: dcim/forms/bulk_edit.py:325 dcim/forms/filtersets.py:316 +msgid "Max weight" +msgstr "" + +#: dcim/forms/bulk_edit.py:330 dcim/forms/bulk_edit.py:439 +#: dcim/forms/bulk_edit.py:478 dcim/forms/bulk_import.py:223 +#: dcim/forms/bulk_import.py:329 dcim/forms/bulk_import.py:355 +#: dcim/forms/filtersets.py:321 dcim/forms/filtersets.py:533 +#: dcim/forms/filtersets.py:609 +msgid "Weight unit" +msgstr "" + +#: dcim/forms/bulk_edit.py:344 dcim/forms/bulk_edit.py:800 +#: dcim/forms/bulk_import.py:262 dcim/forms/bulk_import.py:265 +#: dcim/forms/bulk_import.py:490 dcim/forms/bulk_import.py:1286 +#: dcim/forms/bulk_import.py:1290 dcim/forms/filtersets.py:101 +#: dcim/forms/filtersets.py:339 dcim/forms/filtersets.py:353 +#: dcim/forms/filtersets.py:391 dcim/forms/filtersets.py:699 +#: dcim/forms/filtersets.py:948 dcim/forms/filtersets.py:1080 +#: dcim/forms/model_forms.py:241 dcim/forms/model_forms.py:413 +#: dcim/forms/model_forms.py:662 dcim/forms/object_create.py:399 +#: dcim/tables/devices.py:194 dcim/tables/power.py:70 dcim/tables/racks.py:148 +#: ipam/forms/bulk_edit.py:464 ipam/forms/filtersets.py:427 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:30 +#: templates/dcim/inc/cable_termination.html:16 +#: templates/dcim/powerfeed.html:31 templates/dcim/rack.html:14 +#: templates/dcim/rack/base.html:4 templates/dcim/rack_edit.html:8 +#: templates/dcim/rackreservation.html:20 +#: templates/dcim/rackreservation.html:39 +#: virtualization/forms/model_forms.py:116 +msgid "Rack" +msgstr "" + +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:623 +#: dcim/forms/filtersets.py:247 dcim/forms/filtersets.py:332 +#: dcim/forms/filtersets.py:417 dcim/forms/filtersets.py:543 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:853 +#: dcim/forms/model_forms.py:589 dcim/forms/model_forms.py:1374 +#: templates/dcim/device_edit.html:20 templates/dcim/inventoryitem_edit.html:23 +msgid "Hardware" +msgstr "" + +#: dcim/forms/bulk_edit.py:400 dcim/forms/bulk_edit.py:464 +#: dcim/forms/bulk_edit.py:528 dcim/forms/bulk_edit.py:552 +#: dcim/forms/bulk_edit.py:633 dcim/forms/bulk_edit.py:1157 +#: dcim/forms/bulk_edit.py:1544 dcim/forms/bulk_import.py:311 +#: dcim/forms/bulk_import.py:345 dcim/forms/bulk_import.py:387 +#: dcim/forms/bulk_import.py:423 dcim/forms/bulk_import.py:1015 +#: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 +#: dcim/forms/filtersets.py:631 dcim/forms/filtersets.py:709 +#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/model_forms.py:274 dcim/forms/model_forms.py:288 +#: dcim/forms/model_forms.py:330 dcim/forms/model_forms.py:370 +#: dcim/forms/model_forms.py:968 dcim/forms/model_forms.py:1309 +#: dcim/forms/object_import.py:192 dcim/tables/devices.py:129 +#: dcim/tables/devices.py:205 dcim/tables/devices.py:942 +#: dcim/tables/devicetypes.py:81 dcim/tables/devicetypes.py:304 +#: dcim/tables/modules.py:20 dcim/tables/modules.py:60 +#: templates/dcim/devicetype.html:17 templates/dcim/inventoryitem.html:45 +#: templates/dcim/manufacturer.html:34 templates/dcim/modulebay.html:61 +#: templates/dcim/moduletype.html:15 templates/dcim/platform.html:40 +msgid "Manufacturer" +msgstr "" + +#: dcim/forms/bulk_edit.py:405 dcim/forms/bulk_import.py:317 +#: dcim/forms/filtersets.py:434 dcim/forms/model_forms.py:292 +msgid "Default platform" +msgstr "" + +#: dcim/forms/bulk_edit.py:410 dcim/forms/bulk_edit.py:469 +#: dcim/forms/filtersets.py:437 dcim/forms/filtersets.py:558 +msgid "Part number" +msgstr "" + +#: dcim/forms/bulk_edit.py:414 +msgid "U height" +msgstr "" + +#: dcim/forms/bulk_edit.py:426 +msgid "Exclude from utilization" +msgstr "" + +#: dcim/forms/bulk_edit.py:429 dcim/forms/bulk_edit.py:598 +#: dcim/forms/bulk_import.py:517 dcim/forms/filtersets.py:446 +#: dcim/forms/filtersets.py:731 templates/dcim/device.html:100 +#: templates/dcim/devicetype.html:68 +msgid "Airflow" +msgstr "" + +#: dcim/forms/bulk_edit.py:453 dcim/forms/model_forms.py:303 +#: dcim/tables/devicetypes.py:78 templates/dcim/device.html:90 +#: templates/dcim/devicebay.html:59 templates/dcim/module.html:59 +msgid "Device Type" +msgstr "" + +#: dcim/forms/bulk_edit.py:492 dcim/forms/model_forms.py:336 +#: dcim/tables/modules.py:17 dcim/tables/modules.py:65 +#: templates/dcim/module.html:63 templates/dcim/modulebay.html:65 +#: templates/dcim/moduletype.html:11 +msgid "Module Type" +msgstr "" + +#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:472 +msgid "VM role" +msgstr "" + +#: dcim/forms/bulk_edit.py:509 dcim/forms/bulk_edit.py:533 +#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_import.py:368 +#: dcim/forms/bulk_import.py:372 dcim/forms/bulk_import.py:394 +#: dcim/forms/bulk_import.py:398 dcim/forms/bulk_import.py:523 +#: dcim/forms/bulk_import.py:527 dcim/forms/filtersets.py:620 +#: dcim/forms/filtersets.py:636 dcim/forms/filtersets.py:750 +#: dcim/forms/model_forms.py:349 dcim/forms/model_forms.py:375 +#: dcim/forms/model_forms.py:477 virtualization/forms/bulk_import.py:132 +#: virtualization/forms/bulk_import.py:133 +#: virtualization/forms/filtersets.py:180 +#: virtualization/forms/model_forms.py:218 +msgid "Config template" +msgstr "" + +#: dcim/forms/bulk_edit.py:557 dcim/forms/bulk_edit.py:951 +#: dcim/forms/bulk_import.py:429 dcim/forms/filtersets.py:111 +#: dcim/forms/model_forms.py:435 dcim/forms/model_forms.py:776 +#: dcim/forms/model_forms.py:790 extras/filtersets.py:452 +msgid "Device type" +msgstr "" + +#: dcim/forms/bulk_edit.py:565 dcim/forms/bulk_import.py:410 +#: dcim/forms/filtersets.py:116 dcim/forms/model_forms.py:440 +msgid "Device role" +msgstr "" + +#: dcim/forms/bulk_edit.py:588 dcim/forms/bulk_import.py:435 +#: dcim/forms/filtersets.py:723 dcim/forms/model_forms.py:385 +#: dcim/forms/model_forms.py:444 extras/filtersets.py:468 +#: templates/dcim/device.html:191 templates/dcim/platform.html:27 +#: templates/virtualization/virtualmachine.html:30 +#: virtualization/forms/bulk_edit.py:159 +#: virtualization/forms/bulk_import.py:122 +#: virtualization/forms/filtersets.py:164 +#: virtualization/forms/model_forms.py:206 +msgid "Platform" +msgstr "" + +#: dcim/forms/bulk_edit.py:621 dcim/forms/bulk_edit.py:1171 +#: dcim/forms/bulk_edit.py:1534 dcim/forms/bulk_edit.py:1580 +#: dcim/forms/bulk_import.py:578 dcim/forms/bulk_import.py:640 +#: dcim/forms/bulk_import.py:666 dcim/forms/bulk_import.py:692 +#: dcim/forms/bulk_import.py:712 dcim/forms/bulk_import.py:765 +#: dcim/forms/bulk_import.py:879 dcim/forms/bulk_import.py:927 +#: dcim/forms/bulk_import.py:944 dcim/forms/bulk_import.py:956 +#: dcim/forms/bulk_import.py:1004 dcim/forms/bulk_import.py:1350 +#: dcim/forms/connections.py:23 dcim/forms/filtersets.py:128 +#: dcim/forms/filtersets.py:831 dcim/forms/filtersets.py:964 +#: dcim/forms/filtersets.py:1154 dcim/forms/filtersets.py:1176 +#: dcim/forms/filtersets.py:1198 dcim/forms/filtersets.py:1215 +#: dcim/forms/filtersets.py:1235 dcim/forms/filtersets.py:1343 +#: dcim/forms/filtersets.py:1365 dcim/forms/filtersets.py:1386 +#: dcim/forms/filtersets.py:1401 dcim/forms/filtersets.py:1412 +#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 +#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:555 +#: dcim/forms/model_forms.py:753 dcim/forms/model_forms.py:1004 +#: dcim/forms/model_forms.py:1453 dcim/forms/object_create.py:256 +#: dcim/tables/connections.py:22 dcim/tables/connections.py:41 +#: dcim/tables/connections.py:60 dcim/tables/devices.py:314 +#: dcim/tables/devices.py:374 dcim/tables/devices.py:418 +#: dcim/tables/devices.py:463 dcim/tables/devices.py:517 +#: dcim/tables/devices.py:609 dcim/tables/devices.py:710 +#: dcim/tables/devices.py:770 dcim/tables/devices.py:820 +#: dcim/tables/devices.py:880 dcim/tables/devices.py:932 +#: dcim/tables/devices.py:1058 dcim/tables/modules.py:52 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_import.py:303 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:532 +#: ipam/forms/model_forms.py:685 ipam/tables/vlans.py:176 +#: templates/dcim/consoleport.html:23 templates/dcim/consoleserverport.html:23 +#: templates/dcim/device.html:14 templates/dcim/device.html:128 +#: templates/dcim/device_edit.html:10 templates/dcim/devicebay.html:23 +#: templates/dcim/devicebay.html:55 templates/dcim/frontport.html:23 +#: templates/dcim/interface.html:31 templates/dcim/interface.html:167 +#: templates/dcim/inventoryitem.html:21 templates/dcim/module.html:55 +#: templates/dcim/modulebay.html:21 templates/dcim/poweroutlet.html:23 +#: templates/dcim/powerport.html:23 templates/dcim/rearport.html:23 +#: templates/dcim/virtualchassis.html:58 +#: templates/dcim/virtualchassis_edit.html:52 +#: templates/dcim/virtualdevicecontext.html:25 +#: templates/ipam/ipaddress_edit.html:42 templates/ipam/service_create.html:17 +#: templates/ipam/service_edit.html:16 +#: templates/virtualization/virtualmachine.html:115 +#: templates/vpn/l2vpntermination_edit.html:22 +#: templates/vpn/tunneltermination.html:24 +#: templates/wireless/inc/wirelesslink_interface.html:6 +#: virtualization/filtersets.py:166 virtualization/forms/bulk_edit.py:136 +#: virtualization/forms/bulk_import.py:99 +#: virtualization/forms/filtersets.py:124 +#: virtualization/forms/model_forms.py:188 +#: virtualization/tables/virtualmachines.py:61 vpn/choices.py:44 +#: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:278 +#: vpn/forms/filtersets.py:271 vpn/forms/model_forms.py:89 +#: vpn/forms/model_forms.py:124 vpn/forms/model_forms.py:237 +#: wireless/forms/model_forms.py:100 wireless/forms/model_forms.py:140 +#: wireless/tables/wirelesslan.py:75 +msgid "Device" +msgstr "" + +#: dcim/forms/bulk_edit.py:624 netbox/navigation/menu.py:441 +#: templates/extras/dashboard/widget_config.html:7 +msgid "Configuration" +msgstr "" + +#: dcim/forms/bulk_edit.py:638 dcim/forms/bulk_import.py:590 +#: dcim/forms/model_forms.py:569 dcim/forms/model_forms.py:795 +msgid "Module type" +msgstr "" + +#: dcim/forms/bulk_edit.py:689 dcim/forms/bulk_edit.py:874 +#: dcim/forms/bulk_edit.py:893 dcim/forms/bulk_edit.py:916 +#: dcim/forms/bulk_edit.py:958 dcim/forms/bulk_edit.py:1002 +#: dcim/forms/bulk_edit.py:1053 dcim/forms/bulk_edit.py:1080 +#: dcim/forms/bulk_edit.py:1107 dcim/forms/bulk_edit.py:1125 +#: dcim/forms/bulk_edit.py:1143 dcim/forms/filtersets.py:64 +#: dcim/forms/object_create.py:45 templates/dcim/cable.html:33 +#: templates/dcim/consoleport.html:35 templates/dcim/consoleserverport.html:35 +#: templates/dcim/devicebay.html:31 templates/dcim/frontport.html:35 +#: templates/dcim/inc/panels/inventory_items.html:11 +#: templates/dcim/interface.html:43 templates/dcim/inventoryitem.html:33 +#: templates/dcim/modulebay.html:31 templates/dcim/poweroutlet.html:35 +#: templates/dcim/powerport.html:35 templates/dcim/rearport.html:35 +#: templates/extras/customfield.html:27 templates/generic/bulk_import.html:155 +msgid "Label" +msgstr "" + +#: dcim/forms/bulk_edit.py:698 dcim/forms/filtersets.py:981 +#: templates/dcim/cable.html:51 +msgid "Length" +msgstr "" + +#: dcim/forms/bulk_edit.py:703 dcim/forms/bulk_import.py:1158 +#: dcim/forms/bulk_import.py:1161 dcim/forms/filtersets.py:985 +msgid "Length unit" +msgstr "" + +#: dcim/forms/bulk_edit.py:727 templates/dcim/virtualchassis.html:24 +msgid "Domain" +msgstr "" + +#: dcim/forms/bulk_edit.py:795 dcim/forms/bulk_import.py:1273 +#: dcim/forms/filtersets.py:1071 dcim/forms/model_forms.py:657 +msgid "Power panel" +msgstr "" + +#: dcim/forms/bulk_edit.py:817 dcim/forms/bulk_import.py:1309 +#: dcim/forms/filtersets.py:1093 templates/dcim/powerfeed.html:90 +msgid "Supply" +msgstr "" + +#: dcim/forms/bulk_edit.py:823 dcim/forms/bulk_import.py:1314 +#: dcim/forms/filtersets.py:1098 templates/dcim/powerfeed.html:102 +msgid "Phase" +msgstr "" + +#: dcim/forms/bulk_edit.py:829 dcim/forms/filtersets.py:1103 +#: templates/dcim/powerfeed.html:94 +msgid "Voltage" +msgstr "" + +#: dcim/forms/bulk_edit.py:833 dcim/forms/filtersets.py:1107 +#: templates/dcim/powerfeed.html:98 +msgid "Amperage" +msgstr "" + +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1111 +msgid "Max utilization" +msgstr "" + +#: dcim/forms/bulk_edit.py:841 dcim/forms/bulk_edit.py:1200 +#: dcim/forms/bulk_edit.py:1217 dcim/forms/bulk_edit.py:1234 +#: dcim/forms/bulk_edit.py:1252 dcim/forms/bulk_edit.py:1340 +#: dcim/forms/bulk_edit.py:1478 dcim/forms/bulk_edit.py:1495 +msgid "Mark connected" +msgstr "" + +#: dcim/forms/bulk_edit.py:926 +msgid "Maximum draw" +msgstr "" + +#: dcim/forms/bulk_edit.py:929 dcim/models/device_component_templates.py:256 +#: dcim/models/device_components.py:357 +msgid "Maximum power draw (watts)" +msgstr "" + +#: dcim/forms/bulk_edit.py:932 +msgid "Allocated draw" +msgstr "" + +#: dcim/forms/bulk_edit.py:935 dcim/models/device_component_templates.py:263 +#: dcim/models/device_components.py:364 +msgid "Allocated power draw (watts)" +msgstr "" + +#: dcim/forms/bulk_edit.py:968 dcim/forms/bulk_import.py:723 +#: dcim/forms/model_forms.py:848 dcim/forms/model_forms.py:1076 +#: dcim/forms/model_forms.py:1361 dcim/forms/object_import.py:60 +msgid "Power port" +msgstr "" + +#: dcim/forms/bulk_edit.py:973 +msgid "Feed leg" +msgstr "" + +#: dcim/forms/bulk_edit.py:1019 dcim/forms/bulk_edit.py:1325 +msgid "Management only" +msgstr "" + +#: dcim/forms/bulk_edit.py:1029 dcim/forms/bulk_edit.py:1331 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1294 +#: dcim/forms/object_import.py:95 dcim/models/device_component_templates.py:411 +#: dcim/models/device_components.py:671 +msgid "PoE mode" +msgstr "" + +#: dcim/forms/bulk_edit.py:1035 dcim/forms/bulk_edit.py:1337 +#: dcim/forms/bulk_import.py:819 dcim/forms/filtersets.py:1299 +#: dcim/forms/object_import.py:100 +#: dcim/models/device_component_templates.py:417 +#: dcim/models/device_components.py:677 +msgid "PoE type" +msgstr "" + +#: dcim/forms/bulk_edit.py:1041 dcim/forms/filtersets.py:1304 +#: dcim/forms/object_import.py:105 +msgid "Wireless role" +msgstr "" + +#: dcim/forms/bulk_edit.py:1178 dcim/forms/model_forms.py:588 +#: dcim/forms/model_forms.py:1019 dcim/tables/devices.py:337 +#: templates/dcim/consoleport.html:27 templates/dcim/consoleserverport.html:27 +#: templates/dcim/frontport.html:27 templates/dcim/interface.html:35 +#: templates/dcim/module.html:51 templates/dcim/modulebay.html:57 +#: templates/dcim/poweroutlet.html:27 templates/dcim/powerport.html:27 +#: templates/dcim/rearport.html:27 +msgid "Module" +msgstr "" + +#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:680 +#: templates/dcim/interface.html:113 +msgid "LAG" +msgstr "" + +#: dcim/forms/bulk_edit.py:1310 dcim/forms/model_forms.py:1103 +msgid "Virtual device contexts" +msgstr "" + +#: dcim/forms/bulk_edit.py:1316 dcim/forms/bulk_import.py:651 +#: dcim/forms/bulk_import.py:677 dcim/forms/filtersets.py:1163 +#: dcim/forms/filtersets.py:1185 dcim/forms/filtersets.py:1258 +#: dcim/tables/devices.py:621 +#: templates/circuits/inc/circuit_termination.html:94 +#: templates/dcim/consoleport.html:43 templates/dcim/consoleserverport.html:43 +msgid "Speed" +msgstr "" + +#: dcim/forms/bulk_edit.py:1345 dcim/forms/bulk_import.py:822 +#: templates/vpn/ikepolicy.html:26 templates/vpn/ipsecprofile.html:22 +#: templates/vpn/ipsecprofile.html:51 virtualization/forms/bulk_edit.py:232 +#: virtualization/forms/bulk_import.py:165 vpn/forms/bulk_edit.py:145 +#: vpn/forms/bulk_edit.py:233 vpn/forms/bulk_import.py:175 +#: vpn/forms/bulk_import.py:229 vpn/forms/filtersets.py:132 +#: vpn/forms/filtersets.py:175 vpn/forms/filtersets.py:189 +#: vpn/tables/crypto.py:64 vpn/tables/crypto.py:162 +msgid "Mode" +msgstr "" + +#: dcim/forms/bulk_edit.py:1353 dcim/forms/model_forms.py:1152 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:479 +#: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:239 +#: virtualization/forms/model_forms.py:324 +msgid "VLAN group" +msgstr "" + +#: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1157 +#: dcim/tables/devices.py:594 virtualization/forms/bulk_edit.py:247 +#: virtualization/forms/model_forms.py:329 +msgid "Untagged VLAN" +msgstr "" + +#: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1166 +#: dcim/tables/devices.py:600 virtualization/forms/bulk_edit.py:255 +#: virtualization/forms/model_forms.py:338 +msgid "Tagged VLANs" +msgstr "" + +#: dcim/forms/bulk_edit.py:1379 dcim/forms/model_forms.py:1139 +msgid "Wireless LAN group" +msgstr "" + +#: dcim/forms/bulk_edit.py:1384 dcim/forms/model_forms.py:1144 +#: dcim/tables/devices.py:630 netbox/navigation/menu.py:134 +#: templates/dcim/interface.html:289 wireless/tables/wirelesslan.py:24 +msgid "Wireless LANs" +msgstr "" + +#: dcim/forms/bulk_edit.py:1393 dcim/forms/filtersets.py:1231 +#: dcim/forms/model_forms.py:1185 ipam/forms/bulk_edit.py:270 +#: ipam/forms/bulk_edit.py:361 ipam/forms/filtersets.py:166 +#: templates/dcim/interface.html:126 templates/ipam/prefix.html:96 +#: virtualization/forms/model_forms.py:352 +msgid "Addressing" +msgstr "" + +#: dcim/forms/bulk_edit.py:1394 dcim/forms/filtersets.py:651 +#: dcim/forms/model_forms.py:1186 virtualization/forms/model_forms.py:353 +msgid "Operation" +msgstr "" + +#: dcim/forms/bulk_edit.py:1395 dcim/forms/filtersets.py:1232 +#: dcim/forms/model_forms.py:880 dcim/forms/model_forms.py:1188 +msgid "PoE" +msgstr "" + +#: dcim/forms/bulk_edit.py:1396 dcim/forms/model_forms.py:1187 +#: templates/dcim/interface.html:101 virtualization/forms/bulk_edit.py:266 +#: virtualization/forms/model_forms.py:354 +msgid "Related Interfaces" +msgstr "" + +#: dcim/forms/bulk_edit.py:1397 dcim/forms/model_forms.py:1189 +#: virtualization/forms/bulk_edit.py:267 +#: virtualization/forms/model_forms.py:355 +msgid "802.1Q Switching" +msgstr "" + +#: dcim/forms/bulk_edit.py:1458 dcim/forms/bulk_edit.py:1460 +msgid "Interface mode must be specified to assign VLANs" +msgstr "" + +#: dcim/forms/bulk_edit.py:1465 dcim/forms/common.py:50 +msgid "An access interface cannot have tagged VLANs assigned." +msgstr "" + +#: dcim/forms/bulk_import.py:63 +msgid "Name of parent region" +msgstr "" + +#: dcim/forms/bulk_import.py:77 +msgid "Name of parent site group" +msgstr "" + +#: dcim/forms/bulk_import.py:96 +msgid "Assigned region" +msgstr "" + +#: dcim/forms/bulk_import.py:103 tenancy/forms/bulk_import.py:44 +#: tenancy/forms/bulk_import.py:85 wireless/forms/bulk_import.py:40 +msgid "Assigned group" +msgstr "" + +#: dcim/forms/bulk_import.py:122 +msgid "available options" +msgstr "" + +#: dcim/forms/bulk_import.py:133 dcim/forms/bulk_import.py:480 +#: dcim/forms/bulk_import.py:1270 ipam/forms/bulk_import.py:174 +#: ipam/forms/bulk_import.py:441 virtualization/forms/bulk_import.py:63 +#: virtualization/forms/bulk_import.py:89 +msgid "Assigned site" +msgstr "" + +#: dcim/forms/bulk_import.py:140 +msgid "Parent location" +msgstr "" + +#: dcim/forms/bulk_import.py:142 +msgid "Location not found." +msgstr "" + +#: dcim/forms/bulk_import.py:191 +msgid "Name of assigned tenant" +msgstr "" + +#: dcim/forms/bulk_import.py:203 +msgid "Name of assigned role" +msgstr "" + +#: dcim/forms/bulk_import.py:209 +msgid "Rack type" +msgstr "" + +#: dcim/forms/bulk_import.py:214 +msgid "Rail-to-rail width (in inches)" +msgstr "" + +#: dcim/forms/bulk_import.py:220 +msgid "Unit for outer dimensions" +msgstr "" + +#: dcim/forms/bulk_import.py:226 +msgid "Unit for rack weights" +msgstr "" + +#: dcim/forms/bulk_import.py:252 +msgid "Parent site" +msgstr "" + +#: dcim/forms/bulk_import.py:259 dcim/forms/bulk_import.py:1283 +msgid "Rack's location (if any)" +msgstr "" + +#: dcim/forms/bulk_import.py:268 dcim/forms/model_forms.py:246 +#: dcim/tables/racks.py:153 templates/dcim/rackreservation.html:12 +#: templates/dcim/rackreservation.html:52 +msgid "Units" +msgstr "" + +#: dcim/forms/bulk_import.py:271 +msgid "Comma-separated list of individual unit numbers" +msgstr "" + +#: dcim/forms/bulk_import.py:314 +msgid "The manufacturer which produces this device type" +msgstr "" + +#: dcim/forms/bulk_import.py:321 +msgid "The default platform for devices of this type (optional)" +msgstr "" + +#: dcim/forms/bulk_import.py:326 +msgid "Device weight" +msgstr "" + +#: dcim/forms/bulk_import.py:332 +msgid "Unit for device weight" +msgstr "" + +#: dcim/forms/bulk_import.py:352 +msgid "Module weight" +msgstr "" + +#: dcim/forms/bulk_import.py:358 +msgid "Unit for module weight" +msgstr "" + +#: dcim/forms/bulk_import.py:391 +msgid "Limit platform assignments to this manufacturer" +msgstr "" + +#: dcim/forms/bulk_import.py:413 tenancy/forms/bulk_import.py:106 +msgid "Assigned role" +msgstr "" + +#: dcim/forms/bulk_import.py:426 +msgid "Device type manufacturer" +msgstr "" + +#: dcim/forms/bulk_import.py:432 +msgid "Device type model" +msgstr "" + +#: dcim/forms/bulk_import.py:439 virtualization/forms/bulk_import.py:126 +msgid "Assigned platform" +msgstr "" + +#: dcim/forms/bulk_import.py:447 dcim/forms/bulk_import.py:451 +#: dcim/forms/model_forms.py:461 +msgid "Virtual chassis" +msgstr "" + +#: dcim/forms/bulk_import.py:454 dcim/forms/model_forms.py:450 +#: dcim/tables/devices.py:231 extras/filtersets.py:501 +#: extras/forms/filtersets.py:330 ipam/forms/bulk_edit.py:478 +#: ipam/forms/model_forms.py:588 templates/dcim/device.html:239 +#: templates/virtualization/cluster.html:11 +#: templates/virtualization/virtualmachine.html:92 +#: templates/virtualization/virtualmachine.html:102 +#: virtualization/filtersets.py:156 virtualization/filtersets.py:271 +#: virtualization/forms/bulk_edit.py:128 virtualization/forms/bulk_import.py:92 +#: virtualization/forms/filtersets.py:98 virtualization/forms/filtersets.py:119 +#: virtualization/forms/filtersets.py:196 +#: virtualization/forms/model_forms.py:82 +#: virtualization/forms/model_forms.py:179 +#: virtualization/tables/virtualmachines.py:57 +msgid "Cluster" +msgstr "" + +#: dcim/forms/bulk_import.py:458 +msgid "Virtualization cluster" +msgstr "" + +#: dcim/forms/bulk_import.py:487 +msgid "Assigned location (if any)" +msgstr "" + +#: dcim/forms/bulk_import.py:494 +msgid "Assigned rack (if any)" +msgstr "" + +#: dcim/forms/bulk_import.py:497 +msgid "Face" +msgstr "" + +#: dcim/forms/bulk_import.py:500 +msgid "Mounted rack face" +msgstr "" + +#: dcim/forms/bulk_import.py:507 +msgid "Parent device (for child devices)" +msgstr "" + +#: dcim/forms/bulk_import.py:510 +msgid "Device bay" +msgstr "" + +#: dcim/forms/bulk_import.py:514 +msgid "Device bay in which this device is installed (for child devices)" +msgstr "" + +#: dcim/forms/bulk_import.py:520 +msgid "Airflow direction" +msgstr "" + +#: dcim/forms/bulk_import.py:581 +msgid "The device in which this module is installed" +msgstr "" + +#: dcim/forms/bulk_import.py:584 dcim/forms/model_forms.py:562 +msgid "Module bay" +msgstr "" + +#: dcim/forms/bulk_import.py:587 +msgid "The module bay in which this module is installed" +msgstr "" + +#: dcim/forms/bulk_import.py:593 +msgid "The type of module" +msgstr "" + +#: dcim/forms/bulk_import.py:601 dcim/forms/model_forms.py:575 +msgid "Replicate components" +msgstr "" + +#: dcim/forms/bulk_import.py:603 +msgid "" +"Automatically populate components associated with this module type (enabled " +"by default)" +msgstr "" + +#: dcim/forms/bulk_import.py:606 dcim/forms/model_forms.py:581 +msgid "Adopt components" +msgstr "" + +#: dcim/forms/bulk_import.py:608 dcim/forms/model_forms.py:584 +msgid "Adopt already existing components" +msgstr "" + +#: dcim/forms/bulk_import.py:648 dcim/forms/bulk_import.py:674 +#: dcim/forms/bulk_import.py:700 +msgid "Port type" +msgstr "" + +#: dcim/forms/bulk_import.py:656 dcim/forms/bulk_import.py:682 +msgid "Port speed in bps" +msgstr "" + +#: dcim/forms/bulk_import.py:720 +msgid "Outlet type" +msgstr "" + +#: dcim/forms/bulk_import.py:727 +msgid "Local power port which feeds this outlet" +msgstr "" + +#: dcim/forms/bulk_import.py:730 +msgid "Feed lag" +msgstr "" + +#: dcim/forms/bulk_import.py:733 +msgid "Electrical phase (for three-phase circuits)" +msgstr "" + +#: dcim/forms/bulk_import.py:774 dcim/forms/model_forms.py:1114 +#: virtualization/forms/bulk_import.py:155 +#: virtualization/forms/model_forms.py:308 +msgid "Parent interface" +msgstr "" + +#: dcim/forms/bulk_import.py:781 dcim/forms/model_forms.py:1122 +#: virtualization/forms/bulk_import.py:162 +#: virtualization/forms/model_forms.py:316 +msgid "Bridged interface" +msgstr "" + +#: dcim/forms/bulk_import.py:784 +msgid "Lag" +msgstr "" + +#: dcim/forms/bulk_import.py:788 +msgid "Parent LAG interface" +msgstr "" + +#: dcim/forms/bulk_import.py:791 +msgid "Vdcs" +msgstr "" + +#: dcim/forms/bulk_import.py:796 +msgid "VDC names separated by commas, encased with double quotes. Example:" +msgstr "" + +#: dcim/forms/bulk_import.py:802 +msgid "Physical medium" +msgstr "" + +#: dcim/forms/bulk_import.py:805 dcim/forms/filtersets.py:1265 +msgid "Duplex" +msgstr "" + +#: dcim/forms/bulk_import.py:810 +msgid "Poe mode" +msgstr "" + +#: dcim/forms/bulk_import.py:816 +msgid "Poe type" +msgstr "" + +#: dcim/forms/bulk_import.py:825 virtualization/forms/bulk_import.py:168 +msgid "IEEE 802.1Q operational mode (for L2 interfaces)" +msgstr "" + +#: dcim/forms/bulk_import.py:832 ipam/forms/bulk_import.py:160 +#: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:322 virtualization/forms/bulk_import.py:175 +msgid "Assigned VRF" +msgstr "" + +#: dcim/forms/bulk_import.py:835 +msgid "Rf role" +msgstr "" + +#: dcim/forms/bulk_import.py:838 +msgid "Wireless role (AP/station)" +msgstr "" + +#: dcim/forms/bulk_import.py:884 dcim/forms/model_forms.py:893 +#: dcim/forms/model_forms.py:1369 dcim/forms/object_import.py:122 +msgid "Rear port" +msgstr "" + +#: dcim/forms/bulk_import.py:887 +msgid "Corresponding rear port" +msgstr "" + +#: dcim/forms/bulk_import.py:892 dcim/forms/bulk_import.py:933 +#: dcim/forms/bulk_import.py:1148 +msgid "Physical medium classification" +msgstr "" + +#: dcim/forms/bulk_import.py:961 dcim/tables/devices.py:841 +msgid "Installed device" +msgstr "" + +#: dcim/forms/bulk_import.py:965 +msgid "Child device installed within this bay" +msgstr "" + +#: dcim/forms/bulk_import.py:967 +msgid "Child device not found." +msgstr "" + +#: dcim/forms/bulk_import.py:1025 +msgid "Parent inventory item" +msgstr "" + +#: dcim/forms/bulk_import.py:1028 +msgid "Component type" +msgstr "" + +#: dcim/forms/bulk_import.py:1032 +msgid "Component Type" +msgstr "" + +#: dcim/forms/bulk_import.py:1035 +msgid "Compnent name" +msgstr "" + +#: dcim/forms/bulk_import.py:1037 +msgid "Component Name" +msgstr "" + +#: dcim/forms/bulk_import.py:1103 +msgid "Side A device" +msgstr "" + +#: dcim/forms/bulk_import.py:1106 dcim/forms/bulk_import.py:1124 +msgid "Device name" +msgstr "" + +#: dcim/forms/bulk_import.py:1109 +msgid "Side A type" +msgstr "" + +#: dcim/forms/bulk_import.py:1112 dcim/forms/bulk_import.py:1130 +msgid "Termination type" +msgstr "" + +#: dcim/forms/bulk_import.py:1115 +msgid "Side A name" +msgstr "" + +#: dcim/forms/bulk_import.py:1116 dcim/forms/bulk_import.py:1134 +msgid "Termination name" +msgstr "" + +#: dcim/forms/bulk_import.py:1121 +msgid "Side B device" +msgstr "" + +#: dcim/forms/bulk_import.py:1127 +msgid "Side B type" +msgstr "" + +#: dcim/forms/bulk_import.py:1133 +msgid "Side B name" +msgstr "" + +#: dcim/forms/bulk_import.py:1142 wireless/forms/bulk_import.py:86 +msgid "Connection status" +msgstr "" + +#: dcim/forms/bulk_import.py:1221 dcim/forms/model_forms.py:689 +#: dcim/tables/devices.py:1028 templates/dcim/device.html:130 +#: templates/dcim/virtualchassis.html:28 templates/dcim/virtualchassis.html:60 +msgid "Master" +msgstr "" + +#: dcim/forms/bulk_import.py:1225 +msgid "Master device" +msgstr "" + +#: dcim/forms/bulk_import.py:1242 +msgid "Name of parent site" +msgstr "" + +#: dcim/forms/bulk_import.py:1276 +msgid "Upstream power panel" +msgstr "" + +#: dcim/forms/bulk_import.py:1306 +msgid "Primary or redundant" +msgstr "" + +#: dcim/forms/bulk_import.py:1311 +msgid "Supply type (AC/DC)" +msgstr "" + +#: dcim/forms/bulk_import.py:1316 +msgid "Single or three-phase" +msgstr "" + +#: dcim/forms/common.py:24 dcim/models/device_components.py:528 +#: templates/dcim/interface.html:58 +#: templates/virtualization/vminterface.html:58 +#: virtualization/forms/bulk_edit.py:224 +msgid "MTU" +msgstr "" + +#: dcim/forms/common.py:65 +#, python-brace-format +msgid "" +"The tagged VLANs ({vlans}) must belong to the same site as the interface's " +"parent device/VM, or they must be global" +msgstr "" + +#: dcim/forms/common.py:110 +msgid "" +"Cannot install module with placeholder values in a module bay with no " +"position defined." +msgstr "" + +#: dcim/forms/common.py:119 +#, python-brace-format +msgid "Cannot adopt {model} {name} as it already belongs to a module" +msgstr "" + +#: dcim/forms/common.py:128 +#, python-brace-format +msgid "A {model} named {name} already exists" +msgstr "" + +#: dcim/forms/connections.py:45 dcim/tables/power.py:66 +#: templates/dcim/inc/cable_termination.html:37 +#: templates/dcim/powerfeed.html:27 templates/dcim/powerpanel.html:19 +#: templates/dcim/trace/powerpanel.html:4 +msgid "Power Panel" +msgstr "" + +#: dcim/forms/connections.py:54 dcim/forms/model_forms.py:670 +#: templates/dcim/powerfeed.html:22 templates/dcim/powerport.html:84 +msgid "Power Feed" +msgstr "" + +#: dcim/forms/connections.py:74 +msgid "Side" +msgstr "" + +#: dcim/forms/filtersets.py:141 +msgid "Parent region" +msgstr "" + +#: dcim/forms/filtersets.py:155 tenancy/forms/bulk_import.py:28 +#: tenancy/forms/bulk_import.py:62 tenancy/forms/filtersets.py:32 +#: tenancy/forms/filtersets.py:61 wireless/forms/bulk_import.py:25 +#: wireless/forms/filtersets.py:24 +msgid "Parent group" +msgstr "" + +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:331 +msgid "Function" +msgstr "" + +#: dcim/forms/filtersets.py:418 dcim/forms/model_forms.py:308 +#: templates/inc/panels/image_attachments.html:5 +msgid "Images" +msgstr "" + +#: dcim/forms/filtersets.py:419 dcim/forms/filtersets.py:544 +#: dcim/forms/filtersets.py:655 +msgid "Components" +msgstr "" + +#: dcim/forms/filtersets.py:441 +msgid "Subdevice role" +msgstr "" + +#: dcim/forms/filtersets.py:717 +msgid "Model" +msgstr "" + +#: dcim/forms/filtersets.py:768 +msgid "Virtual chassis member" +msgstr "" + +#: dcim/forms/filtersets.py:1123 +msgid "Cabled" +msgstr "" + +#: dcim/forms/filtersets.py:1130 +msgid "Occupied" +msgstr "" + +#: dcim/forms/filtersets.py:1155 dcim/forms/filtersets.py:1177 +#: dcim/forms/filtersets.py:1199 dcim/forms/filtersets.py:1216 +#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:367 +#: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:59 +#: templates/dcim/frontport.html:74 templates/dcim/interface.html:146 +#: templates/dcim/powerfeed.html:118 templates/dcim/poweroutlet.html:63 +#: templates/dcim/powerport.html:63 templates/dcim/rearport.html:70 +msgid "Connection" +msgstr "" + +#: dcim/forms/filtersets.py:1245 dcim/forms/model_forms.py:1477 +#: templates/dcim/virtualdevicecontext.html:16 +msgid "Virtual Device Context" +msgstr "" + +#: dcim/forms/filtersets.py:1248 extras/forms/bulk_edit.py:315 +#: extras/forms/bulk_import.py:239 extras/forms/filtersets.py:479 +#: extras/forms/model_forms.py:548 extras/tables/tables.py:482 +#: templates/extras/journalentry.html:33 +msgid "Kind" +msgstr "" + +#: dcim/forms/filtersets.py:1277 +msgid "Mgmt only" +msgstr "" + +#: dcim/forms/filtersets.py:1289 dcim/forms/model_forms.py:1180 +#: dcim/models/device_components.py:630 templates/dcim/interface.html:134 +msgid "WWN" +msgstr "" + +#: dcim/forms/filtersets.py:1309 +msgid "Wireless channel" +msgstr "" + +#: dcim/forms/filtersets.py:1313 +msgid "Channel frequency (MHz)" +msgstr "" + +#: dcim/forms/filtersets.py:1317 +msgid "Channel width (MHz)" +msgstr "" + +#: dcim/forms/filtersets.py:1321 templates/dcim/interface.html:86 +msgid "Transmit power (dBm)" +msgstr "" + +#: dcim/forms/filtersets.py:1344 dcim/forms/filtersets.py:1366 +#: dcim/tables/devices.py:344 templates/dcim/cable.html:12 +#: templates/dcim/cable_edit.html:46 templates/dcim/cable_trace.html:43 +#: templates/dcim/frontport.html:84 +#: templates/dcim/inc/connection_endpoints.html:4 +#: templates/dcim/rearport.html:80 templates/dcim/trace/cable.html:7 +msgid "Cable" +msgstr "" + +#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:951 +msgid "Discovered" +msgstr "" + +#: dcim/forms/formsets.py:20 +#, python-brace-format +msgid "A virtual chassis member already exists in position {vc_position}." +msgstr "" + +#: dcim/forms/model_forms.py:101 dcim/tables/devices.py:183 +#: templates/dcim/sitegroup.html:26 +msgid "Site Group" +msgstr "" + +#: dcim/forms/model_forms.py:142 +msgid "Contact Info" +msgstr "" + +#: dcim/forms/model_forms.py:197 templates/dcim/rackrole.html:20 +msgid "Rack Role" +msgstr "" + +#: dcim/forms/model_forms.py:248 +msgid "" +"Comma-separated list of numeric unit IDs. A range may be specified using a " +"hyphen." +msgstr "" + +#: dcim/forms/model_forms.py:259 dcim/tables/racks.py:133 +msgid "Reservation" +msgstr "" + +#: dcim/forms/model_forms.py:297 dcim/forms/model_forms.py:380 +#: utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "" + +#: dcim/forms/model_forms.py:304 templates/dcim/devicetype.html:12 +msgid "Chassis" +msgstr "" + +#: dcim/forms/model_forms.py:356 templates/dcim/devicerole.html:24 +msgid "Device Role" +msgstr "" + +#: dcim/forms/model_forms.py:424 dcim/models/devices.py:632 +msgid "The lowest-numbered unit occupied by the device" +msgstr "" + +#: dcim/forms/model_forms.py:469 +msgid "The position in the virtual chassis this device is identified by" +msgstr "" + +#: dcim/forms/model_forms.py:473 templates/dcim/device.html:131 +#: templates/dcim/virtualchassis.html:61 +#: templates/dcim/virtualchassis_edit.html:57 +#: templates/ipam/inc/panels/fhrp_groups.html:13 tenancy/forms/bulk_edit.py:146 +#: tenancy/forms/filtersets.py:109 +msgid "Priority" +msgstr "" + +#: dcim/forms/model_forms.py:474 +msgid "The priority of the device in the virtual chassis" +msgstr "" + +#: dcim/forms/model_forms.py:578 +msgid "Automatically populate components associated with this module type" +msgstr "" + +#: dcim/forms/model_forms.py:623 +msgid "Maximum length is 32767 (any unit)" +msgstr "" + +#: dcim/forms/model_forms.py:671 +msgid "Characteristics" +msgstr "" + +#: dcim/forms/model_forms.py:1130 +msgid "LAG interface" +msgstr "" + +#: dcim/forms/model_forms.py:1184 dcim/forms/model_forms.py:1345 +#: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 +#: ipam/forms/model_forms.py:270 ipam/forms/model_forms.py:279 +#: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 +#: templates/circuits/inc/circuit_termination.html:78 +#: templates/dcim/frontport.html:113 templates/dcim/interface.html:27 +#: templates/dcim/interface.html:190 templates/dcim/interface.html:322 +#: templates/dcim/inventoryitem_edit.html:54 templates/dcim/rearport.html:109 +#: templates/ipam/fhrpgroupassignment_edit.html:11 +#: templates/virtualization/vminterface.html:19 +#: templates/vpn/tunneltermination.html:32 +#: templates/wireless/inc/wirelesslink_interface.html:10 +#: templates/wireless/wirelesslink.html:10 +#: templates/wireless/wirelesslink.html:49 +#: virtualization/forms/model_forms.py:351 vpn/forms/bulk_import.py:292 +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/forms/model_forms.py:430 +#: vpn/forms/model_forms.py:439 vpn/tables/tunnels.py:87 +#: wireless/forms/model_forms.py:112 wireless/forms/model_forms.py:152 +msgid "Interface" +msgstr "" + +#: dcim/forms/model_forms.py:1278 +msgid "Child Device" +msgstr "" + +#: dcim/forms/model_forms.py:1279 +msgid "" +"Child devices must first be created and assigned to the site and rack of the " +"parent device." +msgstr "" + +#: dcim/forms/model_forms.py:1321 +msgid "Console port" +msgstr "" + +#: dcim/forms/model_forms.py:1329 +msgid "Console server port" +msgstr "" + +#: dcim/forms/model_forms.py:1337 +msgid "Front port" +msgstr "" + +#: dcim/forms/model_forms.py:1353 +msgid "Power outlet" +msgstr "" + +#: dcim/forms/model_forms.py:1373 templates/dcim/inventoryitem.html:17 +#: templates/dcim/inventoryitem_edit.html:10 +msgid "Inventory Item" +msgstr "" + +#: dcim/forms/model_forms.py:1425 +msgid "An InventoryItem can only be assigned to a single component." +msgstr "" + +#: dcim/forms/model_forms.py:1439 templates/dcim/inventoryitemrole.html:15 +msgid "Inventory Item Role" +msgstr "" + +#: dcim/forms/model_forms.py:1459 templates/dcim/device.html:195 +#: templates/dcim/virtualdevicecontext.html:33 +#: templates/virtualization/virtualmachine.html:51 +msgid "Primary IPv4" +msgstr "" + +#: dcim/forms/model_forms.py:1468 templates/dcim/device.html:211 +#: templates/dcim/virtualdevicecontext.html:44 +#: templates/virtualization/virtualmachine.html:67 +msgid "Primary IPv6" +msgstr "" + +#: dcim/forms/object_create.py:47 dcim/forms/object_create.py:198 +#: dcim/forms/object_create.py:354 +msgid "" +"Alphanumeric ranges are supported. (Must match the number of objects being " +"created.)" +msgstr "" + +#: dcim/forms/object_create.py:67 +#, python-brace-format +msgid "" +"The provided pattern specifies {value_count} values, but {pattern_count} are " +"expected." +msgstr "" + +#: dcim/forms/object_create.py:109 dcim/forms/object_create.py:270 +#: dcim/tables/devices.py:281 +msgid "Rear ports" +msgstr "" + +#: dcim/forms/object_create.py:110 dcim/forms/object_create.py:271 +msgid "Select one rear port assignment for each front port being created." +msgstr "" + +#: dcim/forms/object_create.py:163 +#, python-brace-format +msgid "" +"The number of front port templates to be created ({frontport_count}) must " +"match the selected number of rear port positions ({rearport_count})." +msgstr "" + +#: dcim/forms/object_create.py:250 +#, python-brace-format +msgid "" +"The string {module} will be replaced with the position of the " +"assigned module, if any." +msgstr "" + +#: dcim/forms/object_create.py:319 +#, python-brace-format +msgid "" +"The number of front ports to be created ({frontport_count}) must match the " +"selected number of rear port positions ({rearport_count})." +msgstr "" + +#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1034 +#: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:54 +#: templates/dcim/virtualchassis_edit.html:48 templates/ipam/fhrpgroup.html:39 +msgid "Members" +msgstr "" + +#: dcim/forms/object_create.py:417 +msgid "Initial position" +msgstr "" + +#: dcim/forms/object_create.py:420 +msgid "" +"Position of the first member device. Increases by one for each additional " +"member." +msgstr "" + +#: dcim/forms/object_create.py:434 +msgid "A position must be specified for the first VC member." +msgstr "" + +#: dcim/models/cables.py:62 dcim/models/device_component_templates.py:55 +#: dcim/models/device_components.py:63 extras/models/customfields.py:108 +msgid "label" +msgstr "" + +#: dcim/models/cables.py:71 +msgid "length" +msgstr "" + +#: dcim/models/cables.py:78 +msgid "length unit" +msgstr "" + +#: dcim/models/cables.py:93 +msgid "cable" +msgstr "" + +#: dcim/models/cables.py:94 +msgid "cables" +msgstr "" + +#: dcim/models/cables.py:190 +msgid "A and B terminations cannot connect to the same object." +msgstr "" + +#: dcim/models/cables.py:257 ipam/models/asns.py:37 +msgid "end" +msgstr "" + +#: dcim/models/cables.py:310 +msgid "cable termination" +msgstr "" + +#: dcim/models/cables.py:311 +msgid "cable terminations" +msgstr "" + +#: dcim/models/cables.py:434 extras/models/configs.py:50 +msgid "is active" +msgstr "" + +#: dcim/models/cables.py:438 +msgid "is complete" +msgstr "" + +#: dcim/models/cables.py:442 +msgid "is split" +msgstr "" + +#: dcim/models/cables.py:450 +msgid "cable path" +msgstr "" + +#: dcim/models/cables.py:451 +msgid "cable paths" +msgstr "" + +#: dcim/models/device_component_templates.py:46 +#, python-brace-format +msgid "" +"{module} is accepted as a substitution for the module bay position when " +"attached to a module type." +msgstr "" + +#: dcim/models/device_component_templates.py:58 +#: dcim/models/device_components.py:66 +msgid "Physical label" +msgstr "" + +#: dcim/models/device_component_templates.py:103 +msgid "Component templates cannot be moved to a different device type." +msgstr "" + +#: dcim/models/device_component_templates.py:154 +msgid "" +"A component template cannot be associated with both a device type and a " +"module type." +msgstr "" + +#: dcim/models/device_component_templates.py:158 +msgid "" +"A component template must be associated with either a device type or a " +"module type." +msgstr "" + +#: dcim/models/device_component_templates.py:186 +msgid "console port template" +msgstr "" + +#: dcim/models/device_component_templates.py:187 +msgid "console port templates" +msgstr "" + +#: dcim/models/device_component_templates.py:220 +msgid "console server port template" +msgstr "" + +#: dcim/models/device_component_templates.py:221 +msgid "console server port templates" +msgstr "" + +#: dcim/models/device_component_templates.py:252 +#: dcim/models/device_components.py:353 +msgid "maximum draw" +msgstr "" + +#: dcim/models/device_component_templates.py:259 +#: dcim/models/device_components.py:360 +msgid "allocated draw" +msgstr "" + +#: dcim/models/device_component_templates.py:269 +msgid "power port template" +msgstr "" + +#: dcim/models/device_component_templates.py:270 +msgid "power port templates" +msgstr "" + +#: dcim/models/device_component_templates.py:289 +#: dcim/models/device_components.py:383 +#, python-brace-format +msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." +msgstr "" + +#: dcim/models/device_component_templates.py:321 +#: dcim/models/device_components.py:478 +msgid "feed leg" +msgstr "" + +#: dcim/models/device_component_templates.py:325 +#: dcim/models/device_components.py:482 +msgid "Phase (for three-phase feeds)" +msgstr "" + +#: dcim/models/device_component_templates.py:331 +msgid "power outlet template" +msgstr "" + +#: dcim/models/device_component_templates.py:332 +msgid "power outlet templates" +msgstr "" + +#: dcim/models/device_component_templates.py:341 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same device type" +msgstr "" + +#: dcim/models/device_component_templates.py:345 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same module type" +msgstr "" + +#: dcim/models/device_component_templates.py:397 +#: dcim/models/device_components.py:612 +msgid "management only" +msgstr "" + +#: dcim/models/device_component_templates.py:405 +#: dcim/models/device_components.py:551 +msgid "bridge interface" +msgstr "" + +#: dcim/models/device_component_templates.py:423 +#: dcim/models/device_components.py:637 +msgid "wireless role" +msgstr "" + +#: dcim/models/device_component_templates.py:429 +msgid "interface template" +msgstr "" + +#: dcim/models/device_component_templates.py:430 +msgid "interface templates" +msgstr "" + +#: dcim/models/device_component_templates.py:437 +#: dcim/models/device_components.py:805 +#: virtualization/models/virtualmachines.py:398 +msgid "An interface cannot be bridged to itself." +msgstr "" + +#: dcim/models/device_component_templates.py:440 +#, python-brace-format +msgid "Bridge interface ({bridge}) must belong to the same device type" +msgstr "" + +#: dcim/models/device_component_templates.py:444 +#, python-brace-format +msgid "Bridge interface ({bridge}) must belong to the same module type" +msgstr "" + +#: dcim/models/device_component_templates.py:500 +#: dcim/models/device_components.py:985 +msgid "rear port position" +msgstr "" + +#: dcim/models/device_component_templates.py:525 +msgid "front port template" +msgstr "" + +#: dcim/models/device_component_templates.py:526 +msgid "front port templates" +msgstr "" + +#: dcim/models/device_component_templates.py:536 +#, python-brace-format +msgid "Rear port ({name}) must belong to the same device type" +msgstr "" + +#: dcim/models/device_component_templates.py:542 +#, python-brace-format +msgid "" +"Invalid rear port position ({position}); rear port {name} has only {count} " +"positions" +msgstr "" + +#: dcim/models/device_component_templates.py:595 +#: dcim/models/device_components.py:1054 +msgid "positions" +msgstr "" + +#: dcim/models/device_component_templates.py:606 +msgid "rear port template" +msgstr "" + +#: dcim/models/device_component_templates.py:607 +msgid "rear port templates" +msgstr "" + +#: dcim/models/device_component_templates.py:636 +#: dcim/models/device_components.py:1095 +msgid "position" +msgstr "" + +#: dcim/models/device_component_templates.py:639 +#: dcim/models/device_components.py:1098 +msgid "Identifier to reference when renaming installed components" +msgstr "" + +#: dcim/models/device_component_templates.py:645 +msgid "module bay template" +msgstr "" + +#: dcim/models/device_component_templates.py:646 +msgid "module bay templates" +msgstr "" + +#: dcim/models/device_component_templates.py:673 +msgid "device bay template" +msgstr "" + +#: dcim/models/device_component_templates.py:674 +msgid "device bay templates" +msgstr "" + +#: dcim/models/device_component_templates.py:687 +#, python-brace-format +msgid "" +"Subdevice role of device type ({device_type}) must be set to \"parent\" to " +"allow device bays." +msgstr "" + +#: dcim/models/device_component_templates.py:742 +#: dcim/models/device_components.py:1224 +msgid "part ID" +msgstr "" + +#: dcim/models/device_component_templates.py:744 +#: dcim/models/device_components.py:1226 +msgid "Manufacturer-assigned part identifier" +msgstr "" + +#: dcim/models/device_component_templates.py:761 +msgid "inventory item template" +msgstr "" + +#: dcim/models/device_component_templates.py:762 +msgid "inventory item templates" +msgstr "" + +#: dcim/models/device_components.py:106 +msgid "Components cannot be moved to a different device." +msgstr "" + +#: dcim/models/device_components.py:145 +msgid "cable end" +msgstr "" + +#: dcim/models/device_components.py:151 +msgid "mark connected" +msgstr "" + +#: dcim/models/device_components.py:153 +msgid "Treat as if a cable is connected" +msgstr "" + +#: dcim/models/device_components.py:171 +msgid "Must specify cable end (A or B) when attaching a cable." +msgstr "" + +#: dcim/models/device_components.py:175 +msgid "Cable end must not be set without a cable." +msgstr "" + +#: dcim/models/device_components.py:179 +msgid "Cannot mark as connected with a cable attached." +msgstr "" + +#: dcim/models/device_components.py:203 +#, python-brace-format +msgid "{class_name} models must declare a parent_object property" +msgstr "" + +#: dcim/models/device_components.py:288 dcim/models/device_components.py:317 +#: dcim/models/device_components.py:350 dcim/models/device_components.py:468 +msgid "Physical port type" +msgstr "" + +#: dcim/models/device_components.py:291 dcim/models/device_components.py:320 +msgid "speed" +msgstr "" + +#: dcim/models/device_components.py:295 dcim/models/device_components.py:324 +msgid "Port speed in bits per second" +msgstr "" + +#: dcim/models/device_components.py:301 +msgid "console port" +msgstr "" + +#: dcim/models/device_components.py:302 +msgid "console ports" +msgstr "" + +#: dcim/models/device_components.py:330 +msgid "console server port" +msgstr "" + +#: dcim/models/device_components.py:331 +msgid "console server ports" +msgstr "" + +#: dcim/models/device_components.py:370 +msgid "power port" +msgstr "" + +#: dcim/models/device_components.py:371 +msgid "power ports" +msgstr "" + +#: dcim/models/device_components.py:488 +msgid "power outlet" +msgstr "" + +#: dcim/models/device_components.py:489 +msgid "power outlets" +msgstr "" + +#: dcim/models/device_components.py:500 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same device" +msgstr "" + +#: dcim/models/device_components.py:531 vpn/models/crypto.py:81 +#: vpn/models/crypto.py:214 +msgid "mode" +msgstr "" + +#: dcim/models/device_components.py:535 +msgid "IEEE 802.1Q tagging strategy" +msgstr "" + +#: dcim/models/device_components.py:543 +msgid "parent interface" +msgstr "" + +#: dcim/models/device_components.py:603 +msgid "parent LAG" +msgstr "" + +#: dcim/models/device_components.py:613 +msgid "This interface is used only for out-of-band management" +msgstr "" + +#: dcim/models/device_components.py:618 +msgid "speed (Kbps)" +msgstr "" + +#: dcim/models/device_components.py:621 +msgid "duplex" +msgstr "" + +#: dcim/models/device_components.py:631 +msgid "64-bit World Wide Name" +msgstr "" + +#: dcim/models/device_components.py:643 +msgid "wireless channel" +msgstr "" + +#: dcim/models/device_components.py:650 +msgid "channel frequency (MHz)" +msgstr "" + +#: dcim/models/device_components.py:651 dcim/models/device_components.py:659 +msgid "Populated by selected channel (if set)" +msgstr "" + +#: dcim/models/device_components.py:665 +msgid "transmit power (dBm)" +msgstr "" + +#: dcim/models/device_components.py:690 wireless/models.py:116 +msgid "wireless LANs" +msgstr "" + +#: dcim/models/device_components.py:698 +#: virtualization/models/virtualmachines.py:328 +msgid "untagged VLAN" +msgstr "" + +#: dcim/models/device_components.py:704 +#: virtualization/models/virtualmachines.py:334 +msgid "tagged VLANs" +msgstr "" + +#: dcim/models/device_components.py:746 +#: virtualization/models/virtualmachines.py:370 +msgid "interface" +msgstr "" + +#: dcim/models/device_components.py:747 +#: virtualization/models/virtualmachines.py:371 +msgid "interfaces" +msgstr "" + +#: dcim/models/device_components.py:758 +#, python-brace-format +msgid "{display_type} interfaces cannot have a cable attached." +msgstr "" + +#: dcim/models/device_components.py:766 +#, python-brace-format +msgid "{display_type} interfaces cannot be marked as connected." +msgstr "" + +#: dcim/models/device_components.py:775 +#: virtualization/models/virtualmachines.py:383 +msgid "An interface cannot be its own parent." +msgstr "" + +#: dcim/models/device_components.py:779 +msgid "Only virtual interfaces may be assigned to a parent interface." +msgstr "" + +#: dcim/models/device_components.py:786 +#, python-brace-format +msgid "" +"The selected parent interface ({interface}) belongs to a different device " +"({device})" +msgstr "" + +#: dcim/models/device_components.py:792 +#, python-brace-format +msgid "" +"The selected parent interface ({interface}) belongs to {device}, which is " +"not part of virtual chassis {virtual_chassis}." +msgstr "" + +#: dcim/models/device_components.py:812 +#, python-brace-format +msgid "" +"The selected bridge interface ({bridge}) belongs to a different device " +"({device})." +msgstr "" + +#: dcim/models/device_components.py:818 +#, python-brace-format +msgid "" +"The selected bridge interface ({interface}) belongs to {device}, which is " +"not part of virtual chassis {virtual_chassis}." +msgstr "" + +#: dcim/models/device_components.py:829 +msgid "Virtual interfaces cannot have a parent LAG interface." +msgstr "" + +#: dcim/models/device_components.py:833 +msgid "A LAG interface cannot be its own parent." +msgstr "" + +#: dcim/models/device_components.py:840 +#, python-brace-format +msgid "" +"The selected LAG interface ({lag}) belongs to a different device ({device})." +msgstr "" + +#: dcim/models/device_components.py:846 +#, python-brace-format +msgid "" +"The selected LAG interface ({lag}) belongs to {device}, which is not part of " +"virtual chassis {virtual_chassis}." +msgstr "" + +#: dcim/models/device_components.py:857 +msgid "Virtual interfaces cannot have a PoE mode." +msgstr "" + +#: dcim/models/device_components.py:861 +msgid "Virtual interfaces cannot have a PoE type." +msgstr "" + +#: dcim/models/device_components.py:867 +msgid "Must specify PoE mode when designating a PoE type." +msgstr "" + +#: dcim/models/device_components.py:874 +msgid "Wireless role may be set only on wireless interfaces." +msgstr "" + +#: dcim/models/device_components.py:876 +msgid "Channel may be set only on wireless interfaces." +msgstr "" + +#: dcim/models/device_components.py:882 +msgid "Channel frequency may be set only on wireless interfaces." +msgstr "" + +#: dcim/models/device_components.py:886 +msgid "Cannot specify custom frequency with channel selected." +msgstr "" + +#: dcim/models/device_components.py:892 +msgid "Channel width may be set only on wireless interfaces." +msgstr "" + +#: dcim/models/device_components.py:894 +msgid "Cannot specify custom width with channel selected." +msgstr "" + +#: dcim/models/device_components.py:902 +#, python-brace-format +msgid "" +"The untagged VLAN ({untagged_vlan}) must belong to the same site as the " +"interface's parent device, or it must be global." +msgstr "" + +#: dcim/models/device_components.py:991 +msgid "Mapped position on corresponding rear port" +msgstr "" + +#: dcim/models/device_components.py:1007 +msgid "front port" +msgstr "" + +#: dcim/models/device_components.py:1008 +msgid "front ports" +msgstr "" + +#: dcim/models/device_components.py:1022 +#, python-brace-format +msgid "Rear port ({rear_port}) must belong to the same device" +msgstr "" + +#: dcim/models/device_components.py:1030 +#, python-brace-format +msgid "" +"Invalid rear port position ({rear_port_position}): Rear port {name} has only " +"{positions} positions." +msgstr "" + +#: dcim/models/device_components.py:1060 +msgid "Number of front ports which may be mapped" +msgstr "" + +#: dcim/models/device_components.py:1065 +msgid "rear port" +msgstr "" + +#: dcim/models/device_components.py:1066 +msgid "rear ports" +msgstr "" + +#: dcim/models/device_components.py:1080 +#, python-brace-format +msgid "" +"The number of positions cannot be less than the number of mapped front ports " +"({frontport_count})" +msgstr "" + +#: dcim/models/device_components.py:1104 +msgid "module bay" +msgstr "" + +#: dcim/models/device_components.py:1105 +msgid "module bays" +msgstr "" + +#: dcim/models/device_components.py:1118 +msgid "parent_bay" +msgstr "" + +#: dcim/models/device_components.py:1126 +msgid "device bay" +msgstr "" + +#: dcim/models/device_components.py:1127 +msgid "device bays" +msgstr "" + +#: dcim/models/device_components.py:1137 +#, python-brace-format +msgid "This type of device ({device_type}) does not support device bays." +msgstr "" + +#: dcim/models/device_components.py:1143 +msgid "Cannot install a device into itself." +msgstr "" + +#: dcim/models/device_components.py:1151 +#, python-brace-format +msgid "" +"Cannot install the specified device; device is already installed in {bay}." +msgstr "" + +#: dcim/models/device_components.py:1172 +msgid "inventory item role" +msgstr "" + +#: dcim/models/device_components.py:1173 +msgid "inventory item roles" +msgstr "" + +#: dcim/models/device_components.py:1230 dcim/models/devices.py:595 +#: dcim/models/devices.py:1173 dcim/models/racks.py:113 +msgid "serial number" +msgstr "" + +#: dcim/models/device_components.py:1238 dcim/models/devices.py:603 +#: dcim/models/devices.py:1180 dcim/models/racks.py:120 +msgid "asset tag" +msgstr "" + +#: dcim/models/device_components.py:1239 +msgid "A unique tag used to identify this item" +msgstr "" + +#: dcim/models/device_components.py:1242 +msgid "discovered" +msgstr "" + +#: dcim/models/device_components.py:1244 +msgid "This item was automatically discovered" +msgstr "" + +#: dcim/models/device_components.py:1262 +msgid "inventory item" +msgstr "" + +#: dcim/models/device_components.py:1263 +msgid "inventory items" +msgstr "" + +#: dcim/models/device_components.py:1274 +msgid "Cannot assign self as parent." +msgstr "" + +#: dcim/models/device_components.py:1282 +msgid "Parent inventory item does not belong to the same device." +msgstr "" + +#: dcim/models/device_components.py:1288 +msgid "Cannot move an inventory item with dependent children" +msgstr "" + +#: dcim/models/device_components.py:1296 +msgid "Cannot assign inventory item to component on another device" +msgstr "" + +#: dcim/models/devices.py:54 +msgid "manufacturer" +msgstr "" + +#: dcim/models/devices.py:55 +msgid "manufacturers" +msgstr "" + +#: dcim/models/devices.py:82 dcim/models/devices.py:381 +msgid "model" +msgstr "" + +#: dcim/models/devices.py:95 +msgid "default platform" +msgstr "" + +#: dcim/models/devices.py:98 dcim/models/devices.py:385 +msgid "part number" +msgstr "" + +#: dcim/models/devices.py:101 dcim/models/devices.py:388 +msgid "Discrete part number (optional)" +msgstr "" + +#: dcim/models/devices.py:107 dcim/models/racks.py:137 +msgid "height (U)" +msgstr "" + +#: dcim/models/devices.py:111 +msgid "exclude from utilization" +msgstr "" + +#: dcim/models/devices.py:112 +msgid "Devices of this type are excluded when calculating rack utilization." +msgstr "" + +#: dcim/models/devices.py:116 +msgid "is full depth" +msgstr "" + +#: dcim/models/devices.py:117 +msgid "Device consumes both front and rear rack faces." +msgstr "" + +#: dcim/models/devices.py:123 +msgid "parent/child status" +msgstr "" + +#: dcim/models/devices.py:124 +msgid "" +"Parent devices house child devices in device bays. Leave blank if this " +"device type is neither a parent nor a child." +msgstr "" + +#: dcim/models/devices.py:128 dcim/models/devices.py:647 +msgid "airflow" +msgstr "" + +#: dcim/models/devices.py:204 +msgid "device type" +msgstr "" + +#: dcim/models/devices.py:205 +msgid "device types" +msgstr "" + +#: dcim/models/devices.py:289 +msgid "U height must be in increments of 0.5 rack units." +msgstr "" + +#: dcim/models/devices.py:306 +#, python-brace-format +msgid "" +"Device {device} in rack {rack} does not have sufficient space to accommodate " +"a height of {height}U" +msgstr "" + +#: dcim/models/devices.py:321 +#, python-brace-format +msgid "" +"Unable to set 0U height: Found {racked_instance_count} " +"instances already mounted within racks." +msgstr "" + +#: dcim/models/devices.py:330 +msgid "" +"Must delete all device bay templates associated with this device before " +"declassifying it as a parent device." +msgstr "" + +#: dcim/models/devices.py:336 +msgid "Child device types must be 0U." +msgstr "" + +#: dcim/models/devices.py:404 +msgid "module type" +msgstr "" + +#: dcim/models/devices.py:405 +msgid "module types" +msgstr "" + +#: dcim/models/devices.py:473 +msgid "Virtual machines may be assigned to this role" +msgstr "" + +#: dcim/models/devices.py:485 +msgid "device role" +msgstr "" + +#: dcim/models/devices.py:486 +msgid "device roles" +msgstr "" + +#: dcim/models/devices.py:503 +msgid "Optionally limit this platform to devices of a certain manufacturer" +msgstr "" + +#: dcim/models/devices.py:515 +msgid "platform" +msgstr "" + +#: dcim/models/devices.py:516 +msgid "platforms" +msgstr "" + +#: dcim/models/devices.py:564 +msgid "The function this device serves" +msgstr "" + +#: dcim/models/devices.py:596 +msgid "Chassis serial number, assigned by the manufacturer" +msgstr "" + +#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +msgid "A unique tag used to identify this device" +msgstr "" + +#: dcim/models/devices.py:631 +msgid "position (U)" +msgstr "" + +#: dcim/models/devices.py:638 +msgid "rack face" +msgstr "" + +#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: virtualization/models/virtualmachines.py:98 +msgid "primary IPv4" +msgstr "" + +#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: virtualization/models/virtualmachines.py:106 +msgid "primary IPv6" +msgstr "" + +#: dcim/models/devices.py:674 +msgid "out-of-band IP" +msgstr "" + +#: dcim/models/devices.py:691 +msgid "VC position" +msgstr "" + +#: dcim/models/devices.py:695 +msgid "Virtual chassis position" +msgstr "" + +#: dcim/models/devices.py:698 +msgid "VC priority" +msgstr "" + +#: dcim/models/devices.py:702 +msgid "Virtual chassis master election priority" +msgstr "" + +#: dcim/models/devices.py:705 dcim/models/sites.py:207 +msgid "latitude" +msgstr "" + +#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/sites.py:212 dcim/models/sites.py:220 +msgid "GPS coordinate in decimal format (xx.yyyyyy)" +msgstr "" + +#: dcim/models/devices.py:713 dcim/models/sites.py:215 +msgid "longitude" +msgstr "" + +#: dcim/models/devices.py:786 +msgid "Device name must be unique per site." +msgstr "" + +#: dcim/models/devices.py:797 ipam/models/services.py:75 +msgid "device" +msgstr "" + +#: dcim/models/devices.py:798 +msgid "devices" +msgstr "" + +#: dcim/models/devices.py:838 +#, python-brace-format +msgid "Rack {rack} does not belong to site {site}." +msgstr "" + +#: dcim/models/devices.py:843 +#, python-brace-format +msgid "Location {location} does not belong to site {site}." +msgstr "" + +#: dcim/models/devices.py:849 +#, python-brace-format +msgid "Rack {rack} does not belong to location {location}." +msgstr "" + +#: dcim/models/devices.py:856 +msgid "Cannot select a rack face without assigning a rack." +msgstr "" + +#: dcim/models/devices.py:860 +msgid "Cannot select a rack position without assigning a rack." +msgstr "" + +#: dcim/models/devices.py:866 +msgid "Position must be in increments of 0.5 rack units." +msgstr "" + +#: dcim/models/devices.py:870 +msgid "Must specify rack face when defining rack position." +msgstr "" + +#: dcim/models/devices.py:878 +#, python-brace-format +msgid "A U0 device type ({device_type}) cannot be assigned to a rack position." +msgstr "" + +#: dcim/models/devices.py:889 +msgid "" +"Child device types cannot be assigned to a rack face. This is an attribute " +"of the parent device." +msgstr "" + +#: dcim/models/devices.py:896 +msgid "" +"Child device types cannot be assigned to a rack position. This is an " +"attribute of the parent device." +msgstr "" + +#: dcim/models/devices.py:910 +#, python-brace-format +msgid "" +"U{position} is already occupied or does not have sufficient space to " +"accommodate this device type: {device_type} ({u_height}U)" +msgstr "" + +#: dcim/models/devices.py:925 +#, python-brace-format +msgid "{ip} is not an IPv4 address." +msgstr "" + +#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#, python-brace-format +msgid "The specified IP address ({ip}) is not assigned to this device." +msgstr "" + +#: dcim/models/devices.py:940 +#, python-brace-format +msgid "{ip} is not an IPv6 address." +msgstr "" + +#: dcim/models/devices.py:967 +#, python-brace-format +msgid "" +"The assigned platform is limited to {platform_manufacturer} device types, " +"but this device's type belongs to {devicetype_manufacturer}." +msgstr "" + +#: dcim/models/devices.py:978 +#, python-brace-format +msgid "The assigned cluster belongs to a different site ({site})" +msgstr "" + +#: dcim/models/devices.py:986 +msgid "A device assigned to a virtual chassis must have its position defined." +msgstr "" + +#: dcim/models/devices.py:1188 +msgid "module" +msgstr "" + +#: dcim/models/devices.py:1189 +msgid "modules" +msgstr "" + +#: dcim/models/devices.py:1205 +#, python-brace-format +msgid "" +"Module must be installed within a module bay belonging to the assigned " +"device ({device})." +msgstr "" + +#: dcim/models/devices.py:1309 +msgid "domain" +msgstr "" + +#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +msgid "virtual chassis" +msgstr "" + +#: dcim/models/devices.py:1338 +#, python-brace-format +msgid "The selected master ({master}) is not assigned to this virtual chassis." +msgstr "" + +#: dcim/models/devices.py:1354 +#, python-brace-format +msgid "" +"Unable to delete virtual chassis {self}. There are member interfaces which " +"form a cross-chassis LAG interfaces." +msgstr "" + +#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +msgid "identifier" +msgstr "" + +#: dcim/models/devices.py:1380 +msgid "Numeric identifier unique to the parent device" +msgstr "" + +#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: extras/models/models.py:724 netbox/models/__init__.py:114 +msgid "comments" +msgstr "" + +#: dcim/models/devices.py:1424 +msgid "virtual device context" +msgstr "" + +#: dcim/models/devices.py:1425 +msgid "virtual device contexts" +msgstr "" + +#: dcim/models/devices.py:1457 +#, python-brace-format +msgid "{ip} is not an IPv{family} address." +msgstr "" + +#: dcim/models/devices.py:1463 +msgid "Primary IP address must belong to an interface on the assigned device." +msgstr "" + +#: dcim/models/mixins.py:15 extras/models/configs.py:41 +#: extras/models/models.py:343 extras/models/models.py:552 +#: extras/models/search.py:50 ipam/models/ip.py:193 +msgid "weight" +msgstr "" + +#: dcim/models/mixins.py:22 +msgid "weight unit" +msgstr "" + +#: dcim/models/mixins.py:51 +msgid "Must specify a unit when setting a weight" +msgstr "" + +#: dcim/models/power.py:55 +msgid "power panel" +msgstr "" + +#: dcim/models/power.py:56 +msgid "power panels" +msgstr "" + +#: dcim/models/power.py:70 +#, python-brace-format +msgid "" +"Location {location} ({location_site}) is in a different site than {site}" +msgstr "" + +#: dcim/models/power.py:107 +msgid "supply" +msgstr "" + +#: dcim/models/power.py:113 +msgid "phase" +msgstr "" + +#: dcim/models/power.py:119 +msgid "voltage" +msgstr "" + +#: dcim/models/power.py:124 +msgid "amperage" +msgstr "" + +#: dcim/models/power.py:129 +msgid "max utilization" +msgstr "" + +#: dcim/models/power.py:132 +msgid "Maximum permissible draw (percentage)" +msgstr "" + +#: dcim/models/power.py:135 +msgid "available power" +msgstr "" + +#: dcim/models/power.py:163 +msgid "power feed" +msgstr "" + +#: dcim/models/power.py:164 +msgid "power feeds" +msgstr "" + +#: dcim/models/power.py:178 +#, python-brace-format +msgid "" +"Rack {rack} ({rack_site}) and power panel {powerpanel} ({powerpanel_site}) " +"are in different sites." +msgstr "" + +#: dcim/models/power.py:189 +msgid "Voltage cannot be negative for AC supply" +msgstr "" + +#: dcim/models/racks.py:49 +msgid "rack role" +msgstr "" + +#: dcim/models/racks.py:50 +msgid "rack roles" +msgstr "" + +#: dcim/models/racks.py:74 +msgid "facility ID" +msgstr "" + +#: dcim/models/racks.py:75 +msgid "Locally-assigned identifier" +msgstr "" + +#: dcim/models/racks.py:108 ipam/forms/bulk_import.py:200 +#: ipam/forms/bulk_import.py:265 ipam/forms/bulk_import.py:300 +#: ipam/forms/bulk_import.py:467 virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "" + +#: dcim/models/racks.py:121 +msgid "A unique tag used to identify this rack" +msgstr "" + +#: dcim/models/racks.py:132 +msgid "width" +msgstr "" + +#: dcim/models/racks.py:133 +msgid "Rail-to-rail width" +msgstr "" + +#: dcim/models/racks.py:139 +msgid "Height in rack units" +msgstr "" + +#: dcim/models/racks.py:143 +msgid "starting unit" +msgstr "" + +#: dcim/models/racks.py:145 +msgid "Starting unit for rack" +msgstr "" + +#: dcim/models/racks.py:149 +msgid "descending units" +msgstr "" + +#: dcim/models/racks.py:150 +msgid "Units are numbered top-to-bottom" +msgstr "" + +#: dcim/models/racks.py:153 +msgid "outer width" +msgstr "" + +#: dcim/models/racks.py:156 +msgid "Outer dimension of rack (width)" +msgstr "" + +#: dcim/models/racks.py:159 +msgid "outer depth" +msgstr "" + +#: dcim/models/racks.py:162 +msgid "Outer dimension of rack (depth)" +msgstr "" + +#: dcim/models/racks.py:165 +msgid "outer unit" +msgstr "" + +#: dcim/models/racks.py:171 +msgid "max weight" +msgstr "" + +#: dcim/models/racks.py:174 +msgid "Maximum load capacity for the rack" +msgstr "" + +#: dcim/models/racks.py:182 +msgid "mounting depth" +msgstr "" + +#: dcim/models/racks.py:186 +msgid "" +"Maximum depth of a mounted device, in millimeters. For four-post racks, this " +"is the distance between the front and rear rails." +msgstr "" + +#: dcim/models/racks.py:220 +msgid "rack" +msgstr "" + +#: dcim/models/racks.py:221 +msgid "racks" +msgstr "" + +#: dcim/models/racks.py:236 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "" + +#: dcim/models/racks.py:240 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "" + +#: dcim/models/racks.py:244 +msgid "Must specify a unit when setting a maximum weight" +msgstr "" + +#: dcim/models/racks.py:254 +#, python-brace-format +msgid "" +"Rack must be at least {min_height}U tall to house currently installed " +"devices." +msgstr "" + +#: dcim/models/racks.py:261 +#, python-brace-format +msgid "" +"Rack unit numbering must begin at {position} or less to house currently " +"installed devices." +msgstr "" + +#: dcim/models/racks.py:269 +#, python-brace-format +msgid "Location must be from the same site, {site}." +msgstr "" + +#: dcim/models/racks.py:522 +msgid "units" +msgstr "" + +#: dcim/models/racks.py:548 +msgid "rack reservation" +msgstr "" + +#: dcim/models/racks.py:549 +msgid "rack reservations" +msgstr "" + +#: dcim/models/racks.py:566 +#, python-brace-format +msgid "Invalid unit(s) for {height}U rack: {unit_list}" +msgstr "" + +#: dcim/models/racks.py:579 +#, python-brace-format +msgid "The following units have already been reserved: {unit_list}" +msgstr "" + +#: dcim/models/sites.py:49 +msgid "A top-level region with this name already exists." +msgstr "" + +#: dcim/models/sites.py:59 +msgid "A top-level region with this slug already exists." +msgstr "" + +#: dcim/models/sites.py:62 +msgid "region" +msgstr "" + +#: dcim/models/sites.py:63 +msgid "regions" +msgstr "" + +#: dcim/models/sites.py:102 +msgid "A top-level site group with this name already exists." +msgstr "" + +#: dcim/models/sites.py:112 +msgid "A top-level site group with this slug already exists." +msgstr "" + +#: dcim/models/sites.py:115 +msgid "site group" +msgstr "" + +#: dcim/models/sites.py:116 +msgid "site groups" +msgstr "" + +#: dcim/models/sites.py:141 +msgid "Full name of the site" +msgstr "" + +#: dcim/models/sites.py:181 +msgid "facility" +msgstr "" + +#: dcim/models/sites.py:184 +msgid "Local facility ID or description" +msgstr "" + +#: dcim/models/sites.py:195 +msgid "physical address" +msgstr "" + +#: dcim/models/sites.py:198 +msgid "Physical location of the building" +msgstr "" + +#: dcim/models/sites.py:201 +msgid "shipping address" +msgstr "" + +#: dcim/models/sites.py:204 +msgid "If different from the physical address" +msgstr "" + +#: dcim/models/sites.py:238 +msgid "site" +msgstr "" + +#: dcim/models/sites.py:239 +msgid "sites" +msgstr "" + +#: dcim/models/sites.py:303 +msgid "A location with this name already exists within the specified site." +msgstr "" + +#: dcim/models/sites.py:313 +msgid "A location with this slug already exists within the specified site." +msgstr "" + +#: dcim/models/sites.py:316 +msgid "location" +msgstr "" + +#: dcim/models/sites.py:317 +msgid "locations" +msgstr "" + +#: dcim/models/sites.py:331 +#, python-brace-format +msgid "Parent location ({parent}) must belong to the same site ({site})." +msgstr "" + +#: dcim/tables/cables.py:54 +msgid "Termination A" +msgstr "" + +#: dcim/tables/cables.py:59 +msgid "Termination B" +msgstr "" + +#: dcim/tables/cables.py:65 wireless/tables/wirelesslink.py:22 +msgid "Device A" +msgstr "" + +#: dcim/tables/cables.py:71 wireless/tables/wirelesslink.py:31 +msgid "Device B" +msgstr "" + +#: dcim/tables/cables.py:77 +msgid "Location A" +msgstr "" + +#: dcim/tables/cables.py:83 +msgid "Location B" +msgstr "" + +#: dcim/tables/cables.py:89 +msgid "Rack A" +msgstr "" + +#: dcim/tables/cables.py:95 +msgid "Rack B" +msgstr "" + +#: dcim/tables/cables.py:101 +msgid "Site A" +msgstr "" + +#: dcim/tables/cables.py:107 +msgid "Site B" +msgstr "" + +#: dcim/tables/connections.py:27 templates/dcim/consoleport.html:18 +#: templates/dcim/consoleserverport.html:75 templates/dcim/frontport.html:119 +#: templates/dcim/inventoryitem_edit.html:39 +msgid "Console Port" +msgstr "" + +#: dcim/tables/connections.py:31 dcim/tables/connections.py:50 +#: dcim/tables/connections.py:71 +#: templates/dcim/inc/connection_endpoints.html:16 +msgid "Reachable" +msgstr "" + +#: dcim/tables/connections.py:46 dcim/tables/devices.py:524 +#: templates/dcim/inventoryitem_edit.html:64 templates/dcim/poweroutlet.html:47 +#: templates/dcim/powerport.html:18 +msgid "Power Port" +msgstr "" + +#: dcim/tables/devices.py:94 dcim/tables/devices.py:139 dcim/tables/racks.py:81 +#: dcim/tables/sites.py:143 netbox/navigation/menu.py:57 +#: netbox/navigation/menu.py:61 netbox/navigation/menu.py:63 +#: virtualization/forms/model_forms.py:125 virtualization/tables/clusters.py:83 +#: virtualization/views.py:211 +msgid "Devices" +msgstr "" + +#: dcim/tables/devices.py:99 dcim/tables/devices.py:144 +#: virtualization/tables/clusters.py:88 +msgid "VMs" +msgstr "" + +#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: extras/forms/model_forms.py:506 templates/dcim/device.html:114 +#: templates/dcim/device/render_config.html:11 +#: templates/dcim/device/render_config.html:15 +#: templates/dcim/devicerole.html:47 templates/dcim/platform.html:44 +#: templates/extras/configtemplate.html:10 +#: templates/virtualization/virtualmachine.html:47 +#: templates/virtualization/virtualmachine/render_config.html:11 +#: templates/virtualization/virtualmachine/render_config.html:15 +#: virtualization/tables/virtualmachines.py:93 +msgid "Config Template" +msgstr "" + +#: dcim/tables/devices.py:216 dcim/tables/devices.py:1069 +#: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 +#: ipam/tables/ip.py:352 ipam/tables/ip.py:418 ipam/tables/ip.py:441 +#: templates/ipam/ipaddress.html:12 templates/ipam/ipaddress_edit.html:14 +#: virtualization/tables/virtualmachines.py:81 +msgid "IP Address" +msgstr "" + +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1073 +#: virtualization/tables/virtualmachines.py:72 +msgid "IPv4 Address" +msgstr "" + +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1077 +#: virtualization/tables/virtualmachines.py:76 +msgid "IPv6 Address" +msgstr "" + +#: dcim/tables/devices.py:239 +msgid "VC Position" +msgstr "" + +#: dcim/tables/devices.py:242 +msgid "VC Priority" +msgstr "" + +#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: templates/dcim/devicebay_populate.html:16 +msgid "Parent Device" +msgstr "" + +#: dcim/tables/devices.py:254 +msgid "Position (Device Bay)" +msgstr "" + +#: dcim/tables/devices.py:263 +msgid "Console ports" +msgstr "" + +#: dcim/tables/devices.py:266 +msgid "Console server ports" +msgstr "" + +#: dcim/tables/devices.py:269 +msgid "Power ports" +msgstr "" + +#: dcim/tables/devices.py:272 +msgid "Power outlets" +msgstr "" + +#: dcim/tables/devices.py:275 dcim/tables/devices.py:1082 +#: dcim/tables/devicetypes.py:125 dcim/views.py:1002 dcim/views.py:1241 +#: dcim/views.py:1927 netbox/navigation/menu.py:82 +#: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 +#: templates/dcim/device_list.html:43 templates/dcim/devicetype/base.html:34 +#: templates/dcim/module.html:34 templates/dcim/moduletype/base.html:34 +#: templates/dcim/virtualdevicecontext.html:64 +#: templates/dcim/virtualdevicecontext.html:85 +#: templates/virtualization/virtualmachine/base.html:27 +#: templates/virtualization/virtualmachine_list.html:14 +#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: wireless/tables/wirelesslan.py:55 +msgid "Interfaces" +msgstr "" + +#: dcim/tables/devices.py:278 +msgid "Front ports" +msgstr "" + +#: dcim/tables/devices.py:284 +msgid "Device bays" +msgstr "" + +#: dcim/tables/devices.py:287 +msgid "Module bays" +msgstr "" + +#: dcim/tables/devices.py:290 +msgid "Inventory items" +msgstr "" + +#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: templates/dcim/modulebay.html:17 +msgid "Module Bay" +msgstr "" + +#: dcim/tables/devices.py:350 +msgid "Cable Color" +msgstr "" + +#: dcim/tables/devices.py:356 +msgid "Link Peers" +msgstr "" + +#: dcim/tables/devices.py:359 +msgid "Mark Connected" +msgstr "" + +#: dcim/tables/devices.py:470 +msgid "Maximum draw (W)" +msgstr "" + +#: dcim/tables/devices.py:473 +msgid "Allocated draw (W)" +msgstr "" + +#: dcim/tables/devices.py:573 ipam/forms/model_forms.py:707 +#: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:671 +#: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 +#: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 +#: templates/ipam/service.html:43 templates/virtualization/vminterface.html:88 +#: vpn/tables/tunnels.py:94 +msgid "IP Addresses" +msgstr "" + +#: dcim/tables/devices.py:579 netbox/navigation/menu.py:190 +#: templates/ipam/inc/panels/fhrp_groups.html:5 +msgid "FHRP Groups" +msgstr "" + +#: dcim/tables/devices.py:591 templates/dcim/interface.html:90 +#: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 +#: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 +#: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 +#: vpn/forms/filtersets.py:81 vpn/forms/model_forms.py:59 +#: vpn/forms/model_forms.py:144 vpn/tables/tunnels.py:74 +msgid "Tunnel" +msgstr "" + +#: dcim/tables/devices.py:616 dcim/tables/devicetypes.py:224 +#: templates/dcim/interface.html:66 +msgid "Management Only" +msgstr "" + +#: dcim/tables/devices.py:624 +msgid "Wireless link" +msgstr "" + +#: dcim/tables/devices.py:634 +msgid "VDCs" +msgstr "" + +#: dcim/tables/devices.py:642 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1077 dcim/views.py:2020 +#: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 +#: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 +#: templates/dcim/inc/panels/inventory_items.html:5 +#: templates/dcim/inventoryitemrole.html:33 +msgid "Inventory Items" +msgstr "" + +#: dcim/tables/devices.py:723 +#: templates/circuits/inc/circuit_termination.html:80 +#: templates/dcim/consoleport.html:81 templates/dcim/consoleserverport.html:81 +#: templates/dcim/frontport.html:53 templates/dcim/frontport.html:125 +#: templates/dcim/interface.html:196 templates/dcim/inventoryitem_edit.html:69 +#: templates/dcim/rearport.html:18 templates/dcim/rearport.html:115 +msgid "Rear Port" +msgstr "" + +#: dcim/tables/devices.py:888 templates/dcim/modulebay.html:51 +msgid "Installed Module" +msgstr "" + +#: dcim/tables/devices.py:891 +msgid "Module Serial" +msgstr "" + +#: dcim/tables/devices.py:895 +msgid "Module Asset Tag" +msgstr "" + +#: dcim/tables/devices.py:904 +msgid "Module Status" +msgstr "" + +#: dcim/tables/devices.py:946 dcim/tables/devicetypes.py:308 +#: templates/dcim/inventoryitem.html:41 +msgid "Component" +msgstr "" + +#: dcim/tables/devices.py:1001 +msgid "Items" +msgstr "" + +#: dcim/tables/devicetypes.py:38 netbox/navigation/menu.py:72 +#: netbox/navigation/menu.py:74 +msgid "Device Types" +msgstr "" + +#: dcim/tables/devicetypes.py:43 netbox/navigation/menu.py:75 +msgid "Module Types" +msgstr "" + +#: dcim/tables/devicetypes.py:53 extras/forms/filtersets.py:379 +#: extras/forms/model_forms.py:414 netbox/navigation/menu.py:66 +msgid "Platforms" +msgstr "" + +#: dcim/tables/devicetypes.py:85 templates/dcim/devicetype.html:32 +msgid "Default Platform" +msgstr "" + +#: dcim/tables/devicetypes.py:89 templates/dcim/devicetype.html:48 +msgid "Full Depth" +msgstr "" + +#: dcim/tables/devicetypes.py:98 +msgid "U Height" +msgstr "" + +#: dcim/tables/devicetypes.py:110 dcim/tables/modules.py:26 +msgid "Instances" +msgstr "" + +#: dcim/tables/devicetypes.py:113 dcim/views.py:942 dcim/views.py:1181 +#: dcim/views.py:1867 netbox/navigation/menu.py:85 +#: templates/dcim/device/base.html:25 templates/dcim/device_list.html:15 +#: templates/dcim/devicetype/base.html:22 templates/dcim/module.html:22 +#: templates/dcim/moduletype/base.html:22 +msgid "Console Ports" +msgstr "" + +#: dcim/tables/devicetypes.py:116 dcim/views.py:957 dcim/views.py:1196 +#: dcim/views.py:1882 netbox/navigation/menu.py:86 +#: templates/dcim/device/base.html:28 templates/dcim/device_list.html:22 +#: templates/dcim/devicetype/base.html:25 templates/dcim/module.html:25 +#: templates/dcim/moduletype/base.html:25 +msgid "Console Server Ports" +msgstr "" + +#: dcim/tables/devicetypes.py:119 dcim/views.py:972 dcim/views.py:1211 +#: dcim/views.py:1897 netbox/navigation/menu.py:87 +#: templates/dcim/device/base.html:31 templates/dcim/device_list.html:29 +#: templates/dcim/devicetype/base.html:28 templates/dcim/module.html:28 +#: templates/dcim/moduletype/base.html:28 +msgid "Power Ports" +msgstr "" + +#: dcim/tables/devicetypes.py:122 dcim/views.py:987 dcim/views.py:1226 +#: dcim/views.py:1912 netbox/navigation/menu.py:88 +#: templates/dcim/device/base.html:34 templates/dcim/device_list.html:36 +#: templates/dcim/devicetype/base.html:31 templates/dcim/module.html:31 +#: templates/dcim/moduletype/base.html:31 +msgid "Power Outlets" +msgstr "" + +#: dcim/tables/devicetypes.py:128 dcim/views.py:1017 dcim/views.py:1256 +#: dcim/views.py:1948 netbox/navigation/menu.py:83 +#: templates/dcim/device/base.html:40 templates/dcim/devicetype/base.html:37 +#: templates/dcim/module.html:37 templates/dcim/moduletype/base.html:37 +msgid "Front Ports" +msgstr "" + +#: dcim/tables/devicetypes.py:131 dcim/views.py:1032 dcim/views.py:1271 +#: dcim/views.py:1963 netbox/navigation/menu.py:84 +#: templates/dcim/device/base.html:43 templates/dcim/device_list.html:50 +#: templates/dcim/devicetype/base.html:40 templates/dcim/module.html:40 +#: templates/dcim/moduletype/base.html:40 +msgid "Rear Ports" +msgstr "" + +#: dcim/tables/devicetypes.py:134 dcim/views.py:1062 dcim/views.py:2001 +#: netbox/navigation/menu.py:90 templates/dcim/device/base.html:49 +#: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46 +msgid "Device Bays" +msgstr "" + +#: dcim/tables/devicetypes.py:137 dcim/views.py:1047 dcim/views.py:1982 +#: netbox/navigation/menu.py:89 templates/dcim/device/base.html:46 +#: templates/dcim/device_list.html:64 templates/dcim/devicetype/base.html:43 +msgid "Module Bays" +msgstr "" + +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 +#: templates/core/configrevision.html:59 templates/dcim/powerpanel.html:53 +msgid "Power Feeds" +msgstr "" + +#: dcim/tables/power.py:80 templates/dcim/powerfeed.html:106 +msgid "Max Utilization" +msgstr "" + +#: dcim/tables/power.py:84 +msgid "Available Power (VA)" +msgstr "" + +#: dcim/tables/racks.py:29 dcim/tables/sites.py:138 +#: netbox/navigation/menu.py:25 netbox/navigation/menu.py:27 +msgid "Racks" +msgstr "" + +#: dcim/tables/racks.py:73 templates/dcim/device.html:323 +#: templates/dcim/rack.html:95 +msgid "Height" +msgstr "" + +#: dcim/tables/racks.py:85 +msgid "Space" +msgstr "" + +#: dcim/tables/racks.py:96 templates/dcim/rack.html:105 +msgid "Outer Width" +msgstr "" + +#: dcim/tables/racks.py:100 templates/dcim/rack.html:115 +msgid "Outer Depth" +msgstr "" + +#: dcim/tables/racks.py:108 +msgid "Max Weight" +msgstr "" + +#: dcim/tables/sites.py:30 dcim/tables/sites.py:57 +#: extras/forms/filtersets.py:359 extras/forms/model_forms.py:394 +#: ipam/forms/bulk_edit.py:128 ipam/forms/model_forms.py:152 +#: ipam/tables/asn.py:66 netbox/navigation/menu.py:16 +#: netbox/navigation/menu.py:18 +msgid "Sites" +msgstr "" + +#: dcim/views.py:131 +#, python-brace-format +msgid "Disconnected {count} {type}" +msgstr "" + +#: dcim/views.py:692 netbox/navigation/menu.py:29 +msgid "Reservations" +msgstr "" + +#: dcim/views.py:711 +msgid "Non-Racked Devices" +msgstr "" + +#: dcim/views.py:2033 extras/forms/model_forms.py:454 +#: templates/extras/configcontext.html:10 +#: virtualization/forms/model_forms.py:228 virtualization/views.py:408 +msgid "Config Context" +msgstr "" + +#: dcim/views.py:2043 virtualization/views.py:418 +msgid "Render Config" +msgstr "" + +#: dcim/views.py:2971 ipam/tables/ip.py:233 +msgid "Children" +msgstr "" + +#: extras/choices.py:27 extras/forms/misc.py:14 +msgid "Text" +msgstr "" + +#: extras/choices.py:28 +msgid "Text (long)" +msgstr "" + +#: extras/choices.py:29 +msgid "Integer" +msgstr "" + +#: extras/choices.py:30 +msgid "Decimal" +msgstr "" + +#: extras/choices.py:31 +msgid "Boolean (true/false)" +msgstr "" + +#: extras/choices.py:32 +msgid "Date" +msgstr "" + +#: extras/choices.py:33 +msgid "Date & time" +msgstr "" + +#: extras/choices.py:35 +msgid "JSON" +msgstr "" + +#: extras/choices.py:36 +msgid "Selection" +msgstr "" + +#: extras/choices.py:37 +msgid "Multiple selection" +msgstr "" + +#: extras/choices.py:39 +msgid "Multiple objects" +msgstr "" + +#: extras/choices.py:50 templates/extras/customfield.html:69 vpn/choices.py:20 +#: wireless/choices.py:27 +msgid "Disabled" +msgstr "" + +#: extras/choices.py:51 +msgid "Loose" +msgstr "" + +#: extras/choices.py:52 +msgid "Exact" +msgstr "" + +#: extras/choices.py:63 +msgid "Always" +msgstr "" + +#: extras/choices.py:64 +msgid "If set" +msgstr "" + +#: extras/choices.py:65 extras/choices.py:78 +msgid "Hidden" +msgstr "" + +#: extras/choices.py:76 +msgid "Yes" +msgstr "" + +#: extras/choices.py:77 +msgid "No" +msgstr "" + +#: extras/choices.py:105 templates/tenancy/contact.html:58 +#: tenancy/forms/bulk_edit.py:117 wireless/forms/model_forms.py:159 +msgid "Link" +msgstr "" + +#: extras/choices.py:119 +msgid "Newest" +msgstr "" + +#: extras/choices.py:120 +msgid "Oldest" +msgstr "" + +#: extras/choices.py:136 templates/generic/object.html:51 +msgid "Updated" +msgstr "" + +#: extras/choices.py:137 +msgid "Deleted" +msgstr "" + +#: extras/choices.py:154 extras/choices.py:176 +msgid "Info" +msgstr "" + +#: extras/choices.py:155 extras/choices.py:175 +msgid "Success" +msgstr "" + +#: extras/choices.py:156 extras/choices.py:177 +msgid "Warning" +msgstr "" + +#: extras/choices.py:157 +msgid "Danger" +msgstr "" + +#: extras/choices.py:174 utilities/choices.py:190 +msgid "Default" +msgstr "" + +#: extras/choices.py:178 +msgid "Failure" +msgstr "" + +#: extras/choices.py:185 +msgid "Hourly" +msgstr "" + +#: extras/choices.py:186 +msgid "12 hours" +msgstr "" + +#: extras/choices.py:187 +msgid "Daily" +msgstr "" + +#: extras/choices.py:188 +msgid "Weekly" +msgstr "" + +#: extras/choices.py:189 +msgid "30 days" +msgstr "" + +#: extras/choices.py:254 extras/tables/tables.py:287 +#: templates/dcim/virtualchassis_edit.html:108 +#: templates/extras/eventrule.html:51 +#: templates/generic/bulk_add_component.html:56 +#: templates/generic/object_edit.html:29 templates/generic/object_edit.html:70 +#: templates/ipam/inc/ipaddress_edit_header.html:10 +msgid "Create" +msgstr "" + +#: extras/choices.py:255 extras/tables/tables.py:290 +#: templates/extras/eventrule.html:55 +msgid "Update" +msgstr "" + +#: extras/choices.py:256 extras/tables/tables.py:293 +#: templates/circuits/inc/circuit_termination.html:22 +#: templates/dcim/devicetype/component_templates.html:24 +#: templates/dcim/inc/panels/inventory_items.html:29 +#: templates/dcim/moduletype/component_templates.html:24 +#: templates/dcim/powerpanel.html:71 templates/extras/eventrule.html:59 +#: templates/extras/report_list.html:34 templates/extras/script_list.html:33 +#: templates/generic/bulk_delete.html:18 templates/generic/bulk_delete.html:45 +#: templates/generic/object_delete.html:15 templates/htmx/delete_form.html:57 +#: templates/ipam/inc/panels/fhrp_groups.html:35 +#: templates/users/objectpermission.html:49 +#: utilities/templates/buttons/delete.html:9 +msgid "Delete" +msgstr "" + +#: extras/choices.py:280 utilities/choices.py:143 utilities/choices.py:191 +msgid "Blue" +msgstr "" + +#: extras/choices.py:281 utilities/choices.py:142 utilities/choices.py:192 +msgid "Indigo" +msgstr "" + +#: extras/choices.py:282 utilities/choices.py:140 utilities/choices.py:193 +msgid "Purple" +msgstr "" + +#: extras/choices.py:283 utilities/choices.py:137 utilities/choices.py:194 +msgid "Pink" +msgstr "" + +#: extras/choices.py:284 utilities/choices.py:136 utilities/choices.py:195 +msgid "Red" +msgstr "" + +#: extras/choices.py:285 utilities/choices.py:154 utilities/choices.py:196 +msgid "Orange" +msgstr "" + +#: extras/choices.py:286 utilities/choices.py:152 utilities/choices.py:197 +msgid "Yellow" +msgstr "" + +#: extras/choices.py:287 utilities/choices.py:149 utilities/choices.py:198 +msgid "Green" +msgstr "" + +#: extras/choices.py:288 utilities/choices.py:146 utilities/choices.py:199 +msgid "Teal" +msgstr "" + +#: extras/choices.py:289 utilities/choices.py:145 utilities/choices.py:200 +msgid "Cyan" +msgstr "" + +#: extras/choices.py:290 utilities/choices.py:201 +msgid "Gray" +msgstr "" + +#: extras/choices.py:291 utilities/choices.py:160 utilities/choices.py:202 +msgid "Black" +msgstr "" + +#: extras/choices.py:292 utilities/choices.py:161 utilities/choices.py:203 +msgid "White" +msgstr "" + +#: extras/choices.py:306 extras/forms/model_forms.py:233 +#: extras/forms/model_forms.py:321 templates/extras/webhook.html:11 +msgid "Webhook" +msgstr "" + +#: extras/choices.py:307 templates/extras/script/base.html:29 +msgid "Script" +msgstr "" + +#: extras/dashboard/forms.py:38 +msgid "Widget type" +msgstr "" + +#: extras/dashboard/widgets.py:148 +msgid "Note" +msgstr "" + +#: extras/dashboard/widgets.py:149 +msgid "Display some arbitrary custom content. Markdown is supported." +msgstr "" + +#: extras/dashboard/widgets.py:162 +msgid "Object Counts" +msgstr "" + +#: extras/dashboard/widgets.py:163 +msgid "" +"Display a set of NetBox models and the number of objects created for each " +"type." +msgstr "" + +#: extras/dashboard/widgets.py:173 +msgid "Filters to apply when counting the number of objects" +msgstr "" + +#: extras/dashboard/widgets.py:209 +msgid "Object List" +msgstr "" + +#: extras/dashboard/widgets.py:210 +msgid "Display an arbitrary list of objects." +msgstr "" + +#: extras/dashboard/widgets.py:223 +msgid "The default number of objects to display" +msgstr "" + +#: extras/dashboard/widgets.py:270 +msgid "RSS Feed" +msgstr "" + +#: extras/dashboard/widgets.py:275 +msgid "Embed an RSS feed from an external website." +msgstr "" + +#: extras/dashboard/widgets.py:282 +msgid "Feed URL" +msgstr "" + +#: extras/dashboard/widgets.py:287 +msgid "The maximum number of objects to display" +msgstr "" + +#: extras/dashboard/widgets.py:292 +msgid "How long to stored the cached content (in seconds)" +msgstr "" + +#: extras/dashboard/widgets.py:344 templates/account/base.html:10 +#: templates/account/bookmarks.html:7 templates/inc/profile_button.html:29 +msgid "Bookmarks" +msgstr "" + +#: extras/dashboard/widgets.py:348 +msgid "Show your personal bookmarks" +msgstr "" + +#: extras/filtersets.py:207 extras/filtersets.py:542 extras/filtersets.py:570 +msgid "Data file (ID)" +msgstr "" + +#: extras/filtersets.py:479 virtualization/forms/filtersets.py:114 +msgid "Cluster type" +msgstr "" + +#: extras/filtersets.py:485 virtualization/filtersets.py:95 +#: virtualization/filtersets.py:146 +msgid "Cluster type (slug)" +msgstr "" + +#: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 +#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +msgid "Cluster group" +msgstr "" + +#: extras/filtersets.py:496 virtualization/filtersets.py:135 +msgid "Cluster group (slug)" +msgstr "" + +#: extras/filtersets.py:506 tenancy/forms/forms.py:16 tenancy/forms/forms.py:39 +msgid "Tenant group" +msgstr "" + +#: extras/filtersets.py:512 tenancy/filtersets.py:163 tenancy/filtersets.py:183 +msgid "Tenant group (slug)" +msgstr "" + +#: extras/filtersets.py:528 templates/extras/tag.html:12 +msgid "Tag" +msgstr "" + +#: extras/filtersets.py:534 +msgid "Tag (slug)" +msgstr "" + +#: extras/filtersets.py:594 extras/forms/filtersets.py:438 +msgid "Has local config context data" +msgstr "" + +#: extras/filtersets.py:619 +msgid "User name" +msgstr "" + +#: extras/forms/bulk_edit.py:32 extras/forms/filtersets.py:56 +msgid "Group name" +msgstr "" + +#: extras/forms/bulk_edit.py:40 extras/forms/filtersets.py:64 +#: extras/tables/tables.py:47 templates/extras/customfield.html:39 +#: templates/generic/bulk_import.html:116 +msgid "Required" +msgstr "" + +#: extras/forms/bulk_edit.py:53 extras/forms/bulk_import.py:57 +#: extras/forms/filtersets.py:78 extras/models/customfields.py:193 +msgid "UI visible" +msgstr "" + +#: extras/forms/bulk_edit.py:58 extras/forms/bulk_import.py:63 +#: extras/forms/filtersets.py:83 extras/models/customfields.py:200 +msgid "UI editable" +msgstr "" + +#: extras/forms/bulk_edit.py:63 extras/forms/filtersets.py:86 +msgid "Is cloneable" +msgstr "" + +#: extras/forms/bulk_edit.py:102 extras/forms/filtersets.py:126 +msgid "New window" +msgstr "" + +#: extras/forms/bulk_edit.py:111 +msgid "Button class" +msgstr "" + +#: extras/forms/bulk_edit.py:128 extras/forms/filtersets.py:164 +#: extras/models/models.py:439 +msgid "MIME type" +msgstr "" + +#: extras/forms/bulk_edit.py:133 extras/forms/filtersets.py:167 +msgid "File extension" +msgstr "" + +#: extras/forms/bulk_edit.py:138 extras/forms/filtersets.py:171 +msgid "As attachment" +msgstr "" + +#: extras/forms/bulk_edit.py:166 extras/forms/filtersets.py:213 +#: extras/tables/tables.py:214 templates/extras/savedfilter.html:30 +msgid "Shared" +msgstr "" + +#: extras/forms/bulk_edit.py:189 extras/forms/filtersets.py:242 +#: extras/models/models.py:204 +msgid "HTTP method" +msgstr "" + +#: extras/forms/bulk_edit.py:193 extras/forms/filtersets.py:236 +#: templates/extras/webhook.html:37 +msgid "Payload URL" +msgstr "" + +#: extras/forms/bulk_edit.py:198 extras/models/models.py:244 +msgid "SSL verification" +msgstr "" + +#: extras/forms/bulk_edit.py:201 templates/extras/webhook.html:45 +msgid "Secret" +msgstr "" + +#: extras/forms/bulk_edit.py:206 +msgid "CA file path" +msgstr "" + +#: extras/forms/bulk_edit.py:225 +msgid "On create" +msgstr "" + +#: extras/forms/bulk_edit.py:230 +msgid "On update" +msgstr "" + +#: extras/forms/bulk_edit.py:235 +msgid "On delete" +msgstr "" + +#: extras/forms/bulk_edit.py:240 +msgid "On job start" +msgstr "" + +#: extras/forms/bulk_edit.py:245 +msgid "On job end" +msgstr "" + +#: extras/forms/bulk_edit.py:282 +msgid "Is active" +msgstr "" + +#: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 +#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 +#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 +#: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 +#: extras/forms/model_forms.py:154 extras/forms/model_forms.py:195 +#: extras/forms/model_forms.py:251 +msgid "Content types" +msgstr "" + +#: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 +#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 +#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +msgid "One or more assigned object types" +msgstr "" + +#: extras/forms/bulk_import.py:41 +msgid "Field data type (e.g. text, integer, etc.)" +msgstr "" + +#: extras/forms/bulk_import.py:44 extras/forms/filtersets.py:48 +#: extras/forms/filtersets.py:259 extras/forms/model_forms.py:47 +#: extras/forms/model_forms.py:221 tenancy/forms/filtersets.py:91 +msgid "Object type" +msgstr "" + +#: extras/forms/bulk_import.py:47 +msgid "Object type (for object or multi-object fields)" +msgstr "" + +#: extras/forms/bulk_import.py:50 extras/forms/filtersets.py:73 +msgid "Choice set" +msgstr "" + +#: extras/forms/bulk_import.py:54 +msgid "Choice set (for selection fields)" +msgstr "" + +#: extras/forms/bulk_import.py:60 +msgid "Whether the custom field is displayed in the UI" +msgstr "" + +#: extras/forms/bulk_import.py:66 +msgid "Whether the custom field is editable in the UI" +msgstr "" + +#: extras/forms/bulk_import.py:82 +msgid "The base set of predefined choices to use (if any)" +msgstr "" + +#: extras/forms/bulk_import.py:88 +msgid "" +"Quoted string of comma-separated field choices with optional labels " +"separated by colon: \"choice1:First Choice,choice2:Second Choice\"" +msgstr "" + +#: extras/forms/bulk_import.py:182 +msgid "Action object" +msgstr "" + +#: extras/forms/bulk_import.py:184 +msgid "Webhook name or script as dotted path module.Class" +msgstr "" + +#: extras/forms/bulk_import.py:236 +msgid "Assigned object type" +msgstr "" + +#: extras/forms/bulk_import.py:241 +msgid "The classification of entry" +msgstr "" + +#: extras/forms/filtersets.py:53 +msgid "Field type" +msgstr "" + +#: extras/forms/filtersets.py:97 extras/tables/tables.py:65 +#: templates/generic/bulk_import.html:148 +msgid "Choices" +msgstr "" + +#: extras/forms/filtersets.py:141 extras/forms/filtersets.py:327 +#: extras/forms/filtersets.py:417 extras/forms/model_forms.py:449 +#: templates/core/job.html:86 templates/extras/configcontext.html:86 +#: templates/extras/eventrule.html:111 +msgid "Data" +msgstr "" + +#: extras/forms/filtersets.py:152 extras/forms/filtersets.py:341 +#: extras/forms/filtersets.py:427 utilities/choices.py:219 +#: utilities/forms/bulk_import.py:27 +msgid "Data file" +msgstr "" + +#: extras/forms/filtersets.py:185 +msgid "Content type" +msgstr "" + +#: extras/forms/filtersets.py:232 extras/models/models.py:209 +msgid "HTTP content type" +msgstr "" + +#: extras/forms/filtersets.py:254 extras/forms/model_forms.py:269 +#: templates/extras/eventrule.html:46 +msgid "Events" +msgstr "" + +#: extras/forms/filtersets.py:264 +msgid "Action type" +msgstr "" + +#: extras/forms/filtersets.py:278 +msgid "Object creations" +msgstr "" + +#: extras/forms/filtersets.py:285 +msgid "Object updates" +msgstr "" + +#: extras/forms/filtersets.py:292 +msgid "Object deletions" +msgstr "" + +#: extras/forms/filtersets.py:299 +msgid "Job starts" +msgstr "" + +#: extras/forms/filtersets.py:306 extras/forms/model_forms.py:289 +msgid "Job terminations" +msgstr "" + +#: extras/forms/filtersets.py:315 +msgid "Tagged object type" +msgstr "" + +#: extras/forms/filtersets.py:320 +msgid "Allowed object type" +msgstr "" + +#: extras/forms/filtersets.py:349 extras/forms/model_forms.py:384 +#: netbox/navigation/menu.py:19 +msgid "Regions" +msgstr "" + +#: extras/forms/filtersets.py:354 extras/forms/model_forms.py:389 +msgid "Site groups" +msgstr "" + +#: extras/forms/filtersets.py:364 extras/forms/model_forms.py:399 +#: netbox/navigation/menu.py:21 +msgid "Locations" +msgstr "" + +#: extras/forms/filtersets.py:369 extras/forms/model_forms.py:404 +msgid "Device types" +msgstr "" + +#: extras/forms/filtersets.py:374 extras/forms/model_forms.py:409 +msgid "Roles" +msgstr "" + +#: extras/forms/filtersets.py:384 extras/forms/model_forms.py:419 +msgid "Cluster types" +msgstr "" + +#: extras/forms/filtersets.py:390 extras/forms/model_forms.py:424 +msgid "Cluster groups" +msgstr "" + +#: extras/forms/filtersets.py:395 extras/forms/model_forms.py:429 +#: netbox/navigation/menu.py:243 netbox/navigation/menu.py:245 +#: templates/virtualization/clustertype.html:33 +#: virtualization/tables/clusters.py:23 virtualization/tables/clusters.py:45 +msgid "Clusters" +msgstr "" + +#: extras/forms/filtersets.py:400 extras/forms/model_forms.py:434 +msgid "Tenant groups" +msgstr "" + +#: extras/forms/filtersets.py:454 extras/forms/filtersets.py:495 +msgid "After" +msgstr "" + +#: extras/forms/filtersets.py:459 extras/forms/filtersets.py:500 +msgid "Before" +msgstr "" + +#: extras/forms/filtersets.py:490 extras/tables/tables.py:426 +#: templates/extras/htmx/report_result.html:43 +#: templates/extras/objectchange.html:34 +msgid "Time" +msgstr "" + +#: extras/forms/filtersets.py:504 extras/forms/model_forms.py:271 +#: extras/tables/tables.py:440 templates/extras/eventrule.html:90 +#: templates/extras/objectchange.html:50 +msgid "Action" +msgstr "" + +#: extras/forms/model_forms.py:50 +msgid "Type of the related object (for object/multi-object fields only)" +msgstr "" + +#: extras/forms/model_forms.py:58 templates/extras/customfield.html:11 +msgid "Custom Field" +msgstr "" + +#: extras/forms/model_forms.py:61 templates/extras/customfield.html:60 +msgid "Behavior" +msgstr "" + +#: extras/forms/model_forms.py:62 +msgid "Values" +msgstr "" + +#: extras/forms/model_forms.py:71 +msgid "" +"The type of data stored in this field. For object/multi-object fields, " +"select the related object type below." +msgstr "" + +#: extras/forms/model_forms.py:74 +msgid "" +"This will be displayed as help text for the form field. Markdown is " +"supported." +msgstr "" + +#: extras/forms/model_forms.py:91 +msgid "" +"Enter one choice per line. An optional label may be specified for each " +"choice by appending it with a colon. Example:" +msgstr "" + +#: extras/forms/model_forms.py:132 templates/extras/customlink.html:10 +msgid "Custom Link" +msgstr "" + +#: extras/forms/model_forms.py:133 +msgid "Templates" +msgstr "" + +#: extras/forms/model_forms.py:145 +msgid "" +"Jinja2 template code for the link text. Reference the object as " +"{{ object }}. Links which render as empty text will not be " +"displayed." +msgstr "" + +#: extras/forms/model_forms.py:148 +msgid "" +"Jinja2 template code for the link URL. Reference the object as " +"{{ object }}." +msgstr "" + +#: extras/forms/model_forms.py:158 extras/forms/model_forms.py:500 +msgid "Template code" +msgstr "" + +#: extras/forms/model_forms.py:164 templates/extras/exporttemplate.html:17 +msgid "Export Template" +msgstr "" + +#: extras/forms/model_forms.py:166 +msgid "Rendering" +msgstr "" + +#: extras/forms/model_forms.py:180 extras/forms/model_forms.py:525 +msgid "Template content is populated from the remote source selected below." +msgstr "" + +#: extras/forms/model_forms.py:187 extras/forms/model_forms.py:532 +msgid "Must specify either local content or a data file" +msgstr "" + +#: extras/forms/model_forms.py:201 netbox/forms/mixins.py:68 +#: templates/extras/savedfilter.html:10 +msgid "Saved Filter" +msgstr "" + +#: extras/forms/model_forms.py:234 templates/extras/webhook.html:28 +msgid "HTTP Request" +msgstr "" + +#: extras/forms/model_forms.py:237 templates/extras/webhook.html:53 +msgid "SSL" +msgstr "" + +#: extras/forms/model_forms.py:255 +msgid "Action choice" +msgstr "" + +#: extras/forms/model_forms.py:260 +msgid "Enter conditions in JSON format." +msgstr "" + +#: extras/forms/model_forms.py:264 +msgid "" +"Enter parameters to pass to the action in JSON format." +msgstr "" + +#: extras/forms/model_forms.py:268 templates/extras/eventrule.html:11 +msgid "Event Rule" +msgstr "" + +#: extras/forms/model_forms.py:270 templates/extras/eventrule.html:78 +msgid "Conditions" +msgstr "" + +#: extras/forms/model_forms.py:285 +msgid "Creations" +msgstr "" + +#: extras/forms/model_forms.py:286 +msgid "Updates" +msgstr "" + +#: extras/forms/model_forms.py:287 +msgid "Deletions" +msgstr "" + +#: extras/forms/model_forms.py:288 +msgid "Job executions" +msgstr "" + +#: extras/forms/model_forms.py:366 users/forms/model_forms.py:285 +msgid "Object types" +msgstr "" + +#: extras/forms/model_forms.py:439 netbox/navigation/menu.py:40 +#: tenancy/tables/tenants.py:22 +msgid "Tenants" +msgstr "" + +#: extras/forms/model_forms.py:456 ipam/forms/filtersets.py:141 +#: ipam/forms/filtersets.py:527 templates/extras/configcontext.html:62 +#: templates/ipam/ipaddress.html:62 templates/ipam/vlan_edit.html:30 +#: tenancy/forms/filtersets.py:86 users/forms/model_forms.py:323 +msgid "Assignment" +msgstr "" + +#: extras/forms/model_forms.py:482 +msgid "Data is populated from the remote source selected below." +msgstr "" + +#: extras/forms/model_forms.py:488 +msgid "Must specify either local data or a data file" +msgstr "" + +#: extras/forms/model_forms.py:507 templates/core/datafile.html:65 +msgid "Content" +msgstr "" + +#: extras/forms/reports.py:18 extras/forms/scripts.py:24 +msgid "Schedule at" +msgstr "" + +#: extras/forms/reports.py:19 +msgid "Schedule execution of report to a set time" +msgstr "" + +#: extras/forms/reports.py:24 extras/forms/scripts.py:30 +msgid "Recurs every" +msgstr "" + +#: extras/forms/reports.py:28 +msgid "Interval at which this report is re-run (in minutes)" +msgstr "" + +#: extras/forms/reports.py:36 extras/forms/scripts.py:42 +#, python-brace-format +msgid " (current time: {now})" +msgstr "" + +#: extras/forms/reports.py:46 extras/forms/scripts.py:52 +msgid "Scheduled time must be in the future." +msgstr "" + +#: extras/forms/scripts.py:18 +msgid "Commit changes" +msgstr "" + +#: extras/forms/scripts.py:19 +msgid "Commit changes to the database (uncheck for a dry-run)" +msgstr "" + +#: extras/forms/scripts.py:25 +msgid "Schedule execution of script to a set time" +msgstr "" + +#: extras/forms/scripts.py:34 +msgid "Interval at which this script is re-run (in minutes)" +msgstr "" + +#: extras/models/change_logging.py:24 +msgid "time" +msgstr "" + +#: extras/models/change_logging.py:37 +msgid "user name" +msgstr "" + +#: extras/models/change_logging.py:42 +msgid "request ID" +msgstr "" + +#: extras/models/change_logging.py:47 extras/models/staging.py:69 +msgid "action" +msgstr "" + +#: extras/models/change_logging.py:81 +msgid "pre-change data" +msgstr "" + +#: extras/models/change_logging.py:87 +msgid "post-change data" +msgstr "" + +#: extras/models/change_logging.py:101 +msgid "object change" +msgstr "" + +#: extras/models/change_logging.py:102 +msgid "object changes" +msgstr "" + +#: extras/models/change_logging.py:118 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" + +#: extras/models/configs.py:130 +msgid "config context" +msgstr "" + +#: extras/models/configs.py:131 +msgid "config contexts" +msgstr "" + +#: extras/models/configs.py:149 extras/models/configs.py:205 +msgid "JSON data must be in object form. Example:" +msgstr "" + +#: extras/models/configs.py:169 +msgid "" +"Local config context data takes precedence over source contexts in the final " +"rendered config context" +msgstr "" + +#: extras/models/configs.py:224 +msgid "template code" +msgstr "" + +#: extras/models/configs.py:225 +msgid "Jinja2 template code." +msgstr "" + +#: extras/models/configs.py:228 +msgid "environment parameters" +msgstr "" + +#: extras/models/configs.py:233 +msgid "" +"Any additional parameters to pass when constructing the Jinja2 " +"environment." +msgstr "" + +#: extras/models/configs.py:240 +msgid "config template" +msgstr "" + +#: extras/models/configs.py:241 +msgid "config templates" +msgstr "" + +#: extras/models/customfields.py:72 +msgid "The object(s) to which this field applies." +msgstr "" + +#: extras/models/customfields.py:79 +msgid "The type of data this custom field holds" +msgstr "" + +#: extras/models/customfields.py:86 +msgid "The type of NetBox object this field maps to (for object fields)" +msgstr "" + +#: extras/models/customfields.py:92 +msgid "Internal field name" +msgstr "" + +#: extras/models/customfields.py:96 +msgid "Only alphanumeric characters and underscores are allowed." +msgstr "" + +#: extras/models/customfields.py:101 +msgid "Double underscores are not permitted in custom field names." +msgstr "" + +#: extras/models/customfields.py:112 +msgid "" +"Name of the field as displayed to users (if not provided, 'the field's name " +"will be used)" +msgstr "" + +#: extras/models/customfields.py:116 extras/models/models.py:347 +msgid "group name" +msgstr "" + +#: extras/models/customfields.py:119 +msgid "Custom fields within the same group will be displayed together" +msgstr "" + +#: extras/models/customfields.py:127 +msgid "required" +msgstr "" + +#: extras/models/customfields.py:129 +msgid "" +"If true, this field is required when creating new objects or editing an " +"existing object." +msgstr "" + +#: extras/models/customfields.py:132 +msgid "search weight" +msgstr "" + +#: extras/models/customfields.py:135 +msgid "" +"Weighting for search. Lower values are considered more important. Fields " +"with a search weight of zero will be ignored." +msgstr "" + +#: extras/models/customfields.py:140 +msgid "filter logic" +msgstr "" + +#: extras/models/customfields.py:144 +msgid "" +"Loose matches any instance of a given string; exact matches the entire field." +msgstr "" + +#: extras/models/customfields.py:147 +msgid "default" +msgstr "" + +#: extras/models/customfields.py:151 +msgid "" +"Default value for the field (must be a JSON value). Encapsulate strings with " +"double quotes (e.g. \"Foo\")." +msgstr "" + +#: extras/models/customfields.py:156 +msgid "display weight" +msgstr "" + +#: extras/models/customfields.py:157 +msgid "Fields with higher weights appear lower in a form." +msgstr "" + +#: extras/models/customfields.py:162 +msgid "minimum value" +msgstr "" + +#: extras/models/customfields.py:163 +msgid "Minimum allowed value (for numeric fields)" +msgstr "" + +#: extras/models/customfields.py:168 +msgid "maximum value" +msgstr "" + +#: extras/models/customfields.py:169 +msgid "Maximum allowed value (for numeric fields)" +msgstr "" + +#: extras/models/customfields.py:175 +msgid "validation regex" +msgstr "" + +#: extras/models/customfields.py:177 +#, python-brace-format +msgid "" +"Regular expression to enforce on text field values. Use ^ and $ to force " +"matching of entire string. For example, ^[A-Z]{3}$ will limit " +"values to exactly three uppercase letters." +msgstr "" + +#: extras/models/customfields.py:185 +msgid "choice set" +msgstr "" + +#: extras/models/customfields.py:194 +msgid "Specifies whether the custom field is displayed in the UI" +msgstr "" + +#: extras/models/customfields.py:201 +msgid "Specifies whether the custom field value can be edited in the UI" +msgstr "" + +#: extras/models/customfields.py:205 +msgid "is cloneable" +msgstr "" + +#: extras/models/customfields.py:206 +msgid "Replicate this value when cloning objects" +msgstr "" + +#: extras/models/customfields.py:219 +msgid "custom field" +msgstr "" + +#: extras/models/customfields.py:220 +msgid "custom fields" +msgstr "" + +#: extras/models/customfields.py:309 +#, python-brace-format +msgid "Invalid default value \"{value}\": {error}" +msgstr "" + +#: extras/models/customfields.py:316 +msgid "A minimum value may be set only for numeric fields" +msgstr "" + +#: extras/models/customfields.py:318 +msgid "A maximum value may be set only for numeric fields" +msgstr "" + +#: extras/models/customfields.py:328 +msgid "Regular expression validation is supported only for text and URL fields" +msgstr "" + +#: extras/models/customfields.py:338 +msgid "Selection fields must specify a set of choices." +msgstr "" + +#: extras/models/customfields.py:342 +msgid "Choices may be set only on selection fields." +msgstr "" + +#: extras/models/customfields.py:349 +msgid "Object fields must define an object type." +msgstr "" + +#: extras/models/customfields.py:354 +#, python-brace-format +msgid "{type} fields may not define an object type." +msgstr "" + +#: extras/models/customfields.py:434 +msgid "True" +msgstr "" + +#: extras/models/customfields.py:435 +msgid "False" +msgstr "" + +#: extras/models/customfields.py:517 +#, python-brace-format +msgid "Values must match this regex: {regex}" +msgstr "" + +#: extras/models/customfields.py:612 +msgid "Value must be a string." +msgstr "" + +#: extras/models/customfields.py:614 +#, python-brace-format +msgid "Value must match regex '{regex}'" +msgstr "" + +#: extras/models/customfields.py:619 +msgid "Value must be an integer." +msgstr "" + +#: extras/models/customfields.py:622 extras/models/customfields.py:637 +#, python-brace-format +msgid "Value must be at least {minimum}" +msgstr "" + +#: extras/models/customfields.py:626 extras/models/customfields.py:641 +#, python-brace-format +msgid "Value must not exceed {maximum}" +msgstr "" + +#: extras/models/customfields.py:634 +msgid "Value must be a decimal." +msgstr "" + +#: extras/models/customfields.py:646 +msgid "Value must be true or false." +msgstr "" + +#: extras/models/customfields.py:654 +msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." +msgstr "" + +#: extras/models/customfields.py:663 +msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." +msgstr "" + +#: extras/models/customfields.py:670 +#, python-brace-format +msgid "Invalid choice ({value}) for choice set {choiceset}." +msgstr "" + +#: extras/models/customfields.py:680 +#, python-brace-format +msgid "Invalid choice(s) ({value}) for choice set {choiceset}." +msgstr "" + +#: extras/models/customfields.py:689 +#, python-brace-format +msgid "Value must be an object ID, not {type}" +msgstr "" + +#: extras/models/customfields.py:695 +#, python-brace-format +msgid "Value must be a list of object IDs, not {type}" +msgstr "" + +#: extras/models/customfields.py:699 +#, python-brace-format +msgid "Found invalid object ID: {id}" +msgstr "" + +#: extras/models/customfields.py:702 +msgid "Required field cannot be empty." +msgstr "" + +#: extras/models/customfields.py:721 +msgid "Base set of predefined choices (optional)" +msgstr "" + +#: extras/models/customfields.py:733 +msgid "Choices are automatically ordered alphabetically" +msgstr "" + +#: extras/models/customfields.py:740 +msgid "custom field choice set" +msgstr "" + +#: extras/models/customfields.py:741 +msgid "custom field choice sets" +msgstr "" + +#: extras/models/customfields.py:777 +msgid "Must define base or extra choices." +msgstr "" + +#: extras/models/dashboard.py:19 +msgid "layout" +msgstr "" + +#: extras/models/dashboard.py:23 +msgid "config" +msgstr "" + +#: extras/models/dashboard.py:28 +msgid "dashboard" +msgstr "" + +#: extras/models/dashboard.py:29 +msgid "dashboards" +msgstr "" + +#: extras/models/models.py:49 +msgid "object types" +msgstr "" + +#: extras/models/models.py:50 +msgid "The object(s) to which this rule applies." +msgstr "" + +#: extras/models/models.py:63 +msgid "on create" +msgstr "" + +#: extras/models/models.py:65 +msgid "Triggers when a matching object is created." +msgstr "" + +#: extras/models/models.py:68 +msgid "on update" +msgstr "" + +#: extras/models/models.py:70 +msgid "Triggers when a matching object is updated." +msgstr "" + +#: extras/models/models.py:73 +msgid "on delete" +msgstr "" + +#: extras/models/models.py:75 +msgid "Triggers when a matching object is deleted." +msgstr "" + +#: extras/models/models.py:78 +msgid "on job start" +msgstr "" + +#: extras/models/models.py:80 +msgid "Triggers when a job for a matching object is started." +msgstr "" + +#: extras/models/models.py:83 +msgid "on job end" +msgstr "" + +#: extras/models/models.py:85 +msgid "Triggers when a job for a matching object terminates." +msgstr "" + +#: extras/models/models.py:92 +msgid "conditions" +msgstr "" + +#: extras/models/models.py:95 +msgid "" +"A set of conditions which determine whether the event will be generated." +msgstr "" + +#: extras/models/models.py:103 +msgid "action type" +msgstr "" + +#: extras/models/models.py:126 +msgid "Additional data to pass to the action object" +msgstr "" + +#: extras/models/models.py:138 +msgid "event rule" +msgstr "" + +#: extras/models/models.py:139 +msgid "event rules" +msgstr "" + +#: extras/models/models.py:155 +msgid "" +"At least one event type must be selected: create, update, delete, job start, " +"and/or job end." +msgstr "" + +#: extras/models/models.py:196 +msgid "" +"This URL will be called using the HTTP method defined when the webhook is " +"called. Jinja2 template processing is supported with the same context as the " +"request body." +msgstr "" + +#: extras/models/models.py:211 +msgid "" +"The complete list of official content types is available here." +msgstr "" + +#: extras/models/models.py:216 +msgid "additional headers" +msgstr "" + +#: extras/models/models.py:219 +msgid "" +"User-supplied HTTP headers to be sent with the request in addition to the " +"HTTP content type. Headers should be defined in the format Name: " +"Value. Jinja2 template processing is supported with the same context " +"as the request body (below)." +msgstr "" + +#: extras/models/models.py:225 +msgid "body template" +msgstr "" + +#: extras/models/models.py:228 +msgid "" +"Jinja2 template for a custom request body. If blank, a JSON object " +"representing the change will be included. Available context data includes: " +"event, model, timestamp, " +"username, request_id, and data." +msgstr "" + +#: extras/models/models.py:234 +msgid "secret" +msgstr "" + +#: extras/models/models.py:238 +msgid "" +"When provided, the request will include a X-Hook-Signature " +"header containing a HMAC hex digest of the payload body using the secret as " +"the key. The secret is not transmitted in the request." +msgstr "" + +#: extras/models/models.py:245 +msgid "Enable SSL certificate verification. Disable with caution!" +msgstr "" + +#: extras/models/models.py:251 templates/extras/webhook.html:62 +msgid "CA File Path" +msgstr "" + +#: extras/models/models.py:253 +msgid "" +"The specific CA certificate file to use for SSL verification. Leave blank to " +"use the system defaults." +msgstr "" + +#: extras/models/models.py:264 +msgid "webhook" +msgstr "" + +#: extras/models/models.py:265 +msgid "webhooks" +msgstr "" + +#: extras/models/models.py:283 +msgid "Do not specify a CA certificate file if SSL verification is disabled." +msgstr "" + +#: extras/models/models.py:323 +msgid "The object type(s) to which this link applies." +msgstr "" + +#: extras/models/models.py:335 +msgid "link text" +msgstr "" + +#: extras/models/models.py:336 +msgid "Jinja2 template code for link text" +msgstr "" + +#: extras/models/models.py:339 +msgid "link URL" +msgstr "" + +#: extras/models/models.py:340 +msgid "Jinja2 template code for link URL" +msgstr "" + +#: extras/models/models.py:350 +msgid "Links with the same group will appear as a dropdown menu" +msgstr "" + +#: extras/models/models.py:353 +msgid "button class" +msgstr "" + +#: extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" + +#: extras/models/models.py:360 +msgid "new window" +msgstr "" + +#: extras/models/models.py:362 +msgid "Force link to open in a new window" +msgstr "" + +#: extras/models/models.py:371 +msgid "custom link" +msgstr "" + +#: extras/models/models.py:372 +msgid "custom links" +msgstr "" + +#: extras/models/models.py:419 +msgid "The object type(s) to which this template applies." +msgstr "" + +#: extras/models/models.py:432 +msgid "" +"Jinja2 template code. The list of objects being exported is passed as a " +"context variable named queryset." +msgstr "" + +#: extras/models/models.py:440 +msgid "Defaults to text/plain; charset=utf-8" +msgstr "" + +#: extras/models/models.py:443 +msgid "file extension" +msgstr "" + +#: extras/models/models.py:446 +msgid "Extension to append to the rendered filename" +msgstr "" + +#: extras/models/models.py:449 +msgid "as attachment" +msgstr "" + +#: extras/models/models.py:451 +msgid "Download file as attachment" +msgstr "" + +#: extras/models/models.py:460 +msgid "export template" +msgstr "" + +#: extras/models/models.py:461 +msgid "export templates" +msgstr "" + +#: extras/models/models.py:478 +#, python-brace-format +msgid "\"{name}\" is a reserved name. Please choose a different name." +msgstr "" + +#: extras/models/models.py:528 +msgid "The object type(s) to which this filter applies." +msgstr "" + +#: extras/models/models.py:560 +msgid "shared" +msgstr "" + +#: extras/models/models.py:573 +msgid "saved filter" +msgstr "" + +#: extras/models/models.py:574 +msgid "saved filters" +msgstr "" + +#: extras/models/models.py:592 +msgid "Filter parameters must be stored as a dictionary of keyword arguments." +msgstr "" + +#: extras/models/models.py:620 +msgid "image height" +msgstr "" + +#: extras/models/models.py:623 +msgid "image width" +msgstr "" + +#: extras/models/models.py:640 +msgid "image attachment" +msgstr "" + +#: extras/models/models.py:641 +msgid "image attachments" +msgstr "" + +#: extras/models/models.py:655 +#, python-brace-format +msgid "Image attachments cannot be assigned to this object type ({type})." +msgstr "" + +#: extras/models/models.py:718 +msgid "kind" +msgstr "" + +#: extras/models/models.py:732 +msgid "journal entry" +msgstr "" + +#: extras/models/models.py:733 +msgid "journal entries" +msgstr "" + +#: extras/models/models.py:748 +#, python-brace-format +msgid "Journaling is not supported for this object type ({type})." +msgstr "" + +#: extras/models/models.py:790 +msgid "bookmark" +msgstr "" + +#: extras/models/models.py:791 +msgid "bookmarks" +msgstr "" + +#: extras/models/models.py:804 +#, python-brace-format +msgid "Bookmarks cannot be assigned to this object type ({type})." +msgstr "" + +#: extras/models/reports.py:46 +msgid "report module" +msgstr "" + +#: extras/models/reports.py:47 +msgid "report modules" +msgstr "" + +#: extras/models/scripts.py:46 +msgid "script module" +msgstr "" + +#: extras/models/scripts.py:47 +msgid "script modules" +msgstr "" + +#: extras/models/search.py:24 +msgid "timestamp" +msgstr "" + +#: extras/models/search.py:39 +msgid "field" +msgstr "" + +#: extras/models/search.py:47 +msgid "value" +msgstr "" + +#: extras/models/search.py:58 +msgid "cached value" +msgstr "" + +#: extras/models/search.py:59 +msgid "cached values" +msgstr "" + +#: extras/models/staging.py:44 +msgid "branch" +msgstr "" + +#: extras/models/staging.py:45 +msgid "branches" +msgstr "" + +#: extras/models/staging.py:97 +msgid "staged change" +msgstr "" + +#: extras/models/staging.py:98 +msgid "staged changes" +msgstr "" + +#: extras/models/tags.py:40 +msgid "The object type(s) to which this this tag can be applied." +msgstr "" + +#: extras/models/tags.py:49 +msgid "tag" +msgstr "" + +#: extras/models/tags.py:50 +msgid "tags" +msgstr "" + +#: extras/models/tags.py:78 +msgid "tagged item" +msgstr "" + +#: extras/models/tags.py:79 +msgid "tagged items" +msgstr "" + +#: extras/signals.py:221 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "" + +#: extras/tables/tables.py:44 extras/tables/tables.py:119 +#: extras/tables/tables.py:143 extras/tables/tables.py:208 +#: extras/tables/tables.py:281 +msgid "Content Types" +msgstr "" + +#: extras/tables/tables.py:50 +msgid "Visible" +msgstr "" + +#: extras/tables/tables.py:53 +msgid "Editable" +msgstr "" + +#: extras/tables/tables.py:60 templates/extras/customfield.html:48 +msgid "Choice Set" +msgstr "" + +#: extras/tables/tables.py:68 +msgid "Is Cloneable" +msgstr "" + +#: extras/tables/tables.py:98 +msgid "Count" +msgstr "" + +#: extras/tables/tables.py:101 +msgid "Order Alphabetically" +msgstr "" + +#: extras/tables/tables.py:125 templates/extras/customlink.html:34 +msgid "New Window" +msgstr "" + +#: extras/tables/tables.py:146 +msgid "As Attachment" +msgstr "" + +#: extras/tables/tables.py:153 extras/tables/tables.py:367 +#: extras/tables/tables.py:402 templates/core/datafile.html:32 +#: templates/dcim/device/render_config.html:23 +#: templates/extras/configcontext.html:40 +#: templates/extras/configtemplate.html:32 +#: templates/extras/exporttemplate.html:51 +#: templates/generic/bulk_import.html:30 +#: templates/virtualization/virtualmachine/render_config.html:23 +msgid "Data File" +msgstr "" + +#: extras/tables/tables.py:158 extras/tables/tables.py:379 +#: extras/tables/tables.py:407 +msgid "Synced" +msgstr "" + +#: extras/tables/tables.py:178 +msgid "Content Type" +msgstr "" + +#: extras/tables/tables.py:185 +msgid "Image" +msgstr "" + +#: extras/tables/tables.py:190 +msgid "Size (Bytes)" +msgstr "" + +#: extras/tables/tables.py:233 extras/tables/tables.py:326 +#: templates/extras/customfield.html:96 templates/extras/eventrule.html:32 +#: templates/users/objectpermission.html:68 users/tables.py:83 +msgid "Object Types" +msgstr "" + +#: extras/tables/tables.py:255 +msgid "SSL Validation" +msgstr "" + +#: extras/tables/tables.py:278 +msgid "Action Type" +msgstr "" + +#: extras/tables/tables.py:296 +msgid "Job Start" +msgstr "" + +#: extras/tables/tables.py:299 +msgid "Job End" +msgstr "" + +#: extras/tables/tables.py:436 templates/account/profile.html:20 +#: templates/users/user.html:22 +msgid "Full Name" +msgstr "" + +#: extras/tables/tables.py:453 templates/extras/objectchange.html:72 +msgid "Request ID" +msgstr "" + +#: extras/tables/tables.py:490 +msgid "Comments (Short)" +msgstr "" + +#: extras/validators.py:13 +#, python-format +msgid "Ensure this value is equal to %(limit_value)s." +msgstr "" + +#: extras/validators.py:24 +#, python-format +msgid "Ensure this value does not equal %(limit_value)s." +msgstr "" + +#: extras/validators.py:35 +msgid "This field must be empty." +msgstr "" + +#: extras/validators.py:50 +msgid "This field must not be empty." +msgstr "" + +#: extras/views.py:880 +msgid "Your dashboard has been reset." +msgstr "" + +#: ipam/api/field_serializers.py:17 +msgid "Enter a valid IPv4 or IPv6 address with optional mask." +msgstr "" + +#: ipam/api/field_serializers.py:24 +#, python-brace-format +msgid "Invalid IP address format: {data}" +msgstr "" + +#: ipam/api/field_serializers.py:37 +msgid "Enter a valid IPv4 or IPv6 prefix and mask in CIDR notation." +msgstr "" + +#: ipam/api/field_serializers.py:44 +#, python-brace-format +msgid "Invalid IP prefix format: {data}" +msgstr "" + +#: ipam/choices.py:30 +msgid "Container" +msgstr "" + +#: ipam/choices.py:72 +msgid "DHCP" +msgstr "" + +#: ipam/choices.py:73 +msgid "SLAAC" +msgstr "" + +#: ipam/choices.py:89 +msgid "Loopback" +msgstr "" + +#: ipam/choices.py:90 tenancy/choices.py:18 +msgid "Secondary" +msgstr "" + +#: ipam/choices.py:91 +msgid "Anycast" +msgstr "" + +#: ipam/choices.py:115 +msgid "Standard" +msgstr "" + +#: ipam/choices.py:120 +msgid "CheckPoint" +msgstr "" + +#: ipam/choices.py:123 +msgid "Cisco" +msgstr "" + +#: ipam/choices.py:137 +msgid "Plaintext" +msgstr "" + +#: ipam/filtersets.py:47 vpn/filtersets.py:276 +msgid "Import target" +msgstr "" + +#: ipam/filtersets.py:53 vpn/filtersets.py:282 +msgid "Import target (name)" +msgstr "" + +#: ipam/filtersets.py:58 vpn/filtersets.py:287 +msgid "Export target" +msgstr "" + +#: ipam/filtersets.py:64 vpn/filtersets.py:293 +msgid "Export target (name)" +msgstr "" + +#: ipam/filtersets.py:85 +msgid "Importing VRF" +msgstr "" + +#: ipam/filtersets.py:91 +msgid "Import VRF (RD)" +msgstr "" + +#: ipam/filtersets.py:96 +msgid "Exporting VRF" +msgstr "" + +#: ipam/filtersets.py:102 +msgid "Export VRF (RD)" +msgstr "" + +#: ipam/filtersets.py:132 ipam/filtersets.py:247 ipam/forms/model_forms.py:229 +#: ipam/tables/ip.py:211 templates/ipam/prefix.html:12 +msgid "Prefix" +msgstr "" + +#: ipam/filtersets.py:136 ipam/filtersets.py:175 ipam/filtersets.py:198 +msgid "RIR (ID)" +msgstr "" + +#: ipam/filtersets.py:142 ipam/filtersets.py:181 ipam/filtersets.py:204 +msgid "RIR (slug)" +msgstr "" + +#: ipam/filtersets.py:251 +msgid "Within prefix" +msgstr "" + +#: ipam/filtersets.py:255 +msgid "Within and including prefix" +msgstr "" + +#: ipam/filtersets.py:259 +msgid "Prefixes which contain this prefix or IP" +msgstr "" + +#: ipam/filtersets.py:270 ipam/filtersets.py:538 ipam/forms/bulk_edit.py:326 +#: ipam/forms/filtersets.py:191 ipam/forms/filtersets.py:317 +msgid "Mask length" +msgstr "" + +#: ipam/filtersets.py:339 vpn/filtersets.py:399 +msgid "VLAN (ID)" +msgstr "" + +#: ipam/filtersets.py:343 vpn/filtersets.py:394 +msgid "VLAN number (1-4094)" +msgstr "" + +#: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 +#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: tenancy/forms/bulk_edit.py:112 +msgid "Address" +msgstr "" + +#: ipam/filtersets.py:445 +msgid "Ranges which contain this prefix or IP" +msgstr "" + +#: ipam/filtersets.py:473 ipam/filtersets.py:529 +msgid "Parent prefix" +msgstr "" + +#: ipam/filtersets.py:582 ipam/filtersets.py:812 ipam/filtersets.py:1031 +#: vpn/filtersets.py:357 +msgid "Virtual machine (name)" +msgstr "" + +#: ipam/filtersets.py:587 ipam/filtersets.py:817 ipam/filtersets.py:1025 +#: virtualization/filtersets.py:276 virtualization/filtersets.py:315 +#: vpn/filtersets.py:362 +msgid "Virtual machine (ID)" +msgstr "" + +#: ipam/filtersets.py:593 vpn/filtersets.py:97 vpn/filtersets.py:368 +msgid "Interface (name)" +msgstr "" + +#: ipam/filtersets.py:598 vpn/filtersets.py:102 vpn/filtersets.py:373 +msgid "Interface (ID)" +msgstr "" + +#: ipam/filtersets.py:604 vpn/filtersets.py:108 vpn/filtersets.py:379 +msgid "VM interface (name)" +msgstr "" + +#: ipam/filtersets.py:609 vpn/filtersets.py:113 +msgid "VM interface (ID)" +msgstr "" + +#: ipam/filtersets.py:614 +msgid "FHRP group (ID)" +msgstr "" + +#: ipam/filtersets.py:618 +msgid "Is assigned to an interface" +msgstr "" + +#: ipam/filtersets.py:622 +msgid "Is assigned" +msgstr "" + +#: ipam/filtersets.py:1036 +msgid "IP address (ID)" +msgstr "" + +#: ipam/filtersets.py:1042 ipam/models/ip.py:787 +msgid "IP address" +msgstr "" + +#: ipam/filtersets.py:1068 +msgid "Primary IPv4 (ID)" +msgstr "" + +#: ipam/filtersets.py:1073 +msgid "Primary IPv6 (ID)" +msgstr "" + +#: ipam/forms/bulk_create.py:14 +msgid "Address pattern" +msgstr "" + +#: ipam/forms/bulk_edit.py:85 +msgid "Is private" +msgstr "" + +#: ipam/forms/bulk_edit.py:106 ipam/forms/bulk_edit.py:135 +#: ipam/forms/bulk_edit.py:160 ipam/forms/bulk_import.py:88 +#: ipam/forms/bulk_import.py:108 ipam/forms/bulk_import.py:128 +#: ipam/forms/filtersets.py:109 ipam/forms/filtersets.py:124 +#: ipam/forms/filtersets.py:147 ipam/forms/model_forms.py:93 +#: ipam/forms/model_forms.py:108 ipam/forms/model_forms.py:130 +#: ipam/forms/model_forms.py:148 ipam/models/asns.py:31 ipam/models/asns.py:103 +#: ipam/models/ip.py:70 ipam/models/ip.py:89 ipam/tables/asn.py:20 +#: ipam/tables/asn.py:45 templates/ipam/aggregate.html:19 +#: templates/ipam/asn.html:28 templates/ipam/asnrange.html:20 +#: templates/ipam/rir.html:20 +msgid "RIR" +msgstr "" + +#: ipam/forms/bulk_edit.py:168 +msgid "Date added" +msgstr "" + +#: ipam/forms/bulk_edit.py:229 +msgid "Prefix length" +msgstr "" + +#: ipam/forms/bulk_edit.py:252 ipam/forms/filtersets.py:236 +#: templates/ipam/prefix.html:86 +msgid "Is a pool" +msgstr "" + +#: ipam/forms/bulk_edit.py:257 ipam/forms/bulk_edit.py:301 +#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#, python-format +msgid "Treat as 100% utilized" +msgstr "" + +#: ipam/forms/bulk_edit.py:349 ipam/models/ip.py:771 +msgid "DNS name" +msgstr "" + +#: ipam/forms/bulk_edit.py:370 ipam/forms/bulk_edit.py:569 +#: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:376 +#: ipam/forms/filtersets.py:511 templates/ipam/fhrpgroup.html:23 +#: templates/ipam/inc/panels/fhrp_groups.html:11 templates/ipam/service.html:35 +#: templates/ipam/servicetemplate.html:20 +msgid "Protocol" +msgstr "" + +#: ipam/forms/bulk_edit.py:377 ipam/forms/filtersets.py:383 +#: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:27 +msgid "Group ID" +msgstr "" + +#: ipam/forms/bulk_edit.py:382 ipam/forms/filtersets.py:388 +#: wireless/forms/bulk_edit.py:67 wireless/forms/bulk_edit.py:114 +#: wireless/forms/bulk_import.py:62 wireless/forms/bulk_import.py:65 +#: wireless/forms/bulk_import.py:104 wireless/forms/bulk_import.py:107 +#: wireless/forms/filtersets.py:53 wireless/forms/filtersets.py:87 +msgid "Authentication type" +msgstr "" + +#: ipam/forms/bulk_edit.py:387 ipam/forms/filtersets.py:392 +msgid "Authentication key" +msgstr "" + +#: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 +#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: templates/ipam/fhrpgroup.html:51 +#: templates/wireless/inc/authentication_attrs.html:5 +#: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 +#: wireless/forms/filtersets.py:35 wireless/forms/filtersets.py:75 +#: wireless/forms/model_forms.py:56 wireless/forms/model_forms.py:161 +msgid "Authentication" +msgstr "" + +#: ipam/forms/bulk_edit.py:414 +msgid "Minimum child VLAN VID" +msgstr "" + +#: ipam/forms/bulk_edit.py:420 +msgid "Maximum child VLAN VID" +msgstr "" + +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +msgid "Scope type" +msgstr "" + +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 +msgid "Scope" +msgstr "" + +#: ipam/forms/bulk_edit.py:560 +msgid "Site & Group" +msgstr "" + +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 +#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/tables/services.py:49 templates/ipam/service.html:39 +#: templates/ipam/servicetemplate.html:24 +msgid "Ports" +msgstr "" + +#: ipam/forms/bulk_import.py:47 +msgid "Import route targets" +msgstr "" + +#: ipam/forms/bulk_import.py:53 +msgid "Export route targets" +msgstr "" + +#: ipam/forms/bulk_import.py:91 ipam/forms/bulk_import.py:111 +#: ipam/forms/bulk_import.py:131 +msgid "Assigned RIR" +msgstr "" + +#: ipam/forms/bulk_import.py:181 +msgid "VLAN's group (if any)" +msgstr "" + +#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:219 +#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 templates/ipam/prefix.html:61 +#: templates/ipam/vlan.html:13 templates/ipam/vlan/base.html:6 +#: templates/ipam/vlan_edit.html:10 templates/vpn/l2vpntermination_edit.html:17 +#: templates/wireless/wirelesslan.html:31 vpn/forms/bulk_import.py:299 +#: vpn/forms/filtersets.py:280 vpn/forms/model_forms.py:427 +#: wireless/forms/bulk_edit.py:54 wireless/forms/bulk_import.py:48 +#: wireless/forms/model_forms.py:49 wireless/models.py:101 +msgid "VLAN" +msgstr "" + +#: ipam/forms/bulk_import.py:307 +msgid "Parent device of assigned interface (if any)" +msgstr "" + +#: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 +#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:282 +#: virtualization/filtersets.py:321 virtualization/forms/bulk_edit.py:199 +#: virtualization/forms/bulk_edit.py:325 +#: virtualization/forms/bulk_import.py:146 +#: virtualization/forms/bulk_import.py:207 +#: virtualization/forms/filtersets.py:204 +#: virtualization/forms/filtersets.py:240 +#: virtualization/forms/model_forms.py:291 vpn/forms/bulk_import.py:93 +#: vpn/forms/bulk_import.py:285 +msgid "Virtual machine" +msgstr "" + +#: ipam/forms/bulk_import.py:314 +msgid "Parent VM of assigned interface (if any)" +msgstr "" + +#: ipam/forms/bulk_import.py:321 +msgid "Assigned interface" +msgstr "" + +#: ipam/forms/bulk_import.py:324 +msgid "Is primary" +msgstr "" + +#: ipam/forms/bulk_import.py:325 +msgid "Make this the primary IP for the assigned device" +msgstr "" + +#: ipam/forms/bulk_import.py:364 +msgid "No device or virtual machine specified; cannot set as primary IP" +msgstr "" + +#: ipam/forms/bulk_import.py:368 +msgid "No interface specified; cannot set as primary IP" +msgstr "" + +#: ipam/forms/bulk_import.py:397 +msgid "Auth type" +msgstr "" + +#: ipam/forms/bulk_import.py:412 +msgid "Scope type (app & model)" +msgstr "" + +#: ipam/forms/bulk_import.py:418 +#, python-brace-format +msgid "Minimum child VLAN VID (default: {minimum})" +msgstr "" + +#: ipam/forms/bulk_import.py:424 +#, python-brace-format +msgid "Maximum child VLAN VID (default: {maximum})" +msgstr "" + +#: ipam/forms/bulk_import.py:448 +msgid "Assigned VLAN group" +msgstr "" + +#: ipam/forms/bulk_import.py:479 ipam/forms/bulk_import.py:505 +msgid "IP protocol" +msgstr "" + +#: ipam/forms/bulk_import.py:493 +msgid "Required if not assigned to a VM" +msgstr "" + +#: ipam/forms/bulk_import.py:500 +msgid "Required if not assigned to a device" +msgstr "" + +#: ipam/forms/bulk_import.py:525 +#, python-brace-format +msgid "{ip} is not assigned to this device/VM." +msgstr "" + +#: ipam/forms/filtersets.py:46 ipam/forms/model_forms.py:60 +#: netbox/navigation/menu.py:177 vpn/forms/model_forms.py:403 +msgid "Route Targets" +msgstr "" + +#: ipam/forms/filtersets.py:52 ipam/forms/model_forms.py:47 +#: vpn/forms/filtersets.py:221 vpn/forms/model_forms.py:390 +msgid "Import targets" +msgstr "" + +#: ipam/forms/filtersets.py:57 ipam/forms/model_forms.py:52 +#: vpn/forms/filtersets.py:226 vpn/forms/model_forms.py:395 +msgid "Export targets" +msgstr "" + +#: ipam/forms/filtersets.py:72 +msgid "Imported by VRF" +msgstr "" + +#: ipam/forms/filtersets.py:77 +msgid "Exported by VRF" +msgstr "" + +#: ipam/forms/filtersets.py:86 ipam/tables/ip.py:89 templates/ipam/rir.html:33 +msgid "Private" +msgstr "" + +#: ipam/forms/filtersets.py:104 ipam/forms/filtersets.py:186 +#: ipam/forms/filtersets.py:261 ipam/forms/filtersets.py:312 +msgid "Address family" +msgstr "" + +#: ipam/forms/filtersets.py:118 templates/ipam/asnrange.html:26 +msgid "Range" +msgstr "" + +#: ipam/forms/filtersets.py:127 +msgid "Start" +msgstr "" + +#: ipam/forms/filtersets.py:131 +msgid "End" +msgstr "" + +#: ipam/forms/filtersets.py:181 +msgid "Search within" +msgstr "" + +#: ipam/forms/filtersets.py:202 ipam/forms/filtersets.py:328 +msgid "Present in VRF" +msgstr "" + +#: ipam/forms/filtersets.py:243 ipam/forms/filtersets.py:282 +#, python-format +msgid "Marked as 100% utilized" +msgstr "" + +#: ipam/forms/filtersets.py:297 +msgid "Device/VM" +msgstr "" + +#: ipam/forms/filtersets.py:333 +msgid "Assigned Device" +msgstr "" + +#: ipam/forms/filtersets.py:338 +msgid "Assigned VM" +msgstr "" + +#: ipam/forms/filtersets.py:352 +msgid "Assigned to an interface" +msgstr "" + +#: ipam/forms/filtersets.py:359 templates/ipam/ipaddress.html:54 +msgid "DNS Name" +msgstr "" + +#: ipam/forms/filtersets.py:401 ipam/forms/filtersets.py:494 +#: ipam/models/vlans.py:156 templates/ipam/vlan.html:34 +msgid "VLAN ID" +msgstr "" + +#: ipam/forms/filtersets.py:433 +msgid "Minimum VID" +msgstr "" + +#: ipam/forms/filtersets.py:439 +msgid "Maximum VID" +msgstr "" + +#: ipam/forms/filtersets.py:516 +msgid "Port" +msgstr "" + +#: ipam/forms/filtersets.py:537 ipam/tables/vlans.py:191 +#: templates/ipam/ipaddress_edit.html:47 templates/ipam/service_create.html:22 +#: templates/ipam/service_edit.html:21 +#: templates/virtualization/virtualdisk.html:22 +#: templates/virtualization/virtualmachine.html:13 +#: templates/virtualization/vminterface.html:24 +#: templates/vpn/l2vpntermination_edit.html:27 +#: templates/vpn/tunneltermination.html:26 +#: virtualization/forms/filtersets.py:189 +#: virtualization/forms/filtersets.py:234 +#: virtualization/forms/model_forms.py:223 +#: virtualization/tables/virtualmachines.py:115 +#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 +#: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:269 +msgid "Virtual Machine" +msgstr "" + +#: ipam/forms/model_forms.py:113 ipam/tables/ip.py:116 +#: templates/ipam/aggregate.html:11 templates/ipam/prefix.html:39 +msgid "Aggregate" +msgstr "" + +#: ipam/forms/model_forms.py:134 templates/ipam/asnrange.html:12 +msgid "ASN Range" +msgstr "" + +#: ipam/forms/model_forms.py:230 +msgid "Site/VLAN Assignment" +msgstr "" + +#: ipam/forms/model_forms.py:256 templates/ipam/iprange.html:11 +msgid "IP Range" +msgstr "" + +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 +msgid "FHRP Group" +msgstr "" + +#: ipam/forms/model_forms.py:300 +msgid "Make this the primary IP for the device/VM" +msgstr "" + +#: ipam/forms/model_forms.py:351 +msgid "An IP address can only be assigned to a single object." +msgstr "" + +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:878 +msgid "" +"Cannot reassign IP address while it is designated as the primary IP for the " +"parent object" +msgstr "" + +#: ipam/forms/model_forms.py:367 +msgid "" +"Only IP addresses assigned to an interface can be designated as primary IPs." +msgstr "" + +#: ipam/forms/model_forms.py:373 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "" + +#: ipam/forms/model_forms.py:379 +#, python-brace-format +msgid "{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "" + +#: ipam/forms/model_forms.py:456 +msgid "Virtual IP Address" +msgstr "" + +#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 +#: templates/ipam/vlangroup.html:27 +msgid "VLAN Group" +msgstr "" + +#: ipam/forms/model_forms.py:599 +msgid "Child VLANs" +msgstr "" + +#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +msgid "" +"Comma-separated list of one or more port numbers. A range may be specified " +"using a hyphen." +msgstr "" + +#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +msgid "Service Template" +msgstr "" + +#: ipam/forms/model_forms.py:724 +msgid "Service template" +msgstr "" + +#: ipam/models/asns.py:34 +msgid "start" +msgstr "" + +#: ipam/models/asns.py:51 +msgid "ASN range" +msgstr "" + +#: ipam/models/asns.py:52 +msgid "ASN ranges" +msgstr "" + +#: ipam/models/asns.py:72 +#, python-brace-format +msgid "Starting ASN ({start}) must be lower than ending ASN ({end})." +msgstr "" + +#: ipam/models/asns.py:104 +msgid "Regional Internet Registry responsible for this AS number space" +msgstr "" + +#: ipam/models/asns.py:109 +msgid "16- or 32-bit autonomous system number" +msgstr "" + +#: ipam/models/fhrp.py:22 +msgid "group ID" +msgstr "" + +#: ipam/models/fhrp.py:30 ipam/models/services.py:22 +msgid "protocol" +msgstr "" + +#: ipam/models/fhrp.py:38 wireless/models.py:27 +msgid "authentication type" +msgstr "" + +#: ipam/models/fhrp.py:43 +msgid "authentication key" +msgstr "" + +#: ipam/models/fhrp.py:56 +msgid "FHRP group" +msgstr "" + +#: ipam/models/fhrp.py:57 +msgid "FHRP groups" +msgstr "" + +#: ipam/models/fhrp.py:93 tenancy/models/contacts.py:134 +msgid "priority" +msgstr "" + +#: ipam/models/fhrp.py:113 +msgid "FHRP group assignment" +msgstr "" + +#: ipam/models/fhrp.py:114 +msgid "FHRP group assignments" +msgstr "" + +#: ipam/models/ip.py:64 +msgid "private" +msgstr "" + +#: ipam/models/ip.py:65 +msgid "IP space managed by this RIR is considered private" +msgstr "" + +#: ipam/models/ip.py:71 netbox/navigation/menu.py:170 +msgid "RIRs" +msgstr "" + +#: ipam/models/ip.py:83 +msgid "IPv4 or IPv6 network" +msgstr "" + +#: ipam/models/ip.py:90 +msgid "Regional Internet Registry responsible for this IP space" +msgstr "" + +#: ipam/models/ip.py:100 +msgid "date added" +msgstr "" + +#: ipam/models/ip.py:114 +msgid "aggregate" +msgstr "" + +#: ipam/models/ip.py:115 +msgid "aggregates" +msgstr "" + +#: ipam/models/ip.py:131 +msgid "Cannot create aggregate with /0 mask." +msgstr "" + +#: ipam/models/ip.py:143 +#, python-brace-format +msgid "" +"Aggregates cannot overlap. {prefix} is already covered by an existing " +"aggregate ({aggregate})." +msgstr "" + +#: ipam/models/ip.py:157 +#, python-brace-format +msgid "" +"Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " +"({aggregate})." +msgstr "" + +#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +msgid "role" +msgstr "" + +#: ipam/models/ip.py:200 +msgid "roles" +msgstr "" + +#: ipam/models/ip.py:216 ipam/models/ip.py:292 +msgid "prefix" +msgstr "" + +#: ipam/models/ip.py:217 +msgid "IPv4 or IPv6 network with mask" +msgstr "" + +#: ipam/models/ip.py:253 +msgid "Operational status of this prefix" +msgstr "" + +#: ipam/models/ip.py:261 +msgid "The primary function of this prefix" +msgstr "" + +#: ipam/models/ip.py:264 +msgid "is a pool" +msgstr "" + +#: ipam/models/ip.py:266 +msgid "All IP addresses within this prefix are considered usable" +msgstr "" + +#: ipam/models/ip.py:269 ipam/models/ip.py:536 +msgid "mark utilized" +msgstr "" + +#: ipam/models/ip.py:293 +msgid "prefixes" +msgstr "" + +#: ipam/models/ip.py:316 +msgid "Cannot create prefix with /0 mask." +msgstr "" + +#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#, python-brace-format +msgid "VRF {vrf}" +msgstr "" + +#: ipam/models/ip.py:323 ipam/models/ip.py:854 +msgid "global table" +msgstr "" + +#: ipam/models/ip.py:325 +#, python-brace-format +msgid "Duplicate prefix found in {table}: {prefix}" +msgstr "" + +#: ipam/models/ip.py:494 +msgid "start address" +msgstr "" + +#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +msgid "IPv4 or IPv6 address (with mask)" +msgstr "" + +#: ipam/models/ip.py:498 +msgid "end address" +msgstr "" + +#: ipam/models/ip.py:525 +msgid "Operational status of this range" +msgstr "" + +#: ipam/models/ip.py:533 +msgid "The primary function of this range" +msgstr "" + +#: ipam/models/ip.py:547 +msgid "IP range" +msgstr "" + +#: ipam/models/ip.py:548 +msgid "IP ranges" +msgstr "" + +#: ipam/models/ip.py:564 +msgid "Starting and ending IP address versions must match" +msgstr "" + +#: ipam/models/ip.py:570 +msgid "Starting and ending IP address masks must match" +msgstr "" + +#: ipam/models/ip.py:577 +#, python-brace-format +msgid "" +"Ending address must be lower than the starting address ({start_address})" +msgstr "" + +#: ipam/models/ip.py:589 +#, python-brace-format +msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" +msgstr "" + +#: ipam/models/ip.py:598 +#, python-brace-format +msgid "Defined range exceeds maximum supported size ({max_size})" +msgstr "" + +#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +msgid "address" +msgstr "" + +#: ipam/models/ip.py:733 +msgid "The operational status of this IP" +msgstr "" + +#: ipam/models/ip.py:740 +msgid "The functional role of this IP" +msgstr "" + +#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:75 +msgid "NAT (inside)" +msgstr "" + +#: ipam/models/ip.py:765 +msgid "The IP for which this address is the \"outside\" IP" +msgstr "" + +#: ipam/models/ip.py:772 +msgid "Hostname or FQDN (not case-sensitive)" +msgstr "" + +#: ipam/models/ip.py:788 ipam/models/services.py:94 +msgid "IP addresses" +msgstr "" + +#: ipam/models/ip.py:844 +msgid "Cannot create IP address with /0 mask." +msgstr "" + +#: ipam/models/ip.py:856 +#, python-brace-format +msgid "Duplicate IP address found in {table}: {ipaddress}" +msgstr "" + +#: ipam/models/ip.py:885 +msgid "Only IPv6 addresses can be assigned SLAAC status" +msgstr "" + +#: ipam/models/services.py:33 +msgid "port numbers" +msgstr "" + +#: ipam/models/services.py:59 +msgid "service template" +msgstr "" + +#: ipam/models/services.py:60 +msgid "service templates" +msgstr "" + +#: ipam/models/services.py:95 +msgid "The specific IP addresses (if any) to which this service is bound" +msgstr "" + +#: ipam/models/services.py:102 +msgid "service" +msgstr "" + +#: ipam/models/services.py:103 +msgid "services" +msgstr "" + +#: ipam/models/services.py:117 +msgid "" +"A service cannot be associated with both a device and a virtual machine." +msgstr "" + +#: ipam/models/services.py:119 +msgid "A service must be associated with either a device or a virtual machine." +msgstr "" + +#: ipam/models/vlans.py:49 +msgid "minimum VLAN ID" +msgstr "" + +#: ipam/models/vlans.py:55 +msgid "Lowest permissible ID of a child VLAN" +msgstr "" + +#: ipam/models/vlans.py:58 +msgid "maximum VLAN ID" +msgstr "" + +#: ipam/models/vlans.py:64 +msgid "Highest permissible ID of a child VLAN" +msgstr "" + +#: ipam/models/vlans.py:85 +msgid "VLAN groups" +msgstr "" + +#: ipam/models/vlans.py:95 +msgid "Cannot set scope_type without scope_id." +msgstr "" + +#: ipam/models/vlans.py:97 +msgid "Cannot set scope_id without scope_type." +msgstr "" + +#: ipam/models/vlans.py:102 +msgid "Maximum child VID must be greater than or equal to minimum child VID" +msgstr "" + +#: ipam/models/vlans.py:145 +msgid "The specific site to which this VLAN is assigned (if any)" +msgstr "" + +#: ipam/models/vlans.py:153 +msgid "VLAN group (optional)" +msgstr "" + +#: ipam/models/vlans.py:161 +msgid "Numeric VLAN ID (1-4094)" +msgstr "" + +#: ipam/models/vlans.py:179 +msgid "Operational status of this VLAN" +msgstr "" + +#: ipam/models/vlans.py:187 +msgid "The primary function of this VLAN" +msgstr "" + +#: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 +#: ipam/views.py:940 netbox/navigation/menu.py:181 +#: netbox/navigation/menu.py:183 +msgid "VLANs" +msgstr "" + +#: ipam/models/vlans.py:230 +#, python-brace-format +msgid "" +"VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " +"site {site}." +msgstr "" + +#: ipam/models/vlans.py:238 +#, python-brace-format +msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgstr "" + +#: ipam/models/vrfs.py:30 +msgid "route distinguisher" +msgstr "" + +#: ipam/models/vrfs.py:31 +msgid "Unique route distinguisher (as defined in RFC 4364)" +msgstr "" + +#: ipam/models/vrfs.py:42 +msgid "enforce unique space" +msgstr "" + +#: ipam/models/vrfs.py:43 +msgid "Prevent duplicate prefixes/IP addresses within this VRF" +msgstr "" + +#: ipam/models/vrfs.py:63 netbox/navigation/menu.py:174 +#: netbox/navigation/menu.py:176 +msgid "VRFs" +msgstr "" + +#: ipam/models/vrfs.py:82 +msgid "Route target value (formatted in accordance with RFC 4360)" +msgstr "" + +#: ipam/models/vrfs.py:94 +msgid "route target" +msgstr "" + +#: ipam/models/vrfs.py:95 +msgid "route targets" +msgstr "" + +#: ipam/tables/asn.py:52 +msgid "ASDOT" +msgstr "" + +#: ipam/tables/asn.py:57 +msgid "Site Count" +msgstr "" + +#: ipam/tables/asn.py:62 +msgid "Provider Count" +msgstr "" + +#: ipam/tables/ip.py:94 netbox/navigation/menu.py:167 +#: netbox/navigation/menu.py:169 +msgid "Aggregates" +msgstr "" + +#: ipam/tables/ip.py:124 +msgid "Added" +msgstr "" + +#: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 +#: ipam/views.py:349 netbox/navigation/menu.py:153 +#: netbox/navigation/menu.py:155 templates/ipam/vlan.html:87 +msgid "Prefixes" +msgstr "" + +#: ipam/tables/ip.py:130 ipam/tables/ip.py:267 ipam/tables/ip.py:320 +#: ipam/tables/vlans.py:82 templates/dcim/device.html:263 +#: templates/ipam/aggregate.html:25 templates/ipam/iprange.html:32 +#: templates/ipam/prefix.html:100 +msgid "Utilization" +msgstr "" + +#: ipam/tables/ip.py:170 netbox/navigation/menu.py:149 +msgid "IP Ranges" +msgstr "" + +#: ipam/tables/ip.py:220 +msgid "Prefix (Flat)" +msgstr "" + +#: ipam/tables/ip.py:224 templates/dcim/rack_edit.html:52 +msgid "Depth" +msgstr "" + +#: ipam/tables/ip.py:261 +msgid "Pool" +msgstr "" + +#: ipam/tables/ip.py:264 ipam/tables/ip.py:317 +msgid "Marked Utilized" +msgstr "" + +#: ipam/tables/ip.py:301 +msgid "Start address" +msgstr "" + +#: ipam/tables/ip.py:379 +msgid "NAT (Inside)" +msgstr "" + +#: ipam/tables/ip.py:384 +msgid "NAT (Outside)" +msgstr "" + +#: ipam/tables/ip.py:389 +msgid "Assigned" +msgstr "" + +#: ipam/tables/ip.py:424 templates/vpn/l2vpntermination.html:19 +#: vpn/forms/filtersets.py:235 +msgid "Assigned Object" +msgstr "" + +#: ipam/tables/vlans.py:68 +msgid "Scope Type" +msgstr "" + +#: ipam/tables/vlans.py:107 ipam/tables/vlans.py:210 +#: templates/dcim/inc/interface_vlans_table.html:4 +msgid "VID" +msgstr "" + +#: ipam/tables/vrfs.py:30 +msgid "RD" +msgstr "" + +#: ipam/tables/vrfs.py:33 +msgid "Unique" +msgstr "" + +#: ipam/tables/vrfs.py:36 vpn/tables/l2vpn.py:27 +msgid "Import Targets" +msgstr "" + +#: ipam/tables/vrfs.py:41 vpn/tables/l2vpn.py:32 +msgid "Export Targets" +msgstr "" + +#: ipam/views.py:536 +msgid "Child Prefixes" +msgstr "" + +#: ipam/views.py:571 +msgid "Child Ranges" +msgstr "" + +#: ipam/views.py:868 +msgid "Related IPs" +msgstr "" + +#: ipam/views.py:1091 +msgid "Device Interfaces" +msgstr "" + +#: ipam/views.py:1109 +msgid "VM Interfaces" +msgstr "" + +#: netbox/config/parameters.py:22 templates/core/configrevision.html:111 +msgid "Login banner" +msgstr "" + +#: netbox/config/parameters.py:24 +msgid "Additional content to display on the login page" +msgstr "" + +#: netbox/config/parameters.py:33 templates/core/configrevision.html:115 +msgid "Maintenance banner" +msgstr "" + +#: netbox/config/parameters.py:35 +msgid "Additional content to display when in maintenance mode" +msgstr "" + +#: netbox/config/parameters.py:44 templates/core/configrevision.html:119 +msgid "Top banner" +msgstr "" + +#: netbox/config/parameters.py:46 +msgid "Additional content to display at the top of every page" +msgstr "" + +#: netbox/config/parameters.py:55 templates/core/configrevision.html:123 +msgid "Bottom banner" +msgstr "" + +#: netbox/config/parameters.py:57 +msgid "Additional content to display at the bottom of every page" +msgstr "" + +#: netbox/config/parameters.py:68 +msgid "Globally unique IP space" +msgstr "" + +#: netbox/config/parameters.py:70 +msgid "Enforce unique IP addressing within the global table" +msgstr "" + +#: netbox/config/parameters.py:75 templates/core/configrevision.html:87 +msgid "Prefer IPv4" +msgstr "" + +#: netbox/config/parameters.py:77 +msgid "Prefer IPv4 addresses over IPv6" +msgstr "" + +#: netbox/config/parameters.py:84 +msgid "Rack unit height" +msgstr "" + +#: netbox/config/parameters.py:86 +msgid "Default unit height for rendered rack elevations" +msgstr "" + +#: netbox/config/parameters.py:91 +msgid "Rack unit width" +msgstr "" + +#: netbox/config/parameters.py:93 +msgid "Default unit width for rendered rack elevations" +msgstr "" + +#: netbox/config/parameters.py:100 +msgid "Powerfeed voltage" +msgstr "" + +#: netbox/config/parameters.py:102 +msgid "Default voltage for powerfeeds" +msgstr "" + +#: netbox/config/parameters.py:107 +msgid "Powerfeed amperage" +msgstr "" + +#: netbox/config/parameters.py:109 +msgid "Default amperage for powerfeeds" +msgstr "" + +#: netbox/config/parameters.py:114 +msgid "Powerfeed max utilization" +msgstr "" + +#: netbox/config/parameters.py:116 +msgid "Default max utilization for powerfeeds" +msgstr "" + +#: netbox/config/parameters.py:123 templates/core/configrevision.html:99 +msgid "Allowed URL schemes" +msgstr "" + +#: netbox/config/parameters.py:128 +msgid "Permitted schemes for URLs in user-provided content" +msgstr "" + +#: netbox/config/parameters.py:136 +msgid "Default page size" +msgstr "" + +#: netbox/config/parameters.py:142 +msgid "Maximum page size" +msgstr "" + +#: netbox/config/parameters.py:150 templates/core/configrevision.html:151 +msgid "Custom validators" +msgstr "" + +#: netbox/config/parameters.py:152 +msgid "Custom validation rules (JSON)" +msgstr "" + +#: netbox/config/parameters.py:160 templates/core/configrevision.html:161 +msgid "Protection rules" +msgstr "" + +#: netbox/config/parameters.py:162 +msgid "Deletion protection rules (JSON)" +msgstr "" + +#: netbox/config/parameters.py:172 +msgid "Default preferences" +msgstr "" + +#: netbox/config/parameters.py:174 +msgid "Default preferences for new users" +msgstr "" + +#: netbox/config/parameters.py:181 templates/core/configrevision.html:197 +msgid "Maintenance mode" +msgstr "" + +#: netbox/config/parameters.py:183 +msgid "Enable maintenance mode" +msgstr "" + +#: netbox/config/parameters.py:188 templates/core/configrevision.html:201 +msgid "GraphQL enabled" +msgstr "" + +#: netbox/config/parameters.py:190 +msgid "Enable the GraphQL API" +msgstr "" + +#: netbox/config/parameters.py:195 templates/core/configrevision.html:205 +msgid "Changelog retention" +msgstr "" + +#: netbox/config/parameters.py:197 +msgid "Days to retain changelog history (set to zero for unlimited)" +msgstr "" + +#: netbox/config/parameters.py:202 +msgid "Job result retention" +msgstr "" + +#: netbox/config/parameters.py:204 +msgid "Days to retain job result history (set to zero for unlimited)" +msgstr "" + +#: netbox/config/parameters.py:209 templates/core/configrevision.html:213 +msgid "Maps URL" +msgstr "" + +#: netbox/config/parameters.py:211 +msgid "Base URL for mapping geographic locations" +msgstr "" + +#: netbox/forms/__init__.py:13 +msgid "Partial match" +msgstr "" + +#: netbox/forms/__init__.py:14 +msgid "Exact match" +msgstr "" + +#: netbox/forms/__init__.py:15 +msgid "Starts with" +msgstr "" + +#: netbox/forms/__init__.py:16 +msgid "Ends with" +msgstr "" + +#: netbox/forms/__init__.py:17 +msgid "Regex" +msgstr "" + +#: netbox/forms/__init__.py:35 +msgid "Object type(s)" +msgstr "" + +#: netbox/forms/base.py:66 +msgid "Id" +msgstr "" + +#: netbox/forms/base.py:105 +msgid "Add tags" +msgstr "" + +#: netbox/forms/base.py:110 +msgid "Remove tags" +msgstr "" + +#: netbox/models/features.py:434 +msgid "Remote data source" +msgstr "" + +#: netbox/models/features.py:444 +msgid "data path" +msgstr "" + +#: netbox/models/features.py:448 +msgid "Path to remote file (relative to data source root)" +msgstr "" + +#: netbox/models/features.py:451 +msgid "auto sync enabled" +msgstr "" + +#: netbox/models/features.py:453 +msgid "Enable automatic synchronization of data when the data file is updated" +msgstr "" + +#: netbox/models/features.py:456 +msgid "date synced" +msgstr "" + +#: netbox/navigation/menu.py:12 +msgid "Organization" +msgstr "" + +#: netbox/navigation/menu.py:20 +msgid "Site Groups" +msgstr "" + +#: netbox/navigation/menu.py:28 +msgid "Rack Roles" +msgstr "" + +#: netbox/navigation/menu.py:32 +msgid "Elevations" +msgstr "" + +#: netbox/navigation/menu.py:41 +msgid "Tenant Groups" +msgstr "" + +#: netbox/navigation/menu.py:48 +msgid "Contact Groups" +msgstr "" + +#: netbox/navigation/menu.py:49 templates/tenancy/contactrole.html:8 +msgid "Contact Roles" +msgstr "" + +#: netbox/navigation/menu.py:50 +msgid "Contact Assignments" +msgstr "" + +#: netbox/navigation/menu.py:64 +msgid "Modules" +msgstr "" + +#: netbox/navigation/menu.py:65 templates/dcim/devicerole.html:8 +msgid "Device Roles" +msgstr "" + +#: netbox/navigation/menu.py:68 templates/dcim/device.html:162 +#: templates/dcim/virtualdevicecontext.html:8 +msgid "Virtual Device Contexts" +msgstr "" + +#: netbox/navigation/menu.py:76 +msgid "Manufacturers" +msgstr "" + +#: netbox/navigation/menu.py:80 +msgid "Device Components" +msgstr "" + +#: netbox/navigation/menu.py:92 templates/dcim/inventoryitemrole.html:8 +msgid "Inventory Item Roles" +msgstr "" + +#: netbox/navigation/menu.py:99 netbox/navigation/menu.py:103 +msgid "Connections" +msgstr "" + +#: netbox/navigation/menu.py:105 +msgid "Cables" +msgstr "" + +#: netbox/navigation/menu.py:106 +msgid "Wireless Links" +msgstr "" + +#: netbox/navigation/menu.py:109 +msgid "Interface Connections" +msgstr "" + +#: netbox/navigation/menu.py:114 +msgid "Console Connections" +msgstr "" + +#: netbox/navigation/menu.py:119 +msgid "Power Connections" +msgstr "" + +#: netbox/navigation/menu.py:135 +msgid "Wireless LAN Groups" +msgstr "" + +#: netbox/navigation/menu.py:156 +msgid "Prefix & VLAN Roles" +msgstr "" + +#: netbox/navigation/menu.py:162 +msgid "ASN Ranges" +msgstr "" + +#: netbox/navigation/menu.py:184 +msgid "VLAN Groups" +msgstr "" + +#: netbox/navigation/menu.py:191 +msgid "Service Templates" +msgstr "" + +#: netbox/navigation/menu.py:192 templates/dcim/device.html:304 +#: templates/ipam/ipaddress.html:122 +#: templates/virtualization/virtualmachine.html:157 +msgid "Services" +msgstr "" + +#: netbox/navigation/menu.py:199 +msgid "VPN" +msgstr "" + +#: netbox/navigation/menu.py:203 netbox/navigation/menu.py:205 +#: vpn/tables/tunnels.py:24 +msgid "Tunnels" +msgstr "" + +#: netbox/navigation/menu.py:206 templates/vpn/tunnelgroup.html:8 +msgid "Tunnel Groups" +msgstr "" + +#: netbox/navigation/menu.py:207 +msgid "Tunnel Terminations" +msgstr "" + +#: netbox/navigation/menu.py:211 netbox/navigation/menu.py:213 +#: vpn/models/l2vpn.py:64 +msgid "L2VPNs" +msgstr "" + +#: netbox/navigation/menu.py:214 templates/vpn/l2vpn.html:57 +#: templates/vpn/tunnel.html:73 vpn/tables/tunnels.py:54 +msgid "Terminations" +msgstr "" + +#: netbox/navigation/menu.py:220 +msgid "IKE Proposals" +msgstr "" + +#: netbox/navigation/menu.py:221 templates/vpn/ikeproposal.html:42 +msgid "IKE Policies" +msgstr "" + +#: netbox/navigation/menu.py:222 +msgid "IPSec Proposals" +msgstr "" + +#: netbox/navigation/menu.py:223 templates/vpn/ipsecproposal.html:38 +msgid "IPSec Policies" +msgstr "" + +#: netbox/navigation/menu.py:224 templates/vpn/ikepolicy.html:39 +#: templates/vpn/ipsecpolicy.html:26 +msgid "IPSec Profiles" +msgstr "" + +#: netbox/navigation/menu.py:231 templates/dcim/device_edit.html:78 +msgid "Virtualization" +msgstr "" + +#: netbox/navigation/menu.py:235 netbox/navigation/menu.py:237 +#: virtualization/views.py:186 +msgid "Virtual Machines" +msgstr "" + +#: netbox/navigation/menu.py:239 +#: templates/virtualization/virtualmachine.html:177 +#: templates/virtualization/virtualmachine/base.html:32 +#: templates/virtualization/virtualmachine_list.html:21 +#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +msgid "Virtual Disks" +msgstr "" + +#: netbox/navigation/menu.py:246 +msgid "Cluster Types" +msgstr "" + +#: netbox/navigation/menu.py:247 +msgid "Cluster Groups" +msgstr "" + +#: netbox/navigation/menu.py:261 +msgid "Circuit Types" +msgstr "" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 +msgid "Providers" +msgstr "" + +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:53 +msgid "Provider Accounts" +msgstr "" + +#: netbox/navigation/menu.py:269 +msgid "Provider Networks" +msgstr "" + +#: netbox/navigation/menu.py:283 +msgid "Power Panels" +msgstr "" + +#: netbox/navigation/menu.py:294 +msgid "Configurations" +msgstr "" + +#: netbox/navigation/menu.py:296 +msgid "Config Contexts" +msgstr "" + +#: netbox/navigation/menu.py:297 +msgid "Config Templates" +msgstr "" + +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 +msgid "Customization" +msgstr "" + +#: netbox/navigation/menu.py:310 +#: templates/circuits/circuittermination_edit.html:53 +#: templates/dcim/cable_edit.html:77 templates/dcim/device_edit.html:103 +#: templates/dcim/inventoryitem_edit.html:102 templates/dcim/rack_edit.html:81 +#: templates/dcim/virtualchassis_add.html:31 +#: templates/dcim/virtualchassis_edit.html:41 +#: templates/generic/bulk_edit.html:92 templates/htmx/form.html:32 +#: templates/inc/panels/custom_fields.html:7 +#: templates/ipam/ipaddress_bulk_add.html:35 +#: templates/ipam/ipaddress_edit.html:88 templates/ipam/service_create.html:75 +#: templates/ipam/service_edit.html:62 templates/ipam/vlan_edit.html:63 +#: templates/tenancy/contactassignment_edit.html:31 +#: templates/vpn/l2vpntermination_edit.html:51 +msgid "Custom Fields" +msgstr "" + +#: netbox/navigation/menu.py:311 +msgid "Custom Field Choices" +msgstr "" + +#: netbox/navigation/menu.py:312 +msgid "Custom Links" +msgstr "" + +#: netbox/navigation/menu.py:313 +msgid "Export Templates" +msgstr "" + +#: netbox/navigation/menu.py:314 +msgid "Saved Filters" +msgstr "" + +#: netbox/navigation/menu.py:316 +msgid "Image Attachments" +msgstr "" + +#: netbox/navigation/menu.py:320 +msgid "Reports & Scripts" +msgstr "" + +#: netbox/navigation/menu.py:340 +msgid "Operations" +msgstr "" + +#: netbox/navigation/menu.py:344 +msgid "Integrations" +msgstr "" + +#: netbox/navigation/menu.py:346 +msgid "Data Sources" +msgstr "" + +#: netbox/navigation/menu.py:347 +msgid "Event Rules" +msgstr "" + +#: netbox/navigation/menu.py:348 +msgid "Webhooks" +msgstr "" + +#: netbox/navigation/menu.py:352 netbox/navigation/menu.py:356 +#: netbox/views/generic/feature_views.py:151 +#: templates/extras/report/base.html:37 templates/extras/script/base.html:36 +msgid "Jobs" +msgstr "" + +#: netbox/navigation/menu.py:362 +msgid "Logging" +msgstr "" + +#: netbox/navigation/menu.py:364 +msgid "Journal Entries" +msgstr "" + +#: netbox/navigation/menu.py:365 templates/extras/objectchange.html:8 +#: templates/extras/objectchange_list.html:4 +msgid "Change Log" +msgstr "" + +#: netbox/navigation/menu.py:372 templates/inc/profile_button.html:18 +msgid "Admin" +msgstr "" + +#: netbox/navigation/menu.py:381 templates/users/group.html:27 +#: users/forms/model_forms.py:242 users/forms/model_forms.py:255 +#: users/forms/model_forms.py:309 users/tables.py:105 +msgid "Users" +msgstr "" + +#: netbox/navigation/menu.py:404 users/forms/model_forms.py:182 +#: users/forms/model_forms.py:195 users/forms/model_forms.py:314 +#: users/tables.py:35 users/tables.py:109 +msgid "Groups" +msgstr "" + +#: netbox/navigation/menu.py:426 templates/account/base.html:21 +#: templates/inc/profile_button.html:39 +msgid "API Tokens" +msgstr "" + +#: netbox/navigation/menu.py:433 users/forms/model_forms.py:188 +#: users/forms/model_forms.py:197 users/forms/model_forms.py:248 +#: users/forms/model_forms.py:256 +msgid "Permissions" +msgstr "" + +#: netbox/navigation/menu.py:445 +msgid "Current Config" +msgstr "" + +#: netbox/navigation/menu.py:451 +msgid "Config Revisions" +msgstr "" + +#: netbox/navigation/menu.py:491 templates/500.html:35 +#: templates/account/preferences.html:29 +msgid "Plugins" +msgstr "" + +#: netbox/preferences.py:17 +msgid "Color mode" +msgstr "" + +#: netbox/preferences.py:25 +msgid "Page length" +msgstr "" + +#: netbox/preferences.py:27 +msgid "The default number of objects to display per page" +msgstr "" + +#: netbox/preferences.py:31 +msgid "Paginator placement" +msgstr "" + +#: netbox/preferences.py:37 +msgid "Where the paginator controls will be displayed relative to a table" +msgstr "" + +#: netbox/preferences.py:43 +msgid "Data format" +msgstr "" + +#: netbox/tables/columns.py:175 +msgid "Toggle all" +msgstr "" + +#: netbox/tables/columns.py:277 templates/inc/profile_button.html:56 +msgid "Toggle Dropdown" +msgstr "" + +#: netbox/tables/columns.py:542 templates/core/job.html:40 +msgid "Error" +msgstr "" + +#: netbox/tables/tables.py:243 templates/generic/bulk_import.html:115 +msgid "Field" +msgstr "" + +#: netbox/tables/tables.py:246 +msgid "Value" +msgstr "" + +#: netbox/tables/tables.py:259 +msgid "No results found" +msgstr "" + +#: netbox/tests/dummy_plugin/navigation.py:29 +msgid "Dummy Plugin" +msgstr "" + +#: netbox/views/generic/feature_views.py:38 +msgid "Changelog" +msgstr "" + +#: netbox/views/generic/feature_views.py:91 +msgid "Journal" +msgstr "" + +#: templates/403.html:4 +msgid "Access Denied" +msgstr "" + +#: templates/403.html:9 +msgid "You do not have permission to access this page" +msgstr "" + +#: templates/404.html:4 +msgid "Page Not Found" +msgstr "" + +#: templates/404.html:9 +msgid "The requested page does not exist" +msgstr "" + +#: templates/500.html:7 templates/500.html:18 +msgid "Server Error" +msgstr "" + +#: templates/500.html:23 +msgid "There was a problem with your request. Please contact an administrator" +msgstr "" + +#: templates/500.html:28 +msgid "The complete exception is provided below" +msgstr "" + +#: templates/500.html:33 +msgid "Python version" +msgstr "" + +#: templates/500.html:34 +msgid "NetBox version" +msgstr "" + +#: templates/500.html:36 +msgid "None installed" +msgstr "" + +#: templates/500.html:39 +msgid "If further assistance is required, please post to the" +msgstr "" + +#: templates/500.html:39 +msgid "NetBox discussion forum" +msgstr "" + +#: templates/500.html:39 +msgid "on GitHub" +msgstr "" + +#: templates/500.html:42 templates/base/40x.html:17 +msgid "Home Page" +msgstr "" + +#: templates/account/base.html:7 templates/inc/profile_button.html:24 +#: vpn/forms/bulk_edit.py:256 vpn/forms/filtersets.py:186 +#: vpn/forms/model_forms.py:372 +msgid "Profile" +msgstr "" + +#: templates/account/base.html:13 templates/inc/profile_button.html:34 +msgid "Preferences" +msgstr "" + +#: templates/account/password.html:5 +msgid "Change Password" +msgstr "" + +#: templates/account/password.html:17 templates/account/preferences.html:82 +#: templates/core/configrevision_restore.html:80 +#: templates/dcim/devicebay_populate.html:34 +#: templates/dcim/virtualchassis_add_member.html:24 +#: templates/dcim/virtualchassis_edit.html:104 +#: templates/extras/object_journal.html:26 templates/extras/script.html:36 +#: templates/generic/bulk_add_component.html:55 +#: templates/generic/bulk_delete.html:46 templates/generic/bulk_edit.html:125 +#: templates/generic/bulk_import.html:53 templates/generic/bulk_import.html:75 +#: templates/generic/bulk_import.html:97 templates/generic/bulk_remove.html:42 +#: templates/generic/bulk_rename.html:44 +#: templates/generic/confirmation_form.html:20 +#: templates/generic/object_edit.html:76 templates/htmx/delete_form.html:53 +#: templates/htmx/delete_form.html:55 templates/ipam/ipaddress_assign.html:31 +#: templates/virtualization/cluster_add_devices.html:30 +msgid "Cancel" +msgstr "" + +#: templates/account/password.html:18 templates/account/preferences.html:83 +#: templates/dcim/devicebay_populate.html:35 +#: templates/dcim/virtualchassis_add_member.html:26 +#: templates/dcim/virtualchassis_edit.html:106 +#: templates/extras/dashboard/widget_add.html:26 +#: templates/extras/dashboard/widget_config.html:19 +#: templates/extras/object_journal.html:27 +#: templates/generic/object_edit.html:66 +#: utilities/templates/helpers/applied_filters.html:16 +#: utilities/templates/helpers/table_config_form.html:40 +msgid "Save" +msgstr "" + +#: templates/account/preferences.html:41 +msgid "Table Configurations" +msgstr "" + +#: templates/account/preferences.html:46 +msgid "Clear table preferences" +msgstr "" + +#: templates/account/preferences.html:53 +msgid "Toggle All" +msgstr "" + +#: templates/account/preferences.html:55 +msgid "Table" +msgstr "" + +#: templates/account/preferences.html:56 +msgid "Ordering" +msgstr "" + +#: templates/account/preferences.html:57 +msgid "Columns" +msgstr "" + +#: templates/account/preferences.html:76 templates/dcim/cable_trace.html:113 +#: templates/extras/object_configcontext.html:55 +msgid "None found" +msgstr "" + +#: templates/account/profile.html:6 +msgid "User Profile" +msgstr "" + +#: templates/account/profile.html:12 +msgid "Account Details" +msgstr "" + +#: templates/account/profile.html:30 templates/tenancy/contact.html:44 +#: templates/users/user.html:26 tenancy/forms/bulk_edit.py:108 +msgid "Email" +msgstr "" + +#: templates/account/profile.html:34 templates/users/user.html:30 +msgid "Account Created" +msgstr "" + +#: templates/account/profile.html:38 templates/users/user.html:42 +msgid "Superuser" +msgstr "" + +#: templates/account/profile.html:42 +msgid "Admin Access" +msgstr "" + +#: templates/account/profile.html:51 templates/users/objectpermission.html:86 +#: templates/users/user.html:51 +msgid "Assigned Groups" +msgstr "" + +#: templates/account/profile.html:56 +#: templates/circuits/circuit_terminations_swap.html:18 +#: templates/circuits/circuit_terminations_swap.html:26 +#: templates/circuits/inc/circuit_termination.html:154 +#: templates/dcim/devicebay.html:66 +#: templates/dcim/inc/panels/inventory_items.html:37 +#: templates/dcim/interface.html:306 templates/dcim/modulebay.html:79 +#: templates/extras/configcontext.html:73 templates/extras/eventrule.html:84 +#: templates/extras/htmx/script_result.html:54 +#: templates/extras/object_configcontext.html:28 +#: templates/extras/objectchange.html:128 +#: templates/extras/objectchange.html:145 templates/extras/webhook.html:79 +#: templates/extras/webhook.html:91 templates/inc/panel_table.html:12 +#: templates/inc/panels/comments.html:12 +#: templates/ipam/inc/panels/fhrp_groups.html:43 templates/users/group.html:32 +#: templates/users/group.html:42 templates/users/objectpermission.html:81 +#: templates/users/objectpermission.html:91 templates/users/user.html:56 +#: templates/users/user.html:66 +msgid "None" +msgstr "" + +#: templates/account/profile.html:66 templates/users/user.html:76 +msgid "Recent Activity" +msgstr "" + +#: templates/account/token.html:8 templates/account/token_list.html:6 +msgid "My API Tokens" +msgstr "" + +#: templates/account/token.html:11 templates/account/token.html:19 +#: templates/users/token.html:6 templates/users/token.html:14 +#: users/forms/filtersets.py:121 +msgid "Token" +msgstr "" + +#: templates/account/token.html:40 templates/users/token.html:32 +#: users/forms/bulk_edit.py:87 +msgid "Write enabled" +msgstr "" + +#: templates/account/token.html:52 templates/users/token.html:44 +msgid "Last used" +msgstr "" + +#: templates/account/token_list.html:12 +msgid "Add a Token" +msgstr "" + +#: templates/admin/index.html:10 +msgid "System" +msgstr "" + +#: templates/admin/index.html:14 +msgid "Background Tasks" +msgstr "" + +#: templates/admin/index.html:19 +msgid "Installed plugins" +msgstr "" + +#: templates/base/base.html:28 templates/extras/admin/plugins_list.html:8 +#: templates/home.html:24 +msgid "Home" +msgstr "" + +#: templates/base/layout.html:27 templates/base/layout.html:37 +#: templates/login.html:34 +msgid "NetBox logo" +msgstr "" + +#: templates/base/layout.html:76 +msgid "Debug mode is enabled" +msgstr "" + +#: templates/base/layout.html:77 +msgid "" +"Performance may be limited. Debugging should never be enabled on a " +"production system" +msgstr "" + +#: templates/base/layout.html:83 +msgid "Maintenance Mode" +msgstr "" + +#: templates/base/layout.html:134 +msgid "Docs" +msgstr "" + +#: templates/base/layout.html:139 templates/rest_framework/api.html:10 +msgid "REST API" +msgstr "" + +#: templates/base/layout.html:144 +msgid "REST API documentation" +msgstr "" + +#: templates/base/layout.html:150 +msgid "GraphQL API" +msgstr "" + +#: templates/base/layout.html:156 +msgid "Source Code" +msgstr "" + +#: templates/base/layout.html:161 +msgid "Community" +msgstr "" + +#: templates/base/sidenav.html:12 templates/base/sidenav.html:17 +msgid "NetBox Logo" +msgstr "" + +#: templates/circuits/circuit.html:48 +msgid "Install Date" +msgstr "" + +#: templates/circuits/circuit.html:52 +msgid "Termination Date" +msgstr "" + +#: templates/circuits/circuit_terminations_swap.html:4 +msgid "Swap Circuit Terminations" +msgstr "" + +#: templates/circuits/circuit_terminations_swap.html:8 +#, python-format +msgid "Swap these terminations for circuit %(circuit)s?" +msgstr "" + +#: templates/circuits/circuit_terminations_swap.html:14 +msgid "A side" +msgstr "" + +#: templates/circuits/circuit_terminations_swap.html:22 +msgid "Z side" +msgstr "" + +#: templates/circuits/circuittermination_edit.html:9 +#: templates/circuits/inc/circuit_termination.html:81 +#: templates/dcim/frontport.html:128 templates/dcim/interface.html:199 +#: templates/dcim/rearport.html:118 +msgid "Circuit Termination" +msgstr "" + +#: templates/circuits/circuittermination_edit.html:41 +msgid "Termination Details" +msgstr "" + +#: templates/circuits/circuittype.html:10 +msgid "Add Circuit" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:9 +#: templates/dcim/devicetype/component_templates.html:30 +#: templates/dcim/manufacturer.html:11 +#: templates/dcim/moduletype/component_templates.html:30 +#: templates/generic/bulk_add_component.html:8 +#: templates/users/objectpermission.html:41 +#: utilities/templates/buttons/add.html:4 +#: utilities/templates/helpers/table_config_form.html:20 +msgid "Add" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:14 +#: templates/circuits/inc/circuit_termination.html:63 +#: templates/dcim/devicetype/component_templates.html:21 +#: templates/dcim/inc/panels/inventory_items.html:24 +#: templates/dcim/moduletype/component_templates.html:21 +#: templates/dcim/powerpanel.html:61 templates/generic/object_edit.html:29 +#: templates/ipam/inc/ipaddress_edit_header.html:10 +#: templates/ipam/inc/panels/fhrp_groups.html:30 +#: utilities/templates/buttons/edit.html:3 +msgid "Edit" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:17 +msgid "Swap" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:26 +#, python-format +msgid "Termination %(side)s" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:42 +#: templates/dcim/cable.html:70 templates/dcim/cable.html:76 +#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:76 +msgid "Termination" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:46 +#: templates/dcim/consoleport.html:62 templates/dcim/consoleserverport.html:62 +#: templates/dcim/powerfeed.html:122 +msgid "Marked as connected" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:48 +msgid "to" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:58 +#: templates/circuits/inc/circuit_termination.html:59 +#: templates/dcim/frontport.html:87 +#: templates/dcim/inc/connection_endpoints.html:7 +#: templates/dcim/interface.html:160 templates/dcim/rearport.html:83 +msgid "Trace" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:62 +msgid "Edit cable" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:67 +msgid "Remove cable" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:68 +#: templates/dcim/bulk_disconnect.html:5 +#: templates/dcim/device/consoleports.html:12 +#: templates/dcim/device/consoleserverports.html:12 +#: templates/dcim/device/frontports.html:12 +#: templates/dcim/device/interfaces.html:16 +#: templates/dcim/device/poweroutlets.html:12 +#: templates/dcim/device/powerports.html:12 +#: templates/dcim/device/rearports.html:12 templates/dcim/powerpanel.html:66 +msgid "Disconnect" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:75 +#: templates/dcim/consoleport.html:71 templates/dcim/consoleserverport.html:71 +#: templates/dcim/frontport.html:109 templates/dcim/interface.html:186 +#: templates/dcim/interface.html:206 templates/dcim/powerfeed.html:136 +#: templates/dcim/poweroutlet.html:75 templates/dcim/poweroutlet.html:76 +#: templates/dcim/powerport.html:77 templates/dcim/rearport.html:105 +msgid "Connect" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:79 +#: templates/dcim/consoleport.html:78 templates/dcim/consoleserverport.html:78 +#: templates/dcim/frontport.html:18 templates/dcim/frontport.html:122 +#: templates/dcim/interface.html:193 templates/dcim/inventoryitem_edit.html:49 +#: templates/dcim/rearport.html:112 +msgid "Front Port" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:97 +msgid "Downstream" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:98 +msgid "Upstream" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:107 +msgid "Cross-Connect" +msgstr "" + +#: templates/circuits/inc/circuit_termination.html:111 +msgid "Patch Panel/Port" +msgstr "" + +#: templates/circuits/provider.html:11 +msgid "Add circuit" +msgstr "" + +#: templates/circuits/provideraccount.html:17 +msgid "Provider Account" +msgstr "" + +#: templates/core/configrevision.html:47 +msgid "Default unit height" +msgstr "" + +#: templates/core/configrevision.html:51 +msgid "Default unit width" +msgstr "" + +#: templates/core/configrevision.html:63 +msgid "Default voltage" +msgstr "" + +#: templates/core/configrevision.html:67 +msgid "Default amperage" +msgstr "" + +#: templates/core/configrevision.html:71 +msgid "Default max utilization" +msgstr "" + +#: templates/core/configrevision.html:83 +msgid "Enforce global unique" +msgstr "" + +#: templates/core/configrevision.html:135 +msgid "Paginate count" +msgstr "" + +#: templates/core/configrevision.html:139 +msgid "Max page size" +msgstr "" + +#: templates/core/configrevision.html:179 +msgid "Default user preferences" +msgstr "" + +#: templates/core/configrevision.html:209 +msgid "Job retention" +msgstr "" + +#: templates/core/configrevision.html:221 +msgid "Comment" +msgstr "" + +#: templates/core/configrevision_restore.html:8 +#: templates/core/configrevision_restore.html:43 +#: templates/core/configrevision_restore.html:79 +msgid "Restore" +msgstr "" + +#: templates/core/configrevision_restore.html:21 +msgid "Config revisions" +msgstr "" + +#: templates/core/configrevision_restore.html:54 +msgid "Parameter" +msgstr "" + +#: templates/core/configrevision_restore.html:55 +msgid "Current Value" +msgstr "" + +#: templates/core/configrevision_restore.html:56 +msgid "New Value" +msgstr "" + +#: templates/core/configrevision_restore.html:66 +msgid "Changed" +msgstr "" + +#: templates/core/datafile.html:47 +msgid "Last Updated" +msgstr "" + +#: templates/core/datafile.html:51 templates/ipam/iprange.html:28 +#: templates/virtualization/virtualdisk.html:30 +msgid "Size" +msgstr "" + +#: templates/core/datafile.html:52 +msgid "bytes" +msgstr "" + +#: templates/core/datafile.html:55 +msgid "SHA256 Hash" +msgstr "" + +#: templates/core/datasource.html:14 templates/core/datasource.html:20 +#: utilities/templates/buttons/sync.html:5 +msgid "Sync" +msgstr "" + +#: templates/core/datasource.html:51 +msgid "Last synced" +msgstr "" + +#: templates/core/datasource.html:86 +msgid "Backend" +msgstr "" + +#: templates/core/datasource.html:102 +msgid "No parameters defined" +msgstr "" + +#: templates/core/datasource.html:118 +msgid "Files" +msgstr "" + +#: templates/core/job.html:21 +msgid "Job" +msgstr "" + +#: templates/core/job.html:45 templates/extras/journalentry.html:29 +msgid "Created By" +msgstr "" + +#: templates/core/job.html:54 +msgid "Scheduling" +msgstr "" + +#: templates/core/job.html:66 +#, python-format +msgid "every %(interval)s seconds" +msgstr "" + +#: templates/dcim/bulk_disconnect.html:9 +#, python-format +msgid "" +"Are you sure you want to disconnect these %(count)s %(obj_type_plural)s?" +msgstr "" + +#: templates/dcim/cable_edit.html:12 +msgid "A Side" +msgstr "" + +#: templates/dcim/cable_edit.html:29 +msgid "B Side" +msgstr "" + +#: templates/dcim/cable_trace.html:6 +#, python-format +msgid "Cable Trace for %(object_type)s %(object)s" +msgstr "" + +#: templates/dcim/cable_trace.html:21 templates/dcim/inc/rack_elevation.html:7 +msgid "Download SVG" +msgstr "" + +#: templates/dcim/cable_trace.html:27 +msgid "Asymmetric Path" +msgstr "" + +#: templates/dcim/cable_trace.html:28 +msgid "The nodes below have no links and result in an asymmetric path" +msgstr "" + +#: templates/dcim/cable_trace.html:35 +msgid "Path split" +msgstr "" + +#: templates/dcim/cable_trace.html:36 +msgid "Select a node below to continue" +msgstr "" + +#: templates/dcim/cable_trace.html:52 +msgid "Trace Completed" +msgstr "" + +#: templates/dcim/cable_trace.html:55 +msgid "Total segments" +msgstr "" + +#: templates/dcim/cable_trace.html:59 +msgid "Total length" +msgstr "" + +#: templates/dcim/cable_trace.html:74 +msgid "No paths found" +msgstr "" + +#: templates/dcim/cable_trace.html:83 +msgid "Related Paths" +msgstr "" + +#: templates/dcim/cable_trace.html:89 +msgid "Origin" +msgstr "" + +#: templates/dcim/cable_trace.html:90 +msgid "Destination" +msgstr "" + +#: templates/dcim/cable_trace.html:91 +msgid "Segments" +msgstr "" + +#: templates/dcim/cable_trace.html:104 +msgid "Incomplete" +msgstr "" + +#: templates/dcim/component_list.html:14 +msgid "Rename Selected" +msgstr "" + +#: templates/dcim/consoleport.html:67 templates/dcim/consoleserverport.html:67 +#: templates/dcim/frontport.html:105 templates/dcim/interface.html:182 +#: templates/dcim/poweroutlet.html:73 templates/dcim/powerport.html:73 +msgid "Not Connected" +msgstr "" + +#: templates/dcim/consoleport.html:75 templates/dcim/consoleserverport.html:18 +#: templates/dcim/frontport.html:116 templates/dcim/inventoryitem_edit.html:44 +msgid "Console Server Port" +msgstr "" + +#: templates/dcim/device.html:35 +msgid "Highlight device" +msgstr "" + +#: templates/dcim/device.html:57 +msgid "Not racked" +msgstr "" + +#: templates/dcim/device.html:64 templates/dcim/site.html:96 +msgid "GPS Coordinates" +msgstr "" + +#: templates/dcim/device.html:70 templates/dcim/site.html:102 +msgid "Map It" +msgstr "" + +#: templates/dcim/device.html:110 templates/dcim/inventoryitem.html:57 +#: templates/dcim/module.html:79 templates/dcim/modulebay.html:73 +#: templates/dcim/rack.html:62 +msgid "Asset Tag" +msgstr "" + +#: templates/dcim/device.html:153 +msgid "View Virtual Chassis" +msgstr "" + +#: templates/dcim/device.html:170 +msgid "Create VDC" +msgstr "" + +#: templates/dcim/device.html:179 templates/dcim/device_edit.html:64 +#: virtualization/forms/model_forms.py:226 +msgid "Management" +msgstr "" + +#: templates/dcim/device.html:200 templates/dcim/device.html:216 +#: templates/virtualization/virtualmachine.html:56 +#: templates/virtualization/virtualmachine.html:72 +msgid "NAT for" +msgstr "" + +#: templates/dcim/device.html:202 templates/dcim/device.html:218 +#: templates/virtualization/virtualmachine.html:58 +#: templates/virtualization/virtualmachine.html:74 +msgid "NAT" +msgstr "" + +#: templates/dcim/device.html:254 templates/dcim/rack.html:70 +msgid "Power Utilization" +msgstr "" + +#: templates/dcim/device.html:259 +msgid "Input" +msgstr "" + +#: templates/dcim/device.html:260 +msgid "Outlets" +msgstr "" + +#: templates/dcim/device.html:261 +msgid "Allocated" +msgstr "" + +#: templates/dcim/device.html:270 templates/dcim/device.html:272 +#: templates/dcim/device.html:288 templates/dcim/powerfeed.html:70 +msgid "VA" +msgstr "" + +#: templates/dcim/device.html:282 +msgctxt "Leg of a power feed" +msgid "Leg" +msgstr "" + +#: templates/dcim/device.html:312 +#: templates/virtualization/virtualmachine.html:165 +msgid "Add a service" +msgstr "" + +#: templates/dcim/device.html:319 templates/dcim/rack.html:77 +#: templates/dcim/rack_edit.html:38 +msgid "Dimensions" +msgstr "" + +#: templates/dcim/device/base.html:21 templates/dcim/device_list.html:9 +#: templates/dcim/devicetype/base.html:18 templates/dcim/module.html:18 +#: templates/dcim/moduletype/base.html:18 +#: templates/virtualization/virtualmachine/base.html:22 +#: templates/virtualization/virtualmachine_list.html:8 +msgid "Add Components" +msgstr "" + +#: templates/dcim/device/consoleports.html:24 +msgid "Add Console Ports" +msgstr "" + +#: templates/dcim/device/consoleserverports.html:24 +msgid "Add Console Server Ports" +msgstr "" + +#: templates/dcim/device/devicebays.html:10 +msgid "Add Device Bays" +msgstr "" + +#: templates/dcim/device/frontports.html:24 +msgid "Add Front Ports" +msgstr "" + +#: templates/dcim/device/inc/interface_table_controls.html:9 +msgid "Hide Enabled" +msgstr "" + +#: templates/dcim/device/inc/interface_table_controls.html:10 +msgid "Hide Disabled" +msgstr "" + +#: templates/dcim/device/inc/interface_table_controls.html:11 +msgid "Hide Virtual" +msgstr "" + +#: templates/dcim/device/inc/interface_table_controls.html:12 +msgid "Hide Disconnected" +msgstr "" + +#: templates/dcim/device/interfaces.html:28 +msgid "Add Interfaces" +msgstr "" + +#: templates/dcim/device/inventory.html:10 +#: templates/dcim/inc/panels/inventory_items.html:46 +msgid "Add Inventory Item" +msgstr "" + +#: templates/dcim/device/modulebays.html:10 +msgid "Add Module Bays" +msgstr "" + +#: templates/dcim/device/poweroutlets.html:24 +msgid "Add Power Outlets" +msgstr "" + +#: templates/dcim/device/powerports.html:24 +msgid "Add Power Port" +msgstr "" + +#: templates/dcim/device/rearports.html:24 +msgid "Add Rear Ports" +msgstr "" + +#: templates/dcim/device/render_config.html:5 +#: templates/virtualization/virtualmachine/render_config.html:5 +msgid "Config" +msgstr "" + +#: templates/dcim/device/render_config.html:37 +#: templates/virtualization/virtualmachine/render_config.html:37 +msgid "Context Data" +msgstr "" + +#: templates/dcim/device/render_config.html:57 +#: templates/virtualization/virtualmachine/render_config.html:57 +msgid "Download" +msgstr "" + +#: templates/dcim/device/render_config.html:60 +#: templates/virtualization/virtualmachine/render_config.html:60 +msgid "Rendered Config" +msgstr "" + +#: templates/dcim/device/render_config.html:65 +#: templates/virtualization/virtualmachine/render_config.html:65 +msgid "No configuration template found" +msgstr "" + +#: templates/dcim/device_edit.html:44 +msgid "Parent Bay" +msgstr "" + +#: templates/dcim/device_edit.html:48 +#: utilities/templates/form_helpers/render_field.html:20 +msgid "Regenerate Slug" +msgstr "" + +#: templates/dcim/device_edit.html:49 templates/generic/bulk_remove.html:7 +#: utilities/templates/helpers/table_config_form.html:23 +msgid "Remove" +msgstr "" + +#: templates/dcim/device_edit.html:110 +msgid "Local Config Context Data" +msgstr "" + +#: templates/dcim/device_list.html:82 +#: templates/dcim/devicetype/component_templates.html:18 +#: templates/dcim/moduletype/component_templates.html:18 +#: templates/generic/bulk_rename.html:34 +#: templates/virtualization/virtualmachine/interfaces.html:11 +#: templates/virtualization/virtualmachine/virtual_disks.html:11 +msgid "Rename" +msgstr "" + +#: templates/dcim/devicebay.html:18 +msgid "Device Bay" +msgstr "" + +#: templates/dcim/devicebay.html:48 +msgid "Installed Device" +msgstr "" + +#: templates/dcim/devicebay_delete.html:6 +#, python-format +msgid "Delete device bay %(devicebay)s?" +msgstr "" + +#: templates/dcim/devicebay_delete.html:11 +#, python-format +msgid "" +"Are you sure you want to delete this device bay from %(device)s?" +msgstr "" + +#: templates/dcim/devicebay_depopulate.html:6 +#, python-format +msgid "Remove %(device)s from %(device_bay)s?" +msgstr "" + +#: templates/dcim/devicebay_depopulate.html:13 +#, python-format +msgid "" +"Are you sure you want to remove %(device)s from " +"%(device_bay)s?" +msgstr "" + +#: templates/dcim/devicebay_populate.html:13 +msgid "Populate" +msgstr "" + +#: templates/dcim/devicebay_populate.html:22 +msgid "Bay" +msgstr "" + +#: templates/dcim/devicerole.html:14 templates/dcim/platform.html:17 +msgid "Add Device" +msgstr "" + +#: templates/dcim/devicerole.html:43 +msgid "VM Role" +msgstr "" + +#: templates/dcim/devicetype.html:21 templates/dcim/moduletype.html:19 +msgid "Model Name" +msgstr "" + +#: templates/dcim/devicetype.html:28 templates/dcim/moduletype.html:23 +msgid "Part Number" +msgstr "" + +#: templates/dcim/devicetype.html:40 +msgid "Height (U" +msgstr "" + +#: templates/dcim/devicetype.html:44 +msgid "Exclude From Utilization" +msgstr "" + +#: templates/dcim/devicetype.html:62 +msgid "Parent/Child" +msgstr "" + +#: templates/dcim/devicetype.html:74 +msgid "Front Image" +msgstr "" + +#: templates/dcim/devicetype.html:86 +msgid "Rear Image" +msgstr "" + +#: templates/dcim/frontport.html:57 +msgid "Rear Port Position" +msgstr "" + +#: templates/dcim/frontport.html:79 templates/dcim/interface.html:150 +#: templates/dcim/poweroutlet.html:67 templates/dcim/powerport.html:67 +#: templates/dcim/rearport.html:75 +msgid "Marked as Connected" +msgstr "" + +#: templates/dcim/frontport.html:93 templates/dcim/rearport.html:89 +msgid "Connection Status" +msgstr "" + +#: templates/dcim/inc/cable_termination.html:65 +msgid "No termination" +msgstr "" + +#: templates/dcim/inc/cable_toggle_buttons.html:4 +msgid "Mark Planned" +msgstr "" + +#: templates/dcim/inc/cable_toggle_buttons.html:8 +msgid "Mark Installed" +msgstr "" + +#: templates/dcim/inc/connection_endpoints.html:13 +msgid "Path Status" +msgstr "" + +#: templates/dcim/inc/connection_endpoints.html:18 +msgid "Not Reachable" +msgstr "" + +#: templates/dcim/inc/connection_endpoints.html:23 +msgid "Path Endpoints" +msgstr "" + +#: templates/dcim/inc/endpoint_connection.html:8 +#: templates/dcim/powerfeed.html:128 templates/dcim/rearport.html:101 +msgid "Not connected" +msgstr "" + +#: templates/dcim/inc/interface_vlans_table.html:6 +msgid "Untagged" +msgstr "" + +#: templates/dcim/inc/interface_vlans_table.html:37 +msgid "No VLANs Assigned" +msgstr "" + +#: templates/dcim/inc/interface_vlans_table.html:44 +#: templates/ipam/prefix_list.html:16 templates/ipam/prefix_list.html:33 +msgid "Clear" +msgstr "" + +#: templates/dcim/inc/interface_vlans_table.html:47 +msgid "Clear All" +msgstr "" + +#: templates/dcim/interface.html:17 +msgid "Add Child Interface" +msgstr "" + +#: templates/dcim/interface.html:51 +msgid "Speed/Duplex" +msgstr "" + +#: templates/dcim/interface.html:74 +msgid "PoE Mode" +msgstr "" + +#: templates/dcim/interface.html:78 +msgid "PoE Type" +msgstr "" + +#: templates/dcim/interface.html:82 +#: templates/virtualization/vminterface.html:66 +msgid "802.1Q Mode" +msgstr "" + +#: templates/dcim/interface.html:130 +#: templates/virtualization/vminterface.html:62 +msgid "MAC Address" +msgstr "" + +#: templates/dcim/interface.html:157 +msgid "Wireless Link" +msgstr "" + +#: templates/dcim/interface.html:226 vpn/choices.py:55 +msgid "Peer" +msgstr "" + +#: templates/dcim/interface.html:238 +#: templates/wireless/inc/wirelesslink_interface.html:26 +msgid "Channel" +msgstr "" + +#: templates/dcim/interface.html:247 +#: templates/wireless/inc/wirelesslink_interface.html:32 +msgid "Channel Frequency" +msgstr "" + +#: templates/dcim/interface.html:250 templates/dcim/interface.html:258 +#: templates/dcim/interface.html:269 templates/dcim/interface.html:277 +msgid "MHz" +msgstr "" + +#: templates/dcim/interface.html:266 +#: templates/wireless/inc/wirelesslink_interface.html:42 +msgid "Channel Width" +msgstr "" + +#: templates/dcim/interface.html:295 templates/wireless/wirelesslan.html:15 +#: templates/wireless/wirelesslink.html:24 wireless/forms/bulk_edit.py:59 +#: wireless/forms/bulk_edit.py:101 wireless/forms/filtersets.py:39 +#: wireless/forms/filtersets.py:79 wireless/models.py:81 wireless/models.py:155 +#: wireless/tables/wirelesslan.py:44 +msgid "SSID" +msgstr "" + +#: templates/dcim/interface.html:316 +msgid "LAG Members" +msgstr "" + +#: templates/dcim/interface.html:335 +msgid "No member interfaces" +msgstr "" + +#: templates/dcim/interface.html:359 templates/ipam/fhrpgroup.html:80 +#: templates/ipam/iprange/ip_addresses.html:7 +#: templates/ipam/prefix/ip_addresses.html:7 +#: templates/virtualization/vminterface.html:96 +msgid "Add IP Address" +msgstr "" + +#: templates/dcim/inventoryitem.html:25 +msgid "Parent Item" +msgstr "" + +#: templates/dcim/inventoryitem.html:49 +msgid "Part ID" +msgstr "" + +#: templates/dcim/inventoryitem_bulk_delete.html:5 +msgid "This will also delete all child inventory items of those listed" +msgstr "" + +#: templates/dcim/inventoryitem_edit.html:33 +msgid "Component Assignment" +msgstr "" + +#: templates/dcim/inventoryitem_edit.html:59 templates/dcim/poweroutlet.html:18 +#: templates/dcim/powerport.html:81 +msgid "Power Outlet" +msgstr "" + +#: templates/dcim/location.html:17 +msgid "Add Child Location" +msgstr "" + +#: templates/dcim/location.html:76 +msgid "Child Locations" +msgstr "" + +#: templates/dcim/location.html:84 templates/dcim/site.html:137 +msgid "Add a Location" +msgstr "" + +#: templates/dcim/location.html:98 templates/dcim/site.html:151 +msgid "Add a Device" +msgstr "" + +#: templates/dcim/manufacturer.html:16 +msgid "Add Device Type" +msgstr "" + +#: templates/dcim/manufacturer.html:21 +msgid "Add Module Type" +msgstr "" + +#: templates/dcim/powerfeed.html:56 +msgid "Connected Device" +msgstr "" + +#: templates/dcim/powerfeed.html:66 +msgid "Utilization (Allocated" +msgstr "" + +#: templates/dcim/powerfeed.html:85 +msgid "Electrical Characteristics" +msgstr "" + +#: templates/dcim/powerfeed.html:95 +msgctxt "Abbreviation for volts" +msgid "V" +msgstr "" + +#: templates/dcim/powerfeed.html:99 +msgctxt "Abbreviation for amperes" +msgid "A" +msgstr "" + +#: templates/dcim/poweroutlet.html:51 +msgid "Feed Leg" +msgstr "" + +#: templates/dcim/powerpanel.html:77 +msgid "Add Power Feeds" +msgstr "" + +#: templates/dcim/powerport.html:47 +msgid "Maximum Draw" +msgstr "" + +#: templates/dcim/powerport.html:51 +msgid "Allocated Draw" +msgstr "" + +#: templates/dcim/rack.html:66 +msgid "Space Utilization" +msgstr "" + +#: templates/dcim/rack.html:96 +msgid "descending" +msgstr "" + +#: templates/dcim/rack.html:96 +msgid "ascending" +msgstr "" + +#: templates/dcim/rack.html:99 +msgid "Starting Unit" +msgstr "" + +#: templates/dcim/rack.html:125 +msgid "Mounting Depth" +msgstr "" + +#: templates/dcim/rack.html:135 +msgid "Rack Weight" +msgstr "" + +#: templates/dcim/rack.html:145 templates/dcim/rack_edit.html:67 +msgid "Maximum Weight" +msgstr "" + +#: templates/dcim/rack.html:155 +msgid "Total Weight" +msgstr "" + +#: templates/dcim/rack.html:173 templates/dcim/rack_elevation_list.html:16 +msgid "Images and Labels" +msgstr "" + +#: templates/dcim/rack.html:174 templates/dcim/rack_elevation_list.html:17 +msgid "Images only" +msgstr "" + +#: templates/dcim/rack.html:175 templates/dcim/rack_elevation_list.html:18 +msgid "Labels only" +msgstr "" + +#: templates/dcim/rack/reservations.html:9 +msgid "Add reservation" +msgstr "" + +#: templates/dcim/rack_edit.html:21 +msgid "Inventory Control" +msgstr "" + +#: templates/dcim/rack_edit.html:45 +msgid "Outer Dimensions" +msgstr "" + +#: templates/dcim/rack_edit.html:56 templates/dcim/rack_edit.html:71 +msgid "Unit" +msgstr "" + +#: templates/dcim/rack_elevation_list.html:12 +msgid "View List" +msgstr "" + +#: templates/dcim/rack_elevation_list.html:27 +msgid "Sort By" +msgstr "" + +#: templates/dcim/rack_elevation_list.html:77 +msgid "No Racks Found" +msgstr "" + +#: templates/dcim/rack_list.html:8 +msgid "View Elevations" +msgstr "" + +#: templates/dcim/rackreservation.html:47 +msgid "Reservation Details" +msgstr "" + +#: templates/dcim/rackrole.html:10 +msgid "Add Rack" +msgstr "" + +#: templates/dcim/rearport.html:53 +msgid "Positions" +msgstr "" + +#: templates/dcim/region.html:17 templates/dcim/sitegroup.html:17 +msgid "Add Site" +msgstr "" + +#: templates/dcim/region.html:56 +msgid "Child Regions" +msgstr "" + +#: templates/dcim/region.html:64 +msgid "Add Region" +msgstr "" + +#: templates/dcim/site.html:56 +msgid "Facility" +msgstr "" + +#: templates/dcim/site.html:64 +msgid "Time Zone" +msgstr "" + +#: templates/dcim/site.html:67 +msgid "UTC" +msgstr "" + +#: templates/dcim/site.html:68 +msgid "Site time" +msgstr "" + +#: templates/dcim/site.html:75 +msgid "Physical Address" +msgstr "" + +#: templates/dcim/site.html:81 +msgid "Map" +msgstr "" + +#: templates/dcim/site.html:92 +msgid "Shipping Address" +msgstr "" + +#: templates/dcim/sitegroup.html:56 templates/tenancy/contactgroup.html:49 +#: templates/tenancy/tenantgroup.html:58 +#: templates/wireless/wirelesslangroup.html:56 +msgid "Child Groups" +msgstr "" + +#: templates/dcim/sitegroup.html:64 +msgid "Add Site Group" +msgstr "" + +#: templates/dcim/trace/attachment.html:5 +#: templates/extras/exporttemplate.html:37 +msgid "Attachment" +msgstr "" + +#: templates/dcim/virtualchassis.html:86 +msgid "Add Member" +msgstr "" + +#: templates/dcim/virtualchassis_add.html:18 +msgid "Member Devices" +msgstr "" + +#: templates/dcim/virtualchassis_add_member.html:6 +#, python-format +msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" +msgstr "" + +#: templates/dcim/virtualchassis_add_member.html:17 +msgid "Add New Member" +msgstr "" + +#: templates/dcim/virtualchassis_add_member.html:25 +msgid "Add Another" +msgstr "" + +#: templates/dcim/virtualchassis_edit.html:7 +#, python-format +msgid "Editing Virtual Chassis %(name)s" +msgstr "" + +#: templates/dcim/virtualchassis_edit.html:54 +msgid "Rack/Unit" +msgstr "" + +#: templates/dcim/virtualchassis_remove_member.html:5 +msgid "Remove Virtual Chassis Member" +msgstr "" + +#: templates/dcim/virtualchassis_remove_member.html:9 +#, python-format +msgid "" +"Are you sure you want to remove %(device)s from virtual " +"chassis %(name)s?" +msgstr "" + +#: templates/dcim/virtualdevicecontext.html:29 templates/vpn/l2vpn.html:19 +msgid "Identifier" +msgstr "" + +#: templates/exceptions/import_error.html:6 +msgid "" +"A module import error occurred during this request. Common causes include " +"the following:" +msgstr "" + +#: templates/exceptions/import_error.html:10 +msgid "Missing required packages" +msgstr "" + +#: templates/exceptions/import_error.html:11 +msgid "" +"This installation of NetBox might be missing one or more required Python " +"packages. These packages are listed in requirements.txt and " +"local_requirements.txt, and are normally installed as part of " +"the installation or upgrade process. To verify installed packages, run " +"pip freeze from the console and compare the output to the list " +"of required packages." +msgstr "" + +#: templates/exceptions/import_error.html:20 +msgid "WSGI service not restarted after upgrade" +msgstr "" + +#: templates/exceptions/import_error.html:21 +msgid "" +"If this installation has recently been upgraded, check that the WSGI service " +"(e.g. gunicorn or uWSGI) has been restarted. This ensures that the new code " +"is running." +msgstr "" + +#: templates/exceptions/permission_error.html:6 +msgid "" +"A file permission error was detected while processing this request. Common " +"causes include the following:" +msgstr "" + +#: templates/exceptions/permission_error.html:10 +msgid "Insufficient write permission to the media root" +msgstr "" + +#: templates/exceptions/permission_error.html:11 +#, python-format +msgid "" +"The configured media root is %(media_root)s. Ensure that the " +"user NetBox runs as has access to write files to all locations within this " +"path." +msgstr "" + +#: templates/exceptions/programming_error.html:6 +msgid "" +"A database programming error was detected while processing this request. " +"Common causes include the following:" +msgstr "" + +#: templates/exceptions/programming_error.html:10 +msgid "Database migrations missing" +msgstr "" + +#: templates/exceptions/programming_error.html:11 +msgid "" +"When upgrading to a new NetBox release, the upgrade script must be run to " +"apply any new database migrations. You can run migrations manually by " +"executing python3 manage.py migrate from the command line." +msgstr "" + +#: templates/exceptions/programming_error.html:18 +msgid "Unsupported PostgreSQL version" +msgstr "" + +#: templates/exceptions/programming_error.html:19 +msgid "" +"Ensure that PostgreSQL version 12 or later is in use. You can check this by " +"connecting to the database using NetBox's credentials and issuing a query " +"for SELECT VERSION()." +msgstr "" + +#: templates/extras/admin/plugins_list.html:4 +#: templates/extras/admin/plugins_list.html:9 +#: templates/extras/admin/plugins_list.html:13 +msgid "Installed Plugins" +msgstr "" + +#: templates/extras/admin/plugins_list.html:23 +msgid "Package Name" +msgstr "" + +#: templates/extras/admin/plugins_list.html:24 +msgid "Author" +msgstr "" + +#: templates/extras/admin/plugins_list.html:25 +msgid "Author Email" +msgstr "" + +#: templates/extras/admin/plugins_list.html:27 +#: templates/vpn/ipsecprofile.html:47 vpn/forms/bulk_edit.py:140 +#: vpn/forms/bulk_import.py:171 vpn/tables/crypto.py:61 +msgid "Version" +msgstr "" + +#: templates/extras/configcontext.html:46 +#: templates/extras/configtemplate.html:38 +#: templates/extras/exporttemplate.html:57 +msgid "The data file associated with this object has been deleted" +msgstr "" + +#: templates/extras/configcontext.html:55 +#: templates/extras/configtemplate.html:47 +#: templates/extras/exporttemplate.html:66 +msgid "Data Synced" +msgstr "" + +#: templates/extras/configcontext_list.html:7 +#: templates/extras/configtemplate_list.html:7 +#: templates/extras/exporttemplate_list.html:7 +msgid "Sync Data" +msgstr "" + +#: templates/extras/configtemplate.html:58 +msgid "Environment Parameters" +msgstr "" + +#: templates/extras/configtemplate.html:69 +#: templates/extras/exporttemplate.html:88 +msgid "Template" +msgstr "" + +#: templates/extras/customfield.html:31 templates/extras/customlink.html:22 +msgid "Group Name" +msgstr "" + +#: templates/extras/customfield.html:43 +msgid "Cloneable" +msgstr "" + +#: templates/extras/customfield.html:53 +msgid "Default Value" +msgstr "" + +#: templates/extras/customfield.html:64 +msgid "Search Weight" +msgstr "" + +#: templates/extras/customfield.html:74 +msgid "Filter Logic" +msgstr "" + +#: templates/extras/customfield.html:78 +msgid "Display Weight" +msgstr "" + +#: templates/extras/customfield.html:82 +msgid "UI Visible" +msgstr "" + +#: templates/extras/customfield.html:86 +msgid "UI Editable" +msgstr "" + +#: templates/extras/customfield.html:108 +msgid "Validation Rules" +msgstr "" + +#: templates/extras/customfield.html:112 +msgid "Minimum Value" +msgstr "" + +#: templates/extras/customfield.html:116 +msgid "Maximum Value" +msgstr "" + +#: templates/extras/customfield.html:120 +msgid "Regular Expression" +msgstr "" + +#: templates/extras/customlink.html:30 +msgid "Button Class" +msgstr "" + +#: templates/extras/customlink.html:41 templates/extras/exporttemplate.html:73 +#: templates/extras/savedfilter.html:41 +msgid "Assigned Models" +msgstr "" + +#: templates/extras/customlink.html:57 +msgid "Link Text" +msgstr "" + +#: templates/extras/customlink.html:65 +msgid "Link URL" +msgstr "" + +#: templates/extras/dashboard/reset.html:4 templates/home.html:63 +msgid "Reset Dashboard" +msgstr "" + +#: templates/extras/dashboard/reset.html:8 +msgid "" +"This will remove all configured widgets and restore the " +"default dashboard configuration." +msgstr "" + +#: templates/extras/dashboard/reset.html:13 +msgid "" +"This change affects only your dashboard, and will not impact other " +"users." +msgstr "" + +#: templates/extras/dashboard/widget_add.html:7 +msgid "Add a Widget" +msgstr "" + +#: templates/extras/dashboard/widgets/bookmarks.html:14 +msgid "No bookmarks have been added yet." +msgstr "" + +#: templates/extras/dashboard/widgets/objectcounts.html:15 +msgid "No permission" +msgstr "" + +#: templates/extras/dashboard/widgets/objectlist.html:6 +msgid "No permission to view this content" +msgstr "" + +#: templates/extras/dashboard/widgets/objectlist.html:10 +msgid "Unable to load content. Invalid view name" +msgstr "" + +#: templates/extras/dashboard/widgets/rssfeed.html:12 +msgid "No content found" +msgstr "" + +#: templates/extras/dashboard/widgets/rssfeed.html:18 +msgid "There was a problem fetching the RSS feed" +msgstr "" + +#: templates/extras/dashboard/widgets/rssfeed.html:21 +msgid "HTTP" +msgstr "" + +#: templates/extras/eventrule.html:63 +msgid "Job start" +msgstr "" + +#: templates/extras/eventrule.html:67 +msgid "Job end" +msgstr "" + +#: templates/extras/exporttemplate.html:29 +msgid "MIME Type" +msgstr "" + +#: templates/extras/exporttemplate.html:33 +msgid "File Extension" +msgstr "" + +#: templates/extras/htmx/report_result.html:9 +#: templates/extras/htmx/script_result.html:10 +msgid "Scheduled for" +msgstr "" + +#: templates/extras/htmx/report_result.html:14 +#: templates/extras/htmx/script_result.html:15 +msgid "Duration" +msgstr "" + +#: templates/extras/htmx/report_result.html:20 +msgid "Report Methods" +msgstr "" + +#: templates/extras/htmx/report_result.html:38 +msgid "Report Results" +msgstr "" + +#: templates/extras/htmx/report_result.html:44 +#: templates/extras/htmx/script_result.html:26 +msgid "Level" +msgstr "" + +#: templates/extras/htmx/report_result.html:46 +#: templates/extras/htmx/script_result.html:27 +msgid "Message" +msgstr "" + +#: templates/extras/htmx/script_result.html:21 +msgid "Script Log" +msgstr "" + +#: templates/extras/htmx/script_result.html:25 +msgid "Line" +msgstr "" + +#: templates/extras/htmx/script_result.html:38 +msgid "No log output" +msgstr "" + +#: templates/extras/htmx/script_result.html:46 +msgid "Exec Time" +msgstr "" + +#: templates/extras/htmx/script_result.html:46 +msgctxt "Unit of time" +msgid "seconds" +msgstr "" + +#: templates/extras/htmx/script_result.html:50 +msgid "Output" +msgstr "" + +#: templates/extras/inc/result_pending.html:4 +msgid "Loading" +msgstr "" + +#: templates/extras/inc/result_pending.html:6 +msgid "Results pending" +msgstr "" + +#: templates/extras/journalentry.html:16 +msgid "Journal Entry" +msgstr "" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "Change log retention" +msgstr "" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "days" +msgstr "" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "Indefinite" +msgstr "" + +#: templates/extras/object_configcontext.html:11 +msgid "Rendered Context" +msgstr "" + +#: templates/extras/object_configcontext.html:22 +msgid "Local Context" +msgstr "" + +#: templates/extras/object_configcontext.html:34 +msgid "The local config context overwrites all source contexts" +msgstr "" + +#: templates/extras/object_configcontext.html:40 +msgid "Source Contexts" +msgstr "" + +#: templates/extras/object_journal.html:18 +msgid "New Journal Entry" +msgstr "" + +#: templates/extras/objectchange.html:29 +#: templates/users/objectpermission.html:45 +msgid "Change" +msgstr "" + +#: templates/extras/objectchange.html:84 +msgid "Difference" +msgstr "" + +#: templates/extras/objectchange.html:87 +msgid "Previous" +msgstr "" + +#: templates/extras/objectchange.html:90 +msgid "Next" +msgstr "" + +#: templates/extras/objectchange.html:98 +msgid "Object Created" +msgstr "" + +#: templates/extras/objectchange.html:100 +msgid "Object Deleted" +msgstr "" + +#: templates/extras/objectchange.html:102 +msgid "No Changes" +msgstr "" + +#: templates/extras/objectchange.html:117 +msgid "Pre-Change Data" +msgstr "" + +#: templates/extras/objectchange.html:126 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" + +#: templates/extras/objectchange.html:136 +msgid "Post-Change Data" +msgstr "" + +#: templates/extras/objectchange.html:157 +#, python-format +msgid "See All %(count)s Changes" +msgstr "" + +#: templates/extras/report.html:14 +msgid "This report is invalid and cannot be run." +msgstr "" + +#: templates/extras/report.html:23 templates/extras/report_list.html:88 +msgid "Run Again" +msgstr "" + +#: templates/extras/report.html:25 templates/extras/report_list.html:90 +msgid "Run Report" +msgstr "" + +#: templates/extras/report.html:36 +msgid "Last run" +msgstr "" + +#: templates/extras/report/base.html:30 +msgid "Report" +msgstr "" + +#: templates/extras/report_list.html:48 templates/extras/script_list.html:54 +msgid "Last Run" +msgstr "" + +#: templates/extras/report_list.html:70 templates/extras/script_list.html:77 +msgid "Never" +msgstr "" + +#: templates/extras/report_list.html:75 +msgid "Report has no test methods" +msgstr "" + +#: templates/extras/report_list.html:76 +msgid "Invalid" +msgstr "" + +#: templates/extras/report_list.html:125 +msgid "No Reports Found" +msgstr "" + +#: templates/extras/report_list.html:128 +#, python-format +msgid "" +"Get started by creating a report from " +"an uploaded file or data source." +msgstr "" + +#: templates/extras/script.html:13 +msgid "You do not have permission to run scripts" +msgstr "" + +#: templates/extras/script.html:37 +msgid "Run Script" +msgstr "" + +#: templates/extras/script_list.html:44 +#, python-format +msgid "" +"Script file at %(file_path)s could not be loaded." +msgstr "" + +#: templates/extras/script_list.html:91 +msgid "No Scripts Found" +msgstr "" + +#: templates/extras/script_list.html:94 +#, python-format +msgid "" +"Get started by creating a script from " +"an uploaded file or data source." +msgstr "" + +#: templates/extras/script_result.html:42 +msgid "Log" +msgstr "" + +#: templates/extras/tag.html:35 +msgid "Tagged Items" +msgstr "" + +#: templates/extras/tag.html:47 +msgid "Allowed Object Types" +msgstr "" + +#: templates/extras/tag.html:56 +msgid "Any" +msgstr "" + +#: templates/extras/tag.html:63 +msgid "Tagged Item Types" +msgstr "" + +#: templates/extras/tag.html:89 +msgid "Tagged Objects" +msgstr "" + +#: templates/extras/webhook.html:33 +msgid "HTTP Method" +msgstr "" + +#: templates/extras/webhook.html:41 +msgid "HTTP Content Type" +msgstr "" + +#: templates/extras/webhook.html:58 +msgid "SSL Verification" +msgstr "" + +#: templates/extras/webhook.html:73 +msgid "Additional Headers" +msgstr "" + +#: templates/extras/webhook.html:85 +msgid "Body Template" +msgstr "" + +#: templates/generic/bulk_add_component.html:15 +msgid "Bulk Creation" +msgstr "" + +#: templates/generic/bulk_add_component.html:20 +#: templates/generic/bulk_edit.html:28 +msgid "Selected Objects" +msgstr "" + +#: templates/generic/bulk_add_component.html:46 +msgid "to Add" +msgstr "" + +#: templates/generic/bulk_delete.html:24 +msgid "Confirm Bulk Deletion" +msgstr "" + +#: templates/generic/bulk_delete.html:26 +msgctxt "Noun" +msgid "Warning" +msgstr "" + +#: templates/generic/bulk_delete.html:27 +#, python-format +msgid "" +"The following operation will delete %(count)s " +"%(type_plural)s. Please carefully review the objects to be deleted and " +"confirm below." +msgstr "" + +#: templates/generic/bulk_edit.html:16 templates/generic/object_edit.html:17 +msgid "Editing" +msgstr "" + +#: templates/generic/bulk_edit.html:23 +msgid "Bulk Edit" +msgstr "" + +#: templates/generic/bulk_edit.html:124 templates/generic/bulk_rename.html:42 +msgid "Apply" +msgstr "" + +#: templates/generic/bulk_import.html:14 +msgid "Bulk Import" +msgstr "" + +#: templates/generic/bulk_import.html:20 +msgid "Direct Import" +msgstr "" + +#: templates/generic/bulk_import.html:25 +msgid "Upload File" +msgstr "" + +#: templates/generic/bulk_import.html:51 templates/generic/bulk_import.html:73 +#: templates/generic/bulk_import.html:95 +msgid "Submit" +msgstr "" + +#: templates/generic/bulk_import.html:110 +msgid "Field Options" +msgstr "" + +#: templates/generic/bulk_import.html:117 +msgid "Accessor" +msgstr "" + +#: templates/generic/bulk_import.html:154 +msgid "Import Value" +msgstr "" + +#: templates/generic/bulk_import.html:181 +msgid "Format: YYYY-MM-DD" +msgstr "" + +#: templates/generic/bulk_import.html:183 +msgid "Specify true or false" +msgstr "" + +#: templates/generic/bulk_import.html:195 +msgid "Required fields must be specified for all objects." +msgstr "" + +#: templates/generic/bulk_import.html:201 +#, python-format +msgid "" +"Related objects may be referenced by any unique attribute. For example, " +"%(example)s would identify a VRF by its route distinguisher." +msgstr "" + +#: templates/generic/bulk_remove.html:13 +msgid "Confirm Bulk Removal" +msgstr "" + +#: templates/generic/bulk_remove.html:15 +#, python-format +msgid "" +"Warning: The following operation will remove %(count)s " +"%(obj_type_plural)s from %(parent_obj)s." +msgstr "" + +#: templates/generic/bulk_remove.html:21 +#, python-format +msgid "" +"Please carefully review the %(obj_type_plural)s to be removed and confirm " +"below." +msgstr "" + +#: templates/generic/bulk_remove.html:38 +#, python-format +msgid "Delete these %(count)s %(obj_type_plural)s" +msgstr "" + +#: templates/generic/bulk_rename.html:7 +msgid "Renaming" +msgstr "" + +#: templates/generic/bulk_rename.html:16 +msgid "Current Name" +msgstr "" + +#: templates/generic/bulk_rename.html:17 +msgid "New Name" +msgstr "" + +#: templates/generic/bulk_rename.html:40 +#: utilities/templates/widgets/markdown_input.html:11 +msgid "Preview" +msgstr "" + +#: templates/generic/confirmation_form.html:16 +msgid "Are you sure" +msgstr "" + +#: templates/generic/confirmation_form.html:19 +msgid "Confirm" +msgstr "" + +#: templates/generic/object.html:51 +msgid "ago" +msgstr "" + +#: templates/generic/object_children.html:27 +#: utilities/templates/buttons/bulk_edit.html:4 +msgid "Edit Selected" +msgstr "" + +#: templates/generic/object_children.html:41 +#: utilities/templates/buttons/bulk_delete.html:4 +msgid "Delete Selected" +msgstr "" + +#: templates/generic/object_edit.html:19 +#, python-format +msgid "Add a new %(object_type)s" +msgstr "" + +#: templates/generic/object_edit.html:47 +msgid "View model documentation" +msgstr "" + +#: templates/generic/object_edit.html:48 +msgid "Help" +msgstr "" + +#: templates/generic/object_edit.html:73 +msgid "Create & Add Another" +msgstr "" + +#: templates/generic/object_list.html:48 templates/search.html:13 +msgid "Results" +msgstr "" + +#: templates/generic/object_list.html:54 +msgid "Filters" +msgstr "" + +#: templates/generic/object_list.html:94 +#, python-format +msgid "" +"Select all %(count)s %(object_type_plural)s matching query" +msgstr "" + +#: templates/home.html:12 +msgid "New Release Available" +msgstr "" + +#: templates/home.html:14 +msgid "is available" +msgstr "" + +#: templates/home.html:17 +msgctxt "Document title" +msgid "Upgrade Instructions" +msgstr "" + +#: templates/home.html:37 +msgid "Unlock Dashboard" +msgstr "" + +#: templates/home.html:46 +msgid "Lock Dashboard" +msgstr "" + +#: templates/home.html:57 +msgid "Add Widget" +msgstr "" + +#: templates/home.html:60 +msgid "Save Layout" +msgstr "" + +#: templates/htmx/delete_form.html:7 +msgid "Confirm Deletion" +msgstr "" + +#: templates/htmx/delete_form.html:11 +#, python-format +msgid "" +"Are you sure you want to delete " +"%(object_type)s %(object)s?" +msgstr "" + +#: templates/htmx/delete_form.html:17 +msgid "The following objects will be deleted as a result of this action." +msgstr "" + +#: templates/htmx/object_selector.html:5 +msgid "Select" +msgstr "" + +#: templates/inc/filter_list.html:50 +#: utilities/templates/helpers/table_config_form.html:39 +msgid "Reset" +msgstr "" + +#: templates/inc/missing_prerequisites.html:7 +#, python-format +msgid "" +"Before you can add a %(model)s you must first create a " +"%(prerequisite_model)s." +msgstr "" + +#: templates/inc/paginator.html:38 templates/inc/paginator_htmx.html:53 +msgid "Per Page" +msgstr "" + +#: templates/inc/paginator.html:49 templates/inc/paginator_htmx.html:69 +#, python-format +msgid "Showing %(start)s-%(end)s of %(total)s" +msgstr "" + +#: templates/inc/panels/image_attachments.html:10 +msgid "Attach an image" +msgstr "" + +#: templates/inc/panels/related_objects.html:5 +msgid "Related Objects" +msgstr "" + +#: templates/inc/panels/tags.html:11 +msgid "No tags assigned" +msgstr "" + +#: templates/inc/profile_button.html:12 templates/inc/profile_button.html:62 +msgid "Dark Mode" +msgstr "" + +#: templates/inc/profile_button.html:45 +msgid "Log Out" +msgstr "" + +#: templates/inc/profile_button.html:53 +msgid "Log In" +msgstr "" + +#: templates/inc/sync_warning.html:7 +msgid "Data is out of sync with upstream file" +msgstr "" + +#: templates/inc/table_controls_htmx.html:16 +#: templates/inc/table_controls_htmx.html:18 +msgid "Configure Table" +msgstr "" + +#: templates/ipam/aggregate.html:15 templates/ipam/ipaddress.html:17 +#: templates/ipam/iprange.html:16 templates/ipam/prefix.html:16 +msgid "Family" +msgstr "" + +#: templates/ipam/aggregate.html:40 +msgid "Date Added" +msgstr "" + +#: templates/ipam/aggregate/prefixes.html:8 +#: templates/ipam/prefix/prefixes.html:8 templates/ipam/role.html:10 +msgid "Add Prefix" +msgstr "" + +#: templates/ipam/asn.html:24 +msgid "AS Number" +msgstr "" + +#: templates/ipam/fhrpgroup.html:55 +msgid "Authentication Type" +msgstr "" + +#: templates/ipam/fhrpgroup.html:59 +msgid "Authentication Key" +msgstr "" + +#: templates/ipam/fhrpgroup.html:72 +msgid "Virtual IP Addresses" +msgstr "" + +#: templates/ipam/fhrpgroupassignment_edit.html:8 +msgid "FHRP Group Assignment" +msgstr "" + +#: templates/ipam/inc/ipaddress_edit_header.html:19 +msgid "Assign IP" +msgstr "" + +#: templates/ipam/inc/ipaddress_edit_header.html:28 +msgid "Bulk Create" +msgstr "" + +#: templates/ipam/inc/panels/fhrp_groups.html:12 +msgid "Virtual IPs" +msgstr "" + +#: templates/ipam/inc/panels/fhrp_groups.html:52 +msgid "Create Group" +msgstr "" + +#: templates/ipam/inc/panels/fhrp_groups.html:57 +msgid "Assign Group" +msgstr "" + +#: templates/ipam/inc/toggle_available.html:7 +msgid "Show Assigned" +msgstr "" + +#: templates/ipam/inc/toggle_available.html:10 +msgid "Show Available" +msgstr "" + +#: templates/ipam/inc/toggle_available.html:13 +msgid "Show All" +msgstr "" + +#: templates/ipam/ipaddress.html:26 templates/ipam/iprange.html:48 +#: templates/ipam/prefix.html:25 +msgid "Global" +msgstr "" + +#: templates/ipam/ipaddress.html:88 +msgid "NAT (outside)" +msgstr "" + +#: templates/ipam/ipaddress_assign.html:8 +msgid "Assign an IP Address" +msgstr "" + +#: templates/ipam/ipaddress_assign.html:23 +msgid "Select IP Address" +msgstr "" + +#: templates/ipam/ipaddress_assign.html:39 +msgid "Search Results" +msgstr "" + +#: templates/ipam/ipaddress_bulk_add.html:6 +msgid "Bulk Add IP Addresses" +msgstr "" + +#: templates/ipam/ipaddress_edit.html:35 +msgid "Interface Assignment" +msgstr "" + +#: templates/ipam/ipaddress_edit.html:74 +msgid "NAT IP (Inside" +msgstr "" + +#: templates/ipam/iprange.html:20 +msgid "Starting Address" +msgstr "" + +#: templates/ipam/iprange.html:24 +msgid "Ending Address" +msgstr "" + +#: templates/ipam/iprange.html:36 templates/ipam/prefix.html:104 +msgid "Marked fully utilized" +msgstr "" + +#: templates/ipam/prefix.html:112 +msgid "Child IPs" +msgstr "" + +#: templates/ipam/prefix.html:120 +msgid "Available IPs" +msgstr "" + +#: templates/ipam/prefix.html:132 +msgid "First available IP" +msgstr "" + +#: templates/ipam/prefix.html:151 +msgid "Addressing Details" +msgstr "" + +#: templates/ipam/prefix.html:181 +msgid "Prefix Details" +msgstr "" + +#: templates/ipam/prefix.html:187 +msgid "Network Address" +msgstr "" + +#: templates/ipam/prefix.html:191 +msgid "Network Mask" +msgstr "" + +#: templates/ipam/prefix.html:195 +msgid "Wildcard Mask" +msgstr "" + +#: templates/ipam/prefix.html:199 +msgid "Broadcast Address" +msgstr "" + +#: templates/ipam/prefix/ip_ranges.html:7 +msgid "Add IP Range" +msgstr "" + +#: templates/ipam/prefix_list.html:7 +msgid "Hide Depth Indicators" +msgstr "" + +#: templates/ipam/prefix_list.html:11 +msgid "Max Depth" +msgstr "" + +#: templates/ipam/prefix_list.html:28 +msgid "Max Length" +msgstr "" + +#: templates/ipam/rir.html:10 +msgid "Add Aggregate" +msgstr "" + +#: templates/ipam/routetarget.html:10 +msgid "Route Target" +msgstr "" + +#: templates/ipam/routetarget.html:40 +msgid "Importing VRFs" +msgstr "" + +#: templates/ipam/routetarget.html:49 +msgid "Exporting VRFs" +msgstr "" + +#: templates/ipam/routetarget.html:60 +msgid "Importing L2VPNs" +msgstr "" + +#: templates/ipam/routetarget.html:69 +msgid "Exporting L2VPNs" +msgstr "" + +#: templates/ipam/service.html:22 templates/ipam/service_create.html:8 +#: templates/ipam/service_edit.html:8 +msgid "Service" +msgstr "" + +#: templates/ipam/service_create.html:43 +msgid "From Template" +msgstr "" + +#: templates/ipam/service_create.html:48 +msgid "Custom" +msgstr "" + +#: templates/ipam/service_edit.html:37 +msgid "Port(s)" +msgstr "" + +#: templates/ipam/vlan.html:95 +msgid "Add a Prefix" +msgstr "" + +#: templates/ipam/vlangroup.html:18 +msgid "Add VLAN" +msgstr "" + +#: templates/ipam/vlangroup.html:43 +msgid "Permitted VIDs" +msgstr "" + +#: templates/ipam/vrf.html:19 +msgid "Route Distinguisher" +msgstr "" + +#: templates/ipam/vrf.html:32 +msgid "Unique IP Space" +msgstr "" + +#: templates/login.html:20 +#: utilities/templates/form_helpers/render_errors.html:7 +msgid "Errors" +msgstr "" + +#: templates/login.html:48 +msgid "Sign In" +msgstr "" + +#: templates/login.html:54 +msgid "Or use a single sign-on (SSO) provider" +msgstr "" + +#: templates/login.html:68 +msgid "Toggle Color Mode" +msgstr "" + +#: templates/media_failure.html:7 +msgid "Static Media Failure - NetBox" +msgstr "" + +#: templates/media_failure.html:21 +msgid "Static Media Failure" +msgstr "" + +#: templates/media_failure.html:23 +msgid "The following static media file failed to load" +msgstr "" + +#: templates/media_failure.html:26 +msgid "Check the following" +msgstr "" + +#: templates/media_failure.html:29 +msgid "" +"manage.py collectstatic was run during the most recent upgrade. " +"This installs the most recent iteration of each static file into the static " +"root path." +msgstr "" + +#: templates/media_failure.html:35 +#, python-format +msgid "" +"The HTTP service (e.g. nginx or Apache) is configured to serve files from " +"the STATIC_ROOT path. Refer to the " +"installation documentation for further guidance." +msgstr "" + +#: templates/media_failure.html:47 +#, python-format +msgid "" +"The file %(filename)s exists in the static root directory and " +"is readable by the HTTP server." +msgstr "" + +#: templates/media_failure.html:55 +#, python-format +msgid "" +"Click here to attempt loading NetBox again." +msgstr "" + +#: templates/tenancy/contact.html:18 tenancy/filtersets.py:135 +#: tenancy/forms/bulk_edit.py:136 tenancy/forms/filtersets.py:101 +#: tenancy/forms/forms.py:56 tenancy/forms/model_forms.py:109 +#: tenancy/forms/model_forms.py:132 tenancy/tables/contacts.py:98 +msgid "Contact" +msgstr "" + +#: templates/tenancy/contact.html:30 tenancy/forms/bulk_edit.py:98 +msgid "Title" +msgstr "" + +#: templates/tenancy/contact.html:34 tenancy/forms/bulk_edit.py:103 +#: tenancy/tables/contacts.py:64 +msgid "Phone" +msgstr "" + +#: templates/tenancy/contact.html:86 tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "" + +#: templates/tenancy/contactassignment_edit.html:12 +msgid "Contact Assignment" +msgstr "" + +#: templates/tenancy/contactgroup.html:19 tenancy/forms/forms.py:66 +#: tenancy/forms/model_forms.py:76 +msgid "Contact Group" +msgstr "" + +#: templates/tenancy/contactgroup.html:57 +msgid "Add Contact Group" +msgstr "" + +#: templates/tenancy/contactrole.html:15 tenancy/filtersets.py:140 +#: tenancy/forms/forms.py:61 tenancy/forms/model_forms.py:90 +msgid "Contact Role" +msgstr "" + +#: templates/tenancy/object_contacts.html:9 +msgid "Add a contact" +msgstr "" + +#: templates/tenancy/tenantgroup.html:17 +msgid "Add Tenant" +msgstr "" + +#: templates/tenancy/tenantgroup.html:27 tenancy/forms/model_forms.py:31 +#: tenancy/tables/columns.py:51 tenancy/tables/columns.py:61 +msgid "Tenant Group" +msgstr "" + +#: templates/tenancy/tenantgroup.html:66 +msgid "Add Tenant Group" +msgstr "" + +#: templates/users/group.html:37 templates/users/user.html:61 +msgid "Assigned Permissions" +msgstr "" + +#: templates/users/objectpermission.html:6 +#: templates/users/objectpermission.html:14 users/forms/filtersets.py:67 +msgid "Permission" +msgstr "" + +#: templates/users/objectpermission.html:33 users/forms/filtersets.py:68 +#: users/forms/model_forms.py:321 +msgid "Actions" +msgstr "" + +#: templates/users/objectpermission.html:37 +msgid "View" +msgstr "" + +#: templates/users/objectpermission.html:56 users/forms/model_forms.py:324 +msgid "Constraints" +msgstr "" + +#: templates/users/objectpermission.html:76 +msgid "Assigned Users" +msgstr "" + +#: templates/users/user.html:38 +msgid "Staff" +msgstr "" + +#: templates/virtualization/cluster.html:56 +msgid "Allocated Resources" +msgstr "" + +#: templates/virtualization/cluster.html:60 +#: templates/virtualization/virtualmachine.html:128 +msgid "Virtual CPUs" +msgstr "" + +#: templates/virtualization/cluster.html:64 +#: templates/virtualization/virtualmachine.html:132 +msgid "Memory" +msgstr "" + +#: templates/virtualization/cluster.html:74 +#: templates/virtualization/virtualmachine.html:143 +msgid "Disk Space" +msgstr "" + +#: templates/virtualization/cluster.html:77 +#: templates/virtualization/virtualdisk.html:33 +#: templates/virtualization/virtualmachine.html:147 +msgctxt "Abbreviation for gigabyte" +msgid "GB" +msgstr "" + +#: templates/virtualization/cluster/base.html:18 +msgid "Add Virtual Machine" +msgstr "" + +#: templates/virtualization/cluster/base.html:24 +msgid "Assign Device" +msgstr "" + +#: templates/virtualization/cluster/devices.html:10 +msgid "Remove Selected" +msgstr "" + +#: templates/virtualization/cluster_add_devices.html:9 +#, python-format +msgid "Add Device to Cluster %(cluster)s" +msgstr "" + +#: templates/virtualization/cluster_add_devices.html:23 +msgid "Device Selection" +msgstr "" + +#: templates/virtualization/cluster_add_devices.html:31 +msgid "Add Devices" +msgstr "" + +#: templates/virtualization/clustergroup.html:10 +#: templates/virtualization/clustertype.html:10 +msgid "Add Cluster" +msgstr "" + +#: templates/virtualization/clustergroup.html:20 +#: virtualization/forms/model_forms.py:51 +msgid "Cluster Group" +msgstr "" + +#: templates/virtualization/clustertype.html:20 +#: templates/virtualization/virtualmachine.html:111 +#: virtualization/forms/model_forms.py:35 +msgid "Cluster Type" +msgstr "" + +#: templates/virtualization/virtualdisk.html:18 +msgid "Virtual Disk" +msgstr "" + +#: templates/virtualization/virtualmachine.html:124 +#: virtualization/forms/bulk_edit.py:189 +#: virtualization/forms/model_forms.py:227 +msgid "Resources" +msgstr "" + +#: templates/virtualization/virtualmachine.html:185 +msgid "Add Virtual Disk" +msgstr "" + +#: templates/vpn/ikepolicy.html:10 templates/vpn/ipsecprofile.html:35 +#: vpn/tables/crypto.py:166 +msgid "IKE Policy" +msgstr "" + +#: templates/vpn/ikepolicy.html:22 +msgid "IKE Version" +msgstr "" + +#: templates/vpn/ikepolicy.html:30 +msgid "Pre-Shared Key" +msgstr "" + +#: templates/vpn/ikepolicy.html:34 +#: templates/wireless/inc/authentication_attrs.html:21 +msgid "Show Secret" +msgstr "" + +#: templates/vpn/ikepolicy.html:59 templates/vpn/ipsecpolicy.html:47 +#: templates/vpn/ipsecprofile.html:55 templates/vpn/ipsecprofile.html:82 +#: vpn/forms/model_forms.py:310 vpn/forms/model_forms.py:345 +#: vpn/tables/crypto.py:68 vpn/tables/crypto.py:134 +msgid "Proposals" +msgstr "" + +#: templates/vpn/ikeproposal.html:10 +msgid "IKE Proposal" +msgstr "" + +#: templates/vpn/ikeproposal.html:22 vpn/forms/bulk_edit.py:96 +#: vpn/forms/bulk_import.py:145 vpn/forms/filtersets.py:98 +msgid "Authentication method" +msgstr "" + +#: templates/vpn/ikeproposal.html:26 templates/vpn/ipsecproposal.html:22 +#: vpn/forms/bulk_edit.py:101 vpn/forms/bulk_edit.py:173 +#: vpn/forms/bulk_import.py:149 vpn/forms/bulk_import.py:193 +#: vpn/forms/filtersets.py:103 vpn/forms/filtersets.py:151 +msgid "Encryption algorithm" +msgstr "" + +#: templates/vpn/ikeproposal.html:30 templates/vpn/ipsecproposal.html:26 +#: vpn/forms/bulk_edit.py:106 vpn/forms/bulk_edit.py:178 +#: vpn/forms/bulk_import.py:153 vpn/forms/bulk_import.py:197 +#: vpn/forms/filtersets.py:108 vpn/forms/filtersets.py:156 +msgid "Authentication algorithm" +msgstr "" + +#: templates/vpn/ikeproposal.html:34 +msgid "DH group" +msgstr "" + +#: templates/vpn/ikeproposal.html:38 templates/vpn/ipsecproposal.html:30 +#: vpn/forms/bulk_edit.py:183 vpn/models/crypto.py:134 +msgid "SA lifetime (seconds)" +msgstr "" + +#: templates/vpn/ipsecpolicy.html:10 templates/vpn/ipsecprofile.html:70 +#: vpn/tables/crypto.py:170 +msgid "IPSec Policy" +msgstr "" + +#: templates/vpn/ipsecpolicy.html:22 vpn/forms/bulk_edit.py:211 +#: vpn/models/crypto.py:181 +msgid "PFS group" +msgstr "" + +#: templates/vpn/ipsecprofile.html:10 vpn/forms/model_forms.py:53 +msgid "IPSec Profile" +msgstr "" + +#: templates/vpn/ipsecprofile.html:94 vpn/tables/crypto.py:137 +msgid "PFS Group" +msgstr "" + +#: templates/vpn/ipsecproposal.html:10 +msgid "IPSec Proposal" +msgstr "" + +#: templates/vpn/ipsecproposal.html:34 vpn/forms/bulk_edit.py:187 +#: vpn/models/crypto.py:140 +msgid "SA lifetime (KB)" +msgstr "" + +#: templates/vpn/l2vpn.html:11 templates/vpn/l2vpntermination.html:10 +msgid "L2VPN Attributes" +msgstr "" + +#: templates/vpn/l2vpn.html:65 templates/vpn/tunnel.html:81 +msgid "Add a Termination" +msgstr "" + +#: templates/vpn/l2vpntermination_edit.html:9 +msgid "L2VPN Termination" +msgstr "" + +#: templates/vpn/tunnel.html:9 +msgid "Add Termination" +msgstr "" + +#: templates/vpn/tunnel.html:38 vpn/forms/bulk_edit.py:48 +#: vpn/forms/bulk_import.py:48 vpn/forms/filtersets.py:56 +msgid "Encapsulation" +msgstr "" + +#: templates/vpn/tunnel.html:42 vpn/forms/bulk_edit.py:54 +#: vpn/forms/bulk_import.py:53 vpn/forms/filtersets.py:63 +#: vpn/models/crypto.py:238 vpn/tables/tunnels.py:47 +msgid "IPSec profile" +msgstr "" + +#: templates/vpn/tunnel.html:46 vpn/forms/bulk_edit.py:68 +#: vpn/forms/filtersets.py:67 +msgid "Tunnel ID" +msgstr "" + +#: templates/vpn/tunnelgroup.html:14 +msgid "Add Tunnel" +msgstr "" + +#: templates/vpn/tunnelgroup.html:24 vpn/forms/model_forms.py:35 +#: vpn/forms/model_forms.py:48 +msgid "Tunnel Group" +msgstr "" + +#: templates/vpn/tunneltermination.html:10 +msgid "Tunnel Termination" +msgstr "" + +#: templates/vpn/tunneltermination.html:36 vpn/forms/bulk_import.py:107 +#: vpn/forms/model_forms.py:101 vpn/forms/model_forms.py:137 +#: vpn/forms/model_forms.py:248 vpn/tables/tunnels.py:97 +msgid "Outside IP" +msgstr "" + +#: templates/vpn/tunneltermination.html:53 +msgid "Peer Terminations" +msgstr "" + +#: templates/wireless/inc/authentication_attrs.html:13 +msgid "Cipher" +msgstr "" + +#: templates/wireless/inc/authentication_attrs.html:17 +msgid "PSK" +msgstr "" + +#: templates/wireless/inc/wirelesslink_interface.html:35 +#: templates/wireless/inc/wirelesslink_interface.html:45 +msgctxt "Abbreviation for megahertz" +msgid "MHz" +msgstr "" + +#: templates/wireless/wirelesslan.html:11 wireless/forms/model_forms.py:54 +msgid "Wireless LAN" +msgstr "" + +#: templates/wireless/wirelesslan.html:59 +msgid "Attached Interfaces" +msgstr "" + +#: templates/wireless/wirelesslangroup.html:17 +msgid "Add Wireless LAN" +msgstr "" + +#: templates/wireless/wirelesslangroup.html:26 wireless/forms/model_forms.py:27 +msgid "Wireless LAN Group" +msgstr "" + +#: templates/wireless/wirelesslangroup.html:64 +msgid "Add Wireless LAN Group" +msgstr "" + +#: templates/wireless/wirelesslink.html:16 +msgid "Link Properties" +msgstr "" + +#: tenancy/choices.py:19 +msgid "Tertiary" +msgstr "" + +#: tenancy/choices.py:20 +msgid "Inactive" +msgstr "" + +#: tenancy/filtersets.py:29 tenancy/filtersets.py:55 tenancy/filtersets.py:97 +msgid "Contact group (ID)" +msgstr "" + +#: tenancy/filtersets.py:35 tenancy/filtersets.py:62 tenancy/filtersets.py:104 +msgid "Contact group (slug)" +msgstr "" + +#: tenancy/filtersets.py:91 +msgid "Contact (ID)" +msgstr "" + +#: tenancy/filtersets.py:108 +msgid "Contact role (ID)" +msgstr "" + +#: tenancy/filtersets.py:114 +msgid "Contact role (slug)" +msgstr "" + +#: tenancy/filtersets.py:146 +msgid "Contact group" +msgstr "" + +#: tenancy/filtersets.py:157 tenancy/filtersets.py:176 +msgid "Tenant group (ID)" +msgstr "" + +#: tenancy/filtersets.py:209 +msgid "Tenant Group (ID)" +msgstr "" + +#: tenancy/filtersets.py:216 +msgid "Tenant Group (slug)" +msgstr "" + +#: tenancy/forms/bulk_edit.py:65 +msgid "Desciption" +msgstr "" + +#: tenancy/forms/bulk_import.py:101 +msgid "Assigned contact" +msgstr "" + +#: tenancy/models/contacts.py:32 +msgid "contact group" +msgstr "" + +#: tenancy/models/contacts.py:33 +msgid "contact groups" +msgstr "" + +#: tenancy/models/contacts.py:48 +msgid "contact role" +msgstr "" + +#: tenancy/models/contacts.py:49 +msgid "contact roles" +msgstr "" + +#: tenancy/models/contacts.py:68 +msgid "title" +msgstr "" + +#: tenancy/models/contacts.py:73 +msgid "phone" +msgstr "" + +#: tenancy/models/contacts.py:78 +msgid "email" +msgstr "" + +#: tenancy/models/contacts.py:87 +msgid "link" +msgstr "" + +#: tenancy/models/contacts.py:103 +msgid "contact" +msgstr "" + +#: tenancy/models/contacts.py:104 +msgid "contacts" +msgstr "" + +#: tenancy/models/contacts.py:153 +msgid "contact assignment" +msgstr "" + +#: tenancy/models/contacts.py:154 +msgid "contact assignments" +msgstr "" + +#: tenancy/models/contacts.py:170 +#, python-brace-format +msgid "Contacts cannot be assigned to this object type ({type})." +msgstr "" + +#: tenancy/models/tenants.py:32 +msgid "tenant group" +msgstr "" + +#: tenancy/models/tenants.py:33 +msgid "tenant groups" +msgstr "" + +#: tenancy/models/tenants.py:70 +msgid "Tenant name must be unique per group." +msgstr "" + +#: tenancy/models/tenants.py:80 +msgid "Tenant slug must be unique per group." +msgstr "" + +#: tenancy/models/tenants.py:88 +msgid "tenant" +msgstr "" + +#: tenancy/models/tenants.py:89 +msgid "tenants" +msgstr "" + +#: tenancy/tables/contacts.py:112 +msgid "Contact Title" +msgstr "" + +#: tenancy/tables/contacts.py:116 +msgid "Contact Phone" +msgstr "" + +#: tenancy/tables/contacts.py:120 +msgid "Contact Email" +msgstr "" + +#: tenancy/tables/contacts.py:124 +msgid "Contact Address" +msgstr "" + +#: tenancy/tables/contacts.py:128 +msgid "Contact Link" +msgstr "" + +#: tenancy/tables/contacts.py:132 +msgid "Contact Description" +msgstr "" + +#: users/filtersets.py:48 users/filtersets.py:151 +msgid "Group (name)" +msgstr "" + +#: users/forms/bulk_edit.py:24 +msgid "First name" +msgstr "" + +#: users/forms/bulk_edit.py:29 +msgid "Last name" +msgstr "" + +#: users/forms/bulk_edit.py:41 +msgid "Staff status" +msgstr "" + +#: users/forms/bulk_edit.py:46 +msgid "Superuser status" +msgstr "" + +#: users/forms/bulk_import.py:43 +msgid "If no key is provided, one will be generated automatically." +msgstr "" + +#: users/forms/filtersets.py:52 users/tables.py:42 +msgid "Is Staff" +msgstr "" + +#: users/forms/filtersets.py:59 users/tables.py:45 +msgid "Is Superuser" +msgstr "" + +#: users/forms/filtersets.py:92 users/tables.py:89 +msgid "Can View" +msgstr "" + +#: users/forms/filtersets.py:99 users/tables.py:92 +msgid "Can Add" +msgstr "" + +#: users/forms/filtersets.py:106 users/tables.py:95 +msgid "Can Change" +msgstr "" + +#: users/forms/filtersets.py:113 users/tables.py:98 +msgid "Can Delete" +msgstr "" + +#: users/forms/model_forms.py:58 +msgid "User Interface" +msgstr "" + +#: users/forms/model_forms.py:115 +msgid "" +"Keys must be at least 40 characters in length. Be sure to record " +"your key prior to submitting this form, as it may no longer be " +"accessible once the token has been created." +msgstr "" + +#: users/forms/model_forms.py:127 +msgid "" +"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for " +"no restrictions. Example: 10.1.1.0/24,192.168.10.16/32,2001:" +"db8:1::/64" +msgstr "" + +#: users/forms/model_forms.py:176 +msgid "Confirm password" +msgstr "" + +#: users/forms/model_forms.py:179 +msgid "Enter the same password as before, for verification." +msgstr "" + +#: users/forms/model_forms.py:237 +msgid "Passwords do not match! Please check your input and try again." +msgstr "" + +#: users/forms/model_forms.py:303 +msgid "Additional actions" +msgstr "" + +#: users/forms/model_forms.py:306 +msgid "Actions granted in addition to those listed above" +msgstr "" + +#: users/forms/model_forms.py:322 +msgid "Objects" +msgstr "" + +#: users/forms/model_forms.py:334 +msgid "" +"JSON expression of a queryset filter that will return only permitted " +"objects. Leave null to match all objects of this type. A list of multiple " +"objects will result in a logical OR operation." +msgstr "" + +#: users/forms/model_forms.py:372 +msgid "At least one action must be selected." +msgstr "" + +#: users/forms/model_forms.py:389 +#, python-brace-format +msgid "Invalid filter for {model}: {error}" +msgstr "" + +#: users/models.py:54 +msgid "user" +msgstr "" + +#: users/models.py:55 +msgid "users" +msgstr "" + +#: users/models.py:66 +msgid "A user with this username already exists." +msgstr "" + +#: users/models.py:78 vpn/models/crypto.py:42 +msgid "group" +msgstr "" + +#: users/models.py:79 +msgid "groups" +msgstr "" + +#: users/models.py:106 users/models.py:107 +msgid "user preferences" +msgstr "" + +#: users/models.py:174 +#, python-brace-format +msgid "Key '{path}' is a leaf node; cannot assign new keys" +msgstr "" + +#: users/models.py:186 +#, python-brace-format +msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" +msgstr "" + +#: users/models.py:252 +msgid "expires" +msgstr "" + +#: users/models.py:257 +msgid "last used" +msgstr "" + +#: users/models.py:262 +msgid "key" +msgstr "" + +#: users/models.py:268 +msgid "write enabled" +msgstr "" + +#: users/models.py:270 +msgid "Permit create/update/delete operations using this key" +msgstr "" + +#: users/models.py:281 +msgid "allowed IPs" +msgstr "" + +#: users/models.py:283 +msgid "" +"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for " +"no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" +msgstr "" + +#: users/models.py:291 +msgid "token" +msgstr "" + +#: users/models.py:292 +msgid "tokens" +msgstr "" + +#: users/models.py:373 +msgid "The list of actions granted by this permission" +msgstr "" + +#: users/models.py:378 +msgid "constraints" +msgstr "" + +#: users/models.py:379 +msgid "Queryset filter matching the applicable objects of the selected type(s)" +msgstr "" + +#: users/models.py:386 +msgid "permission" +msgstr "" + +#: users/models.py:387 +msgid "permissions" +msgstr "" + +#: users/tables.py:101 +msgid "Custom Actions" +msgstr "" + +#: utilities/choices.py:16 +#, python-brace-format +msgid "{name} has a key defined but CHOICES is not a list" +msgstr "" + +#: utilities/choices.py:135 +msgid "Dark Red" +msgstr "" + +#: utilities/choices.py:138 +msgid "Rose" +msgstr "" + +#: utilities/choices.py:139 +msgid "Fuchsia" +msgstr "" + +#: utilities/choices.py:141 +msgid "Dark Purple" +msgstr "" + +#: utilities/choices.py:144 +msgid "Light Blue" +msgstr "" + +#: utilities/choices.py:147 +msgid "Aqua" +msgstr "" + +#: utilities/choices.py:148 +msgid "Dark Green" +msgstr "" + +#: utilities/choices.py:150 +msgid "Light Green" +msgstr "" + +#: utilities/choices.py:151 +msgid "Lime" +msgstr "" + +#: utilities/choices.py:153 +msgid "Amber" +msgstr "" + +#: utilities/choices.py:155 +msgid "Dark Orange" +msgstr "" + +#: utilities/choices.py:156 +msgid "Brown" +msgstr "" + +#: utilities/choices.py:157 +msgid "Light Grey" +msgstr "" + +#: utilities/choices.py:158 +msgid "Grey" +msgstr "" + +#: utilities/choices.py:159 +msgid "Dark Grey" +msgstr "" + +#: utilities/choices.py:217 +msgid "Direct" +msgstr "" + +#: utilities/choices.py:218 +msgid "Upload" +msgstr "" + +#: utilities/choices.py:230 utilities/choices.py:244 +msgid "Auto-detect" +msgstr "" + +#: utilities/choices.py:245 +msgid "Comma" +msgstr "" + +#: utilities/choices.py:246 +msgid "Semicolon" +msgstr "" + +#: utilities/choices.py:247 +msgid "Tab" +msgstr "" + +#: utilities/error_handlers.py:20 +#, python-brace-format +msgid "" +"Unable to delete {objects}. {count} dependent objects were " +"found: " +msgstr "" + +#: utilities/error_handlers.py:22 +msgid "More than 50" +msgstr "" + +#: utilities/fields.py:162 +#, python-format +msgid "" +"%s(%r) is invalid. to_model parameter to CounterCacheField must be a string " +"in the format 'app.model'" +msgstr "" + +#: utilities/fields.py:172 +#, python-format +msgid "" +"%s(%r) is invalid. to_field parameter to CounterCacheField must be a string " +"in the format 'field'" +msgstr "" + +#: utilities/forms/bulk_import.py:24 +msgid "Enter object data in CSV, JSON or YAML format." +msgstr "" + +#: utilities/forms/bulk_import.py:37 +msgid "CSV delimiter" +msgstr "" + +#: utilities/forms/bulk_import.py:38 +msgid "The character which delimits CSV fields. Applies only to CSV format." +msgstr "" + +#: utilities/forms/bulk_import.py:101 +msgid "Unable to detect data format. Please specify." +msgstr "" + +#: utilities/forms/bulk_import.py:124 +msgid "Invalid CSV delimiter" +msgstr "" + +#: utilities/forms/bulk_import.py:168 +msgid "" +"Invalid YAML data. Data must be in the form of multiple documents, or a " +"single document comprising a list of dictionaries." +msgstr "" + +#: utilities/forms/fields/array.py:17 +#, python-brace-format +msgid "" +"Invalid list ({value}). Must be numeric and ranges must be in ascending " +"order." +msgstr "" + +#: utilities/forms/fields/csv.py:44 +#, python-brace-format +msgid "Invalid value for a multiple choice field: {value}" +msgstr "" + +#: utilities/forms/fields/csv.py:57 utilities/forms/fields/csv.py:74 +#, python-format +msgid "Object not found: %(value)s" +msgstr "" + +#: utilities/forms/fields/csv.py:65 +#, python-brace-format +msgid "" +"\"{value}\" is not a unique value for this field; multiple objects were found" +msgstr "" + +#: utilities/forms/fields/csv.py:97 +msgid "Object type must be specified as \".\"" +msgstr "" + +#: utilities/forms/fields/csv.py:101 +msgid "Invalid object type" +msgstr "" + +#: utilities/forms/fields/expandable.py:25 +msgid "" +"Alphanumeric ranges are supported for bulk creation. Mixed cases and types " +"within a single range are not supported (example: [ge,xe]-0/0/[0-9])." +msgstr "" + +#: utilities/forms/fields/expandable.py:46 +msgid "" +"Specify a numeric range to create multiple IPs.
    Example: 192.0.2." +"[1,5,100-254]/24" +msgstr "" + +#: utilities/forms/fields/fields.py:31 +#, python-brace-format +msgid "" +" Markdown syntax is supported" +msgstr "" + +#: utilities/forms/fields/fields.py:48 +msgid "URL-friendly unique shorthand" +msgstr "" + +#: utilities/forms/fields/fields.py:99 +msgid "Enter context data in JSON format." +msgstr "" + +#: utilities/forms/fields/fields.py:117 +msgid "MAC address must be in EUI-48 format" +msgstr "" + +#: utilities/forms/forms.py:53 +msgid "Use regular expressions" +msgstr "" + +#: utilities/forms/forms.py:87 +#, python-brace-format +msgid "Unrecognized header: {name}" +msgstr "" + +#: utilities/forms/forms.py:113 +msgid "Available Columns" +msgstr "" + +#: utilities/forms/forms.py:121 +msgid "Selected Columns" +msgstr "" + +#: utilities/forms/mixins.py:101 +msgid "" +"This object has been modified since the form was rendered. Please consult " +"the object's change log for details." +msgstr "" + +#: utilities/templates/builtins/customfield_value.html:30 +msgid "Not defined" +msgstr "" + +#: utilities/templates/buttons/bookmark.html:9 +msgid "Unbookmark" +msgstr "" + +#: utilities/templates/buttons/bookmark.html:13 +msgid "Bookmark" +msgstr "" + +#: utilities/templates/buttons/clone.html:4 +msgid "Clone" +msgstr "" + +#: utilities/templates/buttons/export.html:4 +msgid "Export" +msgstr "" + +#: utilities/templates/buttons/export.html:7 +msgid "Current View" +msgstr "" + +#: utilities/templates/buttons/export.html:8 +msgid "All Data" +msgstr "" + +#: utilities/templates/buttons/export.html:28 +msgid "Add export template" +msgstr "" + +#: utilities/templates/buttons/import.html:4 +msgid "Import" +msgstr "" + +#: utilities/templates/form_helpers/render_field.html:36 +msgid "Copy to clipboard" +msgstr "" + +#: utilities/templates/form_helpers/render_field.html:52 +msgid "This field is required" +msgstr "" + +#: utilities/templates/form_helpers/render_field.html:65 +msgid "Set Null" +msgstr "" + +#: utilities/templates/helpers/applied_filters.html:11 +msgid "Clear all" +msgstr "" + +#: utilities/templates/helpers/table_config_form.html:8 +msgid "Table Configuration" +msgstr "" + +#: utilities/templates/helpers/table_config_form.html:31 +msgid "Move Up" +msgstr "" + +#: utilities/templates/helpers/table_config_form.html:34 +msgid "Move Down" +msgstr "" + +#: utilities/templates/widgets/apiselect.html:7 +msgid "Open selector" +msgstr "" + +#: utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "" + +#: utilities/templates/widgets/markdown_input.html:6 +msgid "Write" +msgstr "" + +#: utilities/templates/widgets/markdown_input.html:20 +msgid "Testing" +msgstr "" + +#: virtualization/filtersets.py:79 +msgid "Parent group (ID)" +msgstr "" + +#: virtualization/filtersets.py:85 +msgid "Parent group (slug)" +msgstr "" + +#: virtualization/filtersets.py:89 virtualization/filtersets.py:140 +msgid "Cluster type (ID)" +msgstr "" + +#: virtualization/filtersets.py:129 +msgid "Cluster group (ID)" +msgstr "" + +#: virtualization/filtersets.py:150 virtualization/filtersets.py:265 +msgid "Cluster (ID)" +msgstr "" + +#: virtualization/forms/bulk_edit.py:165 +#: virtualization/models/virtualmachines.py:113 +msgid "vCPUs" +msgstr "" + +#: virtualization/forms/bulk_edit.py:169 +msgid "Memory (MB)" +msgstr "" + +#: virtualization/forms/bulk_edit.py:173 +msgid "Disk (GB)" +msgstr "" + +#: virtualization/forms/bulk_edit.py:333 virtualization/forms/filtersets.py:243 +msgid "Size (GB)" +msgstr "" + +#: virtualization/forms/bulk_import.py:44 +msgid "Type of cluster" +msgstr "" + +#: virtualization/forms/bulk_import.py:51 +msgid "Assigned cluster group" +msgstr "" + +#: virtualization/forms/bulk_import.py:96 +msgid "Assigned cluster" +msgstr "" + +#: virtualization/forms/bulk_import.py:103 +msgid "Assigned device within cluster" +msgstr "" + +#: virtualization/forms/model_forms.py:156 +#, python-brace-format +msgid "" +"{device} belongs to a different site ({device_site}) than the cluster " +"({cluster_site})" +msgstr "" + +#: virtualization/forms/model_forms.py:195 +msgid "Optionally pin this VM to a specific host device within the cluster" +msgstr "" + +#: virtualization/forms/model_forms.py:224 +msgid "Site/Cluster" +msgstr "" + +#: virtualization/forms/model_forms.py:247 +msgid "Disk size is managed via the attachment of virtual disks." +msgstr "" + +#: virtualization/forms/model_forms.py:375 +msgid "Disk" +msgstr "" + +#: virtualization/models/clusters.py:25 +msgid "cluster type" +msgstr "" + +#: virtualization/models/clusters.py:26 +msgid "cluster types" +msgstr "" + +#: virtualization/models/clusters.py:45 +msgid "cluster group" +msgstr "" + +#: virtualization/models/clusters.py:46 +msgid "cluster groups" +msgstr "" + +#: virtualization/models/clusters.py:121 +msgid "cluster" +msgstr "" + +#: virtualization/models/clusters.py:122 +msgid "clusters" +msgstr "" + +#: virtualization/models/clusters.py:141 +#, python-brace-format +msgid "" +"{count} devices are assigned as hosts for this cluster but are not in site " +"{site}" +msgstr "" + +#: virtualization/models/virtualmachines.py:121 +msgid "memory (MB)" +msgstr "" + +#: virtualization/models/virtualmachines.py:126 +msgid "disk (GB)" +msgstr "" + +#: virtualization/models/virtualmachines.py:159 +msgid "Virtual machine name must be unique per cluster." +msgstr "" + +#: virtualization/models/virtualmachines.py:162 +msgid "virtual machine" +msgstr "" + +#: virtualization/models/virtualmachines.py:163 +msgid "virtual machines" +msgstr "" + +#: virtualization/models/virtualmachines.py:177 +msgid "A virtual machine must be assigned to a site and/or cluster." +msgstr "" + +#: virtualization/models/virtualmachines.py:184 +#, python-brace-format +msgid "The selected cluster ({cluster}) is not assigned to this site ({site})." +msgstr "" + +#: virtualization/models/virtualmachines.py:191 +msgid "Must specify a cluster when assigning a host device." +msgstr "" + +#: virtualization/models/virtualmachines.py:196 +#, python-brace-format +msgid "" +"The selected device ({device}) is not assigned to this cluster ({cluster})." +msgstr "" + +#: virtualization/models/virtualmachines.py:208 +#, python-brace-format +msgid "" +"The specified disk size ({size}) must match the aggregate size of assigned " +"virtual disks ({total_size})." +msgstr "" + +#: virtualization/models/virtualmachines.py:222 +#, python-brace-format +msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" +msgstr "" + +#: virtualization/models/virtualmachines.py:231 +#, python-brace-format +msgid "The specified IP address ({ip}) is not assigned to this VM." +msgstr "" + +#: virtualization/models/virtualmachines.py:389 +#, python-brace-format +msgid "" +"The selected parent interface ({parent}) belongs to a different virtual " +"machine ({virtual_machine})." +msgstr "" + +#: virtualization/models/virtualmachines.py:404 +#, python-brace-format +msgid "" +"The selected bridge interface ({bridge}) belongs to a different virtual " +"machine ({virtual_machine})." +msgstr "" + +#: virtualization/models/virtualmachines.py:415 +#, python-brace-format +msgid "" +"The untagged VLAN ({untagged_vlan}) must belong to the same site as the " +"interface's parent virtual machine, or it must be global." +msgstr "" + +#: virtualization/models/virtualmachines.py:427 +msgid "size (GB)" +msgstr "" + +#: virtualization/models/virtualmachines.py:431 +msgid "virtual disk" +msgstr "" + +#: virtualization/models/virtualmachines.py:432 +msgid "virtual disks" +msgstr "" + +#: vpn/choices.py:31 +msgid "IPsec - Transport" +msgstr "" + +#: vpn/choices.py:32 +msgid "IPsec - Tunnel" +msgstr "" + +#: vpn/choices.py:33 +msgid "IP-in-IP" +msgstr "" + +#: vpn/choices.py:34 +msgid "GRE" +msgstr "" + +#: vpn/choices.py:56 +msgid "Hub" +msgstr "" + +#: vpn/choices.py:57 +msgid "Spoke" +msgstr "" + +#: vpn/choices.py:80 +msgid "Aggressive" +msgstr "" + +#: vpn/choices.py:81 +msgid "Main" +msgstr "" + +#: vpn/choices.py:92 +msgid "Pre-shared keys" +msgstr "" + +#: vpn/choices.py:93 +msgid "Certificates" +msgstr "" + +#: vpn/choices.py:94 +msgid "RSA signatures" +msgstr "" + +#: vpn/choices.py:95 +msgid "DSA signatures" +msgstr "" + +#: vpn/choices.py:178 vpn/choices.py:179 vpn/choices.py:180 vpn/choices.py:181 +#: vpn/choices.py:182 vpn/choices.py:183 vpn/choices.py:184 vpn/choices.py:185 +#: vpn/choices.py:186 vpn/choices.py:187 vpn/choices.py:188 vpn/choices.py:189 +#: vpn/choices.py:190 vpn/choices.py:191 vpn/choices.py:192 vpn/choices.py:193 +#: vpn/choices.py:194 vpn/choices.py:195 vpn/choices.py:196 vpn/choices.py:197 +#: vpn/choices.py:198 vpn/choices.py:199 vpn/choices.py:200 +#, python-brace-format +msgid "Group {n}" +msgstr "" + +#: vpn/choices.py:240 +msgid "Ethernet Private LAN" +msgstr "" + +#: vpn/choices.py:241 +msgid "Ethernet Virtual Private LAN" +msgstr "" + +#: vpn/choices.py:244 +msgid "Ethernet Private Tree" +msgstr "" + +#: vpn/choices.py:245 +msgid "Ethernet Virtual Private Tree" +msgstr "" + +#: vpn/filtersets.py:41 +msgid "Tunnel group (ID)" +msgstr "" + +#: vpn/filtersets.py:47 +msgid "Tunnel group (slug)" +msgstr "" + +#: vpn/filtersets.py:54 +msgid "IPSec profile (ID)" +msgstr "" + +#: vpn/filtersets.py:60 +msgid "IPSec profile (name)" +msgstr "" + +#: vpn/filtersets.py:81 +msgid "Tunnel (ID)" +msgstr "" + +#: vpn/filtersets.py:87 +msgid "Tunnel (name)" +msgstr "" + +#: vpn/filtersets.py:118 +msgid "Outside IP (ID)" +msgstr "" + +#: vpn/filtersets.py:235 +msgid "IKE policy (ID)" +msgstr "" + +#: vpn/filtersets.py:241 +msgid "IKE policy (name)" +msgstr "" + +#: vpn/filtersets.py:245 +msgid "IPSec policy (ID)" +msgstr "" + +#: vpn/filtersets.py:251 +msgid "IPSec policy (name)" +msgstr "" + +#: vpn/filtersets.py:320 +msgid "L2VPN (slug)" +msgstr "" + +#: vpn/filtersets.py:384 +msgid "VM Interface (ID)" +msgstr "" + +#: vpn/filtersets.py:390 +msgid "VLAN (name)" +msgstr "" + +#: vpn/forms/bulk_edit.py:44 vpn/forms/bulk_import.py:42 +#: vpn/forms/filtersets.py:53 +msgid "Tunnel group" +msgstr "" + +#: vpn/forms/bulk_edit.py:116 vpn/models/crypto.py:47 +msgid "SA lifetime" +msgstr "" + +#: vpn/forms/bulk_edit.py:150 wireless/forms/bulk_edit.py:78 +#: wireless/forms/bulk_edit.py:125 wireless/forms/filtersets.py:63 +#: wireless/forms/filtersets.py:97 +msgid "Pre-shared key" +msgstr "" + +#: vpn/forms/bulk_edit.py:238 vpn/forms/bulk_import.py:234 +#: vpn/forms/filtersets.py:196 vpn/forms/model_forms.py:363 +#: vpn/models/crypto.py:103 +msgid "IKE policy" +msgstr "" + +#: vpn/forms/bulk_edit.py:243 vpn/forms/bulk_import.py:239 +#: vpn/forms/filtersets.py:201 vpn/forms/model_forms.py:367 +#: vpn/models/crypto.py:197 +msgid "IPSec policy" +msgstr "" + +#: vpn/forms/bulk_import.py:50 +msgid "Tunnel encapsulation" +msgstr "" + +#: vpn/forms/bulk_import.py:83 +msgid "Operational role" +msgstr "" + +#: vpn/forms/bulk_import.py:90 +msgid "Parent device of assigned interface" +msgstr "" + +#: vpn/forms/bulk_import.py:97 +msgid "Parent VM of assigned interface" +msgstr "" + +#: vpn/forms/bulk_import.py:104 +msgid "Device or virtual machine interface" +msgstr "" + +#: vpn/forms/bulk_import.py:181 +msgid "IKE proposal(s)" +msgstr "" + +#: vpn/forms/bulk_import.py:211 vpn/models/crypto.py:185 +msgid "Diffie-Hellman group for Perfect Forward Secrecy" +msgstr "" + +#: vpn/forms/bulk_import.py:217 +msgid "IPSec proposal(s)" +msgstr "" + +#: vpn/forms/bulk_import.py:231 +msgid "IPSec protocol" +msgstr "" + +#: vpn/forms/bulk_import.py:261 +msgid "L2VPN type" +msgstr "" + +#: vpn/forms/bulk_import.py:282 +msgid "Parent device (for interface)" +msgstr "" + +#: vpn/forms/bulk_import.py:289 +msgid "Parent virtual machine (for interface)" +msgstr "" + +#: vpn/forms/bulk_import.py:296 +msgid "Assigned interface (device or VM)" +msgstr "" + +#: vpn/forms/bulk_import.py:329 +msgid "Cannot import device and VM interface terminations simultaneously." +msgstr "" + +#: vpn/forms/bulk_import.py:331 +msgid "Each termination must specify either an interface or a VLAN." +msgstr "" + +#: vpn/forms/bulk_import.py:333 +msgid "Cannot assign both an interface and a VLAN." +msgstr "" + +#: vpn/forms/filtersets.py:127 +msgid "IKE version" +msgstr "" + +#: vpn/forms/filtersets.py:139 vpn/forms/filtersets.py:172 +#: vpn/forms/model_forms.py:293 vpn/forms/model_forms.py:328 +msgid "Proposal" +msgstr "" + +#: vpn/forms/filtersets.py:247 +msgid "Assigned Object Type" +msgstr "" + +#: vpn/forms/model_forms.py:147 +msgid "First Termination" +msgstr "" + +#: vpn/forms/model_forms.py:151 +msgid "Second Termination" +msgstr "" + +#: vpn/forms/model_forms.py:198 +msgid "This parameter is required when defining a termination." +msgstr "" + +#: vpn/forms/model_forms.py:314 vpn/forms/model_forms.py:349 +msgid "Policy" +msgstr "" + +#: vpn/forms/model_forms.py:469 +msgid "A termination must specify an interface or VLAN." +msgstr "" + +#: vpn/forms/model_forms.py:471 +msgid "" +"A termination can only have one terminating object (an interface or VLAN)." +msgstr "" + +#: vpn/models/crypto.py:33 +msgid "encryption algorithm" +msgstr "" + +#: vpn/models/crypto.py:37 +msgid "authentication algorithm" +msgstr "" + +#: vpn/models/crypto.py:44 +msgid "Diffie-Hellman group ID" +msgstr "" + +#: vpn/models/crypto.py:50 +msgid "Security association lifetime (in seconds)" +msgstr "" + +#: vpn/models/crypto.py:59 +msgid "IKE proposal" +msgstr "" + +#: vpn/models/crypto.py:60 +msgid "IKE proposals" +msgstr "" + +#: vpn/models/crypto.py:76 +msgid "version" +msgstr "" + +#: vpn/models/crypto.py:87 vpn/models/crypto.py:178 +msgid "proposals" +msgstr "" + +#: vpn/models/crypto.py:90 wireless/models.py:38 +msgid "pre-shared key" +msgstr "" + +#: vpn/models/crypto.py:104 +msgid "IKE policies" +msgstr "" + +#: vpn/models/crypto.py:124 +msgid "encryption" +msgstr "" + +#: vpn/models/crypto.py:129 +msgid "authentication" +msgstr "" + +#: vpn/models/crypto.py:137 +msgid "Security association lifetime (seconds)" +msgstr "" + +#: vpn/models/crypto.py:143 +msgid "Security association lifetime (in kilobytes)" +msgstr "" + +#: vpn/models/crypto.py:152 +msgid "IPSec proposal" +msgstr "" + +#: vpn/models/crypto.py:153 +msgid "IPSec proposals" +msgstr "" + +#: vpn/models/crypto.py:166 +msgid "Encryption and/or authentication algorithm must be defined" +msgstr "" + +#: vpn/models/crypto.py:198 +msgid "IPSec policies" +msgstr "" + +#: vpn/models/crypto.py:239 +msgid "IPSec profiles" +msgstr "" + +#: vpn/models/l2vpn.py:116 +msgid "L2VPN termination" +msgstr "" + +#: vpn/models/l2vpn.py:117 +msgid "L2VPN terminations" +msgstr "" + +#: vpn/models/l2vpn.py:135 +#, python-brace-format +msgid "L2VPN Termination already assigned ({assigned_object})" +msgstr "" + +#: vpn/models/l2vpn.py:147 +#, python-brace-format +msgid "" +"{l2vpn_type} L2VPNs cannot have more than two terminations; found " +"{terminations_count} already defined." +msgstr "" + +#: vpn/models/tunnels.py:26 +msgid "tunnel group" +msgstr "" + +#: vpn/models/tunnels.py:27 +msgid "tunnel groups" +msgstr "" + +#: vpn/models/tunnels.py:53 +msgid "encapsulation" +msgstr "" + +#: vpn/models/tunnels.py:72 +msgid "tunnel ID" +msgstr "" + +#: vpn/models/tunnels.py:94 +msgid "tunnel" +msgstr "" + +#: vpn/models/tunnels.py:95 +msgid "tunnels" +msgstr "" + +#: vpn/models/tunnels.py:153 +msgid "An object may be terminated to only one tunnel at a time." +msgstr "" + +#: vpn/models/tunnels.py:156 +msgid "tunnel termination" +msgstr "" + +#: vpn/models/tunnels.py:157 +msgid "tunnel terminations" +msgstr "" + +#: vpn/models/tunnels.py:174 +#, python-brace-format +msgid "{name} is already attached to a tunnel ({tunnel})." +msgstr "" + +#: vpn/tables/crypto.py:22 +msgid "Authentication Method" +msgstr "" + +#: vpn/tables/crypto.py:25 vpn/tables/crypto.py:97 +msgid "Encryption Algorithm" +msgstr "" + +#: vpn/tables/crypto.py:28 vpn/tables/crypto.py:100 +msgid "Authentication Algorithm" +msgstr "" + +#: vpn/tables/crypto.py:34 +msgid "SA Lifetime" +msgstr "" + +#: vpn/tables/crypto.py:71 +msgid "Pre-shared Key" +msgstr "" + +#: vpn/tables/crypto.py:103 +msgid "SA Lifetime (Seconds)" +msgstr "" + +#: vpn/tables/crypto.py:106 +msgid "SA Lifetime (KB)" +msgstr "" + +#: vpn/tables/l2vpn.py:69 +msgid "Object Parent" +msgstr "" + +#: vpn/tables/l2vpn.py:74 +msgid "Object Site" +msgstr "" + +#: vpn/tables/tunnels.py:84 +msgid "Host" +msgstr "" + +#: wireless/choices.py:11 +msgid "Access point" +msgstr "" + +#: wireless/choices.py:12 +msgid "Station" +msgstr "" + +#: wireless/choices.py:467 +msgid "Open" +msgstr "" + +#: wireless/choices.py:469 +msgid "WPA Personal (PSK)" +msgstr "" + +#: wireless/choices.py:470 +msgid "WPA Enterprise" +msgstr "" + +#: wireless/forms/bulk_edit.py:72 wireless/forms/bulk_edit.py:119 +#: wireless/forms/bulk_import.py:68 wireless/forms/bulk_import.py:71 +#: wireless/forms/bulk_import.py:110 wireless/forms/bulk_import.py:113 +#: wireless/forms/filtersets.py:58 wireless/forms/filtersets.py:92 +msgid "Authentication cipher" +msgstr "" + +#: wireless/forms/bulk_import.py:52 +msgid "Bridged VLAN" +msgstr "" + +#: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:27 +msgid "Interface A" +msgstr "" + +#: wireless/forms/bulk_import.py:93 wireless/tables/wirelesslink.py:36 +msgid "Interface B" +msgstr "" + +#: wireless/forms/model_forms.py:158 +msgid "Side B" +msgstr "" + +#: wireless/models.py:30 +msgid "authentication cipher" +msgstr "" + +#: wireless/models.py:68 +msgid "wireless LAN group" +msgstr "" + +#: wireless/models.py:69 +msgid "wireless LAN groups" +msgstr "" + +#: wireless/models.py:115 +msgid "wireless LAN" +msgstr "" + +#: wireless/models.py:143 +msgid "interface A" +msgstr "" + +#: wireless/models.py:150 +msgid "interface B" +msgstr "" + +#: wireless/models.py:198 +msgid "wireless link" +msgstr "" + +#: wireless/models.py:199 +msgid "wireless links" +msgstr "" + +#: wireless/models.py:216 wireless/models.py:222 +#, python-brace-format +msgid "{type} is not a wireless interface." +msgstr "" diff --git a/netbox/translations/es/LC_MESSAGES/django.mo b/netbox/translations/es/LC_MESSAGES/django.mo new file mode 100644 index 000000000..5759ed673 Binary files /dev/null and b/netbox/translations/es/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/es/LC_MESSAGES/django.po b/netbox/translations/es/LC_MESSAGES/django.po new file mode 100644 index 000000000..3b0da01e8 --- /dev/null +++ b/netbox/translations/es/LC_MESSAGES/django.po @@ -0,0 +1,13639 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Jeremy Stretch, 2023 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-21 17:54+0000\n" +"PO-Revision-Date: 2023-10-30 17:48+0000\n" +"Last-Translator: Jeremy Stretch, 2023\n" +"Language-Team: Spanish (https://app.transifex.com/netbox-community/teams/178115/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#: account/tables.py:27 templates/account/token.html:23 +#: templates/users/token.html:18 users/forms/bulk_import.py:41 +#: users/forms/model_forms.py:113 +msgid "Key" +msgstr "Llave" + +#: account/tables.py:31 users/forms/filtersets.py:133 +msgid "Write Enabled" +msgstr "Escritura habilitada" + +#: account/tables.py:34 core/tables/jobs.py:29 extras/choices.py:135 +#: extras/tables/tables.py:469 templates/account/token.html:44 +#: templates/core/configrevision.html:34 +#: templates/core/configrevision_restore.html:12 templates/core/job.html:58 +#: templates/extras/htmx/report_result.html:11 +#: templates/extras/htmx/script_result.html:12 +#: templates/extras/journalentry.html:25 templates/generic/object.html:48 +#: templates/users/token.html:36 +msgid "Created" +msgstr "Creado" + +#: account/tables.py:37 templates/account/token.html:48 +#: templates/users/token.html:40 users/forms/bulk_edit.py:97 +#: users/forms/filtersets.py:137 +msgid "Expires" +msgstr "Caduca" + +#: account/tables.py:40 users/forms/filtersets.py:142 +msgid "Last Used" +msgstr "Utilizado por última vez" + +#: account/tables.py:43 templates/account/token.html:56 +#: templates/users/token.html:48 users/forms/bulk_edit.py:102 +#: users/forms/model_forms.py:125 +msgid "Allowed IPs" +msgstr "IPs permitidas" + +#: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1419 +#: dcim/choices.py:1495 dcim/choices.py:1545 virtualization/choices.py:20 +#: virtualization/choices.py:45 vpn/choices.py:18 +msgid "Planned" +msgstr "Planificado" + +#: circuits/choices.py:22 netbox/navigation/menu.py:290 +msgid "Provisioning" +msgstr "Aprovisionamiento" + +#: circuits/choices.py:23 dcim/choices.py:22 dcim/choices.py:103 +#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1494 +#: dcim/choices.py:1544 extras/tables/tables.py:375 ipam/choices.py:31 +#: ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 +#: templates/extras/configcontext.html:26 templates/users/user.html:34 +#: users/forms/bulk_edit.py:36 virtualization/choices.py:22 +#: virtualization/choices.py:44 vpn/choices.py:19 wireless/choices.py:25 +msgid "Active" +msgstr "Activo" + +#: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 +#: dcim/choices.py:1493 dcim/choices.py:1546 virtualization/choices.py:24 +#: virtualization/choices.py:43 +msgid "Offline" +msgstr "Desconectado" + +#: circuits/choices.py:25 +msgid "Deprovisioning" +msgstr "Desaprovisionamiento" + +#: circuits/choices.py:26 +msgid "Decommissioned" +msgstr "Desmantelado" + +#: circuits/filtersets.py:29 circuits/filtersets.py:182 dcim/filtersets.py:120 +#: dcim/filtersets.py:181 dcim/filtersets.py:256 dcim/filtersets.py:364 +#: dcim/filtersets.py:881 dcim/filtersets.py:1177 dcim/filtersets.py:1672 +#: dcim/filtersets.py:1845 dcim/filtersets.py:1902 ipam/filtersets.py:305 +#: ipam/filtersets.py:896 virtualization/filtersets.py:45 +#: virtualization/filtersets.py:172 vpn/filtersets.py:330 +msgid "Region (ID)" +msgstr "Región (ID)" + +#: circuits/filtersets.py:36 circuits/filtersets.py:189 dcim/filtersets.py:126 +#: dcim/filtersets.py:188 dcim/filtersets.py:263 dcim/filtersets.py:371 +#: dcim/filtersets.py:888 dcim/filtersets.py:1184 dcim/filtersets.py:1679 +#: dcim/filtersets.py:1852 dcim/filtersets.py:1909 extras/filtersets.py:414 +#: ipam/filtersets.py:312 ipam/filtersets.py:903 +#: virtualization/filtersets.py:52 virtualization/filtersets.py:179 +#: vpn/filtersets.py:325 +msgid "Region (slug)" +msgstr "Región (slug)" + +#: circuits/filtersets.py:42 circuits/filtersets.py:195 dcim/filtersets.py:194 +#: dcim/filtersets.py:269 dcim/filtersets.py:377 dcim/filtersets.py:894 +#: dcim/filtersets.py:1190 dcim/filtersets.py:1685 dcim/filtersets.py:1858 +#: dcim/filtersets.py:1915 ipam/filtersets.py:318 ipam/filtersets.py:909 +#: virtualization/filtersets.py:58 virtualization/filtersets.py:185 +msgid "Site group (ID)" +msgstr "Grupo de sitios (ID)" + +#: circuits/filtersets.py:49 circuits/filtersets.py:202 dcim/filtersets.py:201 +#: dcim/filtersets.py:276 dcim/filtersets.py:384 dcim/filtersets.py:901 +#: dcim/filtersets.py:1197 dcim/filtersets.py:1692 dcim/filtersets.py:1865 +#: dcim/filtersets.py:1922 extras/filtersets.py:420 ipam/filtersets.py:325 +#: ipam/filtersets.py:916 virtualization/filtersets.py:65 +#: virtualization/filtersets.py:192 +msgid "Site group (slug)" +msgstr "Grupo de sitios (slug)" + +#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:117 +#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:171 +#: circuits/forms/model_forms.py:137 dcim/forms/bulk_edit.py:166 +#: dcim/forms/bulk_edit.py:238 dcim/forms/bulk_edit.py:570 +#: dcim/forms/bulk_edit.py:763 dcim/forms/bulk_import.py:130 +#: dcim/forms/bulk_import.py:176 dcim/forms/bulk_import.py:249 +#: dcim/forms/bulk_import.py:477 dcim/forms/bulk_import.py:1239 +#: dcim/forms/bulk_import.py:1267 dcim/forms/filtersets.py:84 +#: dcim/forms/filtersets.py:217 dcim/forms/filtersets.py:264 +#: dcim/forms/filtersets.py:373 dcim/forms/filtersets.py:680 +#: dcim/forms/filtersets.py:910 dcim/forms/filtersets.py:934 +#: dcim/forms/filtersets.py:1024 dcim/forms/filtersets.py:1062 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:138 +#: dcim/forms/model_forms.py:167 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:397 dcim/forms/model_forms.py:630 +#: dcim/forms/object_create.py:390 dcim/tables/devices.py:186 +#: dcim/tables/power.py:26 dcim/tables/power.py:93 dcim/tables/racks.py:62 +#: dcim/tables/racks.py:138 dcim/tables/sites.py:129 extras/filtersets.py:430 +#: ipam/forms/bulk_edit.py:215 ipam/forms/bulk_edit.py:269 +#: ipam/forms/bulk_edit.py:447 ipam/forms/bulk_edit.py:519 +#: ipam/forms/bulk_import.py:170 ipam/forms/bulk_import.py:437 +#: ipam/forms/filtersets.py:152 ipam/forms/filtersets.py:226 +#: ipam/forms/filtersets.py:417 ipam/forms/filtersets.py:470 +#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:548 +#: ipam/forms/model_forms.py:640 ipam/tables/ip.py:244 +#: ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 +#: templates/circuits/circuittermination_edit.html:20 +#: templates/circuits/inc/circuit_termination.html:33 +#: templates/dcim/device.html:22 templates/dcim/inc/cable_termination.html:8 +#: templates/dcim/inc/cable_termination.html:33 +#: templates/dcim/location.html:40 templates/dcim/powerpanel.html:23 +#: templates/dcim/rack.html:25 templates/dcim/rackreservation.html:31 +#: templates/dcim/site.html:27 templates/ipam/prefix.html:57 +#: templates/ipam/vlan.html:26 templates/ipam/vlan_edit.html:40 +#: templates/virtualization/cluster.html:45 +#: templates/virtualization/virtualmachine.html:96 +#: virtualization/forms/bulk_edit.py:90 virtualization/forms/bulk_edit.py:99 +#: virtualization/forms/bulk_edit.py:108 virtualization/forms/bulk_edit.py:123 +#: virtualization/forms/bulk_import.py:59 +#: virtualization/forms/bulk_import.py:85 +#: virtualization/forms/filtersets.py:78 +#: virtualization/forms/filtersets.py:144 +#: virtualization/forms/model_forms.py:74 +#: virtualization/forms/model_forms.py:107 +#: virtualization/forms/model_forms.py:174 +#: virtualization/tables/clusters.py:77 +#: virtualization/tables/virtualmachines.py:53 vpn/forms/filtersets.py:262 +#: wireless/forms/model_forms.py:77 wireless/forms/model_forms.py:117 +msgid "Site" +msgstr "Sitio" + +#: circuits/filtersets.py:60 circuits/filtersets.py:213 +#: circuits/filtersets.py:250 dcim/filtersets.py:211 dcim/filtersets.py:286 +#: dcim/filtersets.py:358 extras/filtersets.py:436 ipam/filtersets.py:215 +#: ipam/filtersets.py:335 ipam/filtersets.py:926 +#: virtualization/filtersets.py:75 virtualization/filtersets.py:202 +#: vpn/filtersets.py:335 +msgid "Site (slug)" +msgstr "Sitio (babosa)" + +#: circuits/filtersets.py:65 +msgid "ASN (ID)" +msgstr "ASN (ID)" + +#: circuits/filtersets.py:86 circuits/filtersets.py:112 +#: circuits/filtersets.py:146 +msgid "Provider (ID)" +msgstr "Proveedor (ID)" + +#: circuits/filtersets.py:92 circuits/filtersets.py:118 +#: circuits/filtersets.py:152 +msgid "Provider (slug)" +msgstr "Proveedor (babosa)" + +#: circuits/filtersets.py:157 +msgid "Provider account (ID)" +msgstr "Cuenta de proveedor (ID)" + +#: circuits/filtersets.py:162 +msgid "Provider network (ID)" +msgstr "Red de proveedores (ID)" + +#: circuits/filtersets.py:166 +msgid "Circuit type (ID)" +msgstr "Tipo de circuito (ID)" + +#: circuits/filtersets.py:172 +msgid "Circuit type (slug)" +msgstr "Tipo de circuito (slug)" + +#: circuits/filtersets.py:207 circuits/filtersets.py:244 +#: dcim/filtersets.py:205 dcim/filtersets.py:280 dcim/filtersets.py:352 +#: dcim/filtersets.py:905 dcim/filtersets.py:1202 dcim/filtersets.py:1697 +#: dcim/filtersets.py:1869 dcim/filtersets.py:1927 ipam/filtersets.py:209 +#: ipam/filtersets.py:329 ipam/filtersets.py:920 +#: virtualization/filtersets.py:69 virtualization/filtersets.py:196 +#: vpn/filtersets.py:340 +msgid "Site (ID)" +msgstr "Sitio (ID)" + +#: circuits/filtersets.py:236 core/filtersets.py:73 core/filtersets.py:132 +#: dcim/filtersets.py:633 dcim/filtersets.py:1171 dcim/filtersets.py:1973 +#: extras/filtersets.py:40 extras/filtersets.py:69 extras/filtersets.py:101 +#: extras/filtersets.py:140 extras/filtersets.py:168 extras/filtersets.py:195 +#: extras/filtersets.py:226 extras/filtersets.py:295 extras/filtersets.py:343 +#: extras/filtersets.py:403 extras/filtersets.py:562 extras/filtersets.py:604 +#: extras/filtersets.py:645 ipam/forms/model_forms.py:430 +#: netbox/filtersets.py:275 netbox/forms/__init__.py:23 +#: netbox/forms/base.py:152 templates/htmx/object_selector.html:28 +#: templates/inc/filter_list.html:53 templates/ipam/ipaddress_assign.html:32 +#: templates/search.html:7 templates/search.html:26 tenancy/filtersets.py:86 +#: users/filtersets.py:21 users/filtersets.py:37 users/filtersets.py:69 +#: users/filtersets.py:117 utilities/forms/forms.py:99 +msgid "Search" +msgstr "Búsqueda" + +#: circuits/filtersets.py:240 circuits/forms/bulk_edit.py:167 +#: circuits/forms/model_forms.py:110 circuits/forms/model_forms.py:132 +#: dcim/forms/connections.py:66 templates/circuits/circuit.html:15 +#: templates/dcim/inc/cable_termination.html:55 +#: templates/dcim/trace/circuit.html:4 +msgid "Circuit" +msgstr "Circuito" + +#: circuits/filtersets.py:254 +msgid "ProviderNetwork (ID)" +msgstr "Red de proveedores (ID)" + +#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:56 +#: circuits/forms/model_forms.py:26 circuits/tables/providers.py:33 +#: dcim/forms/bulk_edit.py:126 dcim/forms/filtersets.py:187 +#: dcim/forms/model_forms.py:126 dcim/tables/sites.py:94 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 +#: netbox/navigation/menu.py:160 netbox/navigation/menu.py:163 +#: templates/circuits/provider.html:24 +msgid "ASNs" +msgstr "ASNs" + +#: circuits/forms/bulk_edit.py:29 circuits/forms/bulk_edit.py:51 +#: circuits/forms/bulk_edit.py:78 circuits/forms/bulk_edit.py:99 +#: circuits/forms/bulk_edit.py:159 core/forms/bulk_edit.py:27 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:71 +#: dcim/forms/bulk_edit.py:90 dcim/forms/bulk_edit.py:149 +#: dcim/forms/bulk_edit.py:190 dcim/forms/bulk_edit.py:208 +#: dcim/forms/bulk_edit.py:336 dcim/forms/bulk_edit.py:371 +#: dcim/forms/bulk_edit.py:386 dcim/forms/bulk_edit.py:445 +#: dcim/forms/bulk_edit.py:484 dcim/forms/bulk_edit.py:514 +#: dcim/forms/bulk_edit.py:538 dcim/forms/bulk_edit.py:608 +#: dcim/forms/bulk_edit.py:657 dcim/forms/bulk_edit.py:709 +#: dcim/forms/bulk_edit.py:732 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_edit.py:850 dcim/forms/bulk_edit.py:903 +#: dcim/forms/bulk_edit.py:938 dcim/forms/bulk_edit.py:978 +#: dcim/forms/bulk_edit.py:1022 dcim/forms/bulk_edit.py:1067 +#: dcim/forms/bulk_edit.py:1094 dcim/forms/bulk_edit.py:1112 +#: dcim/forms/bulk_edit.py:1130 dcim/forms/bulk_edit.py:1148 +#: dcim/forms/bulk_edit.py:1566 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:123 extras/forms/bulk_edit.py:152 +#: extras/forms/bulk_edit.py:182 extras/forms/bulk_edit.py:263 +#: extras/forms/bulk_edit.py:287 extras/forms/bulk_edit.py:301 +#: extras/tables/tables.py:56 ipam/forms/bulk_edit.py:50 +#: ipam/forms/bulk_edit.py:70 ipam/forms/bulk_edit.py:90 +#: ipam/forms/bulk_edit.py:114 ipam/forms/bulk_edit.py:143 +#: ipam/forms/bulk_edit.py:172 ipam/forms/bulk_edit.py:191 +#: ipam/forms/bulk_edit.py:260 ipam/forms/bulk_edit.py:304 +#: ipam/forms/bulk_edit.py:352 ipam/forms/bulk_edit.py:395 +#: ipam/forms/bulk_edit.py:423 ipam/forms/bulk_edit.py:551 +#: ipam/forms/bulk_edit.py:582 templates/account/token.html:36 +#: templates/circuits/circuit.html:60 templates/circuits/circuittype.html:29 +#: templates/circuits/inc/circuit_termination.html:115 +#: templates/circuits/provider.html:34 +#: templates/circuits/providernetwork.html:35 +#: templates/core/datasource.html:55 templates/dcim/cable.html:37 +#: templates/dcim/consoleport.html:47 templates/dcim/consoleserverport.html:47 +#: templates/dcim/device.html:96 templates/dcim/devicebay.html:35 +#: templates/dcim/devicerole.html:33 templates/dcim/devicetype.html:36 +#: templates/dcim/frontport.html:61 templates/dcim/interface.html:70 +#: templates/dcim/inventoryitem.html:61 +#: templates/dcim/inventoryitemrole.html:23 templates/dcim/location.html:36 +#: templates/dcim/manufacturer.html:43 templates/dcim/module.html:71 +#: templates/dcim/modulebay.html:39 templates/dcim/moduletype.html:27 +#: templates/dcim/platform.html:36 templates/dcim/powerfeed.html:43 +#: templates/dcim/poweroutlet.html:43 templates/dcim/powerpanel.html:31 +#: templates/dcim/powerport.html:43 templates/dcim/rack.html:54 +#: templates/dcim/rackreservation.html:69 templates/dcim/rackrole.html:29 +#: templates/dcim/rearport.html:57 templates/dcim/region.html:34 +#: templates/dcim/site.html:60 templates/dcim/sitegroup.html:34 +#: templates/dcim/virtualchassis.html:32 +#: templates/extras/admin/plugins_list.html:26 +#: templates/extras/configcontext.html:22 +#: templates/extras/configtemplate.html:18 +#: templates/extras/customfield.html:35 +#: templates/extras/dashboard/widget_add.html:14 +#: templates/extras/eventrule.html:24 templates/extras/exporttemplate.html:25 +#: templates/extras/report_list.html:47 templates/extras/savedfilter.html:18 +#: templates/extras/script_list.html:53 templates/extras/tag.html:23 +#: templates/extras/webhook.html:20 templates/generic/bulk_import.html:118 +#: templates/ipam/aggregate.html:44 templates/ipam/asn.html:43 +#: templates/ipam/asnrange.html:39 templates/ipam/fhrpgroup.html:35 +#: templates/ipam/ipaddress.html:58 templates/ipam/iprange.html:70 +#: templates/ipam/prefix.html:82 templates/ipam/rir.html:29 +#: templates/ipam/role.html:29 templates/ipam/routetarget.html:22 +#: templates/ipam/service.html:53 templates/ipam/servicetemplate.html:28 +#: templates/ipam/vlan.html:65 templates/ipam/vlangroup.html:35 +#: templates/ipam/vrf.html:36 templates/tenancy/contact.html:68 +#: templates/tenancy/contactgroup.html:28 +#: templates/tenancy/contactrole.html:23 templates/tenancy/tenant.html:25 +#: templates/tenancy/tenantgroup.html:36 +#: templates/users/objectpermission.html:22 templates/users/token.html:28 +#: templates/virtualization/cluster.html:28 +#: templates/virtualization/clustergroup.html:29 +#: templates/virtualization/clustertype.html:29 +#: templates/virtualization/virtualdisk.html:40 +#: templates/virtualization/virtualmachine.html:34 +#: templates/virtualization/vminterface.html:54 +#: templates/vpn/ikepolicy.html:18 templates/vpn/ikeproposal.html:18 +#: templates/vpn/ipsecpolicy.html:18 templates/vpn/ipsecprofile.html:18 +#: templates/vpn/ipsecprofile.html:43 templates/vpn/ipsecprofile.html:78 +#: templates/vpn/ipsecproposal.html:18 templates/vpn/l2vpn.html:27 +#: templates/vpn/tunnel.html:34 templates/vpn/tunnelgroup.html:33 +#: templates/wireless/wirelesslan.html:27 +#: templates/wireless/wirelesslangroup.html:34 +#: templates/wireless/wirelesslink.html:37 tenancy/forms/bulk_edit.py:31 +#: tenancy/forms/bulk_edit.py:79 tenancy/forms/bulk_edit.py:121 +#: users/forms/bulk_edit.py:62 users/forms/bulk_edit.py:92 +#: virtualization/forms/bulk_edit.py:31 virtualization/forms/bulk_edit.py:45 +#: virtualization/forms/bulk_edit.py:176 virtualization/forms/bulk_edit.py:227 +#: virtualization/forms/bulk_edit.py:336 vpn/forms/bulk_edit.py:27 +#: vpn/forms/bulk_edit.py:63 vpn/forms/bulk_edit.py:120 +#: vpn/forms/bulk_edit.py:154 vpn/forms/bulk_edit.py:191 +#: vpn/forms/bulk_edit.py:216 vpn/forms/bulk_edit.py:248 +#: vpn/forms/bulk_edit.py:277 wireless/forms/bulk_edit.py:28 +#: wireless/forms/bulk_edit.py:81 wireless/forms/bulk_edit.py:128 +msgid "Description" +msgstr "Descripción" + +#: circuits/forms/bulk_edit.py:46 circuits/forms/bulk_edit.py:68 +#: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 +#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 +#: circuits/forms/model_forms.py:32 circuits/forms/model_forms.py:44 +#: circuits/forms/model_forms.py:58 circuits/forms/model_forms.py:92 +#: circuits/tables/circuits.py:55 circuits/tables/providers.py:72 +#: circuits/tables/providers.py:103 templates/circuits/circuit.html:19 +#: templates/circuits/provider.html:20 +#: templates/circuits/provideraccount.html:21 +#: templates/circuits/providernetwork.html:23 +#: templates/dcim/inc/cable_termination.html:51 +msgid "Provider" +msgstr "Proveedor" + +#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:91 +#: templates/circuits/providernetwork.html:31 +msgid "Service ID" +msgstr "ID de servicio" + +#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:107 +#: dcim/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:500 +#: dcim/forms/bulk_edit.py:694 dcim/forms/bulk_edit.py:1063 +#: dcim/forms/bulk_edit.py:1090 dcim/forms/bulk_edit.py:1562 +#: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1353 +#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:717 +#: dcim/tables/devices.py:777 dcim/tables/devices.py:1004 +#: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 +#: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:259 +#: extras/tables/tables.py:323 templates/circuits/circuittype.html:33 +#: templates/dcim/cable.html:41 templates/dcim/devicerole.html:37 +#: templates/dcim/frontport.html:43 templates/dcim/inventoryitemrole.html:27 +#: templates/dcim/rackrole.html:33 templates/dcim/rearport.html:43 +#: templates/extras/tag.html:29 +msgid "Color" +msgstr "Color" + +#: circuits/forms/bulk_edit.py:113 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:17 +#: core/forms/filtersets.py:29 core/tables/data.py:20 core/tables/jobs.py:18 +#: dcim/forms/bulk_edit.py:281 dcim/forms/bulk_edit.py:672 +#: dcim/forms/bulk_edit.py:811 dcim/forms/bulk_edit.py:879 +#: dcim/forms/bulk_edit.py:898 dcim/forms/bulk_edit.py:921 +#: dcim/forms/bulk_edit.py:963 dcim/forms/bulk_edit.py:1007 +#: dcim/forms/bulk_edit.py:1058 dcim/forms/bulk_edit.py:1085 +#: dcim/forms/bulk_import.py:206 dcim/forms/bulk_import.py:645 +#: dcim/forms/bulk_import.py:671 dcim/forms/bulk_import.py:697 +#: dcim/forms/bulk_import.py:717 dcim/forms/bulk_import.py:800 +#: dcim/forms/bulk_import.py:890 dcim/forms/bulk_import.py:932 +#: dcim/forms/bulk_import.py:1145 dcim/forms/bulk_import.py:1304 +#: dcim/forms/filtersets.py:286 dcim/forms/filtersets.py:867 +#: dcim/forms/filtersets.py:967 dcim/forms/filtersets.py:1088 +#: dcim/forms/filtersets.py:1158 dcim/forms/filtersets.py:1180 +#: dcim/forms/filtersets.py:1202 dcim/forms/filtersets.py:1219 +#: dcim/forms/filtersets.py:1253 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1369 dcim/forms/object_import.py:89 +#: dcim/forms/object_import.py:118 dcim/forms/object_import.py:150 +#: dcim/tables/devices.py:211 dcim/tables/devices.py:833 +#: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 +#: extras/tables/tables.py:345 extras/tables/tables.py:443 +#: netbox/tables/tables.py:234 templates/circuits/circuit.html:31 +#: templates/core/datasource.html:39 templates/dcim/cable.html:16 +#: templates/dcim/consoleport.html:39 templates/dcim/consoleserverport.html:39 +#: templates/dcim/frontport.html:39 templates/dcim/interface.html:47 +#: templates/dcim/interface.html:175 templates/dcim/interface.html:323 +#: templates/dcim/powerfeed.html:35 templates/dcim/poweroutlet.html:39 +#: templates/dcim/powerport.html:39 templates/dcim/rack.html:81 +#: templates/dcim/rearport.html:39 templates/extras/eventrule.html:95 +#: templates/virtualization/cluster.html:20 templates/vpn/l2vpn.html:23 +#: templates/wireless/inc/authentication_attrs.html:9 +#: templates/wireless/inc/wirelesslink_interface.html:14 +#: virtualization/forms/bulk_edit.py:59 virtualization/forms/bulk_import.py:41 +#: virtualization/forms/filtersets.py:53 +#: virtualization/forms/model_forms.py:65 virtualization/tables/clusters.py:66 +#: vpn/forms/bulk_edit.py:267 vpn/forms/bulk_import.py:259 +#: vpn/forms/filtersets.py:214 vpn/forms/model_forms.py:83 +#: vpn/forms/model_forms.py:118 vpn/forms/model_forms.py:232 +msgid "Type" +msgstr "Tipo" + +#: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:97 +msgid "Provider account" +msgstr "Cuenta de proveedor" + +#: circuits/forms/bulk_edit.py:131 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:34 +#: core/forms/filtersets.py:75 core/tables/data.py:23 core/tables/jobs.py:26 +#: dcim/forms/bulk_edit.py:104 dcim/forms/bulk_edit.py:179 +#: dcim/forms/bulk_edit.py:260 dcim/forms/bulk_edit.py:593 +#: dcim/forms/bulk_edit.py:646 dcim/forms/bulk_edit.py:678 +#: dcim/forms/bulk_edit.py:805 dcim/forms/bulk_edit.py:1585 +#: dcim/forms/bulk_import.py:87 dcim/forms/bulk_import.py:146 +#: dcim/forms/bulk_import.py:194 dcim/forms/bulk_import.py:442 +#: dcim/forms/bulk_import.py:596 dcim/forms/bulk_import.py:1139 +#: dcim/forms/bulk_import.py:1299 dcim/forms/filtersets.py:170 +#: dcim/forms/filtersets.py:229 dcim/forms/filtersets.py:281 +#: dcim/forms/filtersets.py:726 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:871 dcim/forms/filtersets.py:972 +#: dcim/forms/filtersets.py:1083 dcim/tables/devices.py:173 +#: dcim/tables/devices.py:836 dcim/tables/devices.py:1064 +#: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 +#: dcim/tables/sites.py:82 dcim/tables/sites.py:133 +#: ipam/forms/bulk_edit.py:240 ipam/forms/bulk_edit.py:289 +#: ipam/forms/bulk_edit.py:337 ipam/forms/bulk_edit.py:541 +#: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 +#: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 +#: ipam/forms/filtersets.py:205 ipam/forms/filtersets.py:270 +#: ipam/forms/filtersets.py:341 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:449 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 +#: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 +#: templates/circuits/circuit.html:35 templates/core/datasource.html:47 +#: templates/core/job.html:35 templates/dcim/cable.html:20 +#: templates/dcim/device.html:183 templates/dcim/location.html:48 +#: templates/dcim/module.html:67 templates/dcim/powerfeed.html:39 +#: templates/dcim/rack.html:46 templates/dcim/site.html:43 +#: templates/extras/report_list.html:49 templates/extras/script_list.html:55 +#: templates/ipam/ipaddress.html:40 templates/ipam/iprange.html:57 +#: templates/ipam/prefix.html:74 templates/ipam/vlan.html:51 +#: templates/virtualization/cluster.html:24 +#: templates/virtualization/virtualmachine.html:22 +#: templates/vpn/tunnel.html:26 templates/wireless/wirelesslan.html:23 +#: templates/wireless/wirelesslink.html:20 users/forms/filtersets.py:33 +#: users/forms/model_forms.py:196 virtualization/forms/bulk_edit.py:69 +#: virtualization/forms/bulk_edit.py:117 +#: virtualization/forms/bulk_import.py:54 +#: virtualization/forms/bulk_import.py:80 +#: virtualization/forms/filtersets.py:61 +#: virtualization/forms/filtersets.py:156 virtualization/tables/clusters.py:74 +#: virtualization/tables/virtualmachines.py:50 vpn/forms/bulk_edit.py:38 +#: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:46 +#: vpn/tables/tunnels.py:44 wireless/forms/bulk_edit.py:42 +#: wireless/forms/bulk_edit.py:104 wireless/forms/bulk_import.py:43 +#: wireless/forms/bulk_import.py:84 wireless/forms/filtersets.py:48 +#: wireless/forms/filtersets.py:82 wireless/tables/wirelesslan.py:52 +#: wireless/tables/wirelesslink.py:19 +msgid "Status" +msgstr "Estado" + +#: circuits/forms/bulk_edit.py:137 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:119 dcim/forms/bulk_edit.py:120 +#: dcim/forms/bulk_edit.py:185 dcim/forms/bulk_edit.py:255 +#: dcim/forms/bulk_edit.py:366 dcim/forms/bulk_edit.py:583 +#: dcim/forms/bulk_edit.py:684 dcim/forms/bulk_edit.py:1590 +#: dcim/forms/bulk_import.py:106 dcim/forms/bulk_import.py:151 +#: dcim/forms/bulk_import.py:187 dcim/forms/bulk_import.py:274 +#: dcim/forms/bulk_import.py:416 dcim/forms/bulk_import.py:1151 +#: dcim/forms/bulk_import.py:1356 dcim/forms/filtersets.py:165 +#: dcim/forms/filtersets.py:197 dcim/forms/filtersets.py:248 +#: dcim/forms/filtersets.py:333 dcim/forms/filtersets.py:354 +#: dcim/forms/filtersets.py:653 dcim/forms/filtersets.py:826 +#: dcim/forms/filtersets.py:891 dcim/forms/filtersets.py:921 +#: dcim/forms/filtersets.py:1043 dcim/tables/power.py:88 +#: extras/filtersets.py:517 extras/forms/filtersets.py:331 +#: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:40 +#: ipam/forms/bulk_edit.py:65 ipam/forms/bulk_edit.py:109 +#: ipam/forms/bulk_edit.py:138 ipam/forms/bulk_edit.py:163 +#: ipam/forms/bulk_edit.py:235 ipam/forms/bulk_edit.py:284 +#: ipam/forms/bulk_edit.py:332 ipam/forms/bulk_edit.py:536 +#: ipam/forms/bulk_import.py:37 ipam/forms/bulk_import.py:66 +#: ipam/forms/bulk_import.py:94 ipam/forms/bulk_import.py:114 +#: ipam/forms/bulk_import.py:134 ipam/forms/bulk_import.py:163 +#: ipam/forms/bulk_import.py:249 ipam/forms/bulk_import.py:285 +#: ipam/forms/bulk_import.py:451 ipam/forms/filtersets.py:47 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:99 +#: ipam/forms/filtersets.py:119 ipam/forms/filtersets.py:142 +#: ipam/forms/filtersets.py:169 ipam/forms/filtersets.py:256 +#: ipam/forms/filtersets.py:296 ipam/forms/filtersets.py:450 +#: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 +#: templates/circuits/circuit.html:39 templates/dcim/cable.html:24 +#: templates/dcim/device.html:81 templates/dcim/location.html:52 +#: templates/dcim/powerfeed.html:47 templates/dcim/rack.html:37 +#: templates/dcim/rackreservation.html:56 templates/dcim/site.html:47 +#: templates/dcim/virtualdevicecontext.html:55 +#: templates/ipam/aggregate.html:31 templates/ipam/asn.html:34 +#: templates/ipam/asnrange.html:30 templates/ipam/ipaddress.html:31 +#: templates/ipam/iprange.html:61 templates/ipam/prefix.html:30 +#: templates/ipam/routetarget.html:18 templates/ipam/vlan.html:42 +#: templates/ipam/vrf.html:23 templates/tenancy/tenant.html:17 +#: templates/virtualization/cluster.html:36 +#: templates/virtualization/virtualmachine.html:38 templates/vpn/l2vpn.html:31 +#: templates/vpn/tunnel.html:50 templates/wireless/wirelesslan.html:35 +#: templates/wireless/wirelesslink.html:28 tenancy/forms/forms.py:25 +#: tenancy/forms/forms.py:48 tenancy/forms/model_forms.py:53 +#: tenancy/tables/columns.py:64 virtualization/forms/bulk_edit.py:75 +#: virtualization/forms/bulk_edit.py:154 +#: virtualization/forms/bulk_import.py:66 +#: virtualization/forms/bulk_import.py:115 +#: virtualization/forms/filtersets.py:46 +#: virtualization/forms/filtersets.py:101 vpn/forms/bulk_edit.py:58 +#: vpn/forms/bulk_edit.py:272 vpn/forms/bulk_import.py:59 +#: vpn/forms/bulk_import.py:253 vpn/forms/filtersets.py:211 +#: wireless/forms/bulk_edit.py:62 wireless/forms/bulk_edit.py:109 +#: wireless/forms/bulk_import.py:55 wireless/forms/bulk_import.py:97 +#: wireless/forms/filtersets.py:34 wireless/forms/filtersets.py:74 +msgid "Tenant" +msgstr "Inquilino" + +#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:174 +msgid "Install date" +msgstr "Fecha de instalación" + +#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:179 +msgid "Termination date" +msgstr "Fecha de terminación" + +#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:186 +msgid "Commit rate (Kbps)" +msgstr "Velocidad de confirmación (Kbps)" + +#: circuits/forms/bulk_edit.py:168 circuits/forms/model_forms.py:111 +msgid "Service Parameters" +msgstr "Parámetros de servicio" + +#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:112 +#: dcim/forms/model_forms.py:141 dcim/forms/model_forms.py:183 +#: dcim/forms/model_forms.py:260 dcim/forms/model_forms.py:672 +#: dcim/forms/model_forms.py:1478 ipam/forms/model_forms.py:61 +#: ipam/forms/model_forms.py:114 ipam/forms/model_forms.py:135 +#: ipam/forms/model_forms.py:159 ipam/forms/model_forms.py:231 +#: ipam/forms/model_forms.py:257 netbox/navigation/menu.py:38 +#: templates/dcim/cable_edit.html:68 templates/dcim/device_edit.html:85 +#: templates/dcim/rack_edit.html:30 templates/ipam/ipaddress_bulk_add.html:27 +#: templates/ipam/ipaddress_edit.html:27 templates/ipam/vlan_edit.html:22 +#: virtualization/forms/model_forms.py:83 +#: virtualization/forms/model_forms.py:225 vpn/forms/bulk_edit.py:77 +#: vpn/forms/filtersets.py:43 vpn/forms/model_forms.py:61 +#: vpn/forms/model_forms.py:146 vpn/forms/model_forms.py:404 +#: wireless/forms/model_forms.py:55 wireless/forms/model_forms.py:160 +msgid "Tenancy" +msgstr "Arrendamiento" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 +msgid "Assigned provider" +msgstr "Proveedor asignado" + +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:170 +#: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:1092 +#: dcim/forms/bulk_import.py:1171 extras/forms/bulk_import.py:229 +msgid "RGB color in hexadecimal. Example:" +msgstr "Color RGB en hexadecimal. Ejemplo:" + +#: circuits/forms/bulk_import.py:85 +msgid "Assigned provider account" +msgstr "Cuenta de proveedor asignada" + +#: circuits/forms/bulk_import.py:92 +msgid "Type of circuit" +msgstr "Tipo de circuito" + +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 +#: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:196 +#: dcim/forms/bulk_import.py:444 dcim/forms/bulk_import.py:598 +#: dcim/forms/bulk_import.py:1301 ipam/forms/bulk_import.py:193 +#: ipam/forms/bulk_import.py:258 ipam/forms/bulk_import.py:294 +#: ipam/forms/bulk_import.py:460 virtualization/forms/bulk_import.py:56 +#: virtualization/forms/bulk_import.py:82 vpn/forms/bulk_import.py:39 +msgid "Operational status" +msgstr "Estado operativo" + +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 +#: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:278 +#: dcim/forms/bulk_import.py:420 dcim/forms/bulk_import.py:1155 +#: dcim/forms/bulk_import.py:1296 ipam/forms/bulk_import.py:41 +#: ipam/forms/bulk_import.py:70 ipam/forms/bulk_import.py:98 +#: ipam/forms/bulk_import.py:118 ipam/forms/bulk_import.py:138 +#: ipam/forms/bulk_import.py:167 ipam/forms/bulk_import.py:253 +#: ipam/forms/bulk_import.py:289 ipam/forms/bulk_import.py:455 +#: virtualization/forms/bulk_import.py:70 +#: virtualization/forms/bulk_import.py:119 vpn/forms/bulk_import.py:63 +#: wireless/forms/bulk_import.py:59 wireless/forms/bulk_import.py:101 +msgid "Assigned tenant" +msgstr "Inquilino asignado" + +#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:147 +#: circuits/forms/model_forms.py:143 +msgid "Provider network" +msgstr "Red de proveedores" + +#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:118 +#: dcim/forms/bulk_edit.py:247 dcim/forms/bulk_edit.py:345 +#: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:622 +#: dcim/forms/bulk_edit.py:772 dcim/forms/bulk_import.py:181 +#: dcim/forms/bulk_import.py:255 dcim/forms/bulk_import.py:483 +#: dcim/forms/bulk_import.py:1245 dcim/forms/bulk_import.py:1279 +#: dcim/forms/filtersets.py:92 dcim/forms/filtersets.py:245 +#: dcim/forms/filtersets.py:278 dcim/forms/filtersets.py:330 +#: dcim/forms/filtersets.py:381 dcim/forms/filtersets.py:650 +#: dcim/forms/filtersets.py:689 dcim/forms/filtersets.py:890 +#: dcim/forms/filtersets.py:919 dcim/forms/filtersets.py:939 +#: dcim/forms/filtersets.py:1003 dcim/forms/filtersets.py:1033 +#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1153 +#: dcim/forms/filtersets.py:1175 dcim/forms/filtersets.py:1197 +#: dcim/forms/filtersets.py:1214 dcim/forms/filtersets.py:1234 +#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 +#: dcim/forms/filtersets.py:1385 dcim/forms/filtersets.py:1400 +#: dcim/forms/filtersets.py:1411 dcim/forms/model_forms.py:182 +#: dcim/forms/model_forms.py:216 dcim/forms/model_forms.py:402 +#: dcim/forms/model_forms.py:635 dcim/tables/devices.py:190 +#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 +#: extras/filtersets.py:441 extras/forms/filtersets.py:328 +#: ipam/forms/bulk_edit.py:456 ipam/forms/filtersets.py:168 +#: ipam/forms/filtersets.py:400 ipam/forms/filtersets.py:422 +#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:560 +#: templates/dcim/device.html:26 templates/dcim/device_edit.html:30 +#: templates/dcim/inc/cable_termination.html:12 +#: templates/dcim/location.html:27 templates/dcim/powerpanel.html:27 +#: templates/dcim/rack.html:29 templates/dcim/rackreservation.html:35 +#: virtualization/forms/filtersets.py:45 virtualization/forms/filtersets.py:99 +#: wireless/forms/model_forms.py:88 wireless/forms/model_forms.py:128 +msgid "Location" +msgstr "Ubicación" + +#: circuits/forms/filtersets.py:27 ipam/forms/model_forms.py:158 +#: ipam/models/asns.py:108 ipam/models/asns.py:125 ipam/tables/asn.py:41 +#: templates/ipam/asn.html:20 +msgid "ASN" +msgstr "ASN" + +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:120 +#: dcim/forms/filtersets.py:136 dcim/forms/filtersets.py:150 +#: dcim/forms/filtersets.py:166 dcim/forms/filtersets.py:198 +#: dcim/forms/filtersets.py:249 dcim/forms/filtersets.py:334 +#: dcim/forms/filtersets.py:408 dcim/forms/filtersets.py:654 +#: dcim/forms/filtersets.py:1004 netbox/navigation/menu.py:45 +#: netbox/navigation/menu.py:47 tenancy/tables/columns.py:70 +#: tenancy/tables/contacts.py:25 tenancy/views.py:18 +#: virtualization/forms/filtersets.py:36 virtualization/forms/filtersets.py:47 +#: virtualization/forms/filtersets.py:102 +msgid "Contacts" +msgstr "Contactos" + +#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:157 +#: dcim/forms/bulk_edit.py:110 dcim/forms/bulk_edit.py:222 +#: dcim/forms/bulk_edit.py:747 dcim/forms/bulk_import.py:92 +#: dcim/forms/filtersets.py:70 dcim/forms/filtersets.py:177 +#: dcim/forms/filtersets.py:203 dcim/forms/filtersets.py:256 +#: dcim/forms/filtersets.py:359 dcim/forms/filtersets.py:666 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1010 dcim/forms/filtersets.py:1049 +#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 +#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:80 +#: dcim/forms/model_forms.py:115 dcim/forms/object_create.py:374 +#: dcim/tables/devices.py:176 dcim/tables/sites.py:85 extras/filtersets.py:408 +#: ipam/forms/bulk_edit.py:205 ipam/forms/bulk_edit.py:437 +#: ipam/forms/bulk_edit.py:509 ipam/forms/filtersets.py:212 +#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:456 +#: ipam/forms/model_forms.py:532 templates/dcim/device.html:18 +#: templates/dcim/rack.html:19 templates/dcim/rackreservation.html:25 +#: templates/dcim/region.html:26 templates/dcim/site.html:31 +#: templates/ipam/prefix.html:50 templates/ipam/vlan.html:19 +#: virtualization/forms/bulk_edit.py:80 virtualization/forms/filtersets.py:58 +#: virtualization/forms/filtersets.py:129 +#: virtualization/forms/model_forms.py:95 vpn/forms/filtersets.py:253 +msgid "Region" +msgstr "Región" + +#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:162 +#: dcim/forms/bulk_edit.py:230 dcim/forms/bulk_edit.py:755 +#: dcim/forms/filtersets.py:75 dcim/forms/filtersets.py:182 +#: dcim/forms/filtersets.py:208 dcim/forms/filtersets.py:269 +#: dcim/forms/filtersets.py:364 dcim/forms/filtersets.py:671 +#: dcim/forms/filtersets.py:901 dcim/forms/filtersets.py:1015 +#: dcim/forms/filtersets.py:1054 dcim/forms/object_create.py:382 +#: extras/filtersets.py:425 ipam/forms/bulk_edit.py:210 +#: ipam/forms/bulk_edit.py:444 ipam/forms/bulk_edit.py:514 +#: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:412 +#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:545 +#: virtualization/forms/bulk_edit.py:85 virtualization/forms/filtersets.py:68 +#: virtualization/forms/filtersets.py:134 +#: virtualization/forms/model_forms.py:101 +msgid "Site group" +msgstr "Grupo de sitios" + +#: circuits/forms/filtersets.py:51 +msgid "ASN (legacy)" +msgstr "ASN (legado)" + +#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 +#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 +#: core/forms/filtersets.py:63 dcim/forms/bulk_edit.py:718 +#: dcim/forms/filtersets.py:164 dcim/forms/filtersets.py:196 +#: dcim/forms/filtersets.py:825 dcim/forms/filtersets.py:920 +#: dcim/forms/filtersets.py:1044 dcim/forms/filtersets.py:1152 +#: dcim/forms/filtersets.py:1174 dcim/forms/filtersets.py:1196 +#: dcim/forms/filtersets.py:1213 dcim/forms/filtersets.py:1230 +#: dcim/forms/filtersets.py:1341 dcim/forms/filtersets.py:1363 +#: dcim/forms/filtersets.py:1384 dcim/forms/filtersets.py:1399 +#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:40 +#: extras/forms/filtersets.py:111 extras/forms/filtersets.py:142 +#: extras/forms/filtersets.py:182 extras/forms/filtersets.py:198 +#: extras/forms/filtersets.py:229 extras/forms/filtersets.py:253 +#: extras/forms/filtersets.py:450 extras/forms/filtersets.py:491 +#: ipam/forms/filtersets.py:98 ipam/forms/filtersets.py:255 +#: ipam/forms/filtersets.py:294 ipam/forms/filtersets.py:368 +#: ipam/forms/filtersets.py:449 ipam/forms/filtersets.py:508 +#: ipam/forms/filtersets.py:526 netbox/tables/tables.py:250 +#: virtualization/forms/filtersets.py:44 +#: virtualization/forms/filtersets.py:100 +#: virtualization/forms/filtersets.py:190 +#: virtualization/forms/filtersets.py:235 vpn/forms/filtersets.py:210 +#: wireless/forms/filtersets.py:33 wireless/forms/filtersets.py:73 +msgid "Attributes" +msgstr "Atributos" + +#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:60 +#: circuits/tables/providers.py:66 templates/circuits/circuit.html:23 +#: templates/circuits/provideraccount.html:25 +msgid "Account" +msgstr "Cuenta" + +#: circuits/forms/model_forms.py:64 +#: templates/circuits/circuittermination_edit.html:23 +#: templates/circuits/inc/circuit_termination.html:89 +#: templates/circuits/providernetwork.html:18 +msgid "Provider Network" +msgstr "Red de proveedores" + +#: circuits/forms/model_forms.py:78 templates/circuits/circuittype.html:20 +msgid "Circuit Type" +msgstr "Tipo de circuito" + +#: circuits/models/circuits.py:25 dcim/models/cables.py:67 +#: dcim/models/device_component_templates.py:491 +#: dcim/models/device_component_templates.py:591 +#: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 +#: dcim/models/device_components.py:1166 dcim/models/devices.py:467 +#: dcim/models/racks.py:43 extras/models/tags.py:28 +msgid "color" +msgstr "color" + +#: circuits/models/circuits.py:34 +msgid "circuit type" +msgstr "tipo de circuito" + +#: circuits/models/circuits.py:35 +msgid "circuit types" +msgstr "tipos de circuitos" + +#: circuits/models/circuits.py:46 +msgid "circuit ID" +msgstr "ID de circuito" + +#: circuits/models/circuits.py:47 +msgid "Unique circuit ID" +msgstr "ID de circuito único" + +#: circuits/models/circuits.py:67 core/models/data.py:54 +#: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:641 +#: dcim/models/devices.py:1165 dcim/models/devices.py:1374 +#: dcim/models/power.py:95 dcim/models/racks.py:97 dcim/models/sites.py:154 +#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 +#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: virtualization/models/clusters.py:74 +#: virtualization/models/virtualmachines.py:82 vpn/models/tunnels.py:40 +#: wireless/models.py:94 wireless/models.py:158 +msgid "status" +msgstr "estado" + +#: circuits/models/circuits.py:82 +msgid "installed" +msgstr "instalada" + +#: circuits/models/circuits.py:87 +msgid "terminates" +msgstr "termina" + +#: circuits/models/circuits.py:92 +msgid "commit rate (Kbps)" +msgstr "velocidad de confirmación (Kbps)" + +#: circuits/models/circuits.py:93 +msgid "Committed rate" +msgstr "Tarifa comprometida" + +#: circuits/models/circuits.py:135 +msgid "circuit" +msgstr "circuito" + +#: circuits/models/circuits.py:136 +msgid "circuits" +msgstr "circuitos" + +#: circuits/models/circuits.py:169 +msgid "termination" +msgstr "terminación" + +#: circuits/models/circuits.py:186 +msgid "port speed (Kbps)" +msgstr "velocidad de puerto (Kbps)" + +#: circuits/models/circuits.py:189 +msgid "Physical circuit speed" +msgstr "Velocidad del circuito físico" + +#: circuits/models/circuits.py:194 +msgid "upstream speed (Kbps)" +msgstr "velocidad de subida (Kbps)" + +#: circuits/models/circuits.py:195 +msgid "Upstream speed, if different from port speed" +msgstr "Velocidad ascendente, si es diferente de la velocidad del puerto" + +#: circuits/models/circuits.py:200 +msgid "cross-connect ID" +msgstr "ID de conexión cruzada" + +#: circuits/models/circuits.py:201 +msgid "ID of the local cross-connect" +msgstr "ID de la conexión cruzada local" + +#: circuits/models/circuits.py:206 +msgid "patch panel/port(s)" +msgstr "panel de parche/puerto(s)" + +#: circuits/models/circuits.py:207 +msgid "Patch panel ID and port number(s)" +msgstr "ID del panel de conexiones y números de puerto" + +#: circuits/models/circuits.py:210 +#: dcim/models/device_component_templates.py:61 +#: dcim/models/device_components.py:69 dcim/models/racks.py:537 +#: extras/models/configs.py:45 extras/models/configs.py:219 +#: extras/models/customfields.py:122 extras/models/models.py:58 +#: extras/models/models.py:188 extras/models/models.py:426 +#: extras/models/models.py:541 extras/models/staging.py:31 +#: extras/models/tags.py:32 netbox/models/__init__.py:109 +#: netbox/models/__init__.py:144 netbox/models/__init__.py:190 +#: users/models.py:273 users/models.py:348 +#: virtualization/models/virtualmachines.py:282 +msgid "description" +msgstr "descripción" + +#: circuits/models/circuits.py:223 +msgid "circuit termination" +msgstr "terminación de circuito" + +#: circuits/models/circuits.py:224 +msgid "circuit terminations" +msgstr "terminaciones de circuitos" + +#: circuits/models/providers.py:22 circuits/models/providers.py:66 +#: circuits/models/providers.py:104 core/models/data.py:41 +#: core/models/jobs.py:46 dcim/models/device_component_templates.py:43 +#: dcim/models/device_components.py:54 dcim/models/devices.py:581 +#: dcim/models/devices.py:1305 dcim/models/devices.py:1370 +#: dcim/models/power.py:39 dcim/models/power.py:91 dcim/models/racks.py:62 +#: dcim/models/sites.py:138 extras/models/configs.py:36 +#: extras/models/configs.py:215 extras/models/customfields.py:89 +#: extras/models/models.py:53 extras/models/models.py:183 +#: extras/models/models.py:326 extras/models/models.py:422 +#: extras/models/models.py:531 extras/models/models.py:626 +#: extras/models/staging.py:26 ipam/models/asns.py:18 ipam/models/fhrp.py:25 +#: ipam/models/services.py:52 ipam/models/services.py:88 +#: ipam/models/vlans.py:26 ipam/models/vlans.py:164 ipam/models/vrfs.py:22 +#: ipam/models/vrfs.py:79 netbox/models/__init__.py:136 +#: netbox/models/__init__.py:180 tenancy/models/contacts.py:64 +#: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 +#: users/models.py:344 virtualization/models/clusters.py:57 +#: virtualization/models/virtualmachines.py:70 +#: virtualization/models/virtualmachines.py:272 vpn/models/crypto.py:24 +#: vpn/models/crypto.py:71 vpn/models/crypto.py:119 vpn/models/crypto.py:171 +#: vpn/models/crypto.py:209 vpn/models/l2vpn.py:22 vpn/models/tunnels.py:35 +#: wireless/models.py:50 +msgid "name" +msgstr "nombre" + +#: circuits/models/providers.py:25 +msgid "Full name of the provider" +msgstr "Nombre completo del proveedor" + +#: circuits/models/providers.py:28 dcim/models/devices.py:86 +#: dcim/models/sites.py:149 extras/models/models.py:536 ipam/models/asns.py:23 +#: ipam/models/vlans.py:30 netbox/models/__init__.py:140 +#: netbox/models/__init__.py:185 tenancy/models/tenants.py:25 +#: tenancy/models/tenants.py:49 vpn/models/l2vpn.py:27 wireless/models.py:55 +msgid "slug" +msgstr "pegar" + +#: circuits/models/providers.py:42 +msgid "provider" +msgstr "proveedora" + +#: circuits/models/providers.py:43 +msgid "providers" +msgstr "proveedores" + +#: circuits/models/providers.py:63 +msgid "account ID" +msgstr "ID de cuenta" + +#: circuits/models/providers.py:86 +msgid "provider account" +msgstr "cuenta de proveedor" + +#: circuits/models/providers.py:87 +msgid "provider accounts" +msgstr "cuentas de proveedores" + +#: circuits/models/providers.py:115 +msgid "service ID" +msgstr "ID de servicio" + +#: circuits/models/providers.py:126 +msgid "provider network" +msgstr "red de proveedores" + +#: circuits/models/providers.py:127 +msgid "provider networks" +msgstr "redes de proveedores" + +#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/providers.py:69 circuits/tables/providers.py:99 +#: core/tables/data.py:16 core/tables/jobs.py:14 dcim/forms/filtersets.py:60 +#: dcim/forms/object_create.py:42 dcim/tables/devices.py:88 +#: dcim/tables/devices.py:125 dcim/tables/devices.py:167 +#: dcim/tables/devices.py:318 dcim/tables/devices.py:395 +#: dcim/tables/devices.py:439 dcim/tables/devices.py:491 +#: dcim/tables/devices.py:543 dcim/tables/devices.py:663 +#: dcim/tables/devices.py:744 dcim/tables/devices.py:794 +#: dcim/tables/devices.py:860 dcim/tables/devices.py:975 +#: dcim/tables/devices.py:995 dcim/tables/devices.py:1024 +#: dcim/tables/devices.py:1054 dcim/tables/devicetypes.py:32 +#: dcim/tables/power.py:22 dcim/tables/power.py:62 dcim/tables/racks.py:23 +#: dcim/tables/racks.py:53 dcim/tables/sites.py:24 dcim/tables/sites.py:51 +#: dcim/tables/sites.py:78 dcim/tables/sites.py:125 +#: extras/forms/filtersets.py:190 extras/tables/tables.py:40 +#: extras/tables/tables.py:83 extras/tables/tables.py:115 +#: extras/tables/tables.py:139 extras/tables/tables.py:204 +#: extras/tables/tables.py:251 extras/tables/tables.py:274 +#: extras/tables/tables.py:319 extras/tables/tables.py:371 +#: extras/tables/tables.py:394 ipam/forms/bulk_edit.py:390 +#: ipam/forms/filtersets.py:372 ipam/tables/asn.py:16 ipam/tables/ip.py:85 +#: ipam/tables/ip.py:159 ipam/tables/services.py:15 ipam/tables/services.py:40 +#: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 +#: ipam/tables/vrfs.py:67 templates/circuits/circuittype.html:25 +#: templates/circuits/provideraccount.html:29 +#: templates/circuits/providernetwork.html:27 +#: templates/core/datasource.html:35 templates/core/job.html:31 +#: templates/dcim/consoleport.html:31 templates/dcim/consoleserverport.html:31 +#: templates/dcim/devicebay.html:27 templates/dcim/devicerole.html:29 +#: templates/dcim/frontport.html:31 +#: templates/dcim/inc/interface_vlans_table.html:5 +#: templates/dcim/inc/panels/inventory_items.html:10 +#: templates/dcim/interface.html:39 templates/dcim/interface.html:171 +#: templates/dcim/inventoryitem.html:29 +#: templates/dcim/inventoryitemrole.html:19 templates/dcim/location.html:32 +#: templates/dcim/manufacturer.html:39 templates/dcim/modulebay.html:27 +#: templates/dcim/platform.html:32 templates/dcim/poweroutlet.html:31 +#: templates/dcim/powerport.html:31 templates/dcim/rackrole.html:25 +#: templates/dcim/rearport.html:31 templates/dcim/region.html:30 +#: templates/dcim/sitegroup.html:30 +#: templates/dcim/virtualdevicecontext.html:21 +#: templates/extras/admin/plugins_list.html:22 +#: templates/extras/configcontext.html:14 +#: templates/extras/configtemplate.html:14 +#: templates/extras/customfield.html:16 templates/extras/customlink.html:14 +#: templates/extras/eventrule.html:16 templates/extras/exporttemplate.html:21 +#: templates/extras/report_list.html:46 templates/extras/savedfilter.html:14 +#: templates/extras/script_list.html:52 templates/extras/tag.html:17 +#: templates/extras/webhook.html:16 templates/ipam/asnrange.html:16 +#: templates/ipam/fhrpgroup.html:31 templates/ipam/rir.html:25 +#: templates/ipam/role.html:25 templates/ipam/routetarget.html:14 +#: templates/ipam/service.html:27 templates/ipam/servicetemplate.html:16 +#: templates/ipam/vlan.html:38 templates/ipam/vlangroup.html:31 +#: templates/tenancy/contact.html:26 templates/tenancy/contactgroup.html:24 +#: templates/tenancy/contactrole.html:19 templates/tenancy/tenantgroup.html:32 +#: templates/users/group.html:18 templates/users/objectpermission.html:18 +#: templates/virtualization/cluster.html:16 +#: templates/virtualization/clustergroup.html:25 +#: templates/virtualization/clustertype.html:25 +#: templates/virtualization/virtualdisk.html:26 +#: templates/virtualization/virtualmachine.html:18 +#: templates/virtualization/vminterface.html:28 +#: templates/vpn/ikepolicy.html:14 templates/vpn/ikeproposal.html:14 +#: templates/vpn/ipsecpolicy.html:14 templates/vpn/ipsecprofile.html:14 +#: templates/vpn/ipsecprofile.html:39 templates/vpn/ipsecprofile.html:74 +#: templates/vpn/ipsecproposal.html:14 templates/vpn/l2vpn.html:15 +#: templates/vpn/tunnel.html:22 templates/vpn/tunnelgroup.html:29 +#: templates/wireless/wirelesslangroup.html:30 tenancy/tables/contacts.py:19 +#: tenancy/tables/contacts.py:41 tenancy/tables/contacts.py:56 +#: tenancy/tables/tenants.py:16 tenancy/tables/tenants.py:38 +#: users/tables.py:62 users/tables.py:79 +#: virtualization/forms/bulk_create.py:20 +#: virtualization/forms/object_create.py:13 +#: virtualization/forms/object_create.py:23 +#: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 +#: virtualization/tables/clusters.py:62 +#: virtualization/tables/virtualmachines.py:45 +#: virtualization/tables/virtualmachines.py:119 +#: virtualization/tables/virtualmachines.py:172 vpn/tables/crypto.py:18 +#: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 +#: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 +#: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 +#: wireless/tables/wirelesslan.py:79 +msgid "Name" +msgstr "Nombre" + +#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/providers.py:79 netbox/navigation/menu.py:254 +#: netbox/navigation/menu.py:258 netbox/navigation/menu.py:260 +#: templates/circuits/provider.html:61 +#: templates/circuits/provideraccount.html:46 +#: templates/circuits/providernetwork.html:54 +msgid "Circuits" +msgstr "Circuitos" + +#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:27 +msgid "Circuit ID" +msgstr "ID de circuito" + +#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:157 +msgid "Side A" +msgstr "Lado A" + +#: circuits/tables/circuits.py:69 +msgid "Side Z" +msgstr "Lado Z" + +#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:56 +msgid "Commit Rate" +msgstr "Tasa de compromiso" + +#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/providers.py:82 circuits/tables/providers.py:107 +#: dcim/tables/devices.py:1037 dcim/tables/devicetypes.py:92 +#: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 +#: dcim/tables/power.py:96 dcim/tables/racks.py:76 dcim/tables/racks.py:156 +#: dcim/tables/sites.py:103 extras/forms/bulk_edit.py:320 +#: extras/tables/tables.py:485 ipam/tables/asn.py:69 ipam/tables/fhrp.py:34 +#: ipam/tables/ip.py:135 ipam/tables/ip.py:272 ipam/tables/ip.py:325 +#: ipam/tables/ip.py:392 ipam/tables/services.py:24 ipam/tables/services.py:54 +#: ipam/tables/vlans.py:141 ipam/tables/vrfs.py:46 ipam/tables/vrfs.py:71 +#: templates/dcim/cable_edit.html:85 templates/generic/bulk_edit.html:102 +#: templates/inc/panels/comments.html:6 tenancy/tables/contacts.py:68 +#: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 +#: virtualization/tables/clusters.py:91 +#: virtualization/tables/virtualmachines.py:68 vpn/tables/crypto.py:37 +#: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 +#: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:57 +#: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 +msgid "Comments" +msgstr "Comentarios" + +#: circuits/tables/providers.py:23 +msgid "Accounts" +msgstr "Cuentas" + +#: circuits/tables/providers.py:29 +msgid "Account Count" +msgstr "Recuento de cuentas" + +#: circuits/tables/providers.py:39 dcim/tables/sites.py:100 +msgid "ASN Count" +msgstr "Recuento de ASN" + +#: core/choices.py:18 +msgid "New" +msgstr "Nuevo" + +#: core/choices.py:19 +msgid "Queued" +msgstr "En cola" + +#: core/choices.py:20 +msgid "Syncing" +msgstr "Sincronización" + +#: core/choices.py:21 core/choices.py:57 core/tables/jobs.py:41 +#: extras/choices.py:210 templates/core/job.html:75 +msgid "Completed" +msgstr "Completado" + +#: core/choices.py:22 core/choices.py:59 dcim/choices.py:176 +#: dcim/choices.py:222 dcim/choices.py:1496 extras/choices.py:212 +#: virtualization/choices.py:47 +msgid "Failed" +msgstr "Falló" + +#: core/choices.py:35 netbox/navigation/menu.py:330 +#: templates/extras/script/base.html:14 templates/extras/script_list.html:6 +#: templates/extras/script_list.html:20 templates/extras/script_result.html:18 +msgid "Scripts" +msgstr "Guiones" + +#: core/choices.py:36 netbox/navigation/menu.py:324 +#: templates/extras/report/base.html:13 templates/extras/report_list.html:7 +#: templates/extras/report_list.html:12 +msgid "Reports" +msgstr "Informes" + +#: core/choices.py:54 extras/choices.py:207 +msgid "Pending" +msgstr "Pendiente" + +#: core/choices.py:55 core/tables/jobs.py:32 extras/choices.py:208 +#: templates/core/job.html:62 +msgid "Scheduled" +msgstr "Programado" + +#: core/choices.py:56 extras/choices.py:209 +msgid "Running" +msgstr "Corriendo" + +#: core/choices.py:58 extras/choices.py:211 +msgid "Errored" +msgstr "Erróneo" + +#: core/data_backends.py:29 templates/dcim/interface.html:224 +msgid "Local" +msgstr "Local" + +#: core/data_backends.py:47 extras/tables/tables.py:431 +#: templates/account/profile.html:16 templates/users/user.html:18 +#: users/tables.py:31 +msgid "Username" +msgstr "Nombre de usuario" + +#: core/data_backends.py:49 core/data_backends.py:55 +msgid "Only used for cloning with HTTP(S)" +msgstr "Solo se usa para clonar con HTTP (S)" + +#: core/data_backends.py:53 templates/account/base.html:17 +#: templates/account/password.html:11 users/forms/model_forms.py:171 +msgid "Password" +msgstr "Contraseña" + +#: core/data_backends.py:59 +msgid "Branch" +msgstr "Rama" + +#: core/data_backends.py:118 +msgid "AWS access key ID" +msgstr "ID de clave de acceso de AWS" + +#: core/data_backends.py:122 +msgid "AWS secret access key" +msgstr "Clave de acceso secreta de AWS" + +#: core/filtersets.py:49 extras/filtersets.py:203 extras/filtersets.py:538 +#: extras/filtersets.py:566 +msgid "Data source (ID)" +msgstr "Fuente de datos (ID)" + +#: core/filtersets.py:55 +msgid "Data source (name)" +msgstr "Fuente de datos (nombre)" + +#: core/forms/bulk_edit.py:24 ipam/forms/bulk_edit.py:47 +msgid "Enforce unique space" +msgstr "Haga valer un espacio único" + +#: core/forms/bulk_edit.py:33 extras/forms/model_forms.py:202 +#: templates/extras/savedfilter.html:57 vpn/forms/filtersets.py:95 +#: vpn/forms/filtersets.py:124 vpn/forms/filtersets.py:148 +#: vpn/forms/filtersets.py:167 vpn/forms/model_forms.py:294 +#: vpn/forms/model_forms.py:315 vpn/forms/model_forms.py:329 +#: vpn/forms/model_forms.py:350 vpn/forms/model_forms.py:373 +msgid "Parameters" +msgstr "Parámetros" + +#: core/forms/bulk_edit.py:37 templates/core/datasource.html:69 +msgid "Ignore rules" +msgstr "Ignorar las reglas" + +#: core/forms/filtersets.py:26 core/forms/model_forms.py:95 +#: extras/forms/model_forms.py:165 extras/forms/model_forms.py:455 +#: extras/forms/model_forms.py:508 extras/tables/tables.py:149 +#: extras/tables/tables.py:363 extras/tables/tables.py:398 +#: templates/core/datasource.html:31 +#: templates/dcim/device/render_config.html:19 +#: templates/extras/configcontext.html:30 +#: templates/extras/configtemplate.html:22 +#: templates/extras/exporttemplate.html:41 +#: templates/virtualization/virtualmachine/render_config.html:19 +msgid "Data Source" +msgstr "Fuente de datos" + +#: core/forms/filtersets.py:39 core/tables/data.py:26 +#: dcim/forms/bulk_edit.py:1012 dcim/forms/bulk_edit.py:1285 +#: dcim/forms/filtersets.py:1270 dcim/tables/devices.py:568 +#: dcim/tables/devicetypes.py:221 extras/forms/bulk_edit.py:97 +#: extras/forms/bulk_edit.py:161 extras/forms/bulk_edit.py:220 +#: extras/forms/filtersets.py:119 extras/forms/filtersets.py:206 +#: extras/forms/filtersets.py:267 extras/tables/tables.py:122 +#: extras/tables/tables.py:211 extras/tables/tables.py:284 +#: templates/core/datasource.html:43 templates/dcim/interface.html:62 +#: templates/extras/customlink.html:18 templates/extras/eventrule.html:20 +#: templates/extras/savedfilter.html:26 +#: templates/users/objectpermission.html:26 +#: templates/virtualization/vminterface.html:32 users/forms/bulk_edit.py:69 +#: users/forms/filtersets.py:71 users/tables.py:86 +#: virtualization/forms/bulk_edit.py:216 +#: virtualization/forms/filtersets.py:207 +msgid "Enabled" +msgstr "Habilitado" + +#: core/forms/filtersets.py:51 core/forms/mixins.py:21 +msgid "File" +msgstr "Expediente" + +#: core/forms/filtersets.py:56 core/forms/mixins.py:16 +#: extras/forms/filtersets.py:147 extras/forms/filtersets.py:336 +#: extras/forms/filtersets.py:422 +msgid "Data source" +msgstr "Fuente de datos" + +#: core/forms/filtersets.py:64 extras/forms/filtersets.py:449 +msgid "Creation" +msgstr "Creación" + +#: core/forms/filtersets.py:70 extras/forms/filtersets.py:473 +#: extras/forms/filtersets.py:519 extras/tables/tables.py:474 +#: templates/core/job.html:25 templates/extras/objectchange.html:56 +#: tenancy/tables/contacts.py:90 vpn/tables/l2vpn.py:59 +msgid "Object Type" +msgstr "Tipo de objeto" + +#: core/forms/filtersets.py:80 +msgid "Created after" +msgstr "Creado después" + +#: core/forms/filtersets.py:85 +msgid "Created before" +msgstr "Creado antes" + +#: core/forms/filtersets.py:90 +msgid "Scheduled after" +msgstr "Programado después" + +#: core/forms/filtersets.py:95 +msgid "Scheduled before" +msgstr "Programado antes" + +#: core/forms/filtersets.py:100 +msgid "Started after" +msgstr "Comenzó después" + +#: core/forms/filtersets.py:105 +msgid "Started before" +msgstr "Comenzó antes" + +#: core/forms/filtersets.py:110 +msgid "Completed after" +msgstr "Completado después" + +#: core/forms/filtersets.py:115 +msgid "Completed before" +msgstr "Completado antes" + +#: core/forms/filtersets.py:122 dcim/forms/bulk_edit.py:359 +#: dcim/forms/filtersets.py:352 dcim/forms/filtersets.py:396 +#: dcim/forms/model_forms.py:251 extras/forms/filtersets.py:465 +#: extras/forms/filtersets.py:511 templates/dcim/rackreservation.html:65 +#: templates/extras/objectchange.html:40 templates/extras/savedfilter.html:22 +#: templates/users/token.html:22 templates/users/user.html:6 +#: templates/users/user.html:14 users/filtersets.py:74 users/filtersets.py:134 +#: users/forms/filtersets.py:85 users/forms/filtersets.py:126 +#: users/forms/model_forms.py:156 users/forms/model_forms.py:194 +#: users/tables.py:19 +msgid "User" +msgstr "usuario" + +#: core/forms/model_forms.py:52 core/tables/data.py:46 +#: templates/core/datafile.html:36 templates/extras/report/base.html:33 +#: templates/extras/script/base.html:32 templates/extras/script_result.html:45 +msgid "Source" +msgstr "Fuente" + +#: core/forms/model_forms.py:56 +msgid "Backend Parameters" +msgstr "Parámetros de backend" + +#: core/forms/model_forms.py:94 +msgid "File Upload" +msgstr "Carga de archivos" + +#: core/forms/model_forms.py:147 templates/core/configrevision.html:43 +#: templates/dcim/rack_elevation_list.html:6 +msgid "Rack Elevations" +msgstr "Elevaciones de estanterías" + +#: core/forms/model_forms.py:148 dcim/choices.py:1407 +#: dcim/forms/bulk_edit.py:859 dcim/forms/bulk_edit.py:1242 +#: dcim/forms/bulk_edit.py:1260 dcim/tables/racks.py:89 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 +msgid "Power" +msgstr "Potencia" + +#: core/forms/model_forms.py:149 netbox/navigation/menu.py:142 +#: templates/core/configrevision.html:79 +msgid "IPAM" +msgstr "IPAM" + +#: core/forms/model_forms.py:150 netbox/navigation/menu.py:218 +#: templates/core/configrevision.html:95 vpn/forms/bulk_edit.py:76 +#: vpn/forms/filtersets.py:42 vpn/forms/model_forms.py:60 +#: vpn/forms/model_forms.py:145 +msgid "Security" +msgstr "Seguridad" + +#: core/forms/model_forms.py:151 templates/core/configrevision.html:107 +msgid "Banners" +msgstr "Banners" + +#: core/forms/model_forms.py:152 templates/core/configrevision.html:131 +msgid "Pagination" +msgstr "Paginación" + +#: core/forms/model_forms.py:153 extras/forms/model_forms.py:63 +#: templates/core/configrevision.html:147 +msgid "Validation" +msgstr "Validación" + +#: core/forms/model_forms.py:154 templates/account/preferences.html:6 +#: templates/core/configrevision.html:175 +msgid "User Preferences" +msgstr "Preferencias de usuario" + +#: core/forms/model_forms.py:155 dcim/forms/filtersets.py:658 +#: templates/core/configrevision.html:193 users/forms/model_forms.py:63 +msgid "Miscellaneous" +msgstr "Misceláneo" + +#: core/forms/model_forms.py:158 +msgid "Config Revision" +msgstr "Revisión de configuración" + +#: core/forms/model_forms.py:197 +msgid "This parameter has been defined statically and cannot be modified." +msgstr "Este parámetro se ha definido estáticamente y no se puede modificar." + +#: core/forms/model_forms.py:205 +#, python-brace-format +msgid "Current value: {value}" +msgstr "Valor actual: {value}" + +#: core/forms/model_forms.py:207 +msgid " (default)" +msgstr " (predeterminado)" + +#: core/models/config.py:18 core/models/data.py:259 core/models/files.py:27 +#: core/models/jobs.py:50 extras/models/models.py:760 +#: netbox/models/features.py:52 users/models.py:248 +msgid "created" +msgstr "creado" + +#: core/models/config.py:22 +msgid "comment" +msgstr "comentario" + +#: core/models/config.py:29 +msgid "configuration data" +msgstr "datos de configuración" + +#: core/models/config.py:36 +msgid "config revision" +msgstr "revisión de configuración" + +#: core/models/config.py:37 +msgid "config revisions" +msgstr "revisiones de configuración" + +#: core/models/config.py:41 +msgid "Default configuration" +msgstr "Configuración predeterminada" + +#: core/models/config.py:43 +msgid "Current configuration" +msgstr "Configuración actual" + +#: core/models/config.py:44 +#, python-brace-format +msgid "Config revision #{id}" +msgstr "Revisión de configuración #{id}" + +#: core/models/data.py:46 dcim/models/cables.py:43 +#: dcim/models/device_component_templates.py:177 +#: dcim/models/device_component_templates.py:211 +#: dcim/models/device_component_templates.py:246 +#: dcim/models/device_component_templates.py:308 +#: dcim/models/device_component_templates.py:387 +#: dcim/models/device_component_templates.py:486 +#: dcim/models/device_component_templates.py:586 +#: dcim/models/device_components.py:284 dcim/models/device_components.py:313 +#: dcim/models/device_components.py:346 dcim/models/device_components.py:464 +#: dcim/models/device_components.py:606 dcim/models/device_components.py:971 +#: dcim/models/device_components.py:1045 dcim/models/power.py:101 +#: dcim/models/racks.py:127 extras/models/customfields.py:75 +#: extras/models/search.py:43 virtualization/models/clusters.py:61 +#: vpn/models/l2vpn.py:32 +msgid "type" +msgstr "tipo" + +#: core/models/data.py:51 extras/choices.py:34 extras/models/models.py:194 +#: templates/core/datasource.html:59 +msgid "URL" +msgstr "URL" + +#: core/models/data.py:61 dcim/models/device_component_templates.py:392 +#: dcim/models/device_components.py:513 extras/models/models.py:88 +#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:353 +msgid "enabled" +msgstr "habilitado" + +#: core/models/data.py:65 +msgid "ignore rules" +msgstr "ignorar reglas" + +#: core/models/data.py:67 +msgid "Patterns (one per line) matching files to ignore when syncing" +msgstr "" +"Patrones (uno por línea) que coinciden con los archivos para ignorarlos al " +"sincronizar" + +#: core/models/data.py:70 extras/models/models.py:564 +msgid "parameters" +msgstr "parámetros" + +#: core/models/data.py:75 +msgid "last synced" +msgstr "sincronizado por última vez" + +#: core/models/data.py:83 +msgid "data source" +msgstr "fuente de datos" + +#: core/models/data.py:84 +msgid "data sources" +msgstr "fuentes de datos" + +#: core/models/data.py:124 +#, python-brace-format +msgid "Unknown backend type: {type}" +msgstr "Tipo de backend desconocido: {type}" + +#: core/models/data.py:263 core/models/files.py:31 +#: netbox/models/features.py:58 +msgid "last updated" +msgstr "última actualización" + +#: core/models/data.py:273 dcim/models/cables.py:430 +msgid "path" +msgstr "ruta" + +#: core/models/data.py:276 +msgid "File path relative to the data source's root" +msgstr "Ruta del archivo relativa a la raíz de la fuente de datos" + +#: core/models/data.py:280 ipam/models/ip.py:502 +msgid "size" +msgstr "tamaño" + +#: core/models/data.py:283 +msgid "hash" +msgstr "picadillo" + +#: core/models/data.py:287 +msgid "Length must be 64 hexadecimal characters." +msgstr "La longitud debe ser de 64 caracteres hexadecimales." + +#: core/models/data.py:289 +msgid "SHA256 hash of the file data" +msgstr "Hash SHA256 de los datos del archivo" + +#: core/models/data.py:306 +msgid "data file" +msgstr "archivo de datos" + +#: core/models/data.py:307 +msgid "data files" +msgstr "archivos de datos" + +#: core/models/data.py:393 +msgid "auto sync record" +msgstr "registro de sincronización automática" + +#: core/models/data.py:394 +msgid "auto sync records" +msgstr "sincronización automática de registros" + +#: core/models/files.py:37 +msgid "file root" +msgstr "raíz del archivo" + +#: core/models/files.py:42 +msgid "file path" +msgstr "ruta del archivo" + +#: core/models/files.py:44 +msgid "File path relative to the designated root path" +msgstr "Ruta del archivo relativa a la ruta raíz designada" + +#: core/models/files.py:61 +msgid "managed file" +msgstr "archivo gestionado" + +#: core/models/files.py:62 +msgid "managed files" +msgstr "archivos gestionados" + +#: core/models/jobs.py:54 +msgid "scheduled" +msgstr "programado" + +#: core/models/jobs.py:59 +msgid "interval" +msgstr "intervalo" + +#: core/models/jobs.py:65 +msgid "Recurrence interval (in minutes)" +msgstr "Intervalo de recurrencia (en minutos)" + +#: core/models/jobs.py:68 +msgid "started" +msgstr "iniciado" + +#: core/models/jobs.py:73 +msgid "completed" +msgstr "completado" + +#: core/models/jobs.py:91 extras/models/models.py:123 +#: extras/models/staging.py:87 +msgid "data" +msgstr "dato" + +#: core/models/jobs.py:96 +msgid "error" +msgstr "error" + +#: core/models/jobs.py:101 +msgid "job ID" +msgstr "ID de trabajo" + +#: core/models/jobs.py:112 +msgid "job" +msgstr "trabajo" + +#: core/models/jobs.py:113 +msgid "jobs" +msgstr "trabajos" + +#: core/models/jobs.py:135 +#, python-brace-format +msgid "Jobs cannot be assigned to this object type ({type})." +msgstr "No se pueden asignar trabajos a este tipo de objeto ({type})." + +#: core/tables/config.py:21 users/forms/filtersets.py:45 users/tables.py:39 +msgid "Is Active" +msgstr "Está activo" + +#: core/tables/data.py:50 templates/core/datafile.html:40 +msgid "Path" +msgstr "Ruta" + +#: core/tables/data.py:54 templates/extras/inc/result_pending.html:7 +msgid "Last updated" +msgstr "Última actualización" + +#: core/tables/jobs.py:10 dcim/tables/devicetypes.py:161 +#: extras/tables/tables.py:174 extras/tables/tables.py:340 +#: netbox/tables/tables.py:184 templates/dcim/virtualchassis_edit.html:53 +#: wireless/tables/wirelesslink.py:16 +msgid "ID" +msgstr "ID" + +#: core/tables/jobs.py:21 extras/choices.py:38 extras/tables/tables.py:236 +#: extras/tables/tables.py:350 extras/tables/tables.py:448 +#: extras/tables/tables.py:479 netbox/tables/tables.py:238 +#: templates/extras/eventrule.html:99 +#: templates/extras/htmx/report_result.html:45 +#: templates/extras/journalentry.html:21 templates/extras/objectchange.html:62 +#: tenancy/tables/contacts.py:93 vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Objeto" + +#: core/tables/jobs.py:35 +msgid "Interval" +msgstr "Intervalo" + +#: core/tables/jobs.py:38 templates/core/job.html:71 +#: templates/extras/htmx/report_result.html:7 +#: templates/extras/htmx/script_result.html:8 +msgid "Started" +msgstr "Empezado" + +#: dcim/api/serializers.py:205 templates/dcim/rack.html:33 +msgid "Facility ID" +msgstr "ID de la instalación" + +#: dcim/api/serializers.py:321 dcim/api/serializers.py:680 +msgid "Position (U)" +msgstr "Posición (U)" + +#: dcim/choices.py:21 virtualization/choices.py:21 +msgid "Staging" +msgstr "Puesta en escena" + +#: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 +#: dcim/choices.py:1420 virtualization/choices.py:23 +#: virtualization/choices.py:48 +msgid "Decommissioning" +msgstr "Desmantelamiento" + +#: dcim/choices.py:24 +msgid "Retired" +msgstr "Retirado" + +#: dcim/choices.py:65 +msgid "2-post frame" +msgstr "Marco de 2 postes" + +#: dcim/choices.py:66 +msgid "4-post frame" +msgstr "Marco de 4 postes" + +#: dcim/choices.py:67 +msgid "4-post cabinet" +msgstr "Armario de 4 postes" + +#: dcim/choices.py:68 +msgid "Wall-mounted frame" +msgstr "Marco de pared" + +#: dcim/choices.py:69 +msgid "Wall-mounted frame (vertical)" +msgstr "Marco de pared (vertical)" + +#: dcim/choices.py:70 +msgid "Wall-mounted cabinet" +msgstr "Armario de pared" + +#: dcim/choices.py:71 +msgid "Wall-mounted cabinet (vertical)" +msgstr "Armario de pared (vertical)" + +#: dcim/choices.py:83 dcim/choices.py:84 dcim/choices.py:85 dcim/choices.py:86 +#, python-brace-format +msgid "{n} inches" +msgstr "{n} pulgadas" + +#: dcim/choices.py:100 ipam/choices.py:32 ipam/choices.py:50 +#: ipam/choices.py:70 ipam/choices.py:155 wireless/choices.py:26 +msgid "Reserved" +msgstr "Reservado" + +#: dcim/choices.py:101 templates/dcim/device.html:262 +msgid "Available" +msgstr "Disponible" + +#: dcim/choices.py:104 ipam/choices.py:33 ipam/choices.py:51 +#: ipam/choices.py:71 ipam/choices.py:156 wireless/choices.py:28 +msgid "Deprecated" +msgstr "Obsoleto" + +#: dcim/choices.py:114 templates/dcim/rack.html:128 +msgid "Millimeters" +msgstr "Milímetros" + +#: dcim/choices.py:115 dcim/choices.py:1442 +msgid "Inches" +msgstr "Pulgadas" + +#: dcim/choices.py:140 dcim/forms/bulk_edit.py:66 dcim/forms/bulk_edit.py:85 +#: dcim/forms/bulk_edit.py:171 dcim/forms/bulk_edit.py:1290 +#: dcim/forms/bulk_import.py:59 dcim/forms/bulk_import.py:73 +#: dcim/forms/bulk_import.py:136 dcim/forms/bulk_import.py:503 +#: dcim/forms/bulk_import.py:770 dcim/forms/bulk_import.py:1021 +#: dcim/forms/filtersets.py:226 dcim/forms/model_forms.py:73 +#: dcim/forms/model_forms.py:94 dcim/forms/model_forms.py:172 +#: dcim/forms/model_forms.py:955 dcim/forms/model_forms.py:1296 +#: dcim/forms/object_import.py:181 dcim/tables/devices.py:671 +#: dcim/tables/devices.py:955 extras/tables/tables.py:181 +#: ipam/tables/fhrp.py:59 ipam/tables/ip.py:374 ipam/tables/services.py:44 +#: templates/dcim/interface.html:105 templates/dcim/interface.html:321 +#: templates/dcim/location.html:44 templates/dcim/region.html:38 +#: templates/dcim/sitegroup.html:38 templates/ipam/service.html:31 +#: templates/tenancy/contactgroup.html:32 +#: templates/tenancy/tenantgroup.html:40 +#: templates/virtualization/vminterface.html:42 +#: templates/wireless/wirelesslangroup.html:38 tenancy/forms/bulk_edit.py:26 +#: tenancy/forms/bulk_edit.py:60 tenancy/forms/bulk_import.py:24 +#: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:24 +#: tenancy/forms/model_forms.py:69 virtualization/forms/bulk_edit.py:206 +#: virtualization/forms/bulk_import.py:151 +#: virtualization/tables/virtualmachines.py:142 wireless/forms/bulk_edit.py:23 +#: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:20 +msgid "Parent" +msgstr "Padre" + +#: dcim/choices.py:141 +msgid "Child" +msgstr "Niño" + +#: dcim/choices.py:155 templates/dcim/device.html:345 +#: templates/dcim/rack.html:181 templates/dcim/rack_elevation_list.html:22 +#: templates/dcim/rackreservation.html:84 +msgid "Front" +msgstr "Delantera" + +#: dcim/choices.py:156 templates/dcim/device.html:351 +#: templates/dcim/rack.html:187 templates/dcim/rack_elevation_list.html:23 +#: templates/dcim/rackreservation.html:90 +msgid "Rear" +msgstr "Trasera" + +#: dcim/choices.py:175 dcim/choices.py:221 virtualization/choices.py:46 +msgid "Staged" +msgstr "Escenificado" + +#: dcim/choices.py:177 +msgid "Inventory" +msgstr "Inventario" + +#: dcim/choices.py:193 +msgid "Front to rear" +msgstr "De adelante hacia atrás" + +#: dcim/choices.py:194 +msgid "Rear to front" +msgstr "De atrás hacia adelante" + +#: dcim/choices.py:195 +msgid "Left to right" +msgstr "De izquierda a derecha" + +#: dcim/choices.py:196 +msgid "Right to left" +msgstr "De derecha a izquierda" + +#: dcim/choices.py:197 +msgid "Side to rear" +msgstr "De lado a atrás" + +#: dcim/choices.py:198 dcim/choices.py:1215 +msgid "Passive" +msgstr "Pasivo" + +#: dcim/choices.py:199 +msgid "Mixed" +msgstr "Mezclado" + +#: dcim/choices.py:443 dcim/choices.py:680 +msgid "NEMA (Non-locking)" +msgstr "NEMA (sin bloqueo)" + +#: dcim/choices.py:465 dcim/choices.py:702 +msgid "NEMA (Locking)" +msgstr "NEMA (Bloqueo)" + +#: dcim/choices.py:488 dcim/choices.py:725 +msgid "California Style" +msgstr "Estilo californiano" + +#: dcim/choices.py:496 +msgid "International/ITA" +msgstr "Internacional/ITA" + +#: dcim/choices.py:526 dcim/choices.py:755 +msgid "Proprietary" +msgstr "Proprietario" + +#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1131 +#: dcim/choices.py:1133 dcim/choices.py:1338 dcim/choices.py:1340 +#: netbox/navigation/menu.py:188 +msgid "Other" +msgstr "Otros" + +#: dcim/choices.py:733 +msgid "ITA/International" +msgstr "ITA/Internacional" + +#: dcim/choices.py:794 +msgid "Physical" +msgstr "Físico" + +#: dcim/choices.py:795 dcim/choices.py:949 +msgid "Virtual" +msgstr "Virtual" + +#: dcim/choices.py:796 dcim/choices.py:1019 dcim/forms/bulk_edit.py:1398 +#: dcim/forms/filtersets.py:1233 dcim/forms/model_forms.py:881 +#: dcim/forms/model_forms.py:1190 netbox/navigation/menu.py:128 +#: netbox/navigation/menu.py:132 templates/dcim/interface.html:217 +msgid "Wireless" +msgstr "inalámbrico" + +#: dcim/choices.py:947 +msgid "Virtual interfaces" +msgstr "Interfaces virtuales" + +#: dcim/choices.py:950 dcim/forms/bulk_edit.py:1295 +#: dcim/forms/bulk_import.py:777 dcim/forms/model_forms.py:869 +#: dcim/tables/devices.py:675 templates/dcim/interface.html:109 +#: templates/virtualization/vminterface.html:46 +#: virtualization/forms/bulk_edit.py:211 +#: virtualization/forms/bulk_import.py:158 +#: virtualization/tables/virtualmachines.py:146 +msgid "Bridge" +msgstr "puente" + +#: dcim/choices.py:951 +msgid "Link Aggregation Group (LAG)" +msgstr "Grupo de agregación de enlaces (LAG)" + +#: dcim/choices.py:955 +msgid "Ethernet (fixed)" +msgstr "Ethernet (fijo)" + +#: dcim/choices.py:969 +msgid "Ethernet (modular)" +msgstr "Ethernet (modular)" + +#: dcim/choices.py:1005 +msgid "Ethernet (backplane)" +msgstr "Ethernet (placa base)" + +#: dcim/choices.py:1033 +msgid "Cellular" +msgstr "Celular" + +#: dcim/choices.py:1080 dcim/forms/filtersets.py:302 +#: dcim/forms/filtersets.py:736 dcim/forms/filtersets.py:876 +#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:53 +#: templates/dcim/virtualchassis_edit.html:55 +msgid "Serial" +msgstr "serie" + +#: dcim/choices.py:1095 +msgid "Coaxial" +msgstr "Coaxial" + +#: dcim/choices.py:1112 +msgid "Stacking" +msgstr "Apilamiento" + +#: dcim/choices.py:1162 +msgid "Half" +msgstr "Mitad" + +#: dcim/choices.py:1163 +msgid "Full" +msgstr "Lleno" + +#: dcim/choices.py:1164 wireless/choices.py:480 +msgid "Auto" +msgstr "Auto" + +#: dcim/choices.py:1175 +msgid "Access" +msgstr "Acceso" + +#: dcim/choices.py:1176 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: templates/dcim/inc/interface_vlans_table.html:7 +msgid "Tagged" +msgstr "Etiquetado" + +#: dcim/choices.py:1177 +msgid "Tagged (All)" +msgstr "Etiquetado (Todos)" + +#: dcim/choices.py:1206 +msgid "IEEE Standard" +msgstr "Estándar IEEE" + +#: dcim/choices.py:1217 +msgid "Passive 24V (2-pair)" +msgstr "Pasivo 24 V (2 pares)" + +#: dcim/choices.py:1218 +msgid "Passive 24V (4-pair)" +msgstr "Pasivo de 24 V (4 pares)" + +#: dcim/choices.py:1219 +msgid "Passive 48V (2-pair)" +msgstr "Pasivo 48 V (2 pares)" + +#: dcim/choices.py:1220 +msgid "Passive 48V (4-pair)" +msgstr "Pasivo de 48 V (4 pares)" + +#: dcim/choices.py:1282 dcim/choices.py:1378 +msgid "Copper" +msgstr "Cobre" + +#: dcim/choices.py:1305 +msgid "Fiber Optic" +msgstr "Fibra óptica" + +#: dcim/choices.py:1394 +msgid "Fiber" +msgstr "Fibra" + +#: dcim/choices.py:1418 dcim/forms/filtersets.py:1140 +msgid "Connected" +msgstr "Conectado" + +#: dcim/choices.py:1437 +msgid "Kilometers" +msgstr "Kilómetros" + +#: dcim/choices.py:1438 templates/dcim/cable_trace.html:62 +msgid "Meters" +msgstr "Medidores" + +#: dcim/choices.py:1439 +msgid "Centimeters" +msgstr "Centímetros" + +#: dcim/choices.py:1440 +msgid "Miles" +msgstr "Millas" + +#: dcim/choices.py:1441 templates/dcim/cable_trace.html:63 +msgid "Feet" +msgstr "Pies" + +#: dcim/choices.py:1457 templates/dcim/device.html:332 +#: templates/dcim/rack.html:157 +msgid "Kilograms" +msgstr "Kilogramos" + +#: dcim/choices.py:1458 +msgid "Grams" +msgstr "Gramos" + +#: dcim/choices.py:1459 templates/dcim/rack.html:158 +msgid "Pounds" +msgstr "Libras" + +#: dcim/choices.py:1460 +msgid "Ounces" +msgstr "Onzas" + +#: dcim/choices.py:1506 tenancy/choices.py:17 +msgid "Primary" +msgstr "Primaria" + +#: dcim/choices.py:1507 +msgid "Redundant" +msgstr "Redundante" + +#: dcim/choices.py:1528 +msgid "Single phase" +msgstr "Monofásico" + +#: dcim/choices.py:1529 +msgid "Three-phase" +msgstr "Trifásico" + +#: dcim/filtersets.py:80 +msgid "Parent region (ID)" +msgstr "Región principal (ID)" + +#: dcim/filtersets.py:86 +msgid "Parent region (slug)" +msgstr "Región principal (babosa)" + +#: dcim/filtersets.py:97 +msgid "Parent site group (ID)" +msgstr "Grupo de sitio principal (ID)" + +#: dcim/filtersets.py:103 +msgid "Parent site group (slug)" +msgstr "Grupo de sitios principal (slug)" + +#: dcim/filtersets.py:132 ipam/filtersets.py:797 ipam/filtersets.py:930 +msgid "Group (ID)" +msgstr "Grupo (ID)" + +#: dcim/filtersets.py:138 +msgid "Group (slug)" +msgstr "Grupo (babosa)" + +#: dcim/filtersets.py:144 dcim/filtersets.py:149 +msgid "AS (ID)" +msgstr "COMO (ID)" + +#: dcim/filtersets.py:217 dcim/filtersets.py:292 dcim/filtersets.py:390 +#: dcim/filtersets.py:917 dcim/filtersets.py:1213 dcim/filtersets.py:1881 +msgid "Location (ID)" +msgstr "Ubicación (ID)" + +#: dcim/filtersets.py:224 dcim/filtersets.py:299 dcim/filtersets.py:397 +#: dcim/filtersets.py:1219 extras/filtersets.py:447 +msgid "Location (slug)" +msgstr "Ubicación (babosa)" + +#: dcim/filtersets.py:313 dcim/filtersets.py:764 dcim/filtersets.py:854 +#: dcim/filtersets.py:1619 ipam/filtersets.py:347 ipam/filtersets.py:459 +#: ipam/filtersets.py:940 virtualization/filtersets.py:209 +msgid "Role (ID)" +msgstr "Función (ID)" + +#: dcim/filtersets.py:319 dcim/filtersets.py:770 dcim/filtersets.py:860 +#: dcim/filtersets.py:1625 extras/filtersets.py:463 ipam/filtersets.py:353 +#: ipam/filtersets.py:465 ipam/filtersets.py:946 +#: virtualization/filtersets.py:215 +msgid "Role (slug)" +msgstr "Rol (babosa)" + +#: dcim/filtersets.py:347 dcim/filtersets.py:922 dcim/filtersets.py:1224 +#: dcim/filtersets.py:1942 +msgid "Rack (ID)" +msgstr "Rack (ID)" + +#: dcim/filtersets.py:401 extras/filtersets.py:234 extras/filtersets.py:278 +#: extras/filtersets.py:318 extras/filtersets.py:613 +msgid "User (ID)" +msgstr "Usuario (ID)" + +#: dcim/filtersets.py:407 extras/filtersets.py:240 extras/filtersets.py:284 +#: extras/filtersets.py:324 users/filtersets.py:80 users/filtersets.py:140 +msgid "User (name)" +msgstr "Usuario (nombre)" + +#: dcim/filtersets.py:435 dcim/filtersets.py:561 dcim/filtersets.py:754 +#: dcim/filtersets.py:805 dcim/filtersets.py:833 dcim/filtersets.py:1116 +#: dcim/filtersets.py:1609 +msgid "Manufacturer (ID)" +msgstr "Fabricante (ID)" + +#: dcim/filtersets.py:441 dcim/filtersets.py:567 dcim/filtersets.py:760 +#: dcim/filtersets.py:811 dcim/filtersets.py:839 dcim/filtersets.py:1122 +#: dcim/filtersets.py:1615 +msgid "Manufacturer (slug)" +msgstr "Fabricante (babosa)" + +#: dcim/filtersets.py:445 +msgid "Default platform (ID)" +msgstr "Plataforma predeterminada (ID)" + +#: dcim/filtersets.py:451 +msgid "Default platform (slug)" +msgstr "Plataforma predeterminada (slug)" + +#: dcim/filtersets.py:454 dcim/forms/filtersets.py:452 +msgid "Has a front image" +msgstr "Tiene una imagen frontal" + +#: dcim/filtersets.py:458 dcim/forms/filtersets.py:459 +msgid "Has a rear image" +msgstr "Tiene una imagen trasera" + +#: dcim/filtersets.py:463 dcim/filtersets.py:571 dcim/filtersets.py:975 +#: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:563 +#: dcim/forms/filtersets.py:775 +msgid "Has console ports" +msgstr "Tiene puertos de consola" + +#: dcim/filtersets.py:467 dcim/filtersets.py:575 dcim/filtersets.py:979 +#: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:570 +#: dcim/forms/filtersets.py:782 +msgid "Has console server ports" +msgstr "Tiene puertos de servidor de consola" + +#: dcim/filtersets.py:471 dcim/filtersets.py:579 dcim/filtersets.py:983 +#: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:577 +#: dcim/forms/filtersets.py:789 +msgid "Has power ports" +msgstr "Tiene puertos de alimentación" + +#: dcim/filtersets.py:475 dcim/filtersets.py:583 dcim/filtersets.py:987 +#: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:584 +#: dcim/forms/filtersets.py:796 +msgid "Has power outlets" +msgstr "Tiene tomas de corriente" + +#: dcim/filtersets.py:479 dcim/filtersets.py:587 dcim/filtersets.py:991 +#: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:591 +#: dcim/forms/filtersets.py:803 +msgid "Has interfaces" +msgstr "Tiene interfaces" + +#: dcim/filtersets.py:483 dcim/filtersets.py:591 dcim/filtersets.py:995 +#: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:598 +#: dcim/forms/filtersets.py:810 +msgid "Has pass-through ports" +msgstr "Tiene puertos de paso" + +#: dcim/filtersets.py:487 dcim/filtersets.py:999 dcim/forms/filtersets.py:515 +msgid "Has module bays" +msgstr "Tiene compartimentos para módulos" + +#: dcim/filtersets.py:491 dcim/filtersets.py:1003 dcim/forms/filtersets.py:508 +msgid "Has device bays" +msgstr "Tiene compartimentos para dispositivos" + +#: dcim/filtersets.py:495 dcim/forms/filtersets.py:522 +msgid "Has inventory items" +msgstr "Tiene artículos de inventario" + +#: dcim/filtersets.py:638 dcim/filtersets.py:849 dcim/filtersets.py:1245 +msgid "Device type (ID)" +msgstr "Tipo de dispositivo (ID)" + +#: dcim/filtersets.py:651 dcim/filtersets.py:1127 +msgid "Module type (ID)" +msgstr "Tipo de módulo (ID)" + +#: dcim/filtersets.py:750 dcim/filtersets.py:1605 +msgid "Parent inventory item (ID)" +msgstr "Artículo del inventario principal (ID)" + +#: dcim/filtersets.py:793 dcim/filtersets.py:815 dcim/filtersets.py:971 +#: virtualization/filtersets.py:237 +msgid "Config template (ID)" +msgstr "Plantilla de configuración (ID)" + +#: dcim/filtersets.py:845 +msgid "Device type (slug)" +msgstr "Tipo de dispositivo (slug)" + +#: dcim/filtersets.py:865 +msgid "Parent Device (ID)" +msgstr "Dispositivo principal (ID)" + +#: dcim/filtersets.py:869 virtualization/filtersets.py:219 +msgid "Platform (ID)" +msgstr "Plataforma (ID)" + +#: dcim/filtersets.py:875 extras/filtersets.py:474 +#: virtualization/filtersets.py:225 +msgid "Platform (slug)" +msgstr "Plataforma (babosa)" + +#: dcim/filtersets.py:911 dcim/filtersets.py:1208 dcim/filtersets.py:1703 +#: dcim/filtersets.py:1875 dcim/filtersets.py:1933 +msgid "Site name (slug)" +msgstr "Nombre del sitio (slug)" + +#: dcim/filtersets.py:926 +msgid "VM cluster (ID)" +msgstr "Clúster de máquinas virtuales (ID)" + +#: dcim/filtersets.py:932 +msgid "Device model (slug)" +msgstr "Modelo de dispositivo (slug)" + +#: dcim/filtersets.py:943 dcim/forms/bulk_edit.py:421 +msgid "Is full depth" +msgstr "Es de profundidad total" + +#: dcim/filtersets.py:947 dcim/forms/common.py:18 dcim/forms/filtersets.py:745 +#: dcim/forms/filtersets.py:1285 dcim/models/device_components.py:519 +#: virtualization/filtersets.py:229 virtualization/filtersets.py:295 +#: virtualization/forms/filtersets.py:168 +#: virtualization/forms/filtersets.py:215 +msgid "MAC address" +msgstr "Dirección MAC" + +#: dcim/filtersets.py:954 dcim/forms/filtersets.py:754 +#: dcim/forms/filtersets.py:841 virtualization/filtersets.py:233 +#: virtualization/forms/filtersets.py:172 +msgid "Has a primary IP" +msgstr "Tiene una IP principal" + +#: dcim/filtersets.py:958 +msgid "Has an out-of-band IP" +msgstr "Tiene una IP fuera de banda" + +#: dcim/filtersets.py:963 +msgid "Virtual chassis (ID)" +msgstr "Chasis virtual (ID)" + +#: dcim/filtersets.py:967 +msgid "Is a virtual chassis member" +msgstr "Es un miembro del chasis virtual" + +#: dcim/filtersets.py:1008 +msgid "OOB IP (ID)" +msgstr "LOB VIP (ID)" + +#: dcim/filtersets.py:1133 +msgid "Module type (model)" +msgstr "Tipo de módulo (modelo)" + +#: dcim/filtersets.py:1139 +msgid "Module Bay (ID)" +msgstr "Bahía de módulos (ID)" + +#: dcim/filtersets.py:1143 dcim/filtersets.py:1234 ipam/filtersets.py:577 +#: ipam/filtersets.py:807 ipam/filtersets.py:1015 +#: virtualization/filtersets.py:160 vpn/filtersets.py:351 +msgid "Device (ID)" +msgstr "Dispositivo (ID)" + +#: dcim/filtersets.py:1230 +msgid "Rack (name)" +msgstr "Rack (nombre)" + +#: dcim/filtersets.py:1240 ipam/filtersets.py:572 ipam/filtersets.py:802 +#: ipam/filtersets.py:1021 vpn/filtersets.py:346 +msgid "Device (name)" +msgstr "Dispositivo (nombre)" + +#: dcim/filtersets.py:1251 +msgid "Device type (model)" +msgstr "Tipo de dispositivo (modelo)" + +#: dcim/filtersets.py:1256 dcim/filtersets.py:1279 +msgid "Device role (ID)" +msgstr "Función del dispositivo (ID)" + +#: dcim/filtersets.py:1262 dcim/filtersets.py:1285 +msgid "Device role (slug)" +msgstr "Función del dispositivo (slug)" + +#: dcim/filtersets.py:1267 +msgid "Virtual Chassis (ID)" +msgstr "Chasis virtual (ID)" + +#: dcim/filtersets.py:1273 dcim/forms/filtersets.py:106 +#: dcim/tables/devices.py:235 netbox/navigation/menu.py:67 +#: templates/dcim/device.html:123 templates/dcim/device_edit.html:93 +#: templates/dcim/virtualchassis.html:20 +#: templates/dcim/virtualchassis_add.html:8 +#: templates/dcim/virtualchassis_edit.html:25 +msgid "Virtual Chassis" +msgstr "Chasis virtual" + +#: dcim/filtersets.py:1305 +msgid "Module (ID)" +msgstr "Módulo (ID)" + +#: dcim/filtersets.py:1409 ipam/forms/bulk_import.py:188 +#: vpn/forms/bulk_import.py:303 +msgid "Assigned VLAN" +msgstr "VLAN asignada" + +#: dcim/filtersets.py:1413 +msgid "Assigned VID" +msgstr "VID asignado" + +#: dcim/filtersets.py:1418 dcim/forms/bulk_edit.py:1374 +#: dcim/forms/bulk_import.py:828 dcim/forms/filtersets.py:1328 +#: dcim/forms/model_forms.py:1175 dcim/models/device_components.py:712 +#: dcim/tables/devices.py:637 ipam/filtersets.py:282 ipam/filtersets.py:293 +#: ipam/filtersets.py:449 ipam/filtersets.py:550 ipam/filtersets.py:561 +#: ipam/forms/bulk_edit.py:226 ipam/forms/bulk_edit.py:281 +#: ipam/forms/bulk_edit.py:323 ipam/forms/bulk_import.py:156 +#: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 +#: ipam/forms/filtersets.py:66 ipam/forms/filtersets.py:167 +#: ipam/forms/filtersets.py:295 ipam/forms/model_forms.py:59 +#: ipam/forms/model_forms.py:203 ipam/forms/model_forms.py:246 +#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:412 +#: ipam/forms/model_forms.py:426 ipam/forms/model_forms.py:440 +#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 +#: ipam/tables/ip.py:356 ipam/tables/ip.py:445 +#: templates/dcim/interface.html:138 templates/ipam/ipaddress.html:21 +#: templates/ipam/iprange.html:43 templates/ipam/prefix.html:20 +#: templates/ipam/vrf.html:7 templates/ipam/vrf.html:14 +#: templates/virtualization/vminterface.html:50 +#: virtualization/forms/bulk_edit.py:260 +#: virtualization/forms/bulk_import.py:171 +#: virtualization/forms/filtersets.py:220 +#: virtualization/forms/model_forms.py:347 +#: virtualization/models/virtualmachines.py:348 +#: virtualization/tables/virtualmachines.py:123 +msgid "VRF" +msgstr "VRF" + +#: dcim/filtersets.py:1424 ipam/filtersets.py:288 ipam/filtersets.py:299 +#: ipam/filtersets.py:455 ipam/filtersets.py:556 ipam/filtersets.py:567 +msgid "VRF (RD)" +msgstr "VRF (ROJO)" + +#: dcim/filtersets.py:1429 ipam/filtersets.py:963 vpn/filtersets.py:314 +msgid "L2VPN (ID)" +msgstr "L2VPN (ID)" + +#: dcim/filtersets.py:1435 dcim/forms/filtersets.py:1333 +#: dcim/tables/devices.py:585 ipam/filtersets.py:969 +#: ipam/forms/filtersets.py:499 ipam/tables/vlans.py:133 +#: templates/dcim/interface.html:94 templates/ipam/vlan.html:69 +#: templates/vpn/l2vpntermination.html:15 +#: virtualization/forms/filtersets.py:225 vpn/forms/bulk_import.py:275 +#: vpn/forms/filtersets.py:242 vpn/forms/model_forms.py:402 +#: vpn/forms/model_forms.py:420 vpn/models/l2vpn.py:63 vpn/tables/l2vpn.py:55 +msgid "L2VPN" +msgstr "L2VPN" + +#: dcim/filtersets.py:1467 +msgid "Virtual Chassis Interfaces for Device" +msgstr "Interfaces de chasis virtuales para dispositivos" + +#: dcim/filtersets.py:1472 +msgid "Virtual Chassis Interfaces for Device (ID)" +msgstr "Interfaces de chasis virtuales para dispositivos (ID)" + +#: dcim/filtersets.py:1476 +msgid "Kind of interface" +msgstr "Tipo de interfaz" + +#: dcim/filtersets.py:1481 virtualization/filtersets.py:287 +msgid "Parent interface (ID)" +msgstr "Interfaz principal (ID)" + +#: dcim/filtersets.py:1486 virtualization/filtersets.py:292 +msgid "Bridged interface (ID)" +msgstr "Interfaz puenteada (ID)" + +#: dcim/filtersets.py:1491 +msgid "LAG interface (ID)" +msgstr "Interfaz LAG (ID)" + +#: dcim/filtersets.py:1660 +msgid "Master (ID)" +msgstr "Maestro (ID)" + +#: dcim/filtersets.py:1666 +msgid "Master (name)" +msgstr "Maestro (nombre)" + +#: dcim/filtersets.py:1708 tenancy/filtersets.py:220 +msgid "Tenant (ID)" +msgstr "Inquilino (ID)" + +#: dcim/filtersets.py:1714 extras/filtersets.py:523 tenancy/filtersets.py:226 +msgid "Tenant (slug)" +msgstr "Inquilino (babosa)" + +#: dcim/filtersets.py:1749 dcim/forms/filtersets.py:990 +msgid "Unterminated" +msgstr "Inacabado" + +#: dcim/filtersets.py:1937 +msgid "Power panel (ID)" +msgstr "Panel de alimentación (ID)" + +#: dcim/forms/bulk_create.py:40 extras/forms/filtersets.py:410 +#: extras/forms/model_forms.py:444 extras/forms/model_forms.py:495 +#: netbox/forms/base.py:71 netbox/forms/mixins.py:79 +#: netbox/tables/columns.py:448 +#: templates/circuits/inc/circuit_termination.html:119 +#: templates/generic/bulk_edit.html:81 templates/inc/panels/tags.html:5 +#: utilities/forms/fields/fields.py:81 +msgid "Tags" +msgstr "Etiquetas" + +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1390 +#: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:468 +#: dcim/forms/object_create.py:196 dcim/forms/object_create.py:352 +#: dcim/tables/devices.py:198 dcim/tables/devices.py:720 +#: dcim/tables/devicetypes.py:242 templates/dcim/device.html:45 +#: templates/dcim/device.html:129 templates/dcim/modulebay.html:35 +#: templates/dcim/virtualchassis.html:59 +#: templates/dcim/virtualchassis_edit.html:56 +msgid "Position" +msgstr "Posición" + +#: dcim/forms/bulk_create.py:114 +msgid "" +"Alphanumeric ranges are supported. (Must match the number of names being " +"created.)" +msgstr "" +"Se admiten los rangos alfanuméricos. (Debe coincidir con el número de " +"nombres que se están creando)." + +#: dcim/forms/bulk_edit.py:115 dcim/forms/bulk_import.py:99 +#: dcim/forms/model_forms.py:120 dcim/tables/sites.py:89 +#: ipam/filtersets.py:936 ipam/forms/bulk_edit.py:528 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:509 +#: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 +#: templates/dcim/interface.html:294 templates/dcim/site.html:37 +#: templates/ipam/inc/panels/fhrp_groups.html:10 templates/ipam/vlan.html:30 +#: templates/tenancy/contact.html:22 templates/tenancy/tenant.html:21 +#: templates/users/group.html:6 templates/users/group.html:14 +#: templates/virtualization/cluster.html:32 templates/vpn/tunnel.html:30 +#: templates/wireless/wirelesslan.html:19 tenancy/forms/bulk_edit.py:42 +#: tenancy/forms/bulk_edit.py:93 tenancy/forms/bulk_import.py:40 +#: tenancy/forms/bulk_import.py:81 tenancy/forms/filtersets.py:47 +#: tenancy/forms/filtersets.py:77 tenancy/forms/filtersets.py:96 +#: tenancy/forms/model_forms.py:46 tenancy/forms/model_forms.py:102 +#: tenancy/forms/model_forms.py:124 tenancy/tables/contacts.py:60 +#: tenancy/tables/contacts.py:107 tenancy/tables/tenants.py:42 +#: users/filtersets.py:42 users/filtersets.py:145 users/forms/filtersets.py:32 +#: users/forms/filtersets.py:38 users/forms/filtersets.py:80 +#: virtualization/forms/bulk_edit.py:64 virtualization/forms/bulk_import.py:47 +#: virtualization/forms/filtersets.py:84 +#: virtualization/forms/model_forms.py:69 virtualization/tables/clusters.py:70 +#: vpn/forms/bulk_edit.py:111 vpn/forms/bulk_import.py:157 +#: vpn/forms/filtersets.py:113 vpn/tables/crypto.py:31 +#: wireless/forms/bulk_edit.py:47 wireless/forms/bulk_import.py:36 +#: wireless/forms/filtersets.py:45 wireless/forms/model_forms.py:41 +#: wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Grupo" + +#: dcim/forms/bulk_edit.py:130 +msgid "Contact name" +msgstr "Nombre de contacto" + +#: dcim/forms/bulk_edit.py:135 +msgid "Contact phone" +msgstr "Teléfono de contacto" + +#: dcim/forms/bulk_edit.py:141 +msgid "Contact E-mail" +msgstr "Correo electrónico de contacto" + +#: dcim/forms/bulk_edit.py:144 dcim/forms/bulk_import.py:122 +#: dcim/forms/model_forms.py:131 +msgid "Time zone" +msgstr "Zona horaria" + +#: dcim/forms/bulk_edit.py:266 dcim/forms/bulk_edit.py:1152 +#: dcim/forms/bulk_edit.py:1539 dcim/forms/bulk_import.py:199 +#: dcim/forms/bulk_import.py:1009 dcim/forms/filtersets.py:299 +#: dcim/forms/filtersets.py:704 dcim/forms/filtersets.py:1417 +#: dcim/forms/model_forms.py:224 dcim/forms/model_forms.py:963 +#: dcim/forms/model_forms.py:1304 dcim/forms/object_import.py:186 +#: dcim/tables/devices.py:202 dcim/tables/devices.py:828 +#: dcim/tables/devices.py:939 dcim/tables/devicetypes.py:300 +#: dcim/tables/racks.py:69 extras/filtersets.py:457 +#: ipam/forms/bulk_edit.py:245 ipam/forms/bulk_edit.py:294 +#: ipam/forms/bulk_edit.py:342 ipam/forms/bulk_edit.py:546 +#: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 +#: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 +#: ipam/forms/filtersets.py:232 ipam/forms/filtersets.py:278 +#: ipam/forms/filtersets.py:346 ipam/forms/filtersets.py:490 +#: ipam/forms/model_forms.py:187 ipam/forms/model_forms.py:222 +#: ipam/forms/model_forms.py:249 ipam/forms/model_forms.py:647 +#: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 +#: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 +#: templates/dcim/device.html:187 +#: templates/dcim/inc/panels/inventory_items.html:12 +#: templates/dcim/interface.html:231 templates/dcim/inventoryitem.html:37 +#: templates/dcim/rack.html:50 templates/ipam/ipaddress.html:44 +#: templates/ipam/iprange.html:53 templates/ipam/prefix.html:78 +#: templates/ipam/role.html:20 templates/ipam/vlan.html:55 +#: templates/virtualization/virtualmachine.html:26 +#: templates/vpn/tunneltermination.html:18 +#: templates/wireless/inc/wirelesslink_interface.html:20 +#: tenancy/forms/bulk_edit.py:141 tenancy/forms/filtersets.py:106 +#: tenancy/forms/model_forms.py:139 tenancy/tables/contacts.py:102 +#: virtualization/forms/bulk_edit.py:144 +#: virtualization/forms/bulk_import.py:106 +#: virtualization/forms/filtersets.py:153 +#: virtualization/forms/model_forms.py:198 +#: virtualization/tables/virtualmachines.py:65 vpn/forms/bulk_edit.py:86 +#: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:84 +#: vpn/forms/model_forms.py:77 vpn/forms/model_forms.py:112 +#: vpn/tables/tunnels.py:78 +msgid "Role" +msgstr "Rol" + +#: dcim/forms/bulk_edit.py:273 dcim/forms/bulk_edit.py:605 +#: dcim/forms/bulk_edit.py:654 templates/dcim/device.html:106 +#: templates/dcim/module.html:75 templates/dcim/modulebay.html:69 +#: templates/dcim/rack.html:58 +msgid "Serial Number" +msgstr "Número de serie" + +#: dcim/forms/bulk_edit.py:276 dcim/forms/filtersets.py:306 +#: dcim/forms/filtersets.py:740 dcim/forms/filtersets.py:880 +#: dcim/forms/filtersets.py:1430 +msgid "Asset tag" +msgstr "Etiqueta de activo" + +#: dcim/forms/bulk_edit.py:286 dcim/forms/bulk_import.py:212 +#: dcim/forms/filtersets.py:291 templates/dcim/rack.html:91 +#: templates/dcim/rack_edit.html:48 +msgid "Width" +msgstr "Anchura" + +#: dcim/forms/bulk_edit.py:292 +msgid "Height (U)" +msgstr "Altura (U)" + +#: dcim/forms/bulk_edit.py:297 +msgid "Descending units" +msgstr "Unidades descendentes" + +#: dcim/forms/bulk_edit.py:300 +msgid "Outer width" +msgstr "Anchura exterior" + +#: dcim/forms/bulk_edit.py:305 +msgid "Outer depth" +msgstr "Profundidad exterior" + +#: dcim/forms/bulk_edit.py:310 dcim/forms/bulk_import.py:217 +msgid "Outer unit" +msgstr "Unidad exterior" + +#: dcim/forms/bulk_edit.py:315 +msgid "Mounting depth" +msgstr "Profundidad de montaje" + +#: dcim/forms/bulk_edit.py:320 dcim/forms/bulk_edit.py:349 +#: dcim/forms/bulk_edit.py:434 dcim/forms/bulk_edit.py:457 +#: dcim/forms/bulk_edit.py:473 dcim/forms/bulk_edit.py:493 +#: dcim/forms/bulk_import.py:324 dcim/forms/bulk_import.py:350 +#: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:311 +#: dcim/forms/filtersets.py:335 dcim/forms/filtersets.py:423 +#: dcim/forms/filtersets.py:529 dcim/forms/filtersets.py:548 +#: dcim/forms/filtersets.py:605 dcim/forms/model_forms.py:337 +#: dcim/tables/devicetypes.py:103 dcim/tables/modules.py:35 +#: dcim/tables/racks.py:103 extras/forms/bulk_edit.py:45 +#: extras/forms/bulk_edit.py:107 extras/forms/bulk_edit.py:157 +#: extras/forms/bulk_edit.py:277 extras/forms/filtersets.py:60 +#: extras/forms/filtersets.py:133 extras/forms/filtersets.py:220 +#: ipam/forms/bulk_edit.py:187 templates/dcim/device.html:329 +#: templates/dcim/devicetype.html:52 templates/dcim/moduletype.html:31 +#: templates/dcim/rack_edit.html:60 templates/dcim/rack_edit.html:63 +#: templates/extras/configcontext.html:18 templates/extras/customlink.html:26 +#: templates/extras/savedfilter.html:34 templates/ipam/role.html:33 +msgid "Weight" +msgstr "Peso" + +#: dcim/forms/bulk_edit.py:325 dcim/forms/filtersets.py:316 +msgid "Max weight" +msgstr "Peso máximo" + +#: dcim/forms/bulk_edit.py:330 dcim/forms/bulk_edit.py:439 +#: dcim/forms/bulk_edit.py:478 dcim/forms/bulk_import.py:223 +#: dcim/forms/bulk_import.py:329 dcim/forms/bulk_import.py:355 +#: dcim/forms/filtersets.py:321 dcim/forms/filtersets.py:533 +#: dcim/forms/filtersets.py:609 +msgid "Weight unit" +msgstr "Unidad de peso" + +#: dcim/forms/bulk_edit.py:344 dcim/forms/bulk_edit.py:800 +#: dcim/forms/bulk_import.py:262 dcim/forms/bulk_import.py:265 +#: dcim/forms/bulk_import.py:490 dcim/forms/bulk_import.py:1286 +#: dcim/forms/bulk_import.py:1290 dcim/forms/filtersets.py:101 +#: dcim/forms/filtersets.py:339 dcim/forms/filtersets.py:353 +#: dcim/forms/filtersets.py:391 dcim/forms/filtersets.py:699 +#: dcim/forms/filtersets.py:948 dcim/forms/filtersets.py:1080 +#: dcim/forms/model_forms.py:241 dcim/forms/model_forms.py:413 +#: dcim/forms/model_forms.py:662 dcim/forms/object_create.py:399 +#: dcim/tables/devices.py:194 dcim/tables/power.py:70 dcim/tables/racks.py:148 +#: ipam/forms/bulk_edit.py:464 ipam/forms/filtersets.py:427 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:30 +#: templates/dcim/inc/cable_termination.html:16 +#: templates/dcim/powerfeed.html:31 templates/dcim/rack.html:14 +#: templates/dcim/rack/base.html:4 templates/dcim/rack_edit.html:8 +#: templates/dcim/rackreservation.html:20 +#: templates/dcim/rackreservation.html:39 +#: virtualization/forms/model_forms.py:116 +msgid "Rack" +msgstr "Estante" + +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:623 +#: dcim/forms/filtersets.py:247 dcim/forms/filtersets.py:332 +#: dcim/forms/filtersets.py:417 dcim/forms/filtersets.py:543 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:853 +#: dcim/forms/model_forms.py:589 dcim/forms/model_forms.py:1374 +#: templates/dcim/device_edit.html:20 +#: templates/dcim/inventoryitem_edit.html:23 +msgid "Hardware" +msgstr "Hardware" + +#: dcim/forms/bulk_edit.py:400 dcim/forms/bulk_edit.py:464 +#: dcim/forms/bulk_edit.py:528 dcim/forms/bulk_edit.py:552 +#: dcim/forms/bulk_edit.py:633 dcim/forms/bulk_edit.py:1157 +#: dcim/forms/bulk_edit.py:1544 dcim/forms/bulk_import.py:311 +#: dcim/forms/bulk_import.py:345 dcim/forms/bulk_import.py:387 +#: dcim/forms/bulk_import.py:423 dcim/forms/bulk_import.py:1015 +#: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 +#: dcim/forms/filtersets.py:631 dcim/forms/filtersets.py:709 +#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/model_forms.py:274 dcim/forms/model_forms.py:288 +#: dcim/forms/model_forms.py:330 dcim/forms/model_forms.py:370 +#: dcim/forms/model_forms.py:968 dcim/forms/model_forms.py:1309 +#: dcim/forms/object_import.py:192 dcim/tables/devices.py:129 +#: dcim/tables/devices.py:205 dcim/tables/devices.py:942 +#: dcim/tables/devicetypes.py:81 dcim/tables/devicetypes.py:304 +#: dcim/tables/modules.py:20 dcim/tables/modules.py:60 +#: templates/dcim/devicetype.html:17 templates/dcim/inventoryitem.html:45 +#: templates/dcim/manufacturer.html:34 templates/dcim/modulebay.html:61 +#: templates/dcim/moduletype.html:15 templates/dcim/platform.html:40 +msgid "Manufacturer" +msgstr "fabricante" + +#: dcim/forms/bulk_edit.py:405 dcim/forms/bulk_import.py:317 +#: dcim/forms/filtersets.py:434 dcim/forms/model_forms.py:292 +msgid "Default platform" +msgstr "Plataforma predeterminada" + +#: dcim/forms/bulk_edit.py:410 dcim/forms/bulk_edit.py:469 +#: dcim/forms/filtersets.py:437 dcim/forms/filtersets.py:558 +msgid "Part number" +msgstr "Número de pieza" + +#: dcim/forms/bulk_edit.py:414 +msgid "U height" +msgstr "Altura en U" + +#: dcim/forms/bulk_edit.py:426 +msgid "Exclude from utilization" +msgstr "Excluir de la utilización" + +#: dcim/forms/bulk_edit.py:429 dcim/forms/bulk_edit.py:598 +#: dcim/forms/bulk_import.py:517 dcim/forms/filtersets.py:446 +#: dcim/forms/filtersets.py:731 templates/dcim/device.html:100 +#: templates/dcim/devicetype.html:68 +msgid "Airflow" +msgstr "Flujo de aire" + +#: dcim/forms/bulk_edit.py:453 dcim/forms/model_forms.py:303 +#: dcim/tables/devicetypes.py:78 templates/dcim/device.html:90 +#: templates/dcim/devicebay.html:59 templates/dcim/module.html:59 +msgid "Device Type" +msgstr "Tipo de dispositivo" + +#: dcim/forms/bulk_edit.py:492 dcim/forms/model_forms.py:336 +#: dcim/tables/modules.py:17 dcim/tables/modules.py:65 +#: templates/dcim/module.html:63 templates/dcim/modulebay.html:65 +#: templates/dcim/moduletype.html:11 +msgid "Module Type" +msgstr "Tipo de módulo" + +#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:472 +msgid "VM role" +msgstr "Función de máquina virtual" + +#: dcim/forms/bulk_edit.py:509 dcim/forms/bulk_edit.py:533 +#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_import.py:368 +#: dcim/forms/bulk_import.py:372 dcim/forms/bulk_import.py:394 +#: dcim/forms/bulk_import.py:398 dcim/forms/bulk_import.py:523 +#: dcim/forms/bulk_import.py:527 dcim/forms/filtersets.py:620 +#: dcim/forms/filtersets.py:636 dcim/forms/filtersets.py:750 +#: dcim/forms/model_forms.py:349 dcim/forms/model_forms.py:375 +#: dcim/forms/model_forms.py:477 virtualization/forms/bulk_import.py:132 +#: virtualization/forms/bulk_import.py:133 +#: virtualization/forms/filtersets.py:180 +#: virtualization/forms/model_forms.py:218 +msgid "Config template" +msgstr "Plantilla de configuración" + +#: dcim/forms/bulk_edit.py:557 dcim/forms/bulk_edit.py:951 +#: dcim/forms/bulk_import.py:429 dcim/forms/filtersets.py:111 +#: dcim/forms/model_forms.py:435 dcim/forms/model_forms.py:776 +#: dcim/forms/model_forms.py:790 extras/filtersets.py:452 +msgid "Device type" +msgstr "Tipo de dispositivo" + +#: dcim/forms/bulk_edit.py:565 dcim/forms/bulk_import.py:410 +#: dcim/forms/filtersets.py:116 dcim/forms/model_forms.py:440 +msgid "Device role" +msgstr "Función del dispositivo" + +#: dcim/forms/bulk_edit.py:588 dcim/forms/bulk_import.py:435 +#: dcim/forms/filtersets.py:723 dcim/forms/model_forms.py:385 +#: dcim/forms/model_forms.py:444 extras/filtersets.py:468 +#: templates/dcim/device.html:191 templates/dcim/platform.html:27 +#: templates/virtualization/virtualmachine.html:30 +#: virtualization/forms/bulk_edit.py:159 +#: virtualization/forms/bulk_import.py:122 +#: virtualization/forms/filtersets.py:164 +#: virtualization/forms/model_forms.py:206 +msgid "Platform" +msgstr "Plataforma" + +#: dcim/forms/bulk_edit.py:621 dcim/forms/bulk_edit.py:1171 +#: dcim/forms/bulk_edit.py:1534 dcim/forms/bulk_edit.py:1580 +#: dcim/forms/bulk_import.py:578 dcim/forms/bulk_import.py:640 +#: dcim/forms/bulk_import.py:666 dcim/forms/bulk_import.py:692 +#: dcim/forms/bulk_import.py:712 dcim/forms/bulk_import.py:765 +#: dcim/forms/bulk_import.py:879 dcim/forms/bulk_import.py:927 +#: dcim/forms/bulk_import.py:944 dcim/forms/bulk_import.py:956 +#: dcim/forms/bulk_import.py:1004 dcim/forms/bulk_import.py:1350 +#: dcim/forms/connections.py:23 dcim/forms/filtersets.py:128 +#: dcim/forms/filtersets.py:831 dcim/forms/filtersets.py:964 +#: dcim/forms/filtersets.py:1154 dcim/forms/filtersets.py:1176 +#: dcim/forms/filtersets.py:1198 dcim/forms/filtersets.py:1215 +#: dcim/forms/filtersets.py:1235 dcim/forms/filtersets.py:1343 +#: dcim/forms/filtersets.py:1365 dcim/forms/filtersets.py:1386 +#: dcim/forms/filtersets.py:1401 dcim/forms/filtersets.py:1412 +#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 +#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:555 +#: dcim/forms/model_forms.py:753 dcim/forms/model_forms.py:1004 +#: dcim/forms/model_forms.py:1453 dcim/forms/object_create.py:256 +#: dcim/tables/connections.py:22 dcim/tables/connections.py:41 +#: dcim/tables/connections.py:60 dcim/tables/devices.py:314 +#: dcim/tables/devices.py:374 dcim/tables/devices.py:418 +#: dcim/tables/devices.py:463 dcim/tables/devices.py:517 +#: dcim/tables/devices.py:609 dcim/tables/devices.py:710 +#: dcim/tables/devices.py:770 dcim/tables/devices.py:820 +#: dcim/tables/devices.py:880 dcim/tables/devices.py:932 +#: dcim/tables/devices.py:1058 dcim/tables/modules.py:52 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_import.py:303 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:532 +#: ipam/forms/model_forms.py:685 ipam/tables/vlans.py:176 +#: templates/dcim/consoleport.html:23 templates/dcim/consoleserverport.html:23 +#: templates/dcim/device.html:14 templates/dcim/device.html:128 +#: templates/dcim/device_edit.html:10 templates/dcim/devicebay.html:23 +#: templates/dcim/devicebay.html:55 templates/dcim/frontport.html:23 +#: templates/dcim/interface.html:31 templates/dcim/interface.html:167 +#: templates/dcim/inventoryitem.html:21 templates/dcim/module.html:55 +#: templates/dcim/modulebay.html:21 templates/dcim/poweroutlet.html:23 +#: templates/dcim/powerport.html:23 templates/dcim/rearport.html:23 +#: templates/dcim/virtualchassis.html:58 +#: templates/dcim/virtualchassis_edit.html:52 +#: templates/dcim/virtualdevicecontext.html:25 +#: templates/ipam/ipaddress_edit.html:42 templates/ipam/service_create.html:17 +#: templates/ipam/service_edit.html:16 +#: templates/virtualization/virtualmachine.html:115 +#: templates/vpn/l2vpntermination_edit.html:22 +#: templates/vpn/tunneltermination.html:24 +#: templates/wireless/inc/wirelesslink_interface.html:6 +#: virtualization/filtersets.py:166 virtualization/forms/bulk_edit.py:136 +#: virtualization/forms/bulk_import.py:99 +#: virtualization/forms/filtersets.py:124 +#: virtualization/forms/model_forms.py:188 +#: virtualization/tables/virtualmachines.py:61 vpn/choices.py:44 +#: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:278 +#: vpn/forms/filtersets.py:271 vpn/forms/model_forms.py:89 +#: vpn/forms/model_forms.py:124 vpn/forms/model_forms.py:237 +#: wireless/forms/model_forms.py:100 wireless/forms/model_forms.py:140 +#: wireless/tables/wirelesslan.py:75 +msgid "Device" +msgstr "Dispositivo" + +#: dcim/forms/bulk_edit.py:624 netbox/navigation/menu.py:441 +#: templates/extras/dashboard/widget_config.html:7 +msgid "Configuration" +msgstr "Configuración" + +#: dcim/forms/bulk_edit.py:638 dcim/forms/bulk_import.py:590 +#: dcim/forms/model_forms.py:569 dcim/forms/model_forms.py:795 +msgid "Module type" +msgstr "Tipo de módulo" + +#: dcim/forms/bulk_edit.py:689 dcim/forms/bulk_edit.py:874 +#: dcim/forms/bulk_edit.py:893 dcim/forms/bulk_edit.py:916 +#: dcim/forms/bulk_edit.py:958 dcim/forms/bulk_edit.py:1002 +#: dcim/forms/bulk_edit.py:1053 dcim/forms/bulk_edit.py:1080 +#: dcim/forms/bulk_edit.py:1107 dcim/forms/bulk_edit.py:1125 +#: dcim/forms/bulk_edit.py:1143 dcim/forms/filtersets.py:64 +#: dcim/forms/object_create.py:45 templates/dcim/cable.html:33 +#: templates/dcim/consoleport.html:35 templates/dcim/consoleserverport.html:35 +#: templates/dcim/devicebay.html:31 templates/dcim/frontport.html:35 +#: templates/dcim/inc/panels/inventory_items.html:11 +#: templates/dcim/interface.html:43 templates/dcim/inventoryitem.html:33 +#: templates/dcim/modulebay.html:31 templates/dcim/poweroutlet.html:35 +#: templates/dcim/powerport.html:35 templates/dcim/rearport.html:35 +#: templates/extras/customfield.html:27 templates/generic/bulk_import.html:155 +msgid "Label" +msgstr "Etiqueta" + +#: dcim/forms/bulk_edit.py:698 dcim/forms/filtersets.py:981 +#: templates/dcim/cable.html:51 +msgid "Length" +msgstr "Longitud" + +#: dcim/forms/bulk_edit.py:703 dcim/forms/bulk_import.py:1158 +#: dcim/forms/bulk_import.py:1161 dcim/forms/filtersets.py:985 +msgid "Length unit" +msgstr "Unidad de longitud" + +#: dcim/forms/bulk_edit.py:727 templates/dcim/virtualchassis.html:24 +msgid "Domain" +msgstr "Dominio" + +#: dcim/forms/bulk_edit.py:795 dcim/forms/bulk_import.py:1273 +#: dcim/forms/filtersets.py:1071 dcim/forms/model_forms.py:657 +msgid "Power panel" +msgstr "Panel de alimentación" + +#: dcim/forms/bulk_edit.py:817 dcim/forms/bulk_import.py:1309 +#: dcim/forms/filtersets.py:1093 templates/dcim/powerfeed.html:90 +msgid "Supply" +msgstr "Suministro" + +#: dcim/forms/bulk_edit.py:823 dcim/forms/bulk_import.py:1314 +#: dcim/forms/filtersets.py:1098 templates/dcim/powerfeed.html:102 +msgid "Phase" +msgstr "Fase" + +#: dcim/forms/bulk_edit.py:829 dcim/forms/filtersets.py:1103 +#: templates/dcim/powerfeed.html:94 +msgid "Voltage" +msgstr "Tensión" + +#: dcim/forms/bulk_edit.py:833 dcim/forms/filtersets.py:1107 +#: templates/dcim/powerfeed.html:98 +msgid "Amperage" +msgstr "Amperaje" + +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1111 +msgid "Max utilization" +msgstr "Utilización máxima" + +#: dcim/forms/bulk_edit.py:841 dcim/forms/bulk_edit.py:1200 +#: dcim/forms/bulk_edit.py:1217 dcim/forms/bulk_edit.py:1234 +#: dcim/forms/bulk_edit.py:1252 dcim/forms/bulk_edit.py:1340 +#: dcim/forms/bulk_edit.py:1478 dcim/forms/bulk_edit.py:1495 +msgid "Mark connected" +msgstr "Marcar conectado" + +#: dcim/forms/bulk_edit.py:926 +msgid "Maximum draw" +msgstr "Sorteo máximo" + +#: dcim/forms/bulk_edit.py:929 dcim/models/device_component_templates.py:256 +#: dcim/models/device_components.py:357 +msgid "Maximum power draw (watts)" +msgstr "Consumo máximo de energía (vatios)" + +#: dcim/forms/bulk_edit.py:932 +msgid "Allocated draw" +msgstr "Sorteo asignado" + +#: dcim/forms/bulk_edit.py:935 dcim/models/device_component_templates.py:263 +#: dcim/models/device_components.py:364 +msgid "Allocated power draw (watts)" +msgstr "Consumo de energía asignado (vatios)" + +#: dcim/forms/bulk_edit.py:968 dcim/forms/bulk_import.py:723 +#: dcim/forms/model_forms.py:848 dcim/forms/model_forms.py:1076 +#: dcim/forms/model_forms.py:1361 dcim/forms/object_import.py:60 +msgid "Power port" +msgstr "Puerto de alimentación" + +#: dcim/forms/bulk_edit.py:973 +msgid "Feed leg" +msgstr "Pierna de alimentación" + +#: dcim/forms/bulk_edit.py:1019 dcim/forms/bulk_edit.py:1325 +msgid "Management only" +msgstr "Solo administración" + +#: dcim/forms/bulk_edit.py:1029 dcim/forms/bulk_edit.py:1331 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1294 +#: dcim/forms/object_import.py:95 +#: dcim/models/device_component_templates.py:411 +#: dcim/models/device_components.py:671 +msgid "PoE mode" +msgstr "Modo PoE" + +#: dcim/forms/bulk_edit.py:1035 dcim/forms/bulk_edit.py:1337 +#: dcim/forms/bulk_import.py:819 dcim/forms/filtersets.py:1299 +#: dcim/forms/object_import.py:100 +#: dcim/models/device_component_templates.py:417 +#: dcim/models/device_components.py:677 +msgid "PoE type" +msgstr "Tipo de PoE" + +#: dcim/forms/bulk_edit.py:1041 dcim/forms/filtersets.py:1304 +#: dcim/forms/object_import.py:105 +msgid "Wireless role" +msgstr "Función inalámbrica" + +#: dcim/forms/bulk_edit.py:1178 dcim/forms/model_forms.py:588 +#: dcim/forms/model_forms.py:1019 dcim/tables/devices.py:337 +#: templates/dcim/consoleport.html:27 templates/dcim/consoleserverport.html:27 +#: templates/dcim/frontport.html:27 templates/dcim/interface.html:35 +#: templates/dcim/module.html:51 templates/dcim/modulebay.html:57 +#: templates/dcim/poweroutlet.html:27 templates/dcim/powerport.html:27 +#: templates/dcim/rearport.html:27 +msgid "Module" +msgstr "Módulo" + +#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:680 +#: templates/dcim/interface.html:113 +msgid "LAG" +msgstr "DESFASE" + +#: dcim/forms/bulk_edit.py:1310 dcim/forms/model_forms.py:1103 +msgid "Virtual device contexts" +msgstr "Contextos de dispositivos virtuales" + +#: dcim/forms/bulk_edit.py:1316 dcim/forms/bulk_import.py:651 +#: dcim/forms/bulk_import.py:677 dcim/forms/filtersets.py:1163 +#: dcim/forms/filtersets.py:1185 dcim/forms/filtersets.py:1258 +#: dcim/tables/devices.py:621 +#: templates/circuits/inc/circuit_termination.html:94 +#: templates/dcim/consoleport.html:43 templates/dcim/consoleserverport.html:43 +msgid "Speed" +msgstr "Velocidad" + +#: dcim/forms/bulk_edit.py:1345 dcim/forms/bulk_import.py:822 +#: templates/vpn/ikepolicy.html:26 templates/vpn/ipsecprofile.html:22 +#: templates/vpn/ipsecprofile.html:51 virtualization/forms/bulk_edit.py:232 +#: virtualization/forms/bulk_import.py:165 vpn/forms/bulk_edit.py:145 +#: vpn/forms/bulk_edit.py:233 vpn/forms/bulk_import.py:175 +#: vpn/forms/bulk_import.py:229 vpn/forms/filtersets.py:132 +#: vpn/forms/filtersets.py:175 vpn/forms/filtersets.py:189 +#: vpn/tables/crypto.py:64 vpn/tables/crypto.py:162 +msgid "Mode" +msgstr "Modo" + +#: dcim/forms/bulk_edit.py:1353 dcim/forms/model_forms.py:1152 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:479 +#: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:239 +#: virtualization/forms/model_forms.py:324 +msgid "VLAN group" +msgstr "Grupo de VLAN" + +#: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1157 +#: dcim/tables/devices.py:594 virtualization/forms/bulk_edit.py:247 +#: virtualization/forms/model_forms.py:329 +msgid "Untagged VLAN" +msgstr "VLAN sin etiquetar" + +#: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1166 +#: dcim/tables/devices.py:600 virtualization/forms/bulk_edit.py:255 +#: virtualization/forms/model_forms.py:338 +msgid "Tagged VLANs" +msgstr "VLAN etiquetadas" + +#: dcim/forms/bulk_edit.py:1379 dcim/forms/model_forms.py:1139 +msgid "Wireless LAN group" +msgstr "Grupo LAN inalámbrico" + +#: dcim/forms/bulk_edit.py:1384 dcim/forms/model_forms.py:1144 +#: dcim/tables/devices.py:630 netbox/navigation/menu.py:134 +#: templates/dcim/interface.html:289 wireless/tables/wirelesslan.py:24 +msgid "Wireless LANs" +msgstr "LAN inalámbricas" + +#: dcim/forms/bulk_edit.py:1393 dcim/forms/filtersets.py:1231 +#: dcim/forms/model_forms.py:1185 ipam/forms/bulk_edit.py:270 +#: ipam/forms/bulk_edit.py:361 ipam/forms/filtersets.py:166 +#: templates/dcim/interface.html:126 templates/ipam/prefix.html:96 +#: virtualization/forms/model_forms.py:352 +msgid "Addressing" +msgstr "Dirigiéndose" + +#: dcim/forms/bulk_edit.py:1394 dcim/forms/filtersets.py:651 +#: dcim/forms/model_forms.py:1186 virtualization/forms/model_forms.py:353 +msgid "Operation" +msgstr "Operación" + +#: dcim/forms/bulk_edit.py:1395 dcim/forms/filtersets.py:1232 +#: dcim/forms/model_forms.py:880 dcim/forms/model_forms.py:1188 +msgid "PoE" +msgstr "PoE" + +#: dcim/forms/bulk_edit.py:1396 dcim/forms/model_forms.py:1187 +#: templates/dcim/interface.html:101 virtualization/forms/bulk_edit.py:266 +#: virtualization/forms/model_forms.py:354 +msgid "Related Interfaces" +msgstr "Interfaces relacionadas" + +#: dcim/forms/bulk_edit.py:1397 dcim/forms/model_forms.py:1189 +#: virtualization/forms/bulk_edit.py:267 +#: virtualization/forms/model_forms.py:355 +msgid "802.1Q Switching" +msgstr "Conmutación 802.1Q" + +#: dcim/forms/bulk_edit.py:1458 dcim/forms/bulk_edit.py:1460 +msgid "Interface mode must be specified to assign VLANs" +msgstr "Se debe especificar el modo de interfaz para asignar las VLAN" + +#: dcim/forms/bulk_edit.py:1465 dcim/forms/common.py:50 +msgid "An access interface cannot have tagged VLANs assigned." +msgstr "Una interfaz de acceso no puede tener asignadas VLAN etiquetadas." + +#: dcim/forms/bulk_import.py:63 +msgid "Name of parent region" +msgstr "Nombre de la región principal" + +#: dcim/forms/bulk_import.py:77 +msgid "Name of parent site group" +msgstr "Nombre del grupo de sitios principal" + +#: dcim/forms/bulk_import.py:96 +msgid "Assigned region" +msgstr "Región asignada" + +#: dcim/forms/bulk_import.py:103 tenancy/forms/bulk_import.py:44 +#: tenancy/forms/bulk_import.py:85 wireless/forms/bulk_import.py:40 +msgid "Assigned group" +msgstr "Grupo asignado" + +#: dcim/forms/bulk_import.py:122 +msgid "available options" +msgstr "opciones disponibles" + +#: dcim/forms/bulk_import.py:133 dcim/forms/bulk_import.py:480 +#: dcim/forms/bulk_import.py:1270 ipam/forms/bulk_import.py:174 +#: ipam/forms/bulk_import.py:441 virtualization/forms/bulk_import.py:63 +#: virtualization/forms/bulk_import.py:89 +msgid "Assigned site" +msgstr "Sitio asignado" + +#: dcim/forms/bulk_import.py:140 +msgid "Parent location" +msgstr "Ubicación de los padres" + +#: dcim/forms/bulk_import.py:142 +msgid "Location not found." +msgstr "No se encontró la ubicación." + +#: dcim/forms/bulk_import.py:191 +msgid "Name of assigned tenant" +msgstr "Nombre del inquilino asignado" + +#: dcim/forms/bulk_import.py:203 +msgid "Name of assigned role" +msgstr "Nombre de la función asignada" + +#: dcim/forms/bulk_import.py:209 +msgid "Rack type" +msgstr "Tipo de bastidor" + +#: dcim/forms/bulk_import.py:214 +msgid "Rail-to-rail width (in inches)" +msgstr "Ancho de raíl a raíl (en pulgadas)" + +#: dcim/forms/bulk_import.py:220 +msgid "Unit for outer dimensions" +msgstr "Unidad para dimensiones exteriores" + +#: dcim/forms/bulk_import.py:226 +msgid "Unit for rack weights" +msgstr "Unidad para pesas de cremallera" + +#: dcim/forms/bulk_import.py:252 +msgid "Parent site" +msgstr "Sitio para padres" + +#: dcim/forms/bulk_import.py:259 dcim/forms/bulk_import.py:1283 +msgid "Rack's location (if any)" +msgstr "Ubicación del bastidor (si existe)" + +#: dcim/forms/bulk_import.py:268 dcim/forms/model_forms.py:246 +#: dcim/tables/racks.py:153 templates/dcim/rackreservation.html:12 +#: templates/dcim/rackreservation.html:52 +msgid "Units" +msgstr "Unidades" + +#: dcim/forms/bulk_import.py:271 +msgid "Comma-separated list of individual unit numbers" +msgstr "Lista separada por comas de números de unidades individuales" + +#: dcim/forms/bulk_import.py:314 +msgid "The manufacturer which produces this device type" +msgstr "El fabricante que produce este tipo de dispositivo" + +#: dcim/forms/bulk_import.py:321 +msgid "The default platform for devices of this type (optional)" +msgstr "" +"La plataforma predeterminada para dispositivos de este tipo (opcional)" + +#: dcim/forms/bulk_import.py:326 +msgid "Device weight" +msgstr "Peso del dispositivo" + +#: dcim/forms/bulk_import.py:332 +msgid "Unit for device weight" +msgstr "Unidad para el peso del dispositivo" + +#: dcim/forms/bulk_import.py:352 +msgid "Module weight" +msgstr "Peso del módulo" + +#: dcim/forms/bulk_import.py:358 +msgid "Unit for module weight" +msgstr "Unidad para el peso del módulo" + +#: dcim/forms/bulk_import.py:391 +msgid "Limit platform assignments to this manufacturer" +msgstr "Limite las asignaciones de plataforma a este fabricante" + +#: dcim/forms/bulk_import.py:413 tenancy/forms/bulk_import.py:106 +msgid "Assigned role" +msgstr "Función asignada" + +#: dcim/forms/bulk_import.py:426 +msgid "Device type manufacturer" +msgstr "Fabricante del tipo de dispositivo" + +#: dcim/forms/bulk_import.py:432 +msgid "Device type model" +msgstr "Modelo de tipo de dispositivo" + +#: dcim/forms/bulk_import.py:439 virtualization/forms/bulk_import.py:126 +msgid "Assigned platform" +msgstr "Plataforma asignada" + +#: dcim/forms/bulk_import.py:447 dcim/forms/bulk_import.py:451 +#: dcim/forms/model_forms.py:461 +msgid "Virtual chassis" +msgstr "Chasis virtual" + +#: dcim/forms/bulk_import.py:454 dcim/forms/model_forms.py:450 +#: dcim/tables/devices.py:231 extras/filtersets.py:501 +#: extras/forms/filtersets.py:330 ipam/forms/bulk_edit.py:478 +#: ipam/forms/model_forms.py:588 templates/dcim/device.html:239 +#: templates/virtualization/cluster.html:11 +#: templates/virtualization/virtualmachine.html:92 +#: templates/virtualization/virtualmachine.html:102 +#: virtualization/filtersets.py:156 virtualization/filtersets.py:271 +#: virtualization/forms/bulk_edit.py:128 +#: virtualization/forms/bulk_import.py:92 +#: virtualization/forms/filtersets.py:98 +#: virtualization/forms/filtersets.py:119 +#: virtualization/forms/filtersets.py:196 +#: virtualization/forms/model_forms.py:82 +#: virtualization/forms/model_forms.py:179 +#: virtualization/tables/virtualmachines.py:57 +msgid "Cluster" +msgstr "Clúster" + +#: dcim/forms/bulk_import.py:458 +msgid "Virtualization cluster" +msgstr "Clúster de virtualización" + +#: dcim/forms/bulk_import.py:487 +msgid "Assigned location (if any)" +msgstr "Ubicación asignada (si la hay)" + +#: dcim/forms/bulk_import.py:494 +msgid "Assigned rack (if any)" +msgstr "Bastidor asignado (si lo hay)" + +#: dcim/forms/bulk_import.py:497 +msgid "Face" +msgstr "Cara" + +#: dcim/forms/bulk_import.py:500 +msgid "Mounted rack face" +msgstr "Cara de bastidor montada" + +#: dcim/forms/bulk_import.py:507 +msgid "Parent device (for child devices)" +msgstr "Dispositivo principal (para dispositivos infantiles)" + +#: dcim/forms/bulk_import.py:510 +msgid "Device bay" +msgstr "Compartimento para dispositivos" + +#: dcim/forms/bulk_import.py:514 +msgid "Device bay in which this device is installed (for child devices)" +msgstr "" +"Compartimento de dispositivos en el que está instalado este dispositivo " +"(para dispositivos infantiles)" + +#: dcim/forms/bulk_import.py:520 +msgid "Airflow direction" +msgstr "Dirección del flujo de aire" + +#: dcim/forms/bulk_import.py:581 +msgid "The device in which this module is installed" +msgstr "El dispositivo en el que está instalado este módulo" + +#: dcim/forms/bulk_import.py:584 dcim/forms/model_forms.py:562 +msgid "Module bay" +msgstr "Compartimento de módulos" + +#: dcim/forms/bulk_import.py:587 +msgid "The module bay in which this module is installed" +msgstr "El compartimiento del módulo en el que está instalado este módulo" + +#: dcim/forms/bulk_import.py:593 +msgid "The type of module" +msgstr "El tipo de módulo" + +#: dcim/forms/bulk_import.py:601 dcim/forms/model_forms.py:575 +msgid "Replicate components" +msgstr "Replicar componentes" + +#: dcim/forms/bulk_import.py:603 +msgid "" +"Automatically populate components associated with this module type (enabled " +"by default)" +msgstr "" +"Rellenar automáticamente los componentes asociados a este tipo de módulo " +"(activado de forma predeterminada)" + +#: dcim/forms/bulk_import.py:606 dcim/forms/model_forms.py:581 +msgid "Adopt components" +msgstr "Adopte componentes" + +#: dcim/forms/bulk_import.py:608 dcim/forms/model_forms.py:584 +msgid "Adopt already existing components" +msgstr "Adopte los componentes ya existentes" + +#: dcim/forms/bulk_import.py:648 dcim/forms/bulk_import.py:674 +#: dcim/forms/bulk_import.py:700 +msgid "Port type" +msgstr "Tipo de puerto" + +#: dcim/forms/bulk_import.py:656 dcim/forms/bulk_import.py:682 +msgid "Port speed in bps" +msgstr "Velocidad de puerto en bps" + +#: dcim/forms/bulk_import.py:720 +msgid "Outlet type" +msgstr "Tipo de toma" + +#: dcim/forms/bulk_import.py:727 +msgid "Local power port which feeds this outlet" +msgstr "Puerto de alimentación local que alimenta esta toma" + +#: dcim/forms/bulk_import.py:730 +msgid "Feed lag" +msgstr "Retraso de alimentación" + +#: dcim/forms/bulk_import.py:733 +msgid "Electrical phase (for three-phase circuits)" +msgstr "Fase eléctrica (para circuitos trifásicos)" + +#: dcim/forms/bulk_import.py:774 dcim/forms/model_forms.py:1114 +#: virtualization/forms/bulk_import.py:155 +#: virtualization/forms/model_forms.py:308 +msgid "Parent interface" +msgstr "Interfaz principal" + +#: dcim/forms/bulk_import.py:781 dcim/forms/model_forms.py:1122 +#: virtualization/forms/bulk_import.py:162 +#: virtualization/forms/model_forms.py:316 +msgid "Bridged interface" +msgstr "Interfaz puenteada" + +#: dcim/forms/bulk_import.py:784 +msgid "Lag" +msgstr "Retraso" + +#: dcim/forms/bulk_import.py:788 +msgid "Parent LAG interface" +msgstr "Interfaz LAG principal" + +#: dcim/forms/bulk_import.py:791 +msgid "Vdcs" +msgstr "VDC" + +#: dcim/forms/bulk_import.py:796 +msgid "VDC names separated by commas, encased with double quotes. Example:" +msgstr "" +"Los nombres de los VDC están separados por comas y entre comillas dobles. " +"Ejemplo:" + +#: dcim/forms/bulk_import.py:802 +msgid "Physical medium" +msgstr "Medio físico" + +#: dcim/forms/bulk_import.py:805 dcim/forms/filtersets.py:1265 +msgid "Duplex" +msgstr "Dúplex" + +#: dcim/forms/bulk_import.py:810 +msgid "Poe mode" +msgstr "Modo Poe" + +#: dcim/forms/bulk_import.py:816 +msgid "Poe type" +msgstr "Tipo de Poe" + +#: dcim/forms/bulk_import.py:825 virtualization/forms/bulk_import.py:168 +msgid "IEEE 802.1Q operational mode (for L2 interfaces)" +msgstr "Modo operativo IEEE 802.1Q (para interfaces L2)" + +#: dcim/forms/bulk_import.py:832 ipam/forms/bulk_import.py:160 +#: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:322 virtualization/forms/bulk_import.py:175 +msgid "Assigned VRF" +msgstr "VRF asignado" + +#: dcim/forms/bulk_import.py:835 +msgid "Rf role" +msgstr "Rol RF" + +#: dcim/forms/bulk_import.py:838 +msgid "Wireless role (AP/station)" +msgstr "Función inalámbrica (AP/estación)" + +#: dcim/forms/bulk_import.py:884 dcim/forms/model_forms.py:893 +#: dcim/forms/model_forms.py:1369 dcim/forms/object_import.py:122 +msgid "Rear port" +msgstr "Puerto trasero" + +#: dcim/forms/bulk_import.py:887 +msgid "Corresponding rear port" +msgstr "Puerto trasero correspondiente" + +#: dcim/forms/bulk_import.py:892 dcim/forms/bulk_import.py:933 +#: dcim/forms/bulk_import.py:1148 +msgid "Physical medium classification" +msgstr "Clasificación de medios físicos" + +#: dcim/forms/bulk_import.py:961 dcim/tables/devices.py:841 +msgid "Installed device" +msgstr "Dispositivo instalado" + +#: dcim/forms/bulk_import.py:965 +msgid "Child device installed within this bay" +msgstr "Dispositivo infantil instalado en esta bahía" + +#: dcim/forms/bulk_import.py:967 +msgid "Child device not found." +msgstr "No se encontró el dispositivo infantil." + +#: dcim/forms/bulk_import.py:1025 +msgid "Parent inventory item" +msgstr "Artículo del inventario principal" + +#: dcim/forms/bulk_import.py:1028 +msgid "Component type" +msgstr "Tipo de componente" + +#: dcim/forms/bulk_import.py:1032 +msgid "Component Type" +msgstr "Tipo de componente" + +#: dcim/forms/bulk_import.py:1035 +msgid "Compnent name" +msgstr "Nombre del componente" + +#: dcim/forms/bulk_import.py:1037 +msgid "Component Name" +msgstr "Nombre del componente" + +#: dcim/forms/bulk_import.py:1103 +msgid "Side A device" +msgstr "Dispositivo del lado A" + +#: dcim/forms/bulk_import.py:1106 dcim/forms/bulk_import.py:1124 +msgid "Device name" +msgstr "Nombre del dispositivo" + +#: dcim/forms/bulk_import.py:1109 +msgid "Side A type" +msgstr "Tipo de lado A" + +#: dcim/forms/bulk_import.py:1112 dcim/forms/bulk_import.py:1130 +msgid "Termination type" +msgstr "Tipo de terminación" + +#: dcim/forms/bulk_import.py:1115 +msgid "Side A name" +msgstr "Nombre de la cara A" + +#: dcim/forms/bulk_import.py:1116 dcim/forms/bulk_import.py:1134 +msgid "Termination name" +msgstr "Nombre de terminación" + +#: dcim/forms/bulk_import.py:1121 +msgid "Side B device" +msgstr "Dispositivo Side B" + +#: dcim/forms/bulk_import.py:1127 +msgid "Side B type" +msgstr "Tipo de lado B" + +#: dcim/forms/bulk_import.py:1133 +msgid "Side B name" +msgstr "Nombre de la cara B" + +#: dcim/forms/bulk_import.py:1142 wireless/forms/bulk_import.py:86 +msgid "Connection status" +msgstr "Estado de conexión" + +#: dcim/forms/bulk_import.py:1221 dcim/forms/model_forms.py:689 +#: dcim/tables/devices.py:1028 templates/dcim/device.html:130 +#: templates/dcim/virtualchassis.html:28 templates/dcim/virtualchassis.html:60 +msgid "Master" +msgstr "Maestro" + +#: dcim/forms/bulk_import.py:1225 +msgid "Master device" +msgstr "Dispositivo maestro" + +#: dcim/forms/bulk_import.py:1242 +msgid "Name of parent site" +msgstr "Nombre del sitio principal" + +#: dcim/forms/bulk_import.py:1276 +msgid "Upstream power panel" +msgstr "Panel de alimentación ascendente" + +#: dcim/forms/bulk_import.py:1306 +msgid "Primary or redundant" +msgstr "Primario o redundante" + +#: dcim/forms/bulk_import.py:1311 +msgid "Supply type (AC/DC)" +msgstr "Tipo de alimentación (AC/DC)" + +#: dcim/forms/bulk_import.py:1316 +msgid "Single or three-phase" +msgstr "Monofásico o trifásico" + +#: dcim/forms/common.py:24 dcim/models/device_components.py:528 +#: templates/dcim/interface.html:58 +#: templates/virtualization/vminterface.html:58 +#: virtualization/forms/bulk_edit.py:224 +msgid "MTU" +msgstr "MUT" + +#: dcim/forms/common.py:65 +#, python-brace-format +msgid "" +"The tagged VLANs ({vlans}) must belong to the same site as the interface's " +"parent device/VM, or they must be global" +msgstr "" +"Las VLAN etiquetadas ({vlans}) deben pertenecer al mismo sitio que el " +"dispositivo o máquina virtual principal de la interfaz o deben ser globales" + +#: dcim/forms/common.py:110 +msgid "" +"Cannot install module with placeholder values in a module bay with no " +"position defined." +msgstr "" +"No se puede instalar el módulo con valores de marcador de posición en un " +"compartimento de módulos sin una posición definida." + +#: dcim/forms/common.py:119 +#, python-brace-format +msgid "Cannot adopt {model} {name} as it already belongs to a module" +msgstr "No puede adoptar {model} {name} porque ya pertenece a un módulo" + +#: dcim/forms/common.py:128 +#, python-brace-format +msgid "A {model} named {name} already exists" +msgstr "UN {model} llamado {name} ya existe" + +#: dcim/forms/connections.py:45 dcim/tables/power.py:66 +#: templates/dcim/inc/cable_termination.html:37 +#: templates/dcim/powerfeed.html:27 templates/dcim/powerpanel.html:19 +#: templates/dcim/trace/powerpanel.html:4 +msgid "Power Panel" +msgstr "Panel de alimentación" + +#: dcim/forms/connections.py:54 dcim/forms/model_forms.py:670 +#: templates/dcim/powerfeed.html:22 templates/dcim/powerport.html:84 +msgid "Power Feed" +msgstr "Alimentación eléctrica" + +#: dcim/forms/connections.py:74 +msgid "Side" +msgstr "Lado" + +#: dcim/forms/filtersets.py:141 +msgid "Parent region" +msgstr "Región principal" + +#: dcim/forms/filtersets.py:155 tenancy/forms/bulk_import.py:28 +#: tenancy/forms/bulk_import.py:62 tenancy/forms/filtersets.py:32 +#: tenancy/forms/filtersets.py:61 wireless/forms/bulk_import.py:25 +#: wireless/forms/filtersets.py:24 +msgid "Parent group" +msgstr "Grupo de padres" + +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:331 +msgid "Function" +msgstr "Función" + +#: dcim/forms/filtersets.py:418 dcim/forms/model_forms.py:308 +#: templates/inc/panels/image_attachments.html:5 +msgid "Images" +msgstr "Imágenes" + +#: dcim/forms/filtersets.py:419 dcim/forms/filtersets.py:544 +#: dcim/forms/filtersets.py:655 +msgid "Components" +msgstr "Componentes" + +#: dcim/forms/filtersets.py:441 +msgid "Subdevice role" +msgstr "Función de subdispositivo" + +#: dcim/forms/filtersets.py:717 +msgid "Model" +msgstr "modelo" + +#: dcim/forms/filtersets.py:768 +msgid "Virtual chassis member" +msgstr "Miembro del chasis virtual" + +#: dcim/forms/filtersets.py:1123 +msgid "Cabled" +msgstr "Cableado" + +#: dcim/forms/filtersets.py:1130 +msgid "Occupied" +msgstr "Ocupado" + +#: dcim/forms/filtersets.py:1155 dcim/forms/filtersets.py:1177 +#: dcim/forms/filtersets.py:1199 dcim/forms/filtersets.py:1216 +#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:367 +#: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:59 +#: templates/dcim/frontport.html:74 templates/dcim/interface.html:146 +#: templates/dcim/powerfeed.html:118 templates/dcim/poweroutlet.html:63 +#: templates/dcim/powerport.html:63 templates/dcim/rearport.html:70 +msgid "Connection" +msgstr "Conexión" + +#: dcim/forms/filtersets.py:1245 dcim/forms/model_forms.py:1477 +#: templates/dcim/virtualdevicecontext.html:16 +msgid "Virtual Device Context" +msgstr "Contexto de dispositivo virtual" + +#: dcim/forms/filtersets.py:1248 extras/forms/bulk_edit.py:315 +#: extras/forms/bulk_import.py:239 extras/forms/filtersets.py:479 +#: extras/forms/model_forms.py:548 extras/tables/tables.py:482 +#: templates/extras/journalentry.html:33 +msgid "Kind" +msgstr "Amable" + +#: dcim/forms/filtersets.py:1277 +msgid "Mgmt only" +msgstr "Solo administración" + +#: dcim/forms/filtersets.py:1289 dcim/forms/model_forms.py:1180 +#: dcim/models/device_components.py:630 templates/dcim/interface.html:134 +msgid "WWN" +msgstr "WWN" + +#: dcim/forms/filtersets.py:1309 +msgid "Wireless channel" +msgstr "Canal inalámbrico" + +#: dcim/forms/filtersets.py:1313 +msgid "Channel frequency (MHz)" +msgstr "Frecuencia de canal (MHz)" + +#: dcim/forms/filtersets.py:1317 +msgid "Channel width (MHz)" +msgstr "Ancho de canal (MHz)" + +#: dcim/forms/filtersets.py:1321 templates/dcim/interface.html:86 +msgid "Transmit power (dBm)" +msgstr "Potencia de transmisión (dBm)" + +#: dcim/forms/filtersets.py:1344 dcim/forms/filtersets.py:1366 +#: dcim/tables/devices.py:344 templates/dcim/cable.html:12 +#: templates/dcim/cable_edit.html:46 templates/dcim/cable_trace.html:43 +#: templates/dcim/frontport.html:84 +#: templates/dcim/inc/connection_endpoints.html:4 +#: templates/dcim/rearport.html:80 templates/dcim/trace/cable.html:7 +msgid "Cable" +msgstr "Cable" + +#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:951 +msgid "Discovered" +msgstr "Descubierto" + +#: dcim/forms/formsets.py:20 +#, python-brace-format +msgid "A virtual chassis member already exists in position {vc_position}." +msgstr "Ya existe un miembro del chasis virtual en posición {vc_position}." + +#: dcim/forms/model_forms.py:101 dcim/tables/devices.py:183 +#: templates/dcim/sitegroup.html:26 +msgid "Site Group" +msgstr "Grupo de sitios" + +#: dcim/forms/model_forms.py:142 +msgid "Contact Info" +msgstr "Información de contacto" + +#: dcim/forms/model_forms.py:197 templates/dcim/rackrole.html:20 +msgid "Rack Role" +msgstr "Rol de bastidor" + +#: dcim/forms/model_forms.py:248 +msgid "" +"Comma-separated list of numeric unit IDs. A range may be specified using a " +"hyphen." +msgstr "" +"Lista de identificadores de unidades numéricas separados por comas. Se puede" +" especificar un rango mediante un guión." + +#: dcim/forms/model_forms.py:259 dcim/tables/racks.py:133 +msgid "Reservation" +msgstr "Reservación" + +#: dcim/forms/model_forms.py:297 dcim/forms/model_forms.py:380 +#: utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Babosa" + +#: dcim/forms/model_forms.py:304 templates/dcim/devicetype.html:12 +msgid "Chassis" +msgstr "Chasis" + +#: dcim/forms/model_forms.py:356 templates/dcim/devicerole.html:24 +msgid "Device Role" +msgstr "Función del dispositivo" + +#: dcim/forms/model_forms.py:424 dcim/models/devices.py:632 +msgid "The lowest-numbered unit occupied by the device" +msgstr "La unidad con el número más bajo ocupado por el dispositivo" + +#: dcim/forms/model_forms.py:469 +msgid "The position in the virtual chassis this device is identified by" +msgstr "" +"La posición en el chasis virtual por la que se identifica este dispositivo" + +#: dcim/forms/model_forms.py:473 templates/dcim/device.html:131 +#: templates/dcim/virtualchassis.html:61 +#: templates/dcim/virtualchassis_edit.html:57 +#: templates/ipam/inc/panels/fhrp_groups.html:13 +#: tenancy/forms/bulk_edit.py:146 tenancy/forms/filtersets.py:109 +msgid "Priority" +msgstr "Prioridad" + +#: dcim/forms/model_forms.py:474 +msgid "The priority of the device in the virtual chassis" +msgstr "La prioridad del dispositivo en el chasis virtual" + +#: dcim/forms/model_forms.py:578 +msgid "Automatically populate components associated with this module type" +msgstr "" +"Rellenar automáticamente los componentes asociados a este tipo de módulo" + +#: dcim/forms/model_forms.py:623 +msgid "Maximum length is 32767 (any unit)" +msgstr "La longitud máxima es 32767 (cualquier unidad)" + +#: dcim/forms/model_forms.py:671 +msgid "Characteristics" +msgstr "Características" + +#: dcim/forms/model_forms.py:1130 +msgid "LAG interface" +msgstr "Interfaz LAG" + +#: dcim/forms/model_forms.py:1184 dcim/forms/model_forms.py:1345 +#: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 +#: ipam/forms/model_forms.py:270 ipam/forms/model_forms.py:279 +#: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 +#: templates/circuits/inc/circuit_termination.html:78 +#: templates/dcim/frontport.html:113 templates/dcim/interface.html:27 +#: templates/dcim/interface.html:190 templates/dcim/interface.html:322 +#: templates/dcim/inventoryitem_edit.html:54 templates/dcim/rearport.html:109 +#: templates/ipam/fhrpgroupassignment_edit.html:11 +#: templates/virtualization/vminterface.html:19 +#: templates/vpn/tunneltermination.html:32 +#: templates/wireless/inc/wirelesslink_interface.html:10 +#: templates/wireless/wirelesslink.html:10 +#: templates/wireless/wirelesslink.html:49 +#: virtualization/forms/model_forms.py:351 vpn/forms/bulk_import.py:292 +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/forms/model_forms.py:430 +#: vpn/forms/model_forms.py:439 vpn/tables/tunnels.py:87 +#: wireless/forms/model_forms.py:112 wireless/forms/model_forms.py:152 +msgid "Interface" +msgstr "Interfaz" + +#: dcim/forms/model_forms.py:1278 +msgid "Child Device" +msgstr "Dispositivo infantil" + +#: dcim/forms/model_forms.py:1279 +msgid "" +"Child devices must first be created and assigned to the site and rack of the" +" parent device." +msgstr "" +"Los dispositivos secundarios primero deben crearse y asignarse al sitio y al" +" rack del dispositivo principal." + +#: dcim/forms/model_forms.py:1321 +msgid "Console port" +msgstr "Puerto de consola" + +#: dcim/forms/model_forms.py:1329 +msgid "Console server port" +msgstr "Puerto de servidor de consola" + +#: dcim/forms/model_forms.py:1337 +msgid "Front port" +msgstr "Puerto frontal" + +#: dcim/forms/model_forms.py:1353 +msgid "Power outlet" +msgstr "toma de corriente" + +#: dcim/forms/model_forms.py:1373 templates/dcim/inventoryitem.html:17 +#: templates/dcim/inventoryitem_edit.html:10 +msgid "Inventory Item" +msgstr "Artículo de inventario" + +#: dcim/forms/model_forms.py:1425 +msgid "An InventoryItem can only be assigned to a single component." +msgstr "Un InventoryItem solo se puede asignar a un único componente." + +#: dcim/forms/model_forms.py:1439 templates/dcim/inventoryitemrole.html:15 +msgid "Inventory Item Role" +msgstr "Función del artículo de inventario" + +#: dcim/forms/model_forms.py:1459 templates/dcim/device.html:195 +#: templates/dcim/virtualdevicecontext.html:33 +#: templates/virtualization/virtualmachine.html:51 +msgid "Primary IPv4" +msgstr "IPv4 principal" + +#: dcim/forms/model_forms.py:1468 templates/dcim/device.html:211 +#: templates/dcim/virtualdevicecontext.html:44 +#: templates/virtualization/virtualmachine.html:67 +msgid "Primary IPv6" +msgstr "IPv6 principal" + +#: dcim/forms/object_create.py:47 dcim/forms/object_create.py:198 +#: dcim/forms/object_create.py:354 +msgid "" +"Alphanumeric ranges are supported. (Must match the number of objects being " +"created.)" +msgstr "" +"Se admiten los rangos alfanuméricos. (Debe coincidir con el número de " +"objetos que se están creando)." + +#: dcim/forms/object_create.py:67 +#, python-brace-format +msgid "" +"The provided pattern specifies {value_count} values, but {pattern_count} are" +" expected." +msgstr "" +"El patrón proporcionado especifica {value_count} valores, pero " +"{pattern_count} se esperan." + +#: dcim/forms/object_create.py:109 dcim/forms/object_create.py:270 +#: dcim/tables/devices.py:281 +msgid "Rear ports" +msgstr "Puertos traseros" + +#: dcim/forms/object_create.py:110 dcim/forms/object_create.py:271 +msgid "Select one rear port assignment for each front port being created." +msgstr "" +"Seleccione una asignación de puerto posterior para cada puerto frontal que " +"se vaya a crear." + +#: dcim/forms/object_create.py:163 +#, python-brace-format +msgid "" +"The number of front port templates to be created ({frontport_count}) must " +"match the selected number of rear port positions ({rearport_count})." +msgstr "" +"El número de plantillas de puertos frontales que se van a crear " +"({frontport_count}) debe coincidir con el número seleccionado de posiciones " +"de los puertos traseros ({rearport_count})." + +#: dcim/forms/object_create.py:250 +#, python-brace-format +msgid "" +"The string {module} will be replaced with the position of the " +"assigned module, if any." +msgstr "" +"La cadena {module} se sustituirá por la posición del módulo " +"asignado, si lo hubiera." + +#: dcim/forms/object_create.py:319 +#, python-brace-format +msgid "" +"The number of front ports to be created ({frontport_count}) must match the " +"selected number of rear port positions ({rearport_count})." +msgstr "" +"El número de puertos frontales que se van a crear ({frontport_count}) debe " +"coincidir con el número seleccionado de posiciones de los puertos traseros " +"({rearport_count})." + +#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1034 +#: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:54 +#: templates/dcim/virtualchassis_edit.html:48 templates/ipam/fhrpgroup.html:39 +msgid "Members" +msgstr "Miembros" + +#: dcim/forms/object_create.py:417 +msgid "Initial position" +msgstr "Posición inicial" + +#: dcim/forms/object_create.py:420 +msgid "" +"Position of the first member device. Increases by one for each additional " +"member." +msgstr "" +"Posición del primer dispositivo miembro. Aumenta en uno por cada miembro " +"adicional." + +#: dcim/forms/object_create.py:434 +msgid "A position must be specified for the first VC member." +msgstr "Se debe especificar un puesto para el primer miembro del VC." + +#: dcim/models/cables.py:62 dcim/models/device_component_templates.py:55 +#: dcim/models/device_components.py:63 extras/models/customfields.py:108 +msgid "label" +msgstr "etiqueta" + +#: dcim/models/cables.py:71 +msgid "length" +msgstr "longitud" + +#: dcim/models/cables.py:78 +msgid "length unit" +msgstr "unidad de longitud" + +#: dcim/models/cables.py:93 +msgid "cable" +msgstr "cable" + +#: dcim/models/cables.py:94 +msgid "cables" +msgstr "cables" + +#: dcim/models/cables.py:190 +msgid "A and B terminations cannot connect to the same object." +msgstr "Las terminaciones A y B no pueden conectarse al mismo objeto." + +#: dcim/models/cables.py:257 ipam/models/asns.py:37 +msgid "end" +msgstr "fin" + +#: dcim/models/cables.py:310 +msgid "cable termination" +msgstr "terminación de cable" + +#: dcim/models/cables.py:311 +msgid "cable terminations" +msgstr "terminaciones de cables" + +#: dcim/models/cables.py:434 extras/models/configs.py:50 +msgid "is active" +msgstr "está activo" + +#: dcim/models/cables.py:438 +msgid "is complete" +msgstr "está completo" + +#: dcim/models/cables.py:442 +msgid "is split" +msgstr "está dividido" + +#: dcim/models/cables.py:450 +msgid "cable path" +msgstr "ruta de cable" + +#: dcim/models/cables.py:451 +msgid "cable paths" +msgstr "rutas de cable" + +#: dcim/models/device_component_templates.py:46 +#, python-brace-format +msgid "" +"{module} is accepted as a substitution for the module bay position when " +"attached to a module type." +msgstr "" +"{module} se acepta como sustituto de la posición del compartimiento del " +"módulo cuando se conecta a un tipo de módulo." + +#: dcim/models/device_component_templates.py:58 +#: dcim/models/device_components.py:66 +msgid "Physical label" +msgstr "Etiqueta física" + +#: dcim/models/device_component_templates.py:103 +msgid "Component templates cannot be moved to a different device type." +msgstr "" +"Las plantillas de componentes no se pueden mover a un tipo de dispositivo " +"diferente." + +#: dcim/models/device_component_templates.py:154 +msgid "" +"A component template cannot be associated with both a device type and a " +"module type." +msgstr "" +"Una plantilla de componente no se puede asociar a un tipo de dispositivo ni " +"a un tipo de módulo." + +#: dcim/models/device_component_templates.py:158 +msgid "" +"A component template must be associated with either a device type or a " +"module type." +msgstr "" +"Una plantilla de componente debe estar asociada a un tipo de dispositivo o a" +" un tipo de módulo." + +#: dcim/models/device_component_templates.py:186 +msgid "console port template" +msgstr "plantilla de puerto de consola" + +#: dcim/models/device_component_templates.py:187 +msgid "console port templates" +msgstr "plantillas de puertos de consola" + +#: dcim/models/device_component_templates.py:220 +msgid "console server port template" +msgstr "plantilla de puerto de servidor de consola" + +#: dcim/models/device_component_templates.py:221 +msgid "console server port templates" +msgstr "plantillas de puertos de servidor de consola" + +#: dcim/models/device_component_templates.py:252 +#: dcim/models/device_components.py:353 +msgid "maximum draw" +msgstr "sorteo máximo" + +#: dcim/models/device_component_templates.py:259 +#: dcim/models/device_components.py:360 +msgid "allocated draw" +msgstr "sorteo asignado" + +#: dcim/models/device_component_templates.py:269 +msgid "power port template" +msgstr "plantilla de puerto de alimentación" + +#: dcim/models/device_component_templates.py:270 +msgid "power port templates" +msgstr "plantillas de puertos de alimentación" + +#: dcim/models/device_component_templates.py:289 +#: dcim/models/device_components.py:383 +#, python-brace-format +msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." +msgstr "" +"El sorteo asignado no puede superar el sorteo máximo ({maximum_draw}W)." + +#: dcim/models/device_component_templates.py:321 +#: dcim/models/device_components.py:478 +msgid "feed leg" +msgstr "pierna de alimentación" + +#: dcim/models/device_component_templates.py:325 +#: dcim/models/device_components.py:482 +msgid "Phase (for three-phase feeds)" +msgstr "Fase (para alimentaciones trifásicas)" + +#: dcim/models/device_component_templates.py:331 +msgid "power outlet template" +msgstr "plantilla de toma de corriente" + +#: dcim/models/device_component_templates.py:332 +msgid "power outlet templates" +msgstr "plantillas de tomas de corriente" + +#: dcim/models/device_component_templates.py:341 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same device type" +msgstr "" +"Puerto de alimentación principal ({power_port}) debe pertenecer al mismo " +"tipo de dispositivo" + +#: dcim/models/device_component_templates.py:345 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same module type" +msgstr "" +"Puerto de alimentación principal ({power_port}) debe pertenecer al mismo " +"tipo de módulo" + +#: dcim/models/device_component_templates.py:397 +#: dcim/models/device_components.py:612 +msgid "management only" +msgstr "solo administración" + +#: dcim/models/device_component_templates.py:405 +#: dcim/models/device_components.py:551 +msgid "bridge interface" +msgstr "interfaz de puente" + +#: dcim/models/device_component_templates.py:423 +#: dcim/models/device_components.py:637 +msgid "wireless role" +msgstr "función inalámbrica" + +#: dcim/models/device_component_templates.py:429 +msgid "interface template" +msgstr "plantilla de interfaz" + +#: dcim/models/device_component_templates.py:430 +msgid "interface templates" +msgstr "plantillas de interfaz" + +#: dcim/models/device_component_templates.py:437 +#: dcim/models/device_components.py:805 +#: virtualization/models/virtualmachines.py:398 +msgid "An interface cannot be bridged to itself." +msgstr "Una interfaz no se puede conectar a sí misma." + +#: dcim/models/device_component_templates.py:440 +#, python-brace-format +msgid "Bridge interface ({bridge}) must belong to the same device type" +msgstr "" +"Interfaz de puente ({bridge}) debe pertenecer al mismo tipo de dispositivo" + +#: dcim/models/device_component_templates.py:444 +#, python-brace-format +msgid "Bridge interface ({bridge}) must belong to the same module type" +msgstr "Interfaz de puente ({bridge}) debe pertenecer al mismo tipo de módulo" + +#: dcim/models/device_component_templates.py:500 +#: dcim/models/device_components.py:985 +msgid "rear port position" +msgstr "posición del puerto trasero" + +#: dcim/models/device_component_templates.py:525 +msgid "front port template" +msgstr "plantilla de puerto frontal" + +#: dcim/models/device_component_templates.py:526 +msgid "front port templates" +msgstr "plantillas de puertos frontales" + +#: dcim/models/device_component_templates.py:536 +#, python-brace-format +msgid "Rear port ({name}) must belong to the same device type" +msgstr "Puerto trasero ({name}) debe pertenecer al mismo tipo de dispositivo" + +#: dcim/models/device_component_templates.py:542 +#, python-brace-format +msgid "" +"Invalid rear port position ({position}); rear port {name} has only {count} " +"positions" +msgstr "" +"Posición del puerto trasero no válida ({position}); puerto trasero {name} " +"solo tiene {count} posiciones" + +#: dcim/models/device_component_templates.py:595 +#: dcim/models/device_components.py:1054 +msgid "positions" +msgstr "posiciones" + +#: dcim/models/device_component_templates.py:606 +msgid "rear port template" +msgstr "plantilla de puerto trasero" + +#: dcim/models/device_component_templates.py:607 +msgid "rear port templates" +msgstr "plantillas de puertos traseros" + +#: dcim/models/device_component_templates.py:636 +#: dcim/models/device_components.py:1095 +msgid "position" +msgstr "posición" + +#: dcim/models/device_component_templates.py:639 +#: dcim/models/device_components.py:1098 +msgid "Identifier to reference when renaming installed components" +msgstr "" +"Identificador al que se debe hacer referencia al cambiar el nombre de los " +"componentes instalados" + +#: dcim/models/device_component_templates.py:645 +msgid "module bay template" +msgstr "plantilla de bahía de módulos" + +#: dcim/models/device_component_templates.py:646 +msgid "module bay templates" +msgstr "plantillas de compartimentos de módulos" + +#: dcim/models/device_component_templates.py:673 +msgid "device bay template" +msgstr "plantilla de compartimento de dispositivos" + +#: dcim/models/device_component_templates.py:674 +msgid "device bay templates" +msgstr "plantillas de compartimentos de dispositivos" + +#: dcim/models/device_component_templates.py:687 +#, python-brace-format +msgid "" +"Subdevice role of device type ({device_type}) must be set to \"parent\" to " +"allow device bays." +msgstr "" +"Función de subdispositivo del tipo de dispositivo ({device_type}) debe " +"configurarse como «principal» para permitir compartimentos para " +"dispositivos." + +#: dcim/models/device_component_templates.py:742 +#: dcim/models/device_components.py:1224 +msgid "part ID" +msgstr "ID de pieza" + +#: dcim/models/device_component_templates.py:744 +#: dcim/models/device_components.py:1226 +msgid "Manufacturer-assigned part identifier" +msgstr "Identificador de pieza asignado por el fabricante" + +#: dcim/models/device_component_templates.py:761 +msgid "inventory item template" +msgstr "plantilla de artículos de inventario" + +#: dcim/models/device_component_templates.py:762 +msgid "inventory item templates" +msgstr "plantillas de artículos de inventario" + +#: dcim/models/device_components.py:106 +msgid "Components cannot be moved to a different device." +msgstr "Los componentes no se pueden mover a un dispositivo diferente." + +#: dcim/models/device_components.py:145 +msgid "cable end" +msgstr "extremo del cable" + +#: dcim/models/device_components.py:151 +msgid "mark connected" +msgstr "marcar conectado" + +#: dcim/models/device_components.py:153 +msgid "Treat as if a cable is connected" +msgstr "Tratar como si hubiera un cable conectado" + +#: dcim/models/device_components.py:171 +msgid "Must specify cable end (A or B) when attaching a cable." +msgstr "Debe especificar el extremo del cable (A o B) al conectar un cable." + +#: dcim/models/device_components.py:175 +msgid "Cable end must not be set without a cable." +msgstr "El extremo del cable no se debe colocar sin cable." + +#: dcim/models/device_components.py:179 +msgid "Cannot mark as connected with a cable attached." +msgstr "No se puede marcar como conectado con un cable conectado." + +#: dcim/models/device_components.py:203 +#, python-brace-format +msgid "{class_name} models must declare a parent_object property" +msgstr "{class_name} los modelos deben declarar una propiedad parent_object" + +#: dcim/models/device_components.py:288 dcim/models/device_components.py:317 +#: dcim/models/device_components.py:350 dcim/models/device_components.py:468 +msgid "Physical port type" +msgstr "Tipo de puerto físico" + +#: dcim/models/device_components.py:291 dcim/models/device_components.py:320 +msgid "speed" +msgstr "velocidad" + +#: dcim/models/device_components.py:295 dcim/models/device_components.py:324 +msgid "Port speed in bits per second" +msgstr "Velocidad de puerto en bits por segundo" + +#: dcim/models/device_components.py:301 +msgid "console port" +msgstr "puerto de consola" + +#: dcim/models/device_components.py:302 +msgid "console ports" +msgstr "puertos de consola" + +#: dcim/models/device_components.py:330 +msgid "console server port" +msgstr "puerto de servidor de consola" + +#: dcim/models/device_components.py:331 +msgid "console server ports" +msgstr "puertos de servidor de consola" + +#: dcim/models/device_components.py:370 +msgid "power port" +msgstr "puerto de alimentación" + +#: dcim/models/device_components.py:371 +msgid "power ports" +msgstr "puertos de alimentación" + +#: dcim/models/device_components.py:488 +msgid "power outlet" +msgstr "toma de corriente" + +#: dcim/models/device_components.py:489 +msgid "power outlets" +msgstr "tomas de corriente" + +#: dcim/models/device_components.py:500 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same device" +msgstr "" +"Puerto de alimentación principal ({power_port}) debe pertenecer al mismo " +"dispositivo" + +#: dcim/models/device_components.py:531 vpn/models/crypto.py:81 +#: vpn/models/crypto.py:214 +msgid "mode" +msgstr "modo" + +#: dcim/models/device_components.py:535 +msgid "IEEE 802.1Q tagging strategy" +msgstr "Estrategia de etiquetado IEEE 802.1Q" + +#: dcim/models/device_components.py:543 +msgid "parent interface" +msgstr "interfaz principal" + +#: dcim/models/device_components.py:603 +msgid "parent LAG" +msgstr "LAG principal" + +#: dcim/models/device_components.py:613 +msgid "This interface is used only for out-of-band management" +msgstr "Esta interfaz se usa solo para la administración fuera de banda" + +#: dcim/models/device_components.py:618 +msgid "speed (Kbps)" +msgstr "velocidad (Kbps)" + +#: dcim/models/device_components.py:621 +msgid "duplex" +msgstr "dúplex" + +#: dcim/models/device_components.py:631 +msgid "64-bit World Wide Name" +msgstr "Nombre mundial de 64 bits" + +#: dcim/models/device_components.py:643 +msgid "wireless channel" +msgstr "canal inalámbrico" + +#: dcim/models/device_components.py:650 +msgid "channel frequency (MHz)" +msgstr "frecuencia de canal (MHz)" + +#: dcim/models/device_components.py:651 dcim/models/device_components.py:659 +msgid "Populated by selected channel (if set)" +msgstr "Se rellena por el canal seleccionado (si está configurado)" + +#: dcim/models/device_components.py:665 +msgid "transmit power (dBm)" +msgstr "potencia de transmisión (dBm)" + +#: dcim/models/device_components.py:690 wireless/models.py:116 +msgid "wireless LANs" +msgstr "LAN inalámbricas" + +#: dcim/models/device_components.py:698 +#: virtualization/models/virtualmachines.py:328 +msgid "untagged VLAN" +msgstr "VLAN sin etiquetar" + +#: dcim/models/device_components.py:704 +#: virtualization/models/virtualmachines.py:334 +msgid "tagged VLANs" +msgstr "VLAN etiquetadas" + +#: dcim/models/device_components.py:746 +#: virtualization/models/virtualmachines.py:370 +msgid "interface" +msgstr "interfaz" + +#: dcim/models/device_components.py:747 +#: virtualization/models/virtualmachines.py:371 +msgid "interfaces" +msgstr "interfaz" + +#: dcim/models/device_components.py:758 +#, python-brace-format +msgid "{display_type} interfaces cannot have a cable attached." +msgstr "{display_type} las interfaces no pueden tener un cable conectado." + +#: dcim/models/device_components.py:766 +#, python-brace-format +msgid "{display_type} interfaces cannot be marked as connected." +msgstr "{display_type} las interfaces no se pueden marcar como conectadas." + +#: dcim/models/device_components.py:775 +#: virtualization/models/virtualmachines.py:383 +msgid "An interface cannot be its own parent." +msgstr "Una interfaz no puede ser su propia interfaz principal." + +#: dcim/models/device_components.py:779 +msgid "Only virtual interfaces may be assigned to a parent interface." +msgstr "Solo se pueden asignar interfaces virtuales a una interfaz principal." + +#: dcim/models/device_components.py:786 +#, python-brace-format +msgid "" +"The selected parent interface ({interface}) belongs to a different device " +"({device})" +msgstr "" +"La interfaz principal seleccionada ({interface}) pertenece a un dispositivo " +"diferente ({device})" + +#: dcim/models/device_components.py:792 +#, python-brace-format +msgid "" +"The selected parent interface ({interface}) belongs to {device}, which is " +"not part of virtual chassis {virtual_chassis}." +msgstr "" +"La interfaz principal seleccionada ({interface}) pertenece a {device}, que " +"no forma parte del chasis virtual {virtual_chassis}." + +#: dcim/models/device_components.py:812 +#, python-brace-format +msgid "" +"The selected bridge interface ({bridge}) belongs to a different device " +"({device})." +msgstr "" +"La interfaz de puente seleccionada ({bridge}) pertenece a un dispositivo " +"diferente ({device})." + +#: dcim/models/device_components.py:818 +#, python-brace-format +msgid "" +"The selected bridge interface ({interface}) belongs to {device}, which is " +"not part of virtual chassis {virtual_chassis}." +msgstr "" +"La interfaz de puente seleccionada ({interface}) pertenece a {device}, que " +"no forma parte del chasis virtual {virtual_chassis}." + +#: dcim/models/device_components.py:829 +msgid "Virtual interfaces cannot have a parent LAG interface." +msgstr "Las interfaces virtuales no pueden tener una interfaz LAG principal." + +#: dcim/models/device_components.py:833 +msgid "A LAG interface cannot be its own parent." +msgstr "Una interfaz LAG no puede ser su propia interfaz principal." + +#: dcim/models/device_components.py:840 +#, python-brace-format +msgid "" +"The selected LAG interface ({lag}) belongs to a different device ({device})." +msgstr "" +"La interfaz LAG seleccionada ({lag}) pertenece a un dispositivo diferente " +"({device})." + +#: dcim/models/device_components.py:846 +#, python-brace-format +msgid "" +"The selected LAG interface ({lag}) belongs to {device}, which is not part of" +" virtual chassis {virtual_chassis}." +msgstr "" +"La interfaz LAG seleccionada ({lag}) pertenece a {device}, que no forma " +"parte del chasis virtual {virtual_chassis}." + +#: dcim/models/device_components.py:857 +msgid "Virtual interfaces cannot have a PoE mode." +msgstr "Las interfaces virtuales no pueden tener un modo PoE." + +#: dcim/models/device_components.py:861 +msgid "Virtual interfaces cannot have a PoE type." +msgstr "Las interfaces virtuales no pueden tener un tipo PoE." + +#: dcim/models/device_components.py:867 +msgid "Must specify PoE mode when designating a PoE type." +msgstr "Debe especificar el modo PoE al designar un tipo de PoE." + +#: dcim/models/device_components.py:874 +msgid "Wireless role may be set only on wireless interfaces." +msgstr "" +"La función inalámbrica solo se puede configurar en las interfaces " +"inalámbricas." + +#: dcim/models/device_components.py:876 +msgid "Channel may be set only on wireless interfaces." +msgstr "El canal solo se puede configurar en las interfaces inalámbricas." + +#: dcim/models/device_components.py:882 +msgid "Channel frequency may be set only on wireless interfaces." +msgstr "" +"La frecuencia del canal solo se puede configurar en las interfaces " +"inalámbricas." + +#: dcim/models/device_components.py:886 +msgid "Cannot specify custom frequency with channel selected." +msgstr "" +"No se puede especificar la frecuencia personalizada con el canal " +"seleccionado." + +#: dcim/models/device_components.py:892 +msgid "Channel width may be set only on wireless interfaces." +msgstr "" +"El ancho del canal solo se puede establecer en las interfaces inalámbricas." + +#: dcim/models/device_components.py:894 +msgid "Cannot specify custom width with channel selected." +msgstr "" +"No se puede especificar un ancho personalizado con el canal seleccionado." + +#: dcim/models/device_components.py:902 +#, python-brace-format +msgid "" +"The untagged VLAN ({untagged_vlan}) must belong to the same site as the " +"interface's parent device, or it must be global." +msgstr "" +"La VLAN sin etiquetar ({untagged_vlan}) debe pertenecer al mismo sitio que " +"el dispositivo principal de la interfaz o debe ser global." + +#: dcim/models/device_components.py:991 +msgid "Mapped position on corresponding rear port" +msgstr "Posición mapeada en el puerto trasero correspondiente" + +#: dcim/models/device_components.py:1007 +msgid "front port" +msgstr "puerto frontal" + +#: dcim/models/device_components.py:1008 +msgid "front ports" +msgstr "puertos frontales" + +#: dcim/models/device_components.py:1022 +#, python-brace-format +msgid "Rear port ({rear_port}) must belong to the same device" +msgstr "Puerto trasero ({rear_port}) debe pertenecer al mismo dispositivo" + +#: dcim/models/device_components.py:1030 +#, python-brace-format +msgid "" +"Invalid rear port position ({rear_port_position}): Rear port {name} has only" +" {positions} positions." +msgstr "" +"Posición del puerto trasero no válida ({rear_port_position}): puerto trasero" +" {name} solo tiene {positions} posiciones." + +#: dcim/models/device_components.py:1060 +msgid "Number of front ports which may be mapped" +msgstr "Número de puertos frontales que se pueden mapear" + +#: dcim/models/device_components.py:1065 +msgid "rear port" +msgstr "puerto trasero" + +#: dcim/models/device_components.py:1066 +msgid "rear ports" +msgstr "puertos traseros" + +#: dcim/models/device_components.py:1080 +#, python-brace-format +msgid "" +"The number of positions cannot be less than the number of mapped front ports" +" ({frontport_count})" +msgstr "" +"El número de posiciones no puede ser inferior al número de puertos frontales" +" mapeados ({frontport_count})" + +#: dcim/models/device_components.py:1104 +msgid "module bay" +msgstr "compartimiento de módulos" + +#: dcim/models/device_components.py:1105 +msgid "module bays" +msgstr "compartimentos de módulos" + +#: dcim/models/device_components.py:1118 +msgid "parent_bay" +msgstr "parent_bay" + +#: dcim/models/device_components.py:1126 +msgid "device bay" +msgstr "compartimiento de dispositivos" + +#: dcim/models/device_components.py:1127 +msgid "device bays" +msgstr "compartimentos para dispositivos" + +#: dcim/models/device_components.py:1137 +#, python-brace-format +msgid "This type of device ({device_type}) does not support device bays." +msgstr "" +"Este tipo de dispositivo ({device_type}) no admite compartimentos para " +"dispositivos." + +#: dcim/models/device_components.py:1143 +msgid "Cannot install a device into itself." +msgstr "No se puede instalar un dispositivo en sí mismo." + +#: dcim/models/device_components.py:1151 +#, python-brace-format +msgid "" +"Cannot install the specified device; device is already installed in {bay}." +msgstr "" +"No se puede instalar el dispositivo especificado; el dispositivo ya está " +"instalado en {bay}." + +#: dcim/models/device_components.py:1172 +msgid "inventory item role" +msgstr "rol de artículo de inventario" + +#: dcim/models/device_components.py:1173 +msgid "inventory item roles" +msgstr "roles de artículos de inventario" + +#: dcim/models/device_components.py:1230 dcim/models/devices.py:595 +#: dcim/models/devices.py:1173 dcim/models/racks.py:113 +msgid "serial number" +msgstr "número de serie" + +#: dcim/models/device_components.py:1238 dcim/models/devices.py:603 +#: dcim/models/devices.py:1180 dcim/models/racks.py:120 +msgid "asset tag" +msgstr "etiqueta de activo" + +#: dcim/models/device_components.py:1239 +msgid "A unique tag used to identify this item" +msgstr "Una etiqueta única que se utiliza para identificar este artículo" + +#: dcim/models/device_components.py:1242 +msgid "discovered" +msgstr "descubierto" + +#: dcim/models/device_components.py:1244 +msgid "This item was automatically discovered" +msgstr "Este artículo se descubrió automáticamente" + +#: dcim/models/device_components.py:1262 +msgid "inventory item" +msgstr "artículo de inventario" + +#: dcim/models/device_components.py:1263 +msgid "inventory items" +msgstr "artículos de inventario" + +#: dcim/models/device_components.py:1274 +msgid "Cannot assign self as parent." +msgstr "No se puede asignar a sí mismo como padre." + +#: dcim/models/device_components.py:1282 +msgid "Parent inventory item does not belong to the same device." +msgstr "" +"El artículo del inventario principal no pertenece al mismo dispositivo." + +#: dcim/models/device_components.py:1288 +msgid "Cannot move an inventory item with dependent children" +msgstr "No se puede mover un artículo del inventario con hijos a cargo" + +#: dcim/models/device_components.py:1296 +msgid "Cannot assign inventory item to component on another device" +msgstr "" +"No se puede asignar un artículo de inventario a un componente de otro " +"dispositivo" + +#: dcim/models/devices.py:54 +msgid "manufacturer" +msgstr "fabricante" + +#: dcim/models/devices.py:55 +msgid "manufacturers" +msgstr "fabricantes" + +#: dcim/models/devices.py:82 dcim/models/devices.py:381 +msgid "model" +msgstr "modelo" + +#: dcim/models/devices.py:95 +msgid "default platform" +msgstr "plataforma predeterminada" + +#: dcim/models/devices.py:98 dcim/models/devices.py:385 +msgid "part number" +msgstr "número de pieza" + +#: dcim/models/devices.py:101 dcim/models/devices.py:388 +msgid "Discrete part number (optional)" +msgstr "Número de pieza discreto (opcional)" + +#: dcim/models/devices.py:107 dcim/models/racks.py:137 +msgid "height (U)" +msgstr "altura (U)" + +#: dcim/models/devices.py:111 +msgid "exclude from utilization" +msgstr "excluir de la utilización" + +#: dcim/models/devices.py:112 +msgid "Devices of this type are excluded when calculating rack utilization." +msgstr "" +"Los dispositivos de este tipo se excluyen al calcular la utilización de los " +"racks." + +#: dcim/models/devices.py:116 +msgid "is full depth" +msgstr "es de profundidad total" + +#: dcim/models/devices.py:117 +msgid "Device consumes both front and rear rack faces." +msgstr "El dispositivo consume las caras delantera y trasera del bastidor." + +#: dcim/models/devices.py:123 +msgid "parent/child status" +msgstr "estado de padre/hijo" + +#: dcim/models/devices.py:124 +msgid "" +"Parent devices house child devices in device bays. Leave blank if this " +"device type is neither a parent nor a child." +msgstr "" +"Los dispositivos principales alojan los dispositivos infantiles en " +"compartimentos para dispositivos. Déjelo en blanco si este tipo de " +"dispositivo no es para padres ni para niños." + +#: dcim/models/devices.py:128 dcim/models/devices.py:647 +msgid "airflow" +msgstr "flujo de aire" + +#: dcim/models/devices.py:204 +msgid "device type" +msgstr "tipo de dispositivo" + +#: dcim/models/devices.py:205 +msgid "device types" +msgstr "tipos de dispositivos" + +#: dcim/models/devices.py:289 +msgid "U height must be in increments of 0.5 rack units." +msgstr "La altura en U debe ser en incrementos de 0,5 unidades de bastidor." + +#: dcim/models/devices.py:306 +#, python-brace-format +msgid "" +"Device {device} in rack {rack} does not have sufficient space to accommodate" +" a height of {height}U" +msgstr "" +"Dispositivo {device} en un estante {rack} no tiene espacio suficiente para " +"acomodar una altura de {height}U" + +#: dcim/models/devices.py:321 +#, python-brace-format +msgid "" +"Unable to set 0U height: Found {racked_instance_count} " +"instances already mounted within racks." +msgstr "" +"No se puede establecer la altura 0U: encontrado {racked_instance_count} instancias ya está montado dentro" +" de bastidores." + +#: dcim/models/devices.py:330 +msgid "" +"Must delete all device bay templates associated with this device before " +"declassifying it as a parent device." +msgstr "" +"Debe eliminar todas las plantillas de compartimentos de dispositivos " +"asociadas a este dispositivo antes de desclasificarlo como dispositivo " +"principal." + +#: dcim/models/devices.py:336 +msgid "Child device types must be 0U." +msgstr "Los tipos de dispositivos secundarios deben ser 0U." + +#: dcim/models/devices.py:404 +msgid "module type" +msgstr "tipo de módulo" + +#: dcim/models/devices.py:405 +msgid "module types" +msgstr "tipos de módulos" + +#: dcim/models/devices.py:473 +msgid "Virtual machines may be assigned to this role" +msgstr "Se pueden asignar máquinas virtuales a esta función" + +#: dcim/models/devices.py:485 +msgid "device role" +msgstr "rol del dispositivo" + +#: dcim/models/devices.py:486 +msgid "device roles" +msgstr "funciones del dispositivo" + +#: dcim/models/devices.py:503 +msgid "Optionally limit this platform to devices of a certain manufacturer" +msgstr "" +"Si lo desea, limite esta plataforma a dispositivos de un fabricante " +"determinado." + +#: dcim/models/devices.py:515 +msgid "platform" +msgstr "plataforma" + +#: dcim/models/devices.py:516 +msgid "platforms" +msgstr "plataformas" + +#: dcim/models/devices.py:564 +msgid "The function this device serves" +msgstr "La función que cumple este dispositivo" + +#: dcim/models/devices.py:596 +msgid "Chassis serial number, assigned by the manufacturer" +msgstr "Número de serie del chasis, asignado por el fabricante" + +#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +msgid "A unique tag used to identify this device" +msgstr "Una etiqueta única que se utiliza para identificar este dispositivo" + +#: dcim/models/devices.py:631 +msgid "position (U)" +msgstr "posición (U)" + +#: dcim/models/devices.py:638 +msgid "rack face" +msgstr "cara del estante" + +#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: virtualization/models/virtualmachines.py:98 +msgid "primary IPv4" +msgstr "IPv4 principal" + +#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: virtualization/models/virtualmachines.py:106 +msgid "primary IPv6" +msgstr "IPv6 principal" + +#: dcim/models/devices.py:674 +msgid "out-of-band IP" +msgstr "IP fuera de banda" + +#: dcim/models/devices.py:691 +msgid "VC position" +msgstr "Posición VC" + +#: dcim/models/devices.py:695 +msgid "Virtual chassis position" +msgstr "Posición virtual del chasis" + +#: dcim/models/devices.py:698 +msgid "VC priority" +msgstr "Prioridad VC" + +#: dcim/models/devices.py:702 +msgid "Virtual chassis master election priority" +msgstr "Prioridad de elección del maestro del chasis virtual" + +#: dcim/models/devices.py:705 dcim/models/sites.py:207 +msgid "latitude" +msgstr "latitud" + +#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/sites.py:212 dcim/models/sites.py:220 +msgid "GPS coordinate in decimal format (xx.yyyyyy)" +msgstr "Coordenada GPS en formato decimal (xx.aaaaa)" + +#: dcim/models/devices.py:713 dcim/models/sites.py:215 +msgid "longitude" +msgstr "longitud" + +#: dcim/models/devices.py:786 +msgid "Device name must be unique per site." +msgstr "El nombre del dispositivo debe ser único por sitio." + +#: dcim/models/devices.py:797 ipam/models/services.py:75 +msgid "device" +msgstr "dispositivo" + +#: dcim/models/devices.py:798 +msgid "devices" +msgstr "dispositivos" + +#: dcim/models/devices.py:838 +#, python-brace-format +msgid "Rack {rack} does not belong to site {site}." +msgstr "Estante {rack} no pertenece al sitio {site}." + +#: dcim/models/devices.py:843 +#, python-brace-format +msgid "Location {location} does not belong to site {site}." +msgstr "Ubicación {location} no pertenece al sitio {site}." + +#: dcim/models/devices.py:849 +#, python-brace-format +msgid "Rack {rack} does not belong to location {location}." +msgstr "Estante {rack} no pertenece a la ubicación {location}." + +#: dcim/models/devices.py:856 +msgid "Cannot select a rack face without assigning a rack." +msgstr "No se puede seleccionar una cara de bastidor sin asignar un bastidor." + +#: dcim/models/devices.py:860 +msgid "Cannot select a rack position without assigning a rack." +msgstr "" +"No se puede seleccionar una posición de cremallera sin asignar una " +"cremallera." + +#: dcim/models/devices.py:866 +msgid "Position must be in increments of 0.5 rack units." +msgstr "La posición debe estar en incrementos de 0,5 unidades de estante." + +#: dcim/models/devices.py:870 +msgid "Must specify rack face when defining rack position." +msgstr "" +"Debe especificar la cara de la cremallera al definir la posición de la " +"cremallera." + +#: dcim/models/devices.py:878 +#, python-brace-format +msgid "" +"A U0 device type ({device_type}) cannot be assigned to a rack position." +msgstr "" +"Un tipo de dispositivo U0 ({device_type}) no se puede asignar a una posición" +" de cremallera." + +#: dcim/models/devices.py:889 +msgid "" +"Child device types cannot be assigned to a rack face. This is an attribute " +"of the parent device." +msgstr "" +"Los tipos de dispositivos secundarios no se pueden asignar a la cara de un " +"bastidor. Este es un atributo del dispositivo principal." + +#: dcim/models/devices.py:896 +msgid "" +"Child device types cannot be assigned to a rack position. This is an " +"attribute of the parent device." +msgstr "" +"Los tipos de dispositivos secundarios no se pueden asignar a una posición de" +" bastidor. Este es un atributo del dispositivo principal." + +#: dcim/models/devices.py:910 +#, python-brace-format +msgid "" +"U{position} is already occupied or does not have sufficient space to " +"accommodate this device type: {device_type} ({u_height}U)" +msgstr "" +"U{position} ya está ocupado o no tiene espacio suficiente para este tipo de " +"dispositivo: {device_type} ({u_height}U)" + +#: dcim/models/devices.py:925 +#, python-brace-format +msgid "{ip} is not an IPv4 address." +msgstr "{ip} no es una dirección IPv4." + +#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#, python-brace-format +msgid "The specified IP address ({ip}) is not assigned to this device." +msgstr "" +"La dirección IP especificada ({ip}) no está asignado a este dispositivo." + +#: dcim/models/devices.py:940 +#, python-brace-format +msgid "{ip} is not an IPv6 address." +msgstr "{ip} no es una dirección IPv6." + +#: dcim/models/devices.py:967 +#, python-brace-format +msgid "" +"The assigned platform is limited to {platform_manufacturer} device types, " +"but this device's type belongs to {devicetype_manufacturer}." +msgstr "" +"La plataforma asignada está limitada a {platform_manufacturer} tipos de " +"dispositivos, pero el tipo de este dispositivo pertenece a " +"{devicetype_manufacturer}." + +#: dcim/models/devices.py:978 +#, python-brace-format +msgid "The assigned cluster belongs to a different site ({site})" +msgstr "El clúster asignado pertenece a un sitio diferente ({site})" + +#: dcim/models/devices.py:986 +msgid "A device assigned to a virtual chassis must have its position defined." +msgstr "" +"Un dispositivo asignado a un chasis virtual debe tener su posición definida." + +#: dcim/models/devices.py:1188 +msgid "module" +msgstr "módulo" + +#: dcim/models/devices.py:1189 +msgid "modules" +msgstr "módulos" + +#: dcim/models/devices.py:1205 +#, python-brace-format +msgid "" +"Module must be installed within a module bay belonging to the assigned " +"device ({device})." +msgstr "" +"El módulo debe instalarse en un compartimiento de módulos que pertenezca al " +"dispositivo asignado ({device})." + +#: dcim/models/devices.py:1309 +msgid "domain" +msgstr "dominio" + +#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +msgid "virtual chassis" +msgstr "chasis virtual" + +#: dcim/models/devices.py:1338 +#, python-brace-format +msgid "" +"The selected master ({master}) is not assigned to this virtual chassis." +msgstr "" +"El maestro seleccionado ({master}) no está asignado a este chasis virtual." + +#: dcim/models/devices.py:1354 +#, python-brace-format +msgid "" +"Unable to delete virtual chassis {self}. There are member interfaces which " +"form a cross-chassis LAG interfaces." +msgstr "" +"No se puede eliminar el chasis virtual {self}. Hay interfaces miembros que " +"forman interfaces LAG entre chasis." + +#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +msgid "identifier" +msgstr "identificador" + +#: dcim/models/devices.py:1380 +msgid "Numeric identifier unique to the parent device" +msgstr "Identificador numérico exclusivo del dispositivo principal" + +#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: extras/models/models.py:724 netbox/models/__init__.py:114 +msgid "comments" +msgstr "comentarios" + +#: dcim/models/devices.py:1424 +msgid "virtual device context" +msgstr "contexto de dispositivo virtual" + +#: dcim/models/devices.py:1425 +msgid "virtual device contexts" +msgstr "contextos de dispositivos virtuales" + +#: dcim/models/devices.py:1457 +#, python-brace-format +msgid "{ip} is not an IPv{family} address." +msgstr "{ip} no es un IPv{family} dirección." + +#: dcim/models/devices.py:1463 +msgid "Primary IP address must belong to an interface on the assigned device." +msgstr "" +"La dirección IP principal debe pertenecer a una interfaz del dispositivo " +"asignado." + +#: dcim/models/mixins.py:15 extras/models/configs.py:41 +#: extras/models/models.py:343 extras/models/models.py:552 +#: extras/models/search.py:50 ipam/models/ip.py:193 +msgid "weight" +msgstr "peso" + +#: dcim/models/mixins.py:22 +msgid "weight unit" +msgstr "unidad de peso" + +#: dcim/models/mixins.py:51 +msgid "Must specify a unit when setting a weight" +msgstr "Debe especificar una unidad al establecer un peso" + +#: dcim/models/power.py:55 +msgid "power panel" +msgstr "panel de alimentación" + +#: dcim/models/power.py:56 +msgid "power panels" +msgstr "paneles de alimentación" + +#: dcim/models/power.py:70 +#, python-brace-format +msgid "" +"Location {location} ({location_site}) is in a different site than {site}" +msgstr "" +"Ubicación {location} ({location_site}) está en un sitio diferente al {site}" + +#: dcim/models/power.py:107 +msgid "supply" +msgstr "suministrar" + +#: dcim/models/power.py:113 +msgid "phase" +msgstr "fase" + +#: dcim/models/power.py:119 +msgid "voltage" +msgstr "voltaje" + +#: dcim/models/power.py:124 +msgid "amperage" +msgstr "amperaje" + +#: dcim/models/power.py:129 +msgid "max utilization" +msgstr "utilización máxima" + +#: dcim/models/power.py:132 +msgid "Maximum permissible draw (percentage)" +msgstr "Consumo máximo permitido (porcentaje)" + +#: dcim/models/power.py:135 +msgid "available power" +msgstr "potencia disponible" + +#: dcim/models/power.py:163 +msgid "power feed" +msgstr "alimentación" + +#: dcim/models/power.py:164 +msgid "power feeds" +msgstr "fuentes de alimentación" + +#: dcim/models/power.py:178 +#, python-brace-format +msgid "" +"Rack {rack} ({rack_site}) and power panel {powerpanel} ({powerpanel_site}) " +"are in different sites." +msgstr "" +"Estante {rack} ({rack_site}) y panel de alimentación {powerpanel} " +"({powerpanel_site}) están en diferentes sitios." + +#: dcim/models/power.py:189 +msgid "Voltage cannot be negative for AC supply" +msgstr "" +"La tensión no puede ser negativa para el suministro de corriente alterna" + +#: dcim/models/racks.py:49 +msgid "rack role" +msgstr "rol de bastidor" + +#: dcim/models/racks.py:50 +msgid "rack roles" +msgstr "roles de seguimiento" + +#: dcim/models/racks.py:74 +msgid "facility ID" +msgstr "ID de la instalación" + +#: dcim/models/racks.py:75 +msgid "Locally-assigned identifier" +msgstr "Identificador asignado localmente" + +#: dcim/models/racks.py:108 ipam/forms/bulk_import.py:200 +#: ipam/forms/bulk_import.py:265 ipam/forms/bulk_import.py:300 +#: ipam/forms/bulk_import.py:467 virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Función funcional" + +#: dcim/models/racks.py:121 +msgid "A unique tag used to identify this rack" +msgstr "Una etiqueta única que se utiliza para identificar este estante" + +#: dcim/models/racks.py:132 +msgid "width" +msgstr "anchura" + +#: dcim/models/racks.py:133 +msgid "Rail-to-rail width" +msgstr "Ancho de riel a riel" + +#: dcim/models/racks.py:139 +msgid "Height in rack units" +msgstr "Altura en unidades de estantería" + +#: dcim/models/racks.py:143 +msgid "starting unit" +msgstr "unidad de arranque" + +#: dcim/models/racks.py:145 +msgid "Starting unit for rack" +msgstr "Unidad de arranque para bastidor" + +#: dcim/models/racks.py:149 +msgid "descending units" +msgstr "unidades descendentes" + +#: dcim/models/racks.py:150 +msgid "Units are numbered top-to-bottom" +msgstr "Las unidades están numeradas de arriba a abajo" + +#: dcim/models/racks.py:153 +msgid "outer width" +msgstr "ancho exterior" + +#: dcim/models/racks.py:156 +msgid "Outer dimension of rack (width)" +msgstr "Dimensión exterior del estante (ancho)" + +#: dcim/models/racks.py:159 +msgid "outer depth" +msgstr "profundidad exterior" + +#: dcim/models/racks.py:162 +msgid "Outer dimension of rack (depth)" +msgstr "Dimensión exterior del bastidor (profundidad)" + +#: dcim/models/racks.py:165 +msgid "outer unit" +msgstr "unidad exterior" + +#: dcim/models/racks.py:171 +msgid "max weight" +msgstr "peso máximo" + +#: dcim/models/racks.py:174 +msgid "Maximum load capacity for the rack" +msgstr "Capacidad de carga máxima del bastidor" + +#: dcim/models/racks.py:182 +msgid "mounting depth" +msgstr "profundidad de montaje" + +#: dcim/models/racks.py:186 +msgid "" +"Maximum depth of a mounted device, in millimeters. For four-post racks, this" +" is the distance between the front and rear rails." +msgstr "" +"Profundidad máxima de un dispositivo montado, en milímetros. En el caso de " +"los estantes de cuatro postes, esta es la distancia entre los rieles " +"delantero y trasero." + +#: dcim/models/racks.py:220 +msgid "rack" +msgstr "estante" + +#: dcim/models/racks.py:221 +msgid "racks" +msgstr "bastidores" + +#: dcim/models/racks.py:236 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "La ubicación asignada debe pertenecer al sitio principal ({site})." + +#: dcim/models/racks.py:240 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "" +"Debe especificar una unidad al establecer una anchura o profundidad " +"exteriores" + +#: dcim/models/racks.py:244 +msgid "Must specify a unit when setting a maximum weight" +msgstr "Debe especificar una unidad al establecer un peso máximo" + +#: dcim/models/racks.py:254 +#, python-brace-format +msgid "" +"Rack must be at least {min_height}U tall to house currently installed " +"devices." +msgstr "" +"El estante debe tener al menos {min_height}Hablo para alojar los " +"dispositivos instalados actualmente." + +#: dcim/models/racks.py:261 +#, python-brace-format +msgid "" +"Rack unit numbering must begin at {position} or less to house currently " +"installed devices." +msgstr "" +"La numeración de las unidades del bastidor debe comenzar en {position} o " +"menos para alojar los dispositivos actualmente instalados." + +#: dcim/models/racks.py:269 +#, python-brace-format +msgid "Location must be from the same site, {site}." +msgstr "La ubicación debe ser del mismo sitio, {site}." + +#: dcim/models/racks.py:522 +msgid "units" +msgstr "unidades" + +#: dcim/models/racks.py:548 +msgid "rack reservation" +msgstr "reserva de seguimiento" + +#: dcim/models/racks.py:549 +msgid "rack reservations" +msgstr "Seguimiento de reservas" + +#: dcim/models/racks.py:566 +#, python-brace-format +msgid "Invalid unit(s) for {height}U rack: {unit_list}" +msgstr "" +"Unidad (es) no válida (s) para {height}Rack de Reino Unido: {unit_list}" + +#: dcim/models/racks.py:579 +#, python-brace-format +msgid "The following units have already been reserved: {unit_list}" +msgstr "Ya se han reservado las siguientes unidades: {unit_list}" + +#: dcim/models/sites.py:49 +msgid "A top-level region with this name already exists." +msgstr "Ya existe una región de nivel superior con este nombre." + +#: dcim/models/sites.py:59 +msgid "A top-level region with this slug already exists." +msgstr "Ya existe una región de alto nivel con esta babosa." + +#: dcim/models/sites.py:62 +msgid "region" +msgstr "región" + +#: dcim/models/sites.py:63 +msgid "regions" +msgstr "regiones" + +#: dcim/models/sites.py:102 +msgid "A top-level site group with this name already exists." +msgstr "Ya existe un grupo de sitio de nivel superior con este nombre." + +#: dcim/models/sites.py:112 +msgid "A top-level site group with this slug already exists." +msgstr "Ya existe un grupo de sitios de nivel superior con este slug." + +#: dcim/models/sites.py:115 +msgid "site group" +msgstr "grupo de sitios" + +#: dcim/models/sites.py:116 +msgid "site groups" +msgstr "grupos de sitios" + +#: dcim/models/sites.py:141 +msgid "Full name of the site" +msgstr "Nombre completo del sitio" + +#: dcim/models/sites.py:181 +msgid "facility" +msgstr "instalaciones" + +#: dcim/models/sites.py:184 +msgid "Local facility ID or description" +msgstr "ID o descripción de la instalación local" + +#: dcim/models/sites.py:195 +msgid "physical address" +msgstr "dirección física" + +#: dcim/models/sites.py:198 +msgid "Physical location of the building" +msgstr "Ubicación física del edificio" + +#: dcim/models/sites.py:201 +msgid "shipping address" +msgstr "dirección de envío" + +#: dcim/models/sites.py:204 +msgid "If different from the physical address" +msgstr "Si es diferente de la dirección física" + +#: dcim/models/sites.py:238 +msgid "site" +msgstr "sitio" + +#: dcim/models/sites.py:239 +msgid "sites" +msgstr "sitios" + +#: dcim/models/sites.py:303 +msgid "A location with this name already exists within the specified site." +msgstr "Ya existe una ubicación con este nombre en el sitio especificado." + +#: dcim/models/sites.py:313 +msgid "A location with this slug already exists within the specified site." +msgstr "Ya existe una ubicación con esta babosa en el sitio especificado." + +#: dcim/models/sites.py:316 +msgid "location" +msgstr "ubicación" + +#: dcim/models/sites.py:317 +msgid "locations" +msgstr "ubicaciones" + +#: dcim/models/sites.py:331 +#, python-brace-format +msgid "Parent location ({parent}) must belong to the same site ({site})." +msgstr "" +"Ubicación de los padres ({parent}) debe pertenecer al mismo sitio ({site})." + +#: dcim/tables/cables.py:54 +msgid "Termination A" +msgstr "Terminación A" + +#: dcim/tables/cables.py:59 +msgid "Termination B" +msgstr "Terminación B" + +#: dcim/tables/cables.py:65 wireless/tables/wirelesslink.py:22 +msgid "Device A" +msgstr "Dispositivo A" + +#: dcim/tables/cables.py:71 wireless/tables/wirelesslink.py:31 +msgid "Device B" +msgstr "Dispositivo B" + +#: dcim/tables/cables.py:77 +msgid "Location A" +msgstr "Ubicación A" + +#: dcim/tables/cables.py:83 +msgid "Location B" +msgstr "Ubicación B" + +#: dcim/tables/cables.py:89 +msgid "Rack A" +msgstr "Bastidor A" + +#: dcim/tables/cables.py:95 +msgid "Rack B" +msgstr "Estante B" + +#: dcim/tables/cables.py:101 +msgid "Site A" +msgstr "Sitio A" + +#: dcim/tables/cables.py:107 +msgid "Site B" +msgstr "Sitio B" + +#: dcim/tables/connections.py:27 templates/dcim/consoleport.html:18 +#: templates/dcim/consoleserverport.html:75 templates/dcim/frontport.html:119 +#: templates/dcim/inventoryitem_edit.html:39 +msgid "Console Port" +msgstr "Puerto de consola" + +#: dcim/tables/connections.py:31 dcim/tables/connections.py:50 +#: dcim/tables/connections.py:71 +#: templates/dcim/inc/connection_endpoints.html:16 +msgid "Reachable" +msgstr "Accesible" + +#: dcim/tables/connections.py:46 dcim/tables/devices.py:524 +#: templates/dcim/inventoryitem_edit.html:64 +#: templates/dcim/poweroutlet.html:47 templates/dcim/powerport.html:18 +msgid "Power Port" +msgstr "Puerto de alimentación" + +#: dcim/tables/devices.py:94 dcim/tables/devices.py:139 +#: dcim/tables/racks.py:81 dcim/tables/sites.py:143 +#: netbox/navigation/menu.py:57 netbox/navigation/menu.py:61 +#: netbox/navigation/menu.py:63 virtualization/forms/model_forms.py:125 +#: virtualization/tables/clusters.py:83 virtualization/views.py:211 +msgid "Devices" +msgstr "Dispositivos" + +#: dcim/tables/devices.py:99 dcim/tables/devices.py:144 +#: virtualization/tables/clusters.py:88 +msgid "VMs" +msgstr "VM" + +#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: extras/forms/model_forms.py:506 templates/dcim/device.html:114 +#: templates/dcim/device/render_config.html:11 +#: templates/dcim/device/render_config.html:15 +#: templates/dcim/devicerole.html:47 templates/dcim/platform.html:44 +#: templates/extras/configtemplate.html:10 +#: templates/virtualization/virtualmachine.html:47 +#: templates/virtualization/virtualmachine/render_config.html:11 +#: templates/virtualization/virtualmachine/render_config.html:15 +#: virtualization/tables/virtualmachines.py:93 +msgid "Config Template" +msgstr "Plantilla de configuración" + +#: dcim/tables/devices.py:216 dcim/tables/devices.py:1069 +#: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 +#: ipam/tables/ip.py:352 ipam/tables/ip.py:418 ipam/tables/ip.py:441 +#: templates/ipam/ipaddress.html:12 templates/ipam/ipaddress_edit.html:14 +#: virtualization/tables/virtualmachines.py:81 +msgid "IP Address" +msgstr "Dirección IP" + +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1073 +#: virtualization/tables/virtualmachines.py:72 +msgid "IPv4 Address" +msgstr "Dirección IPv4" + +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1077 +#: virtualization/tables/virtualmachines.py:76 +msgid "IPv6 Address" +msgstr "Dirección IPv6" + +#: dcim/tables/devices.py:239 +msgid "VC Position" +msgstr "Posición VC" + +#: dcim/tables/devices.py:242 +msgid "VC Priority" +msgstr "Prioridad VC" + +#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: templates/dcim/devicebay_populate.html:16 +msgid "Parent Device" +msgstr "Dispositivo principal" + +#: dcim/tables/devices.py:254 +msgid "Position (Device Bay)" +msgstr "Posición (bahía de dispositivos)" + +#: dcim/tables/devices.py:263 +msgid "Console ports" +msgstr "Puertos de consola" + +#: dcim/tables/devices.py:266 +msgid "Console server ports" +msgstr "Puertos de servidor de consola" + +#: dcim/tables/devices.py:269 +msgid "Power ports" +msgstr "Puertos de alimentación" + +#: dcim/tables/devices.py:272 +msgid "Power outlets" +msgstr "tomas de corriente" + +#: dcim/tables/devices.py:275 dcim/tables/devices.py:1082 +#: dcim/tables/devicetypes.py:125 dcim/views.py:1002 dcim/views.py:1241 +#: dcim/views.py:1927 netbox/navigation/menu.py:82 +#: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 +#: templates/dcim/device_list.html:43 templates/dcim/devicetype/base.html:34 +#: templates/dcim/module.html:34 templates/dcim/moduletype/base.html:34 +#: templates/dcim/virtualdevicecontext.html:64 +#: templates/dcim/virtualdevicecontext.html:85 +#: templates/virtualization/virtualmachine/base.html:27 +#: templates/virtualization/virtualmachine_list.html:14 +#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: wireless/tables/wirelesslan.py:55 +msgid "Interfaces" +msgstr "Interfaces" + +#: dcim/tables/devices.py:278 +msgid "Front ports" +msgstr "Puertos frontales" + +#: dcim/tables/devices.py:284 +msgid "Device bays" +msgstr "Compartimentos para dispositivos" + +#: dcim/tables/devices.py:287 +msgid "Module bays" +msgstr "Bahías de módulos" + +#: dcim/tables/devices.py:290 +msgid "Inventory items" +msgstr "Artículos de inventario" + +#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: templates/dcim/modulebay.html:17 +msgid "Module Bay" +msgstr "Bahía de módulos" + +#: dcim/tables/devices.py:350 +msgid "Cable Color" +msgstr "Color del cable" + +#: dcim/tables/devices.py:356 +msgid "Link Peers" +msgstr "Vincula a tus compañeros" + +#: dcim/tables/devices.py:359 +msgid "Mark Connected" +msgstr "Marcar conectado" + +#: dcim/tables/devices.py:470 +msgid "Maximum draw (W)" +msgstr "Consumo máximo (W)" + +#: dcim/tables/devices.py:473 +msgid "Allocated draw (W)" +msgstr "Sorteo asignado (W)" + +#: dcim/tables/devices.py:573 ipam/forms/model_forms.py:707 +#: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:671 +#: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 +#: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 +#: templates/ipam/service.html:43 templates/virtualization/vminterface.html:88 +#: vpn/tables/tunnels.py:94 +msgid "IP Addresses" +msgstr "Direcciones IP" + +#: dcim/tables/devices.py:579 netbox/navigation/menu.py:190 +#: templates/ipam/inc/panels/fhrp_groups.html:5 +msgid "FHRP Groups" +msgstr "Grupos FHRP" + +#: dcim/tables/devices.py:591 templates/dcim/interface.html:90 +#: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 +#: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 +#: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 +#: vpn/forms/filtersets.py:81 vpn/forms/model_forms.py:59 +#: vpn/forms/model_forms.py:144 vpn/tables/tunnels.py:74 +msgid "Tunnel" +msgstr "Túnel" + +#: dcim/tables/devices.py:616 dcim/tables/devicetypes.py:224 +#: templates/dcim/interface.html:66 +msgid "Management Only" +msgstr "Solo administración" + +#: dcim/tables/devices.py:624 +msgid "Wireless link" +msgstr "Enlace inalámbrico" + +#: dcim/tables/devices.py:634 +msgid "VDCs" +msgstr "VDC" + +#: dcim/tables/devices.py:642 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1077 dcim/views.py:2020 +#: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 +#: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 +#: templates/dcim/inc/panels/inventory_items.html:5 +#: templates/dcim/inventoryitemrole.html:33 +msgid "Inventory Items" +msgstr "Artículos de inventario" + +#: dcim/tables/devices.py:723 +#: templates/circuits/inc/circuit_termination.html:80 +#: templates/dcim/consoleport.html:81 templates/dcim/consoleserverport.html:81 +#: templates/dcim/frontport.html:53 templates/dcim/frontport.html:125 +#: templates/dcim/interface.html:196 templates/dcim/inventoryitem_edit.html:69 +#: templates/dcim/rearport.html:18 templates/dcim/rearport.html:115 +msgid "Rear Port" +msgstr "Puerto trasero" + +#: dcim/tables/devices.py:888 templates/dcim/modulebay.html:51 +msgid "Installed Module" +msgstr "Módulo instalado" + +#: dcim/tables/devices.py:891 +msgid "Module Serial" +msgstr "Serie del módulo" + +#: dcim/tables/devices.py:895 +msgid "Module Asset Tag" +msgstr "Etiqueta de activo del módulo" + +#: dcim/tables/devices.py:904 +msgid "Module Status" +msgstr "Estado del módulo" + +#: dcim/tables/devices.py:946 dcim/tables/devicetypes.py:308 +#: templates/dcim/inventoryitem.html:41 +msgid "Component" +msgstr "Componente" + +#: dcim/tables/devices.py:1001 +msgid "Items" +msgstr "Artículos" + +#: dcim/tables/devicetypes.py:38 netbox/navigation/menu.py:72 +#: netbox/navigation/menu.py:74 +msgid "Device Types" +msgstr "Tipos de dispositivos" + +#: dcim/tables/devicetypes.py:43 netbox/navigation/menu.py:75 +msgid "Module Types" +msgstr "Tipos de módulos" + +#: dcim/tables/devicetypes.py:53 extras/forms/filtersets.py:379 +#: extras/forms/model_forms.py:414 netbox/navigation/menu.py:66 +msgid "Platforms" +msgstr "Plataformas" + +#: dcim/tables/devicetypes.py:85 templates/dcim/devicetype.html:32 +msgid "Default Platform" +msgstr "Plataforma predeterminada" + +#: dcim/tables/devicetypes.py:89 templates/dcim/devicetype.html:48 +msgid "Full Depth" +msgstr "Profundidad total" + +#: dcim/tables/devicetypes.py:98 +msgid "U Height" +msgstr "Altura en U" + +#: dcim/tables/devicetypes.py:110 dcim/tables/modules.py:26 +msgid "Instances" +msgstr "Instancias" + +#: dcim/tables/devicetypes.py:113 dcim/views.py:942 dcim/views.py:1181 +#: dcim/views.py:1867 netbox/navigation/menu.py:85 +#: templates/dcim/device/base.html:25 templates/dcim/device_list.html:15 +#: templates/dcim/devicetype/base.html:22 templates/dcim/module.html:22 +#: templates/dcim/moduletype/base.html:22 +msgid "Console Ports" +msgstr "Puertos de consola" + +#: dcim/tables/devicetypes.py:116 dcim/views.py:957 dcim/views.py:1196 +#: dcim/views.py:1882 netbox/navigation/menu.py:86 +#: templates/dcim/device/base.html:28 templates/dcim/device_list.html:22 +#: templates/dcim/devicetype/base.html:25 templates/dcim/module.html:25 +#: templates/dcim/moduletype/base.html:25 +msgid "Console Server Ports" +msgstr "Puertos de servidor de consola" + +#: dcim/tables/devicetypes.py:119 dcim/views.py:972 dcim/views.py:1211 +#: dcim/views.py:1897 netbox/navigation/menu.py:87 +#: templates/dcim/device/base.html:31 templates/dcim/device_list.html:29 +#: templates/dcim/devicetype/base.html:28 templates/dcim/module.html:28 +#: templates/dcim/moduletype/base.html:28 +msgid "Power Ports" +msgstr "Puertos de alimentación" + +#: dcim/tables/devicetypes.py:122 dcim/views.py:987 dcim/views.py:1226 +#: dcim/views.py:1912 netbox/navigation/menu.py:88 +#: templates/dcim/device/base.html:34 templates/dcim/device_list.html:36 +#: templates/dcim/devicetype/base.html:31 templates/dcim/module.html:31 +#: templates/dcim/moduletype/base.html:31 +msgid "Power Outlets" +msgstr "Tomas de corriente" + +#: dcim/tables/devicetypes.py:128 dcim/views.py:1017 dcim/views.py:1256 +#: dcim/views.py:1948 netbox/navigation/menu.py:83 +#: templates/dcim/device/base.html:40 templates/dcim/devicetype/base.html:37 +#: templates/dcim/module.html:37 templates/dcim/moduletype/base.html:37 +msgid "Front Ports" +msgstr "Puertos frontales" + +#: dcim/tables/devicetypes.py:131 dcim/views.py:1032 dcim/views.py:1271 +#: dcim/views.py:1963 netbox/navigation/menu.py:84 +#: templates/dcim/device/base.html:43 templates/dcim/device_list.html:50 +#: templates/dcim/devicetype/base.html:40 templates/dcim/module.html:40 +#: templates/dcim/moduletype/base.html:40 +msgid "Rear Ports" +msgstr "Puertos traseros" + +#: dcim/tables/devicetypes.py:134 dcim/views.py:1062 dcim/views.py:2001 +#: netbox/navigation/menu.py:90 templates/dcim/device/base.html:49 +#: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46 +msgid "Device Bays" +msgstr "Bahías de dispositivos" + +#: dcim/tables/devicetypes.py:137 dcim/views.py:1047 dcim/views.py:1982 +#: netbox/navigation/menu.py:89 templates/dcim/device/base.html:46 +#: templates/dcim/device_list.html:64 templates/dcim/devicetype/base.html:43 +msgid "Module Bays" +msgstr "Bahías de módulos" + +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 +#: templates/core/configrevision.html:59 templates/dcim/powerpanel.html:53 +msgid "Power Feeds" +msgstr "Fuentes de alimentación" + +#: dcim/tables/power.py:80 templates/dcim/powerfeed.html:106 +msgid "Max Utilization" +msgstr "Utilización máxima" + +#: dcim/tables/power.py:84 +msgid "Available Power (VA)" +msgstr "Potencia disponible (VA)" + +#: dcim/tables/racks.py:29 dcim/tables/sites.py:138 +#: netbox/navigation/menu.py:25 netbox/navigation/menu.py:27 +msgid "Racks" +msgstr "Bastidores" + +#: dcim/tables/racks.py:73 templates/dcim/device.html:323 +#: templates/dcim/rack.html:95 +msgid "Height" +msgstr "Altura" + +#: dcim/tables/racks.py:85 +msgid "Space" +msgstr "Espacio" + +#: dcim/tables/racks.py:96 templates/dcim/rack.html:105 +msgid "Outer Width" +msgstr "Anchura exterior" + +#: dcim/tables/racks.py:100 templates/dcim/rack.html:115 +msgid "Outer Depth" +msgstr "Profundidad exterior" + +#: dcim/tables/racks.py:108 +msgid "Max Weight" +msgstr "Peso máximo" + +#: dcim/tables/sites.py:30 dcim/tables/sites.py:57 +#: extras/forms/filtersets.py:359 extras/forms/model_forms.py:394 +#: ipam/forms/bulk_edit.py:128 ipam/forms/model_forms.py:152 +#: ipam/tables/asn.py:66 netbox/navigation/menu.py:16 +#: netbox/navigation/menu.py:18 +msgid "Sites" +msgstr "Sitios" + +#: dcim/views.py:131 +#, python-brace-format +msgid "Disconnected {count} {type}" +msgstr "Desconectado {count} {type}" + +#: dcim/views.py:692 netbox/navigation/menu.py:29 +msgid "Reservations" +msgstr "Reservaciones" + +#: dcim/views.py:711 +msgid "Non-Racked Devices" +msgstr "Dispositivos no rakeados" + +#: dcim/views.py:2033 extras/forms/model_forms.py:454 +#: templates/extras/configcontext.html:10 +#: virtualization/forms/model_forms.py:228 virtualization/views.py:408 +msgid "Config Context" +msgstr "Contexto de configuración" + +#: dcim/views.py:2043 virtualization/views.py:418 +msgid "Render Config" +msgstr "Configuración de renderizado" + +#: dcim/views.py:2971 ipam/tables/ip.py:233 +msgid "Children" +msgstr "Niños" + +#: extras/choices.py:27 extras/forms/misc.py:14 +msgid "Text" +msgstr "Texto" + +#: extras/choices.py:28 +msgid "Text (long)" +msgstr "Texto (largo)" + +#: extras/choices.py:29 +msgid "Integer" +msgstr "Número entero" + +#: extras/choices.py:30 +msgid "Decimal" +msgstr "Decimal" + +#: extras/choices.py:31 +msgid "Boolean (true/false)" +msgstr "Booleano (verdadero o falso)" + +#: extras/choices.py:32 +msgid "Date" +msgstr "Fecha" + +#: extras/choices.py:33 +msgid "Date & time" +msgstr "Fecha y hora" + +#: extras/choices.py:35 +msgid "JSON" +msgstr "JSON" + +#: extras/choices.py:36 +msgid "Selection" +msgstr "Selección" + +#: extras/choices.py:37 +msgid "Multiple selection" +msgstr "Selección múltiple" + +#: extras/choices.py:39 +msgid "Multiple objects" +msgstr "Objetos múltiples" + +#: extras/choices.py:50 templates/extras/customfield.html:69 vpn/choices.py:20 +#: wireless/choices.py:27 +msgid "Disabled" +msgstr "Discapacitado" + +#: extras/choices.py:51 +msgid "Loose" +msgstr "Suelto" + +#: extras/choices.py:52 +msgid "Exact" +msgstr "Exacto" + +#: extras/choices.py:63 +msgid "Always" +msgstr "Siempre" + +#: extras/choices.py:64 +msgid "If set" +msgstr "Si está configurado" + +#: extras/choices.py:65 extras/choices.py:78 +msgid "Hidden" +msgstr "Oculto" + +#: extras/choices.py:76 +msgid "Yes" +msgstr "Sí" + +#: extras/choices.py:77 +msgid "No" +msgstr "No" + +#: extras/choices.py:105 templates/tenancy/contact.html:58 +#: tenancy/forms/bulk_edit.py:117 wireless/forms/model_forms.py:159 +msgid "Link" +msgstr "Enlace" + +#: extras/choices.py:119 +msgid "Newest" +msgstr "El más reciente" + +#: extras/choices.py:120 +msgid "Oldest" +msgstr "El más antiguo" + +#: extras/choices.py:136 templates/generic/object.html:51 +msgid "Updated" +msgstr "Actualizado" + +#: extras/choices.py:137 +msgid "Deleted" +msgstr "Eliminado" + +#: extras/choices.py:154 extras/choices.py:176 +msgid "Info" +msgstr "Información" + +#: extras/choices.py:155 extras/choices.py:175 +msgid "Success" +msgstr "Éxito" + +#: extras/choices.py:156 extras/choices.py:177 +msgid "Warning" +msgstr "Advertencia" + +#: extras/choices.py:157 +msgid "Danger" +msgstr "Peligro" + +#: extras/choices.py:174 utilities/choices.py:190 +msgid "Default" +msgstr "Predeterminado" + +#: extras/choices.py:178 +msgid "Failure" +msgstr "Fracaso" + +#: extras/choices.py:185 +msgid "Hourly" +msgstr "Cada hora" + +#: extras/choices.py:186 +msgid "12 hours" +msgstr "12 horas" + +#: extras/choices.py:187 +msgid "Daily" +msgstr "Diariamente" + +#: extras/choices.py:188 +msgid "Weekly" +msgstr "Semanal" + +#: extras/choices.py:189 +msgid "30 days" +msgstr "30 días" + +#: extras/choices.py:254 extras/tables/tables.py:287 +#: templates/dcim/virtualchassis_edit.html:108 +#: templates/extras/eventrule.html:51 +#: templates/generic/bulk_add_component.html:56 +#: templates/generic/object_edit.html:29 templates/generic/object_edit.html:70 +#: templates/ipam/inc/ipaddress_edit_header.html:10 +msgid "Create" +msgstr "Crear" + +#: extras/choices.py:255 extras/tables/tables.py:290 +#: templates/extras/eventrule.html:55 +msgid "Update" +msgstr "Actualización" + +#: extras/choices.py:256 extras/tables/tables.py:293 +#: templates/circuits/inc/circuit_termination.html:22 +#: templates/dcim/devicetype/component_templates.html:24 +#: templates/dcim/inc/panels/inventory_items.html:29 +#: templates/dcim/moduletype/component_templates.html:24 +#: templates/dcim/powerpanel.html:71 templates/extras/eventrule.html:59 +#: templates/extras/report_list.html:34 templates/extras/script_list.html:33 +#: templates/generic/bulk_delete.html:18 templates/generic/bulk_delete.html:45 +#: templates/generic/object_delete.html:15 templates/htmx/delete_form.html:57 +#: templates/ipam/inc/panels/fhrp_groups.html:35 +#: templates/users/objectpermission.html:49 +#: utilities/templates/buttons/delete.html:9 +msgid "Delete" +msgstr "Eliminar" + +#: extras/choices.py:280 utilities/choices.py:143 utilities/choices.py:191 +msgid "Blue" +msgstr "Azul" + +#: extras/choices.py:281 utilities/choices.py:142 utilities/choices.py:192 +msgid "Indigo" +msgstr "añil" + +#: extras/choices.py:282 utilities/choices.py:140 utilities/choices.py:193 +msgid "Purple" +msgstr "Morado" + +#: extras/choices.py:283 utilities/choices.py:137 utilities/choices.py:194 +msgid "Pink" +msgstr "Rosado" + +#: extras/choices.py:284 utilities/choices.py:136 utilities/choices.py:195 +msgid "Red" +msgstr "rojo" + +#: extras/choices.py:285 utilities/choices.py:154 utilities/choices.py:196 +msgid "Orange" +msgstr "naranja" + +#: extras/choices.py:286 utilities/choices.py:152 utilities/choices.py:197 +msgid "Yellow" +msgstr "Amarillo" + +#: extras/choices.py:287 utilities/choices.py:149 utilities/choices.py:198 +msgid "Green" +msgstr "Verde" + +#: extras/choices.py:288 utilities/choices.py:146 utilities/choices.py:199 +msgid "Teal" +msgstr "Verde azulado" + +#: extras/choices.py:289 utilities/choices.py:145 utilities/choices.py:200 +msgid "Cyan" +msgstr "Cian" + +#: extras/choices.py:290 utilities/choices.py:201 +msgid "Gray" +msgstr "Gris" + +#: extras/choices.py:291 utilities/choices.py:160 utilities/choices.py:202 +msgid "Black" +msgstr "Negro" + +#: extras/choices.py:292 utilities/choices.py:161 utilities/choices.py:203 +msgid "White" +msgstr "blanco" + +#: extras/choices.py:306 extras/forms/model_forms.py:233 +#: extras/forms/model_forms.py:321 templates/extras/webhook.html:11 +msgid "Webhook" +msgstr "Webhook" + +#: extras/choices.py:307 templates/extras/script/base.html:29 +msgid "Script" +msgstr "Guión" + +#: extras/dashboard/forms.py:38 +msgid "Widget type" +msgstr "Tipo de widget" + +#: extras/dashboard/widgets.py:148 +msgid "Note" +msgstr "Nota" + +#: extras/dashboard/widgets.py:149 +msgid "Display some arbitrary custom content. Markdown is supported." +msgstr "Muestra contenido personalizado arbitrario. Markdown es compatible." + +#: extras/dashboard/widgets.py:162 +msgid "Object Counts" +msgstr "Recuentos de objetos" + +#: extras/dashboard/widgets.py:163 +msgid "" +"Display a set of NetBox models and the number of objects created for each " +"type." +msgstr "" +"Muestre un conjunto de modelos de NetBox y el número de objetos creados para" +" cada tipo." + +#: extras/dashboard/widgets.py:173 +msgid "Filters to apply when counting the number of objects" +msgstr "Filtros para aplicar al contar el número de objetos" + +#: extras/dashboard/widgets.py:209 +msgid "Object List" +msgstr "Lista de objetos" + +#: extras/dashboard/widgets.py:210 +msgid "Display an arbitrary list of objects." +msgstr "Muestra una lista arbitraria de objetos." + +#: extras/dashboard/widgets.py:223 +msgid "The default number of objects to display" +msgstr "El número predeterminado de objetos que se van a mostrar" + +#: extras/dashboard/widgets.py:270 +msgid "RSS Feed" +msgstr "Fuente RSS" + +#: extras/dashboard/widgets.py:275 +msgid "Embed an RSS feed from an external website." +msgstr "Inserte una fuente RSS desde un sitio web externo." + +#: extras/dashboard/widgets.py:282 +msgid "Feed URL" +msgstr "URL del feed" + +#: extras/dashboard/widgets.py:287 +msgid "The maximum number of objects to display" +msgstr "El número máximo de objetos que se van a mostrar" + +#: extras/dashboard/widgets.py:292 +msgid "How long to stored the cached content (in seconds)" +msgstr "Cuánto tiempo se debe almacenar el contenido en caché (en segundos)" + +#: extras/dashboard/widgets.py:344 templates/account/base.html:10 +#: templates/account/bookmarks.html:7 templates/inc/profile_button.html:29 +msgid "Bookmarks" +msgstr "Marcadores" + +#: extras/dashboard/widgets.py:348 +msgid "Show your personal bookmarks" +msgstr "Muestra tus marcadores personales" + +#: extras/filtersets.py:207 extras/filtersets.py:542 extras/filtersets.py:570 +msgid "Data file (ID)" +msgstr "Archivo de datos (ID)" + +#: extras/filtersets.py:479 virtualization/forms/filtersets.py:114 +msgid "Cluster type" +msgstr "Tipo de clúster" + +#: extras/filtersets.py:485 virtualization/filtersets.py:95 +#: virtualization/filtersets.py:146 +msgid "Cluster type (slug)" +msgstr "Tipo de clúster (babosa)" + +#: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 +#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +msgid "Cluster group" +msgstr "Grupo de clústeres" + +#: extras/filtersets.py:496 virtualization/filtersets.py:135 +msgid "Cluster group (slug)" +msgstr "Grupo de racimos (babosa)" + +#: extras/filtersets.py:506 tenancy/forms/forms.py:16 +#: tenancy/forms/forms.py:39 +msgid "Tenant group" +msgstr "Grupo de inquilinos" + +#: extras/filtersets.py:512 tenancy/filtersets.py:163 +#: tenancy/filtersets.py:183 +msgid "Tenant group (slug)" +msgstr "Grupo de inquilinos (slug)" + +#: extras/filtersets.py:528 templates/extras/tag.html:12 +msgid "Tag" +msgstr "Etiqueta" + +#: extras/filtersets.py:534 +msgid "Tag (slug)" +msgstr "Etiqueta (babosa)" + +#: extras/filtersets.py:594 extras/forms/filtersets.py:438 +msgid "Has local config context data" +msgstr "Tiene datos de contexto de configuración local" + +#: extras/filtersets.py:619 +msgid "User name" +msgstr "Nombre de usuario" + +#: extras/forms/bulk_edit.py:32 extras/forms/filtersets.py:56 +msgid "Group name" +msgstr "Nombre del grupo" + +#: extras/forms/bulk_edit.py:40 extras/forms/filtersets.py:64 +#: extras/tables/tables.py:47 templates/extras/customfield.html:39 +#: templates/generic/bulk_import.html:116 +msgid "Required" +msgstr "Obligatorio" + +#: extras/forms/bulk_edit.py:53 extras/forms/bulk_import.py:57 +#: extras/forms/filtersets.py:78 extras/models/customfields.py:193 +msgid "UI visible" +msgstr "Interfaz de usuario visible" + +#: extras/forms/bulk_edit.py:58 extras/forms/bulk_import.py:63 +#: extras/forms/filtersets.py:83 extras/models/customfields.py:200 +msgid "UI editable" +msgstr "Interfaz de usuario editable" + +#: extras/forms/bulk_edit.py:63 extras/forms/filtersets.py:86 +msgid "Is cloneable" +msgstr "Es clonable" + +#: extras/forms/bulk_edit.py:102 extras/forms/filtersets.py:126 +msgid "New window" +msgstr "Ventana nueva" + +#: extras/forms/bulk_edit.py:111 +msgid "Button class" +msgstr "Clase de botones" + +#: extras/forms/bulk_edit.py:128 extras/forms/filtersets.py:164 +#: extras/models/models.py:439 +msgid "MIME type" +msgstr "Tipo MIME" + +#: extras/forms/bulk_edit.py:133 extras/forms/filtersets.py:167 +msgid "File extension" +msgstr "Extensión de archivo" + +#: extras/forms/bulk_edit.py:138 extras/forms/filtersets.py:171 +msgid "As attachment" +msgstr "Como archivo adjunto" + +#: extras/forms/bulk_edit.py:166 extras/forms/filtersets.py:213 +#: extras/tables/tables.py:214 templates/extras/savedfilter.html:30 +msgid "Shared" +msgstr "Compartido" + +#: extras/forms/bulk_edit.py:189 extras/forms/filtersets.py:242 +#: extras/models/models.py:204 +msgid "HTTP method" +msgstr "Método HTTP" + +#: extras/forms/bulk_edit.py:193 extras/forms/filtersets.py:236 +#: templates/extras/webhook.html:37 +msgid "Payload URL" +msgstr "URL de carga" + +#: extras/forms/bulk_edit.py:198 extras/models/models.py:244 +msgid "SSL verification" +msgstr "Verificación SSL" + +#: extras/forms/bulk_edit.py:201 templates/extras/webhook.html:45 +msgid "Secret" +msgstr "Secreto" + +#: extras/forms/bulk_edit.py:206 +msgid "CA file path" +msgstr "Ruta del archivo CA" + +#: extras/forms/bulk_edit.py:225 +msgid "On create" +msgstr "Al crear" + +#: extras/forms/bulk_edit.py:230 +msgid "On update" +msgstr "En la actualización" + +#: extras/forms/bulk_edit.py:235 +msgid "On delete" +msgstr "Al eliminar" + +#: extras/forms/bulk_edit.py:240 +msgid "On job start" +msgstr "Empezando a trabajar" + +#: extras/forms/bulk_edit.py:245 +msgid "On job end" +msgstr "Al final del trabajo" + +#: extras/forms/bulk_edit.py:282 +msgid "Is active" +msgstr "Está activo" + +#: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 +#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 +#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 +#: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 +#: extras/forms/model_forms.py:154 extras/forms/model_forms.py:195 +#: extras/forms/model_forms.py:251 +msgid "Content types" +msgstr "Tipos de contenido" + +#: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 +#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 +#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +msgid "One or more assigned object types" +msgstr "Uno o más tipos de objetos asignados" + +#: extras/forms/bulk_import.py:41 +msgid "Field data type (e.g. text, integer, etc.)" +msgstr "Tipo de datos de campo (por ejemplo, texto, entero, etc.)" + +#: extras/forms/bulk_import.py:44 extras/forms/filtersets.py:48 +#: extras/forms/filtersets.py:259 extras/forms/model_forms.py:47 +#: extras/forms/model_forms.py:221 tenancy/forms/filtersets.py:91 +msgid "Object type" +msgstr "Tipo de objeto" + +#: extras/forms/bulk_import.py:47 +msgid "Object type (for object or multi-object fields)" +msgstr "Tipo de objeto (para campos de objetos o de varios objetos)" + +#: extras/forms/bulk_import.py:50 extras/forms/filtersets.py:73 +msgid "Choice set" +msgstr "Set de elección" + +#: extras/forms/bulk_import.py:54 +msgid "Choice set (for selection fields)" +msgstr "Conjunto de opciones (para campos de selección)" + +#: extras/forms/bulk_import.py:60 +msgid "Whether the custom field is displayed in the UI" +msgstr "Si el campo personalizado se muestra en la interfaz de usuario" + +#: extras/forms/bulk_import.py:66 +msgid "Whether the custom field is editable in the UI" +msgstr "Si el campo personalizado se puede editar en la interfaz de usuario" + +#: extras/forms/bulk_import.py:82 +msgid "The base set of predefined choices to use (if any)" +msgstr "" +"El conjunto base de opciones predefinidas que se van a utilizar (si las hay)" + +#: extras/forms/bulk_import.py:88 +msgid "" +"Quoted string of comma-separated field choices with optional labels " +"separated by colon: \"choice1:First Choice,choice2:Second Choice\"" +msgstr "" +"Cadena entre comillas de opciones de campo separadas por comas con etiquetas" +" opcionales separadas por dos puntos: «Choice1:First Choice, Choice2:Second " +"Choice»" + +#: extras/forms/bulk_import.py:182 +msgid "Action object" +msgstr "Objeto de acción" + +#: extras/forms/bulk_import.py:184 +msgid "Webhook name or script as dotted path module.Class" +msgstr "Nombre o script del webhook como ruta punteada module.Class" + +#: extras/forms/bulk_import.py:236 +msgid "Assigned object type" +msgstr "Tipo de objeto asignado" + +#: extras/forms/bulk_import.py:241 +msgid "The classification of entry" +msgstr "La clasificación de entrada" + +#: extras/forms/filtersets.py:53 +msgid "Field type" +msgstr "Tipo de campo" + +#: extras/forms/filtersets.py:97 extras/tables/tables.py:65 +#: templates/generic/bulk_import.html:148 +msgid "Choices" +msgstr "Opciones" + +#: extras/forms/filtersets.py:141 extras/forms/filtersets.py:327 +#: extras/forms/filtersets.py:417 extras/forms/model_forms.py:449 +#: templates/core/job.html:86 templates/extras/configcontext.html:86 +#: templates/extras/eventrule.html:111 +msgid "Data" +msgstr "Datos" + +#: extras/forms/filtersets.py:152 extras/forms/filtersets.py:341 +#: extras/forms/filtersets.py:427 utilities/choices.py:219 +#: utilities/forms/bulk_import.py:27 +msgid "Data file" +msgstr "Archivo de datos" + +#: extras/forms/filtersets.py:185 +msgid "Content type" +msgstr "Tipo de contenido" + +#: extras/forms/filtersets.py:232 extras/models/models.py:209 +msgid "HTTP content type" +msgstr "Tipo de contenido HTTP" + +#: extras/forms/filtersets.py:254 extras/forms/model_forms.py:269 +#: templates/extras/eventrule.html:46 +msgid "Events" +msgstr "Eventos" + +#: extras/forms/filtersets.py:264 +msgid "Action type" +msgstr "Tipo de acción" + +#: extras/forms/filtersets.py:278 +msgid "Object creations" +msgstr "Creaciones de objetos" + +#: extras/forms/filtersets.py:285 +msgid "Object updates" +msgstr "Actualizaciones de objetos" + +#: extras/forms/filtersets.py:292 +msgid "Object deletions" +msgstr "Eliminaciones de objetos" + +#: extras/forms/filtersets.py:299 +msgid "Job starts" +msgstr "Comienza el trabajo" + +#: extras/forms/filtersets.py:306 extras/forms/model_forms.py:289 +msgid "Job terminations" +msgstr "Cese de puestos" + +#: extras/forms/filtersets.py:315 +msgid "Tagged object type" +msgstr "Tipo de objeto etiquetado" + +#: extras/forms/filtersets.py:320 +msgid "Allowed object type" +msgstr "Tipo de objeto permitido" + +#: extras/forms/filtersets.py:349 extras/forms/model_forms.py:384 +#: netbox/navigation/menu.py:19 +msgid "Regions" +msgstr "Regiones" + +#: extras/forms/filtersets.py:354 extras/forms/model_forms.py:389 +msgid "Site groups" +msgstr "Grupos de sitios" + +#: extras/forms/filtersets.py:364 extras/forms/model_forms.py:399 +#: netbox/navigation/menu.py:21 +msgid "Locations" +msgstr "Ubicaciones" + +#: extras/forms/filtersets.py:369 extras/forms/model_forms.py:404 +msgid "Device types" +msgstr "Tipos de dispositivos" + +#: extras/forms/filtersets.py:374 extras/forms/model_forms.py:409 +msgid "Roles" +msgstr "Funciones" + +#: extras/forms/filtersets.py:384 extras/forms/model_forms.py:419 +msgid "Cluster types" +msgstr "Tipos de clústeres" + +#: extras/forms/filtersets.py:390 extras/forms/model_forms.py:424 +msgid "Cluster groups" +msgstr "Grupos de clústeres" + +#: extras/forms/filtersets.py:395 extras/forms/model_forms.py:429 +#: netbox/navigation/menu.py:243 netbox/navigation/menu.py:245 +#: templates/virtualization/clustertype.html:33 +#: virtualization/tables/clusters.py:23 virtualization/tables/clusters.py:45 +msgid "Clusters" +msgstr "Clústers" + +#: extras/forms/filtersets.py:400 extras/forms/model_forms.py:434 +msgid "Tenant groups" +msgstr "Grupos de inquilinos" + +#: extras/forms/filtersets.py:454 extras/forms/filtersets.py:495 +msgid "After" +msgstr "Después" + +#: extras/forms/filtersets.py:459 extras/forms/filtersets.py:500 +msgid "Before" +msgstr "Antes" + +#: extras/forms/filtersets.py:490 extras/tables/tables.py:426 +#: templates/extras/htmx/report_result.html:43 +#: templates/extras/objectchange.html:34 +msgid "Time" +msgstr "Hora" + +#: extras/forms/filtersets.py:504 extras/forms/model_forms.py:271 +#: extras/tables/tables.py:440 templates/extras/eventrule.html:90 +#: templates/extras/objectchange.html:50 +msgid "Action" +msgstr "Acción" + +#: extras/forms/model_forms.py:50 +msgid "Type of the related object (for object/multi-object fields only)" +msgstr "Tipo del objeto relacionado (solo para campos de objeto/multiobjeto)" + +#: extras/forms/model_forms.py:58 templates/extras/customfield.html:11 +msgid "Custom Field" +msgstr "Campo personalizado" + +#: extras/forms/model_forms.py:61 templates/extras/customfield.html:60 +msgid "Behavior" +msgstr "Comportamiento" + +#: extras/forms/model_forms.py:62 +msgid "Values" +msgstr "Valores" + +#: extras/forms/model_forms.py:71 +msgid "" +"The type of data stored in this field. For object/multi-object fields, " +"select the related object type below." +msgstr "" +"El tipo de datos almacenados en este campo. Para los campos de objetos o " +"multiobjetos, seleccione el tipo de objeto relacionado a continuación." + +#: extras/forms/model_forms.py:74 +msgid "" +"This will be displayed as help text for the form field. Markdown is " +"supported." +msgstr "" +"Esto se mostrará como texto de ayuda para el campo del formulario. Markdown " +"es compatible." + +#: extras/forms/model_forms.py:91 +msgid "" +"Enter one choice per line. An optional label may be specified for each " +"choice by appending it with a colon. Example:" +msgstr "" +"Introduzca una opción por línea. Se puede especificar una etiqueta opcional " +"para cada elección añadiendo dos puntos. Ejemplo:" + +#: extras/forms/model_forms.py:132 templates/extras/customlink.html:10 +msgid "Custom Link" +msgstr "Vínculo personalizado" + +#: extras/forms/model_forms.py:133 +msgid "Templates" +msgstr "Plantillas" + +#: extras/forms/model_forms.py:145 +msgid "" +"Jinja2 template code for the link text. Reference the object as {{ " +"object }}. Links which render as empty text will not be displayed." +msgstr "" + +#: extras/forms/model_forms.py:148 +msgid "" +"Jinja2 template code for the link URL. Reference the object as {{ " +"object }}." +msgstr "" + +#: extras/forms/model_forms.py:158 extras/forms/model_forms.py:500 +msgid "Template code" +msgstr "Código de plantilla" + +#: extras/forms/model_forms.py:164 templates/extras/exporttemplate.html:17 +msgid "Export Template" +msgstr "Plantilla de exportación" + +#: extras/forms/model_forms.py:166 +msgid "Rendering" +msgstr "Renderización" + +#: extras/forms/model_forms.py:180 extras/forms/model_forms.py:525 +msgid "Template content is populated from the remote source selected below." +msgstr "" +"El contenido de la plantilla se rellena desde la fuente remota seleccionada " +"a continuación." + +#: extras/forms/model_forms.py:187 extras/forms/model_forms.py:532 +msgid "Must specify either local content or a data file" +msgstr "Debe especificar el contenido local o un archivo de datos" + +#: extras/forms/model_forms.py:201 netbox/forms/mixins.py:68 +#: templates/extras/savedfilter.html:10 +msgid "Saved Filter" +msgstr "Filtro guardado" + +#: extras/forms/model_forms.py:234 templates/extras/webhook.html:28 +msgid "HTTP Request" +msgstr "Solicitud HTTP" + +#: extras/forms/model_forms.py:237 templates/extras/webhook.html:53 +msgid "SSL" +msgstr "SSL" + +#: extras/forms/model_forms.py:255 +msgid "Action choice" +msgstr "Elección de acción" + +#: extras/forms/model_forms.py:260 +msgid "Enter conditions in JSON format." +msgstr "" +"Introduzca las condiciones en JSON " +"formato." + +#: extras/forms/model_forms.py:264 +msgid "" +"Enter parameters to pass to the action in JSON format." +msgstr "" +"Introduzca los parámetros para pasar a la acción en JSON formato." + +#: extras/forms/model_forms.py:268 templates/extras/eventrule.html:11 +msgid "Event Rule" +msgstr "Regla del evento" + +#: extras/forms/model_forms.py:270 templates/extras/eventrule.html:78 +msgid "Conditions" +msgstr "Condiciones" + +#: extras/forms/model_forms.py:285 +msgid "Creations" +msgstr "Creaciones" + +#: extras/forms/model_forms.py:286 +msgid "Updates" +msgstr "Actualizaciones" + +#: extras/forms/model_forms.py:287 +msgid "Deletions" +msgstr "Eliminaciones" + +#: extras/forms/model_forms.py:288 +msgid "Job executions" +msgstr "Ejecuciones de trabajos" + +#: extras/forms/model_forms.py:366 users/forms/model_forms.py:285 +msgid "Object types" +msgstr "Tipos de objetos" + +#: extras/forms/model_forms.py:439 netbox/navigation/menu.py:40 +#: tenancy/tables/tenants.py:22 +msgid "Tenants" +msgstr "Inquilinos" + +#: extras/forms/model_forms.py:456 ipam/forms/filtersets.py:141 +#: ipam/forms/filtersets.py:527 templates/extras/configcontext.html:62 +#: templates/ipam/ipaddress.html:62 templates/ipam/vlan_edit.html:30 +#: tenancy/forms/filtersets.py:86 users/forms/model_forms.py:323 +msgid "Assignment" +msgstr "Asignación" + +#: extras/forms/model_forms.py:482 +msgid "Data is populated from the remote source selected below." +msgstr "" +"Los datos se rellenan desde la fuente remota seleccionada a continuación." + +#: extras/forms/model_forms.py:488 +msgid "Must specify either local data or a data file" +msgstr "Debe especificar datos locales o un archivo de datos" + +#: extras/forms/model_forms.py:507 templates/core/datafile.html:65 +msgid "Content" +msgstr "Contenido" + +#: extras/forms/reports.py:18 extras/forms/scripts.py:24 +msgid "Schedule at" +msgstr "Programe en" + +#: extras/forms/reports.py:19 +msgid "Schedule execution of report to a set time" +msgstr "Programe la ejecución del informe a una hora determinada" + +#: extras/forms/reports.py:24 extras/forms/scripts.py:30 +msgid "Recurs every" +msgstr "Se repite cada" + +#: extras/forms/reports.py:28 +msgid "Interval at which this report is re-run (in minutes)" +msgstr "Intervalo en el que se vuelve a ejecutar este informe (en minutos)" + +#: extras/forms/reports.py:36 extras/forms/scripts.py:42 +#, python-brace-format +msgid " (current time: {now})" +msgstr " (hora actual: {now})" + +#: extras/forms/reports.py:46 extras/forms/scripts.py:52 +msgid "Scheduled time must be in the future." +msgstr "La hora programada debe estar en el futuro." + +#: extras/forms/scripts.py:18 +msgid "Commit changes" +msgstr "Confirmar cambios" + +#: extras/forms/scripts.py:19 +msgid "Commit changes to the database (uncheck for a dry-run)" +msgstr "" +"Confirme los cambios en la base de datos (desactive la casilla para una " +"ejecución en seco)" + +#: extras/forms/scripts.py:25 +msgid "Schedule execution of script to a set time" +msgstr "Programe la ejecución del script a una hora determinada" + +#: extras/forms/scripts.py:34 +msgid "Interval at which this script is re-run (in minutes)" +msgstr "Intervalo en el que se vuelve a ejecutar este script (en minutos)" + +#: extras/models/change_logging.py:24 +msgid "time" +msgstr "tiempo" + +#: extras/models/change_logging.py:37 +msgid "user name" +msgstr "nombre de usuario" + +#: extras/models/change_logging.py:42 +msgid "request ID" +msgstr "ID de solicitud" + +#: extras/models/change_logging.py:47 extras/models/staging.py:69 +msgid "action" +msgstr "acción" + +#: extras/models/change_logging.py:81 +msgid "pre-change data" +msgstr "datos de cambio previo" + +#: extras/models/change_logging.py:87 +msgid "post-change data" +msgstr "datos posteriores al cambio" + +#: extras/models/change_logging.py:101 +msgid "object change" +msgstr "cambio de objeto" + +#: extras/models/change_logging.py:102 +msgid "object changes" +msgstr "cambios de objetos" + +#: extras/models/change_logging.py:118 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"El registro de cambios no es compatible con este tipo de objeto ({type})." + +#: extras/models/configs.py:130 +msgid "config context" +msgstr "contexto de configuración" + +#: extras/models/configs.py:131 +msgid "config contexts" +msgstr "contextos de configuración" + +#: extras/models/configs.py:149 extras/models/configs.py:205 +msgid "JSON data must be in object form. Example:" +msgstr "Los datos JSON deben estar en forma de objeto. Ejemplo:" + +#: extras/models/configs.py:169 +msgid "" +"Local config context data takes precedence over source contexts in the final" +" rendered config context" +msgstr "" +"Los datos del contexto de configuración local tienen prioridad sobre los " +"contextos de origen en el contexto de configuración renderizado final." + +#: extras/models/configs.py:224 +msgid "template code" +msgstr "código de plantilla" + +#: extras/models/configs.py:225 +msgid "Jinja2 template code." +msgstr "Código de plantilla Jinja2." + +#: extras/models/configs.py:228 +msgid "environment parameters" +msgstr "parámetros ambientales" + +#: extras/models/configs.py:233 +msgid "" +"Any additional" +" parameters to pass when constructing the Jinja2 environment." +msgstr "" +"Cualquier parámetros" +" adicionales para pasar al construir el entorno Jinja2." + +#: extras/models/configs.py:240 +msgid "config template" +msgstr "plantilla de configuración" + +#: extras/models/configs.py:241 +msgid "config templates" +msgstr "plantillas de configuración" + +#: extras/models/customfields.py:72 +msgid "The object(s) to which this field applies." +msgstr "Los objetos a los que se aplica este campo." + +#: extras/models/customfields.py:79 +msgid "The type of data this custom field holds" +msgstr "El tipo de datos que contiene este campo personalizado" + +#: extras/models/customfields.py:86 +msgid "The type of NetBox object this field maps to (for object fields)" +msgstr "" +"El tipo de objeto NetBox al que se asigna este campo (para campos de " +"objetos)" + +#: extras/models/customfields.py:92 +msgid "Internal field name" +msgstr "Nombre del campo interno" + +#: extras/models/customfields.py:96 +msgid "Only alphanumeric characters and underscores are allowed." +msgstr "Solo se permiten caracteres alfanuméricos y guiones bajos." + +#: extras/models/customfields.py:101 +msgid "Double underscores are not permitted in custom field names." +msgstr "" +"No se permiten los guiones dobles de subrayado en los nombres de campo " +"personalizados." + +#: extras/models/customfields.py:112 +msgid "" +"Name of the field as displayed to users (if not provided, 'the field's name " +"will be used)" +msgstr "" +"Nombre del campo tal como se muestra a los usuarios (si no se proporciona, " +"se usará el nombre del campo)" + +#: extras/models/customfields.py:116 extras/models/models.py:347 +msgid "group name" +msgstr "nombre del grupo" + +#: extras/models/customfields.py:119 +msgid "Custom fields within the same group will be displayed together" +msgstr "Los campos personalizados del mismo grupo se mostrarán juntos" + +#: extras/models/customfields.py:127 +msgid "required" +msgstr "requerido" + +#: extras/models/customfields.py:129 +msgid "" +"If true, this field is required when creating new objects or editing an " +"existing object." +msgstr "" +"Si es verdadero, este campo es obligatorio al crear objetos nuevos o editar " +"un objeto existente." + +#: extras/models/customfields.py:132 +msgid "search weight" +msgstr "peso de búsqueda" + +#: extras/models/customfields.py:135 +msgid "" +"Weighting for search. Lower values are considered more important. Fields " +"with a search weight of zero will be ignored." +msgstr "" +"Ponderación para la búsqueda. Los valores más bajos se consideran más " +"importantes. Los campos con un peso de búsqueda de cero se ignorarán." + +#: extras/models/customfields.py:140 +msgid "filter logic" +msgstr "lógica de filtros" + +#: extras/models/customfields.py:144 +msgid "" +"Loose matches any instance of a given string; exact matches the entire " +"field." +msgstr "" +"Loose coincide con cualquier instancia de una cadena determinada; exact " +"coincide con todo el campo." + +#: extras/models/customfields.py:147 +msgid "default" +msgstr "predeterminado" + +#: extras/models/customfields.py:151 +msgid "" +"Default value for the field (must be a JSON value). Encapsulate strings with" +" double quotes (e.g. \"Foo\")." +msgstr "" +"Valor predeterminado para el campo (debe ser un valor JSON). Encapsula " +"cadenas con comillas dobles (por ejemplo, «Foo»)." + +#: extras/models/customfields.py:156 +msgid "display weight" +msgstr "peso de la pantalla" + +#: extras/models/customfields.py:157 +msgid "Fields with higher weights appear lower in a form." +msgstr "Los campos con pesos más altos aparecen más abajo en un formulario." + +#: extras/models/customfields.py:162 +msgid "minimum value" +msgstr "valor mínimo" + +#: extras/models/customfields.py:163 +msgid "Minimum allowed value (for numeric fields)" +msgstr "Valor mínimo permitido (para campos numéricos)" + +#: extras/models/customfields.py:168 +msgid "maximum value" +msgstr "valor máximo" + +#: extras/models/customfields.py:169 +msgid "Maximum allowed value (for numeric fields)" +msgstr "Valor máximo permitido (para campos numéricos)" + +#: extras/models/customfields.py:175 +msgid "validation regex" +msgstr "expresión regular de validación" + +#: extras/models/customfields.py:177 +#, python-brace-format +msgid "" +"Regular expression to enforce on text field values. Use ^ and $ to force " +"matching of entire string. For example, ^[A-Z]{3}$ will limit " +"values to exactly three uppercase letters." +msgstr "" +"Expresión regular para aplicar en los valores de los campos de texto. Use ^ " +"y $ para forzar la coincidencia de toda la cadena. Por ejemplo, ^ " +"[A-Z]{3}$ limitará los valores a exactamente tres letras mayúsculas." + +#: extras/models/customfields.py:185 +msgid "choice set" +msgstr "conjunto de opciones" + +#: extras/models/customfields.py:194 +msgid "Specifies whether the custom field is displayed in the UI" +msgstr "" +"Especifica si el campo personalizado se muestra en la interfaz de usuario" + +#: extras/models/customfields.py:201 +msgid "Specifies whether the custom field value can be edited in the UI" +msgstr "" +"Especifica si el valor del campo personalizado se puede editar en la " +"interfaz de usuario" + +#: extras/models/customfields.py:205 +msgid "is cloneable" +msgstr "es clonable" + +#: extras/models/customfields.py:206 +msgid "Replicate this value when cloning objects" +msgstr "Replique este valor al clonar objetos" + +#: extras/models/customfields.py:219 +msgid "custom field" +msgstr "campo personalizado" + +#: extras/models/customfields.py:220 +msgid "custom fields" +msgstr "campos personalizados" + +#: extras/models/customfields.py:309 +#, python-brace-format +msgid "Invalid default value \"{value}\": {error}" +msgstr "Valor predeterminado no válido»{value}«: {error}" + +#: extras/models/customfields.py:316 +msgid "A minimum value may be set only for numeric fields" +msgstr "Solo se puede establecer un valor mínimo para los campos numéricos" + +#: extras/models/customfields.py:318 +msgid "A maximum value may be set only for numeric fields" +msgstr "Solo se puede establecer un valor máximo para los campos numéricos" + +#: extras/models/customfields.py:328 +msgid "" +"Regular expression validation is supported only for text and URL fields" +msgstr "" +"La validación de expresiones regulares solo se admite para campos de texto y" +" URL" + +#: extras/models/customfields.py:338 +msgid "Selection fields must specify a set of choices." +msgstr "Los campos de selección deben especificar un conjunto de opciones." + +#: extras/models/customfields.py:342 +msgid "Choices may be set only on selection fields." +msgstr "Las elecciones solo se pueden establecer en los campos de selección." + +#: extras/models/customfields.py:349 +msgid "Object fields must define an object type." +msgstr "Los campos de objeto deben definir un tipo de objeto." + +#: extras/models/customfields.py:354 +#, python-brace-format +msgid "{type} fields may not define an object type." +msgstr "{type} es posible que los campos no definan un tipo de objeto." + +#: extras/models/customfields.py:434 +msgid "True" +msgstr "Cierto" + +#: extras/models/customfields.py:435 +msgid "False" +msgstr "Falso" + +#: extras/models/customfields.py:517 +#, python-brace-format +msgid "Values must match this regex: {regex}" +msgstr "" +"Los valores deben coincidir con esta expresión regular: {regex}" + +#: extras/models/customfields.py:612 +msgid "Value must be a string." +msgstr "El valor debe ser una cadena." + +#: extras/models/customfields.py:614 +#, python-brace-format +msgid "Value must match regex '{regex}'" +msgstr "El valor debe coincidir con la expresión regular '{regex}'" + +#: extras/models/customfields.py:619 +msgid "Value must be an integer." +msgstr "El valor debe ser un número entero." + +#: extras/models/customfields.py:622 extras/models/customfields.py:637 +#, python-brace-format +msgid "Value must be at least {minimum}" +msgstr "El valor debe ser al menos {minimum}" + +#: extras/models/customfields.py:626 extras/models/customfields.py:641 +#, python-brace-format +msgid "Value must not exceed {maximum}" +msgstr "El valor no debe superar {maximum}" + +#: extras/models/customfields.py:634 +msgid "Value must be a decimal." +msgstr "El valor debe ser decimal." + +#: extras/models/customfields.py:646 +msgid "Value must be true or false." +msgstr "El valor debe ser verdadero o falso." + +#: extras/models/customfields.py:654 +msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." +msgstr "Los valores de fecha deben estar en formato ISO 8601 (AAAA-MM-DD)." + +#: extras/models/customfields.py:663 +msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." +msgstr "" +"Los valores de fecha y hora deben estar en formato ISO 8601 (AAAA-MM-DD " +"HH:MM:SS)." + +#: extras/models/customfields.py:670 +#, python-brace-format +msgid "Invalid choice ({value}) for choice set {choiceset}." +msgstr "" +"Elección no válida ({value}) para el conjunto de opciones {choiceset}." + +#: extras/models/customfields.py:680 +#, python-brace-format +msgid "Invalid choice(s) ({value}) for choice set {choiceset}." +msgstr "" +"Elecciones no válidas ({value}) para el conjunto de opciones {choiceset}." + +#: extras/models/customfields.py:689 +#, python-brace-format +msgid "Value must be an object ID, not {type}" +msgstr "El valor debe ser un ID de objeto, no {type}" + +#: extras/models/customfields.py:695 +#, python-brace-format +msgid "Value must be a list of object IDs, not {type}" +msgstr "El valor debe ser una lista de identificadores de objetos, no {type}" + +#: extras/models/customfields.py:699 +#, python-brace-format +msgid "Found invalid object ID: {id}" +msgstr "Se encontró un ID de objeto no válido: {id}" + +#: extras/models/customfields.py:702 +msgid "Required field cannot be empty." +msgstr "El campo obligatorio no puede estar vacío." + +#: extras/models/customfields.py:721 +msgid "Base set of predefined choices (optional)" +msgstr "Conjunto básico de opciones predefinidas (opcional)" + +#: extras/models/customfields.py:733 +msgid "Choices are automatically ordered alphabetically" +msgstr "Las opciones se ordenan alfabéticamente automáticamente" + +#: extras/models/customfields.py:740 +msgid "custom field choice set" +msgstr "conjunto de opciones de campo personalizadas" + +#: extras/models/customfields.py:741 +msgid "custom field choice sets" +msgstr "conjuntos de opciones de campo personalizadas" + +#: extras/models/customfields.py:777 +msgid "Must define base or extra choices." +msgstr "Debe definir opciones básicas o adicionales." + +#: extras/models/dashboard.py:19 +msgid "layout" +msgstr "diseño" + +#: extras/models/dashboard.py:23 +msgid "config" +msgstr "configuración" + +#: extras/models/dashboard.py:28 +msgid "dashboard" +msgstr "salpicadero" + +#: extras/models/dashboard.py:29 +msgid "dashboards" +msgstr "tableros" + +#: extras/models/models.py:49 +msgid "object types" +msgstr "tipos de objetos" + +#: extras/models/models.py:50 +msgid "The object(s) to which this rule applies." +msgstr "Los objetos a los que se aplica esta regla." + +#: extras/models/models.py:63 +msgid "on create" +msgstr "al crear" + +#: extras/models/models.py:65 +msgid "Triggers when a matching object is created." +msgstr "Se activa cuando se crea un objeto coincidente." + +#: extras/models/models.py:68 +msgid "on update" +msgstr "en la actualización" + +#: extras/models/models.py:70 +msgid "Triggers when a matching object is updated." +msgstr "Se activa cuando se actualiza un objeto coincidente." + +#: extras/models/models.py:73 +msgid "on delete" +msgstr "al eliminar" + +#: extras/models/models.py:75 +msgid "Triggers when a matching object is deleted." +msgstr "Se activa cuando se elimina un objeto coincidente." + +#: extras/models/models.py:78 +msgid "on job start" +msgstr "al iniciar el trabajo" + +#: extras/models/models.py:80 +msgid "Triggers when a job for a matching object is started." +msgstr "Se activa cuando se inicia un trabajo para un objeto coincidente." + +#: extras/models/models.py:83 +msgid "on job end" +msgstr "al final del trabajo" + +#: extras/models/models.py:85 +msgid "Triggers when a job for a matching object terminates." +msgstr "Se activa cuando finaliza un trabajo para un objeto coincidente." + +#: extras/models/models.py:92 +msgid "conditions" +msgstr "condiciones" + +#: extras/models/models.py:95 +msgid "" +"A set of conditions which determine whether the event will be generated." +msgstr "Conjunto de condiciones que determinan si se generará el evento." + +#: extras/models/models.py:103 +msgid "action type" +msgstr "tipo de acción" + +#: extras/models/models.py:126 +msgid "Additional data to pass to the action object" +msgstr "Datos adicionales para pasar al objeto de acción" + +#: extras/models/models.py:138 +msgid "event rule" +msgstr "regla de evento" + +#: extras/models/models.py:139 +msgid "event rules" +msgstr "reglas del evento" + +#: extras/models/models.py:155 +msgid "" +"At least one event type must be selected: create, update, delete, job start," +" and/or job end." +msgstr "" +"Debe seleccionarse al menos un tipo de evento: crear, actualizar, eliminar, " +"iniciar o finalizar el trabajo." + +#: extras/models/models.py:196 +msgid "" +"This URL will be called using the HTTP method defined when the webhook is " +"called. Jinja2 template processing is supported with the same context as the" +" request body." +msgstr "" +"Esta URL se llamará mediante el método HTTP definido cuando se llame al " +"webhook. El procesamiento de plantillas de Jinja2 se admite en el mismo " +"contexto que el cuerpo de la solicitud." + +#: extras/models/models.py:211 +msgid "" +"The complete list of official content types is available here." +msgstr "" +"La lista completa de tipos de contenido oficial está disponible aquí." + +#: extras/models/models.py:216 +msgid "additional headers" +msgstr "encabezados adicionales" + +#: extras/models/models.py:219 +msgid "" +"User-supplied HTTP headers to be sent with the request in addition to the " +"HTTP content type. Headers should be defined in the format Name: " +"Value. Jinja2 template processing is supported with the same context " +"as the request body (below)." +msgstr "" +"Encabezados HTTP proporcionados por el usuario que se enviarán con la " +"solicitud además del tipo de contenido HTTP. Los encabezados deben definirse" +" en el formato Nombre: Value. El procesamiento de plantillas de" +" Jinja2 se admite en el mismo contexto que el cuerpo de la solicitud (a " +"continuación)." + +#: extras/models/models.py:225 +msgid "body template" +msgstr "plantilla corporal" + +#: extras/models/models.py:228 +msgid "" +"Jinja2 template for a custom request body. If blank, a JSON object " +"representing the change will be included. Available context data includes: " +"event, model, timestamp, " +"username, request_id, and data." +msgstr "" +"Plantilla Jinja2 para un cuerpo de solicitud personalizado. Si está en " +"blanco, se incluirá un objeto JSON que representa el cambio. Los datos " +"contextuales disponibles incluyen: acto, modelo, " +"marca de tiempo, nombre de usuario, " +"id_solicitud, y dato." + +#: extras/models/models.py:234 +msgid "secret" +msgstr "secreto" + +#: extras/models/models.py:238 +msgid "" +"When provided, the request will include a X-Hook-Signature " +"header containing a HMAC hex digest of the payload body using the secret as " +"the key. The secret is not transmitted in the request." +msgstr "" +"Cuando se proporcione, la solicitud incluirá un Firma de X-Hook" +" encabezado que contiene un resumen hexadecimal en HMAC del cuerpo de la " +"carga utilizando el secreto como clave. El secreto no se transmite en la " +"solicitud." + +#: extras/models/models.py:245 +msgid "Enable SSL certificate verification. Disable with caution!" +msgstr "" +"Habilita la verificación del certificado SSL. ¡Desactívala con precaución!" + +#: extras/models/models.py:251 templates/extras/webhook.html:62 +msgid "CA File Path" +msgstr "Ruta del archivo CA" + +#: extras/models/models.py:253 +msgid "" +"The specific CA certificate file to use for SSL verification. Leave blank to" +" use the system defaults." +msgstr "" +"El archivo de certificado de CA específico que se utilizará para la " +"verificación SSL. Déjelo en blanco para usar los valores predeterminados del" +" sistema." + +#: extras/models/models.py:264 +msgid "webhook" +msgstr "webhook" + +#: extras/models/models.py:265 +msgid "webhooks" +msgstr "webhooks" + +#: extras/models/models.py:283 +msgid "Do not specify a CA certificate file if SSL verification is disabled." +msgstr "" +"No especifique un archivo de certificado de CA si la verificación SSL está " +"deshabilitada." + +#: extras/models/models.py:323 +msgid "The object type(s) to which this link applies." +msgstr "Los tipos de objeto a los que se aplica este enlace." + +#: extras/models/models.py:335 +msgid "link text" +msgstr "texto de enlace" + +#: extras/models/models.py:336 +msgid "Jinja2 template code for link text" +msgstr "Código de plantilla Jinja2 para texto de enlace" + +#: extras/models/models.py:339 +msgid "link URL" +msgstr "URL del enlace" + +#: extras/models/models.py:340 +msgid "Jinja2 template code for link URL" +msgstr "Código de plantilla Jinja2 para la URL del enlace" + +#: extras/models/models.py:350 +msgid "Links with the same group will appear as a dropdown menu" +msgstr "Los enlaces con el mismo grupo aparecerán en un menú desplegable" + +#: extras/models/models.py:353 +msgid "button class" +msgstr "clase de botones" + +#: extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" +"La clase del primer enlace de un grupo se usará para el botón desplegable" + +#: extras/models/models.py:360 +msgid "new window" +msgstr "ventana nueva" + +#: extras/models/models.py:362 +msgid "Force link to open in a new window" +msgstr "Forzar que el enlace se abra en una ventana nueva" + +#: extras/models/models.py:371 +msgid "custom link" +msgstr "enlace personalizado" + +#: extras/models/models.py:372 +msgid "custom links" +msgstr "enlaces personalizados" + +#: extras/models/models.py:419 +msgid "The object type(s) to which this template applies." +msgstr "Los tipos de objeto a los que se aplica esta plantilla." + +#: extras/models/models.py:432 +msgid "" +"Jinja2 template code. The list of objects being exported is passed as a " +"context variable named queryset." +msgstr "" +"Código de plantilla Jinja2. La lista de objetos que se exportan se pasa como" +" una variable de contexto denominada conjunto de consultas." + +#: extras/models/models.py:440 +msgid "Defaults to text/plain; charset=utf-8" +msgstr "El valor predeterminado es texto/plano; charset=utf-8" + +#: extras/models/models.py:443 +msgid "file extension" +msgstr "extensión de archivo" + +#: extras/models/models.py:446 +msgid "Extension to append to the rendered filename" +msgstr "Extensión para añadir al nombre de archivo renderizado" + +#: extras/models/models.py:449 +msgid "as attachment" +msgstr "como adjunto" + +#: extras/models/models.py:451 +msgid "Download file as attachment" +msgstr "Descargar archivo como archivo adjunto" + +#: extras/models/models.py:460 +msgid "export template" +msgstr "plantilla de exportación" + +#: extras/models/models.py:461 +msgid "export templates" +msgstr "plantillas de exportación" + +#: extras/models/models.py:478 +#, python-brace-format +msgid "\"{name}\" is a reserved name. Please choose a different name." +msgstr "«{name}\"es un nombre reservado. Elija un nombre diferente." + +#: extras/models/models.py:528 +msgid "The object type(s) to which this filter applies." +msgstr "Los tipos de objeto a los que se aplica este filtro." + +#: extras/models/models.py:560 +msgid "shared" +msgstr "compartido" + +#: extras/models/models.py:573 +msgid "saved filter" +msgstr "filtro guardado" + +#: extras/models/models.py:574 +msgid "saved filters" +msgstr "filtros guardados" + +#: extras/models/models.py:592 +msgid "Filter parameters must be stored as a dictionary of keyword arguments." +msgstr "" +"Los parámetros de filtro se deben almacenar como un diccionario de " +"argumentos de palabras clave." + +#: extras/models/models.py:620 +msgid "image height" +msgstr "altura de la imagen" + +#: extras/models/models.py:623 +msgid "image width" +msgstr "ancho de imagen" + +#: extras/models/models.py:640 +msgid "image attachment" +msgstr "adjunto de imagen" + +#: extras/models/models.py:641 +msgid "image attachments" +msgstr "archivos adjuntos de imágenes" + +#: extras/models/models.py:655 +#, python-brace-format +msgid "Image attachments cannot be assigned to this object type ({type})." +msgstr "" +"Los archivos adjuntos de imágenes no se pueden asignar a este tipo de objeto" +" ({type})." + +#: extras/models/models.py:718 +msgid "kind" +msgstr "amable" + +#: extras/models/models.py:732 +msgid "journal entry" +msgstr "entrada de diario" + +#: extras/models/models.py:733 +msgid "journal entries" +msgstr "entradas de diario" + +#: extras/models/models.py:748 +#, python-brace-format +msgid "Journaling is not supported for this object type ({type})." +msgstr "No se admite el registro en diario para este tipo de objeto ({type})." + +#: extras/models/models.py:790 +msgid "bookmark" +msgstr "marcalibros" + +#: extras/models/models.py:791 +msgid "bookmarks" +msgstr "marcapáginas" + +#: extras/models/models.py:804 +#, python-brace-format +msgid "Bookmarks cannot be assigned to this object type ({type})." +msgstr "No se pueden asignar marcadores a este tipo de objeto ({type})." + +#: extras/models/reports.py:46 +msgid "report module" +msgstr "módulo de informes" + +#: extras/models/reports.py:47 +msgid "report modules" +msgstr "módulos de informes" + +#: extras/models/scripts.py:46 +msgid "script module" +msgstr "módulo de script" + +#: extras/models/scripts.py:47 +msgid "script modules" +msgstr "módulos de script" + +#: extras/models/search.py:24 +msgid "timestamp" +msgstr "marca de tiempo" + +#: extras/models/search.py:39 +msgid "field" +msgstr "campo" + +#: extras/models/search.py:47 +msgid "value" +msgstr "valor" + +#: extras/models/search.py:58 +msgid "cached value" +msgstr "valor almacenado en caché" + +#: extras/models/search.py:59 +msgid "cached values" +msgstr "valores en caché" + +#: extras/models/staging.py:44 +msgid "branch" +msgstr "sucursal" + +#: extras/models/staging.py:45 +msgid "branches" +msgstr "sucursales" + +#: extras/models/staging.py:97 +msgid "staged change" +msgstr "cambio por etapas" + +#: extras/models/staging.py:98 +msgid "staged changes" +msgstr "cambios por etapas" + +#: extras/models/tags.py:40 +msgid "The object type(s) to which this this tag can be applied." +msgstr "Los tipos de objeto a los que se puede aplicar esta etiqueta." + +#: extras/models/tags.py:49 +msgid "tag" +msgstr "etiqueta" + +#: extras/models/tags.py:50 +msgid "tags" +msgstr "etiquetas" + +#: extras/models/tags.py:78 +msgid "tagged item" +msgstr "artículo etiquetado" + +#: extras/models/tags.py:79 +msgid "tagged items" +msgstr "artículos etiquetados" + +#: extras/signals.py:221 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "La eliminación se impide mediante una regla de protección: {message}" + +#: extras/tables/tables.py:44 extras/tables/tables.py:119 +#: extras/tables/tables.py:143 extras/tables/tables.py:208 +#: extras/tables/tables.py:281 +msgid "Content Types" +msgstr "Tipos de contenido" + +#: extras/tables/tables.py:50 +msgid "Visible" +msgstr "Visible" + +#: extras/tables/tables.py:53 +msgid "Editable" +msgstr "Editable" + +#: extras/tables/tables.py:60 templates/extras/customfield.html:48 +msgid "Choice Set" +msgstr "Set de elección" + +#: extras/tables/tables.py:68 +msgid "Is Cloneable" +msgstr "Se puede clonar" + +#: extras/tables/tables.py:98 +msgid "Count" +msgstr "Contar" + +#: extras/tables/tables.py:101 +msgid "Order Alphabetically" +msgstr "Ordenar alfabéticamente" + +#: extras/tables/tables.py:125 templates/extras/customlink.html:34 +msgid "New Window" +msgstr "Ventana nueva" + +#: extras/tables/tables.py:146 +msgid "As Attachment" +msgstr "Como archivo adjunto" + +#: extras/tables/tables.py:153 extras/tables/tables.py:367 +#: extras/tables/tables.py:402 templates/core/datafile.html:32 +#: templates/dcim/device/render_config.html:23 +#: templates/extras/configcontext.html:40 +#: templates/extras/configtemplate.html:32 +#: templates/extras/exporttemplate.html:51 +#: templates/generic/bulk_import.html:30 +#: templates/virtualization/virtualmachine/render_config.html:23 +msgid "Data File" +msgstr "Archivo de datos" + +#: extras/tables/tables.py:158 extras/tables/tables.py:379 +#: extras/tables/tables.py:407 +msgid "Synced" +msgstr "Sincronizado" + +#: extras/tables/tables.py:178 +msgid "Content Type" +msgstr "Tipo de contenido" + +#: extras/tables/tables.py:185 +msgid "Image" +msgstr "Imagen" + +#: extras/tables/tables.py:190 +msgid "Size (Bytes)" +msgstr "Tamaño (bytes)" + +#: extras/tables/tables.py:233 extras/tables/tables.py:326 +#: templates/extras/customfield.html:96 templates/extras/eventrule.html:32 +#: templates/users/objectpermission.html:68 users/tables.py:83 +msgid "Object Types" +msgstr "Tipos de objetos" + +#: extras/tables/tables.py:255 +msgid "SSL Validation" +msgstr "Validación SSL" + +#: extras/tables/tables.py:278 +msgid "Action Type" +msgstr "Tipo de acción" + +#: extras/tables/tables.py:296 +msgid "Job Start" +msgstr "Inicio del trabajo" + +#: extras/tables/tables.py:299 +msgid "Job End" +msgstr "Fin del trabajo" + +#: extras/tables/tables.py:436 templates/account/profile.html:20 +#: templates/users/user.html:22 +msgid "Full Name" +msgstr "Nombre completo" + +#: extras/tables/tables.py:453 templates/extras/objectchange.html:72 +msgid "Request ID" +msgstr "ID de solicitud" + +#: extras/tables/tables.py:490 +msgid "Comments (Short)" +msgstr "Comentarios (cortos)" + +#: extras/validators.py:13 +#, python-format +msgid "Ensure this value is equal to %(limit_value)s." +msgstr "Asegúrese de que este valor sea igual a %(limit_value)s." + +#: extras/validators.py:24 +#, python-format +msgid "Ensure this value does not equal %(limit_value)s." +msgstr "Asegúrese de que este valor no sea igual %(limit_value)s." + +#: extras/validators.py:35 +msgid "This field must be empty." +msgstr "Este campo debe estar vacío." + +#: extras/validators.py:50 +msgid "This field must not be empty." +msgstr "Este campo no debe estar vacío." + +#: extras/views.py:880 +msgid "Your dashboard has been reset." +msgstr "Tu panel de control se ha restablecido." + +#: ipam/api/field_serializers.py:17 +msgid "Enter a valid IPv4 or IPv6 address with optional mask." +msgstr "Introduzca una dirección IPv4 o IPv6 válida con máscara opcional." + +#: ipam/api/field_serializers.py:24 +#, python-brace-format +msgid "Invalid IP address format: {data}" +msgstr "Formato de dirección IP no válido: {data}" + +#: ipam/api/field_serializers.py:37 +msgid "Enter a valid IPv4 or IPv6 prefix and mask in CIDR notation." +msgstr "" +"Introduzca un prefijo y una máscara IPv4 o IPv6 válidos en notación CIDR." + +#: ipam/api/field_serializers.py:44 +#, python-brace-format +msgid "Invalid IP prefix format: {data}" +msgstr "Formato de prefijo IP no válido: {data}" + +#: ipam/choices.py:30 +msgid "Container" +msgstr "Contenedor" + +#: ipam/choices.py:72 +msgid "DHCP" +msgstr "DHCP" + +#: ipam/choices.py:73 +msgid "SLAAC" +msgstr "SLACO" + +#: ipam/choices.py:89 +msgid "Loopback" +msgstr "Bucle invertido" + +#: ipam/choices.py:90 tenancy/choices.py:18 +msgid "Secondary" +msgstr "Secundaria" + +#: ipam/choices.py:91 +msgid "Anycast" +msgstr "Anycast" + +#: ipam/choices.py:115 +msgid "Standard" +msgstr "Estándar" + +#: ipam/choices.py:120 +msgid "CheckPoint" +msgstr "Punto de control" + +#: ipam/choices.py:123 +msgid "Cisco" +msgstr "Cisco" + +#: ipam/choices.py:137 +msgid "Plaintext" +msgstr "Texto plano" + +#: ipam/filtersets.py:47 vpn/filtersets.py:276 +msgid "Import target" +msgstr "Objetivo de importación" + +#: ipam/filtersets.py:53 vpn/filtersets.py:282 +msgid "Import target (name)" +msgstr "Destino de importación (nombre)" + +#: ipam/filtersets.py:58 vpn/filtersets.py:287 +msgid "Export target" +msgstr "Objetivo de exportación" + +#: ipam/filtersets.py:64 vpn/filtersets.py:293 +msgid "Export target (name)" +msgstr "Destino de exportación (nombre)" + +#: ipam/filtersets.py:85 +msgid "Importing VRF" +msgstr "Importación de VRF" + +#: ipam/filtersets.py:91 +msgid "Import VRF (RD)" +msgstr "Importar VRF (RD)" + +#: ipam/filtersets.py:96 +msgid "Exporting VRF" +msgstr "Exportación de VRF" + +#: ipam/filtersets.py:102 +msgid "Export VRF (RD)" +msgstr "Exportar VRF (RD)" + +#: ipam/filtersets.py:132 ipam/filtersets.py:247 ipam/forms/model_forms.py:229 +#: ipam/tables/ip.py:211 templates/ipam/prefix.html:12 +msgid "Prefix" +msgstr "Prefijo" + +#: ipam/filtersets.py:136 ipam/filtersets.py:175 ipam/filtersets.py:198 +msgid "RIR (ID)" +msgstr "RIR (ID)" + +#: ipam/filtersets.py:142 ipam/filtersets.py:181 ipam/filtersets.py:204 +msgid "RIR (slug)" +msgstr "RIR (babosa)" + +#: ipam/filtersets.py:251 +msgid "Within prefix" +msgstr "Dentro del prefijo" + +#: ipam/filtersets.py:255 +msgid "Within and including prefix" +msgstr "Dentro del prefijo e incluído" + +#: ipam/filtersets.py:259 +msgid "Prefixes which contain this prefix or IP" +msgstr "Prefijos que contienen este prefijo o IP" + +#: ipam/filtersets.py:270 ipam/filtersets.py:538 ipam/forms/bulk_edit.py:326 +#: ipam/forms/filtersets.py:191 ipam/forms/filtersets.py:317 +msgid "Mask length" +msgstr "Longitud de la máscara" + +#: ipam/filtersets.py:339 vpn/filtersets.py:399 +msgid "VLAN (ID)" +msgstr "VLAN (ID)" + +#: ipam/filtersets.py:343 vpn/filtersets.py:394 +msgid "VLAN number (1-4094)" +msgstr "Número de VLAN (1-4094)" + +#: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 +#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: tenancy/forms/bulk_edit.py:112 +msgid "Address" +msgstr "Dirección" + +#: ipam/filtersets.py:445 +msgid "Ranges which contain this prefix or IP" +msgstr "Intervalos que contienen este prefijo o IP" + +#: ipam/filtersets.py:473 ipam/filtersets.py:529 +msgid "Parent prefix" +msgstr "Prefijo principal" + +#: ipam/filtersets.py:582 ipam/filtersets.py:812 ipam/filtersets.py:1031 +#: vpn/filtersets.py:357 +msgid "Virtual machine (name)" +msgstr "Máquina virtual (nombre)" + +#: ipam/filtersets.py:587 ipam/filtersets.py:817 ipam/filtersets.py:1025 +#: virtualization/filtersets.py:276 virtualization/filtersets.py:315 +#: vpn/filtersets.py:362 +msgid "Virtual machine (ID)" +msgstr "Máquina virtual (ID)" + +#: ipam/filtersets.py:593 vpn/filtersets.py:97 vpn/filtersets.py:368 +msgid "Interface (name)" +msgstr "Interfaz (nombre)" + +#: ipam/filtersets.py:598 vpn/filtersets.py:102 vpn/filtersets.py:373 +msgid "Interface (ID)" +msgstr "Interfaz (ID)" + +#: ipam/filtersets.py:604 vpn/filtersets.py:108 vpn/filtersets.py:379 +msgid "VM interface (name)" +msgstr "Interfaz VM (nombre)" + +#: ipam/filtersets.py:609 vpn/filtersets.py:113 +msgid "VM interface (ID)" +msgstr "Interfaz de máquina virtual (ID)" + +#: ipam/filtersets.py:614 +msgid "FHRP group (ID)" +msgstr "Grupo FHRP (ID)" + +#: ipam/filtersets.py:618 +msgid "Is assigned to an interface" +msgstr "Está asignado a una interfaz" + +#: ipam/filtersets.py:622 +msgid "Is assigned" +msgstr "Está asignado" + +#: ipam/filtersets.py:1036 +msgid "IP address (ID)" +msgstr "Dirección IP (ID)" + +#: ipam/filtersets.py:1042 ipam/models/ip.py:787 +msgid "IP address" +msgstr "dirección IP" + +#: ipam/filtersets.py:1068 +msgid "Primary IPv4 (ID)" +msgstr "IPv4 principal (ID)" + +#: ipam/filtersets.py:1073 +msgid "Primary IPv6 (ID)" +msgstr "IPv6 principal (ID)" + +#: ipam/forms/bulk_create.py:14 +msgid "Address pattern" +msgstr "Patrón de direcciones" + +#: ipam/forms/bulk_edit.py:85 +msgid "Is private" +msgstr "Es privado" + +#: ipam/forms/bulk_edit.py:106 ipam/forms/bulk_edit.py:135 +#: ipam/forms/bulk_edit.py:160 ipam/forms/bulk_import.py:88 +#: ipam/forms/bulk_import.py:108 ipam/forms/bulk_import.py:128 +#: ipam/forms/filtersets.py:109 ipam/forms/filtersets.py:124 +#: ipam/forms/filtersets.py:147 ipam/forms/model_forms.py:93 +#: ipam/forms/model_forms.py:108 ipam/forms/model_forms.py:130 +#: ipam/forms/model_forms.py:148 ipam/models/asns.py:31 +#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: ipam/tables/asn.py:20 ipam/tables/asn.py:45 +#: templates/ipam/aggregate.html:19 templates/ipam/asn.html:28 +#: templates/ipam/asnrange.html:20 templates/ipam/rir.html:20 +msgid "RIR" +msgstr "RIR" + +#: ipam/forms/bulk_edit.py:168 +msgid "Date added" +msgstr "Fecha añadida" + +#: ipam/forms/bulk_edit.py:229 +msgid "Prefix length" +msgstr "Longitud del prefijo" + +#: ipam/forms/bulk_edit.py:252 ipam/forms/filtersets.py:236 +#: templates/ipam/prefix.html:86 +msgid "Is a pool" +msgstr "Es una piscina" + +#: ipam/forms/bulk_edit.py:257 ipam/forms/bulk_edit.py:301 +#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#, python-format +msgid "Treat as 100%% utilized" +msgstr "Tratar como utilizado al 100%%" + +#: ipam/forms/bulk_edit.py:349 ipam/models/ip.py:771 +msgid "DNS name" +msgstr "Nombre DNS" + +#: ipam/forms/bulk_edit.py:370 ipam/forms/bulk_edit.py:569 +#: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:376 +#: ipam/forms/filtersets.py:511 templates/ipam/fhrpgroup.html:23 +#: templates/ipam/inc/panels/fhrp_groups.html:11 +#: templates/ipam/service.html:35 templates/ipam/servicetemplate.html:20 +msgid "Protocol" +msgstr "Protocolo" + +#: ipam/forms/bulk_edit.py:377 ipam/forms/filtersets.py:383 +#: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:27 +msgid "Group ID" +msgstr "ID de grupo" + +#: ipam/forms/bulk_edit.py:382 ipam/forms/filtersets.py:388 +#: wireless/forms/bulk_edit.py:67 wireless/forms/bulk_edit.py:114 +#: wireless/forms/bulk_import.py:62 wireless/forms/bulk_import.py:65 +#: wireless/forms/bulk_import.py:104 wireless/forms/bulk_import.py:107 +#: wireless/forms/filtersets.py:53 wireless/forms/filtersets.py:87 +msgid "Authentication type" +msgstr "Tipo de autenticación" + +#: ipam/forms/bulk_edit.py:387 ipam/forms/filtersets.py:392 +msgid "Authentication key" +msgstr "Clave de autenticación" + +#: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 +#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: templates/ipam/fhrpgroup.html:51 +#: templates/wireless/inc/authentication_attrs.html:5 +#: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 +#: wireless/forms/filtersets.py:35 wireless/forms/filtersets.py:75 +#: wireless/forms/model_forms.py:56 wireless/forms/model_forms.py:161 +msgid "Authentication" +msgstr "AUTENTICACIÓN" + +#: ipam/forms/bulk_edit.py:414 +msgid "Minimum child VLAN VID" +msgstr "VLAN (VID) secundaria mínima" + +#: ipam/forms/bulk_edit.py:420 +msgid "Maximum child VLAN VID" +msgstr "VLAN (VID) secundaria máxima" + +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +msgid "Scope type" +msgstr "Tipo de ámbito" + +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 +msgid "Scope" +msgstr "Alcance" + +#: ipam/forms/bulk_edit.py:560 +msgid "Site & Group" +msgstr "Sitio y grupo" + +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 +#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/tables/services.py:49 templates/ipam/service.html:39 +#: templates/ipam/servicetemplate.html:24 +msgid "Ports" +msgstr "Puertos" + +#: ipam/forms/bulk_import.py:47 +msgid "Import route targets" +msgstr "Importar destinos de ruta" + +#: ipam/forms/bulk_import.py:53 +msgid "Export route targets" +msgstr "Exportar destinos de ruta" + +#: ipam/forms/bulk_import.py:91 ipam/forms/bulk_import.py:111 +#: ipam/forms/bulk_import.py:131 +msgid "Assigned RIR" +msgstr "RIR asignado" + +#: ipam/forms/bulk_import.py:181 +msgid "VLAN's group (if any)" +msgstr "Grupo de VLAN (si lo hay)" + +#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:219 +#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 +#: templates/ipam/prefix.html:61 templates/ipam/vlan.html:13 +#: templates/ipam/vlan/base.html:6 templates/ipam/vlan_edit.html:10 +#: templates/vpn/l2vpntermination_edit.html:17 +#: templates/wireless/wirelesslan.html:31 vpn/forms/bulk_import.py:299 +#: vpn/forms/filtersets.py:280 vpn/forms/model_forms.py:427 +#: wireless/forms/bulk_edit.py:54 wireless/forms/bulk_import.py:48 +#: wireless/forms/model_forms.py:49 wireless/models.py:101 +msgid "VLAN" +msgstr "VLAN" + +#: ipam/forms/bulk_import.py:307 +msgid "Parent device of assigned interface (if any)" +msgstr "Dispositivo principal de la interfaz asignada (si existe)" + +#: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 +#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:282 +#: virtualization/filtersets.py:321 virtualization/forms/bulk_edit.py:199 +#: virtualization/forms/bulk_edit.py:325 +#: virtualization/forms/bulk_import.py:146 +#: virtualization/forms/bulk_import.py:207 +#: virtualization/forms/filtersets.py:204 +#: virtualization/forms/filtersets.py:240 +#: virtualization/forms/model_forms.py:291 vpn/forms/bulk_import.py:93 +#: vpn/forms/bulk_import.py:285 +msgid "Virtual machine" +msgstr "Máquina virtual" + +#: ipam/forms/bulk_import.py:314 +msgid "Parent VM of assigned interface (if any)" +msgstr "VM principal de la interfaz asignada (si existe)" + +#: ipam/forms/bulk_import.py:321 +msgid "Assigned interface" +msgstr "Interfaz asignada" + +#: ipam/forms/bulk_import.py:324 +msgid "Is primary" +msgstr "Es primaria" + +#: ipam/forms/bulk_import.py:325 +msgid "Make this the primary IP for the assigned device" +msgstr "Conviértase en la IP principal del dispositivo asignado" + +#: ipam/forms/bulk_import.py:364 +msgid "No device or virtual machine specified; cannot set as primary IP" +msgstr "" +"No se especificó ningún dispositivo o máquina virtual; no se puede " +"establecer como IP principal" + +#: ipam/forms/bulk_import.py:368 +msgid "No interface specified; cannot set as primary IP" +msgstr "" +"No se especificó ninguna interfaz; no se puede establecer como IP principal" + +#: ipam/forms/bulk_import.py:397 +msgid "Auth type" +msgstr "Tipo de autenticación" + +#: ipam/forms/bulk_import.py:412 +msgid "Scope type (app & model)" +msgstr "Tipo de ámbito (aplicación y modelo)" + +#: ipam/forms/bulk_import.py:418 +#, python-brace-format +msgid "Minimum child VLAN VID (default: {minimum})" +msgstr "VLAN (VID) secundaria mínima (predeterminado): {minimum})" + +#: ipam/forms/bulk_import.py:424 +#, python-brace-format +msgid "Maximum child VLAN VID (default: {maximum})" +msgstr "Número máximo de VID de VLAN secundaria (predeterminado: {maximum})" + +#: ipam/forms/bulk_import.py:448 +msgid "Assigned VLAN group" +msgstr "Grupo de VLAN asignado" + +#: ipam/forms/bulk_import.py:479 ipam/forms/bulk_import.py:505 +msgid "IP protocol" +msgstr "Protocolo IP" + +#: ipam/forms/bulk_import.py:493 +msgid "Required if not assigned to a VM" +msgstr "Obligatorio si no está asignado a una VM" + +#: ipam/forms/bulk_import.py:500 +msgid "Required if not assigned to a device" +msgstr "Obligatorio si no está asignado a un dispositivo" + +#: ipam/forms/bulk_import.py:525 +#, python-brace-format +msgid "{ip} is not assigned to this device/VM." +msgstr "{ip} no está asignado a este dispositivo/máquina virtual." + +#: ipam/forms/filtersets.py:46 ipam/forms/model_forms.py:60 +#: netbox/navigation/menu.py:177 vpn/forms/model_forms.py:403 +msgid "Route Targets" +msgstr "Objetivos de ruta" + +#: ipam/forms/filtersets.py:52 ipam/forms/model_forms.py:47 +#: vpn/forms/filtersets.py:221 vpn/forms/model_forms.py:390 +msgid "Import targets" +msgstr "Importar objetivos" + +#: ipam/forms/filtersets.py:57 ipam/forms/model_forms.py:52 +#: vpn/forms/filtersets.py:226 vpn/forms/model_forms.py:395 +msgid "Export targets" +msgstr "Objetivos de exportación" + +#: ipam/forms/filtersets.py:72 +msgid "Imported by VRF" +msgstr "Importado por VRF" + +#: ipam/forms/filtersets.py:77 +msgid "Exported by VRF" +msgstr "Exportado por VRF" + +#: ipam/forms/filtersets.py:86 ipam/tables/ip.py:89 templates/ipam/rir.html:33 +msgid "Private" +msgstr "Privada" + +#: ipam/forms/filtersets.py:104 ipam/forms/filtersets.py:186 +#: ipam/forms/filtersets.py:261 ipam/forms/filtersets.py:312 +msgid "Address family" +msgstr "Familia de direcciones" + +#: ipam/forms/filtersets.py:118 templates/ipam/asnrange.html:26 +msgid "Range" +msgstr "Alcance" + +#: ipam/forms/filtersets.py:127 +msgid "Start" +msgstr "Comenzar" + +#: ipam/forms/filtersets.py:131 +msgid "End" +msgstr "Fin" + +#: ipam/forms/filtersets.py:181 +msgid "Search within" +msgstr "Busca dentro" + +#: ipam/forms/filtersets.py:202 ipam/forms/filtersets.py:328 +msgid "Present in VRF" +msgstr "Presente en VRF" + +#: ipam/forms/filtersets.py:243 ipam/forms/filtersets.py:282 +#, python-format +msgid "Marked as 100% utilized" +msgstr "Marcado como 100% utilizado" + +#: ipam/forms/filtersets.py:297 +msgid "Device/VM" +msgstr "Dispositivo/VM" + +#: ipam/forms/filtersets.py:333 +msgid "Assigned Device" +msgstr "Dispositivo asignado" + +#: ipam/forms/filtersets.py:338 +msgid "Assigned VM" +msgstr "VM asignada" + +#: ipam/forms/filtersets.py:352 +msgid "Assigned to an interface" +msgstr "Asignado a una interfaz" + +#: ipam/forms/filtersets.py:359 templates/ipam/ipaddress.html:54 +msgid "DNS Name" +msgstr "Nombre DNS" + +#: ipam/forms/filtersets.py:401 ipam/forms/filtersets.py:494 +#: ipam/models/vlans.py:156 templates/ipam/vlan.html:34 +msgid "VLAN ID" +msgstr "IDENTIFICADOR DE VLAN" + +#: ipam/forms/filtersets.py:433 +msgid "Minimum VID" +msgstr "VID mínimo" + +#: ipam/forms/filtersets.py:439 +msgid "Maximum VID" +msgstr "VID máximo" + +#: ipam/forms/filtersets.py:516 +msgid "Port" +msgstr "Puerto" + +#: ipam/forms/filtersets.py:537 ipam/tables/vlans.py:191 +#: templates/ipam/ipaddress_edit.html:47 templates/ipam/service_create.html:22 +#: templates/ipam/service_edit.html:21 +#: templates/virtualization/virtualdisk.html:22 +#: templates/virtualization/virtualmachine.html:13 +#: templates/virtualization/vminterface.html:24 +#: templates/vpn/l2vpntermination_edit.html:27 +#: templates/vpn/tunneltermination.html:26 +#: virtualization/forms/filtersets.py:189 +#: virtualization/forms/filtersets.py:234 +#: virtualization/forms/model_forms.py:223 +#: virtualization/tables/virtualmachines.py:115 +#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 +#: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:269 +msgid "Virtual Machine" +msgstr "Máquina virtual" + +#: ipam/forms/model_forms.py:113 ipam/tables/ip.py:116 +#: templates/ipam/aggregate.html:11 templates/ipam/prefix.html:39 +msgid "Aggregate" +msgstr "Agregado" + +#: ipam/forms/model_forms.py:134 templates/ipam/asnrange.html:12 +msgid "ASN Range" +msgstr "Gama ASN" + +#: ipam/forms/model_forms.py:230 +msgid "Site/VLAN Assignment" +msgstr "Asignación de sitio/VLAN" + +#: ipam/forms/model_forms.py:256 templates/ipam/iprange.html:11 +msgid "IP Range" +msgstr "Rango de IP" + +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 +msgid "FHRP Group" +msgstr "Grupo FHRP" + +#: ipam/forms/model_forms.py:300 +msgid "Make this the primary IP for the device/VM" +msgstr "Haga que esta sea la IP principal del dispositivo/VM" + +#: ipam/forms/model_forms.py:351 +msgid "An IP address can only be assigned to a single object." +msgstr "Solo se puede asignar una dirección IP a un único objeto." + +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:878 +msgid "" +"Cannot reassign IP address while it is designated as the primary IP for the " +"parent object" +msgstr "" +"No se puede reasignar la dirección IP mientras esté designada como la IP " +"principal del objeto principal" + +#: ipam/forms/model_forms.py:367 +msgid "" +"Only IP addresses assigned to an interface can be designated as primary IPs." +msgstr "" +"Solo las direcciones IP asignadas a una interfaz se pueden designar como IP " +"principales." + +#: ipam/forms/model_forms.py:373 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "{ip} es un ID de red, que no puede asignarse a una interfaz." + +#: ipam/forms/model_forms.py:379 +#, python-brace-format +msgid "" +"{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "" +"{ip} es una dirección de transmisión, que puede no estar asignada a una " +"interfaz." + +#: ipam/forms/model_forms.py:456 +msgid "Virtual IP Address" +msgstr "Dirección IP virtual" + +#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 +#: templates/ipam/vlangroup.html:27 +msgid "VLAN Group" +msgstr "Grupo VLAN" + +#: ipam/forms/model_forms.py:599 +msgid "Child VLANs" +msgstr "VLAN secundarias" + +#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +msgid "" +"Comma-separated list of one or more port numbers. A range may be specified " +"using a hyphen." +msgstr "" +"Lista separada por comas de uno o más números de puerto. Se puede " +"especificar un rango mediante un guión." + +#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +msgid "Service Template" +msgstr "Plantilla de servicio" + +#: ipam/forms/model_forms.py:724 +msgid "Service template" +msgstr "Plantilla de servicio" + +#: ipam/models/asns.py:34 +msgid "start" +msgstr "comienzo" + +#: ipam/models/asns.py:51 +msgid "ASN range" +msgstr "Gama ASN" + +#: ipam/models/asns.py:52 +msgid "ASN ranges" +msgstr "Gamas de ASN" + +#: ipam/models/asns.py:72 +#, python-brace-format +msgid "Starting ASN ({start}) must be lower than ending ASN ({end})." +msgstr "Iniciar ASN ({start}) debe ser inferior al ASN final ({end})." + +#: ipam/models/asns.py:104 +msgid "Regional Internet Registry responsible for this AS number space" +msgstr "Registro regional de Internet responsable de este espacio numérico AS" + +#: ipam/models/asns.py:109 +msgid "16- or 32-bit autonomous system number" +msgstr "Número de sistema autónomo de 16 o 32 bits" + +#: ipam/models/fhrp.py:22 +msgid "group ID" +msgstr "ID de grupo" + +#: ipam/models/fhrp.py:30 ipam/models/services.py:22 +msgid "protocol" +msgstr "protocolo" + +#: ipam/models/fhrp.py:38 wireless/models.py:27 +msgid "authentication type" +msgstr "tipo de autenticación" + +#: ipam/models/fhrp.py:43 +msgid "authentication key" +msgstr "clave de autenticación" + +#: ipam/models/fhrp.py:56 +msgid "FHRP group" +msgstr "Grupo FHRP" + +#: ipam/models/fhrp.py:57 +msgid "FHRP groups" +msgstr "Grupos FHRP" + +#: ipam/models/fhrp.py:93 tenancy/models/contacts.py:134 +msgid "priority" +msgstr "prioridad" + +#: ipam/models/fhrp.py:113 +msgid "FHRP group assignment" +msgstr "Asignación grupal de FHRP" + +#: ipam/models/fhrp.py:114 +msgid "FHRP group assignments" +msgstr "Tareas grupales de FHRP" + +#: ipam/models/ip.py:64 +msgid "private" +msgstr "privado" + +#: ipam/models/ip.py:65 +msgid "IP space managed by this RIR is considered private" +msgstr "El espacio IP administrado por este RIR se considera privado" + +#: ipam/models/ip.py:71 netbox/navigation/menu.py:170 +msgid "RIRs" +msgstr "RIR" + +#: ipam/models/ip.py:83 +msgid "IPv4 or IPv6 network" +msgstr "Red IPv4 o IPv6" + +#: ipam/models/ip.py:90 +msgid "Regional Internet Registry responsible for this IP space" +msgstr "Registro regional de Internet responsable de este espacio IP" + +#: ipam/models/ip.py:100 +msgid "date added" +msgstr "fecha añadida" + +#: ipam/models/ip.py:114 +msgid "aggregate" +msgstr "agregado" + +#: ipam/models/ip.py:115 +msgid "aggregates" +msgstr "agregados" + +#: ipam/models/ip.py:131 +msgid "Cannot create aggregate with /0 mask." +msgstr "No se puede crear un agregado con la máscara /0." + +#: ipam/models/ip.py:143 +#, python-brace-format +msgid "" +"Aggregates cannot overlap. {prefix} is already covered by an existing " +"aggregate ({aggregate})." +msgstr "" +"Los agregados no pueden superponerse. {prefix} ya está cubierto por un " +"agregado existente ({aggregate})." + +#: ipam/models/ip.py:157 +#, python-brace-format +msgid "" +"Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " +"({aggregate})." +msgstr "" +"Los prefijos no pueden superponerse a los agregados. {prefix} cubre un " +"agregado existente ({aggregate})." + +#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +msgid "role" +msgstr "papel" + +#: ipam/models/ip.py:200 +msgid "roles" +msgstr "papeles" + +#: ipam/models/ip.py:216 ipam/models/ip.py:292 +msgid "prefix" +msgstr "prefijo" + +#: ipam/models/ip.py:217 +msgid "IPv4 or IPv6 network with mask" +msgstr "Red IPv4 o IPv6 con máscara" + +#: ipam/models/ip.py:253 +msgid "Operational status of this prefix" +msgstr "Estado operativo de este prefijo" + +#: ipam/models/ip.py:261 +msgid "The primary function of this prefix" +msgstr "La función principal de este prefijo" + +#: ipam/models/ip.py:264 +msgid "is a pool" +msgstr "es una piscina" + +#: ipam/models/ip.py:266 +msgid "All IP addresses within this prefix are considered usable" +msgstr "" +"Todas las direcciones IP incluidas en este prefijo se consideran " +"utilizables." + +#: ipam/models/ip.py:269 ipam/models/ip.py:536 +msgid "mark utilized" +msgstr "marca utilizada" + +#: ipam/models/ip.py:293 +msgid "prefixes" +msgstr "prefijos" + +#: ipam/models/ip.py:316 +msgid "Cannot create prefix with /0 mask." +msgstr "No se puede crear un prefijo con la máscara /0." + +#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#, python-brace-format +msgid "VRF {vrf}" +msgstr "VRF {vrf}" + +#: ipam/models/ip.py:323 ipam/models/ip.py:854 +msgid "global table" +msgstr "tabla global" + +#: ipam/models/ip.py:325 +#, python-brace-format +msgid "Duplicate prefix found in {table}: {prefix}" +msgstr "Se encuentra un prefijo duplicado en {table}: {prefix}" + +#: ipam/models/ip.py:494 +msgid "start address" +msgstr "dirección de inicio" + +#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +msgid "IPv4 or IPv6 address (with mask)" +msgstr "Dirección IPv4 o IPv6 (con máscara)" + +#: ipam/models/ip.py:498 +msgid "end address" +msgstr "dirección final" + +#: ipam/models/ip.py:525 +msgid "Operational status of this range" +msgstr "Estado operativo de esta gama" + +#: ipam/models/ip.py:533 +msgid "The primary function of this range" +msgstr "La función principal de esta gama" + +#: ipam/models/ip.py:547 +msgid "IP range" +msgstr "Rango IP" + +#: ipam/models/ip.py:548 +msgid "IP ranges" +msgstr "Intervalos de IP" + +#: ipam/models/ip.py:564 +msgid "Starting and ending IP address versions must match" +msgstr "Las versiones de la dirección IP inicial y final deben coincidir" + +#: ipam/models/ip.py:570 +msgid "Starting and ending IP address masks must match" +msgstr "Las máscaras de direcciones IP iniciales y finales deben coincidir" + +#: ipam/models/ip.py:577 +#, python-brace-format +msgid "" +"Ending address must be lower than the starting address ({start_address})" +msgstr "" +"La dirección final debe ser inferior a la dirección inicial " +"({start_address})" + +#: ipam/models/ip.py:589 +#, python-brace-format +msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" +msgstr "" +"Las direcciones definidas se superponen con el rango {overlapping_range} en " +"VRF {vrf}" + +#: ipam/models/ip.py:598 +#, python-brace-format +msgid "Defined range exceeds maximum supported size ({max_size})" +msgstr "El rango definido supera el tamaño máximo admitido ({max_size})" + +#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +msgid "address" +msgstr "dirección" + +#: ipam/models/ip.py:733 +msgid "The operational status of this IP" +msgstr "El estado operativo de esta IP" + +#: ipam/models/ip.py:740 +msgid "The functional role of this IP" +msgstr "La función funcional de esta propiedad intelectual" + +#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:75 +msgid "NAT (inside)" +msgstr "NAT (interior)" + +#: ipam/models/ip.py:765 +msgid "The IP for which this address is the \"outside\" IP" +msgstr "La IP para la que esta dirección es la IP «externa»" + +#: ipam/models/ip.py:772 +msgid "Hostname or FQDN (not case-sensitive)" +msgstr "Nombre de host o FQDN (no distingue mayúsculas de minúsculas)" + +#: ipam/models/ip.py:788 ipam/models/services.py:94 +msgid "IP addresses" +msgstr "direcciones IP" + +#: ipam/models/ip.py:844 +msgid "Cannot create IP address with /0 mask." +msgstr "No se puede crear una dirección IP con la máscara /0." + +#: ipam/models/ip.py:856 +#, python-brace-format +msgid "Duplicate IP address found in {table}: {ipaddress}" +msgstr "Se encontró una dirección IP duplicada en {table}: {ipaddress}" + +#: ipam/models/ip.py:885 +msgid "Only IPv6 addresses can be assigned SLAAC status" +msgstr "Solo a las direcciones IPv6 se les puede asignar el estado SLAAC" + +#: ipam/models/services.py:33 +msgid "port numbers" +msgstr "números de puerto" + +#: ipam/models/services.py:59 +msgid "service template" +msgstr "plantilla de servicio" + +#: ipam/models/services.py:60 +msgid "service templates" +msgstr "plantillas de servicio" + +#: ipam/models/services.py:95 +msgid "The specific IP addresses (if any) to which this service is bound" +msgstr "" +"Las direcciones IP específicas (si las hay) a las que está vinculado este " +"servicio" + +#: ipam/models/services.py:102 +msgid "service" +msgstr "servicio" + +#: ipam/models/services.py:103 +msgid "services" +msgstr "servicios" + +#: ipam/models/services.py:117 +msgid "" +"A service cannot be associated with both a device and a virtual machine." +msgstr "" +"No se puede asociar un servicio tanto a un dispositivo como a una máquina " +"virtual." + +#: ipam/models/services.py:119 +msgid "" +"A service must be associated with either a device or a virtual machine." +msgstr "" +"Un servicio debe estar asociado a un dispositivo o a una máquina virtual." + +#: ipam/models/vlans.py:49 +msgid "minimum VLAN ID" +msgstr "ID de VLAN mínimo" + +#: ipam/models/vlans.py:55 +msgid "Lowest permissible ID of a child VLAN" +msgstr "El ID más bajo permitido de una VLAN secundaria" + +#: ipam/models/vlans.py:58 +msgid "maximum VLAN ID" +msgstr "ID de VLAN máximo" + +#: ipam/models/vlans.py:64 +msgid "Highest permissible ID of a child VLAN" +msgstr "El ID más alto permitido de una VLAN secundaria" + +#: ipam/models/vlans.py:85 +msgid "VLAN groups" +msgstr "Grupos de VLAN" + +#: ipam/models/vlans.py:95 +msgid "Cannot set scope_type without scope_id." +msgstr "No se puede establecer scope_type sin scope_id." + +#: ipam/models/vlans.py:97 +msgid "Cannot set scope_id without scope_type." +msgstr "No se puede establecer scope_id sin scope_type." + +#: ipam/models/vlans.py:102 +msgid "Maximum child VID must be greater than or equal to minimum child VID" +msgstr "" +"El número máximo de VID para niños debe ser mayor o igual al número mínimo " +"de VID para niños" + +#: ipam/models/vlans.py:145 +msgid "The specific site to which this VLAN is assigned (if any)" +msgstr "El sitio específico al que está asignada esta VLAN (si existe)" + +#: ipam/models/vlans.py:153 +msgid "VLAN group (optional)" +msgstr "Grupo de VLAN (opcional)" + +#: ipam/models/vlans.py:161 +msgid "Numeric VLAN ID (1-4094)" +msgstr "ID de VLAN numérico (1-4094)" + +#: ipam/models/vlans.py:179 +msgid "Operational status of this VLAN" +msgstr "Estado operativo de esta VLAN" + +#: ipam/models/vlans.py:187 +msgid "The primary function of this VLAN" +msgstr "La función principal de esta VLAN" + +#: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 +#: ipam/views.py:940 netbox/navigation/menu.py:181 +#: netbox/navigation/menu.py:183 +msgid "VLANs" +msgstr "VLAN" + +#: ipam/models/vlans.py:230 +#, python-brace-format +msgid "" +"VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " +"site {site}." +msgstr "" +"La VLAN está asignada al grupo {group} (alcance: {scope}); no se puede " +"asignar también al sitio {site}." + +#: ipam/models/vlans.py:238 +#, python-brace-format +msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgstr "" +"El VID debe estar entre {minimum} y {maximum} para las VLAN del grupo " +"{group}" + +#: ipam/models/vrfs.py:30 +msgid "route distinguisher" +msgstr "distinguidor de rutas" + +#: ipam/models/vrfs.py:31 +msgid "Unique route distinguisher (as defined in RFC 4364)" +msgstr "Distintor de ruta único (tal como se define en el RFC 4364)" + +#: ipam/models/vrfs.py:42 +msgid "enforce unique space" +msgstr "reforzar un espacio único" + +#: ipam/models/vrfs.py:43 +msgid "Prevent duplicate prefixes/IP addresses within this VRF" +msgstr "Evite la duplicación de prefijos/direcciones IP en este VRF" + +#: ipam/models/vrfs.py:63 netbox/navigation/menu.py:174 +#: netbox/navigation/menu.py:176 +msgid "VRFs" +msgstr "VRFs" + +#: ipam/models/vrfs.py:82 +msgid "Route target value (formatted in accordance with RFC 4360)" +msgstr "Valor objetivo de ruta (formateado de acuerdo con el RFC 4360)" + +#: ipam/models/vrfs.py:94 +msgid "route target" +msgstr "destino de ruta" + +#: ipam/models/vrfs.py:95 +msgid "route targets" +msgstr "objetivos de ruta" + +#: ipam/tables/asn.py:52 +msgid "ASDOT" +msgstr "COMO PUNTO" + +#: ipam/tables/asn.py:57 +msgid "Site Count" +msgstr "Recuento de sitios" + +#: ipam/tables/asn.py:62 +msgid "Provider Count" +msgstr "Recuento de proveedores" + +#: ipam/tables/ip.py:94 netbox/navigation/menu.py:167 +#: netbox/navigation/menu.py:169 +msgid "Aggregates" +msgstr "Agregados" + +#: ipam/tables/ip.py:124 +msgid "Added" +msgstr "Añadido" + +#: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 +#: ipam/views.py:349 netbox/navigation/menu.py:153 +#: netbox/navigation/menu.py:155 templates/ipam/vlan.html:87 +msgid "Prefixes" +msgstr "Prefijos" + +#: ipam/tables/ip.py:130 ipam/tables/ip.py:267 ipam/tables/ip.py:320 +#: ipam/tables/vlans.py:82 templates/dcim/device.html:263 +#: templates/ipam/aggregate.html:25 templates/ipam/iprange.html:32 +#: templates/ipam/prefix.html:100 +msgid "Utilization" +msgstr "Utilización" + +#: ipam/tables/ip.py:170 netbox/navigation/menu.py:149 +msgid "IP Ranges" +msgstr "Intervalos de IP" + +#: ipam/tables/ip.py:220 +msgid "Prefix (Flat)" +msgstr "Prefijo (plano)" + +#: ipam/tables/ip.py:224 templates/dcim/rack_edit.html:52 +msgid "Depth" +msgstr "Profundidad" + +#: ipam/tables/ip.py:261 +msgid "Pool" +msgstr "Piscina" + +#: ipam/tables/ip.py:264 ipam/tables/ip.py:317 +msgid "Marked Utilized" +msgstr "Marcado como utilizado" + +#: ipam/tables/ip.py:301 +msgid "Start address" +msgstr "Dirección de inicio" + +#: ipam/tables/ip.py:379 +msgid "NAT (Inside)" +msgstr "NAT (interior)" + +#: ipam/tables/ip.py:384 +msgid "NAT (Outside)" +msgstr "NAT (exterior)" + +#: ipam/tables/ip.py:389 +msgid "Assigned" +msgstr "Asignado" + +#: ipam/tables/ip.py:424 templates/vpn/l2vpntermination.html:19 +#: vpn/forms/filtersets.py:235 +msgid "Assigned Object" +msgstr "Objeto asignado" + +#: ipam/tables/vlans.py:68 +msgid "Scope Type" +msgstr "Tipo de ámbito" + +#: ipam/tables/vlans.py:107 ipam/tables/vlans.py:210 +#: templates/dcim/inc/interface_vlans_table.html:4 +msgid "VID" +msgstr "VÍDEO" + +#: ipam/tables/vrfs.py:30 +msgid "RD" +msgstr "ROJO" + +#: ipam/tables/vrfs.py:33 +msgid "Unique" +msgstr "Único" + +#: ipam/tables/vrfs.py:36 vpn/tables/l2vpn.py:27 +msgid "Import Targets" +msgstr "Objetivos de importación" + +#: ipam/tables/vrfs.py:41 vpn/tables/l2vpn.py:32 +msgid "Export Targets" +msgstr "Objetivos de exportación" + +#: ipam/views.py:536 +msgid "Child Prefixes" +msgstr "Prefijos infantiles" + +#: ipam/views.py:571 +msgid "Child Ranges" +msgstr "Rangos infantiles" + +#: ipam/views.py:868 +msgid "Related IPs" +msgstr "IPs relacionadas" + +#: ipam/views.py:1091 +msgid "Device Interfaces" +msgstr "Interfaces de dispositivos" + +#: ipam/views.py:1109 +msgid "VM Interfaces" +msgstr "Interfaces de VM" + +#: netbox/config/parameters.py:22 templates/core/configrevision.html:111 +msgid "Login banner" +msgstr "banner de inicio de sesión" + +#: netbox/config/parameters.py:24 +msgid "Additional content to display on the login page" +msgstr "Contenido adicional para mostrar en la página de inicio de sesión" + +#: netbox/config/parameters.py:33 templates/core/configrevision.html:115 +msgid "Maintenance banner" +msgstr "Banner de mantenimiento" + +#: netbox/config/parameters.py:35 +msgid "Additional content to display when in maintenance mode" +msgstr "Contenido adicional para mostrar en modo de mantenimiento" + +#: netbox/config/parameters.py:44 templates/core/configrevision.html:119 +msgid "Top banner" +msgstr "Banner superior" + +#: netbox/config/parameters.py:46 +msgid "Additional content to display at the top of every page" +msgstr "Contenido adicional para mostrar en la parte superior de cada página" + +#: netbox/config/parameters.py:55 templates/core/configrevision.html:123 +msgid "Bottom banner" +msgstr "Banner inferior" + +#: netbox/config/parameters.py:57 +msgid "Additional content to display at the bottom of every page" +msgstr "Contenido adicional para mostrar en la parte inferior de cada página" + +#: netbox/config/parameters.py:68 +msgid "Globally unique IP space" +msgstr "Espacio IP único a nivel mundial" + +#: netbox/config/parameters.py:70 +msgid "Enforce unique IP addressing within the global table" +msgstr "Imponga un direccionamiento IP único dentro de la tabla global" + +#: netbox/config/parameters.py:75 templates/core/configrevision.html:87 +msgid "Prefer IPv4" +msgstr "Prefiero IPv4" + +#: netbox/config/parameters.py:77 +msgid "Prefer IPv4 addresses over IPv6" +msgstr "Prefiere las direcciones IPv4 en lugar de IPv6" + +#: netbox/config/parameters.py:84 +msgid "Rack unit height" +msgstr "Altura de la unidad de estantería" + +#: netbox/config/parameters.py:86 +msgid "Default unit height for rendered rack elevations" +msgstr "" +"Altura unitaria predeterminada para elevaciones de estanterías renderizadas" + +#: netbox/config/parameters.py:91 +msgid "Rack unit width" +msgstr "Ancho de la unidad de bastidor" + +#: netbox/config/parameters.py:93 +msgid "Default unit width for rendered rack elevations" +msgstr "" +"Ancho de unidad predeterminado para las elevaciones de estanterías " +"renderizadas" + +#: netbox/config/parameters.py:100 +msgid "Powerfeed voltage" +msgstr "Tensión de alimentación" + +#: netbox/config/parameters.py:102 +msgid "Default voltage for powerfeeds" +msgstr "Tensión predeterminada para las alimentaciones" + +#: netbox/config/parameters.py:107 +msgid "Powerfeed amperage" +msgstr "Amperaje de alimentación" + +#: netbox/config/parameters.py:109 +msgid "Default amperage for powerfeeds" +msgstr "Amperaje predeterminado para las alimentaciones" + +#: netbox/config/parameters.py:114 +msgid "Powerfeed max utilization" +msgstr "Utilización máxima de Powerfeed" + +#: netbox/config/parameters.py:116 +msgid "Default max utilization for powerfeeds" +msgstr "Utilización máxima predeterminada de las fuentes de alimentación" + +#: netbox/config/parameters.py:123 templates/core/configrevision.html:99 +msgid "Allowed URL schemes" +msgstr "Esquemas de URL permitidos" + +#: netbox/config/parameters.py:128 +msgid "Permitted schemes for URLs in user-provided content" +msgstr "" +"Esquemas permitidos para las URL en el contenido proporcionado por el " +"usuario" + +#: netbox/config/parameters.py:136 +msgid "Default page size" +msgstr "Tamaño de página predeterminado" + +#: netbox/config/parameters.py:142 +msgid "Maximum page size" +msgstr "Tamaño máximo de página" + +#: netbox/config/parameters.py:150 templates/core/configrevision.html:151 +msgid "Custom validators" +msgstr "Validadores personalizados" + +#: netbox/config/parameters.py:152 +msgid "Custom validation rules (JSON)" +msgstr "Reglas de validación personalizadas (JSON)" + +#: netbox/config/parameters.py:160 templates/core/configrevision.html:161 +msgid "Protection rules" +msgstr "Normas de protección" + +#: netbox/config/parameters.py:162 +msgid "Deletion protection rules (JSON)" +msgstr "Reglas de protección contra eliminaciones (JSON)" + +#: netbox/config/parameters.py:172 +msgid "Default preferences" +msgstr "Preferencias predeterminadas" + +#: netbox/config/parameters.py:174 +msgid "Default preferences for new users" +msgstr "Preferencias predeterminadas para usuarios nuevos" + +#: netbox/config/parameters.py:181 templates/core/configrevision.html:197 +msgid "Maintenance mode" +msgstr "Modo de mantenimiento" + +#: netbox/config/parameters.py:183 +msgid "Enable maintenance mode" +msgstr "Habilitar el modo de mantenimiento" + +#: netbox/config/parameters.py:188 templates/core/configrevision.html:201 +msgid "GraphQL enabled" +msgstr "GraphQL habilitado" + +#: netbox/config/parameters.py:190 +msgid "Enable the GraphQL API" +msgstr "Habilita la API de GraphQL" + +#: netbox/config/parameters.py:195 templates/core/configrevision.html:205 +msgid "Changelog retention" +msgstr "Retención del registro de cambios" + +#: netbox/config/parameters.py:197 +msgid "Days to retain changelog history (set to zero for unlimited)" +msgstr "" +"Días para conservar el historial de cambios (se establece en cero de forma " +"ilimitada)" + +#: netbox/config/parameters.py:202 +msgid "Job result retention" +msgstr "Retención de resultados laborales" + +#: netbox/config/parameters.py:204 +msgid "Days to retain job result history (set to zero for unlimited)" +msgstr "" +"Días para conservar el historial de resultados del trabajo (establecido en " +"cero para un número ilimitado)" + +#: netbox/config/parameters.py:209 templates/core/configrevision.html:213 +msgid "Maps URL" +msgstr "URL de mapas" + +#: netbox/config/parameters.py:211 +msgid "Base URL for mapping geographic locations" +msgstr "URL base para mapear ubicaciones geográficas" + +#: netbox/forms/__init__.py:13 +msgid "Partial match" +msgstr "Coincidencia parcial" + +#: netbox/forms/__init__.py:14 +msgid "Exact match" +msgstr "Coincidencia exacta" + +#: netbox/forms/__init__.py:15 +msgid "Starts with" +msgstr "Empieza con" + +#: netbox/forms/__init__.py:16 +msgid "Ends with" +msgstr "Termina con" + +#: netbox/forms/__init__.py:17 +msgid "Regex" +msgstr "Regex" + +#: netbox/forms/__init__.py:35 +msgid "Object type(s)" +msgstr "Tipo(s) de objeto(s)" + +#: netbox/forms/base.py:66 +msgid "Id" +msgstr "ID" + +#: netbox/forms/base.py:105 +msgid "Add tags" +msgstr "Añadir etiquetas" + +#: netbox/forms/base.py:110 +msgid "Remove tags" +msgstr "Eliminar etiquetas" + +#: netbox/models/features.py:434 +msgid "Remote data source" +msgstr "Fuente de datos remota" + +#: netbox/models/features.py:444 +msgid "data path" +msgstr "ruta de datos" + +#: netbox/models/features.py:448 +msgid "Path to remote file (relative to data source root)" +msgstr "Ruta al archivo remoto (relativa a la raíz de la fuente de datos)" + +#: netbox/models/features.py:451 +msgid "auto sync enabled" +msgstr "sincronización automática habilitada" + +#: netbox/models/features.py:453 +msgid "Enable automatic synchronization of data when the data file is updated" +msgstr "" +"Habilitar la sincronización automática de datos cuando se actualiza el " +"archivo de datos" + +#: netbox/models/features.py:456 +msgid "date synced" +msgstr "fecha sincronizada" + +#: netbox/navigation/menu.py:12 +msgid "Organization" +msgstr "Organización" + +#: netbox/navigation/menu.py:20 +msgid "Site Groups" +msgstr "Grupos de sitios" + +#: netbox/navigation/menu.py:28 +msgid "Rack Roles" +msgstr "Roles de bastidor" + +#: netbox/navigation/menu.py:32 +msgid "Elevations" +msgstr "Elevaciones" + +#: netbox/navigation/menu.py:41 +msgid "Tenant Groups" +msgstr "Grupos de inquilinos" + +#: netbox/navigation/menu.py:48 +msgid "Contact Groups" +msgstr "Grupos de contactos" + +#: netbox/navigation/menu.py:49 templates/tenancy/contactrole.html:8 +msgid "Contact Roles" +msgstr "Funciones de contacto" + +#: netbox/navigation/menu.py:50 +msgid "Contact Assignments" +msgstr "Asignaciones de contactos" + +#: netbox/navigation/menu.py:64 +msgid "Modules" +msgstr "Módulos" + +#: netbox/navigation/menu.py:65 templates/dcim/devicerole.html:8 +msgid "Device Roles" +msgstr "Funciones del dispositivo" + +#: netbox/navigation/menu.py:68 templates/dcim/device.html:162 +#: templates/dcim/virtualdevicecontext.html:8 +msgid "Virtual Device Contexts" +msgstr "Contextos de dispositivos virtuales" + +#: netbox/navigation/menu.py:76 +msgid "Manufacturers" +msgstr "fabricantes" + +#: netbox/navigation/menu.py:80 +msgid "Device Components" +msgstr "Componentes del dispositivo" + +#: netbox/navigation/menu.py:92 templates/dcim/inventoryitemrole.html:8 +msgid "Inventory Item Roles" +msgstr "Funciones de los artículos de inventario" + +#: netbox/navigation/menu.py:99 netbox/navigation/menu.py:103 +msgid "Connections" +msgstr "Conexiones" + +#: netbox/navigation/menu.py:105 +msgid "Cables" +msgstr "Cables" + +#: netbox/navigation/menu.py:106 +msgid "Wireless Links" +msgstr "Vínculos inalámbricos" + +#: netbox/navigation/menu.py:109 +msgid "Interface Connections" +msgstr "Conexiones de interfaz" + +#: netbox/navigation/menu.py:114 +msgid "Console Connections" +msgstr "Conexiones de consola" + +#: netbox/navigation/menu.py:119 +msgid "Power Connections" +msgstr "Conexiones de alimentación" + +#: netbox/navigation/menu.py:135 +msgid "Wireless LAN Groups" +msgstr "Grupos de LAN inalámbrica" + +#: netbox/navigation/menu.py:156 +msgid "Prefix & VLAN Roles" +msgstr "Funciones de prefijo y VLAN" + +#: netbox/navigation/menu.py:162 +msgid "ASN Ranges" +msgstr "Rangos de ASN" + +#: netbox/navigation/menu.py:184 +msgid "VLAN Groups" +msgstr "Grupos de VLAN" + +#: netbox/navigation/menu.py:191 +msgid "Service Templates" +msgstr "Plantillas de servicio" + +#: netbox/navigation/menu.py:192 templates/dcim/device.html:304 +#: templates/ipam/ipaddress.html:122 +#: templates/virtualization/virtualmachine.html:157 +msgid "Services" +msgstr "Servicios" + +#: netbox/navigation/menu.py:199 +msgid "VPN" +msgstr "VPN" + +#: netbox/navigation/menu.py:203 netbox/navigation/menu.py:205 +#: vpn/tables/tunnels.py:24 +msgid "Tunnels" +msgstr "Túneles" + +#: netbox/navigation/menu.py:206 templates/vpn/tunnelgroup.html:8 +msgid "Tunnel Groups" +msgstr "Grupos de túneles" + +#: netbox/navigation/menu.py:207 +msgid "Tunnel Terminations" +msgstr "Terminaciones de túneles" + +#: netbox/navigation/menu.py:211 netbox/navigation/menu.py:213 +#: vpn/models/l2vpn.py:64 +msgid "L2VPNs" +msgstr "VPNs L2" + +#: netbox/navigation/menu.py:214 templates/vpn/l2vpn.html:57 +#: templates/vpn/tunnel.html:73 vpn/tables/tunnels.py:54 +msgid "Terminations" +msgstr "Terminaciones" + +#: netbox/navigation/menu.py:220 +msgid "IKE Proposals" +msgstr "Propuestas IKE" + +#: netbox/navigation/menu.py:221 templates/vpn/ikeproposal.html:42 +msgid "IKE Policies" +msgstr "Políticas de IKE" + +#: netbox/navigation/menu.py:222 +msgid "IPSec Proposals" +msgstr "Propuestas de IPSec" + +#: netbox/navigation/menu.py:223 templates/vpn/ipsecproposal.html:38 +msgid "IPSec Policies" +msgstr "Políticas IPSec" + +#: netbox/navigation/menu.py:224 templates/vpn/ikepolicy.html:39 +#: templates/vpn/ipsecpolicy.html:26 +msgid "IPSec Profiles" +msgstr "Perfiles IPSec" + +#: netbox/navigation/menu.py:231 templates/dcim/device_edit.html:78 +msgid "Virtualization" +msgstr "Virtualización" + +#: netbox/navigation/menu.py:235 netbox/navigation/menu.py:237 +#: virtualization/views.py:186 +msgid "Virtual Machines" +msgstr "Máquinas virtuales" + +#: netbox/navigation/menu.py:239 +#: templates/virtualization/virtualmachine.html:177 +#: templates/virtualization/virtualmachine/base.html:32 +#: templates/virtualization/virtualmachine_list.html:21 +#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +msgid "Virtual Disks" +msgstr "Discos virtuales" + +#: netbox/navigation/menu.py:246 +msgid "Cluster Types" +msgstr "Tipos de clústeres" + +#: netbox/navigation/menu.py:247 +msgid "Cluster Groups" +msgstr "Grupos de clústeres" + +#: netbox/navigation/menu.py:261 +msgid "Circuit Types" +msgstr "Tipos de circuitos" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 +msgid "Providers" +msgstr "Proveedores" + +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:53 +msgid "Provider Accounts" +msgstr "Cuentas de proveedores" + +#: netbox/navigation/menu.py:269 +msgid "Provider Networks" +msgstr "Redes de proveedores" + +#: netbox/navigation/menu.py:283 +msgid "Power Panels" +msgstr "Paneles de alimentación" + +#: netbox/navigation/menu.py:294 +msgid "Configurations" +msgstr "Configuraciones" + +#: netbox/navigation/menu.py:296 +msgid "Config Contexts" +msgstr "Contextos de configuración" + +#: netbox/navigation/menu.py:297 +msgid "Config Templates" +msgstr "Plantillas de configuración" + +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 +msgid "Customization" +msgstr "Personalización" + +#: netbox/navigation/menu.py:310 +#: templates/circuits/circuittermination_edit.html:53 +#: templates/dcim/cable_edit.html:77 templates/dcim/device_edit.html:103 +#: templates/dcim/inventoryitem_edit.html:102 templates/dcim/rack_edit.html:81 +#: templates/dcim/virtualchassis_add.html:31 +#: templates/dcim/virtualchassis_edit.html:41 +#: templates/generic/bulk_edit.html:92 templates/htmx/form.html:32 +#: templates/inc/panels/custom_fields.html:7 +#: templates/ipam/ipaddress_bulk_add.html:35 +#: templates/ipam/ipaddress_edit.html:88 templates/ipam/service_create.html:75 +#: templates/ipam/service_edit.html:62 templates/ipam/vlan_edit.html:63 +#: templates/tenancy/contactassignment_edit.html:31 +#: templates/vpn/l2vpntermination_edit.html:51 +msgid "Custom Fields" +msgstr "Campos personalizados" + +#: netbox/navigation/menu.py:311 +msgid "Custom Field Choices" +msgstr "Opciones de campo personalizadas" + +#: netbox/navigation/menu.py:312 +msgid "Custom Links" +msgstr "Vínculos personalizados" + +#: netbox/navigation/menu.py:313 +msgid "Export Templates" +msgstr "Plantillas de exportación" + +#: netbox/navigation/menu.py:314 +msgid "Saved Filters" +msgstr "Filtros guardados" + +#: netbox/navigation/menu.py:316 +msgid "Image Attachments" +msgstr "Adjuntos de imágenes" + +#: netbox/navigation/menu.py:320 +msgid "Reports & Scripts" +msgstr "Informes y guiones" + +#: netbox/navigation/menu.py:340 +msgid "Operations" +msgstr "Operaciones" + +#: netbox/navigation/menu.py:344 +msgid "Integrations" +msgstr "Integraciones" + +#: netbox/navigation/menu.py:346 +msgid "Data Sources" +msgstr "Fuentes de datos" + +#: netbox/navigation/menu.py:347 +msgid "Event Rules" +msgstr "Reglas del evento" + +#: netbox/navigation/menu.py:348 +msgid "Webhooks" +msgstr "Webhooks" + +#: netbox/navigation/menu.py:352 netbox/navigation/menu.py:356 +#: netbox/views/generic/feature_views.py:151 +#: templates/extras/report/base.html:37 templates/extras/script/base.html:36 +msgid "Jobs" +msgstr "Trabajos" + +#: netbox/navigation/menu.py:362 +msgid "Logging" +msgstr "Explotación" + +#: netbox/navigation/menu.py:364 +msgid "Journal Entries" +msgstr "Entradas del diario" + +#: netbox/navigation/menu.py:365 templates/extras/objectchange.html:8 +#: templates/extras/objectchange_list.html:4 +msgid "Change Log" +msgstr "Registro de cambios" + +#: netbox/navigation/menu.py:372 templates/inc/profile_button.html:18 +msgid "Admin" +msgstr "Admin" + +#: netbox/navigation/menu.py:381 templates/users/group.html:27 +#: users/forms/model_forms.py:242 users/forms/model_forms.py:255 +#: users/forms/model_forms.py:309 users/tables.py:105 +msgid "Users" +msgstr "usuarios" + +#: netbox/navigation/menu.py:404 users/forms/model_forms.py:182 +#: users/forms/model_forms.py:195 users/forms/model_forms.py:314 +#: users/tables.py:35 users/tables.py:109 +msgid "Groups" +msgstr "Grupos" + +#: netbox/navigation/menu.py:426 templates/account/base.html:21 +#: templates/inc/profile_button.html:39 +msgid "API Tokens" +msgstr "Tokens de API" + +#: netbox/navigation/menu.py:433 users/forms/model_forms.py:188 +#: users/forms/model_forms.py:197 users/forms/model_forms.py:248 +#: users/forms/model_forms.py:256 +msgid "Permissions" +msgstr "Permisos" + +#: netbox/navigation/menu.py:445 +msgid "Current Config" +msgstr "Configuración actual" + +#: netbox/navigation/menu.py:451 +msgid "Config Revisions" +msgstr "Revisiones de configuración" + +#: netbox/navigation/menu.py:491 templates/500.html:35 +#: templates/account/preferences.html:29 +msgid "Plugins" +msgstr "Plugins" + +#: netbox/preferences.py:17 +msgid "Color mode" +msgstr "Modo de color" + +#: netbox/preferences.py:25 +msgid "Page length" +msgstr "Longitud de página" + +#: netbox/preferences.py:27 +msgid "The default number of objects to display per page" +msgstr "El número predeterminado de objetos que se mostrarán por página" + +#: netbox/preferences.py:31 +msgid "Paginator placement" +msgstr "Colocación del paginador" + +#: netbox/preferences.py:37 +msgid "Where the paginator controls will be displayed relative to a table" +msgstr "" +"Dónde se mostrarán los controles del paginador en relación con una tabla" + +#: netbox/preferences.py:43 +msgid "Data format" +msgstr "Formato de datos" + +#: netbox/tables/columns.py:175 +msgid "Toggle all" +msgstr "Alternar todo" + +#: netbox/tables/columns.py:277 templates/inc/profile_button.html:56 +msgid "Toggle Dropdown" +msgstr "Alternar menú desplegable" + +#: netbox/tables/columns.py:542 templates/core/job.html:40 +msgid "Error" +msgstr "Error" + +#: netbox/tables/tables.py:243 templates/generic/bulk_import.html:115 +msgid "Field" +msgstr "Campo" + +#: netbox/tables/tables.py:246 +msgid "Value" +msgstr "Valor" + +#: netbox/tables/tables.py:259 +msgid "No results found" +msgstr "No se han encontrado resultados" + +#: netbox/tests/dummy_plugin/navigation.py:29 +msgid "Dummy Plugin" +msgstr "Plugin ficticio" + +#: netbox/views/generic/feature_views.py:38 +msgid "Changelog" +msgstr "Registro de cambios" + +#: netbox/views/generic/feature_views.py:91 +msgid "Journal" +msgstr "diario" + +#: templates/403.html:4 +msgid "Access Denied" +msgstr "Acceso denegado" + +#: templates/403.html:9 +msgid "You do not have permission to access this page" +msgstr "No tienes permiso para acceder a esta página" + +#: templates/404.html:4 +msgid "Page Not Found" +msgstr "No se encontró la página" + +#: templates/404.html:9 +msgid "The requested page does not exist" +msgstr "La página solicitada no existe" + +#: templates/500.html:7 templates/500.html:18 +msgid "Server Error" +msgstr "Error de servidor" + +#: templates/500.html:23 +msgid "There was a problem with your request. Please contact an administrator" +msgstr "" +"Ha surgido un problema con tu solicitud. Póngase en contacto con un " +"administrador" + +#: templates/500.html:28 +msgid "The complete exception is provided below" +msgstr "La excepción completa se proporciona a continuación" + +#: templates/500.html:33 +msgid "Python version" +msgstr "Versión de Python" + +#: templates/500.html:34 +msgid "NetBox version" +msgstr "Versión NetBox" + +#: templates/500.html:36 +msgid "None installed" +msgstr "No hay ninguno instalado" + +#: templates/500.html:39 +msgid "If further assistance is required, please post to the" +msgstr "Si necesita más ayuda, envíela por correo a" + +#: templates/500.html:39 +msgid "NetBox discussion forum" +msgstr "Foro de discusión de NetBox" + +#: templates/500.html:39 +msgid "on GitHub" +msgstr "en GitHub" + +#: templates/500.html:42 templates/base/40x.html:17 +msgid "Home Page" +msgstr "Página de inicio" + +#: templates/account/base.html:7 templates/inc/profile_button.html:24 +#: vpn/forms/bulk_edit.py:256 vpn/forms/filtersets.py:186 +#: vpn/forms/model_forms.py:372 +msgid "Profile" +msgstr "Perfil" + +#: templates/account/base.html:13 templates/inc/profile_button.html:34 +msgid "Preferences" +msgstr "Preferencias" + +#: templates/account/password.html:5 +msgid "Change Password" +msgstr "Cambiar contraseña" + +#: templates/account/password.html:17 templates/account/preferences.html:82 +#: templates/core/configrevision_restore.html:80 +#: templates/dcim/devicebay_populate.html:34 +#: templates/dcim/virtualchassis_add_member.html:24 +#: templates/dcim/virtualchassis_edit.html:104 +#: templates/extras/object_journal.html:26 templates/extras/script.html:36 +#: templates/generic/bulk_add_component.html:55 +#: templates/generic/bulk_delete.html:46 templates/generic/bulk_edit.html:125 +#: templates/generic/bulk_import.html:53 templates/generic/bulk_import.html:75 +#: templates/generic/bulk_import.html:97 templates/generic/bulk_remove.html:42 +#: templates/generic/bulk_rename.html:44 +#: templates/generic/confirmation_form.html:20 +#: templates/generic/object_edit.html:76 templates/htmx/delete_form.html:53 +#: templates/htmx/delete_form.html:55 templates/ipam/ipaddress_assign.html:31 +#: templates/virtualization/cluster_add_devices.html:30 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/account/password.html:18 templates/account/preferences.html:83 +#: templates/dcim/devicebay_populate.html:35 +#: templates/dcim/virtualchassis_add_member.html:26 +#: templates/dcim/virtualchassis_edit.html:106 +#: templates/extras/dashboard/widget_add.html:26 +#: templates/extras/dashboard/widget_config.html:19 +#: templates/extras/object_journal.html:27 +#: templates/generic/object_edit.html:66 +#: utilities/templates/helpers/applied_filters.html:16 +#: utilities/templates/helpers/table_config_form.html:40 +msgid "Save" +msgstr "Guardar" + +#: templates/account/preferences.html:41 +msgid "Table Configurations" +msgstr "Configuraciones de tablas" + +#: templates/account/preferences.html:46 +msgid "Clear table preferences" +msgstr "Borrar preferencias de mesa" + +#: templates/account/preferences.html:53 +msgid "Toggle All" +msgstr "Alternar todo" + +#: templates/account/preferences.html:55 +msgid "Table" +msgstr "Tabla" + +#: templates/account/preferences.html:56 +msgid "Ordering" +msgstr "Pedido" + +#: templates/account/preferences.html:57 +msgid "Columns" +msgstr "Columnas" + +#: templates/account/preferences.html:76 templates/dcim/cable_trace.html:113 +#: templates/extras/object_configcontext.html:55 +msgid "None found" +msgstr "No se encontró ninguno" + +#: templates/account/profile.html:6 +msgid "User Profile" +msgstr "Perfil de usuario" + +#: templates/account/profile.html:12 +msgid "Account Details" +msgstr "Detalles de la cuenta" + +#: templates/account/profile.html:30 templates/tenancy/contact.html:44 +#: templates/users/user.html:26 tenancy/forms/bulk_edit.py:108 +msgid "Email" +msgstr "Correo electrónico" + +#: templates/account/profile.html:34 templates/users/user.html:30 +msgid "Account Created" +msgstr "Cuenta creada" + +#: templates/account/profile.html:38 templates/users/user.html:42 +msgid "Superuser" +msgstr "Superusuario" + +#: templates/account/profile.html:42 +msgid "Admin Access" +msgstr "Acceso de administrador" + +#: templates/account/profile.html:51 templates/users/objectpermission.html:86 +#: templates/users/user.html:51 +msgid "Assigned Groups" +msgstr "Grupos asignados" + +#: templates/account/profile.html:56 +#: templates/circuits/circuit_terminations_swap.html:18 +#: templates/circuits/circuit_terminations_swap.html:26 +#: templates/circuits/inc/circuit_termination.html:154 +#: templates/dcim/devicebay.html:66 +#: templates/dcim/inc/panels/inventory_items.html:37 +#: templates/dcim/interface.html:306 templates/dcim/modulebay.html:79 +#: templates/extras/configcontext.html:73 templates/extras/eventrule.html:84 +#: templates/extras/htmx/script_result.html:54 +#: templates/extras/object_configcontext.html:28 +#: templates/extras/objectchange.html:128 +#: templates/extras/objectchange.html:145 templates/extras/webhook.html:79 +#: templates/extras/webhook.html:91 templates/inc/panel_table.html:12 +#: templates/inc/panels/comments.html:12 +#: templates/ipam/inc/panels/fhrp_groups.html:43 templates/users/group.html:32 +#: templates/users/group.html:42 templates/users/objectpermission.html:81 +#: templates/users/objectpermission.html:91 templates/users/user.html:56 +#: templates/users/user.html:66 +msgid "None" +msgstr "Ninguna" + +#: templates/account/profile.html:66 templates/users/user.html:76 +msgid "Recent Activity" +msgstr "Actividad reciente" + +#: templates/account/token.html:8 templates/account/token_list.html:6 +msgid "My API Tokens" +msgstr "Mis fichas de API" + +#: templates/account/token.html:11 templates/account/token.html:19 +#: templates/users/token.html:6 templates/users/token.html:14 +#: users/forms/filtersets.py:121 +msgid "Token" +msgstr "Símbolo" + +#: templates/account/token.html:40 templates/users/token.html:32 +#: users/forms/bulk_edit.py:87 +msgid "Write enabled" +msgstr "Escritura habilitada" + +#: templates/account/token.html:52 templates/users/token.html:44 +msgid "Last used" +msgstr "Utilizado por última vez" + +#: templates/account/token_list.html:12 +msgid "Add a Token" +msgstr "Añadir un token" + +#: templates/admin/index.html:10 +msgid "System" +msgstr "Sistema" + +#: templates/admin/index.html:14 +msgid "Background Tasks" +msgstr "Tareas en segundo plano" + +#: templates/admin/index.html:19 +msgid "Installed plugins" +msgstr "Plugins instalados" + +#: templates/base/base.html:28 templates/extras/admin/plugins_list.html:8 +#: templates/home.html:24 +msgid "Home" +msgstr "Inicio" + +#: templates/base/layout.html:27 templates/base/layout.html:37 +#: templates/login.html:34 +msgid "NetBox logo" +msgstr "Logotipo de NetBox" + +#: templates/base/layout.html:76 +msgid "Debug mode is enabled" +msgstr "El modo de depuración está activado" + +#: templates/base/layout.html:77 +msgid "" +"Performance may be limited. Debugging should never be enabled on a " +"production system" +msgstr "" +"El rendimiento puede ser limitado. La depuración nunca debe habilitarse en " +"un sistema de producción" + +#: templates/base/layout.html:83 +msgid "Maintenance Mode" +msgstr "Modo de mantenimiento" + +#: templates/base/layout.html:134 +msgid "Docs" +msgstr "Documentos" + +#: templates/base/layout.html:139 templates/rest_framework/api.html:10 +msgid "REST API" +msgstr "API DE DESCANSO" + +#: templates/base/layout.html:144 +msgid "REST API documentation" +msgstr "Documentación de la API REST" + +#: templates/base/layout.html:150 +msgid "GraphQL API" +msgstr "API de GraphQL" + +#: templates/base/layout.html:156 +msgid "Source Code" +msgstr "Código fuente" + +#: templates/base/layout.html:161 +msgid "Community" +msgstr "Comunidad" + +#: templates/base/sidenav.html:12 templates/base/sidenav.html:17 +msgid "NetBox Logo" +msgstr "Logotipo de NetBox" + +#: templates/circuits/circuit.html:48 +msgid "Install Date" +msgstr "Fecha de instalación" + +#: templates/circuits/circuit.html:52 +msgid "Termination Date" +msgstr "Fecha de terminación" + +#: templates/circuits/circuit_terminations_swap.html:4 +msgid "Swap Circuit Terminations" +msgstr "Intercambiar terminaciones de circuitos" + +#: templates/circuits/circuit_terminations_swap.html:8 +#, python-format +msgid "Swap these terminations for circuit %(circuit)s?" +msgstr "Cambie estas terminaciones por circuito %(circuit)s?" + +#: templates/circuits/circuit_terminations_swap.html:14 +msgid "A side" +msgstr "Un lado" + +#: templates/circuits/circuit_terminations_swap.html:22 +msgid "Z side" +msgstr "Lado Z" + +#: templates/circuits/circuittermination_edit.html:9 +#: templates/circuits/inc/circuit_termination.html:81 +#: templates/dcim/frontport.html:128 templates/dcim/interface.html:199 +#: templates/dcim/rearport.html:118 +msgid "Circuit Termination" +msgstr "Terminación del circuito" + +#: templates/circuits/circuittermination_edit.html:41 +msgid "Termination Details" +msgstr "Detalles de terminación" + +#: templates/circuits/circuittype.html:10 +msgid "Add Circuit" +msgstr "Agregar circuito" + +#: templates/circuits/inc/circuit_termination.html:9 +#: templates/dcim/devicetype/component_templates.html:30 +#: templates/dcim/manufacturer.html:11 +#: templates/dcim/moduletype/component_templates.html:30 +#: templates/generic/bulk_add_component.html:8 +#: templates/users/objectpermission.html:41 +#: utilities/templates/buttons/add.html:4 +#: utilities/templates/helpers/table_config_form.html:20 +msgid "Add" +msgstr "Añadir" + +#: templates/circuits/inc/circuit_termination.html:14 +#: templates/circuits/inc/circuit_termination.html:63 +#: templates/dcim/devicetype/component_templates.html:21 +#: templates/dcim/inc/panels/inventory_items.html:24 +#: templates/dcim/moduletype/component_templates.html:21 +#: templates/dcim/powerpanel.html:61 templates/generic/object_edit.html:29 +#: templates/ipam/inc/ipaddress_edit_header.html:10 +#: templates/ipam/inc/panels/fhrp_groups.html:30 +#: utilities/templates/buttons/edit.html:3 +msgid "Edit" +msgstr "Editar" + +#: templates/circuits/inc/circuit_termination.html:17 +msgid "Swap" +msgstr "Intercambiar" + +#: templates/circuits/inc/circuit_termination.html:26 +#, python-format +msgid "Termination %(side)s" +msgstr "Terminación %(side)s" + +#: templates/circuits/inc/circuit_termination.html:42 +#: templates/dcim/cable.html:70 templates/dcim/cable.html:76 +#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:76 +msgid "Termination" +msgstr "Terminación" + +#: templates/circuits/inc/circuit_termination.html:46 +#: templates/dcim/consoleport.html:62 templates/dcim/consoleserverport.html:62 +#: templates/dcim/powerfeed.html:122 +msgid "Marked as connected" +msgstr "Marcado como conectado" + +#: templates/circuits/inc/circuit_termination.html:48 +msgid "to" +msgstr "a" + +#: templates/circuits/inc/circuit_termination.html:58 +#: templates/circuits/inc/circuit_termination.html:59 +#: templates/dcim/frontport.html:87 +#: templates/dcim/inc/connection_endpoints.html:7 +#: templates/dcim/interface.html:160 templates/dcim/rearport.html:83 +msgid "Trace" +msgstr "Rastrear" + +#: templates/circuits/inc/circuit_termination.html:62 +msgid "Edit cable" +msgstr "Editar cable" + +#: templates/circuits/inc/circuit_termination.html:67 +msgid "Remove cable" +msgstr "Quitar el cable" + +#: templates/circuits/inc/circuit_termination.html:68 +#: templates/dcim/bulk_disconnect.html:5 +#: templates/dcim/device/consoleports.html:12 +#: templates/dcim/device/consoleserverports.html:12 +#: templates/dcim/device/frontports.html:12 +#: templates/dcim/device/interfaces.html:16 +#: templates/dcim/device/poweroutlets.html:12 +#: templates/dcim/device/powerports.html:12 +#: templates/dcim/device/rearports.html:12 templates/dcim/powerpanel.html:66 +msgid "Disconnect" +msgstr "Desconectar" + +#: templates/circuits/inc/circuit_termination.html:75 +#: templates/dcim/consoleport.html:71 templates/dcim/consoleserverport.html:71 +#: templates/dcim/frontport.html:109 templates/dcim/interface.html:186 +#: templates/dcim/interface.html:206 templates/dcim/powerfeed.html:136 +#: templates/dcim/poweroutlet.html:75 templates/dcim/poweroutlet.html:76 +#: templates/dcim/powerport.html:77 templates/dcim/rearport.html:105 +msgid "Connect" +msgstr "Conectar" + +#: templates/circuits/inc/circuit_termination.html:79 +#: templates/dcim/consoleport.html:78 templates/dcim/consoleserverport.html:78 +#: templates/dcim/frontport.html:18 templates/dcim/frontport.html:122 +#: templates/dcim/interface.html:193 templates/dcim/inventoryitem_edit.html:49 +#: templates/dcim/rearport.html:112 +msgid "Front Port" +msgstr "Puerto frontal" + +#: templates/circuits/inc/circuit_termination.html:97 +msgid "Downstream" +msgstr "Río abajo" + +#: templates/circuits/inc/circuit_termination.html:98 +msgid "Upstream" +msgstr "Aguas arriba" + +#: templates/circuits/inc/circuit_termination.html:107 +msgid "Cross-Connect" +msgstr "Conexión cruzada" + +#: templates/circuits/inc/circuit_termination.html:111 +msgid "Patch Panel/Port" +msgstr "Panel de conexión/puerto" + +#: templates/circuits/provider.html:11 +msgid "Add circuit" +msgstr "Añadir circuito" + +#: templates/circuits/provideraccount.html:17 +msgid "Provider Account" +msgstr "Cuenta de proveedor" + +#: templates/core/configrevision.html:47 +msgid "Default unit height" +msgstr "Altura por defecto de la unidad" + +#: templates/core/configrevision.html:51 +msgid "Default unit width" +msgstr "Ancho de unidad predeterminado" + +#: templates/core/configrevision.html:63 +msgid "Default voltage" +msgstr "Tensión predeterminada" + +#: templates/core/configrevision.html:67 +msgid "Default amperage" +msgstr "Amperaje predeterminado" + +#: templates/core/configrevision.html:71 +msgid "Default max utilization" +msgstr "Utilización máxima predeterminada" + +#: templates/core/configrevision.html:83 +msgid "Enforce global unique" +msgstr "Imponga la exclusividad global" + +#: templates/core/configrevision.html:135 +msgid "Paginate count" +msgstr "Recuento de paginaciones" + +#: templates/core/configrevision.html:139 +msgid "Max page size" +msgstr "Tamaño máximo de página" + +#: templates/core/configrevision.html:179 +msgid "Default user preferences" +msgstr "Preferencias de usuario predeterminadas" + +#: templates/core/configrevision.html:209 +msgid "Job retention" +msgstr "Retención de empleo" + +#: templates/core/configrevision.html:221 +msgid "Comment" +msgstr "Comentar" + +#: templates/core/configrevision_restore.html:8 +#: templates/core/configrevision_restore.html:43 +#: templates/core/configrevision_restore.html:79 +msgid "Restore" +msgstr "Restaurar" + +#: templates/core/configrevision_restore.html:21 +msgid "Config revisions" +msgstr "Revisiones de configuración" + +#: templates/core/configrevision_restore.html:54 +msgid "Parameter" +msgstr "Parámetro" + +#: templates/core/configrevision_restore.html:55 +msgid "Current Value" +msgstr "Valor actual" + +#: templates/core/configrevision_restore.html:56 +msgid "New Value" +msgstr "Nuevo valor" + +#: templates/core/configrevision_restore.html:66 +msgid "Changed" +msgstr "Cambiado" + +#: templates/core/datafile.html:47 +msgid "Last Updated" +msgstr "Última actualización" + +#: templates/core/datafile.html:51 templates/ipam/iprange.html:28 +#: templates/virtualization/virtualdisk.html:30 +msgid "Size" +msgstr "Tamaño" + +#: templates/core/datafile.html:52 +msgid "bytes" +msgstr "bytes" + +#: templates/core/datafile.html:55 +msgid "SHA256 Hash" +msgstr "Hash SHA256" + +#: templates/core/datasource.html:14 templates/core/datasource.html:20 +#: utilities/templates/buttons/sync.html:5 +msgid "Sync" +msgstr "Sincronizar" + +#: templates/core/datasource.html:51 +msgid "Last synced" +msgstr "Última sincronización" + +#: templates/core/datasource.html:86 +msgid "Backend" +msgstr "Backend" + +#: templates/core/datasource.html:102 +msgid "No parameters defined" +msgstr "No hay parámetros definidos" + +#: templates/core/datasource.html:118 +msgid "Files" +msgstr "Expedientes" + +#: templates/core/job.html:21 +msgid "Job" +msgstr "Trabajo" + +#: templates/core/job.html:45 templates/extras/journalentry.html:29 +msgid "Created By" +msgstr "Creado por" + +#: templates/core/job.html:54 +msgid "Scheduling" +msgstr "Programación" + +#: templates/core/job.html:66 +#, python-format +msgid "every %(interval)s seconds" +msgstr "cada %(interval)s segundos" + +#: templates/dcim/bulk_disconnect.html:9 +#, python-format +msgid "" +"Are you sure you want to disconnect these %(count)s %(obj_type_plural)s?" +msgstr "" +"¿Está seguro de que desea desconectarlos? %(count)s %(obj_type_plural)s?" + +#: templates/dcim/cable_edit.html:12 +msgid "A Side" +msgstr "Un lado" + +#: templates/dcim/cable_edit.html:29 +msgid "B Side" +msgstr "Lado B" + +#: templates/dcim/cable_trace.html:6 +#, python-format +msgid "Cable Trace for %(object_type)s %(object)s" +msgstr "Cable Trace para %(object_type)s %(object)s" + +#: templates/dcim/cable_trace.html:21 templates/dcim/inc/rack_elevation.html:7 +msgid "Download SVG" +msgstr "Descargar SVG" + +#: templates/dcim/cable_trace.html:27 +msgid "Asymmetric Path" +msgstr "Ruta asimétrica" + +#: templates/dcim/cable_trace.html:28 +msgid "The nodes below have no links and result in an asymmetric path" +msgstr "" +"Los nodos siguientes no tienen enlaces y dan como resultado una ruta " +"asimétrica" + +#: templates/dcim/cable_trace.html:35 +msgid "Path split" +msgstr "Ruta dividida" + +#: templates/dcim/cable_trace.html:36 +msgid "Select a node below to continue" +msgstr "Seleccione un nodo de los siguientes para continuar" + +#: templates/dcim/cable_trace.html:52 +msgid "Trace Completed" +msgstr "Rastreo completado" + +#: templates/dcim/cable_trace.html:55 +msgid "Total segments" +msgstr "Total de segmentos" + +#: templates/dcim/cable_trace.html:59 +msgid "Total length" +msgstr "Longitud total" + +#: templates/dcim/cable_trace.html:74 +msgid "No paths found" +msgstr "No se encontró ninguna ruta" + +#: templates/dcim/cable_trace.html:83 +msgid "Related Paths" +msgstr "Rutas relacionadas" + +#: templates/dcim/cable_trace.html:89 +msgid "Origin" +msgstr "Origen" + +#: templates/dcim/cable_trace.html:90 +msgid "Destination" +msgstr "Destino" + +#: templates/dcim/cable_trace.html:91 +msgid "Segments" +msgstr "Segmentos" + +#: templates/dcim/cable_trace.html:104 +msgid "Incomplete" +msgstr "Incompleto" + +#: templates/dcim/component_list.html:14 +msgid "Rename Selected" +msgstr "Cambiar nombre seleccionado" + +#: templates/dcim/consoleport.html:67 templates/dcim/consoleserverport.html:67 +#: templates/dcim/frontport.html:105 templates/dcim/interface.html:182 +#: templates/dcim/poweroutlet.html:73 templates/dcim/powerport.html:73 +msgid "Not Connected" +msgstr "No conectado" + +#: templates/dcim/consoleport.html:75 templates/dcim/consoleserverport.html:18 +#: templates/dcim/frontport.html:116 templates/dcim/inventoryitem_edit.html:44 +msgid "Console Server Port" +msgstr "Puerto de servidor de consola" + +#: templates/dcim/device.html:35 +msgid "Highlight device" +msgstr "Resaltar dispositivo" + +#: templates/dcim/device.html:57 +msgid "Not racked" +msgstr "No está atormentado" + +#: templates/dcim/device.html:64 templates/dcim/site.html:96 +msgid "GPS Coordinates" +msgstr "Coordenadas GPS" + +#: templates/dcim/device.html:70 templates/dcim/site.html:102 +msgid "Map It" +msgstr "Mapearlo" + +#: templates/dcim/device.html:110 templates/dcim/inventoryitem.html:57 +#: templates/dcim/module.html:79 templates/dcim/modulebay.html:73 +#: templates/dcim/rack.html:62 +msgid "Asset Tag" +msgstr "Etiqueta de activo" + +#: templates/dcim/device.html:153 +msgid "View Virtual Chassis" +msgstr "Ver chasis virtual" + +#: templates/dcim/device.html:170 +msgid "Create VDC" +msgstr "Crear VDC" + +#: templates/dcim/device.html:179 templates/dcim/device_edit.html:64 +#: virtualization/forms/model_forms.py:226 +msgid "Management" +msgstr "Administración" + +#: templates/dcim/device.html:200 templates/dcim/device.html:216 +#: templates/virtualization/virtualmachine.html:56 +#: templates/virtualization/virtualmachine.html:72 +msgid "NAT for" +msgstr "NAT para" + +#: templates/dcim/device.html:202 templates/dcim/device.html:218 +#: templates/virtualization/virtualmachine.html:58 +#: templates/virtualization/virtualmachine.html:74 +msgid "NAT" +msgstr "NATA" + +#: templates/dcim/device.html:254 templates/dcim/rack.html:70 +msgid "Power Utilization" +msgstr "Utilización de energía" + +#: templates/dcim/device.html:259 +msgid "Input" +msgstr "Entrada" + +#: templates/dcim/device.html:260 +msgid "Outlets" +msgstr "Puntos de venta" + +#: templates/dcim/device.html:261 +msgid "Allocated" +msgstr "Asignado" + +#: templates/dcim/device.html:270 templates/dcim/device.html:272 +#: templates/dcim/device.html:288 templates/dcim/powerfeed.html:70 +msgid "VA" +msgstr "VA" + +#: templates/dcim/device.html:282 +msgctxt "Leg of a power feed" +msgid "Leg" +msgstr "Pierna" + +#: templates/dcim/device.html:312 +#: templates/virtualization/virtualmachine.html:165 +msgid "Add a service" +msgstr "Añadir un servicio" + +#: templates/dcim/device.html:319 templates/dcim/rack.html:77 +#: templates/dcim/rack_edit.html:38 +msgid "Dimensions" +msgstr "Dimensiones" + +#: templates/dcim/device/base.html:21 templates/dcim/device_list.html:9 +#: templates/dcim/devicetype/base.html:18 templates/dcim/module.html:18 +#: templates/dcim/moduletype/base.html:18 +#: templates/virtualization/virtualmachine/base.html:22 +#: templates/virtualization/virtualmachine_list.html:8 +msgid "Add Components" +msgstr "Agregar componentes" + +#: templates/dcim/device/consoleports.html:24 +msgid "Add Console Ports" +msgstr "Agregar puertos de consola" + +#: templates/dcim/device/consoleserverports.html:24 +msgid "Add Console Server Ports" +msgstr "Agregar puertos de servidor de consola" + +#: templates/dcim/device/devicebays.html:10 +msgid "Add Device Bays" +msgstr "Agregar compartimentos de dispositivos" + +#: templates/dcim/device/frontports.html:24 +msgid "Add Front Ports" +msgstr "Agregar puertos frontales" + +#: templates/dcim/device/inc/interface_table_controls.html:9 +msgid "Hide Enabled" +msgstr "Ocultar activado" + +#: templates/dcim/device/inc/interface_table_controls.html:10 +msgid "Hide Disabled" +msgstr "Ocultar desactivado" + +#: templates/dcim/device/inc/interface_table_controls.html:11 +msgid "Hide Virtual" +msgstr "Ocultar virtual" + +#: templates/dcim/device/inc/interface_table_controls.html:12 +msgid "Hide Disconnected" +msgstr "Ocultar desconectado" + +#: templates/dcim/device/interfaces.html:28 +msgid "Add Interfaces" +msgstr "Agregar interfaces" + +#: templates/dcim/device/inventory.html:10 +#: templates/dcim/inc/panels/inventory_items.html:46 +msgid "Add Inventory Item" +msgstr "Añadir artículo de inventario" + +#: templates/dcim/device/modulebays.html:10 +msgid "Add Module Bays" +msgstr "Agregar compartimentos de módulos" + +#: templates/dcim/device/poweroutlets.html:24 +msgid "Add Power Outlets" +msgstr "Añadir tomas de corriente" + +#: templates/dcim/device/powerports.html:24 +msgid "Add Power Port" +msgstr "Agregar puerto de alimentación" + +#: templates/dcim/device/rearports.html:24 +msgid "Add Rear Ports" +msgstr "Agregar puertos traseros" + +#: templates/dcim/device/render_config.html:5 +#: templates/virtualization/virtualmachine/render_config.html:5 +msgid "Config" +msgstr "Configuración" + +#: templates/dcim/device/render_config.html:37 +#: templates/virtualization/virtualmachine/render_config.html:37 +msgid "Context Data" +msgstr "Datos de contexto" + +#: templates/dcim/device/render_config.html:57 +#: templates/virtualization/virtualmachine/render_config.html:57 +msgid "Download" +msgstr "Descargar" + +#: templates/dcim/device/render_config.html:60 +#: templates/virtualization/virtualmachine/render_config.html:60 +msgid "Rendered Config" +msgstr "Configuración renderizada" + +#: templates/dcim/device/render_config.html:65 +#: templates/virtualization/virtualmachine/render_config.html:65 +msgid "No configuration template found" +msgstr "No se encontró ninguna plantilla de configuración" + +#: templates/dcim/device_edit.html:44 +msgid "Parent Bay" +msgstr "Bahía para padres" + +#: templates/dcim/device_edit.html:48 +#: utilities/templates/form_helpers/render_field.html:20 +msgid "Regenerate Slug" +msgstr "Regenera a Slug" + +#: templates/dcim/device_edit.html:49 templates/generic/bulk_remove.html:7 +#: utilities/templates/helpers/table_config_form.html:23 +msgid "Remove" +msgstr "Eliminar" + +#: templates/dcim/device_edit.html:110 +msgid "Local Config Context Data" +msgstr "Datos de contexto de configuración local" + +#: templates/dcim/device_list.html:82 +#: templates/dcim/devicetype/component_templates.html:18 +#: templates/dcim/moduletype/component_templates.html:18 +#: templates/generic/bulk_rename.html:34 +#: templates/virtualization/virtualmachine/interfaces.html:11 +#: templates/virtualization/virtualmachine/virtual_disks.html:11 +msgid "Rename" +msgstr "Cambiar nombre" + +#: templates/dcim/devicebay.html:18 +msgid "Device Bay" +msgstr "Bahía de dispositivos" + +#: templates/dcim/devicebay.html:48 +msgid "Installed Device" +msgstr "Dispositivo instalado" + +#: templates/dcim/devicebay_delete.html:6 +#, python-format +msgid "Delete device bay %(devicebay)s?" +msgstr "Eliminar compartimento de dispositivos %(devicebay)s?" + +#: templates/dcim/devicebay_delete.html:11 +#, python-format +msgid "" +"Are you sure you want to delete this device bay from " +"%(device)s?" +msgstr "" +"¿Confirma que desea eliminar este compartimento para dispositivos de " +"%(device)s?" + +#: templates/dcim/devicebay_depopulate.html:6 +#, python-format +msgid "Remove %(device)s from %(device_bay)s?" +msgstr "Eliminar %(device)s de %(device_bay)s?" + +#: templates/dcim/devicebay_depopulate.html:13 +#, python-format +msgid "" +"Are you sure you want to remove %(device)s from " +"%(device_bay)s?" +msgstr "" +"¿Estás seguro de que quieres eliminar? %(device)s de " +"%(device_bay)s?" + +#: templates/dcim/devicebay_populate.html:13 +msgid "Populate" +msgstr "Poblar" + +#: templates/dcim/devicebay_populate.html:22 +msgid "Bay" +msgstr "Bahía" + +#: templates/dcim/devicerole.html:14 templates/dcim/platform.html:17 +msgid "Add Device" +msgstr "Agregar dispositivo" + +#: templates/dcim/devicerole.html:43 +msgid "VM Role" +msgstr "Función de máquina virtual" + +#: templates/dcim/devicetype.html:21 templates/dcim/moduletype.html:19 +msgid "Model Name" +msgstr "Nombre del modelo" + +#: templates/dcim/devicetype.html:28 templates/dcim/moduletype.html:23 +msgid "Part Number" +msgstr "Número de pieza" + +#: templates/dcim/devicetype.html:40 +msgid "Height (U" +msgstr "Altura (U)" + +#: templates/dcim/devicetype.html:44 +msgid "Exclude From Utilization" +msgstr "Excluir de la utilización" + +#: templates/dcim/devicetype.html:62 +msgid "Parent/Child" +msgstr "Padre/hijo" + +#: templates/dcim/devicetype.html:74 +msgid "Front Image" +msgstr "Imagen frontal" + +#: templates/dcim/devicetype.html:86 +msgid "Rear Image" +msgstr "Imagen trasera" + +#: templates/dcim/frontport.html:57 +msgid "Rear Port Position" +msgstr "Posición del puerto trasero" + +#: templates/dcim/frontport.html:79 templates/dcim/interface.html:150 +#: templates/dcim/poweroutlet.html:67 templates/dcim/powerport.html:67 +#: templates/dcim/rearport.html:75 +msgid "Marked as Connected" +msgstr "Marcado como conectado" + +#: templates/dcim/frontport.html:93 templates/dcim/rearport.html:89 +msgid "Connection Status" +msgstr "Estado de conexión" + +#: templates/dcim/inc/cable_termination.html:65 +msgid "No termination" +msgstr "Sin rescisión" + +#: templates/dcim/inc/cable_toggle_buttons.html:4 +msgid "Mark Planned" +msgstr "Marcar como planificado" + +#: templates/dcim/inc/cable_toggle_buttons.html:8 +msgid "Mark Installed" +msgstr "Marcar como instalado" + +#: templates/dcim/inc/connection_endpoints.html:13 +msgid "Path Status" +msgstr "Estado de la ruta" + +#: templates/dcim/inc/connection_endpoints.html:18 +msgid "Not Reachable" +msgstr "No accesible" + +#: templates/dcim/inc/connection_endpoints.html:23 +msgid "Path Endpoints" +msgstr "Puntos finales de ruta" + +#: templates/dcim/inc/endpoint_connection.html:8 +#: templates/dcim/powerfeed.html:128 templates/dcim/rearport.html:101 +msgid "Not connected" +msgstr "No conectado" + +#: templates/dcim/inc/interface_vlans_table.html:6 +msgid "Untagged" +msgstr "Sin etiquetar" + +#: templates/dcim/inc/interface_vlans_table.html:37 +msgid "No VLANs Assigned" +msgstr "No hay VLAN asignadas" + +#: templates/dcim/inc/interface_vlans_table.html:44 +#: templates/ipam/prefix_list.html:16 templates/ipam/prefix_list.html:33 +msgid "Clear" +msgstr "Borrar" + +#: templates/dcim/inc/interface_vlans_table.html:47 +msgid "Clear All" +msgstr "Borrar todo" + +#: templates/dcim/interface.html:17 +msgid "Add Child Interface" +msgstr "Agregar interfaz secundaria" + +#: templates/dcim/interface.html:51 +msgid "Speed/Duplex" +msgstr "Velocidad/dúplex" + +#: templates/dcim/interface.html:74 +msgid "PoE Mode" +msgstr "Modo PoE" + +#: templates/dcim/interface.html:78 +msgid "PoE Type" +msgstr "Tipo de PoE" + +#: templates/dcim/interface.html:82 +#: templates/virtualization/vminterface.html:66 +msgid "802.1Q Mode" +msgstr "Modo 802.1Q" + +#: templates/dcim/interface.html:130 +#: templates/virtualization/vminterface.html:62 +msgid "MAC Address" +msgstr "Dirección MAC" + +#: templates/dcim/interface.html:157 +msgid "Wireless Link" +msgstr "Enlace inalámbrico" + +#: templates/dcim/interface.html:226 vpn/choices.py:55 +msgid "Peer" +msgstr "Par" + +#: templates/dcim/interface.html:238 +#: templates/wireless/inc/wirelesslink_interface.html:26 +msgid "Channel" +msgstr "Canal" + +#: templates/dcim/interface.html:247 +#: templates/wireless/inc/wirelesslink_interface.html:32 +msgid "Channel Frequency" +msgstr "Frecuencia de canal" + +#: templates/dcim/interface.html:250 templates/dcim/interface.html:258 +#: templates/dcim/interface.html:269 templates/dcim/interface.html:277 +msgid "MHz" +msgstr "megahercio" + +#: templates/dcim/interface.html:266 +#: templates/wireless/inc/wirelesslink_interface.html:42 +msgid "Channel Width" +msgstr "Ancho de canal" + +#: templates/dcim/interface.html:295 templates/wireless/wirelesslan.html:15 +#: templates/wireless/wirelesslink.html:24 wireless/forms/bulk_edit.py:59 +#: wireless/forms/bulk_edit.py:101 wireless/forms/filtersets.py:39 +#: wireless/forms/filtersets.py:79 wireless/models.py:81 +#: wireless/models.py:155 wireless/tables/wirelesslan.py:44 +msgid "SSID" +msgstr "SSID" + +#: templates/dcim/interface.html:316 +msgid "LAG Members" +msgstr "Miembros del LAG" + +#: templates/dcim/interface.html:335 +msgid "No member interfaces" +msgstr "Sin interfaces de miembros" + +#: templates/dcim/interface.html:359 templates/ipam/fhrpgroup.html:80 +#: templates/ipam/iprange/ip_addresses.html:7 +#: templates/ipam/prefix/ip_addresses.html:7 +#: templates/virtualization/vminterface.html:96 +msgid "Add IP Address" +msgstr "Agregar dirección IP" + +#: templates/dcim/inventoryitem.html:25 +msgid "Parent Item" +msgstr "Artículo principal" + +#: templates/dcim/inventoryitem.html:49 +msgid "Part ID" +msgstr "ID de pieza" + +#: templates/dcim/inventoryitem_bulk_delete.html:5 +msgid "This will also delete all child inventory items of those listed" +msgstr "" +"Esto también eliminará todos los artículos del inventario infantil de los " +"listados." + +#: templates/dcim/inventoryitem_edit.html:33 +msgid "Component Assignment" +msgstr "Asignación de componentes" + +#: templates/dcim/inventoryitem_edit.html:59 +#: templates/dcim/poweroutlet.html:18 templates/dcim/powerport.html:81 +msgid "Power Outlet" +msgstr "Toma de corriente" + +#: templates/dcim/location.html:17 +msgid "Add Child Location" +msgstr "Agregar ubicación infantil" + +#: templates/dcim/location.html:76 +msgid "Child Locations" +msgstr "Ubicaciones para niños" + +#: templates/dcim/location.html:84 templates/dcim/site.html:137 +msgid "Add a Location" +msgstr "Agregar una ubicación" + +#: templates/dcim/location.html:98 templates/dcim/site.html:151 +msgid "Add a Device" +msgstr "Agregar un dispositivo" + +#: templates/dcim/manufacturer.html:16 +msgid "Add Device Type" +msgstr "Agregar tipo de dispositivo" + +#: templates/dcim/manufacturer.html:21 +msgid "Add Module Type" +msgstr "Agregar tipo de módulo" + +#: templates/dcim/powerfeed.html:56 +msgid "Connected Device" +msgstr "Dispositivo conectado" + +#: templates/dcim/powerfeed.html:66 +msgid "Utilization (Allocated" +msgstr "Utilización (asignada)" + +#: templates/dcim/powerfeed.html:85 +msgid "Electrical Characteristics" +msgstr "Características eléctricas" + +#: templates/dcim/powerfeed.html:95 +msgctxt "Abbreviation for volts" +msgid "V" +msgstr "V" + +#: templates/dcim/powerfeed.html:99 +msgctxt "Abbreviation for amperes" +msgid "A" +msgstr "UN" + +#: templates/dcim/poweroutlet.html:51 +msgid "Feed Leg" +msgstr "Pierna de alimentación" + +#: templates/dcim/powerpanel.html:77 +msgid "Add Power Feeds" +msgstr "Añadir fuentes de alimentación" + +#: templates/dcim/powerport.html:47 +msgid "Maximum Draw" +msgstr "Sorteo máximo" + +#: templates/dcim/powerport.html:51 +msgid "Allocated Draw" +msgstr "Sorteo asignado" + +#: templates/dcim/rack.html:66 +msgid "Space Utilization" +msgstr "Utilización del espacio" + +#: templates/dcim/rack.html:96 +msgid "descending" +msgstr "descendiendo" + +#: templates/dcim/rack.html:96 +msgid "ascending" +msgstr "ascendiendo" + +#: templates/dcim/rack.html:99 +msgid "Starting Unit" +msgstr "Unidad inicial" + +#: templates/dcim/rack.html:125 +msgid "Mounting Depth" +msgstr "Profundidad de montaje" + +#: templates/dcim/rack.html:135 +msgid "Rack Weight" +msgstr "Peso del estante" + +#: templates/dcim/rack.html:145 templates/dcim/rack_edit.html:67 +msgid "Maximum Weight" +msgstr "Peso máximo" + +#: templates/dcim/rack.html:155 +msgid "Total Weight" +msgstr "Peso total" + +#: templates/dcim/rack.html:173 templates/dcim/rack_elevation_list.html:16 +msgid "Images and Labels" +msgstr "Imágenes y etiquetas" + +#: templates/dcim/rack.html:174 templates/dcim/rack_elevation_list.html:17 +msgid "Images only" +msgstr "Solo imágenes" + +#: templates/dcim/rack.html:175 templates/dcim/rack_elevation_list.html:18 +msgid "Labels only" +msgstr "Solo etiquetas" + +#: templates/dcim/rack/reservations.html:9 +msgid "Add reservation" +msgstr "Añadir reserva" + +#: templates/dcim/rack_edit.html:21 +msgid "Inventory Control" +msgstr "Control de inventario" + +#: templates/dcim/rack_edit.html:45 +msgid "Outer Dimensions" +msgstr "Dimensiones exteriores" + +#: templates/dcim/rack_edit.html:56 templates/dcim/rack_edit.html:71 +msgid "Unit" +msgstr "Unidad" + +#: templates/dcim/rack_elevation_list.html:12 +msgid "View List" +msgstr "Ver lista" + +#: templates/dcim/rack_elevation_list.html:27 +msgid "Sort By" +msgstr "Ordenar por" + +#: templates/dcim/rack_elevation_list.html:77 +msgid "No Racks Found" +msgstr "No se encontró ningún estante" + +#: templates/dcim/rack_list.html:8 +msgid "View Elevations" +msgstr "Ver elevaciones" + +#: templates/dcim/rackreservation.html:47 +msgid "Reservation Details" +msgstr "Detalles de la reserva" + +#: templates/dcim/rackrole.html:10 +msgid "Add Rack" +msgstr "Añadir estante" + +#: templates/dcim/rearport.html:53 +msgid "Positions" +msgstr "Posiciones" + +#: templates/dcim/region.html:17 templates/dcim/sitegroup.html:17 +msgid "Add Site" +msgstr "Agregar sitio" + +#: templates/dcim/region.html:56 +msgid "Child Regions" +msgstr "Regiones infantiles" + +#: templates/dcim/region.html:64 +msgid "Add Region" +msgstr "Agregar región" + +#: templates/dcim/site.html:56 +msgid "Facility" +msgstr "Instalación" + +#: templates/dcim/site.html:64 +msgid "Time Zone" +msgstr "Zona horaria" + +#: templates/dcim/site.html:67 +msgid "UTC" +msgstr "UTC" + +#: templates/dcim/site.html:68 +msgid "Site time" +msgstr "Hora del sitio" + +#: templates/dcim/site.html:75 +msgid "Physical Address" +msgstr "Dirección física" + +#: templates/dcim/site.html:81 +msgid "Map" +msgstr "Mapa" + +#: templates/dcim/site.html:92 +msgid "Shipping Address" +msgstr "Dirección de envío" + +#: templates/dcim/sitegroup.html:56 templates/tenancy/contactgroup.html:49 +#: templates/tenancy/tenantgroup.html:58 +#: templates/wireless/wirelesslangroup.html:56 +msgid "Child Groups" +msgstr "Grupos de niños" + +#: templates/dcim/sitegroup.html:64 +msgid "Add Site Group" +msgstr "Agregar grupo de sitios" + +#: templates/dcim/trace/attachment.html:5 +#: templates/extras/exporttemplate.html:37 +msgid "Attachment" +msgstr "Fijación" + +#: templates/dcim/virtualchassis.html:86 +msgid "Add Member" +msgstr "Agregar miembro" + +#: templates/dcim/virtualchassis_add.html:18 +msgid "Member Devices" +msgstr "Dispositivos de los miembros" + +#: templates/dcim/virtualchassis_add_member.html:6 +#, python-format +msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" +msgstr "Agregar un nuevo miembro al chasis virtual %(virtual_chassis)s" + +#: templates/dcim/virtualchassis_add_member.html:17 +msgid "Add New Member" +msgstr "Agregar nuevo miembro" + +#: templates/dcim/virtualchassis_add_member.html:25 +msgid "Add Another" +msgstr "Añadir otro" + +#: templates/dcim/virtualchassis_edit.html:7 +#, python-format +msgid "Editing Virtual Chassis %(name)s" +msgstr "Edición de chasis virtuales %(name)s" + +#: templates/dcim/virtualchassis_edit.html:54 +msgid "Rack/Unit" +msgstr "Bastidor/unidad" + +#: templates/dcim/virtualchassis_remove_member.html:5 +msgid "Remove Virtual Chassis Member" +msgstr "Eliminar miembro del chasis virtual" + +#: templates/dcim/virtualchassis_remove_member.html:9 +#, python-format +msgid "" +"Are you sure you want to remove %(device)s from virtual " +"chassis %(name)s?" +msgstr "" +"¿Estás seguro de que quieres eliminar? %(device)s desde un " +"chasis virtual %(name)s?" + +#: templates/dcim/virtualdevicecontext.html:29 templates/vpn/l2vpn.html:19 +msgid "Identifier" +msgstr "Identificador" + +#: templates/exceptions/import_error.html:6 +msgid "" +"A module import error occurred during this request. Common causes include " +"the following:" +msgstr "" +"Se ha producido un error de importación del módulo durante esta solicitud. " +"Entre las causas más frecuentes se incluyen las siguientes:" + +#: templates/exceptions/import_error.html:10 +msgid "Missing required packages" +msgstr "Faltan paquetes requeridos" + +#: templates/exceptions/import_error.html:11 +msgid "" +"This installation of NetBox might be missing one or more required Python " +"packages. These packages are listed in requirements.txt and " +"local_requirements.txt, and are normally installed as part of " +"the installation or upgrade process. To verify installed packages, run " +"pip freeze from the console and compare the output to the list " +"of required packages." +msgstr "" +"Es posible que a esta instalación de NetBox le falten uno o más paquetes de " +"Python necesarios. Estos paquetes se enumeran en " +"requirements.txt y local_requirements.txt, y " +"normalmente se instalan como parte del proceso de instalación o " +"actualización. Para comprobar los paquetes instalados, ejecute pipa " +"congelada desde la consola y compare el resultado con la lista de " +"paquetes necesarios." + +#: templates/exceptions/import_error.html:20 +msgid "WSGI service not restarted after upgrade" +msgstr "El servicio WSGI no se reinicia después de la actualización" + +#: templates/exceptions/import_error.html:21 +msgid "" +"If this installation has recently been upgraded, check that the WSGI service" +" (e.g. gunicorn or uWSGI) has been restarted. This ensures that the new code" +" is running." +msgstr "" +"Si esta instalación se actualizó recientemente, compruebe que el servicio " +"WSGI (por ejemplo, gunicorn o uWSGI) se haya reiniciado. Esto garantiza que " +"el nuevo código se esté ejecutando." + +#: templates/exceptions/permission_error.html:6 +msgid "" +"A file permission error was detected while processing this request. Common " +"causes include the following:" +msgstr "" +"Se detectó un error de permisos de archivos al procesar esta solicitud. " +"Entre las causas más frecuentes se incluyen las siguientes:" + +#: templates/exceptions/permission_error.html:10 +msgid "Insufficient write permission to the media root" +msgstr "Permisos de escritura insuficientes en la raíz multimedia" + +#: templates/exceptions/permission_error.html:11 +#, python-format +msgid "" +"The configured media root is %(media_root)s. Ensure that the " +"user NetBox runs as has access to write files to all locations within this " +"path." +msgstr "" +"La raíz de medios configurada es %(media_root)s. Asegúrese de " +"que el usuario NetBox se ejecute con acceso para escribir archivos en todas " +"las ubicaciones de esta ruta." + +#: templates/exceptions/programming_error.html:6 +msgid "" +"A database programming error was detected while processing this request. " +"Common causes include the following:" +msgstr "" +"Se detectó un error de programación de la base de datos al procesar esta " +"solicitud. Entre las causas más frecuentes se incluyen las siguientes:" + +#: templates/exceptions/programming_error.html:10 +msgid "Database migrations missing" +msgstr "Faltan migraciones de bases de datos" + +#: templates/exceptions/programming_error.html:11 +msgid "" +"When upgrading to a new NetBox release, the upgrade script must be run to " +"apply any new database migrations. You can run migrations manually by " +"executing python3 manage.py migrate from the command line." +msgstr "" +"Al actualizar a una nueva versión de NetBox, se debe ejecutar el script de " +"actualización para aplicar cualquier migración nueva de bases de datos. " +"Puede ejecutar las migraciones manualmente mediante la ejecución " +"python3 manage.py migre desde la línea de comandos." + +#: templates/exceptions/programming_error.html:18 +msgid "Unsupported PostgreSQL version" +msgstr "Versión de PostgreSQL no compatible" + +#: templates/exceptions/programming_error.html:19 +msgid "" +"Ensure that PostgreSQL version 12 or later is in use. You can check this by " +"connecting to the database using NetBox's credentials and issuing a query " +"for SELECT VERSION()." +msgstr "" +"Asegúrese de que la versión 12 o posterior de PostgreSQL esté en uso. Para " +"comprobarlo, conéctese a la base de datos utilizando las credenciales de " +"NetBox y emitiendo una consulta para SELECCIONE LA VERSIÓN ()." + +#: templates/extras/admin/plugins_list.html:4 +#: templates/extras/admin/plugins_list.html:9 +#: templates/extras/admin/plugins_list.html:13 +msgid "Installed Plugins" +msgstr "Plugins instalados" + +#: templates/extras/admin/plugins_list.html:23 +msgid "Package Name" +msgstr "Nombre del paquete" + +#: templates/extras/admin/plugins_list.html:24 +msgid "Author" +msgstr "autor" + +#: templates/extras/admin/plugins_list.html:25 +msgid "Author Email" +msgstr "Correo electrónico del autor" + +#: templates/extras/admin/plugins_list.html:27 +#: templates/vpn/ipsecprofile.html:47 vpn/forms/bulk_edit.py:140 +#: vpn/forms/bulk_import.py:171 vpn/tables/crypto.py:61 +msgid "Version" +msgstr "Versión" + +#: templates/extras/configcontext.html:46 +#: templates/extras/configtemplate.html:38 +#: templates/extras/exporttemplate.html:57 +msgid "The data file associated with this object has been deleted" +msgstr "Se ha eliminado el archivo de datos asociado a este objeto" + +#: templates/extras/configcontext.html:55 +#: templates/extras/configtemplate.html:47 +#: templates/extras/exporttemplate.html:66 +msgid "Data Synced" +msgstr "Datos sincronizados" + +#: templates/extras/configcontext_list.html:7 +#: templates/extras/configtemplate_list.html:7 +#: templates/extras/exporttemplate_list.html:7 +msgid "Sync Data" +msgstr "Sincronizar datos" + +#: templates/extras/configtemplate.html:58 +msgid "Environment Parameters" +msgstr "Parámetros del entorno" + +#: templates/extras/configtemplate.html:69 +#: templates/extras/exporttemplate.html:88 +msgid "Template" +msgstr "plantilla" + +#: templates/extras/customfield.html:31 templates/extras/customlink.html:22 +msgid "Group Name" +msgstr "Nombre del grupo" + +#: templates/extras/customfield.html:43 +msgid "Cloneable" +msgstr "Clonable" + +#: templates/extras/customfield.html:53 +msgid "Default Value" +msgstr "Valor predeterminado" + +#: templates/extras/customfield.html:64 +msgid "Search Weight" +msgstr "Peso de búsqueda" + +#: templates/extras/customfield.html:74 +msgid "Filter Logic" +msgstr "Lógica de filtros" + +#: templates/extras/customfield.html:78 +msgid "Display Weight" +msgstr "Peso de la pantalla" + +#: templates/extras/customfield.html:82 +msgid "UI Visible" +msgstr "Interfaz de usuario visible" + +#: templates/extras/customfield.html:86 +msgid "UI Editable" +msgstr "Interfaz de usuario editable" + +#: templates/extras/customfield.html:108 +msgid "Validation Rules" +msgstr "Reglas de validación" + +#: templates/extras/customfield.html:112 +msgid "Minimum Value" +msgstr "Valor mínimo" + +#: templates/extras/customfield.html:116 +msgid "Maximum Value" +msgstr "Valor máximo" + +#: templates/extras/customfield.html:120 +msgid "Regular Expression" +msgstr "Expresión regular" + +#: templates/extras/customlink.html:30 +msgid "Button Class" +msgstr "Clase de botones" + +#: templates/extras/customlink.html:41 templates/extras/exporttemplate.html:73 +#: templates/extras/savedfilter.html:41 +msgid "Assigned Models" +msgstr "Modelos asignados" + +#: templates/extras/customlink.html:57 +msgid "Link Text" +msgstr "Texto del enlace" + +#: templates/extras/customlink.html:65 +msgid "Link URL" +msgstr "URL del enlace" + +#: templates/extras/dashboard/reset.html:4 templates/home.html:63 +msgid "Reset Dashboard" +msgstr "Restablecer panel" + +#: templates/extras/dashboard/reset.html:8 +msgid "" +"This will remove all configured widgets and restore the " +"default dashboard configuration." +msgstr "" +"Esto eliminará todo configuró los widgets y restauró la " +"configuración predeterminada del panel de control." + +#: templates/extras/dashboard/reset.html:13 +msgid "" +"This change affects only your dashboard, and will not impact other " +"users." +msgstr "" +"Este cambio solo afecta vuestro panel de control, y no afectará a " +"otros usuarios." + +#: templates/extras/dashboard/widget_add.html:7 +msgid "Add a Widget" +msgstr "Añadir un widget" + +#: templates/extras/dashboard/widgets/bookmarks.html:14 +msgid "No bookmarks have been added yet." +msgstr "Aún no se ha añadido ningún marcador." + +#: templates/extras/dashboard/widgets/objectcounts.html:15 +msgid "No permission" +msgstr "Sin permiso" + +#: templates/extras/dashboard/widgets/objectlist.html:6 +msgid "No permission to view this content" +msgstr "Sin permiso para ver este contenido" + +#: templates/extras/dashboard/widgets/objectlist.html:10 +msgid "Unable to load content. Invalid view name" +msgstr "No se puede cargar el contenido. Nombre de vista no válido" + +#: templates/extras/dashboard/widgets/rssfeed.html:12 +msgid "No content found" +msgstr "No se ha encontrado contenido" + +#: templates/extras/dashboard/widgets/rssfeed.html:18 +msgid "There was a problem fetching the RSS feed" +msgstr "Se ha producido un problema al obtener la fuente RSS" + +#: templates/extras/dashboard/widgets/rssfeed.html:21 +msgid "HTTP" +msgstr "HTTP" + +#: templates/extras/eventrule.html:63 +msgid "Job start" +msgstr "Inicio del trabajo" + +#: templates/extras/eventrule.html:67 +msgid "Job end" +msgstr "Fin del trabajo" + +#: templates/extras/exporttemplate.html:29 +msgid "MIME Type" +msgstr "Tipo MIME" + +#: templates/extras/exporttemplate.html:33 +msgid "File Extension" +msgstr "Extensión de archivo" + +#: templates/extras/htmx/report_result.html:9 +#: templates/extras/htmx/script_result.html:10 +msgid "Scheduled for" +msgstr "Programado para" + +#: templates/extras/htmx/report_result.html:14 +#: templates/extras/htmx/script_result.html:15 +msgid "Duration" +msgstr "Duración" + +#: templates/extras/htmx/report_result.html:20 +msgid "Report Methods" +msgstr "Métodos de informe" + +#: templates/extras/htmx/report_result.html:38 +msgid "Report Results" +msgstr "Resultados del informe" + +#: templates/extras/htmx/report_result.html:44 +#: templates/extras/htmx/script_result.html:26 +msgid "Level" +msgstr "Nivel" + +#: templates/extras/htmx/report_result.html:46 +#: templates/extras/htmx/script_result.html:27 +msgid "Message" +msgstr "Mensaje" + +#: templates/extras/htmx/script_result.html:21 +msgid "Script Log" +msgstr "Registro de scripts" + +#: templates/extras/htmx/script_result.html:25 +msgid "Line" +msgstr "Línea" + +#: templates/extras/htmx/script_result.html:38 +msgid "No log output" +msgstr "Sin salida de registro" + +#: templates/extras/htmx/script_result.html:46 +msgid "Exec Time" +msgstr "Hora ejecutiva" + +#: templates/extras/htmx/script_result.html:46 +msgctxt "Unit of time" +msgid "seconds" +msgstr "segundos" + +#: templates/extras/htmx/script_result.html:50 +msgid "Output" +msgstr "Salida" + +#: templates/extras/inc/result_pending.html:4 +msgid "Loading" +msgstr "Cargando" + +#: templates/extras/inc/result_pending.html:6 +msgid "Results pending" +msgstr "Resultados pendientes" + +#: templates/extras/journalentry.html:16 +msgid "Journal Entry" +msgstr "Entrada de diario" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "Change log retention" +msgstr "Cambiar la retención de registros" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "days" +msgstr "días" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "Indefinite" +msgstr "Indefinido" + +#: templates/extras/object_configcontext.html:11 +msgid "Rendered Context" +msgstr "Contexto renderizado" + +#: templates/extras/object_configcontext.html:22 +msgid "Local Context" +msgstr "Contexto local" + +#: templates/extras/object_configcontext.html:34 +msgid "The local config context overwrites all source contexts" +msgstr "" +"El contexto de configuración local sobrescribe todos los contextos fuente" + +#: templates/extras/object_configcontext.html:40 +msgid "Source Contexts" +msgstr "Contextos de origen" + +#: templates/extras/object_journal.html:18 +msgid "New Journal Entry" +msgstr "Nueva entrada de diario" + +#: templates/extras/objectchange.html:29 +#: templates/users/objectpermission.html:45 +msgid "Change" +msgstr "Cambiar" + +#: templates/extras/objectchange.html:84 +msgid "Difference" +msgstr "Diferencia" + +#: templates/extras/objectchange.html:87 +msgid "Previous" +msgstr "Anterior" + +#: templates/extras/objectchange.html:90 +msgid "Next" +msgstr "Próxima" + +#: templates/extras/objectchange.html:98 +msgid "Object Created" +msgstr "Objeto creado" + +#: templates/extras/objectchange.html:100 +msgid "Object Deleted" +msgstr "Objeto eliminado" + +#: templates/extras/objectchange.html:102 +msgid "No Changes" +msgstr "Sin cambios" + +#: templates/extras/objectchange.html:117 +msgid "Pre-Change Data" +msgstr "Datos previos al cambio" + +#: templates/extras/objectchange.html:126 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Advertencia: comparación del cambio no atómico con el registro de cambios " +"anterior" + +#: templates/extras/objectchange.html:136 +msgid "Post-Change Data" +msgstr "Datos posteriores al cambio" + +#: templates/extras/objectchange.html:157 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Ver todos %(count)s Cambios" + +#: templates/extras/report.html:14 +msgid "This report is invalid and cannot be run." +msgstr "Este informe no es válido y no se puede ejecutar." + +#: templates/extras/report.html:23 templates/extras/report_list.html:88 +msgid "Run Again" +msgstr "Corre otra vez" + +#: templates/extras/report.html:25 templates/extras/report_list.html:90 +msgid "Run Report" +msgstr "Ejecutar informe" + +#: templates/extras/report.html:36 +msgid "Last run" +msgstr "Última ejecución" + +#: templates/extras/report/base.html:30 +msgid "Report" +msgstr "Informe" + +#: templates/extras/report_list.html:48 templates/extras/script_list.html:54 +msgid "Last Run" +msgstr "Última ejecución" + +#: templates/extras/report_list.html:70 templates/extras/script_list.html:77 +msgid "Never" +msgstr "Nunca" + +#: templates/extras/report_list.html:75 +msgid "Report has no test methods" +msgstr "El informe no tiene métodos de prueba" + +#: templates/extras/report_list.html:76 +msgid "Invalid" +msgstr "No válido" + +#: templates/extras/report_list.html:125 +msgid "No Reports Found" +msgstr "No se encontró ningún informe" + +#: templates/extras/report_list.html:128 +#, python-format +msgid "" +"Get started by creating a report from " +"an uploaded file or data source." +msgstr "" +"Comience por crear un informe desde un" +" archivo o fuente de datos cargados." + +#: templates/extras/script.html:13 +msgid "You do not have permission to run scripts" +msgstr "No tiene permiso para ejecutar scripts" + +#: templates/extras/script.html:37 +msgid "Run Script" +msgstr "Ejecutar script" + +#: templates/extras/script_list.html:44 +#, python-format +msgid "" +"Script file at %(file_path)s could not be " +"loaded." +msgstr "" +"Archivo de script en %(file_path)s no se pudo " +"cargar." + +#: templates/extras/script_list.html:91 +msgid "No Scripts Found" +msgstr "No se encontró ningún script" + +#: templates/extras/script_list.html:94 +#, python-format +msgid "" +"Get started by creating a script from " +"an uploaded file or data source." +msgstr "" +"Comience por crear un guion desde un " +"archivo o fuente de datos cargados." + +#: templates/extras/script_result.html:42 +msgid "Log" +msgstr "Registro" + +#: templates/extras/tag.html:35 +msgid "Tagged Items" +msgstr "Artículos etiquetados" + +#: templates/extras/tag.html:47 +msgid "Allowed Object Types" +msgstr "Tipos de objetos permitidos" + +#: templates/extras/tag.html:56 +msgid "Any" +msgstr "Cualquier" + +#: templates/extras/tag.html:63 +msgid "Tagged Item Types" +msgstr "Tipos de artículos etiquetados" + +#: templates/extras/tag.html:89 +msgid "Tagged Objects" +msgstr "Objetos etiquetados" + +#: templates/extras/webhook.html:33 +msgid "HTTP Method" +msgstr "Método HTTP" + +#: templates/extras/webhook.html:41 +msgid "HTTP Content Type" +msgstr "Tipo de contenido HTTP" + +#: templates/extras/webhook.html:58 +msgid "SSL Verification" +msgstr "Verificación SSL" + +#: templates/extras/webhook.html:73 +msgid "Additional Headers" +msgstr "Encabezados adicionales" + +#: templates/extras/webhook.html:85 +msgid "Body Template" +msgstr "Plantilla corporal" + +#: templates/generic/bulk_add_component.html:15 +msgid "Bulk Creation" +msgstr "Creación masiva" + +#: templates/generic/bulk_add_component.html:20 +#: templates/generic/bulk_edit.html:28 +msgid "Selected Objects" +msgstr "Objetos seleccionados" + +#: templates/generic/bulk_add_component.html:46 +msgid "to Add" +msgstr "añadir" + +#: templates/generic/bulk_delete.html:24 +msgid "Confirm Bulk Deletion" +msgstr "Confirme la eliminación masiva" + +#: templates/generic/bulk_delete.html:26 +msgctxt "Noun" +msgid "Warning" +msgstr "Advertencia" + +#: templates/generic/bulk_delete.html:27 +#, python-format +msgid "" +"The following operation will delete %(count)s " +"%(type_plural)s. Please carefully review the objects to be deleted and " +"confirm below." +msgstr "" +"La siguiente operación eliminará %(count)s %(type_plural)s." +" Revise detenidamente los objetos que desee eliminar y confírmelos a " +"continuación." + +#: templates/generic/bulk_edit.html:16 templates/generic/object_edit.html:17 +msgid "Editing" +msgstr "Edición" + +#: templates/generic/bulk_edit.html:23 +msgid "Bulk Edit" +msgstr "Edición masiva" + +#: templates/generic/bulk_edit.html:124 templates/generic/bulk_rename.html:42 +msgid "Apply" +msgstr "Aplica" + +#: templates/generic/bulk_import.html:14 +msgid "Bulk Import" +msgstr "Importación masiva" + +#: templates/generic/bulk_import.html:20 +msgid "Direct Import" +msgstr "Importación directa" + +#: templates/generic/bulk_import.html:25 +msgid "Upload File" +msgstr "Cargar archivo" + +#: templates/generic/bulk_import.html:51 templates/generic/bulk_import.html:73 +#: templates/generic/bulk_import.html:95 +msgid "Submit" +msgstr "Enviar" + +#: templates/generic/bulk_import.html:110 +msgid "Field Options" +msgstr "Opciones de campo" + +#: templates/generic/bulk_import.html:117 +msgid "Accessor" +msgstr "Accesor" + +#: templates/generic/bulk_import.html:154 +msgid "Import Value" +msgstr "Valor de importación" + +#: templates/generic/bulk_import.html:181 +msgid "Format: YYYY-MM-DD" +msgstr "Formato: AAAA-MM-DD" + +#: templates/generic/bulk_import.html:183 +msgid "Specify true or false" +msgstr "Especifique verdadero o falso" + +#: templates/generic/bulk_import.html:195 +msgid "Required fields must be specified for all objects." +msgstr "" +"Campos obligatorios mosto especificarse para todos los " +"objetos." + +#: templates/generic/bulk_import.html:201 +#, python-format +msgid "" +"Related objects may be referenced by any unique attribute. For example, " +"%(example)s would identify a VRF by its route distinguisher." +msgstr "" +"Se puede hacer referencia a los objetos relacionados mediante cualquier " +"atributo único. Por ejemplo, %(example)s identificaría un VRF " +"por su identificador de ruta." + +#: templates/generic/bulk_remove.html:13 +msgid "Confirm Bulk Removal" +msgstr "Confirme la eliminación masiva" + +#: templates/generic/bulk_remove.html:15 +#, python-format +msgid "" +"Warning: The following operation will remove %(count)s " +"%(obj_type_plural)s from %(parent_obj)s." +msgstr "" +"Advertencia: La siguiente operación eliminará %(count)s " +"%(obj_type_plural)s de %(parent_obj)s." + +#: templates/generic/bulk_remove.html:21 +#, python-format +msgid "" +"Please carefully review the %(obj_type_plural)s to be removed and confirm " +"below." +msgstr "" +"Revise detenidamente el %(obj_type_plural)s se eliminará y se confirmará a " +"continuación." + +#: templates/generic/bulk_remove.html:38 +#, python-format +msgid "Delete these %(count)s %(obj_type_plural)s" +msgstr "Elimine estos %(count)s %(obj_type_plural)s" + +#: templates/generic/bulk_rename.html:7 +msgid "Renaming" +msgstr "Cambiar el nombre" + +#: templates/generic/bulk_rename.html:16 +msgid "Current Name" +msgstr "Nombre actual" + +#: templates/generic/bulk_rename.html:17 +msgid "New Name" +msgstr "Nombre nuevo" + +#: templates/generic/bulk_rename.html:40 +#: utilities/templates/widgets/markdown_input.html:11 +msgid "Preview" +msgstr "Vista previa" + +#: templates/generic/confirmation_form.html:16 +msgid "Are you sure" +msgstr "¿Estás seguro" + +#: templates/generic/confirmation_form.html:19 +msgid "Confirm" +msgstr "Confirmar" + +#: templates/generic/object.html:51 +msgid "ago" +msgstr "hace" + +#: templates/generic/object_children.html:27 +#: utilities/templates/buttons/bulk_edit.html:4 +msgid "Edit Selected" +msgstr "Editar seleccionado" + +#: templates/generic/object_children.html:41 +#: utilities/templates/buttons/bulk_delete.html:4 +msgid "Delete Selected" +msgstr "Eliminar seleccionado" + +#: templates/generic/object_edit.html:19 +#, python-format +msgid "Add a new %(object_type)s" +msgstr "Añadir una nueva %(object_type)s" + +#: templates/generic/object_edit.html:47 +msgid "View model documentation" +msgstr "Ver la documentación del modelo" + +#: templates/generic/object_edit.html:48 +msgid "Help" +msgstr "Ayuda" + +#: templates/generic/object_edit.html:73 +msgid "Create & Add Another" +msgstr "Crear y agregar otro" + +#: templates/generic/object_list.html:48 templates/search.html:13 +msgid "Results" +msgstr "Resultados" + +#: templates/generic/object_list.html:54 +msgid "Filters" +msgstr "Filtros" + +#: templates/generic/object_list.html:94 +#, python-format +msgid "" +"Select all %(count)s %(object_type_plural)s matching query" +msgstr "" +"Seleccione todo %(count)s %(object_type_plural)s consulta " +"coincidente" + +#: templates/home.html:12 +msgid "New Release Available" +msgstr "Nueva versión disponible" + +#: templates/home.html:14 +msgid "is available" +msgstr "está disponible" + +#: templates/home.html:17 +msgctxt "Document title" +msgid "Upgrade Instructions" +msgstr "Instrucciones de actualización" + +#: templates/home.html:37 +msgid "Unlock Dashboard" +msgstr "Desbloquear panel" + +#: templates/home.html:46 +msgid "Lock Dashboard" +msgstr "Panel de control de bloqueo" + +#: templates/home.html:57 +msgid "Add Widget" +msgstr "Agregar widget" + +#: templates/home.html:60 +msgid "Save Layout" +msgstr "Guardar diseño" + +#: templates/htmx/delete_form.html:7 +msgid "Confirm Deletion" +msgstr "Confirme la eliminación" + +#: templates/htmx/delete_form.html:11 +#, python-format +msgid "" +"Are you sure you want to delete " +"%(object_type)s %(object)s?" +msgstr "" +"¿Estás seguro de que quieres eliminar" +" %(object_type)s %(object)s?" + +#: templates/htmx/delete_form.html:17 +msgid "The following objects will be deleted as a result of this action." +msgstr "Como resultado de esta acción, se eliminarán los siguientes objetos." + +#: templates/htmx/object_selector.html:5 +msgid "Select" +msgstr "Seleccione" + +#: templates/inc/filter_list.html:50 +#: utilities/templates/helpers/table_config_form.html:39 +msgid "Reset" +msgstr "Restablecer" + +#: templates/inc/missing_prerequisites.html:7 +#, python-format +msgid "" +"Before you can add a %(model)s you must first create a " +"%(prerequisite_model)s." +msgstr "" +"Antes de poder añadir un %(model)s primero debes crear un " +"%(prerequisite_model)s." + +#: templates/inc/paginator.html:38 templates/inc/paginator_htmx.html:53 +msgid "Per Page" +msgstr "Por página" + +#: templates/inc/paginator.html:49 templates/inc/paginator_htmx.html:69 +#, python-format +msgid "Showing %(start)s-%(end)s of %(total)s" +msgstr "Mostrando %(start)s-%(end)s de %(total)s" + +#: templates/inc/panels/image_attachments.html:10 +msgid "Attach an image" +msgstr "Adjunta una imagen" + +#: templates/inc/panels/related_objects.html:5 +msgid "Related Objects" +msgstr "Objetos relacionados" + +#: templates/inc/panels/tags.html:11 +msgid "No tags assigned" +msgstr "No hay etiquetas asignadas" + +#: templates/inc/profile_button.html:12 templates/inc/profile_button.html:62 +msgid "Dark Mode" +msgstr "Modo oscuro" + +#: templates/inc/profile_button.html:45 +msgid "Log Out" +msgstr "Cerrar sesión" + +#: templates/inc/profile_button.html:53 +msgid "Log In" +msgstr "Iniciar sesión" + +#: templates/inc/sync_warning.html:7 +msgid "Data is out of sync with upstream file" +msgstr "Los datos no están sincronizados con el archivo anterior" + +#: templates/inc/table_controls_htmx.html:16 +#: templates/inc/table_controls_htmx.html:18 +msgid "Configure Table" +msgstr "Configurar tabla" + +#: templates/ipam/aggregate.html:15 templates/ipam/ipaddress.html:17 +#: templates/ipam/iprange.html:16 templates/ipam/prefix.html:16 +msgid "Family" +msgstr "Familia" + +#: templates/ipam/aggregate.html:40 +msgid "Date Added" +msgstr "Fecha añadida" + +#: templates/ipam/aggregate/prefixes.html:8 +#: templates/ipam/prefix/prefixes.html:8 templates/ipam/role.html:10 +msgid "Add Prefix" +msgstr "Agregar prefijo" + +#: templates/ipam/asn.html:24 +msgid "AS Number" +msgstr "Número AS" + +#: templates/ipam/fhrpgroup.html:55 +msgid "Authentication Type" +msgstr "Tipo de autenticación" + +#: templates/ipam/fhrpgroup.html:59 +msgid "Authentication Key" +msgstr "Clave de autenticación" + +#: templates/ipam/fhrpgroup.html:72 +msgid "Virtual IP Addresses" +msgstr "Direcciones IP virtuales" + +#: templates/ipam/fhrpgroupassignment_edit.html:8 +msgid "FHRP Group Assignment" +msgstr "Asignación grupal de FHRP" + +#: templates/ipam/inc/ipaddress_edit_header.html:19 +msgid "Assign IP" +msgstr "Asignar IP" + +#: templates/ipam/inc/ipaddress_edit_header.html:28 +msgid "Bulk Create" +msgstr "Creación masiva" + +#: templates/ipam/inc/panels/fhrp_groups.html:12 +msgid "Virtual IPs" +msgstr "IP virtuales" + +#: templates/ipam/inc/panels/fhrp_groups.html:52 +msgid "Create Group" +msgstr "Crear grupo" + +#: templates/ipam/inc/panels/fhrp_groups.html:57 +msgid "Assign Group" +msgstr "Asignar grupo" + +#: templates/ipam/inc/toggle_available.html:7 +msgid "Show Assigned" +msgstr "Mostrar asignado" + +#: templates/ipam/inc/toggle_available.html:10 +msgid "Show Available" +msgstr "Mostrar disponible" + +#: templates/ipam/inc/toggle_available.html:13 +msgid "Show All" +msgstr "Mostrar todo" + +#: templates/ipam/ipaddress.html:26 templates/ipam/iprange.html:48 +#: templates/ipam/prefix.html:25 +msgid "Global" +msgstr "Global" + +#: templates/ipam/ipaddress.html:88 +msgid "NAT (outside)" +msgstr "NAT (exterior)" + +#: templates/ipam/ipaddress_assign.html:8 +msgid "Assign an IP Address" +msgstr "Asignar una dirección IP" + +#: templates/ipam/ipaddress_assign.html:23 +msgid "Select IP Address" +msgstr "Seleccione la dirección IP" + +#: templates/ipam/ipaddress_assign.html:39 +msgid "Search Results" +msgstr "Resultados de la búsqueda" + +#: templates/ipam/ipaddress_bulk_add.html:6 +msgid "Bulk Add IP Addresses" +msgstr "Agregar direcciones IP de forma masiva" + +#: templates/ipam/ipaddress_edit.html:35 +msgid "Interface Assignment" +msgstr "Asignación de interfaz" + +#: templates/ipam/ipaddress_edit.html:74 +msgid "NAT IP (Inside" +msgstr "NAT IP (interior)" + +#: templates/ipam/iprange.html:20 +msgid "Starting Address" +msgstr "Dirección inicial" + +#: templates/ipam/iprange.html:24 +msgid "Ending Address" +msgstr "Dirección final" + +#: templates/ipam/iprange.html:36 templates/ipam/prefix.html:104 +msgid "Marked fully utilized" +msgstr "Marcado como totalmente utilizado" + +#: templates/ipam/prefix.html:112 +msgid "Child IPs" +msgstr "IP para niños" + +#: templates/ipam/prefix.html:120 +msgid "Available IPs" +msgstr "IPs disponibles" + +#: templates/ipam/prefix.html:132 +msgid "First available IP" +msgstr "Primera IP disponible" + +#: templates/ipam/prefix.html:151 +msgid "Addressing Details" +msgstr "Detalles de direccionamiento" + +#: templates/ipam/prefix.html:181 +msgid "Prefix Details" +msgstr "Detalles del prefijo" + +#: templates/ipam/prefix.html:187 +msgid "Network Address" +msgstr "Dirección de red" + +#: templates/ipam/prefix.html:191 +msgid "Network Mask" +msgstr "Máscara de red" + +#: templates/ipam/prefix.html:195 +msgid "Wildcard Mask" +msgstr "Máscara Wildcard" + +#: templates/ipam/prefix.html:199 +msgid "Broadcast Address" +msgstr "Dirección de transmisión" + +#: templates/ipam/prefix/ip_ranges.html:7 +msgid "Add IP Range" +msgstr "Agregar rango de IP" + +#: templates/ipam/prefix_list.html:7 +msgid "Hide Depth Indicators" +msgstr "Ocultar indicadores de profundidad" + +#: templates/ipam/prefix_list.html:11 +msgid "Max Depth" +msgstr "Profundidad máxima" + +#: templates/ipam/prefix_list.html:28 +msgid "Max Length" +msgstr "Longitud máxima" + +#: templates/ipam/rir.html:10 +msgid "Add Aggregate" +msgstr "Agregar agregado" + +#: templates/ipam/routetarget.html:10 +msgid "Route Target" +msgstr "Objetivo de ruta" + +#: templates/ipam/routetarget.html:40 +msgid "Importing VRFs" +msgstr "Importación de VRF" + +#: templates/ipam/routetarget.html:49 +msgid "Exporting VRFs" +msgstr "Exportación de VRF" + +#: templates/ipam/routetarget.html:60 +msgid "Importing L2VPNs" +msgstr "Importación de VPNs L2" + +#: templates/ipam/routetarget.html:69 +msgid "Exporting L2VPNs" +msgstr "Exportación de VPNs L2" + +#: templates/ipam/service.html:22 templates/ipam/service_create.html:8 +#: templates/ipam/service_edit.html:8 +msgid "Service" +msgstr "Servicio" + +#: templates/ipam/service_create.html:43 +msgid "From Template" +msgstr "Desde plantilla" + +#: templates/ipam/service_create.html:48 +msgid "Custom" +msgstr "Personalizado" + +#: templates/ipam/service_edit.html:37 +msgid "Port(s)" +msgstr "Puerto (s)" + +#: templates/ipam/vlan.html:95 +msgid "Add a Prefix" +msgstr "Agregar un prefijo" + +#: templates/ipam/vlangroup.html:18 +msgid "Add VLAN" +msgstr "Agregar VLAN" + +#: templates/ipam/vlangroup.html:43 +msgid "Permitted VIDs" +msgstr "VÍDEOS permitidos" + +#: templates/ipam/vrf.html:19 +msgid "Route Distinguisher" +msgstr "Distinguidor de rutas" + +#: templates/ipam/vrf.html:32 +msgid "Unique IP Space" +msgstr "Espacio IP único" + +#: templates/login.html:20 +#: utilities/templates/form_helpers/render_errors.html:7 +msgid "Errors" +msgstr "Errores" + +#: templates/login.html:48 +msgid "Sign In" +msgstr "Iniciar sesión" + +#: templates/login.html:54 +msgid "Or use a single sign-on (SSO) provider" +msgstr "O usa un proveedor de inicio de sesión único (SSO)" + +#: templates/login.html:68 +msgid "Toggle Color Mode" +msgstr "Alternar modo de color" + +#: templates/media_failure.html:7 +msgid "Static Media Failure - NetBox" +msgstr "Fallo de medios estáticos - NetBox" + +#: templates/media_failure.html:21 +msgid "Static Media Failure" +msgstr "Fallo de medios estáticos" + +#: templates/media_failure.html:23 +msgid "The following static media file failed to load" +msgstr "No se pudo cargar el siguiente archivo multimedia estático" + +#: templates/media_failure.html:26 +msgid "Check the following" +msgstr "Compruebe lo siguiente" + +#: templates/media_failure.html:29 +msgid "" +"manage.py collectstatic was run during the most recent upgrade." +" This installs the most recent iteration of each static file into the static" +" root path." +msgstr "" +"manage.py recopila estática se ejecutó durante la actualización" +" más reciente. Esto instala la iteración más reciente de cada archivo " +"estático en la ruta raíz estática." + +#: templates/media_failure.html:35 +#, python-format +msgid "" +"The HTTP service (e.g. nginx or Apache) is configured to serve files from " +"the STATIC_ROOT path. Refer to the " +"installation documentation for further guidance." +msgstr "" +"El servicio HTTP (por ejemplo, nginx o Apache) está configurado para servir " +"archivos desde RAÍZ_ESTÁTICA camino. Consulte la documentación de instalación para obtener más " +"información." + +#: templates/media_failure.html:47 +#, python-format +msgid "" +"The file %(filename)s exists in the static root directory and " +"is readable by the HTTP server." +msgstr "" +"El archivo %(filename)s existe en el directorio raíz estático y" +" el servidor HTTP lo puede leer." + +#: templates/media_failure.html:55 +#, python-format +msgid "Click here to attempt loading NetBox again." +msgstr "" +"Haga clic aquí para intentar cargar NetBox de " +"nuevo." + +#: templates/tenancy/contact.html:18 tenancy/filtersets.py:135 +#: tenancy/forms/bulk_edit.py:136 tenancy/forms/filtersets.py:101 +#: tenancy/forms/forms.py:56 tenancy/forms/model_forms.py:109 +#: tenancy/forms/model_forms.py:132 tenancy/tables/contacts.py:98 +msgid "Contact" +msgstr "Contacto" + +#: templates/tenancy/contact.html:30 tenancy/forms/bulk_edit.py:98 +msgid "Title" +msgstr "Título" + +#: templates/tenancy/contact.html:34 tenancy/forms/bulk_edit.py:103 +#: tenancy/tables/contacts.py:64 +msgid "Phone" +msgstr "Teléfono" + +#: templates/tenancy/contact.html:86 tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Asignaciones" + +#: templates/tenancy/contactassignment_edit.html:12 +msgid "Contact Assignment" +msgstr "Asignación de contactos" + +#: templates/tenancy/contactgroup.html:19 tenancy/forms/forms.py:66 +#: tenancy/forms/model_forms.py:76 +msgid "Contact Group" +msgstr "Grupo de contacto" + +#: templates/tenancy/contactgroup.html:57 +msgid "Add Contact Group" +msgstr "Agregar grupo de contactos" + +#: templates/tenancy/contactrole.html:15 tenancy/filtersets.py:140 +#: tenancy/forms/forms.py:61 tenancy/forms/model_forms.py:90 +msgid "Contact Role" +msgstr "Función de contacto" + +#: templates/tenancy/object_contacts.html:9 +msgid "Add a contact" +msgstr "Añadir un contacto" + +#: templates/tenancy/tenantgroup.html:17 +msgid "Add Tenant" +msgstr "Agregar inquilino" + +#: templates/tenancy/tenantgroup.html:27 tenancy/forms/model_forms.py:31 +#: tenancy/tables/columns.py:51 tenancy/tables/columns.py:61 +msgid "Tenant Group" +msgstr "Grupo de inquilinos" + +#: templates/tenancy/tenantgroup.html:66 +msgid "Add Tenant Group" +msgstr "Agregar grupo de inquilinos" + +#: templates/users/group.html:37 templates/users/user.html:61 +msgid "Assigned Permissions" +msgstr "Permisos asignados" + +#: templates/users/objectpermission.html:6 +#: templates/users/objectpermission.html:14 users/forms/filtersets.py:67 +msgid "Permission" +msgstr "Permiso" + +#: templates/users/objectpermission.html:33 users/forms/filtersets.py:68 +#: users/forms/model_forms.py:321 +msgid "Actions" +msgstr "Acciones" + +#: templates/users/objectpermission.html:37 +msgid "View" +msgstr "Ver" + +#: templates/users/objectpermission.html:56 users/forms/model_forms.py:324 +msgid "Constraints" +msgstr "Restricciones" + +#: templates/users/objectpermission.html:76 +msgid "Assigned Users" +msgstr "Usuarios asignados" + +#: templates/users/user.html:38 +msgid "Staff" +msgstr "Personal" + +#: templates/virtualization/cluster.html:56 +msgid "Allocated Resources" +msgstr "Recursos asignados" + +#: templates/virtualization/cluster.html:60 +#: templates/virtualization/virtualmachine.html:128 +msgid "Virtual CPUs" +msgstr "CPUs virtuales" + +#: templates/virtualization/cluster.html:64 +#: templates/virtualization/virtualmachine.html:132 +msgid "Memory" +msgstr "Memoria" + +#: templates/virtualization/cluster.html:74 +#: templates/virtualization/virtualmachine.html:143 +msgid "Disk Space" +msgstr "Espacio en disco" + +#: templates/virtualization/cluster.html:77 +#: templates/virtualization/virtualdisk.html:33 +#: templates/virtualization/virtualmachine.html:147 +msgctxt "Abbreviation for gigabyte" +msgid "GB" +msgstr "GB" + +#: templates/virtualization/cluster/base.html:18 +msgid "Add Virtual Machine" +msgstr "Agregar máquina virtual" + +#: templates/virtualization/cluster/base.html:24 +msgid "Assign Device" +msgstr "Asignar dispositivo" + +#: templates/virtualization/cluster/devices.html:10 +msgid "Remove Selected" +msgstr "Eliminar seleccionado" + +#: templates/virtualization/cluster_add_devices.html:9 +#, python-format +msgid "Add Device to Cluster %(cluster)s" +msgstr "Agregar dispositivo al clúster %(cluster)s" + +#: templates/virtualization/cluster_add_devices.html:23 +msgid "Device Selection" +msgstr "Selección de dispositivos" + +#: templates/virtualization/cluster_add_devices.html:31 +msgid "Add Devices" +msgstr "Agregar dispositivos" + +#: templates/virtualization/clustergroup.html:10 +#: templates/virtualization/clustertype.html:10 +msgid "Add Cluster" +msgstr "Agregar clúster" + +#: templates/virtualization/clustergroup.html:20 +#: virtualization/forms/model_forms.py:51 +msgid "Cluster Group" +msgstr "Grupo de clústeres" + +#: templates/virtualization/clustertype.html:20 +#: templates/virtualization/virtualmachine.html:111 +#: virtualization/forms/model_forms.py:35 +msgid "Cluster Type" +msgstr "Tipo de clúster" + +#: templates/virtualization/virtualdisk.html:18 +msgid "Virtual Disk" +msgstr "Disco virtual" + +#: templates/virtualization/virtualmachine.html:124 +#: virtualization/forms/bulk_edit.py:189 +#: virtualization/forms/model_forms.py:227 +msgid "Resources" +msgstr "Recursos" + +#: templates/virtualization/virtualmachine.html:185 +msgid "Add Virtual Disk" +msgstr "Agregar disco virtual" + +#: templates/vpn/ikepolicy.html:10 templates/vpn/ipsecprofile.html:35 +#: vpn/tables/crypto.py:166 +msgid "IKE Policy" +msgstr "Política de IKE" + +#: templates/vpn/ikepolicy.html:22 +msgid "IKE Version" +msgstr "Versión IKE" + +#: templates/vpn/ikepolicy.html:30 +msgid "Pre-Shared Key" +msgstr "Clave previamente compartida" + +#: templates/vpn/ikepolicy.html:34 +#: templates/wireless/inc/authentication_attrs.html:21 +msgid "Show Secret" +msgstr "Mostrar secreto" + +#: templates/vpn/ikepolicy.html:59 templates/vpn/ipsecpolicy.html:47 +#: templates/vpn/ipsecprofile.html:55 templates/vpn/ipsecprofile.html:82 +#: vpn/forms/model_forms.py:310 vpn/forms/model_forms.py:345 +#: vpn/tables/crypto.py:68 vpn/tables/crypto.py:134 +msgid "Proposals" +msgstr "Propuestas" + +#: templates/vpn/ikeproposal.html:10 +msgid "IKE Proposal" +msgstr "Propuesta IKE" + +#: templates/vpn/ikeproposal.html:22 vpn/forms/bulk_edit.py:96 +#: vpn/forms/bulk_import.py:145 vpn/forms/filtersets.py:98 +msgid "Authentication method" +msgstr "Método de autenticación" + +#: templates/vpn/ikeproposal.html:26 templates/vpn/ipsecproposal.html:22 +#: vpn/forms/bulk_edit.py:101 vpn/forms/bulk_edit.py:173 +#: vpn/forms/bulk_import.py:149 vpn/forms/bulk_import.py:193 +#: vpn/forms/filtersets.py:103 vpn/forms/filtersets.py:151 +msgid "Encryption algorithm" +msgstr "Algoritmo de cifrado" + +#: templates/vpn/ikeproposal.html:30 templates/vpn/ipsecproposal.html:26 +#: vpn/forms/bulk_edit.py:106 vpn/forms/bulk_edit.py:178 +#: vpn/forms/bulk_import.py:153 vpn/forms/bulk_import.py:197 +#: vpn/forms/filtersets.py:108 vpn/forms/filtersets.py:156 +msgid "Authentication algorithm" +msgstr "Algoritmo de autenticación" + +#: templates/vpn/ikeproposal.html:34 +msgid "DH group" +msgstr "Grupo DH" + +#: templates/vpn/ikeproposal.html:38 templates/vpn/ipsecproposal.html:30 +#: vpn/forms/bulk_edit.py:183 vpn/models/crypto.py:134 +msgid "SA lifetime (seconds)" +msgstr "Una vida útil (segundos)" + +#: templates/vpn/ipsecpolicy.html:10 templates/vpn/ipsecprofile.html:70 +#: vpn/tables/crypto.py:170 +msgid "IPSec Policy" +msgstr "Política IPSec" + +#: templates/vpn/ipsecpolicy.html:22 vpn/forms/bulk_edit.py:211 +#: vpn/models/crypto.py:181 +msgid "PFS group" +msgstr "Grupo PFS" + +#: templates/vpn/ipsecprofile.html:10 vpn/forms/model_forms.py:53 +msgid "IPSec Profile" +msgstr "Perfil IPSec" + +#: templates/vpn/ipsecprofile.html:94 vpn/tables/crypto.py:137 +msgid "PFS Group" +msgstr "Grupo PFS" + +#: templates/vpn/ipsecproposal.html:10 +msgid "IPSec Proposal" +msgstr "Propuesta de IPSec" + +#: templates/vpn/ipsecproposal.html:34 vpn/forms/bulk_edit.py:187 +#: vpn/models/crypto.py:140 +msgid "SA lifetime (KB)" +msgstr "Una vida útil (KB)" + +#: templates/vpn/l2vpn.html:11 templates/vpn/l2vpntermination.html:10 +msgid "L2VPN Attributes" +msgstr "Atributos de L2VPN" + +#: templates/vpn/l2vpn.html:65 templates/vpn/tunnel.html:81 +msgid "Add a Termination" +msgstr "Agregar una terminación" + +#: templates/vpn/l2vpntermination_edit.html:9 +msgid "L2VPN Termination" +msgstr "Terminación de L2VPN" + +#: templates/vpn/tunnel.html:9 +msgid "Add Termination" +msgstr "Agregar terminación" + +#: templates/vpn/tunnel.html:38 vpn/forms/bulk_edit.py:48 +#: vpn/forms/bulk_import.py:48 vpn/forms/filtersets.py:56 +msgid "Encapsulation" +msgstr "Encapsulación" + +#: templates/vpn/tunnel.html:42 vpn/forms/bulk_edit.py:54 +#: vpn/forms/bulk_import.py:53 vpn/forms/filtersets.py:63 +#: vpn/models/crypto.py:238 vpn/tables/tunnels.py:47 +msgid "IPSec profile" +msgstr "Perfil IPSec" + +#: templates/vpn/tunnel.html:46 vpn/forms/bulk_edit.py:68 +#: vpn/forms/filtersets.py:67 +msgid "Tunnel ID" +msgstr "ID de túnel" + +#: templates/vpn/tunnelgroup.html:14 +msgid "Add Tunnel" +msgstr "Añadir túnel" + +#: templates/vpn/tunnelgroup.html:24 vpn/forms/model_forms.py:35 +#: vpn/forms/model_forms.py:48 +msgid "Tunnel Group" +msgstr "Grupo Tunnel" + +#: templates/vpn/tunneltermination.html:10 +msgid "Tunnel Termination" +msgstr "Terminación del túnel" + +#: templates/vpn/tunneltermination.html:36 vpn/forms/bulk_import.py:107 +#: vpn/forms/model_forms.py:101 vpn/forms/model_forms.py:137 +#: vpn/forms/model_forms.py:248 vpn/tables/tunnels.py:97 +msgid "Outside IP" +msgstr "IP externa" + +#: templates/vpn/tunneltermination.html:53 +msgid "Peer Terminations" +msgstr "Terminaciones de pares" + +#: templates/wireless/inc/authentication_attrs.html:13 +msgid "Cipher" +msgstr "Cifrar" + +#: templates/wireless/inc/authentication_attrs.html:17 +msgid "PSK" +msgstr "PSK" + +#: templates/wireless/inc/wirelesslink_interface.html:35 +#: templates/wireless/inc/wirelesslink_interface.html:45 +msgctxt "Abbreviation for megahertz" +msgid "MHz" +msgstr "megahercio" + +#: templates/wireless/wirelesslan.html:11 wireless/forms/model_forms.py:54 +msgid "Wireless LAN" +msgstr "LAN inalámbrica" + +#: templates/wireless/wirelesslan.html:59 +msgid "Attached Interfaces" +msgstr "Interfaces conectadas" + +#: templates/wireless/wirelesslangroup.html:17 +msgid "Add Wireless LAN" +msgstr "Agregar LAN inalámbrica" + +#: templates/wireless/wirelesslangroup.html:26 +#: wireless/forms/model_forms.py:27 +msgid "Wireless LAN Group" +msgstr "Grupo de LAN inalámbrica" + +#: templates/wireless/wirelesslangroup.html:64 +msgid "Add Wireless LAN Group" +msgstr "Agregar grupo de LAN inalámbrica" + +#: templates/wireless/wirelesslink.html:16 +msgid "Link Properties" +msgstr "Propiedades del enlace" + +#: tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Terciario" + +#: tenancy/choices.py:20 +msgid "Inactive" +msgstr "Inactivo" + +#: tenancy/filtersets.py:29 tenancy/filtersets.py:55 tenancy/filtersets.py:97 +msgid "Contact group (ID)" +msgstr "Grupo de contactos (ID)" + +#: tenancy/filtersets.py:35 tenancy/filtersets.py:62 tenancy/filtersets.py:104 +msgid "Contact group (slug)" +msgstr "Grupo de contacto (slug)" + +#: tenancy/filtersets.py:91 +msgid "Contact (ID)" +msgstr "Contacto (ID)" + +#: tenancy/filtersets.py:108 +msgid "Contact role (ID)" +msgstr "Rol de contacto (ID)" + +#: tenancy/filtersets.py:114 +msgid "Contact role (slug)" +msgstr "Rol de contacto (babosa)" + +#: tenancy/filtersets.py:146 +msgid "Contact group" +msgstr "Grupo de contactos" + +#: tenancy/filtersets.py:157 tenancy/filtersets.py:176 +msgid "Tenant group (ID)" +msgstr "Grupo de inquilinos (ID)" + +#: tenancy/filtersets.py:209 +msgid "Tenant Group (ID)" +msgstr "Grupo de inquilinos (ID)" + +#: tenancy/filtersets.py:216 +msgid "Tenant Group (slug)" +msgstr "Grupo de inquilinos (babosa)" + +#: tenancy/forms/bulk_edit.py:65 +msgid "Desciption" +msgstr "Descripción" + +#: tenancy/forms/bulk_import.py:101 +msgid "Assigned contact" +msgstr "Contacto asignado" + +#: tenancy/models/contacts.py:32 +msgid "contact group" +msgstr "grupo de contacto" + +#: tenancy/models/contacts.py:33 +msgid "contact groups" +msgstr "grupos de contacto" + +#: tenancy/models/contacts.py:48 +msgid "contact role" +msgstr "rol de contacto" + +#: tenancy/models/contacts.py:49 +msgid "contact roles" +msgstr "roles de contacto" + +#: tenancy/models/contacts.py:68 +msgid "title" +msgstr "título" + +#: tenancy/models/contacts.py:73 +msgid "phone" +msgstr "llamar por teléfono" + +#: tenancy/models/contacts.py:78 +msgid "email" +msgstr "correo electrónico" + +#: tenancy/models/contacts.py:87 +msgid "link" +msgstr "eslabón" + +#: tenancy/models/contacts.py:103 +msgid "contact" +msgstr "contacto" + +#: tenancy/models/contacts.py:104 +msgid "contacts" +msgstr "contactos" + +#: tenancy/models/contacts.py:153 +msgid "contact assignment" +msgstr "asignación de contactos" + +#: tenancy/models/contacts.py:154 +msgid "contact assignments" +msgstr "asignaciones de contactos" + +#: tenancy/models/contacts.py:170 +#, python-brace-format +msgid "Contacts cannot be assigned to this object type ({type})." +msgstr "No se pueden asignar contactos a este tipo de objeto ({type})." + +#: tenancy/models/tenants.py:32 +msgid "tenant group" +msgstr "grupo de inquilinos" + +#: tenancy/models/tenants.py:33 +msgid "tenant groups" +msgstr "grupos de inquilinos" + +#: tenancy/models/tenants.py:70 +msgid "Tenant name must be unique per group." +msgstr "El nombre del inquilino debe ser único por grupo." + +#: tenancy/models/tenants.py:80 +msgid "Tenant slug must be unique per group." +msgstr "La babosa del inquilino debe ser única por grupo." + +#: tenancy/models/tenants.py:88 +msgid "tenant" +msgstr "inquilino" + +#: tenancy/models/tenants.py:89 +msgid "tenants" +msgstr "inquilinos" + +#: tenancy/tables/contacts.py:112 +msgid "Contact Title" +msgstr "Título del contacto" + +#: tenancy/tables/contacts.py:116 +msgid "Contact Phone" +msgstr "Teléfono de contacto" + +#: tenancy/tables/contacts.py:120 +msgid "Contact Email" +msgstr "Correo electrónico de contacto" + +#: tenancy/tables/contacts.py:124 +msgid "Contact Address" +msgstr "Dirección de contacto" + +#: tenancy/tables/contacts.py:128 +msgid "Contact Link" +msgstr "Enlace de contacto" + +#: tenancy/tables/contacts.py:132 +msgid "Contact Description" +msgstr "Descripción del contacto" + +#: users/filtersets.py:48 users/filtersets.py:151 +msgid "Group (name)" +msgstr "Grupo (nombre)" + +#: users/forms/bulk_edit.py:24 +msgid "First name" +msgstr "Nombre de pila" + +#: users/forms/bulk_edit.py:29 +msgid "Last name" +msgstr "Apellido" + +#: users/forms/bulk_edit.py:41 +msgid "Staff status" +msgstr "Situación del personal" + +#: users/forms/bulk_edit.py:46 +msgid "Superuser status" +msgstr "Estado de superusuario" + +#: users/forms/bulk_import.py:43 +msgid "If no key is provided, one will be generated automatically." +msgstr "Si no se proporciona ninguna clave, se generará una automáticamente." + +#: users/forms/filtersets.py:52 users/tables.py:42 +msgid "Is Staff" +msgstr "Es personal" + +#: users/forms/filtersets.py:59 users/tables.py:45 +msgid "Is Superuser" +msgstr "Es superusuario" + +#: users/forms/filtersets.py:92 users/tables.py:89 +msgid "Can View" +msgstr "Puede ver" + +#: users/forms/filtersets.py:99 users/tables.py:92 +msgid "Can Add" +msgstr "Puede agregar" + +#: users/forms/filtersets.py:106 users/tables.py:95 +msgid "Can Change" +msgstr "Puede cambiar" + +#: users/forms/filtersets.py:113 users/tables.py:98 +msgid "Can Delete" +msgstr "Puede eliminar" + +#: users/forms/model_forms.py:58 +msgid "User Interface" +msgstr "Interfaz de usuario" + +#: users/forms/model_forms.py:115 +msgid "" +"Keys must be at least 40 characters in length. Be sure to record " +"your key prior to submitting this form, as it may no longer be " +"accessible once the token has been created." +msgstr "" +"Las claves deben tener al menos 40 caracteres. Asegúrese de grabar " +"su clave antes de enviar este formulario, ya que es posible que ya " +"no se pueda acceder a él una vez que se haya creado el token." + +#: users/forms/model_forms.py:127 +msgid "" +"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" +" no restrictions. Example: " +"10.1.1.0/24,192.168.10.16/32,2001:db8:1::/64" +msgstr "" +"Redes IPv4/IPv6 permitidas desde las que se puede usar el token. Déjelo en " +"blanco para que no haya restricciones. Ejemplo: 10.1.1.0/24, " +"192.168.10.16/32, 2001:db 8:1: :/64" + +#: users/forms/model_forms.py:176 +msgid "Confirm password" +msgstr "Confirme la contraseña" + +#: users/forms/model_forms.py:179 +msgid "Enter the same password as before, for verification." +msgstr "Introduce la misma contraseña que antes para verificarla." + +#: users/forms/model_forms.py:237 +msgid "Passwords do not match! Please check your input and try again." +msgstr "" +"¡Las contraseñas no coinciden! Compruebe los datos introducidos e inténtelo " +"de nuevo." + +#: users/forms/model_forms.py:303 +msgid "Additional actions" +msgstr "Acciones adicionales" + +#: users/forms/model_forms.py:306 +msgid "Actions granted in addition to those listed above" +msgstr "Acciones concedidas además de las enumeradas anteriormente" + +#: users/forms/model_forms.py:322 +msgid "Objects" +msgstr "Objetos" + +#: users/forms/model_forms.py:334 +msgid "" +"JSON expression of a queryset filter that will return only permitted " +"objects. Leave null to match all objects of this type. A list of multiple " +"objects will result in a logical OR operation." +msgstr "" +"Expresión JSON de un filtro de conjunto de consultas que devolverá solo los " +"objetos permitidos. Deje nulo para que coincida con todos los objetos de " +"este tipo. Una lista de varios objetos dará como resultado una operación OR " +"lógica." + +#: users/forms/model_forms.py:372 +msgid "At least one action must be selected." +msgstr "Debe seleccionarse al menos una acción." + +#: users/forms/model_forms.py:389 +#, python-brace-format +msgid "Invalid filter for {model}: {error}" +msgstr "Filtro no válido para {model}: {error}" + +#: users/models.py:54 +msgid "user" +msgstr "usuario" + +#: users/models.py:55 +msgid "users" +msgstr "usuarios" + +#: users/models.py:66 +msgid "A user with this username already exists." +msgstr "Ya existe un usuario con este nombre de usuario." + +#: users/models.py:78 vpn/models/crypto.py:42 +msgid "group" +msgstr "grupo" + +#: users/models.py:79 +msgid "groups" +msgstr "grupos" + +#: users/models.py:106 users/models.py:107 +msgid "user preferences" +msgstr "preferencias de usuario" + +#: users/models.py:174 +#, python-brace-format +msgid "Key '{path}' is a leaf node; cannot assign new keys" +msgstr "Clave '{path}'es un nodo de hoja; no se pueden asignar claves nuevas" + +#: users/models.py:186 +#, python-brace-format +msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" +msgstr "" +"Clave '{path}'es un diccionario; no puede asignar un valor que no sea de " +"diccionario" + +#: users/models.py:252 +msgid "expires" +msgstr "caduca" + +#: users/models.py:257 +msgid "last used" +msgstr "utilizado por última vez" + +#: users/models.py:262 +msgid "key" +msgstr "clave" + +#: users/models.py:268 +msgid "write enabled" +msgstr "escritura habilitada" + +#: users/models.py:270 +msgid "Permit create/update/delete operations using this key" +msgstr "" +"Permitir operaciones de creación/actualización/eliminación con esta clave" + +#: users/models.py:281 +msgid "allowed IPs" +msgstr "IP permitidas" + +#: users/models.py:283 +msgid "" +"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" +" no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" +msgstr "" +"Redes IPv4/IPv6 permitidas desde las que se puede usar el token. Déjelo en " +"blanco para que no haya restricciones. Por ejemplo: «10.1.1.0/24, " +"192.168.10.16/32, 2001:DB 8:1: :/64\"" + +#: users/models.py:291 +msgid "token" +msgstr "simbólico" + +#: users/models.py:292 +msgid "tokens" +msgstr "fichas" + +#: users/models.py:373 +msgid "The list of actions granted by this permission" +msgstr "La lista de acciones concedidas por este permiso" + +#: users/models.py:378 +msgid "constraints" +msgstr "restricciones" + +#: users/models.py:379 +msgid "" +"Queryset filter matching the applicable objects of the selected type(s)" +msgstr "" +"Filtro Queryset que coincide con los objetos aplicables de los tipos " +"seleccionados" + +#: users/models.py:386 +msgid "permission" +msgstr "permiso" + +#: users/models.py:387 +msgid "permissions" +msgstr "permisos" + +#: users/tables.py:101 +msgid "Custom Actions" +msgstr "Acciones personalizadas" + +#: utilities/choices.py:16 +#, python-brace-format +msgid "{name} has a key defined but CHOICES is not a list" +msgstr "{name} tiene una clave definida, pero CHOICES no es una lista" + +#: utilities/choices.py:135 +msgid "Dark Red" +msgstr "rojo oscuro" + +#: utilities/choices.py:138 +msgid "Rose" +msgstr "Rosa" + +#: utilities/choices.py:139 +msgid "Fuchsia" +msgstr "Fucsia" + +#: utilities/choices.py:141 +msgid "Dark Purple" +msgstr "Púrpura oscuro" + +#: utilities/choices.py:144 +msgid "Light Blue" +msgstr "Azul claro" + +#: utilities/choices.py:147 +msgid "Aqua" +msgstr "Aguamarina" + +#: utilities/choices.py:148 +msgid "Dark Green" +msgstr "Verde oscuro" + +#: utilities/choices.py:150 +msgid "Light Green" +msgstr "Verde claro" + +#: utilities/choices.py:151 +msgid "Lime" +msgstr "Lima" + +#: utilities/choices.py:153 +msgid "Amber" +msgstr "Ámbar" + +#: utilities/choices.py:155 +msgid "Dark Orange" +msgstr "Naranja oscuro" + +#: utilities/choices.py:156 +msgid "Brown" +msgstr "Marrón" + +#: utilities/choices.py:157 +msgid "Light Grey" +msgstr "Gris claro" + +#: utilities/choices.py:158 +msgid "Grey" +msgstr "Gris" + +#: utilities/choices.py:159 +msgid "Dark Grey" +msgstr "Gris oscuro" + +#: utilities/choices.py:217 +msgid "Direct" +msgstr "Directo" + +#: utilities/choices.py:218 +msgid "Upload" +msgstr "Cargar" + +#: utilities/choices.py:230 utilities/choices.py:244 +msgid "Auto-detect" +msgstr "Detección automática" + +#: utilities/choices.py:245 +msgid "Comma" +msgstr "Coma" + +#: utilities/choices.py:246 +msgid "Semicolon" +msgstr "Punto y coma" + +#: utilities/choices.py:247 +msgid "Tab" +msgstr "Pestaña" + +#: utilities/error_handlers.py:20 +#, python-brace-format +msgid "" +"Unable to delete {objects}. {count} dependent objects were " +"found: " +msgstr "" +"No se puede eliminar {objects}. {count} se encontraron " +"objetos dependientes: " + +#: utilities/error_handlers.py:22 +msgid "More than 50" +msgstr "Más de 50" + +#: utilities/fields.py:162 +#, python-format +msgid "" +"%s(%r) is invalid. to_model parameter to CounterCacheField must be a string " +"in the format 'app.model'" +msgstr "" +"%s(%r) no es válido. El parámetro to_model de CounterCacheField debe ser una" +" cadena con el formato 'app.model'" + +#: utilities/fields.py:172 +#, python-format +msgid "" +"%s(%r) is invalid. to_field parameter to CounterCacheField must be a string " +"in the format 'field'" +msgstr "" +"%s(%r) no es válido. El parámetro to_field de CounterCacheField debe ser una" +" cadena con el formato 'campo'" + +#: utilities/forms/bulk_import.py:24 +msgid "Enter object data in CSV, JSON or YAML format." +msgstr "Introduzca los datos del objeto en formato CSV, JSON o YAML." + +#: utilities/forms/bulk_import.py:37 +msgid "CSV delimiter" +msgstr "Delimitador CSV" + +#: utilities/forms/bulk_import.py:38 +msgid "The character which delimits CSV fields. Applies only to CSV format." +msgstr "" +"El carácter que delimita los campos CSV. Se aplica solo al formato CSV." + +#: utilities/forms/bulk_import.py:101 +msgid "Unable to detect data format. Please specify." +msgstr "No se pudo detectar el formato de los datos. Especifique." + +#: utilities/forms/bulk_import.py:124 +msgid "Invalid CSV delimiter" +msgstr "Delimitador CSV no válido" + +#: utilities/forms/bulk_import.py:168 +msgid "" +"Invalid YAML data. Data must be in the form of multiple documents, or a " +"single document comprising a list of dictionaries." +msgstr "" +"Datos YAML no válidos. Los datos deben estar en forma de varios documentos o" +" de un solo documento que contenga una lista de diccionarios." + +#: utilities/forms/fields/array.py:17 +#, python-brace-format +msgid "" +"Invalid list ({value}). Must be numeric and ranges must be in ascending " +"order." +msgstr "" +"Lista no válida ({value}). Debe ser numérico y los rangos deben estar en " +"orden ascendente." + +#: utilities/forms/fields/csv.py:44 +#, python-brace-format +msgid "Invalid value for a multiple choice field: {value}" +msgstr "Valor no válido para un campo de opción múltiple: {value}" + +#: utilities/forms/fields/csv.py:57 utilities/forms/fields/csv.py:74 +#, python-format +msgid "Object not found: %(value)s" +msgstr "Objeto no encontrado: %(value)s" + +#: utilities/forms/fields/csv.py:65 +#, python-brace-format +msgid "" +"\"{value}\" is not a unique value for this field; multiple objects were " +"found" +msgstr "" +"«{value}\"no es un valor único para este campo; se han encontrado varios " +"objetos" + +#: utilities/forms/fields/csv.py:97 +msgid "Object type must be specified as \".\"" +msgstr "El tipo de objeto debe especificarse como».»" + +#: utilities/forms/fields/csv.py:101 +msgid "Invalid object type" +msgstr "Tipo de objeto no válido" + +#: utilities/forms/fields/expandable.py:25 +msgid "" +"Alphanumeric ranges are supported for bulk creation. Mixed cases and types " +"within a single range are not supported (example: " +"[ge,xe]-0/0/[0-9])." +msgstr "" +"Los rangos alfanuméricos son compatibles para la creación masiva. No se " +"admiten casos y tipos mixtos dentro de un único rango (por ejemplo: " +"[Edad, sexo] -0/0/ [0-9])." + +#: utilities/forms/fields/expandable.py:46 +msgid "" +"Specify a numeric range to create multiple IPs.
    Example: " +"192.0.2.[1,5,100-254]/24" +msgstr "" +"Especifique un rango numérico para crear varias direcciones IP.
    Ejemplo: 192.0.2. [1,5,100-254] /24" + +#: utilities/forms/fields/fields.py:31 +#, python-brace-format +msgid "" +" Markdown syntax is supported" +msgstr "" +" Markdown se admite la sintaxis" + +#: utilities/forms/fields/fields.py:48 +msgid "URL-friendly unique shorthand" +msgstr "Abreviatura única compatible con URL" + +#: utilities/forms/fields/fields.py:99 +msgid "Enter context data in JSON format." +msgstr "" +"Introduzca los datos de contexto en JSON " +"formato." + +#: utilities/forms/fields/fields.py:117 +msgid "MAC address must be in EUI-48 format" +msgstr "La dirección MAC debe estar en formato EUI-48" + +#: utilities/forms/forms.py:53 +msgid "Use regular expressions" +msgstr "Usa expresiones regulares" + +#: utilities/forms/forms.py:87 +#, python-brace-format +msgid "Unrecognized header: {name}" +msgstr "Encabezado no reconocido: {name}" + +#: utilities/forms/forms.py:113 +msgid "Available Columns" +msgstr "Columnas disponibles" + +#: utilities/forms/forms.py:121 +msgid "Selected Columns" +msgstr "Columnas seleccionadas" + +#: utilities/forms/mixins.py:101 +msgid "" +"This object has been modified since the form was rendered. Please consult " +"the object's change log for details." +msgstr "" +"Este objeto se ha modificado desde que se renderizó el formulario. Consulte " +"el registro de cambios del objeto para obtener más información." + +#: utilities/templates/builtins/customfield_value.html:30 +msgid "Not defined" +msgstr "No definido" + +#: utilities/templates/buttons/bookmark.html:9 +msgid "Unbookmark" +msgstr "Desmarcar" + +#: utilities/templates/buttons/bookmark.html:13 +msgid "Bookmark" +msgstr "Marcador" + +#: utilities/templates/buttons/clone.html:4 +msgid "Clone" +msgstr "Clon" + +#: utilities/templates/buttons/export.html:4 +msgid "Export" +msgstr "Exportación" + +#: utilities/templates/buttons/export.html:7 +msgid "Current View" +msgstr "Vista actual" + +#: utilities/templates/buttons/export.html:8 +msgid "All Data" +msgstr "Todos los datos" + +#: utilities/templates/buttons/export.html:28 +msgid "Add export template" +msgstr "Añadir plantilla de exportación" + +#: utilities/templates/buttons/import.html:4 +msgid "Import" +msgstr "Importar" + +#: utilities/templates/form_helpers/render_field.html:36 +msgid "Copy to clipboard" +msgstr "Copiar al portapapeles" + +#: utilities/templates/form_helpers/render_field.html:52 +msgid "This field is required" +msgstr "Este campo es obligatorio" + +#: utilities/templates/form_helpers/render_field.html:65 +msgid "Set Null" +msgstr "Establecer nulo" + +#: utilities/templates/helpers/applied_filters.html:11 +msgid "Clear all" +msgstr "Borrar todo" + +#: utilities/templates/helpers/table_config_form.html:8 +msgid "Table Configuration" +msgstr "Configuración de tablas" + +#: utilities/templates/helpers/table_config_form.html:31 +msgid "Move Up" +msgstr "Muévete hacia arriba" + +#: utilities/templates/helpers/table_config_form.html:34 +msgid "Move Down" +msgstr "Muévete hacia abajo" + +#: utilities/templates/widgets/apiselect.html:7 +msgid "Open selector" +msgstr "Selector abierto" + +#: utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "No se ha asignado ninguno" + +#: utilities/templates/widgets/markdown_input.html:6 +msgid "Write" +msgstr "Escribe" + +#: utilities/templates/widgets/markdown_input.html:20 +msgid "Testing" +msgstr "Probando" + +#: virtualization/filtersets.py:79 +msgid "Parent group (ID)" +msgstr "Grupo de padres (ID)" + +#: virtualization/filtersets.py:85 +msgid "Parent group (slug)" +msgstr "Grupo de padres (babosas)" + +#: virtualization/filtersets.py:89 virtualization/filtersets.py:140 +msgid "Cluster type (ID)" +msgstr "Tipo de clúster (ID)" + +#: virtualization/filtersets.py:129 +msgid "Cluster group (ID)" +msgstr "Grupo de clústeres (ID)" + +#: virtualization/filtersets.py:150 virtualization/filtersets.py:265 +msgid "Cluster (ID)" +msgstr "Clúster (ID)" + +#: virtualization/forms/bulk_edit.py:165 +#: virtualization/models/virtualmachines.py:113 +msgid "vCPUs" +msgstr "CPU virtuales" + +#: virtualization/forms/bulk_edit.py:169 +msgid "Memory (MB)" +msgstr "Memoria (MB)" + +#: virtualization/forms/bulk_edit.py:173 +msgid "Disk (GB)" +msgstr "Disco (GB)" + +#: virtualization/forms/bulk_edit.py:333 +#: virtualization/forms/filtersets.py:243 +msgid "Size (GB)" +msgstr "Tamaño (GB)" + +#: virtualization/forms/bulk_import.py:44 +msgid "Type of cluster" +msgstr "Tipo de clúster" + +#: virtualization/forms/bulk_import.py:51 +msgid "Assigned cluster group" +msgstr "Grupo de clústeres asignado" + +#: virtualization/forms/bulk_import.py:96 +msgid "Assigned cluster" +msgstr "Clúster asignado" + +#: virtualization/forms/bulk_import.py:103 +msgid "Assigned device within cluster" +msgstr "Dispositivo asignado dentro del clúster" + +#: virtualization/forms/model_forms.py:156 +#, python-brace-format +msgid "" +"{device} belongs to a different site ({device_site}) than the cluster " +"({cluster_site})" +msgstr "" +"{device} pertenece a un sitio diferente ({device_site}) que el clúster " +"({cluster_site})" + +#: virtualization/forms/model_forms.py:195 +msgid "Optionally pin this VM to a specific host device within the cluster" +msgstr "" +"Si lo desea, puede anclar esta máquina virtual a un dispositivo host " +"específico dentro del clúster" + +#: virtualization/forms/model_forms.py:224 +msgid "Site/Cluster" +msgstr "Sitio/Clúster" + +#: virtualization/forms/model_forms.py:247 +msgid "Disk size is managed via the attachment of virtual disks." +msgstr "" +"El tamaño del disco se administra mediante la conexión de discos virtuales." + +#: virtualization/forms/model_forms.py:375 +msgid "Disk" +msgstr "Disco" + +#: virtualization/models/clusters.py:25 +msgid "cluster type" +msgstr "tipo de clúster" + +#: virtualization/models/clusters.py:26 +msgid "cluster types" +msgstr "tipos de clústeres" + +#: virtualization/models/clusters.py:45 +msgid "cluster group" +msgstr "grupo de clústeres" + +#: virtualization/models/clusters.py:46 +msgid "cluster groups" +msgstr "grupos de clústeres" + +#: virtualization/models/clusters.py:121 +msgid "cluster" +msgstr "racimo" + +#: virtualization/models/clusters.py:122 +msgid "clusters" +msgstr "racimos" + +#: virtualization/models/clusters.py:141 +#, python-brace-format +msgid "" +"{count} devices are assigned as hosts for this cluster but are not in site " +"{site}" +msgstr "" +"{count} los dispositivos se asignan como hosts para este clúster, pero no " +"están en el sitio {site}" + +#: virtualization/models/virtualmachines.py:121 +msgid "memory (MB)" +msgstr "memoria (MB)" + +#: virtualization/models/virtualmachines.py:126 +msgid "disk (GB)" +msgstr "disco (GB)" + +#: virtualization/models/virtualmachines.py:159 +msgid "Virtual machine name must be unique per cluster." +msgstr "El nombre de la máquina virtual debe ser único por clúster." + +#: virtualization/models/virtualmachines.py:162 +msgid "virtual machine" +msgstr "máquina virtual" + +#: virtualization/models/virtualmachines.py:163 +msgid "virtual machines" +msgstr "máquinas virtuales" + +#: virtualization/models/virtualmachines.py:177 +msgid "A virtual machine must be assigned to a site and/or cluster." +msgstr "Se debe asignar una máquina virtual a un sitio o clúster." + +#: virtualization/models/virtualmachines.py:184 +#, python-brace-format +msgid "" +"The selected cluster ({cluster}) is not assigned to this site ({site})." +msgstr "" +"El clúster seleccionado ({cluster}) no está asignado a este sitio ({site})." + +#: virtualization/models/virtualmachines.py:191 +msgid "Must specify a cluster when assigning a host device." +msgstr "Debe especificar un clúster al asignar un dispositivo host." + +#: virtualization/models/virtualmachines.py:196 +#, python-brace-format +msgid "" +"The selected device ({device}) is not assigned to this cluster ({cluster})." +msgstr "" +"El dispositivo seleccionado ({device}) no está asignado a este clúster " +"({cluster})." + +#: virtualization/models/virtualmachines.py:208 +#, python-brace-format +msgid "" +"The specified disk size ({size}) must match the aggregate size of assigned " +"virtual disks ({total_size})." +msgstr "" +"El tamaño de disco especificado ({size}) debe coincidir con el tamaño " +"agregado de los discos virtuales asignados ({total_size})." + +#: virtualization/models/virtualmachines.py:222 +#, python-brace-format +msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" +msgstr "" +"Debe ser un IPv{family} dirección. ({ip} es un IPv{version} dirección.)" + +#: virtualization/models/virtualmachines.py:231 +#, python-brace-format +msgid "The specified IP address ({ip}) is not assigned to this VM." +msgstr "" +"La dirección IP especificada ({ip}) no está asignado a esta máquina virtual." + +#: virtualization/models/virtualmachines.py:389 +#, python-brace-format +msgid "" +"The selected parent interface ({parent}) belongs to a different virtual " +"machine ({virtual_machine})." +msgstr "" +"La interfaz principal seleccionada ({parent}) pertenece a una máquina " +"virtual diferente ({virtual_machine})." + +#: virtualization/models/virtualmachines.py:404 +#, python-brace-format +msgid "" +"The selected bridge interface ({bridge}) belongs to a different virtual " +"machine ({virtual_machine})." +msgstr "" +"La interfaz de puente seleccionada ({bridge}) pertenece a una máquina " +"virtual diferente ({virtual_machine})." + +#: virtualization/models/virtualmachines.py:415 +#, python-brace-format +msgid "" +"The untagged VLAN ({untagged_vlan}) must belong to the same site as the " +"interface's parent virtual machine, or it must be global." +msgstr "" +"La VLAN sin etiquetar ({untagged_vlan}) debe pertenecer al mismo sitio que " +"la máquina virtual principal de la interfaz o debe ser global." + +#: virtualization/models/virtualmachines.py:427 +msgid "size (GB)" +msgstr "tamaño (GB)" + +#: virtualization/models/virtualmachines.py:431 +msgid "virtual disk" +msgstr "disco virtual" + +#: virtualization/models/virtualmachines.py:432 +msgid "virtual disks" +msgstr "discos virtuales" + +#: vpn/choices.py:31 +msgid "IPsec - Transport" +msgstr "IPSec - Transporte" + +#: vpn/choices.py:32 +msgid "IPsec - Tunnel" +msgstr "IPSec - Túnel" + +#: vpn/choices.py:33 +msgid "IP-in-IP" +msgstr "IP en IP" + +#: vpn/choices.py:34 +msgid "GRE" +msgstr "GRIS" + +#: vpn/choices.py:56 +msgid "Hub" +msgstr "Hub" + +#: vpn/choices.py:57 +msgid "Spoke" +msgstr "Habló" + +#: vpn/choices.py:80 +msgid "Aggressive" +msgstr "Agresivo" + +#: vpn/choices.py:81 +msgid "Main" +msgstr "Principal" + +#: vpn/choices.py:92 +msgid "Pre-shared keys" +msgstr "Claves previamente compartidas" + +#: vpn/choices.py:93 +msgid "Certificates" +msgstr "Certificados" + +#: vpn/choices.py:94 +msgid "RSA signatures" +msgstr "Firmas RSA" + +#: vpn/choices.py:95 +msgid "DSA signatures" +msgstr "Firmas de la DSA" + +#: vpn/choices.py:178 vpn/choices.py:179 vpn/choices.py:180 vpn/choices.py:181 +#: vpn/choices.py:182 vpn/choices.py:183 vpn/choices.py:184 vpn/choices.py:185 +#: vpn/choices.py:186 vpn/choices.py:187 vpn/choices.py:188 vpn/choices.py:189 +#: vpn/choices.py:190 vpn/choices.py:191 vpn/choices.py:192 vpn/choices.py:193 +#: vpn/choices.py:194 vpn/choices.py:195 vpn/choices.py:196 vpn/choices.py:197 +#: vpn/choices.py:198 vpn/choices.py:199 vpn/choices.py:200 +#, python-brace-format +msgid "Group {n}" +msgstr "Grupo {n}" + +#: vpn/choices.py:240 +msgid "Ethernet Private LAN" +msgstr "LAN privada Ethernet" + +#: vpn/choices.py:241 +msgid "Ethernet Virtual Private LAN" +msgstr "LAN privada virtual Ethernet" + +#: vpn/choices.py:244 +msgid "Ethernet Private Tree" +msgstr "Árbol privado de Ethernet" + +#: vpn/choices.py:245 +msgid "Ethernet Virtual Private Tree" +msgstr "Árbol privado virtual de Ethernet" + +#: vpn/filtersets.py:41 +msgid "Tunnel group (ID)" +msgstr "Grupo de túneles (ID)" + +#: vpn/filtersets.py:47 +msgid "Tunnel group (slug)" +msgstr "Grupo de túneles (babosas)" + +#: vpn/filtersets.py:54 +msgid "IPSec profile (ID)" +msgstr "Perfil IPSec (ID)" + +#: vpn/filtersets.py:60 +msgid "IPSec profile (name)" +msgstr "Perfil IPSec (nombre)" + +#: vpn/filtersets.py:81 +msgid "Tunnel (ID)" +msgstr "Túnel (ID)" + +#: vpn/filtersets.py:87 +msgid "Tunnel (name)" +msgstr "Túnel (nombre)" + +#: vpn/filtersets.py:118 +msgid "Outside IP (ID)" +msgstr "IP externa (ID)" + +#: vpn/filtersets.py:235 +msgid "IKE policy (ID)" +msgstr "Política de IKE (ID)" + +#: vpn/filtersets.py:241 +msgid "IKE policy (name)" +msgstr "Política IKE (nombre)" + +#: vpn/filtersets.py:245 +msgid "IPSec policy (ID)" +msgstr "Política IPSec (ID)" + +#: vpn/filtersets.py:251 +msgid "IPSec policy (name)" +msgstr "Política IPSec (nombre)" + +#: vpn/filtersets.py:320 +msgid "L2VPN (slug)" +msgstr "VPN L2 (babosa)" + +#: vpn/filtersets.py:384 +msgid "VM Interface (ID)" +msgstr "Interfaz VM (ID)" + +#: vpn/filtersets.py:390 +msgid "VLAN (name)" +msgstr "VLAN (nombre)" + +#: vpn/forms/bulk_edit.py:44 vpn/forms/bulk_import.py:42 +#: vpn/forms/filtersets.py:53 +msgid "Tunnel group" +msgstr "Grupo de túneles" + +#: vpn/forms/bulk_edit.py:116 vpn/models/crypto.py:47 +msgid "SA lifetime" +msgstr "Toda una vida" + +#: vpn/forms/bulk_edit.py:150 wireless/forms/bulk_edit.py:78 +#: wireless/forms/bulk_edit.py:125 wireless/forms/filtersets.py:63 +#: wireless/forms/filtersets.py:97 +msgid "Pre-shared key" +msgstr "Clave previamente compartida" + +#: vpn/forms/bulk_edit.py:238 vpn/forms/bulk_import.py:234 +#: vpn/forms/filtersets.py:196 vpn/forms/model_forms.py:363 +#: vpn/models/crypto.py:103 +msgid "IKE policy" +msgstr "Política de IKE" + +#: vpn/forms/bulk_edit.py:243 vpn/forms/bulk_import.py:239 +#: vpn/forms/filtersets.py:201 vpn/forms/model_forms.py:367 +#: vpn/models/crypto.py:197 +msgid "IPSec policy" +msgstr "Política IPSec" + +#: vpn/forms/bulk_import.py:50 +msgid "Tunnel encapsulation" +msgstr "Encapsulación de túneles" + +#: vpn/forms/bulk_import.py:83 +msgid "Operational role" +msgstr "Función operativa" + +#: vpn/forms/bulk_import.py:90 +msgid "Parent device of assigned interface" +msgstr "Dispositivo principal de la interfaz asignada" + +#: vpn/forms/bulk_import.py:97 +msgid "Parent VM of assigned interface" +msgstr "VM principal de la interfaz asignada" + +#: vpn/forms/bulk_import.py:104 +msgid "Device or virtual machine interface" +msgstr "Interfaz de dispositivo o máquina virtual" + +#: vpn/forms/bulk_import.py:181 +msgid "IKE proposal(s)" +msgstr "Propuesta (s) de IKE" + +#: vpn/forms/bulk_import.py:211 vpn/models/crypto.py:185 +msgid "Diffie-Hellman group for Perfect Forward Secrecy" +msgstr "Grupo Diffie-Hellman para Perfect Forward Secrecy" + +#: vpn/forms/bulk_import.py:217 +msgid "IPSec proposal(s)" +msgstr "Propuestas de IPSec" + +#: vpn/forms/bulk_import.py:231 +msgid "IPSec protocol" +msgstr "Protocolo IPSec" + +#: vpn/forms/bulk_import.py:261 +msgid "L2VPN type" +msgstr "Tipo L2VPN" + +#: vpn/forms/bulk_import.py:282 +msgid "Parent device (for interface)" +msgstr "Dispositivo principal (para interfaz)" + +#: vpn/forms/bulk_import.py:289 +msgid "Parent virtual machine (for interface)" +msgstr "Máquina virtual principal (para interfaz)" + +#: vpn/forms/bulk_import.py:296 +msgid "Assigned interface (device or VM)" +msgstr "Interfaz asignada (dispositivo o máquina virtual)" + +#: vpn/forms/bulk_import.py:329 +msgid "Cannot import device and VM interface terminations simultaneously." +msgstr "" +"No se pueden importar las terminaciones de la interfaz de máquina virtual y " +"del dispositivo de forma simultánea." + +#: vpn/forms/bulk_import.py:331 +msgid "Each termination must specify either an interface or a VLAN." +msgstr "Cada terminación debe especificar una interfaz o una VLAN." + +#: vpn/forms/bulk_import.py:333 +msgid "Cannot assign both an interface and a VLAN." +msgstr "No se puede asignar una interfaz y una VLAN a la vez." + +#: vpn/forms/filtersets.py:127 +msgid "IKE version" +msgstr "Versión IKE" + +#: vpn/forms/filtersets.py:139 vpn/forms/filtersets.py:172 +#: vpn/forms/model_forms.py:293 vpn/forms/model_forms.py:328 +msgid "Proposal" +msgstr "Propuesta" + +#: vpn/forms/filtersets.py:247 +msgid "Assigned Object Type" +msgstr "Tipo de objeto asignado" + +#: vpn/forms/model_forms.py:147 +msgid "First Termination" +msgstr "Primera rescisión" + +#: vpn/forms/model_forms.py:151 +msgid "Second Termination" +msgstr "Segunda terminación" + +#: vpn/forms/model_forms.py:198 +msgid "This parameter is required when defining a termination." +msgstr "Este parámetro es obligatorio para definir una terminación." + +#: vpn/forms/model_forms.py:314 vpn/forms/model_forms.py:349 +msgid "Policy" +msgstr "Política" + +#: vpn/forms/model_forms.py:469 +msgid "A termination must specify an interface or VLAN." +msgstr "Una terminación debe especificar una interfaz o VLAN." + +#: vpn/forms/model_forms.py:471 +msgid "" +"A termination can only have one terminating object (an interface or VLAN)." +msgstr "" +"Una terminación solo puede tener un objeto de terminación (una interfaz o " +"VLAN)." + +#: vpn/models/crypto.py:33 +msgid "encryption algorithm" +msgstr "algoritmo de cifrado" + +#: vpn/models/crypto.py:37 +msgid "authentication algorithm" +msgstr "algoritmo de autenticación" + +#: vpn/models/crypto.py:44 +msgid "Diffie-Hellman group ID" +msgstr "ID de grupo Diffie-Hellman" + +#: vpn/models/crypto.py:50 +msgid "Security association lifetime (in seconds)" +msgstr "Duración de la asociación de seguridad (en segundos)" + +#: vpn/models/crypto.py:59 +msgid "IKE proposal" +msgstr "Propuesta IKE" + +#: vpn/models/crypto.py:60 +msgid "IKE proposals" +msgstr "Propuestas de IKE" + +#: vpn/models/crypto.py:76 +msgid "version" +msgstr "versión" + +#: vpn/models/crypto.py:87 vpn/models/crypto.py:178 +msgid "proposals" +msgstr "propuestas" + +#: vpn/models/crypto.py:90 wireless/models.py:38 +msgid "pre-shared key" +msgstr "clave previamente compartida" + +#: vpn/models/crypto.py:104 +msgid "IKE policies" +msgstr "Políticas de IKE" + +#: vpn/models/crypto.py:124 +msgid "encryption" +msgstr "cifrado" + +#: vpn/models/crypto.py:129 +msgid "authentication" +msgstr "autenticación" + +#: vpn/models/crypto.py:137 +msgid "Security association lifetime (seconds)" +msgstr "Duración de la asociación de seguridad (segundos)" + +#: vpn/models/crypto.py:143 +msgid "Security association lifetime (in kilobytes)" +msgstr "Duración de la asociación de seguridad (en kilobytes)" + +#: vpn/models/crypto.py:152 +msgid "IPSec proposal" +msgstr "Propuesta de IPSec" + +#: vpn/models/crypto.py:153 +msgid "IPSec proposals" +msgstr "Propuestas de IPSec" + +#: vpn/models/crypto.py:166 +msgid "Encryption and/or authentication algorithm must be defined" +msgstr "Debe definirse un algoritmo de cifrado y/o autenticación" + +#: vpn/models/crypto.py:198 +msgid "IPSec policies" +msgstr "Políticas IPSec" + +#: vpn/models/crypto.py:239 +msgid "IPSec profiles" +msgstr "Perfiles IPSec" + +#: vpn/models/l2vpn.py:116 +msgid "L2VPN termination" +msgstr "Terminación de L2VPN" + +#: vpn/models/l2vpn.py:117 +msgid "L2VPN terminations" +msgstr "Terminaciones de L2VPN" + +#: vpn/models/l2vpn.py:135 +#, python-brace-format +msgid "L2VPN Termination already assigned ({assigned_object})" +msgstr "La terminación de L2VPN ya está asignada ({assigned_object})" + +#: vpn/models/l2vpn.py:147 +#, python-brace-format +msgid "" +"{l2vpn_type} L2VPNs cannot have more than two terminations; found " +"{terminations_count} already defined." +msgstr "" +"{l2vpn_type} Las VPN de nivel 2 no pueden tener más de dos terminaciones; se" +" encuentran {terminations_count} ya definido." + +#: vpn/models/tunnels.py:26 +msgid "tunnel group" +msgstr "grupo de túneles" + +#: vpn/models/tunnels.py:27 +msgid "tunnel groups" +msgstr "grupos de túneles" + +#: vpn/models/tunnels.py:53 +msgid "encapsulation" +msgstr "encapsulamiento" + +#: vpn/models/tunnels.py:72 +msgid "tunnel ID" +msgstr "ID de túnel" + +#: vpn/models/tunnels.py:94 +msgid "tunnel" +msgstr "túnel" + +#: vpn/models/tunnels.py:95 +msgid "tunnels" +msgstr "túneles" + +#: vpn/models/tunnels.py:153 +msgid "An object may be terminated to only one tunnel at a time." +msgstr "Un objeto solo puede terminar en un túnel a la vez." + +#: vpn/models/tunnels.py:156 +msgid "tunnel termination" +msgstr "terminación de túnel" + +#: vpn/models/tunnels.py:157 +msgid "tunnel terminations" +msgstr "terminaciones de túneles" + +#: vpn/models/tunnels.py:174 +#, python-brace-format +msgid "{name} is already attached to a tunnel ({tunnel})." +msgstr "{name} ya está conectado a un túnel ({tunnel})." + +#: vpn/tables/crypto.py:22 +msgid "Authentication Method" +msgstr "Método de autenticación" + +#: vpn/tables/crypto.py:25 vpn/tables/crypto.py:97 +msgid "Encryption Algorithm" +msgstr "Algoritmo de cifrado" + +#: vpn/tables/crypto.py:28 vpn/tables/crypto.py:100 +msgid "Authentication Algorithm" +msgstr "Algoritmo de autenticación" + +#: vpn/tables/crypto.py:34 +msgid "SA Lifetime" +msgstr "Toda una vida" + +#: vpn/tables/crypto.py:71 +msgid "Pre-shared Key" +msgstr "Clave previamente compartida" + +#: vpn/tables/crypto.py:103 +msgid "SA Lifetime (Seconds)" +msgstr "Una vida útil (segundos)" + +#: vpn/tables/crypto.py:106 +msgid "SA Lifetime (KB)" +msgstr "SA Lifetime (KB)" + +#: vpn/tables/l2vpn.py:69 +msgid "Object Parent" +msgstr "Objeto principal" + +#: vpn/tables/l2vpn.py:74 +msgid "Object Site" +msgstr "Sitio del objeto" + +#: vpn/tables/tunnels.py:84 +msgid "Host" +msgstr "Anfitrión" + +#: wireless/choices.py:11 +msgid "Access point" +msgstr "Punto de acceso" + +#: wireless/choices.py:12 +msgid "Station" +msgstr "Estación" + +#: wireless/choices.py:467 +msgid "Open" +msgstr "Abrir" + +#: wireless/choices.py:469 +msgid "WPA Personal (PSK)" +msgstr "WPA Personal (PSK)" + +#: wireless/choices.py:470 +msgid "WPA Enterprise" +msgstr "Empresa WPA" + +#: wireless/forms/bulk_edit.py:72 wireless/forms/bulk_edit.py:119 +#: wireless/forms/bulk_import.py:68 wireless/forms/bulk_import.py:71 +#: wireless/forms/bulk_import.py:110 wireless/forms/bulk_import.py:113 +#: wireless/forms/filtersets.py:58 wireless/forms/filtersets.py:92 +msgid "Authentication cipher" +msgstr "Cifrado de autenticación" + +#: wireless/forms/bulk_import.py:52 +msgid "Bridged VLAN" +msgstr "VLAN puenteada" + +#: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:27 +msgid "Interface A" +msgstr "Interfaz A" + +#: wireless/forms/bulk_import.py:93 wireless/tables/wirelesslink.py:36 +msgid "Interface B" +msgstr "Interfaz B" + +#: wireless/forms/model_forms.py:158 +msgid "Side B" +msgstr "Lado B" + +#: wireless/models.py:30 +msgid "authentication cipher" +msgstr "cifrado de autenticación" + +#: wireless/models.py:68 +msgid "wireless LAN group" +msgstr "grupo LAN inalámbrico" + +#: wireless/models.py:69 +msgid "wireless LAN groups" +msgstr "grupos LAN inalámbricos" + +#: wireless/models.py:115 +msgid "wireless LAN" +msgstr "LAN inalámbrica" + +#: wireless/models.py:143 +msgid "interface A" +msgstr "interfaz A" + +#: wireless/models.py:150 +msgid "interface B" +msgstr "interfaz B" + +#: wireless/models.py:198 +msgid "wireless link" +msgstr "enlace inalámbrico" + +#: wireless/models.py:199 +msgid "wireless links" +msgstr "enlaces inalámbricos" + +#: wireless/models.py:216 wireless/models.py:222 +#, python-brace-format +msgid "{type} is not a wireless interface." +msgstr "{type} no es una interfaz inalámbrica." diff --git a/netbox/translations/fr/LC_MESSAGES/django.mo b/netbox/translations/fr/LC_MESSAGES/django.mo new file mode 100644 index 000000000..daded1363 Binary files /dev/null and b/netbox/translations/fr/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/fr/LC_MESSAGES/django.po b/netbox/translations/fr/LC_MESSAGES/django.po new file mode 100644 index 000000000..91740bb5c --- /dev/null +++ b/netbox/translations/fr/LC_MESSAGES/django.po @@ -0,0 +1,13654 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Jeremy Stretch, 2023 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-21 17:54+0000\n" +"PO-Revision-Date: 2023-10-30 17:48+0000\n" +"Last-Translator: Jeremy Stretch, 2023\n" +"Language-Team: French (https://app.transifex.com/netbox-community/teams/178115/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#: account/tables.py:27 templates/account/token.html:23 +#: templates/users/token.html:18 users/forms/bulk_import.py:41 +#: users/forms/model_forms.py:113 +msgid "Key" +msgstr "Clé" + +#: account/tables.py:31 users/forms/filtersets.py:133 +msgid "Write Enabled" +msgstr "Écriture activée" + +#: account/tables.py:34 core/tables/jobs.py:29 extras/choices.py:135 +#: extras/tables/tables.py:469 templates/account/token.html:44 +#: templates/core/configrevision.html:34 +#: templates/core/configrevision_restore.html:12 templates/core/job.html:58 +#: templates/extras/htmx/report_result.html:11 +#: templates/extras/htmx/script_result.html:12 +#: templates/extras/journalentry.html:25 templates/generic/object.html:48 +#: templates/users/token.html:36 +msgid "Created" +msgstr "Créé" + +#: account/tables.py:37 templates/account/token.html:48 +#: templates/users/token.html:40 users/forms/bulk_edit.py:97 +#: users/forms/filtersets.py:137 +msgid "Expires" +msgstr "Expire" + +#: account/tables.py:40 users/forms/filtersets.py:142 +msgid "Last Used" +msgstr "Dernière utilisation" + +#: account/tables.py:43 templates/account/token.html:56 +#: templates/users/token.html:48 users/forms/bulk_edit.py:102 +#: users/forms/model_forms.py:125 +msgid "Allowed IPs" +msgstr "IP autorisées" + +#: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1419 +#: dcim/choices.py:1495 dcim/choices.py:1545 virtualization/choices.py:20 +#: virtualization/choices.py:45 vpn/choices.py:18 +msgid "Planned" +msgstr "Planifié" + +#: circuits/choices.py:22 netbox/navigation/menu.py:290 +msgid "Provisioning" +msgstr "Approvisionnement" + +#: circuits/choices.py:23 dcim/choices.py:22 dcim/choices.py:103 +#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1494 +#: dcim/choices.py:1544 extras/tables/tables.py:375 ipam/choices.py:31 +#: ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 +#: templates/extras/configcontext.html:26 templates/users/user.html:34 +#: users/forms/bulk_edit.py:36 virtualization/choices.py:22 +#: virtualization/choices.py:44 vpn/choices.py:19 wireless/choices.py:25 +msgid "Active" +msgstr "Actif" + +#: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 +#: dcim/choices.py:1493 dcim/choices.py:1546 virtualization/choices.py:24 +#: virtualization/choices.py:43 +msgid "Offline" +msgstr "Hors ligne" + +#: circuits/choices.py:25 +msgid "Deprovisioning" +msgstr "Déprovisionnement" + +#: circuits/choices.py:26 +msgid "Decommissioned" +msgstr "Mis hors service" + +#: circuits/filtersets.py:29 circuits/filtersets.py:182 dcim/filtersets.py:120 +#: dcim/filtersets.py:181 dcim/filtersets.py:256 dcim/filtersets.py:364 +#: dcim/filtersets.py:881 dcim/filtersets.py:1177 dcim/filtersets.py:1672 +#: dcim/filtersets.py:1845 dcim/filtersets.py:1902 ipam/filtersets.py:305 +#: ipam/filtersets.py:896 virtualization/filtersets.py:45 +#: virtualization/filtersets.py:172 vpn/filtersets.py:330 +msgid "Region (ID)" +msgstr "Région (ID)" + +#: circuits/filtersets.py:36 circuits/filtersets.py:189 dcim/filtersets.py:126 +#: dcim/filtersets.py:188 dcim/filtersets.py:263 dcim/filtersets.py:371 +#: dcim/filtersets.py:888 dcim/filtersets.py:1184 dcim/filtersets.py:1679 +#: dcim/filtersets.py:1852 dcim/filtersets.py:1909 extras/filtersets.py:414 +#: ipam/filtersets.py:312 ipam/filtersets.py:903 +#: virtualization/filtersets.py:52 virtualization/filtersets.py:179 +#: vpn/filtersets.py:325 +msgid "Region (slug)" +msgstr "Région (limace)" + +#: circuits/filtersets.py:42 circuits/filtersets.py:195 dcim/filtersets.py:194 +#: dcim/filtersets.py:269 dcim/filtersets.py:377 dcim/filtersets.py:894 +#: dcim/filtersets.py:1190 dcim/filtersets.py:1685 dcim/filtersets.py:1858 +#: dcim/filtersets.py:1915 ipam/filtersets.py:318 ipam/filtersets.py:909 +#: virtualization/filtersets.py:58 virtualization/filtersets.py:185 +msgid "Site group (ID)" +msgstr "Groupe de sites (ID)" + +#: circuits/filtersets.py:49 circuits/filtersets.py:202 dcim/filtersets.py:201 +#: dcim/filtersets.py:276 dcim/filtersets.py:384 dcim/filtersets.py:901 +#: dcim/filtersets.py:1197 dcim/filtersets.py:1692 dcim/filtersets.py:1865 +#: dcim/filtersets.py:1922 extras/filtersets.py:420 ipam/filtersets.py:325 +#: ipam/filtersets.py:916 virtualization/filtersets.py:65 +#: virtualization/filtersets.py:192 +msgid "Site group (slug)" +msgstr "Groupe de sites (slug)" + +#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:117 +#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:171 +#: circuits/forms/model_forms.py:137 dcim/forms/bulk_edit.py:166 +#: dcim/forms/bulk_edit.py:238 dcim/forms/bulk_edit.py:570 +#: dcim/forms/bulk_edit.py:763 dcim/forms/bulk_import.py:130 +#: dcim/forms/bulk_import.py:176 dcim/forms/bulk_import.py:249 +#: dcim/forms/bulk_import.py:477 dcim/forms/bulk_import.py:1239 +#: dcim/forms/bulk_import.py:1267 dcim/forms/filtersets.py:84 +#: dcim/forms/filtersets.py:217 dcim/forms/filtersets.py:264 +#: dcim/forms/filtersets.py:373 dcim/forms/filtersets.py:680 +#: dcim/forms/filtersets.py:910 dcim/forms/filtersets.py:934 +#: dcim/forms/filtersets.py:1024 dcim/forms/filtersets.py:1062 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:138 +#: dcim/forms/model_forms.py:167 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:397 dcim/forms/model_forms.py:630 +#: dcim/forms/object_create.py:390 dcim/tables/devices.py:186 +#: dcim/tables/power.py:26 dcim/tables/power.py:93 dcim/tables/racks.py:62 +#: dcim/tables/racks.py:138 dcim/tables/sites.py:129 extras/filtersets.py:430 +#: ipam/forms/bulk_edit.py:215 ipam/forms/bulk_edit.py:269 +#: ipam/forms/bulk_edit.py:447 ipam/forms/bulk_edit.py:519 +#: ipam/forms/bulk_import.py:170 ipam/forms/bulk_import.py:437 +#: ipam/forms/filtersets.py:152 ipam/forms/filtersets.py:226 +#: ipam/forms/filtersets.py:417 ipam/forms/filtersets.py:470 +#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:548 +#: ipam/forms/model_forms.py:640 ipam/tables/ip.py:244 +#: ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 +#: templates/circuits/circuittermination_edit.html:20 +#: templates/circuits/inc/circuit_termination.html:33 +#: templates/dcim/device.html:22 templates/dcim/inc/cable_termination.html:8 +#: templates/dcim/inc/cable_termination.html:33 +#: templates/dcim/location.html:40 templates/dcim/powerpanel.html:23 +#: templates/dcim/rack.html:25 templates/dcim/rackreservation.html:31 +#: templates/dcim/site.html:27 templates/ipam/prefix.html:57 +#: templates/ipam/vlan.html:26 templates/ipam/vlan_edit.html:40 +#: templates/virtualization/cluster.html:45 +#: templates/virtualization/virtualmachine.html:96 +#: virtualization/forms/bulk_edit.py:90 virtualization/forms/bulk_edit.py:99 +#: virtualization/forms/bulk_edit.py:108 virtualization/forms/bulk_edit.py:123 +#: virtualization/forms/bulk_import.py:59 +#: virtualization/forms/bulk_import.py:85 +#: virtualization/forms/filtersets.py:78 +#: virtualization/forms/filtersets.py:144 +#: virtualization/forms/model_forms.py:74 +#: virtualization/forms/model_forms.py:107 +#: virtualization/forms/model_forms.py:174 +#: virtualization/tables/clusters.py:77 +#: virtualization/tables/virtualmachines.py:53 vpn/forms/filtersets.py:262 +#: wireless/forms/model_forms.py:77 wireless/forms/model_forms.py:117 +msgid "Site" +msgstr "Site" + +#: circuits/filtersets.py:60 circuits/filtersets.py:213 +#: circuits/filtersets.py:250 dcim/filtersets.py:211 dcim/filtersets.py:286 +#: dcim/filtersets.py:358 extras/filtersets.py:436 ipam/filtersets.py:215 +#: ipam/filtersets.py:335 ipam/filtersets.py:926 +#: virtualization/filtersets.py:75 virtualization/filtersets.py:202 +#: vpn/filtersets.py:335 +msgid "Site (slug)" +msgstr "Site (limace)" + +#: circuits/filtersets.py:65 +msgid "ASN (ID)" +msgstr "ASN (IDENTIFIANT)" + +#: circuits/filtersets.py:86 circuits/filtersets.py:112 +#: circuits/filtersets.py:146 +msgid "Provider (ID)" +msgstr "Fournisseur (ID)" + +#: circuits/filtersets.py:92 circuits/filtersets.py:118 +#: circuits/filtersets.py:152 +msgid "Provider (slug)" +msgstr "Fournisseur (slug)" + +#: circuits/filtersets.py:157 +msgid "Provider account (ID)" +msgstr "Compte fournisseur (ID)" + +#: circuits/filtersets.py:162 +msgid "Provider network (ID)" +msgstr "Réseau de fournisseurs (ID)" + +#: circuits/filtersets.py:166 +msgid "Circuit type (ID)" +msgstr "Type de circuit (ID)" + +#: circuits/filtersets.py:172 +msgid "Circuit type (slug)" +msgstr "Type de circuit (slug)" + +#: circuits/filtersets.py:207 circuits/filtersets.py:244 +#: dcim/filtersets.py:205 dcim/filtersets.py:280 dcim/filtersets.py:352 +#: dcim/filtersets.py:905 dcim/filtersets.py:1202 dcim/filtersets.py:1697 +#: dcim/filtersets.py:1869 dcim/filtersets.py:1927 ipam/filtersets.py:209 +#: ipam/filtersets.py:329 ipam/filtersets.py:920 +#: virtualization/filtersets.py:69 virtualization/filtersets.py:196 +#: vpn/filtersets.py:340 +msgid "Site (ID)" +msgstr "Site (ID)" + +#: circuits/filtersets.py:236 core/filtersets.py:73 core/filtersets.py:132 +#: dcim/filtersets.py:633 dcim/filtersets.py:1171 dcim/filtersets.py:1973 +#: extras/filtersets.py:40 extras/filtersets.py:69 extras/filtersets.py:101 +#: extras/filtersets.py:140 extras/filtersets.py:168 extras/filtersets.py:195 +#: extras/filtersets.py:226 extras/filtersets.py:295 extras/filtersets.py:343 +#: extras/filtersets.py:403 extras/filtersets.py:562 extras/filtersets.py:604 +#: extras/filtersets.py:645 ipam/forms/model_forms.py:430 +#: netbox/filtersets.py:275 netbox/forms/__init__.py:23 +#: netbox/forms/base.py:152 templates/htmx/object_selector.html:28 +#: templates/inc/filter_list.html:53 templates/ipam/ipaddress_assign.html:32 +#: templates/search.html:7 templates/search.html:26 tenancy/filtersets.py:86 +#: users/filtersets.py:21 users/filtersets.py:37 users/filtersets.py:69 +#: users/filtersets.py:117 utilities/forms/forms.py:99 +msgid "Search" +msgstr "Rechercher" + +#: circuits/filtersets.py:240 circuits/forms/bulk_edit.py:167 +#: circuits/forms/model_forms.py:110 circuits/forms/model_forms.py:132 +#: dcim/forms/connections.py:66 templates/circuits/circuit.html:15 +#: templates/dcim/inc/cable_termination.html:55 +#: templates/dcim/trace/circuit.html:4 +msgid "Circuit" +msgstr "Circuit" + +#: circuits/filtersets.py:254 +msgid "ProviderNetwork (ID)" +msgstr "Réseau de fournisseurs (ID)" + +#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:56 +#: circuits/forms/model_forms.py:26 circuits/tables/providers.py:33 +#: dcim/forms/bulk_edit.py:126 dcim/forms/filtersets.py:187 +#: dcim/forms/model_forms.py:126 dcim/tables/sites.py:94 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 +#: netbox/navigation/menu.py:160 netbox/navigation/menu.py:163 +#: templates/circuits/provider.html:24 +msgid "ASNs" +msgstr "SAN" + +#: circuits/forms/bulk_edit.py:29 circuits/forms/bulk_edit.py:51 +#: circuits/forms/bulk_edit.py:78 circuits/forms/bulk_edit.py:99 +#: circuits/forms/bulk_edit.py:159 core/forms/bulk_edit.py:27 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:71 +#: dcim/forms/bulk_edit.py:90 dcim/forms/bulk_edit.py:149 +#: dcim/forms/bulk_edit.py:190 dcim/forms/bulk_edit.py:208 +#: dcim/forms/bulk_edit.py:336 dcim/forms/bulk_edit.py:371 +#: dcim/forms/bulk_edit.py:386 dcim/forms/bulk_edit.py:445 +#: dcim/forms/bulk_edit.py:484 dcim/forms/bulk_edit.py:514 +#: dcim/forms/bulk_edit.py:538 dcim/forms/bulk_edit.py:608 +#: dcim/forms/bulk_edit.py:657 dcim/forms/bulk_edit.py:709 +#: dcim/forms/bulk_edit.py:732 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_edit.py:850 dcim/forms/bulk_edit.py:903 +#: dcim/forms/bulk_edit.py:938 dcim/forms/bulk_edit.py:978 +#: dcim/forms/bulk_edit.py:1022 dcim/forms/bulk_edit.py:1067 +#: dcim/forms/bulk_edit.py:1094 dcim/forms/bulk_edit.py:1112 +#: dcim/forms/bulk_edit.py:1130 dcim/forms/bulk_edit.py:1148 +#: dcim/forms/bulk_edit.py:1566 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:123 extras/forms/bulk_edit.py:152 +#: extras/forms/bulk_edit.py:182 extras/forms/bulk_edit.py:263 +#: extras/forms/bulk_edit.py:287 extras/forms/bulk_edit.py:301 +#: extras/tables/tables.py:56 ipam/forms/bulk_edit.py:50 +#: ipam/forms/bulk_edit.py:70 ipam/forms/bulk_edit.py:90 +#: ipam/forms/bulk_edit.py:114 ipam/forms/bulk_edit.py:143 +#: ipam/forms/bulk_edit.py:172 ipam/forms/bulk_edit.py:191 +#: ipam/forms/bulk_edit.py:260 ipam/forms/bulk_edit.py:304 +#: ipam/forms/bulk_edit.py:352 ipam/forms/bulk_edit.py:395 +#: ipam/forms/bulk_edit.py:423 ipam/forms/bulk_edit.py:551 +#: ipam/forms/bulk_edit.py:582 templates/account/token.html:36 +#: templates/circuits/circuit.html:60 templates/circuits/circuittype.html:29 +#: templates/circuits/inc/circuit_termination.html:115 +#: templates/circuits/provider.html:34 +#: templates/circuits/providernetwork.html:35 +#: templates/core/datasource.html:55 templates/dcim/cable.html:37 +#: templates/dcim/consoleport.html:47 templates/dcim/consoleserverport.html:47 +#: templates/dcim/device.html:96 templates/dcim/devicebay.html:35 +#: templates/dcim/devicerole.html:33 templates/dcim/devicetype.html:36 +#: templates/dcim/frontport.html:61 templates/dcim/interface.html:70 +#: templates/dcim/inventoryitem.html:61 +#: templates/dcim/inventoryitemrole.html:23 templates/dcim/location.html:36 +#: templates/dcim/manufacturer.html:43 templates/dcim/module.html:71 +#: templates/dcim/modulebay.html:39 templates/dcim/moduletype.html:27 +#: templates/dcim/platform.html:36 templates/dcim/powerfeed.html:43 +#: templates/dcim/poweroutlet.html:43 templates/dcim/powerpanel.html:31 +#: templates/dcim/powerport.html:43 templates/dcim/rack.html:54 +#: templates/dcim/rackreservation.html:69 templates/dcim/rackrole.html:29 +#: templates/dcim/rearport.html:57 templates/dcim/region.html:34 +#: templates/dcim/site.html:60 templates/dcim/sitegroup.html:34 +#: templates/dcim/virtualchassis.html:32 +#: templates/extras/admin/plugins_list.html:26 +#: templates/extras/configcontext.html:22 +#: templates/extras/configtemplate.html:18 +#: templates/extras/customfield.html:35 +#: templates/extras/dashboard/widget_add.html:14 +#: templates/extras/eventrule.html:24 templates/extras/exporttemplate.html:25 +#: templates/extras/report_list.html:47 templates/extras/savedfilter.html:18 +#: templates/extras/script_list.html:53 templates/extras/tag.html:23 +#: templates/extras/webhook.html:20 templates/generic/bulk_import.html:118 +#: templates/ipam/aggregate.html:44 templates/ipam/asn.html:43 +#: templates/ipam/asnrange.html:39 templates/ipam/fhrpgroup.html:35 +#: templates/ipam/ipaddress.html:58 templates/ipam/iprange.html:70 +#: templates/ipam/prefix.html:82 templates/ipam/rir.html:29 +#: templates/ipam/role.html:29 templates/ipam/routetarget.html:22 +#: templates/ipam/service.html:53 templates/ipam/servicetemplate.html:28 +#: templates/ipam/vlan.html:65 templates/ipam/vlangroup.html:35 +#: templates/ipam/vrf.html:36 templates/tenancy/contact.html:68 +#: templates/tenancy/contactgroup.html:28 +#: templates/tenancy/contactrole.html:23 templates/tenancy/tenant.html:25 +#: templates/tenancy/tenantgroup.html:36 +#: templates/users/objectpermission.html:22 templates/users/token.html:28 +#: templates/virtualization/cluster.html:28 +#: templates/virtualization/clustergroup.html:29 +#: templates/virtualization/clustertype.html:29 +#: templates/virtualization/virtualdisk.html:40 +#: templates/virtualization/virtualmachine.html:34 +#: templates/virtualization/vminterface.html:54 +#: templates/vpn/ikepolicy.html:18 templates/vpn/ikeproposal.html:18 +#: templates/vpn/ipsecpolicy.html:18 templates/vpn/ipsecprofile.html:18 +#: templates/vpn/ipsecprofile.html:43 templates/vpn/ipsecprofile.html:78 +#: templates/vpn/ipsecproposal.html:18 templates/vpn/l2vpn.html:27 +#: templates/vpn/tunnel.html:34 templates/vpn/tunnelgroup.html:33 +#: templates/wireless/wirelesslan.html:27 +#: templates/wireless/wirelesslangroup.html:34 +#: templates/wireless/wirelesslink.html:37 tenancy/forms/bulk_edit.py:31 +#: tenancy/forms/bulk_edit.py:79 tenancy/forms/bulk_edit.py:121 +#: users/forms/bulk_edit.py:62 users/forms/bulk_edit.py:92 +#: virtualization/forms/bulk_edit.py:31 virtualization/forms/bulk_edit.py:45 +#: virtualization/forms/bulk_edit.py:176 virtualization/forms/bulk_edit.py:227 +#: virtualization/forms/bulk_edit.py:336 vpn/forms/bulk_edit.py:27 +#: vpn/forms/bulk_edit.py:63 vpn/forms/bulk_edit.py:120 +#: vpn/forms/bulk_edit.py:154 vpn/forms/bulk_edit.py:191 +#: vpn/forms/bulk_edit.py:216 vpn/forms/bulk_edit.py:248 +#: vpn/forms/bulk_edit.py:277 wireless/forms/bulk_edit.py:28 +#: wireless/forms/bulk_edit.py:81 wireless/forms/bulk_edit.py:128 +msgid "Description" +msgstr "Descriptif" + +#: circuits/forms/bulk_edit.py:46 circuits/forms/bulk_edit.py:68 +#: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 +#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 +#: circuits/forms/model_forms.py:32 circuits/forms/model_forms.py:44 +#: circuits/forms/model_forms.py:58 circuits/forms/model_forms.py:92 +#: circuits/tables/circuits.py:55 circuits/tables/providers.py:72 +#: circuits/tables/providers.py:103 templates/circuits/circuit.html:19 +#: templates/circuits/provider.html:20 +#: templates/circuits/provideraccount.html:21 +#: templates/circuits/providernetwork.html:23 +#: templates/dcim/inc/cable_termination.html:51 +msgid "Provider" +msgstr "Prestataire" + +#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:91 +#: templates/circuits/providernetwork.html:31 +msgid "Service ID" +msgstr "Identifiant du service" + +#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:107 +#: dcim/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:500 +#: dcim/forms/bulk_edit.py:694 dcim/forms/bulk_edit.py:1063 +#: dcim/forms/bulk_edit.py:1090 dcim/forms/bulk_edit.py:1562 +#: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1353 +#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:717 +#: dcim/tables/devices.py:777 dcim/tables/devices.py:1004 +#: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 +#: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:259 +#: extras/tables/tables.py:323 templates/circuits/circuittype.html:33 +#: templates/dcim/cable.html:41 templates/dcim/devicerole.html:37 +#: templates/dcim/frontport.html:43 templates/dcim/inventoryitemrole.html:27 +#: templates/dcim/rackrole.html:33 templates/dcim/rearport.html:43 +#: templates/extras/tag.html:29 +msgid "Color" +msgstr "Couleur" + +#: circuits/forms/bulk_edit.py:113 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:17 +#: core/forms/filtersets.py:29 core/tables/data.py:20 core/tables/jobs.py:18 +#: dcim/forms/bulk_edit.py:281 dcim/forms/bulk_edit.py:672 +#: dcim/forms/bulk_edit.py:811 dcim/forms/bulk_edit.py:879 +#: dcim/forms/bulk_edit.py:898 dcim/forms/bulk_edit.py:921 +#: dcim/forms/bulk_edit.py:963 dcim/forms/bulk_edit.py:1007 +#: dcim/forms/bulk_edit.py:1058 dcim/forms/bulk_edit.py:1085 +#: dcim/forms/bulk_import.py:206 dcim/forms/bulk_import.py:645 +#: dcim/forms/bulk_import.py:671 dcim/forms/bulk_import.py:697 +#: dcim/forms/bulk_import.py:717 dcim/forms/bulk_import.py:800 +#: dcim/forms/bulk_import.py:890 dcim/forms/bulk_import.py:932 +#: dcim/forms/bulk_import.py:1145 dcim/forms/bulk_import.py:1304 +#: dcim/forms/filtersets.py:286 dcim/forms/filtersets.py:867 +#: dcim/forms/filtersets.py:967 dcim/forms/filtersets.py:1088 +#: dcim/forms/filtersets.py:1158 dcim/forms/filtersets.py:1180 +#: dcim/forms/filtersets.py:1202 dcim/forms/filtersets.py:1219 +#: dcim/forms/filtersets.py:1253 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1369 dcim/forms/object_import.py:89 +#: dcim/forms/object_import.py:118 dcim/forms/object_import.py:150 +#: dcim/tables/devices.py:211 dcim/tables/devices.py:833 +#: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 +#: extras/tables/tables.py:345 extras/tables/tables.py:443 +#: netbox/tables/tables.py:234 templates/circuits/circuit.html:31 +#: templates/core/datasource.html:39 templates/dcim/cable.html:16 +#: templates/dcim/consoleport.html:39 templates/dcim/consoleserverport.html:39 +#: templates/dcim/frontport.html:39 templates/dcim/interface.html:47 +#: templates/dcim/interface.html:175 templates/dcim/interface.html:323 +#: templates/dcim/powerfeed.html:35 templates/dcim/poweroutlet.html:39 +#: templates/dcim/powerport.html:39 templates/dcim/rack.html:81 +#: templates/dcim/rearport.html:39 templates/extras/eventrule.html:95 +#: templates/virtualization/cluster.html:20 templates/vpn/l2vpn.html:23 +#: templates/wireless/inc/authentication_attrs.html:9 +#: templates/wireless/inc/wirelesslink_interface.html:14 +#: virtualization/forms/bulk_edit.py:59 virtualization/forms/bulk_import.py:41 +#: virtualization/forms/filtersets.py:53 +#: virtualization/forms/model_forms.py:65 virtualization/tables/clusters.py:66 +#: vpn/forms/bulk_edit.py:267 vpn/forms/bulk_import.py:259 +#: vpn/forms/filtersets.py:214 vpn/forms/model_forms.py:83 +#: vpn/forms/model_forms.py:118 vpn/forms/model_forms.py:232 +msgid "Type" +msgstr "Type" + +#: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:97 +msgid "Provider account" +msgstr "Compte du fournisseur" + +#: circuits/forms/bulk_edit.py:131 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:34 +#: core/forms/filtersets.py:75 core/tables/data.py:23 core/tables/jobs.py:26 +#: dcim/forms/bulk_edit.py:104 dcim/forms/bulk_edit.py:179 +#: dcim/forms/bulk_edit.py:260 dcim/forms/bulk_edit.py:593 +#: dcim/forms/bulk_edit.py:646 dcim/forms/bulk_edit.py:678 +#: dcim/forms/bulk_edit.py:805 dcim/forms/bulk_edit.py:1585 +#: dcim/forms/bulk_import.py:87 dcim/forms/bulk_import.py:146 +#: dcim/forms/bulk_import.py:194 dcim/forms/bulk_import.py:442 +#: dcim/forms/bulk_import.py:596 dcim/forms/bulk_import.py:1139 +#: dcim/forms/bulk_import.py:1299 dcim/forms/filtersets.py:170 +#: dcim/forms/filtersets.py:229 dcim/forms/filtersets.py:281 +#: dcim/forms/filtersets.py:726 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:871 dcim/forms/filtersets.py:972 +#: dcim/forms/filtersets.py:1083 dcim/tables/devices.py:173 +#: dcim/tables/devices.py:836 dcim/tables/devices.py:1064 +#: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 +#: dcim/tables/sites.py:82 dcim/tables/sites.py:133 +#: ipam/forms/bulk_edit.py:240 ipam/forms/bulk_edit.py:289 +#: ipam/forms/bulk_edit.py:337 ipam/forms/bulk_edit.py:541 +#: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 +#: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 +#: ipam/forms/filtersets.py:205 ipam/forms/filtersets.py:270 +#: ipam/forms/filtersets.py:341 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:449 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 +#: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 +#: templates/circuits/circuit.html:35 templates/core/datasource.html:47 +#: templates/core/job.html:35 templates/dcim/cable.html:20 +#: templates/dcim/device.html:183 templates/dcim/location.html:48 +#: templates/dcim/module.html:67 templates/dcim/powerfeed.html:39 +#: templates/dcim/rack.html:46 templates/dcim/site.html:43 +#: templates/extras/report_list.html:49 templates/extras/script_list.html:55 +#: templates/ipam/ipaddress.html:40 templates/ipam/iprange.html:57 +#: templates/ipam/prefix.html:74 templates/ipam/vlan.html:51 +#: templates/virtualization/cluster.html:24 +#: templates/virtualization/virtualmachine.html:22 +#: templates/vpn/tunnel.html:26 templates/wireless/wirelesslan.html:23 +#: templates/wireless/wirelesslink.html:20 users/forms/filtersets.py:33 +#: users/forms/model_forms.py:196 virtualization/forms/bulk_edit.py:69 +#: virtualization/forms/bulk_edit.py:117 +#: virtualization/forms/bulk_import.py:54 +#: virtualization/forms/bulk_import.py:80 +#: virtualization/forms/filtersets.py:61 +#: virtualization/forms/filtersets.py:156 virtualization/tables/clusters.py:74 +#: virtualization/tables/virtualmachines.py:50 vpn/forms/bulk_edit.py:38 +#: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:46 +#: vpn/tables/tunnels.py:44 wireless/forms/bulk_edit.py:42 +#: wireless/forms/bulk_edit.py:104 wireless/forms/bulk_import.py:43 +#: wireless/forms/bulk_import.py:84 wireless/forms/filtersets.py:48 +#: wireless/forms/filtersets.py:82 wireless/tables/wirelesslan.py:52 +#: wireless/tables/wirelesslink.py:19 +msgid "Status" +msgstr "État" + +#: circuits/forms/bulk_edit.py:137 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:119 dcim/forms/bulk_edit.py:120 +#: dcim/forms/bulk_edit.py:185 dcim/forms/bulk_edit.py:255 +#: dcim/forms/bulk_edit.py:366 dcim/forms/bulk_edit.py:583 +#: dcim/forms/bulk_edit.py:684 dcim/forms/bulk_edit.py:1590 +#: dcim/forms/bulk_import.py:106 dcim/forms/bulk_import.py:151 +#: dcim/forms/bulk_import.py:187 dcim/forms/bulk_import.py:274 +#: dcim/forms/bulk_import.py:416 dcim/forms/bulk_import.py:1151 +#: dcim/forms/bulk_import.py:1356 dcim/forms/filtersets.py:165 +#: dcim/forms/filtersets.py:197 dcim/forms/filtersets.py:248 +#: dcim/forms/filtersets.py:333 dcim/forms/filtersets.py:354 +#: dcim/forms/filtersets.py:653 dcim/forms/filtersets.py:826 +#: dcim/forms/filtersets.py:891 dcim/forms/filtersets.py:921 +#: dcim/forms/filtersets.py:1043 dcim/tables/power.py:88 +#: extras/filtersets.py:517 extras/forms/filtersets.py:331 +#: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:40 +#: ipam/forms/bulk_edit.py:65 ipam/forms/bulk_edit.py:109 +#: ipam/forms/bulk_edit.py:138 ipam/forms/bulk_edit.py:163 +#: ipam/forms/bulk_edit.py:235 ipam/forms/bulk_edit.py:284 +#: ipam/forms/bulk_edit.py:332 ipam/forms/bulk_edit.py:536 +#: ipam/forms/bulk_import.py:37 ipam/forms/bulk_import.py:66 +#: ipam/forms/bulk_import.py:94 ipam/forms/bulk_import.py:114 +#: ipam/forms/bulk_import.py:134 ipam/forms/bulk_import.py:163 +#: ipam/forms/bulk_import.py:249 ipam/forms/bulk_import.py:285 +#: ipam/forms/bulk_import.py:451 ipam/forms/filtersets.py:47 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:99 +#: ipam/forms/filtersets.py:119 ipam/forms/filtersets.py:142 +#: ipam/forms/filtersets.py:169 ipam/forms/filtersets.py:256 +#: ipam/forms/filtersets.py:296 ipam/forms/filtersets.py:450 +#: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 +#: templates/circuits/circuit.html:39 templates/dcim/cable.html:24 +#: templates/dcim/device.html:81 templates/dcim/location.html:52 +#: templates/dcim/powerfeed.html:47 templates/dcim/rack.html:37 +#: templates/dcim/rackreservation.html:56 templates/dcim/site.html:47 +#: templates/dcim/virtualdevicecontext.html:55 +#: templates/ipam/aggregate.html:31 templates/ipam/asn.html:34 +#: templates/ipam/asnrange.html:30 templates/ipam/ipaddress.html:31 +#: templates/ipam/iprange.html:61 templates/ipam/prefix.html:30 +#: templates/ipam/routetarget.html:18 templates/ipam/vlan.html:42 +#: templates/ipam/vrf.html:23 templates/tenancy/tenant.html:17 +#: templates/virtualization/cluster.html:36 +#: templates/virtualization/virtualmachine.html:38 templates/vpn/l2vpn.html:31 +#: templates/vpn/tunnel.html:50 templates/wireless/wirelesslan.html:35 +#: templates/wireless/wirelesslink.html:28 tenancy/forms/forms.py:25 +#: tenancy/forms/forms.py:48 tenancy/forms/model_forms.py:53 +#: tenancy/tables/columns.py:64 virtualization/forms/bulk_edit.py:75 +#: virtualization/forms/bulk_edit.py:154 +#: virtualization/forms/bulk_import.py:66 +#: virtualization/forms/bulk_import.py:115 +#: virtualization/forms/filtersets.py:46 +#: virtualization/forms/filtersets.py:101 vpn/forms/bulk_edit.py:58 +#: vpn/forms/bulk_edit.py:272 vpn/forms/bulk_import.py:59 +#: vpn/forms/bulk_import.py:253 vpn/forms/filtersets.py:211 +#: wireless/forms/bulk_edit.py:62 wireless/forms/bulk_edit.py:109 +#: wireless/forms/bulk_import.py:55 wireless/forms/bulk_import.py:97 +#: wireless/forms/filtersets.py:34 wireless/forms/filtersets.py:74 +msgid "Tenant" +msgstr "Locataire" + +#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:174 +msgid "Install date" +msgstr "Date d'installation" + +#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:179 +msgid "Termination date" +msgstr "Date de résiliation" + +#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:186 +msgid "Commit rate (Kbps)" +msgstr "Taux de validation (Kbits/s)" + +#: circuits/forms/bulk_edit.py:168 circuits/forms/model_forms.py:111 +msgid "Service Parameters" +msgstr "Paramètres du service" + +#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:112 +#: dcim/forms/model_forms.py:141 dcim/forms/model_forms.py:183 +#: dcim/forms/model_forms.py:260 dcim/forms/model_forms.py:672 +#: dcim/forms/model_forms.py:1478 ipam/forms/model_forms.py:61 +#: ipam/forms/model_forms.py:114 ipam/forms/model_forms.py:135 +#: ipam/forms/model_forms.py:159 ipam/forms/model_forms.py:231 +#: ipam/forms/model_forms.py:257 netbox/navigation/menu.py:38 +#: templates/dcim/cable_edit.html:68 templates/dcim/device_edit.html:85 +#: templates/dcim/rack_edit.html:30 templates/ipam/ipaddress_bulk_add.html:27 +#: templates/ipam/ipaddress_edit.html:27 templates/ipam/vlan_edit.html:22 +#: virtualization/forms/model_forms.py:83 +#: virtualization/forms/model_forms.py:225 vpn/forms/bulk_edit.py:77 +#: vpn/forms/filtersets.py:43 vpn/forms/model_forms.py:61 +#: vpn/forms/model_forms.py:146 vpn/forms/model_forms.py:404 +#: wireless/forms/model_forms.py:55 wireless/forms/model_forms.py:160 +msgid "Tenancy" +msgstr "Location" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 +msgid "Assigned provider" +msgstr "Prestataire assigné" + +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:170 +#: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:1092 +#: dcim/forms/bulk_import.py:1171 extras/forms/bulk_import.py:229 +msgid "RGB color in hexadecimal. Example:" +msgstr "Couleur RGB en hexadécimal. Exemple :" + +#: circuits/forms/bulk_import.py:85 +msgid "Assigned provider account" +msgstr "Compte fournisseur attribué" + +#: circuits/forms/bulk_import.py:92 +msgid "Type of circuit" +msgstr "Type de circuit" + +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 +#: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:196 +#: dcim/forms/bulk_import.py:444 dcim/forms/bulk_import.py:598 +#: dcim/forms/bulk_import.py:1301 ipam/forms/bulk_import.py:193 +#: ipam/forms/bulk_import.py:258 ipam/forms/bulk_import.py:294 +#: ipam/forms/bulk_import.py:460 virtualization/forms/bulk_import.py:56 +#: virtualization/forms/bulk_import.py:82 vpn/forms/bulk_import.py:39 +msgid "Operational status" +msgstr "État opérationnel" + +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 +#: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:278 +#: dcim/forms/bulk_import.py:420 dcim/forms/bulk_import.py:1155 +#: dcim/forms/bulk_import.py:1296 ipam/forms/bulk_import.py:41 +#: ipam/forms/bulk_import.py:70 ipam/forms/bulk_import.py:98 +#: ipam/forms/bulk_import.py:118 ipam/forms/bulk_import.py:138 +#: ipam/forms/bulk_import.py:167 ipam/forms/bulk_import.py:253 +#: ipam/forms/bulk_import.py:289 ipam/forms/bulk_import.py:455 +#: virtualization/forms/bulk_import.py:70 +#: virtualization/forms/bulk_import.py:119 vpn/forms/bulk_import.py:63 +#: wireless/forms/bulk_import.py:59 wireless/forms/bulk_import.py:101 +msgid "Assigned tenant" +msgstr "Locataire assigné" + +#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:147 +#: circuits/forms/model_forms.py:143 +msgid "Provider network" +msgstr "Réseau de fournisseurs" + +#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:118 +#: dcim/forms/bulk_edit.py:247 dcim/forms/bulk_edit.py:345 +#: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:622 +#: dcim/forms/bulk_edit.py:772 dcim/forms/bulk_import.py:181 +#: dcim/forms/bulk_import.py:255 dcim/forms/bulk_import.py:483 +#: dcim/forms/bulk_import.py:1245 dcim/forms/bulk_import.py:1279 +#: dcim/forms/filtersets.py:92 dcim/forms/filtersets.py:245 +#: dcim/forms/filtersets.py:278 dcim/forms/filtersets.py:330 +#: dcim/forms/filtersets.py:381 dcim/forms/filtersets.py:650 +#: dcim/forms/filtersets.py:689 dcim/forms/filtersets.py:890 +#: dcim/forms/filtersets.py:919 dcim/forms/filtersets.py:939 +#: dcim/forms/filtersets.py:1003 dcim/forms/filtersets.py:1033 +#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1153 +#: dcim/forms/filtersets.py:1175 dcim/forms/filtersets.py:1197 +#: dcim/forms/filtersets.py:1214 dcim/forms/filtersets.py:1234 +#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 +#: dcim/forms/filtersets.py:1385 dcim/forms/filtersets.py:1400 +#: dcim/forms/filtersets.py:1411 dcim/forms/model_forms.py:182 +#: dcim/forms/model_forms.py:216 dcim/forms/model_forms.py:402 +#: dcim/forms/model_forms.py:635 dcim/tables/devices.py:190 +#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 +#: extras/filtersets.py:441 extras/forms/filtersets.py:328 +#: ipam/forms/bulk_edit.py:456 ipam/forms/filtersets.py:168 +#: ipam/forms/filtersets.py:400 ipam/forms/filtersets.py:422 +#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:560 +#: templates/dcim/device.html:26 templates/dcim/device_edit.html:30 +#: templates/dcim/inc/cable_termination.html:12 +#: templates/dcim/location.html:27 templates/dcim/powerpanel.html:27 +#: templates/dcim/rack.html:29 templates/dcim/rackreservation.html:35 +#: virtualization/forms/filtersets.py:45 virtualization/forms/filtersets.py:99 +#: wireless/forms/model_forms.py:88 wireless/forms/model_forms.py:128 +msgid "Location" +msgstr "Emplacement" + +#: circuits/forms/filtersets.py:27 ipam/forms/model_forms.py:158 +#: ipam/models/asns.py:108 ipam/models/asns.py:125 ipam/tables/asn.py:41 +#: templates/ipam/asn.html:20 +msgid "ASN" +msgstr "ASN" + +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:120 +#: dcim/forms/filtersets.py:136 dcim/forms/filtersets.py:150 +#: dcim/forms/filtersets.py:166 dcim/forms/filtersets.py:198 +#: dcim/forms/filtersets.py:249 dcim/forms/filtersets.py:334 +#: dcim/forms/filtersets.py:408 dcim/forms/filtersets.py:654 +#: dcim/forms/filtersets.py:1004 netbox/navigation/menu.py:45 +#: netbox/navigation/menu.py:47 tenancy/tables/columns.py:70 +#: tenancy/tables/contacts.py:25 tenancy/views.py:18 +#: virtualization/forms/filtersets.py:36 virtualization/forms/filtersets.py:47 +#: virtualization/forms/filtersets.py:102 +msgid "Contacts" +msgstr "Contacts" + +#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:157 +#: dcim/forms/bulk_edit.py:110 dcim/forms/bulk_edit.py:222 +#: dcim/forms/bulk_edit.py:747 dcim/forms/bulk_import.py:92 +#: dcim/forms/filtersets.py:70 dcim/forms/filtersets.py:177 +#: dcim/forms/filtersets.py:203 dcim/forms/filtersets.py:256 +#: dcim/forms/filtersets.py:359 dcim/forms/filtersets.py:666 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1010 dcim/forms/filtersets.py:1049 +#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 +#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:80 +#: dcim/forms/model_forms.py:115 dcim/forms/object_create.py:374 +#: dcim/tables/devices.py:176 dcim/tables/sites.py:85 extras/filtersets.py:408 +#: ipam/forms/bulk_edit.py:205 ipam/forms/bulk_edit.py:437 +#: ipam/forms/bulk_edit.py:509 ipam/forms/filtersets.py:212 +#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:456 +#: ipam/forms/model_forms.py:532 templates/dcim/device.html:18 +#: templates/dcim/rack.html:19 templates/dcim/rackreservation.html:25 +#: templates/dcim/region.html:26 templates/dcim/site.html:31 +#: templates/ipam/prefix.html:50 templates/ipam/vlan.html:19 +#: virtualization/forms/bulk_edit.py:80 virtualization/forms/filtersets.py:58 +#: virtualization/forms/filtersets.py:129 +#: virtualization/forms/model_forms.py:95 vpn/forms/filtersets.py:253 +msgid "Region" +msgstr "Région" + +#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:162 +#: dcim/forms/bulk_edit.py:230 dcim/forms/bulk_edit.py:755 +#: dcim/forms/filtersets.py:75 dcim/forms/filtersets.py:182 +#: dcim/forms/filtersets.py:208 dcim/forms/filtersets.py:269 +#: dcim/forms/filtersets.py:364 dcim/forms/filtersets.py:671 +#: dcim/forms/filtersets.py:901 dcim/forms/filtersets.py:1015 +#: dcim/forms/filtersets.py:1054 dcim/forms/object_create.py:382 +#: extras/filtersets.py:425 ipam/forms/bulk_edit.py:210 +#: ipam/forms/bulk_edit.py:444 ipam/forms/bulk_edit.py:514 +#: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:412 +#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:545 +#: virtualization/forms/bulk_edit.py:85 virtualization/forms/filtersets.py:68 +#: virtualization/forms/filtersets.py:134 +#: virtualization/forms/model_forms.py:101 +msgid "Site group" +msgstr "Groupe de sites" + +#: circuits/forms/filtersets.py:51 +msgid "ASN (legacy)" +msgstr "ASN (ancien)" + +#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 +#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 +#: core/forms/filtersets.py:63 dcim/forms/bulk_edit.py:718 +#: dcim/forms/filtersets.py:164 dcim/forms/filtersets.py:196 +#: dcim/forms/filtersets.py:825 dcim/forms/filtersets.py:920 +#: dcim/forms/filtersets.py:1044 dcim/forms/filtersets.py:1152 +#: dcim/forms/filtersets.py:1174 dcim/forms/filtersets.py:1196 +#: dcim/forms/filtersets.py:1213 dcim/forms/filtersets.py:1230 +#: dcim/forms/filtersets.py:1341 dcim/forms/filtersets.py:1363 +#: dcim/forms/filtersets.py:1384 dcim/forms/filtersets.py:1399 +#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:40 +#: extras/forms/filtersets.py:111 extras/forms/filtersets.py:142 +#: extras/forms/filtersets.py:182 extras/forms/filtersets.py:198 +#: extras/forms/filtersets.py:229 extras/forms/filtersets.py:253 +#: extras/forms/filtersets.py:450 extras/forms/filtersets.py:491 +#: ipam/forms/filtersets.py:98 ipam/forms/filtersets.py:255 +#: ipam/forms/filtersets.py:294 ipam/forms/filtersets.py:368 +#: ipam/forms/filtersets.py:449 ipam/forms/filtersets.py:508 +#: ipam/forms/filtersets.py:526 netbox/tables/tables.py:250 +#: virtualization/forms/filtersets.py:44 +#: virtualization/forms/filtersets.py:100 +#: virtualization/forms/filtersets.py:190 +#: virtualization/forms/filtersets.py:235 vpn/forms/filtersets.py:210 +#: wireless/forms/filtersets.py:33 wireless/forms/filtersets.py:73 +msgid "Attributes" +msgstr "Attributs" + +#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:60 +#: circuits/tables/providers.py:66 templates/circuits/circuit.html:23 +#: templates/circuits/provideraccount.html:25 +msgid "Account" +msgstr "Compte" + +#: circuits/forms/model_forms.py:64 +#: templates/circuits/circuittermination_edit.html:23 +#: templates/circuits/inc/circuit_termination.html:89 +#: templates/circuits/providernetwork.html:18 +msgid "Provider Network" +msgstr "Réseau de fournisseurs" + +#: circuits/forms/model_forms.py:78 templates/circuits/circuittype.html:20 +msgid "Circuit Type" +msgstr "Type de circuit" + +#: circuits/models/circuits.py:25 dcim/models/cables.py:67 +#: dcim/models/device_component_templates.py:491 +#: dcim/models/device_component_templates.py:591 +#: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 +#: dcim/models/device_components.py:1166 dcim/models/devices.py:467 +#: dcim/models/racks.py:43 extras/models/tags.py:28 +msgid "color" +msgstr "couleur" + +#: circuits/models/circuits.py:34 +msgid "circuit type" +msgstr "type de circuit" + +#: circuits/models/circuits.py:35 +msgid "circuit types" +msgstr "types de circuits" + +#: circuits/models/circuits.py:46 +msgid "circuit ID" +msgstr "identifiant du circuit" + +#: circuits/models/circuits.py:47 +msgid "Unique circuit ID" +msgstr "ID de circuit unique" + +#: circuits/models/circuits.py:67 core/models/data.py:54 +#: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:641 +#: dcim/models/devices.py:1165 dcim/models/devices.py:1374 +#: dcim/models/power.py:95 dcim/models/racks.py:97 dcim/models/sites.py:154 +#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 +#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: virtualization/models/clusters.py:74 +#: virtualization/models/virtualmachines.py:82 vpn/models/tunnels.py:40 +#: wireless/models.py:94 wireless/models.py:158 +msgid "status" +msgstr "statut" + +#: circuits/models/circuits.py:82 +msgid "installed" +msgstr "installé" + +#: circuits/models/circuits.py:87 +msgid "terminates" +msgstr "met fin à" + +#: circuits/models/circuits.py:92 +msgid "commit rate (Kbps)" +msgstr "taux de validation (Kbits/s)" + +#: circuits/models/circuits.py:93 +msgid "Committed rate" +msgstr "Taux engagé" + +#: circuits/models/circuits.py:135 +msgid "circuit" +msgstr "circuit" + +#: circuits/models/circuits.py:136 +msgid "circuits" +msgstr "circuits" + +#: circuits/models/circuits.py:169 +msgid "termination" +msgstr "résiliation" + +#: circuits/models/circuits.py:186 +msgid "port speed (Kbps)" +msgstr "vitesse du port (Kbps)" + +#: circuits/models/circuits.py:189 +msgid "Physical circuit speed" +msgstr "Vitesse du circuit physique" + +#: circuits/models/circuits.py:194 +msgid "upstream speed (Kbps)" +msgstr "vitesse montante (Kbps)" + +#: circuits/models/circuits.py:195 +msgid "Upstream speed, if different from port speed" +msgstr "Vitesse ascendante, si elle est différente de la vitesse du port" + +#: circuits/models/circuits.py:200 +msgid "cross-connect ID" +msgstr "ID de connexion croisée" + +#: circuits/models/circuits.py:201 +msgid "ID of the local cross-connect" +msgstr "ID de l'interconnexion locale" + +#: circuits/models/circuits.py:206 +msgid "patch panel/port(s)" +msgstr "panneau de raccordement ou port (s)" + +#: circuits/models/circuits.py:207 +msgid "Patch panel ID and port number(s)" +msgstr "ID du panneau de raccordement et numéro (s) de port" + +#: circuits/models/circuits.py:210 +#: dcim/models/device_component_templates.py:61 +#: dcim/models/device_components.py:69 dcim/models/racks.py:537 +#: extras/models/configs.py:45 extras/models/configs.py:219 +#: extras/models/customfields.py:122 extras/models/models.py:58 +#: extras/models/models.py:188 extras/models/models.py:426 +#: extras/models/models.py:541 extras/models/staging.py:31 +#: extras/models/tags.py:32 netbox/models/__init__.py:109 +#: netbox/models/__init__.py:144 netbox/models/__init__.py:190 +#: users/models.py:273 users/models.py:348 +#: virtualization/models/virtualmachines.py:282 +msgid "description" +msgstr "description" + +#: circuits/models/circuits.py:223 +msgid "circuit termination" +msgstr "terminaison du circuit" + +#: circuits/models/circuits.py:224 +msgid "circuit terminations" +msgstr "terminaisons de circuits" + +#: circuits/models/providers.py:22 circuits/models/providers.py:66 +#: circuits/models/providers.py:104 core/models/data.py:41 +#: core/models/jobs.py:46 dcim/models/device_component_templates.py:43 +#: dcim/models/device_components.py:54 dcim/models/devices.py:581 +#: dcim/models/devices.py:1305 dcim/models/devices.py:1370 +#: dcim/models/power.py:39 dcim/models/power.py:91 dcim/models/racks.py:62 +#: dcim/models/sites.py:138 extras/models/configs.py:36 +#: extras/models/configs.py:215 extras/models/customfields.py:89 +#: extras/models/models.py:53 extras/models/models.py:183 +#: extras/models/models.py:326 extras/models/models.py:422 +#: extras/models/models.py:531 extras/models/models.py:626 +#: extras/models/staging.py:26 ipam/models/asns.py:18 ipam/models/fhrp.py:25 +#: ipam/models/services.py:52 ipam/models/services.py:88 +#: ipam/models/vlans.py:26 ipam/models/vlans.py:164 ipam/models/vrfs.py:22 +#: ipam/models/vrfs.py:79 netbox/models/__init__.py:136 +#: netbox/models/__init__.py:180 tenancy/models/contacts.py:64 +#: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 +#: users/models.py:344 virtualization/models/clusters.py:57 +#: virtualization/models/virtualmachines.py:70 +#: virtualization/models/virtualmachines.py:272 vpn/models/crypto.py:24 +#: vpn/models/crypto.py:71 vpn/models/crypto.py:119 vpn/models/crypto.py:171 +#: vpn/models/crypto.py:209 vpn/models/l2vpn.py:22 vpn/models/tunnels.py:35 +#: wireless/models.py:50 +msgid "name" +msgstr "nom" + +#: circuits/models/providers.py:25 +msgid "Full name of the provider" +msgstr "Nom complet du fournisseur" + +#: circuits/models/providers.py:28 dcim/models/devices.py:86 +#: dcim/models/sites.py:149 extras/models/models.py:536 ipam/models/asns.py:23 +#: ipam/models/vlans.py:30 netbox/models/__init__.py:140 +#: netbox/models/__init__.py:185 tenancy/models/tenants.py:25 +#: tenancy/models/tenants.py:49 vpn/models/l2vpn.py:27 wireless/models.py:55 +msgid "slug" +msgstr "limace" + +#: circuits/models/providers.py:42 +msgid "provider" +msgstr "fournisseur" + +#: circuits/models/providers.py:43 +msgid "providers" +msgstr "fournisseurs" + +#: circuits/models/providers.py:63 +msgid "account ID" +msgstr "ID de compte" + +#: circuits/models/providers.py:86 +msgid "provider account" +msgstr "compte fournisseur" + +#: circuits/models/providers.py:87 +msgid "provider accounts" +msgstr "comptes fournisseurs" + +#: circuits/models/providers.py:115 +msgid "service ID" +msgstr "ID de service" + +#: circuits/models/providers.py:126 +msgid "provider network" +msgstr "réseau de fournisseurs" + +#: circuits/models/providers.py:127 +msgid "provider networks" +msgstr "réseaux de fournisseurs" + +#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/providers.py:69 circuits/tables/providers.py:99 +#: core/tables/data.py:16 core/tables/jobs.py:14 dcim/forms/filtersets.py:60 +#: dcim/forms/object_create.py:42 dcim/tables/devices.py:88 +#: dcim/tables/devices.py:125 dcim/tables/devices.py:167 +#: dcim/tables/devices.py:318 dcim/tables/devices.py:395 +#: dcim/tables/devices.py:439 dcim/tables/devices.py:491 +#: dcim/tables/devices.py:543 dcim/tables/devices.py:663 +#: dcim/tables/devices.py:744 dcim/tables/devices.py:794 +#: dcim/tables/devices.py:860 dcim/tables/devices.py:975 +#: dcim/tables/devices.py:995 dcim/tables/devices.py:1024 +#: dcim/tables/devices.py:1054 dcim/tables/devicetypes.py:32 +#: dcim/tables/power.py:22 dcim/tables/power.py:62 dcim/tables/racks.py:23 +#: dcim/tables/racks.py:53 dcim/tables/sites.py:24 dcim/tables/sites.py:51 +#: dcim/tables/sites.py:78 dcim/tables/sites.py:125 +#: extras/forms/filtersets.py:190 extras/tables/tables.py:40 +#: extras/tables/tables.py:83 extras/tables/tables.py:115 +#: extras/tables/tables.py:139 extras/tables/tables.py:204 +#: extras/tables/tables.py:251 extras/tables/tables.py:274 +#: extras/tables/tables.py:319 extras/tables/tables.py:371 +#: extras/tables/tables.py:394 ipam/forms/bulk_edit.py:390 +#: ipam/forms/filtersets.py:372 ipam/tables/asn.py:16 ipam/tables/ip.py:85 +#: ipam/tables/ip.py:159 ipam/tables/services.py:15 ipam/tables/services.py:40 +#: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 +#: ipam/tables/vrfs.py:67 templates/circuits/circuittype.html:25 +#: templates/circuits/provideraccount.html:29 +#: templates/circuits/providernetwork.html:27 +#: templates/core/datasource.html:35 templates/core/job.html:31 +#: templates/dcim/consoleport.html:31 templates/dcim/consoleserverport.html:31 +#: templates/dcim/devicebay.html:27 templates/dcim/devicerole.html:29 +#: templates/dcim/frontport.html:31 +#: templates/dcim/inc/interface_vlans_table.html:5 +#: templates/dcim/inc/panels/inventory_items.html:10 +#: templates/dcim/interface.html:39 templates/dcim/interface.html:171 +#: templates/dcim/inventoryitem.html:29 +#: templates/dcim/inventoryitemrole.html:19 templates/dcim/location.html:32 +#: templates/dcim/manufacturer.html:39 templates/dcim/modulebay.html:27 +#: templates/dcim/platform.html:32 templates/dcim/poweroutlet.html:31 +#: templates/dcim/powerport.html:31 templates/dcim/rackrole.html:25 +#: templates/dcim/rearport.html:31 templates/dcim/region.html:30 +#: templates/dcim/sitegroup.html:30 +#: templates/dcim/virtualdevicecontext.html:21 +#: templates/extras/admin/plugins_list.html:22 +#: templates/extras/configcontext.html:14 +#: templates/extras/configtemplate.html:14 +#: templates/extras/customfield.html:16 templates/extras/customlink.html:14 +#: templates/extras/eventrule.html:16 templates/extras/exporttemplate.html:21 +#: templates/extras/report_list.html:46 templates/extras/savedfilter.html:14 +#: templates/extras/script_list.html:52 templates/extras/tag.html:17 +#: templates/extras/webhook.html:16 templates/ipam/asnrange.html:16 +#: templates/ipam/fhrpgroup.html:31 templates/ipam/rir.html:25 +#: templates/ipam/role.html:25 templates/ipam/routetarget.html:14 +#: templates/ipam/service.html:27 templates/ipam/servicetemplate.html:16 +#: templates/ipam/vlan.html:38 templates/ipam/vlangroup.html:31 +#: templates/tenancy/contact.html:26 templates/tenancy/contactgroup.html:24 +#: templates/tenancy/contactrole.html:19 templates/tenancy/tenantgroup.html:32 +#: templates/users/group.html:18 templates/users/objectpermission.html:18 +#: templates/virtualization/cluster.html:16 +#: templates/virtualization/clustergroup.html:25 +#: templates/virtualization/clustertype.html:25 +#: templates/virtualization/virtualdisk.html:26 +#: templates/virtualization/virtualmachine.html:18 +#: templates/virtualization/vminterface.html:28 +#: templates/vpn/ikepolicy.html:14 templates/vpn/ikeproposal.html:14 +#: templates/vpn/ipsecpolicy.html:14 templates/vpn/ipsecprofile.html:14 +#: templates/vpn/ipsecprofile.html:39 templates/vpn/ipsecprofile.html:74 +#: templates/vpn/ipsecproposal.html:14 templates/vpn/l2vpn.html:15 +#: templates/vpn/tunnel.html:22 templates/vpn/tunnelgroup.html:29 +#: templates/wireless/wirelesslangroup.html:30 tenancy/tables/contacts.py:19 +#: tenancy/tables/contacts.py:41 tenancy/tables/contacts.py:56 +#: tenancy/tables/tenants.py:16 tenancy/tables/tenants.py:38 +#: users/tables.py:62 users/tables.py:79 +#: virtualization/forms/bulk_create.py:20 +#: virtualization/forms/object_create.py:13 +#: virtualization/forms/object_create.py:23 +#: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 +#: virtualization/tables/clusters.py:62 +#: virtualization/tables/virtualmachines.py:45 +#: virtualization/tables/virtualmachines.py:119 +#: virtualization/tables/virtualmachines.py:172 vpn/tables/crypto.py:18 +#: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 +#: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 +#: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 +#: wireless/tables/wirelesslan.py:79 +msgid "Name" +msgstr "Nom" + +#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/providers.py:79 netbox/navigation/menu.py:254 +#: netbox/navigation/menu.py:258 netbox/navigation/menu.py:260 +#: templates/circuits/provider.html:61 +#: templates/circuits/provideraccount.html:46 +#: templates/circuits/providernetwork.html:54 +msgid "Circuits" +msgstr "Circuits" + +#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:27 +msgid "Circuit ID" +msgstr "Identifiant du circuit" + +#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:157 +msgid "Side A" +msgstr "Côté A" + +#: circuits/tables/circuits.py:69 +msgid "Side Z" +msgstr "Côté Z" + +#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:56 +msgid "Commit Rate" +msgstr "Taux d'engagement" + +#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/providers.py:82 circuits/tables/providers.py:107 +#: dcim/tables/devices.py:1037 dcim/tables/devicetypes.py:92 +#: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 +#: dcim/tables/power.py:96 dcim/tables/racks.py:76 dcim/tables/racks.py:156 +#: dcim/tables/sites.py:103 extras/forms/bulk_edit.py:320 +#: extras/tables/tables.py:485 ipam/tables/asn.py:69 ipam/tables/fhrp.py:34 +#: ipam/tables/ip.py:135 ipam/tables/ip.py:272 ipam/tables/ip.py:325 +#: ipam/tables/ip.py:392 ipam/tables/services.py:24 ipam/tables/services.py:54 +#: ipam/tables/vlans.py:141 ipam/tables/vrfs.py:46 ipam/tables/vrfs.py:71 +#: templates/dcim/cable_edit.html:85 templates/generic/bulk_edit.html:102 +#: templates/inc/panels/comments.html:6 tenancy/tables/contacts.py:68 +#: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 +#: virtualization/tables/clusters.py:91 +#: virtualization/tables/virtualmachines.py:68 vpn/tables/crypto.py:37 +#: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 +#: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:57 +#: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 +msgid "Comments" +msgstr "Commentaires" + +#: circuits/tables/providers.py:23 +msgid "Accounts" +msgstr "Comptes" + +#: circuits/tables/providers.py:29 +msgid "Account Count" +msgstr "Nombre de comptes" + +#: circuits/tables/providers.py:39 dcim/tables/sites.py:100 +msgid "ASN Count" +msgstr "Nombre d'ASN" + +#: core/choices.py:18 +msgid "New" +msgstr "Nouveau" + +#: core/choices.py:19 +msgid "Queued" +msgstr "En file d'attente" + +#: core/choices.py:20 +msgid "Syncing" +msgstr "Synchronisation" + +#: core/choices.py:21 core/choices.py:57 core/tables/jobs.py:41 +#: extras/choices.py:210 templates/core/job.html:75 +msgid "Completed" +msgstr "Terminé" + +#: core/choices.py:22 core/choices.py:59 dcim/choices.py:176 +#: dcim/choices.py:222 dcim/choices.py:1496 extras/choices.py:212 +#: virtualization/choices.py:47 +msgid "Failed" +msgstr "Échoué" + +#: core/choices.py:35 netbox/navigation/menu.py:330 +#: templates/extras/script/base.html:14 templates/extras/script_list.html:6 +#: templates/extras/script_list.html:20 templates/extras/script_result.html:18 +msgid "Scripts" +msgstr "Scripts" + +#: core/choices.py:36 netbox/navigation/menu.py:324 +#: templates/extras/report/base.html:13 templates/extras/report_list.html:7 +#: templates/extras/report_list.html:12 +msgid "Reports" +msgstr "Rapports" + +#: core/choices.py:54 extras/choices.py:207 +msgid "Pending" +msgstr "En attente" + +#: core/choices.py:55 core/tables/jobs.py:32 extras/choices.py:208 +#: templates/core/job.html:62 +msgid "Scheduled" +msgstr "Programmé" + +#: core/choices.py:56 extras/choices.py:209 +msgid "Running" +msgstr "Courir" + +#: core/choices.py:58 extras/choices.py:211 +msgid "Errored" +msgstr "Errulé" + +#: core/data_backends.py:29 templates/dcim/interface.html:224 +msgid "Local" +msgstr "Local" + +#: core/data_backends.py:47 extras/tables/tables.py:431 +#: templates/account/profile.html:16 templates/users/user.html:18 +#: users/tables.py:31 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: core/data_backends.py:49 core/data_backends.py:55 +msgid "Only used for cloning with HTTP(S)" +msgstr "Utilisé uniquement pour le clonage avec HTTP (S)" + +#: core/data_backends.py:53 templates/account/base.html:17 +#: templates/account/password.html:11 users/forms/model_forms.py:171 +msgid "Password" +msgstr "Mot de passe" + +#: core/data_backends.py:59 +msgid "Branch" +msgstr "Succursale" + +#: core/data_backends.py:118 +msgid "AWS access key ID" +msgstr "ID de clé d'accès AWS" + +#: core/data_backends.py:122 +msgid "AWS secret access key" +msgstr "Clé d'accès secrète AWS" + +#: core/filtersets.py:49 extras/filtersets.py:203 extras/filtersets.py:538 +#: extras/filtersets.py:566 +msgid "Data source (ID)" +msgstr "Source de données (ID)" + +#: core/filtersets.py:55 +msgid "Data source (name)" +msgstr "Source de données (nom)" + +#: core/forms/bulk_edit.py:24 ipam/forms/bulk_edit.py:47 +msgid "Enforce unique space" +msgstr "Renforcez un espace unique" + +#: core/forms/bulk_edit.py:33 extras/forms/model_forms.py:202 +#: templates/extras/savedfilter.html:57 vpn/forms/filtersets.py:95 +#: vpn/forms/filtersets.py:124 vpn/forms/filtersets.py:148 +#: vpn/forms/filtersets.py:167 vpn/forms/model_forms.py:294 +#: vpn/forms/model_forms.py:315 vpn/forms/model_forms.py:329 +#: vpn/forms/model_forms.py:350 vpn/forms/model_forms.py:373 +msgid "Parameters" +msgstr "Paramètres" + +#: core/forms/bulk_edit.py:37 templates/core/datasource.html:69 +msgid "Ignore rules" +msgstr "Ignorer les règles" + +#: core/forms/filtersets.py:26 core/forms/model_forms.py:95 +#: extras/forms/model_forms.py:165 extras/forms/model_forms.py:455 +#: extras/forms/model_forms.py:508 extras/tables/tables.py:149 +#: extras/tables/tables.py:363 extras/tables/tables.py:398 +#: templates/core/datasource.html:31 +#: templates/dcim/device/render_config.html:19 +#: templates/extras/configcontext.html:30 +#: templates/extras/configtemplate.html:22 +#: templates/extras/exporttemplate.html:41 +#: templates/virtualization/virtualmachine/render_config.html:19 +msgid "Data Source" +msgstr "Source de données" + +#: core/forms/filtersets.py:39 core/tables/data.py:26 +#: dcim/forms/bulk_edit.py:1012 dcim/forms/bulk_edit.py:1285 +#: dcim/forms/filtersets.py:1270 dcim/tables/devices.py:568 +#: dcim/tables/devicetypes.py:221 extras/forms/bulk_edit.py:97 +#: extras/forms/bulk_edit.py:161 extras/forms/bulk_edit.py:220 +#: extras/forms/filtersets.py:119 extras/forms/filtersets.py:206 +#: extras/forms/filtersets.py:267 extras/tables/tables.py:122 +#: extras/tables/tables.py:211 extras/tables/tables.py:284 +#: templates/core/datasource.html:43 templates/dcim/interface.html:62 +#: templates/extras/customlink.html:18 templates/extras/eventrule.html:20 +#: templates/extras/savedfilter.html:26 +#: templates/users/objectpermission.html:26 +#: templates/virtualization/vminterface.html:32 users/forms/bulk_edit.py:69 +#: users/forms/filtersets.py:71 users/tables.py:86 +#: virtualization/forms/bulk_edit.py:216 +#: virtualization/forms/filtersets.py:207 +msgid "Enabled" +msgstr "Activé" + +#: core/forms/filtersets.py:51 core/forms/mixins.py:21 +msgid "File" +msgstr "Dossier" + +#: core/forms/filtersets.py:56 core/forms/mixins.py:16 +#: extras/forms/filtersets.py:147 extras/forms/filtersets.py:336 +#: extras/forms/filtersets.py:422 +msgid "Data source" +msgstr "Source de données" + +#: core/forms/filtersets.py:64 extras/forms/filtersets.py:449 +msgid "Creation" +msgstr "Création" + +#: core/forms/filtersets.py:70 extras/forms/filtersets.py:473 +#: extras/forms/filtersets.py:519 extras/tables/tables.py:474 +#: templates/core/job.html:25 templates/extras/objectchange.html:56 +#: tenancy/tables/contacts.py:90 vpn/tables/l2vpn.py:59 +msgid "Object Type" +msgstr "Type d'objet" + +#: core/forms/filtersets.py:80 +msgid "Created after" +msgstr "Créé après" + +#: core/forms/filtersets.py:85 +msgid "Created before" +msgstr "Créé avant" + +#: core/forms/filtersets.py:90 +msgid "Scheduled after" +msgstr "Planifié après" + +#: core/forms/filtersets.py:95 +msgid "Scheduled before" +msgstr "Planifié avant" + +#: core/forms/filtersets.py:100 +msgid "Started after" +msgstr "Commencé après" + +#: core/forms/filtersets.py:105 +msgid "Started before" +msgstr "Commencé avant" + +#: core/forms/filtersets.py:110 +msgid "Completed after" +msgstr "Terminé après" + +#: core/forms/filtersets.py:115 +msgid "Completed before" +msgstr "Terminé avant" + +#: core/forms/filtersets.py:122 dcim/forms/bulk_edit.py:359 +#: dcim/forms/filtersets.py:352 dcim/forms/filtersets.py:396 +#: dcim/forms/model_forms.py:251 extras/forms/filtersets.py:465 +#: extras/forms/filtersets.py:511 templates/dcim/rackreservation.html:65 +#: templates/extras/objectchange.html:40 templates/extras/savedfilter.html:22 +#: templates/users/token.html:22 templates/users/user.html:6 +#: templates/users/user.html:14 users/filtersets.py:74 users/filtersets.py:134 +#: users/forms/filtersets.py:85 users/forms/filtersets.py:126 +#: users/forms/model_forms.py:156 users/forms/model_forms.py:194 +#: users/tables.py:19 +msgid "User" +msgstr "Utilisateur" + +#: core/forms/model_forms.py:52 core/tables/data.py:46 +#: templates/core/datafile.html:36 templates/extras/report/base.html:33 +#: templates/extras/script/base.html:32 templates/extras/script_result.html:45 +msgid "Source" +msgstr "Source" + +#: core/forms/model_forms.py:56 +msgid "Backend Parameters" +msgstr "Paramètres du backend" + +#: core/forms/model_forms.py:94 +msgid "File Upload" +msgstr "Téléchargement de fichiers" + +#: core/forms/model_forms.py:147 templates/core/configrevision.html:43 +#: templates/dcim/rack_elevation_list.html:6 +msgid "Rack Elevations" +msgstr "Élévations des rayonnages" + +#: core/forms/model_forms.py:148 dcim/choices.py:1407 +#: dcim/forms/bulk_edit.py:859 dcim/forms/bulk_edit.py:1242 +#: dcim/forms/bulk_edit.py:1260 dcim/tables/racks.py:89 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 +msgid "Power" +msgstr "Pouvoir" + +#: core/forms/model_forms.py:149 netbox/navigation/menu.py:142 +#: templates/core/configrevision.html:79 +msgid "IPAM" +msgstr "IPAM" + +#: core/forms/model_forms.py:150 netbox/navigation/menu.py:218 +#: templates/core/configrevision.html:95 vpn/forms/bulk_edit.py:76 +#: vpn/forms/filtersets.py:42 vpn/forms/model_forms.py:60 +#: vpn/forms/model_forms.py:145 +msgid "Security" +msgstr "Sécurité" + +#: core/forms/model_forms.py:151 templates/core/configrevision.html:107 +msgid "Banners" +msgstr "Bannières" + +#: core/forms/model_forms.py:152 templates/core/configrevision.html:131 +msgid "Pagination" +msgstr "Pagination" + +#: core/forms/model_forms.py:153 extras/forms/model_forms.py:63 +#: templates/core/configrevision.html:147 +msgid "Validation" +msgstr "Validation" + +#: core/forms/model_forms.py:154 templates/account/preferences.html:6 +#: templates/core/configrevision.html:175 +msgid "User Preferences" +msgstr "Préférences de l'utilisateur" + +#: core/forms/model_forms.py:155 dcim/forms/filtersets.py:658 +#: templates/core/configrevision.html:193 users/forms/model_forms.py:63 +msgid "Miscellaneous" +msgstr "Divers" + +#: core/forms/model_forms.py:158 +msgid "Config Revision" +msgstr "Révision de la configuration" + +#: core/forms/model_forms.py:197 +msgid "This parameter has been defined statically and cannot be modified." +msgstr "" +"Ce paramètre a été défini de manière statique et ne peut pas être modifié." + +#: core/forms/model_forms.py:205 +#, python-brace-format +msgid "Current value: {value}" +msgstr "Valeur actuelle : {value}" + +#: core/forms/model_forms.py:207 +msgid " (default)" +msgstr " (par défaut)" + +#: core/models/config.py:18 core/models/data.py:259 core/models/files.py:27 +#: core/models/jobs.py:50 extras/models/models.py:760 +#: netbox/models/features.py:52 users/models.py:248 +msgid "created" +msgstr "créé" + +#: core/models/config.py:22 +msgid "comment" +msgstr "commentaire" + +#: core/models/config.py:29 +msgid "configuration data" +msgstr "données de configuration" + +#: core/models/config.py:36 +msgid "config revision" +msgstr "révision de la configuration" + +#: core/models/config.py:37 +msgid "config revisions" +msgstr "révisions de configuration" + +#: core/models/config.py:41 +msgid "Default configuration" +msgstr "Configuration par défaut" + +#: core/models/config.py:43 +msgid "Current configuration" +msgstr "Configuration actuelle" + +#: core/models/config.py:44 +#, python-brace-format +msgid "Config revision #{id}" +msgstr "Révision de configuration #{id}" + +#: core/models/data.py:46 dcim/models/cables.py:43 +#: dcim/models/device_component_templates.py:177 +#: dcim/models/device_component_templates.py:211 +#: dcim/models/device_component_templates.py:246 +#: dcim/models/device_component_templates.py:308 +#: dcim/models/device_component_templates.py:387 +#: dcim/models/device_component_templates.py:486 +#: dcim/models/device_component_templates.py:586 +#: dcim/models/device_components.py:284 dcim/models/device_components.py:313 +#: dcim/models/device_components.py:346 dcim/models/device_components.py:464 +#: dcim/models/device_components.py:606 dcim/models/device_components.py:971 +#: dcim/models/device_components.py:1045 dcim/models/power.py:101 +#: dcim/models/racks.py:127 extras/models/customfields.py:75 +#: extras/models/search.py:43 virtualization/models/clusters.py:61 +#: vpn/models/l2vpn.py:32 +msgid "type" +msgstr "type" + +#: core/models/data.py:51 extras/choices.py:34 extras/models/models.py:194 +#: templates/core/datasource.html:59 +msgid "URL" +msgstr "URL" + +#: core/models/data.py:61 dcim/models/device_component_templates.py:392 +#: dcim/models/device_components.py:513 extras/models/models.py:88 +#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:353 +msgid "enabled" +msgstr "activé" + +#: core/models/data.py:65 +msgid "ignore rules" +msgstr "ignorer les règles" + +#: core/models/data.py:67 +msgid "Patterns (one per line) matching files to ignore when syncing" +msgstr "" +"Modèles (un par ligne) correspondant aux fichiers à ignorer lors de la " +"synchronisation" + +#: core/models/data.py:70 extras/models/models.py:564 +msgid "parameters" +msgstr "paramètres" + +#: core/models/data.py:75 +msgid "last synced" +msgstr "dernière synchronisation" + +#: core/models/data.py:83 +msgid "data source" +msgstr "source de données" + +#: core/models/data.py:84 +msgid "data sources" +msgstr "sources de données" + +#: core/models/data.py:124 +#, python-brace-format +msgid "Unknown backend type: {type}" +msgstr "Type de backend inconnu : {type}" + +#: core/models/data.py:263 core/models/files.py:31 +#: netbox/models/features.py:58 +msgid "last updated" +msgstr "dernière mise à jour" + +#: core/models/data.py:273 dcim/models/cables.py:430 +msgid "path" +msgstr "chemin" + +#: core/models/data.py:276 +msgid "File path relative to the data source's root" +msgstr "Chemin du fichier par rapport à la racine de la source de données" + +#: core/models/data.py:280 ipam/models/ip.py:502 +msgid "size" +msgstr "taille" + +#: core/models/data.py:283 +msgid "hash" +msgstr "hachage" + +#: core/models/data.py:287 +msgid "Length must be 64 hexadecimal characters." +msgstr "La longueur doit être de 64 caractères hexadécimaux." + +#: core/models/data.py:289 +msgid "SHA256 hash of the file data" +msgstr "Hachage SHA256 des données du fichier" + +#: core/models/data.py:306 +msgid "data file" +msgstr "fichier de données" + +#: core/models/data.py:307 +msgid "data files" +msgstr "fichiers de données" + +#: core/models/data.py:393 +msgid "auto sync record" +msgstr "enregistrement de synchronisation automatique" + +#: core/models/data.py:394 +msgid "auto sync records" +msgstr "enregistrements de synchronisation automatique" + +#: core/models/files.py:37 +msgid "file root" +msgstr "racine du fichier" + +#: core/models/files.py:42 +msgid "file path" +msgstr "chemin du fichier" + +#: core/models/files.py:44 +msgid "File path relative to the designated root path" +msgstr "Chemin du fichier par rapport au chemin racine désigné" + +#: core/models/files.py:61 +msgid "managed file" +msgstr "fichier géré" + +#: core/models/files.py:62 +msgid "managed files" +msgstr "fichiers gérés" + +#: core/models/jobs.py:54 +msgid "scheduled" +msgstr "prévu" + +#: core/models/jobs.py:59 +msgid "interval" +msgstr "intervalle" + +#: core/models/jobs.py:65 +msgid "Recurrence interval (in minutes)" +msgstr "Intervalle de récurrence (en minutes)" + +#: core/models/jobs.py:68 +msgid "started" +msgstr "commencé" + +#: core/models/jobs.py:73 +msgid "completed" +msgstr "terminé" + +#: core/models/jobs.py:91 extras/models/models.py:123 +#: extras/models/staging.py:87 +msgid "data" +msgstr "données" + +#: core/models/jobs.py:96 +msgid "error" +msgstr "erreur" + +#: core/models/jobs.py:101 +msgid "job ID" +msgstr "ID de tâche" + +#: core/models/jobs.py:112 +msgid "job" +msgstr "emploi" + +#: core/models/jobs.py:113 +msgid "jobs" +msgstr "emplois" + +#: core/models/jobs.py:135 +#, python-brace-format +msgid "Jobs cannot be assigned to this object type ({type})." +msgstr "Les tâches ne peuvent pas être attribuées à ce type d'objet ({type})." + +#: core/tables/config.py:21 users/forms/filtersets.py:45 users/tables.py:39 +msgid "Is Active" +msgstr "Est actif" + +#: core/tables/data.py:50 templates/core/datafile.html:40 +msgid "Path" +msgstr "Sentier" + +#: core/tables/data.py:54 templates/extras/inc/result_pending.html:7 +msgid "Last updated" +msgstr "Dernière mise à jour" + +#: core/tables/jobs.py:10 dcim/tables/devicetypes.py:161 +#: extras/tables/tables.py:174 extras/tables/tables.py:340 +#: netbox/tables/tables.py:184 templates/dcim/virtualchassis_edit.html:53 +#: wireless/tables/wirelesslink.py:16 +msgid "ID" +msgstr "IDENTIFIANT" + +#: core/tables/jobs.py:21 extras/choices.py:38 extras/tables/tables.py:236 +#: extras/tables/tables.py:350 extras/tables/tables.py:448 +#: extras/tables/tables.py:479 netbox/tables/tables.py:238 +#: templates/extras/eventrule.html:99 +#: templates/extras/htmx/report_result.html:45 +#: templates/extras/journalentry.html:21 templates/extras/objectchange.html:62 +#: tenancy/tables/contacts.py:93 vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Objet" + +#: core/tables/jobs.py:35 +msgid "Interval" +msgstr "Intervalle" + +#: core/tables/jobs.py:38 templates/core/job.html:71 +#: templates/extras/htmx/report_result.html:7 +#: templates/extras/htmx/script_result.html:8 +msgid "Started" +msgstr "Commencé" + +#: dcim/api/serializers.py:205 templates/dcim/rack.html:33 +msgid "Facility ID" +msgstr "ID de l'établissement" + +#: dcim/api/serializers.py:321 dcim/api/serializers.py:680 +msgid "Position (U)" +msgstr "Position (U)" + +#: dcim/choices.py:21 virtualization/choices.py:21 +msgid "Staging" +msgstr "Mise en scène" + +#: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 +#: dcim/choices.py:1420 virtualization/choices.py:23 +#: virtualization/choices.py:48 +msgid "Decommissioning" +msgstr "Démantèlement" + +#: dcim/choices.py:24 +msgid "Retired" +msgstr "Retraité" + +#: dcim/choices.py:65 +msgid "2-post frame" +msgstr "Châssis à 2 montants" + +#: dcim/choices.py:66 +msgid "4-post frame" +msgstr "Châssis à 4 montants" + +#: dcim/choices.py:67 +msgid "4-post cabinet" +msgstr "Armoire à 4 montants" + +#: dcim/choices.py:68 +msgid "Wall-mounted frame" +msgstr "Châssis mural" + +#: dcim/choices.py:69 +msgid "Wall-mounted frame (vertical)" +msgstr "Châssis mural (vertical)" + +#: dcim/choices.py:70 +msgid "Wall-mounted cabinet" +msgstr "Armoire murale" + +#: dcim/choices.py:71 +msgid "Wall-mounted cabinet (vertical)" +msgstr "Armoire murale (verticale)" + +#: dcim/choices.py:83 dcim/choices.py:84 dcim/choices.py:85 dcim/choices.py:86 +#, python-brace-format +msgid "{n} inches" +msgstr "{n} pouces" + +#: dcim/choices.py:100 ipam/choices.py:32 ipam/choices.py:50 +#: ipam/choices.py:70 ipam/choices.py:155 wireless/choices.py:26 +msgid "Reserved" +msgstr "Réservé" + +#: dcim/choices.py:101 templates/dcim/device.html:262 +msgid "Available" +msgstr "Disponible" + +#: dcim/choices.py:104 ipam/choices.py:33 ipam/choices.py:51 +#: ipam/choices.py:71 ipam/choices.py:156 wireless/choices.py:28 +msgid "Deprecated" +msgstr "Obsolète" + +#: dcim/choices.py:114 templates/dcim/rack.html:128 +msgid "Millimeters" +msgstr "Millimètres" + +#: dcim/choices.py:115 dcim/choices.py:1442 +msgid "Inches" +msgstr "Pouces" + +#: dcim/choices.py:140 dcim/forms/bulk_edit.py:66 dcim/forms/bulk_edit.py:85 +#: dcim/forms/bulk_edit.py:171 dcim/forms/bulk_edit.py:1290 +#: dcim/forms/bulk_import.py:59 dcim/forms/bulk_import.py:73 +#: dcim/forms/bulk_import.py:136 dcim/forms/bulk_import.py:503 +#: dcim/forms/bulk_import.py:770 dcim/forms/bulk_import.py:1021 +#: dcim/forms/filtersets.py:226 dcim/forms/model_forms.py:73 +#: dcim/forms/model_forms.py:94 dcim/forms/model_forms.py:172 +#: dcim/forms/model_forms.py:955 dcim/forms/model_forms.py:1296 +#: dcim/forms/object_import.py:181 dcim/tables/devices.py:671 +#: dcim/tables/devices.py:955 extras/tables/tables.py:181 +#: ipam/tables/fhrp.py:59 ipam/tables/ip.py:374 ipam/tables/services.py:44 +#: templates/dcim/interface.html:105 templates/dcim/interface.html:321 +#: templates/dcim/location.html:44 templates/dcim/region.html:38 +#: templates/dcim/sitegroup.html:38 templates/ipam/service.html:31 +#: templates/tenancy/contactgroup.html:32 +#: templates/tenancy/tenantgroup.html:40 +#: templates/virtualization/vminterface.html:42 +#: templates/wireless/wirelesslangroup.html:38 tenancy/forms/bulk_edit.py:26 +#: tenancy/forms/bulk_edit.py:60 tenancy/forms/bulk_import.py:24 +#: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:24 +#: tenancy/forms/model_forms.py:69 virtualization/forms/bulk_edit.py:206 +#: virtualization/forms/bulk_import.py:151 +#: virtualization/tables/virtualmachines.py:142 wireless/forms/bulk_edit.py:23 +#: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:20 +msgid "Parent" +msgstr "Parent" + +#: dcim/choices.py:141 +msgid "Child" +msgstr "Enfant" + +#: dcim/choices.py:155 templates/dcim/device.html:345 +#: templates/dcim/rack.html:181 templates/dcim/rack_elevation_list.html:22 +#: templates/dcim/rackreservation.html:84 +msgid "Front" +msgstr "Avant" + +#: dcim/choices.py:156 templates/dcim/device.html:351 +#: templates/dcim/rack.html:187 templates/dcim/rack_elevation_list.html:23 +#: templates/dcim/rackreservation.html:90 +msgid "Rear" +msgstr "Arrière" + +#: dcim/choices.py:175 dcim/choices.py:221 virtualization/choices.py:46 +msgid "Staged" +msgstr "Mis en scène" + +#: dcim/choices.py:177 +msgid "Inventory" +msgstr "Inventaire" + +#: dcim/choices.py:193 +msgid "Front to rear" +msgstr "De l'avant vers l'arrière" + +#: dcim/choices.py:194 +msgid "Rear to front" +msgstr "De l'arrière vers l'avant" + +#: dcim/choices.py:195 +msgid "Left to right" +msgstr "De gauche à droite" + +#: dcim/choices.py:196 +msgid "Right to left" +msgstr "De droite à gauche" + +#: dcim/choices.py:197 +msgid "Side to rear" +msgstr "D'un côté à l'arrière" + +#: dcim/choices.py:198 dcim/choices.py:1215 +msgid "Passive" +msgstr "Passif" + +#: dcim/choices.py:199 +msgid "Mixed" +msgstr "Mixte" + +#: dcim/choices.py:443 dcim/choices.py:680 +msgid "NEMA (Non-locking)" +msgstr "NEMA (non verrouillable)" + +#: dcim/choices.py:465 dcim/choices.py:702 +msgid "NEMA (Locking)" +msgstr "NEMA (verrouillage)" + +#: dcim/choices.py:488 dcim/choices.py:725 +msgid "California Style" +msgstr "Style californien" + +#: dcim/choices.py:496 +msgid "International/ITA" +msgstr "International/ITA" + +#: dcim/choices.py:526 dcim/choices.py:755 +msgid "Proprietary" +msgstr "Propriétaire" + +#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1131 +#: dcim/choices.py:1133 dcim/choices.py:1338 dcim/choices.py:1340 +#: netbox/navigation/menu.py:188 +msgid "Other" +msgstr "Autres" + +#: dcim/choices.py:733 +msgid "ITA/International" +msgstr "ITA/International" + +#: dcim/choices.py:794 +msgid "Physical" +msgstr "Physique" + +#: dcim/choices.py:795 dcim/choices.py:949 +msgid "Virtual" +msgstr "Virtuel" + +#: dcim/choices.py:796 dcim/choices.py:1019 dcim/forms/bulk_edit.py:1398 +#: dcim/forms/filtersets.py:1233 dcim/forms/model_forms.py:881 +#: dcim/forms/model_forms.py:1190 netbox/navigation/menu.py:128 +#: netbox/navigation/menu.py:132 templates/dcim/interface.html:217 +msgid "Wireless" +msgstr "Sans fil" + +#: dcim/choices.py:947 +msgid "Virtual interfaces" +msgstr "Interfaces virtuelles" + +#: dcim/choices.py:950 dcim/forms/bulk_edit.py:1295 +#: dcim/forms/bulk_import.py:777 dcim/forms/model_forms.py:869 +#: dcim/tables/devices.py:675 templates/dcim/interface.html:109 +#: templates/virtualization/vminterface.html:46 +#: virtualization/forms/bulk_edit.py:211 +#: virtualization/forms/bulk_import.py:158 +#: virtualization/tables/virtualmachines.py:146 +msgid "Bridge" +msgstr "Passerelle" + +#: dcim/choices.py:951 +msgid "Link Aggregation Group (LAG)" +msgstr "Groupe d'agrégation de liens (LAG)" + +#: dcim/choices.py:955 +msgid "Ethernet (fixed)" +msgstr "Ethernet (fixe)" + +#: dcim/choices.py:969 +msgid "Ethernet (modular)" +msgstr "Ethernet (modulaire)" + +#: dcim/choices.py:1005 +msgid "Ethernet (backplane)" +msgstr "Ethernet (panneau arrière)" + +#: dcim/choices.py:1033 +msgid "Cellular" +msgstr "Cellulaire" + +#: dcim/choices.py:1080 dcim/forms/filtersets.py:302 +#: dcim/forms/filtersets.py:736 dcim/forms/filtersets.py:876 +#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:53 +#: templates/dcim/virtualchassis_edit.html:55 +msgid "Serial" +msgstr "Série" + +#: dcim/choices.py:1095 +msgid "Coaxial" +msgstr "Coaxiale" + +#: dcim/choices.py:1112 +msgid "Stacking" +msgstr "Empilage" + +#: dcim/choices.py:1162 +msgid "Half" +msgstr "La moitié" + +#: dcim/choices.py:1163 +msgid "Full" +msgstr "Complet" + +#: dcim/choices.py:1164 wireless/choices.py:480 +msgid "Auto" +msgstr "Automatique" + +#: dcim/choices.py:1175 +msgid "Access" +msgstr "Accès" + +#: dcim/choices.py:1176 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: templates/dcim/inc/interface_vlans_table.html:7 +msgid "Tagged" +msgstr "Tagué" + +#: dcim/choices.py:1177 +msgid "Tagged (All)" +msgstr "Tagué (Tous)" + +#: dcim/choices.py:1206 +msgid "IEEE Standard" +msgstr "Norme IEEE" + +#: dcim/choices.py:1217 +msgid "Passive 24V (2-pair)" +msgstr "24 V passif (2 paires)" + +#: dcim/choices.py:1218 +msgid "Passive 24V (4-pair)" +msgstr "24 V passif (4 paires)" + +#: dcim/choices.py:1219 +msgid "Passive 48V (2-pair)" +msgstr "48 V passif (2 paires)" + +#: dcim/choices.py:1220 +msgid "Passive 48V (4-pair)" +msgstr "48 V passif (4 paires)" + +#: dcim/choices.py:1282 dcim/choices.py:1378 +msgid "Copper" +msgstr "Cuivre" + +#: dcim/choices.py:1305 +msgid "Fiber Optic" +msgstr "fibre optique" + +#: dcim/choices.py:1394 +msgid "Fiber" +msgstr "Fibre" + +#: dcim/choices.py:1418 dcim/forms/filtersets.py:1140 +msgid "Connected" +msgstr "Connecté" + +#: dcim/choices.py:1437 +msgid "Kilometers" +msgstr "Kilomètres" + +#: dcim/choices.py:1438 templates/dcim/cable_trace.html:62 +msgid "Meters" +msgstr "Compteurs" + +#: dcim/choices.py:1439 +msgid "Centimeters" +msgstr "Centimètres" + +#: dcim/choices.py:1440 +msgid "Miles" +msgstr "Miles" + +#: dcim/choices.py:1441 templates/dcim/cable_trace.html:63 +msgid "Feet" +msgstr "Pieds" + +#: dcim/choices.py:1457 templates/dcim/device.html:332 +#: templates/dcim/rack.html:157 +msgid "Kilograms" +msgstr "Kilogrammes" + +#: dcim/choices.py:1458 +msgid "Grams" +msgstr "Grammes" + +#: dcim/choices.py:1459 templates/dcim/rack.html:158 +msgid "Pounds" +msgstr "Livres" + +#: dcim/choices.py:1460 +msgid "Ounces" +msgstr "Onces" + +#: dcim/choices.py:1506 tenancy/choices.py:17 +msgid "Primary" +msgstr "Primaire" + +#: dcim/choices.py:1507 +msgid "Redundant" +msgstr "Redondant" + +#: dcim/choices.py:1528 +msgid "Single phase" +msgstr "Monophasé" + +#: dcim/choices.py:1529 +msgid "Three-phase" +msgstr "Triphasé" + +#: dcim/filtersets.py:80 +msgid "Parent region (ID)" +msgstr "Région parente (ID)" + +#: dcim/filtersets.py:86 +msgid "Parent region (slug)" +msgstr "Région parente (limace)" + +#: dcim/filtersets.py:97 +msgid "Parent site group (ID)" +msgstr "Groupe de sites parent (ID)" + +#: dcim/filtersets.py:103 +msgid "Parent site group (slug)" +msgstr "Groupe de sites parents (slug)" + +#: dcim/filtersets.py:132 ipam/filtersets.py:797 ipam/filtersets.py:930 +msgid "Group (ID)" +msgstr "Groupe (ID)" + +#: dcim/filtersets.py:138 +msgid "Group (slug)" +msgstr "Groupe (limace)" + +#: dcim/filtersets.py:144 dcim/filtersets.py:149 +msgid "AS (ID)" +msgstr "COMME (ID)" + +#: dcim/filtersets.py:217 dcim/filtersets.py:292 dcim/filtersets.py:390 +#: dcim/filtersets.py:917 dcim/filtersets.py:1213 dcim/filtersets.py:1881 +msgid "Location (ID)" +msgstr "Lieu (ID)" + +#: dcim/filtersets.py:224 dcim/filtersets.py:299 dcim/filtersets.py:397 +#: dcim/filtersets.py:1219 extras/filtersets.py:447 +msgid "Location (slug)" +msgstr "Emplacement (limace)" + +#: dcim/filtersets.py:313 dcim/filtersets.py:764 dcim/filtersets.py:854 +#: dcim/filtersets.py:1619 ipam/filtersets.py:347 ipam/filtersets.py:459 +#: ipam/filtersets.py:940 virtualization/filtersets.py:209 +msgid "Role (ID)" +msgstr "Rôle (ID)" + +#: dcim/filtersets.py:319 dcim/filtersets.py:770 dcim/filtersets.py:860 +#: dcim/filtersets.py:1625 extras/filtersets.py:463 ipam/filtersets.py:353 +#: ipam/filtersets.py:465 ipam/filtersets.py:946 +#: virtualization/filtersets.py:215 +msgid "Role (slug)" +msgstr "Rôle (limace)" + +#: dcim/filtersets.py:347 dcim/filtersets.py:922 dcim/filtersets.py:1224 +#: dcim/filtersets.py:1942 +msgid "Rack (ID)" +msgstr "Étagère (ID)" + +#: dcim/filtersets.py:401 extras/filtersets.py:234 extras/filtersets.py:278 +#: extras/filtersets.py:318 extras/filtersets.py:613 +msgid "User (ID)" +msgstr "Utilisateur (ID)" + +#: dcim/filtersets.py:407 extras/filtersets.py:240 extras/filtersets.py:284 +#: extras/filtersets.py:324 users/filtersets.py:80 users/filtersets.py:140 +msgid "User (name)" +msgstr "Utilisateur (nom)" + +#: dcim/filtersets.py:435 dcim/filtersets.py:561 dcim/filtersets.py:754 +#: dcim/filtersets.py:805 dcim/filtersets.py:833 dcim/filtersets.py:1116 +#: dcim/filtersets.py:1609 +msgid "Manufacturer (ID)" +msgstr "Fabricant (ID)" + +#: dcim/filtersets.py:441 dcim/filtersets.py:567 dcim/filtersets.py:760 +#: dcim/filtersets.py:811 dcim/filtersets.py:839 dcim/filtersets.py:1122 +#: dcim/filtersets.py:1615 +msgid "Manufacturer (slug)" +msgstr "Fabricant (limace)" + +#: dcim/filtersets.py:445 +msgid "Default platform (ID)" +msgstr "Plateforme par défaut (ID)" + +#: dcim/filtersets.py:451 +msgid "Default platform (slug)" +msgstr "Plateforme par défaut (slug)" + +#: dcim/filtersets.py:454 dcim/forms/filtersets.py:452 +msgid "Has a front image" +msgstr "Possède une image frontale" + +#: dcim/filtersets.py:458 dcim/forms/filtersets.py:459 +msgid "Has a rear image" +msgstr "Possède une image arrière" + +#: dcim/filtersets.py:463 dcim/filtersets.py:571 dcim/filtersets.py:975 +#: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:563 +#: dcim/forms/filtersets.py:775 +msgid "Has console ports" +msgstr "Possède des ports de console" + +#: dcim/filtersets.py:467 dcim/filtersets.py:575 dcim/filtersets.py:979 +#: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:570 +#: dcim/forms/filtersets.py:782 +msgid "Has console server ports" +msgstr "Possède des ports de serveur de console" + +#: dcim/filtersets.py:471 dcim/filtersets.py:579 dcim/filtersets.py:983 +#: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:577 +#: dcim/forms/filtersets.py:789 +msgid "Has power ports" +msgstr "Possède des ports d'alimentation" + +#: dcim/filtersets.py:475 dcim/filtersets.py:583 dcim/filtersets.py:987 +#: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:584 +#: dcim/forms/filtersets.py:796 +msgid "Has power outlets" +msgstr "Dispose de prises de courant" + +#: dcim/filtersets.py:479 dcim/filtersets.py:587 dcim/filtersets.py:991 +#: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:591 +#: dcim/forms/filtersets.py:803 +msgid "Has interfaces" +msgstr "Possède des interfaces" + +#: dcim/filtersets.py:483 dcim/filtersets.py:591 dcim/filtersets.py:995 +#: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:598 +#: dcim/forms/filtersets.py:810 +msgid "Has pass-through ports" +msgstr "Possède des ports d'intercommunication" + +#: dcim/filtersets.py:487 dcim/filtersets.py:999 dcim/forms/filtersets.py:515 +msgid "Has module bays" +msgstr "Dispose de baies pour modules" + +#: dcim/filtersets.py:491 dcim/filtersets.py:1003 dcim/forms/filtersets.py:508 +msgid "Has device bays" +msgstr "Dispose de baies pour appareils" + +#: dcim/filtersets.py:495 dcim/forms/filtersets.py:522 +msgid "Has inventory items" +msgstr "Possède des articles en inventaire" + +#: dcim/filtersets.py:638 dcim/filtersets.py:849 dcim/filtersets.py:1245 +msgid "Device type (ID)" +msgstr "Type d'appareil (ID)" + +#: dcim/filtersets.py:651 dcim/filtersets.py:1127 +msgid "Module type (ID)" +msgstr "Type de module (ID)" + +#: dcim/filtersets.py:750 dcim/filtersets.py:1605 +msgid "Parent inventory item (ID)" +msgstr "Article d'inventaire parent (ID)" + +#: dcim/filtersets.py:793 dcim/filtersets.py:815 dcim/filtersets.py:971 +#: virtualization/filtersets.py:237 +msgid "Config template (ID)" +msgstr "Modèle de configuration (ID)" + +#: dcim/filtersets.py:845 +msgid "Device type (slug)" +msgstr "Type d'appareil (slug)" + +#: dcim/filtersets.py:865 +msgid "Parent Device (ID)" +msgstr "Appareil parent (ID)" + +#: dcim/filtersets.py:869 virtualization/filtersets.py:219 +msgid "Platform (ID)" +msgstr "Plateforme (ID)" + +#: dcim/filtersets.py:875 extras/filtersets.py:474 +#: virtualization/filtersets.py:225 +msgid "Platform (slug)" +msgstr "Plateforme (slug)" + +#: dcim/filtersets.py:911 dcim/filtersets.py:1208 dcim/filtersets.py:1703 +#: dcim/filtersets.py:1875 dcim/filtersets.py:1933 +msgid "Site name (slug)" +msgstr "Nom du site (slug)" + +#: dcim/filtersets.py:926 +msgid "VM cluster (ID)" +msgstr "Cluster de machines virtuelles (ID)" + +#: dcim/filtersets.py:932 +msgid "Device model (slug)" +msgstr "Modèle d'appareil (slug)" + +#: dcim/filtersets.py:943 dcim/forms/bulk_edit.py:421 +msgid "Is full depth" +msgstr "Est en pleine profondeur" + +#: dcim/filtersets.py:947 dcim/forms/common.py:18 dcim/forms/filtersets.py:745 +#: dcim/forms/filtersets.py:1285 dcim/models/device_components.py:519 +#: virtualization/filtersets.py:229 virtualization/filtersets.py:295 +#: virtualization/forms/filtersets.py:168 +#: virtualization/forms/filtersets.py:215 +msgid "MAC address" +msgstr "Adresse MAC" + +#: dcim/filtersets.py:954 dcim/forms/filtersets.py:754 +#: dcim/forms/filtersets.py:841 virtualization/filtersets.py:233 +#: virtualization/forms/filtersets.py:172 +msgid "Has a primary IP" +msgstr "Possède une adresse IP principale" + +#: dcim/filtersets.py:958 +msgid "Has an out-of-band IP" +msgstr "Possède une adresse IP hors bande" + +#: dcim/filtersets.py:963 +msgid "Virtual chassis (ID)" +msgstr "Châssis virtuel (ID)" + +#: dcim/filtersets.py:967 +msgid "Is a virtual chassis member" +msgstr "Est un membre virtuel du châssis" + +#: dcim/filtersets.py:1008 +msgid "OOB IP (ID)" +msgstr "ASTUCE SUR L'EMPLOI (ID)" + +#: dcim/filtersets.py:1133 +msgid "Module type (model)" +msgstr "Type de module (modèle)" + +#: dcim/filtersets.py:1139 +msgid "Module Bay (ID)" +msgstr "Module Bay (ID)" + +#: dcim/filtersets.py:1143 dcim/filtersets.py:1234 ipam/filtersets.py:577 +#: ipam/filtersets.py:807 ipam/filtersets.py:1015 +#: virtualization/filtersets.py:160 vpn/filtersets.py:351 +msgid "Device (ID)" +msgstr "Appareil (ID)" + +#: dcim/filtersets.py:1230 +msgid "Rack (name)" +msgstr "Rack (nom)" + +#: dcim/filtersets.py:1240 ipam/filtersets.py:572 ipam/filtersets.py:802 +#: ipam/filtersets.py:1021 vpn/filtersets.py:346 +msgid "Device (name)" +msgstr "Appareil (nom)" + +#: dcim/filtersets.py:1251 +msgid "Device type (model)" +msgstr "Type d'appareil (modèle)" + +#: dcim/filtersets.py:1256 dcim/filtersets.py:1279 +msgid "Device role (ID)" +msgstr "Rôle de l'appareil (ID)" + +#: dcim/filtersets.py:1262 dcim/filtersets.py:1285 +msgid "Device role (slug)" +msgstr "Rôle de l'appareil (slug)" + +#: dcim/filtersets.py:1267 +msgid "Virtual Chassis (ID)" +msgstr "Châssis virtuel (ID)" + +#: dcim/filtersets.py:1273 dcim/forms/filtersets.py:106 +#: dcim/tables/devices.py:235 netbox/navigation/menu.py:67 +#: templates/dcim/device.html:123 templates/dcim/device_edit.html:93 +#: templates/dcim/virtualchassis.html:20 +#: templates/dcim/virtualchassis_add.html:8 +#: templates/dcim/virtualchassis_edit.html:25 +msgid "Virtual Chassis" +msgstr "Châssis virtuel" + +#: dcim/filtersets.py:1305 +msgid "Module (ID)" +msgstr "Module (ID)" + +#: dcim/filtersets.py:1409 ipam/forms/bulk_import.py:188 +#: vpn/forms/bulk_import.py:303 +msgid "Assigned VLAN" +msgstr "VLAN attribué" + +#: dcim/filtersets.py:1413 +msgid "Assigned VID" +msgstr "VID attribué" + +#: dcim/filtersets.py:1418 dcim/forms/bulk_edit.py:1374 +#: dcim/forms/bulk_import.py:828 dcim/forms/filtersets.py:1328 +#: dcim/forms/model_forms.py:1175 dcim/models/device_components.py:712 +#: dcim/tables/devices.py:637 ipam/filtersets.py:282 ipam/filtersets.py:293 +#: ipam/filtersets.py:449 ipam/filtersets.py:550 ipam/filtersets.py:561 +#: ipam/forms/bulk_edit.py:226 ipam/forms/bulk_edit.py:281 +#: ipam/forms/bulk_edit.py:323 ipam/forms/bulk_import.py:156 +#: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 +#: ipam/forms/filtersets.py:66 ipam/forms/filtersets.py:167 +#: ipam/forms/filtersets.py:295 ipam/forms/model_forms.py:59 +#: ipam/forms/model_forms.py:203 ipam/forms/model_forms.py:246 +#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:412 +#: ipam/forms/model_forms.py:426 ipam/forms/model_forms.py:440 +#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 +#: ipam/tables/ip.py:356 ipam/tables/ip.py:445 +#: templates/dcim/interface.html:138 templates/ipam/ipaddress.html:21 +#: templates/ipam/iprange.html:43 templates/ipam/prefix.html:20 +#: templates/ipam/vrf.html:7 templates/ipam/vrf.html:14 +#: templates/virtualization/vminterface.html:50 +#: virtualization/forms/bulk_edit.py:260 +#: virtualization/forms/bulk_import.py:171 +#: virtualization/forms/filtersets.py:220 +#: virtualization/forms/model_forms.py:347 +#: virtualization/models/virtualmachines.py:348 +#: virtualization/tables/virtualmachines.py:123 +msgid "VRF" +msgstr "VRF" + +#: dcim/filtersets.py:1424 ipam/filtersets.py:288 ipam/filtersets.py:299 +#: ipam/filtersets.py:455 ipam/filtersets.py:556 ipam/filtersets.py:567 +msgid "VRF (RD)" +msgstr "VRF (RD)" + +#: dcim/filtersets.py:1429 ipam/filtersets.py:963 vpn/filtersets.py:314 +msgid "L2VPN (ID)" +msgstr "L2VPN (IDENTIFIANT)" + +#: dcim/filtersets.py:1435 dcim/forms/filtersets.py:1333 +#: dcim/tables/devices.py:585 ipam/filtersets.py:969 +#: ipam/forms/filtersets.py:499 ipam/tables/vlans.py:133 +#: templates/dcim/interface.html:94 templates/ipam/vlan.html:69 +#: templates/vpn/l2vpntermination.html:15 +#: virtualization/forms/filtersets.py:225 vpn/forms/bulk_import.py:275 +#: vpn/forms/filtersets.py:242 vpn/forms/model_forms.py:402 +#: vpn/forms/model_forms.py:420 vpn/models/l2vpn.py:63 vpn/tables/l2vpn.py:55 +msgid "L2VPN" +msgstr "L2VPN" + +#: dcim/filtersets.py:1467 +msgid "Virtual Chassis Interfaces for Device" +msgstr "Interfaces de châssis virtuelles pour appareils" + +#: dcim/filtersets.py:1472 +msgid "Virtual Chassis Interfaces for Device (ID)" +msgstr "Interfaces de châssis virtuel pour le périphérique (ID)" + +#: dcim/filtersets.py:1476 +msgid "Kind of interface" +msgstr "Type d'interface" + +#: dcim/filtersets.py:1481 virtualization/filtersets.py:287 +msgid "Parent interface (ID)" +msgstr "Interface parent (ID)" + +#: dcim/filtersets.py:1486 virtualization/filtersets.py:292 +msgid "Bridged interface (ID)" +msgstr "Interface pontée (ID)" + +#: dcim/filtersets.py:1491 +msgid "LAG interface (ID)" +msgstr "Interface LAG (ID)" + +#: dcim/filtersets.py:1660 +msgid "Master (ID)" +msgstr "Maître (ID)" + +#: dcim/filtersets.py:1666 +msgid "Master (name)" +msgstr "Master (nom)" + +#: dcim/filtersets.py:1708 tenancy/filtersets.py:220 +msgid "Tenant (ID)" +msgstr "Locataire (ID)" + +#: dcim/filtersets.py:1714 extras/filtersets.py:523 tenancy/filtersets.py:226 +msgid "Tenant (slug)" +msgstr "Locataire (limace)" + +#: dcim/filtersets.py:1749 dcim/forms/filtersets.py:990 +msgid "Unterminated" +msgstr "Non terminé" + +#: dcim/filtersets.py:1937 +msgid "Power panel (ID)" +msgstr "Panneau d'alimentation (ID)" + +#: dcim/forms/bulk_create.py:40 extras/forms/filtersets.py:410 +#: extras/forms/model_forms.py:444 extras/forms/model_forms.py:495 +#: netbox/forms/base.py:71 netbox/forms/mixins.py:79 +#: netbox/tables/columns.py:448 +#: templates/circuits/inc/circuit_termination.html:119 +#: templates/generic/bulk_edit.html:81 templates/inc/panels/tags.html:5 +#: utilities/forms/fields/fields.py:81 +msgid "Tags" +msgstr "Balises" + +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1390 +#: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:468 +#: dcim/forms/object_create.py:196 dcim/forms/object_create.py:352 +#: dcim/tables/devices.py:198 dcim/tables/devices.py:720 +#: dcim/tables/devicetypes.py:242 templates/dcim/device.html:45 +#: templates/dcim/device.html:129 templates/dcim/modulebay.html:35 +#: templates/dcim/virtualchassis.html:59 +#: templates/dcim/virtualchassis_edit.html:56 +msgid "Position" +msgstr "Position" + +#: dcim/forms/bulk_create.py:114 +msgid "" +"Alphanumeric ranges are supported. (Must match the number of names being " +"created.)" +msgstr "" +"Les plages alphanumériques sont prises en charge. (Doit correspondre au " +"nombre de noms en cours de création.)" + +#: dcim/forms/bulk_edit.py:115 dcim/forms/bulk_import.py:99 +#: dcim/forms/model_forms.py:120 dcim/tables/sites.py:89 +#: ipam/filtersets.py:936 ipam/forms/bulk_edit.py:528 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:509 +#: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 +#: templates/dcim/interface.html:294 templates/dcim/site.html:37 +#: templates/ipam/inc/panels/fhrp_groups.html:10 templates/ipam/vlan.html:30 +#: templates/tenancy/contact.html:22 templates/tenancy/tenant.html:21 +#: templates/users/group.html:6 templates/users/group.html:14 +#: templates/virtualization/cluster.html:32 templates/vpn/tunnel.html:30 +#: templates/wireless/wirelesslan.html:19 tenancy/forms/bulk_edit.py:42 +#: tenancy/forms/bulk_edit.py:93 tenancy/forms/bulk_import.py:40 +#: tenancy/forms/bulk_import.py:81 tenancy/forms/filtersets.py:47 +#: tenancy/forms/filtersets.py:77 tenancy/forms/filtersets.py:96 +#: tenancy/forms/model_forms.py:46 tenancy/forms/model_forms.py:102 +#: tenancy/forms/model_forms.py:124 tenancy/tables/contacts.py:60 +#: tenancy/tables/contacts.py:107 tenancy/tables/tenants.py:42 +#: users/filtersets.py:42 users/filtersets.py:145 users/forms/filtersets.py:32 +#: users/forms/filtersets.py:38 users/forms/filtersets.py:80 +#: virtualization/forms/bulk_edit.py:64 virtualization/forms/bulk_import.py:47 +#: virtualization/forms/filtersets.py:84 +#: virtualization/forms/model_forms.py:69 virtualization/tables/clusters.py:70 +#: vpn/forms/bulk_edit.py:111 vpn/forms/bulk_import.py:157 +#: vpn/forms/filtersets.py:113 vpn/tables/crypto.py:31 +#: wireless/forms/bulk_edit.py:47 wireless/forms/bulk_import.py:36 +#: wireless/forms/filtersets.py:45 wireless/forms/model_forms.py:41 +#: wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Groupe" + +#: dcim/forms/bulk_edit.py:130 +msgid "Contact name" +msgstr "Nom du contact" + +#: dcim/forms/bulk_edit.py:135 +msgid "Contact phone" +msgstr "Téléphone de contact" + +#: dcim/forms/bulk_edit.py:141 +msgid "Contact E-mail" +msgstr "Adresse électronique de contact" + +#: dcim/forms/bulk_edit.py:144 dcim/forms/bulk_import.py:122 +#: dcim/forms/model_forms.py:131 +msgid "Time zone" +msgstr "Fuseau horaire" + +#: dcim/forms/bulk_edit.py:266 dcim/forms/bulk_edit.py:1152 +#: dcim/forms/bulk_edit.py:1539 dcim/forms/bulk_import.py:199 +#: dcim/forms/bulk_import.py:1009 dcim/forms/filtersets.py:299 +#: dcim/forms/filtersets.py:704 dcim/forms/filtersets.py:1417 +#: dcim/forms/model_forms.py:224 dcim/forms/model_forms.py:963 +#: dcim/forms/model_forms.py:1304 dcim/forms/object_import.py:186 +#: dcim/tables/devices.py:202 dcim/tables/devices.py:828 +#: dcim/tables/devices.py:939 dcim/tables/devicetypes.py:300 +#: dcim/tables/racks.py:69 extras/filtersets.py:457 +#: ipam/forms/bulk_edit.py:245 ipam/forms/bulk_edit.py:294 +#: ipam/forms/bulk_edit.py:342 ipam/forms/bulk_edit.py:546 +#: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 +#: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 +#: ipam/forms/filtersets.py:232 ipam/forms/filtersets.py:278 +#: ipam/forms/filtersets.py:346 ipam/forms/filtersets.py:490 +#: ipam/forms/model_forms.py:187 ipam/forms/model_forms.py:222 +#: ipam/forms/model_forms.py:249 ipam/forms/model_forms.py:647 +#: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 +#: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 +#: templates/dcim/device.html:187 +#: templates/dcim/inc/panels/inventory_items.html:12 +#: templates/dcim/interface.html:231 templates/dcim/inventoryitem.html:37 +#: templates/dcim/rack.html:50 templates/ipam/ipaddress.html:44 +#: templates/ipam/iprange.html:53 templates/ipam/prefix.html:78 +#: templates/ipam/role.html:20 templates/ipam/vlan.html:55 +#: templates/virtualization/virtualmachine.html:26 +#: templates/vpn/tunneltermination.html:18 +#: templates/wireless/inc/wirelesslink_interface.html:20 +#: tenancy/forms/bulk_edit.py:141 tenancy/forms/filtersets.py:106 +#: tenancy/forms/model_forms.py:139 tenancy/tables/contacts.py:102 +#: virtualization/forms/bulk_edit.py:144 +#: virtualization/forms/bulk_import.py:106 +#: virtualization/forms/filtersets.py:153 +#: virtualization/forms/model_forms.py:198 +#: virtualization/tables/virtualmachines.py:65 vpn/forms/bulk_edit.py:86 +#: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:84 +#: vpn/forms/model_forms.py:77 vpn/forms/model_forms.py:112 +#: vpn/tables/tunnels.py:78 +msgid "Role" +msgstr "Rôle" + +#: dcim/forms/bulk_edit.py:273 dcim/forms/bulk_edit.py:605 +#: dcim/forms/bulk_edit.py:654 templates/dcim/device.html:106 +#: templates/dcim/module.html:75 templates/dcim/modulebay.html:69 +#: templates/dcim/rack.html:58 +msgid "Serial Number" +msgstr "Numéro de série" + +#: dcim/forms/bulk_edit.py:276 dcim/forms/filtersets.py:306 +#: dcim/forms/filtersets.py:740 dcim/forms/filtersets.py:880 +#: dcim/forms/filtersets.py:1430 +msgid "Asset tag" +msgstr "Étiquette d'actif" + +#: dcim/forms/bulk_edit.py:286 dcim/forms/bulk_import.py:212 +#: dcim/forms/filtersets.py:291 templates/dcim/rack.html:91 +#: templates/dcim/rack_edit.html:48 +msgid "Width" +msgstr "Largeur" + +#: dcim/forms/bulk_edit.py:292 +msgid "Height (U)" +msgstr "Hauteur (U)" + +#: dcim/forms/bulk_edit.py:297 +msgid "Descending units" +msgstr "Unités décroissantes" + +#: dcim/forms/bulk_edit.py:300 +msgid "Outer width" +msgstr "Largeur extérieure" + +#: dcim/forms/bulk_edit.py:305 +msgid "Outer depth" +msgstr "Profondeur extérieure" + +#: dcim/forms/bulk_edit.py:310 dcim/forms/bulk_import.py:217 +msgid "Outer unit" +msgstr "Unité extérieure" + +#: dcim/forms/bulk_edit.py:315 +msgid "Mounting depth" +msgstr "Profondeur de montage" + +#: dcim/forms/bulk_edit.py:320 dcim/forms/bulk_edit.py:349 +#: dcim/forms/bulk_edit.py:434 dcim/forms/bulk_edit.py:457 +#: dcim/forms/bulk_edit.py:473 dcim/forms/bulk_edit.py:493 +#: dcim/forms/bulk_import.py:324 dcim/forms/bulk_import.py:350 +#: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:311 +#: dcim/forms/filtersets.py:335 dcim/forms/filtersets.py:423 +#: dcim/forms/filtersets.py:529 dcim/forms/filtersets.py:548 +#: dcim/forms/filtersets.py:605 dcim/forms/model_forms.py:337 +#: dcim/tables/devicetypes.py:103 dcim/tables/modules.py:35 +#: dcim/tables/racks.py:103 extras/forms/bulk_edit.py:45 +#: extras/forms/bulk_edit.py:107 extras/forms/bulk_edit.py:157 +#: extras/forms/bulk_edit.py:277 extras/forms/filtersets.py:60 +#: extras/forms/filtersets.py:133 extras/forms/filtersets.py:220 +#: ipam/forms/bulk_edit.py:187 templates/dcim/device.html:329 +#: templates/dcim/devicetype.html:52 templates/dcim/moduletype.html:31 +#: templates/dcim/rack_edit.html:60 templates/dcim/rack_edit.html:63 +#: templates/extras/configcontext.html:18 templates/extras/customlink.html:26 +#: templates/extras/savedfilter.html:34 templates/ipam/role.html:33 +msgid "Weight" +msgstr "Poids" + +#: dcim/forms/bulk_edit.py:325 dcim/forms/filtersets.py:316 +msgid "Max weight" +msgstr "Poids maximum" + +#: dcim/forms/bulk_edit.py:330 dcim/forms/bulk_edit.py:439 +#: dcim/forms/bulk_edit.py:478 dcim/forms/bulk_import.py:223 +#: dcim/forms/bulk_import.py:329 dcim/forms/bulk_import.py:355 +#: dcim/forms/filtersets.py:321 dcim/forms/filtersets.py:533 +#: dcim/forms/filtersets.py:609 +msgid "Weight unit" +msgstr "Unité de poids" + +#: dcim/forms/bulk_edit.py:344 dcim/forms/bulk_edit.py:800 +#: dcim/forms/bulk_import.py:262 dcim/forms/bulk_import.py:265 +#: dcim/forms/bulk_import.py:490 dcim/forms/bulk_import.py:1286 +#: dcim/forms/bulk_import.py:1290 dcim/forms/filtersets.py:101 +#: dcim/forms/filtersets.py:339 dcim/forms/filtersets.py:353 +#: dcim/forms/filtersets.py:391 dcim/forms/filtersets.py:699 +#: dcim/forms/filtersets.py:948 dcim/forms/filtersets.py:1080 +#: dcim/forms/model_forms.py:241 dcim/forms/model_forms.py:413 +#: dcim/forms/model_forms.py:662 dcim/forms/object_create.py:399 +#: dcim/tables/devices.py:194 dcim/tables/power.py:70 dcim/tables/racks.py:148 +#: ipam/forms/bulk_edit.py:464 ipam/forms/filtersets.py:427 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:30 +#: templates/dcim/inc/cable_termination.html:16 +#: templates/dcim/powerfeed.html:31 templates/dcim/rack.html:14 +#: templates/dcim/rack/base.html:4 templates/dcim/rack_edit.html:8 +#: templates/dcim/rackreservation.html:20 +#: templates/dcim/rackreservation.html:39 +#: virtualization/forms/model_forms.py:116 +msgid "Rack" +msgstr "Étagère" + +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:623 +#: dcim/forms/filtersets.py:247 dcim/forms/filtersets.py:332 +#: dcim/forms/filtersets.py:417 dcim/forms/filtersets.py:543 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:853 +#: dcim/forms/model_forms.py:589 dcim/forms/model_forms.py:1374 +#: templates/dcim/device_edit.html:20 +#: templates/dcim/inventoryitem_edit.html:23 +msgid "Hardware" +msgstr "Matériel" + +#: dcim/forms/bulk_edit.py:400 dcim/forms/bulk_edit.py:464 +#: dcim/forms/bulk_edit.py:528 dcim/forms/bulk_edit.py:552 +#: dcim/forms/bulk_edit.py:633 dcim/forms/bulk_edit.py:1157 +#: dcim/forms/bulk_edit.py:1544 dcim/forms/bulk_import.py:311 +#: dcim/forms/bulk_import.py:345 dcim/forms/bulk_import.py:387 +#: dcim/forms/bulk_import.py:423 dcim/forms/bulk_import.py:1015 +#: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 +#: dcim/forms/filtersets.py:631 dcim/forms/filtersets.py:709 +#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/model_forms.py:274 dcim/forms/model_forms.py:288 +#: dcim/forms/model_forms.py:330 dcim/forms/model_forms.py:370 +#: dcim/forms/model_forms.py:968 dcim/forms/model_forms.py:1309 +#: dcim/forms/object_import.py:192 dcim/tables/devices.py:129 +#: dcim/tables/devices.py:205 dcim/tables/devices.py:942 +#: dcim/tables/devicetypes.py:81 dcim/tables/devicetypes.py:304 +#: dcim/tables/modules.py:20 dcim/tables/modules.py:60 +#: templates/dcim/devicetype.html:17 templates/dcim/inventoryitem.html:45 +#: templates/dcim/manufacturer.html:34 templates/dcim/modulebay.html:61 +#: templates/dcim/moduletype.html:15 templates/dcim/platform.html:40 +msgid "Manufacturer" +msgstr "Fabricant" + +#: dcim/forms/bulk_edit.py:405 dcim/forms/bulk_import.py:317 +#: dcim/forms/filtersets.py:434 dcim/forms/model_forms.py:292 +msgid "Default platform" +msgstr "Plateforme par défaut" + +#: dcim/forms/bulk_edit.py:410 dcim/forms/bulk_edit.py:469 +#: dcim/forms/filtersets.py:437 dcim/forms/filtersets.py:558 +msgid "Part number" +msgstr "Numéro de pièce" + +#: dcim/forms/bulk_edit.py:414 +msgid "U height" +msgstr "Hauteur en U" + +#: dcim/forms/bulk_edit.py:426 +msgid "Exclude from utilization" +msgstr "Exclure de l'utilisation" + +#: dcim/forms/bulk_edit.py:429 dcim/forms/bulk_edit.py:598 +#: dcim/forms/bulk_import.py:517 dcim/forms/filtersets.py:446 +#: dcim/forms/filtersets.py:731 templates/dcim/device.html:100 +#: templates/dcim/devicetype.html:68 +msgid "Airflow" +msgstr "Débit d'air" + +#: dcim/forms/bulk_edit.py:453 dcim/forms/model_forms.py:303 +#: dcim/tables/devicetypes.py:78 templates/dcim/device.html:90 +#: templates/dcim/devicebay.html:59 templates/dcim/module.html:59 +msgid "Device Type" +msgstr "Type d'appareil" + +#: dcim/forms/bulk_edit.py:492 dcim/forms/model_forms.py:336 +#: dcim/tables/modules.py:17 dcim/tables/modules.py:65 +#: templates/dcim/module.html:63 templates/dcim/modulebay.html:65 +#: templates/dcim/moduletype.html:11 +msgid "Module Type" +msgstr "Type de module" + +#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:472 +msgid "VM role" +msgstr "rôle de machine virtuelle" + +#: dcim/forms/bulk_edit.py:509 dcim/forms/bulk_edit.py:533 +#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_import.py:368 +#: dcim/forms/bulk_import.py:372 dcim/forms/bulk_import.py:394 +#: dcim/forms/bulk_import.py:398 dcim/forms/bulk_import.py:523 +#: dcim/forms/bulk_import.py:527 dcim/forms/filtersets.py:620 +#: dcim/forms/filtersets.py:636 dcim/forms/filtersets.py:750 +#: dcim/forms/model_forms.py:349 dcim/forms/model_forms.py:375 +#: dcim/forms/model_forms.py:477 virtualization/forms/bulk_import.py:132 +#: virtualization/forms/bulk_import.py:133 +#: virtualization/forms/filtersets.py:180 +#: virtualization/forms/model_forms.py:218 +msgid "Config template" +msgstr "Modèle de configuration" + +#: dcim/forms/bulk_edit.py:557 dcim/forms/bulk_edit.py:951 +#: dcim/forms/bulk_import.py:429 dcim/forms/filtersets.py:111 +#: dcim/forms/model_forms.py:435 dcim/forms/model_forms.py:776 +#: dcim/forms/model_forms.py:790 extras/filtersets.py:452 +msgid "Device type" +msgstr "Type d'appareil" + +#: dcim/forms/bulk_edit.py:565 dcim/forms/bulk_import.py:410 +#: dcim/forms/filtersets.py:116 dcim/forms/model_forms.py:440 +msgid "Device role" +msgstr "Rôle de l'appareil" + +#: dcim/forms/bulk_edit.py:588 dcim/forms/bulk_import.py:435 +#: dcim/forms/filtersets.py:723 dcim/forms/model_forms.py:385 +#: dcim/forms/model_forms.py:444 extras/filtersets.py:468 +#: templates/dcim/device.html:191 templates/dcim/platform.html:27 +#: templates/virtualization/virtualmachine.html:30 +#: virtualization/forms/bulk_edit.py:159 +#: virtualization/forms/bulk_import.py:122 +#: virtualization/forms/filtersets.py:164 +#: virtualization/forms/model_forms.py:206 +msgid "Platform" +msgstr "Plateforme" + +#: dcim/forms/bulk_edit.py:621 dcim/forms/bulk_edit.py:1171 +#: dcim/forms/bulk_edit.py:1534 dcim/forms/bulk_edit.py:1580 +#: dcim/forms/bulk_import.py:578 dcim/forms/bulk_import.py:640 +#: dcim/forms/bulk_import.py:666 dcim/forms/bulk_import.py:692 +#: dcim/forms/bulk_import.py:712 dcim/forms/bulk_import.py:765 +#: dcim/forms/bulk_import.py:879 dcim/forms/bulk_import.py:927 +#: dcim/forms/bulk_import.py:944 dcim/forms/bulk_import.py:956 +#: dcim/forms/bulk_import.py:1004 dcim/forms/bulk_import.py:1350 +#: dcim/forms/connections.py:23 dcim/forms/filtersets.py:128 +#: dcim/forms/filtersets.py:831 dcim/forms/filtersets.py:964 +#: dcim/forms/filtersets.py:1154 dcim/forms/filtersets.py:1176 +#: dcim/forms/filtersets.py:1198 dcim/forms/filtersets.py:1215 +#: dcim/forms/filtersets.py:1235 dcim/forms/filtersets.py:1343 +#: dcim/forms/filtersets.py:1365 dcim/forms/filtersets.py:1386 +#: dcim/forms/filtersets.py:1401 dcim/forms/filtersets.py:1412 +#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 +#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:555 +#: dcim/forms/model_forms.py:753 dcim/forms/model_forms.py:1004 +#: dcim/forms/model_forms.py:1453 dcim/forms/object_create.py:256 +#: dcim/tables/connections.py:22 dcim/tables/connections.py:41 +#: dcim/tables/connections.py:60 dcim/tables/devices.py:314 +#: dcim/tables/devices.py:374 dcim/tables/devices.py:418 +#: dcim/tables/devices.py:463 dcim/tables/devices.py:517 +#: dcim/tables/devices.py:609 dcim/tables/devices.py:710 +#: dcim/tables/devices.py:770 dcim/tables/devices.py:820 +#: dcim/tables/devices.py:880 dcim/tables/devices.py:932 +#: dcim/tables/devices.py:1058 dcim/tables/modules.py:52 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_import.py:303 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:532 +#: ipam/forms/model_forms.py:685 ipam/tables/vlans.py:176 +#: templates/dcim/consoleport.html:23 templates/dcim/consoleserverport.html:23 +#: templates/dcim/device.html:14 templates/dcim/device.html:128 +#: templates/dcim/device_edit.html:10 templates/dcim/devicebay.html:23 +#: templates/dcim/devicebay.html:55 templates/dcim/frontport.html:23 +#: templates/dcim/interface.html:31 templates/dcim/interface.html:167 +#: templates/dcim/inventoryitem.html:21 templates/dcim/module.html:55 +#: templates/dcim/modulebay.html:21 templates/dcim/poweroutlet.html:23 +#: templates/dcim/powerport.html:23 templates/dcim/rearport.html:23 +#: templates/dcim/virtualchassis.html:58 +#: templates/dcim/virtualchassis_edit.html:52 +#: templates/dcim/virtualdevicecontext.html:25 +#: templates/ipam/ipaddress_edit.html:42 templates/ipam/service_create.html:17 +#: templates/ipam/service_edit.html:16 +#: templates/virtualization/virtualmachine.html:115 +#: templates/vpn/l2vpntermination_edit.html:22 +#: templates/vpn/tunneltermination.html:24 +#: templates/wireless/inc/wirelesslink_interface.html:6 +#: virtualization/filtersets.py:166 virtualization/forms/bulk_edit.py:136 +#: virtualization/forms/bulk_import.py:99 +#: virtualization/forms/filtersets.py:124 +#: virtualization/forms/model_forms.py:188 +#: virtualization/tables/virtualmachines.py:61 vpn/choices.py:44 +#: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:278 +#: vpn/forms/filtersets.py:271 vpn/forms/model_forms.py:89 +#: vpn/forms/model_forms.py:124 vpn/forms/model_forms.py:237 +#: wireless/forms/model_forms.py:100 wireless/forms/model_forms.py:140 +#: wireless/tables/wirelesslan.py:75 +msgid "Device" +msgstr "Appareil" + +#: dcim/forms/bulk_edit.py:624 netbox/navigation/menu.py:441 +#: templates/extras/dashboard/widget_config.html:7 +msgid "Configuration" +msgstr "Configuration" + +#: dcim/forms/bulk_edit.py:638 dcim/forms/bulk_import.py:590 +#: dcim/forms/model_forms.py:569 dcim/forms/model_forms.py:795 +msgid "Module type" +msgstr "Type de module" + +#: dcim/forms/bulk_edit.py:689 dcim/forms/bulk_edit.py:874 +#: dcim/forms/bulk_edit.py:893 dcim/forms/bulk_edit.py:916 +#: dcim/forms/bulk_edit.py:958 dcim/forms/bulk_edit.py:1002 +#: dcim/forms/bulk_edit.py:1053 dcim/forms/bulk_edit.py:1080 +#: dcim/forms/bulk_edit.py:1107 dcim/forms/bulk_edit.py:1125 +#: dcim/forms/bulk_edit.py:1143 dcim/forms/filtersets.py:64 +#: dcim/forms/object_create.py:45 templates/dcim/cable.html:33 +#: templates/dcim/consoleport.html:35 templates/dcim/consoleserverport.html:35 +#: templates/dcim/devicebay.html:31 templates/dcim/frontport.html:35 +#: templates/dcim/inc/panels/inventory_items.html:11 +#: templates/dcim/interface.html:43 templates/dcim/inventoryitem.html:33 +#: templates/dcim/modulebay.html:31 templates/dcim/poweroutlet.html:35 +#: templates/dcim/powerport.html:35 templates/dcim/rearport.html:35 +#: templates/extras/customfield.html:27 templates/generic/bulk_import.html:155 +msgid "Label" +msgstr "Libellé" + +#: dcim/forms/bulk_edit.py:698 dcim/forms/filtersets.py:981 +#: templates/dcim/cable.html:51 +msgid "Length" +msgstr "Longueur" + +#: dcim/forms/bulk_edit.py:703 dcim/forms/bulk_import.py:1158 +#: dcim/forms/bulk_import.py:1161 dcim/forms/filtersets.py:985 +msgid "Length unit" +msgstr "Unité de longueur" + +#: dcim/forms/bulk_edit.py:727 templates/dcim/virtualchassis.html:24 +msgid "Domain" +msgstr "Domaine" + +#: dcim/forms/bulk_edit.py:795 dcim/forms/bulk_import.py:1273 +#: dcim/forms/filtersets.py:1071 dcim/forms/model_forms.py:657 +msgid "Power panel" +msgstr "panneau d'alimentation" + +#: dcim/forms/bulk_edit.py:817 dcim/forms/bulk_import.py:1309 +#: dcim/forms/filtersets.py:1093 templates/dcim/powerfeed.html:90 +msgid "Supply" +msgstr "Approvisionnement" + +#: dcim/forms/bulk_edit.py:823 dcim/forms/bulk_import.py:1314 +#: dcim/forms/filtersets.py:1098 templates/dcim/powerfeed.html:102 +msgid "Phase" +msgstr "Phase" + +#: dcim/forms/bulk_edit.py:829 dcim/forms/filtersets.py:1103 +#: templates/dcim/powerfeed.html:94 +msgid "Voltage" +msgstr "tension" + +#: dcim/forms/bulk_edit.py:833 dcim/forms/filtersets.py:1107 +#: templates/dcim/powerfeed.html:98 +msgid "Amperage" +msgstr "Ampérage" + +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1111 +msgid "Max utilization" +msgstr "Utilisation maximale" + +#: dcim/forms/bulk_edit.py:841 dcim/forms/bulk_edit.py:1200 +#: dcim/forms/bulk_edit.py:1217 dcim/forms/bulk_edit.py:1234 +#: dcim/forms/bulk_edit.py:1252 dcim/forms/bulk_edit.py:1340 +#: dcim/forms/bulk_edit.py:1478 dcim/forms/bulk_edit.py:1495 +msgid "Mark connected" +msgstr "Marquer comme connecté" + +#: dcim/forms/bulk_edit.py:926 +msgid "Maximum draw" +msgstr "Tirage maximum" + +#: dcim/forms/bulk_edit.py:929 dcim/models/device_component_templates.py:256 +#: dcim/models/device_components.py:357 +msgid "Maximum power draw (watts)" +msgstr "Consommation électrique maximale (watts)" + +#: dcim/forms/bulk_edit.py:932 +msgid "Allocated draw" +msgstr "Tirage au sort attribué" + +#: dcim/forms/bulk_edit.py:935 dcim/models/device_component_templates.py:263 +#: dcim/models/device_components.py:364 +msgid "Allocated power draw (watts)" +msgstr "Consommation électrique allouée (watts)" + +#: dcim/forms/bulk_edit.py:968 dcim/forms/bulk_import.py:723 +#: dcim/forms/model_forms.py:848 dcim/forms/model_forms.py:1076 +#: dcim/forms/model_forms.py:1361 dcim/forms/object_import.py:60 +msgid "Power port" +msgstr "port d'alimentation" + +#: dcim/forms/bulk_edit.py:973 +msgid "Feed leg" +msgstr "Patte d'alimentation" + +#: dcim/forms/bulk_edit.py:1019 dcim/forms/bulk_edit.py:1325 +msgid "Management only" +msgstr "Gestion uniquement" + +#: dcim/forms/bulk_edit.py:1029 dcim/forms/bulk_edit.py:1331 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1294 +#: dcim/forms/object_import.py:95 +#: dcim/models/device_component_templates.py:411 +#: dcim/models/device_components.py:671 +msgid "PoE mode" +msgstr "Mode PoE" + +#: dcim/forms/bulk_edit.py:1035 dcim/forms/bulk_edit.py:1337 +#: dcim/forms/bulk_import.py:819 dcim/forms/filtersets.py:1299 +#: dcim/forms/object_import.py:100 +#: dcim/models/device_component_templates.py:417 +#: dcim/models/device_components.py:677 +msgid "PoE type" +msgstr "Type PoE" + +#: dcim/forms/bulk_edit.py:1041 dcim/forms/filtersets.py:1304 +#: dcim/forms/object_import.py:105 +msgid "Wireless role" +msgstr "Rôle sans fil" + +#: dcim/forms/bulk_edit.py:1178 dcim/forms/model_forms.py:588 +#: dcim/forms/model_forms.py:1019 dcim/tables/devices.py:337 +#: templates/dcim/consoleport.html:27 templates/dcim/consoleserverport.html:27 +#: templates/dcim/frontport.html:27 templates/dcim/interface.html:35 +#: templates/dcim/module.html:51 templates/dcim/modulebay.html:57 +#: templates/dcim/poweroutlet.html:27 templates/dcim/powerport.html:27 +#: templates/dcim/rearport.html:27 +msgid "Module" +msgstr "Modules" + +#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:680 +#: templates/dcim/interface.html:113 +msgid "LAG" +msgstr "DÉCALAGE" + +#: dcim/forms/bulk_edit.py:1310 dcim/forms/model_forms.py:1103 +msgid "Virtual device contexts" +msgstr "Contextes des appareils virtuels" + +#: dcim/forms/bulk_edit.py:1316 dcim/forms/bulk_import.py:651 +#: dcim/forms/bulk_import.py:677 dcim/forms/filtersets.py:1163 +#: dcim/forms/filtersets.py:1185 dcim/forms/filtersets.py:1258 +#: dcim/tables/devices.py:621 +#: templates/circuits/inc/circuit_termination.html:94 +#: templates/dcim/consoleport.html:43 templates/dcim/consoleserverport.html:43 +msgid "Speed" +msgstr "Vitesse" + +#: dcim/forms/bulk_edit.py:1345 dcim/forms/bulk_import.py:822 +#: templates/vpn/ikepolicy.html:26 templates/vpn/ipsecprofile.html:22 +#: templates/vpn/ipsecprofile.html:51 virtualization/forms/bulk_edit.py:232 +#: virtualization/forms/bulk_import.py:165 vpn/forms/bulk_edit.py:145 +#: vpn/forms/bulk_edit.py:233 vpn/forms/bulk_import.py:175 +#: vpn/forms/bulk_import.py:229 vpn/forms/filtersets.py:132 +#: vpn/forms/filtersets.py:175 vpn/forms/filtersets.py:189 +#: vpn/tables/crypto.py:64 vpn/tables/crypto.py:162 +msgid "Mode" +msgstr "Mode" + +#: dcim/forms/bulk_edit.py:1353 dcim/forms/model_forms.py:1152 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:479 +#: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:239 +#: virtualization/forms/model_forms.py:324 +msgid "VLAN group" +msgstr "groupe VLAN" + +#: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1157 +#: dcim/tables/devices.py:594 virtualization/forms/bulk_edit.py:247 +#: virtualization/forms/model_forms.py:329 +msgid "Untagged VLAN" +msgstr "VLAN non balisé" + +#: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1166 +#: dcim/tables/devices.py:600 virtualization/forms/bulk_edit.py:255 +#: virtualization/forms/model_forms.py:338 +msgid "Tagged VLANs" +msgstr "VLAN balisés" + +#: dcim/forms/bulk_edit.py:1379 dcim/forms/model_forms.py:1139 +msgid "Wireless LAN group" +msgstr "Groupe LAN sans fil" + +#: dcim/forms/bulk_edit.py:1384 dcim/forms/model_forms.py:1144 +#: dcim/tables/devices.py:630 netbox/navigation/menu.py:134 +#: templates/dcim/interface.html:289 wireless/tables/wirelesslan.py:24 +msgid "Wireless LANs" +msgstr "Réseaux locaux sans fil" + +#: dcim/forms/bulk_edit.py:1393 dcim/forms/filtersets.py:1231 +#: dcim/forms/model_forms.py:1185 ipam/forms/bulk_edit.py:270 +#: ipam/forms/bulk_edit.py:361 ipam/forms/filtersets.py:166 +#: templates/dcim/interface.html:126 templates/ipam/prefix.html:96 +#: virtualization/forms/model_forms.py:352 +msgid "Addressing" +msgstr "Adressage" + +#: dcim/forms/bulk_edit.py:1394 dcim/forms/filtersets.py:651 +#: dcim/forms/model_forms.py:1186 virtualization/forms/model_forms.py:353 +msgid "Operation" +msgstr "Fonctionnement" + +#: dcim/forms/bulk_edit.py:1395 dcim/forms/filtersets.py:1232 +#: dcim/forms/model_forms.py:880 dcim/forms/model_forms.py:1188 +msgid "PoE" +msgstr "PoE" + +#: dcim/forms/bulk_edit.py:1396 dcim/forms/model_forms.py:1187 +#: templates/dcim/interface.html:101 virtualization/forms/bulk_edit.py:266 +#: virtualization/forms/model_forms.py:354 +msgid "Related Interfaces" +msgstr "Interfaces associées" + +#: dcim/forms/bulk_edit.py:1397 dcim/forms/model_forms.py:1189 +#: virtualization/forms/bulk_edit.py:267 +#: virtualization/forms/model_forms.py:355 +msgid "802.1Q Switching" +msgstr "Commutation 802.1Q" + +#: dcim/forms/bulk_edit.py:1458 dcim/forms/bulk_edit.py:1460 +msgid "Interface mode must be specified to assign VLANs" +msgstr "Le mode d'interface doit être spécifié pour attribuer des VLAN" + +#: dcim/forms/bulk_edit.py:1465 dcim/forms/common.py:50 +msgid "An access interface cannot have tagged VLANs assigned." +msgstr "" +"Les VLAN balisés ne peuvent pas être attribués à une interface d'accès." + +#: dcim/forms/bulk_import.py:63 +msgid "Name of parent region" +msgstr "Nom de la région mère" + +#: dcim/forms/bulk_import.py:77 +msgid "Name of parent site group" +msgstr "Nom du groupe de sites parent" + +#: dcim/forms/bulk_import.py:96 +msgid "Assigned region" +msgstr "Région assignée" + +#: dcim/forms/bulk_import.py:103 tenancy/forms/bulk_import.py:44 +#: tenancy/forms/bulk_import.py:85 wireless/forms/bulk_import.py:40 +msgid "Assigned group" +msgstr "Groupe assigné" + +#: dcim/forms/bulk_import.py:122 +msgid "available options" +msgstr "options disponibles" + +#: dcim/forms/bulk_import.py:133 dcim/forms/bulk_import.py:480 +#: dcim/forms/bulk_import.py:1270 ipam/forms/bulk_import.py:174 +#: ipam/forms/bulk_import.py:441 virtualization/forms/bulk_import.py:63 +#: virtualization/forms/bulk_import.py:89 +msgid "Assigned site" +msgstr "Site assigné" + +#: dcim/forms/bulk_import.py:140 +msgid "Parent location" +msgstr "Emplacement du parent" + +#: dcim/forms/bulk_import.py:142 +msgid "Location not found." +msgstr "Emplacement introuvable." + +#: dcim/forms/bulk_import.py:191 +msgid "Name of assigned tenant" +msgstr "Nom du locataire assigné" + +#: dcim/forms/bulk_import.py:203 +msgid "Name of assigned role" +msgstr "Nom du rôle attribué" + +#: dcim/forms/bulk_import.py:209 +msgid "Rack type" +msgstr "Type de rack" + +#: dcim/forms/bulk_import.py:214 +msgid "Rail-to-rail width (in inches)" +msgstr "Largeur rail à rail (en pouces)" + +#: dcim/forms/bulk_import.py:220 +msgid "Unit for outer dimensions" +msgstr "Unité pour les dimensions extérieures" + +#: dcim/forms/bulk_import.py:226 +msgid "Unit for rack weights" +msgstr "Unité pour supports de pesage" + +#: dcim/forms/bulk_import.py:252 +msgid "Parent site" +msgstr "Site parent" + +#: dcim/forms/bulk_import.py:259 dcim/forms/bulk_import.py:1283 +msgid "Rack's location (if any)" +msgstr "Emplacement du rack (le cas échéant)" + +#: dcim/forms/bulk_import.py:268 dcim/forms/model_forms.py:246 +#: dcim/tables/racks.py:153 templates/dcim/rackreservation.html:12 +#: templates/dcim/rackreservation.html:52 +msgid "Units" +msgstr "Unités" + +#: dcim/forms/bulk_import.py:271 +msgid "Comma-separated list of individual unit numbers" +msgstr "Liste de numéros d'unités individuels séparés par des virgules" + +#: dcim/forms/bulk_import.py:314 +msgid "The manufacturer which produces this device type" +msgstr "Le fabricant qui produit ce type d'appareil" + +#: dcim/forms/bulk_import.py:321 +msgid "The default platform for devices of this type (optional)" +msgstr "Plateforme par défaut pour les appareils de ce type (facultatif)" + +#: dcim/forms/bulk_import.py:326 +msgid "Device weight" +msgstr "Poids de l'appareil" + +#: dcim/forms/bulk_import.py:332 +msgid "Unit for device weight" +msgstr "Unité de poids de l'appareil" + +#: dcim/forms/bulk_import.py:352 +msgid "Module weight" +msgstr "Poids du module" + +#: dcim/forms/bulk_import.py:358 +msgid "Unit for module weight" +msgstr "Unité pour le poids du module" + +#: dcim/forms/bulk_import.py:391 +msgid "Limit platform assignments to this manufacturer" +msgstr "Limiter les attributions de plateforme à ce fabricant" + +#: dcim/forms/bulk_import.py:413 tenancy/forms/bulk_import.py:106 +msgid "Assigned role" +msgstr "Rôle assigné" + +#: dcim/forms/bulk_import.py:426 +msgid "Device type manufacturer" +msgstr "Fabricant du type d'appareil" + +#: dcim/forms/bulk_import.py:432 +msgid "Device type model" +msgstr "Type d'appareil et modèle" + +#: dcim/forms/bulk_import.py:439 virtualization/forms/bulk_import.py:126 +msgid "Assigned platform" +msgstr "Plateforme attribuée" + +#: dcim/forms/bulk_import.py:447 dcim/forms/bulk_import.py:451 +#: dcim/forms/model_forms.py:461 +msgid "Virtual chassis" +msgstr "Châssis virtuel" + +#: dcim/forms/bulk_import.py:454 dcim/forms/model_forms.py:450 +#: dcim/tables/devices.py:231 extras/filtersets.py:501 +#: extras/forms/filtersets.py:330 ipam/forms/bulk_edit.py:478 +#: ipam/forms/model_forms.py:588 templates/dcim/device.html:239 +#: templates/virtualization/cluster.html:11 +#: templates/virtualization/virtualmachine.html:92 +#: templates/virtualization/virtualmachine.html:102 +#: virtualization/filtersets.py:156 virtualization/filtersets.py:271 +#: virtualization/forms/bulk_edit.py:128 +#: virtualization/forms/bulk_import.py:92 +#: virtualization/forms/filtersets.py:98 +#: virtualization/forms/filtersets.py:119 +#: virtualization/forms/filtersets.py:196 +#: virtualization/forms/model_forms.py:82 +#: virtualization/forms/model_forms.py:179 +#: virtualization/tables/virtualmachines.py:57 +msgid "Cluster" +msgstr "Cluster" + +#: dcim/forms/bulk_import.py:458 +msgid "Virtualization cluster" +msgstr "Cluster de virtualisation" + +#: dcim/forms/bulk_import.py:487 +msgid "Assigned location (if any)" +msgstr "Emplacement attribué (le cas échéant)" + +#: dcim/forms/bulk_import.py:494 +msgid "Assigned rack (if any)" +msgstr "Rack assigné (le cas échéant)" + +#: dcim/forms/bulk_import.py:497 +msgid "Face" +msgstr "Visage" + +#: dcim/forms/bulk_import.py:500 +msgid "Mounted rack face" +msgstr "Face du rack montée" + +#: dcim/forms/bulk_import.py:507 +msgid "Parent device (for child devices)" +msgstr "Appareil parent (pour les appareils pour enfants)" + +#: dcim/forms/bulk_import.py:510 +msgid "Device bay" +msgstr "Baie pour appareils" + +#: dcim/forms/bulk_import.py:514 +msgid "Device bay in which this device is installed (for child devices)" +msgstr "" +"Baie d'appareils dans laquelle cet appareil est installé (pour les appareils" +" pour enfants)" + +#: dcim/forms/bulk_import.py:520 +msgid "Airflow direction" +msgstr "Direction du flux d'air" + +#: dcim/forms/bulk_import.py:581 +msgid "The device in which this module is installed" +msgstr "L'appareil sur lequel ce module est installé" + +#: dcim/forms/bulk_import.py:584 dcim/forms/model_forms.py:562 +msgid "Module bay" +msgstr "Baie modulaire" + +#: dcim/forms/bulk_import.py:587 +msgid "The module bay in which this module is installed" +msgstr "La baie du module dans laquelle ce module est installé" + +#: dcim/forms/bulk_import.py:593 +msgid "The type of module" +msgstr "Le type de module" + +#: dcim/forms/bulk_import.py:601 dcim/forms/model_forms.py:575 +msgid "Replicate components" +msgstr "Répliquer les composants" + +#: dcim/forms/bulk_import.py:603 +msgid "" +"Automatically populate components associated with this module type (enabled " +"by default)" +msgstr "" +"Remplir automatiquement les composants associés à ce type de module (activé " +"par défaut)" + +#: dcim/forms/bulk_import.py:606 dcim/forms/model_forms.py:581 +msgid "Adopt components" +msgstr "Adoptez des composants" + +#: dcim/forms/bulk_import.py:608 dcim/forms/model_forms.py:584 +msgid "Adopt already existing components" +msgstr "Adoptez des composants déjà existants" + +#: dcim/forms/bulk_import.py:648 dcim/forms/bulk_import.py:674 +#: dcim/forms/bulk_import.py:700 +msgid "Port type" +msgstr "Type de port" + +#: dcim/forms/bulk_import.py:656 dcim/forms/bulk_import.py:682 +msgid "Port speed in bps" +msgstr "Vitesse du port en bits/s" + +#: dcim/forms/bulk_import.py:720 +msgid "Outlet type" +msgstr "Type de prise" + +#: dcim/forms/bulk_import.py:727 +msgid "Local power port which feeds this outlet" +msgstr "Port d'alimentation local qui alimente cette prise" + +#: dcim/forms/bulk_import.py:730 +msgid "Feed lag" +msgstr "Retard d'alimentation" + +#: dcim/forms/bulk_import.py:733 +msgid "Electrical phase (for three-phase circuits)" +msgstr "Phase électrique (pour circuits triphasés)" + +#: dcim/forms/bulk_import.py:774 dcim/forms/model_forms.py:1114 +#: virtualization/forms/bulk_import.py:155 +#: virtualization/forms/model_forms.py:308 +msgid "Parent interface" +msgstr "Interface pour les parents" + +#: dcim/forms/bulk_import.py:781 dcim/forms/model_forms.py:1122 +#: virtualization/forms/bulk_import.py:162 +#: virtualization/forms/model_forms.py:316 +msgid "Bridged interface" +msgstr "Interface pontée" + +#: dcim/forms/bulk_import.py:784 +msgid "Lag" +msgstr "Retard" + +#: dcim/forms/bulk_import.py:788 +msgid "Parent LAG interface" +msgstr "Interface LAG parent" + +#: dcim/forms/bulk_import.py:791 +msgid "Vdcs" +msgstr "VDC" + +#: dcim/forms/bulk_import.py:796 +msgid "VDC names separated by commas, encased with double quotes. Example:" +msgstr "" +"Noms de VDC séparés par des virgules, entre guillemets doubles. Exemple :" + +#: dcim/forms/bulk_import.py:802 +msgid "Physical medium" +msgstr "Support physique" + +#: dcim/forms/bulk_import.py:805 dcim/forms/filtersets.py:1265 +msgid "Duplex" +msgstr "Duplex" + +#: dcim/forms/bulk_import.py:810 +msgid "Poe mode" +msgstr "Mode PoE" + +#: dcim/forms/bulk_import.py:816 +msgid "Poe type" +msgstr "Type de poteau" + +#: dcim/forms/bulk_import.py:825 virtualization/forms/bulk_import.py:168 +msgid "IEEE 802.1Q operational mode (for L2 interfaces)" +msgstr "Mode de fonctionnement IEEE 802.1Q (pour interfaces L2)" + +#: dcim/forms/bulk_import.py:832 ipam/forms/bulk_import.py:160 +#: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:322 virtualization/forms/bulk_import.py:175 +msgid "Assigned VRF" +msgstr "VRF attribué" + +#: dcim/forms/bulk_import.py:835 +msgid "Rf role" +msgstr "Rôle RF" + +#: dcim/forms/bulk_import.py:838 +msgid "Wireless role (AP/station)" +msgstr "Rôle sans fil (AP/station)" + +#: dcim/forms/bulk_import.py:884 dcim/forms/model_forms.py:893 +#: dcim/forms/model_forms.py:1369 dcim/forms/object_import.py:122 +msgid "Rear port" +msgstr "Port arrière" + +#: dcim/forms/bulk_import.py:887 +msgid "Corresponding rear port" +msgstr "Port arrière correspondant" + +#: dcim/forms/bulk_import.py:892 dcim/forms/bulk_import.py:933 +#: dcim/forms/bulk_import.py:1148 +msgid "Physical medium classification" +msgstr "Classification des supports physiques" + +#: dcim/forms/bulk_import.py:961 dcim/tables/devices.py:841 +msgid "Installed device" +msgstr "Appareil installé" + +#: dcim/forms/bulk_import.py:965 +msgid "Child device installed within this bay" +msgstr "Appareil pour enfant installé dans cette baie" + +#: dcim/forms/bulk_import.py:967 +msgid "Child device not found." +msgstr "Appareil pour enfant introuvable." + +#: dcim/forms/bulk_import.py:1025 +msgid "Parent inventory item" +msgstr "Article d'inventaire parent" + +#: dcim/forms/bulk_import.py:1028 +msgid "Component type" +msgstr "Type de composant" + +#: dcim/forms/bulk_import.py:1032 +msgid "Component Type" +msgstr "Type de composant" + +#: dcim/forms/bulk_import.py:1035 +msgid "Compnent name" +msgstr "Nom du composant" + +#: dcim/forms/bulk_import.py:1037 +msgid "Component Name" +msgstr "Nom du composant" + +#: dcim/forms/bulk_import.py:1103 +msgid "Side A device" +msgstr "Appareil côté A" + +#: dcim/forms/bulk_import.py:1106 dcim/forms/bulk_import.py:1124 +msgid "Device name" +msgstr "Nom de l'appareil" + +#: dcim/forms/bulk_import.py:1109 +msgid "Side A type" +msgstr "Côté A type" + +#: dcim/forms/bulk_import.py:1112 dcim/forms/bulk_import.py:1130 +msgid "Termination type" +msgstr "Type de terminaison" + +#: dcim/forms/bulk_import.py:1115 +msgid "Side A name" +msgstr "Nom de la face A" + +#: dcim/forms/bulk_import.py:1116 dcim/forms/bulk_import.py:1134 +msgid "Termination name" +msgstr "Nom de résiliation" + +#: dcim/forms/bulk_import.py:1121 +msgid "Side B device" +msgstr "Appareil Side B" + +#: dcim/forms/bulk_import.py:1127 +msgid "Side B type" +msgstr "Type de face B" + +#: dcim/forms/bulk_import.py:1133 +msgid "Side B name" +msgstr "Nom de la face B" + +#: dcim/forms/bulk_import.py:1142 wireless/forms/bulk_import.py:86 +msgid "Connection status" +msgstr "État de la connexion" + +#: dcim/forms/bulk_import.py:1221 dcim/forms/model_forms.py:689 +#: dcim/tables/devices.py:1028 templates/dcim/device.html:130 +#: templates/dcim/virtualchassis.html:28 templates/dcim/virtualchassis.html:60 +msgid "Master" +msgstr "Maître" + +#: dcim/forms/bulk_import.py:1225 +msgid "Master device" +msgstr "Appareil principal" + +#: dcim/forms/bulk_import.py:1242 +msgid "Name of parent site" +msgstr "Nom du site parent" + +#: dcim/forms/bulk_import.py:1276 +msgid "Upstream power panel" +msgstr "Panneau d'alimentation en amont" + +#: dcim/forms/bulk_import.py:1306 +msgid "Primary or redundant" +msgstr "Principal ou redondant" + +#: dcim/forms/bulk_import.py:1311 +msgid "Supply type (AC/DC)" +msgstr "Type d'alimentation (AC/DC)" + +#: dcim/forms/bulk_import.py:1316 +msgid "Single or three-phase" +msgstr "Monophasé ou triphasé" + +#: dcim/forms/common.py:24 dcim/models/device_components.py:528 +#: templates/dcim/interface.html:58 +#: templates/virtualization/vminterface.html:58 +#: virtualization/forms/bulk_edit.py:224 +msgid "MTU" +msgstr "MTU" + +#: dcim/forms/common.py:65 +#, python-brace-format +msgid "" +"The tagged VLANs ({vlans}) must belong to the same site as the interface's " +"parent device/VM, or they must be global" +msgstr "" +"Les VLAN balisés ({vlans}) doivent appartenir au même site que l'appareil/la" +" machine virtuelle parent de l'interface, ou ils doivent être globaux" + +#: dcim/forms/common.py:110 +msgid "" +"Cannot install module with placeholder values in a module bay with no " +"position defined." +msgstr "" +"Impossible d'installer le module avec des valeurs d'espace réservé dans une " +"baie de modules dont aucune position n'est définie." + +#: dcim/forms/common.py:119 +#, python-brace-format +msgid "Cannot adopt {model} {name} as it already belongs to a module" +msgstr "" +"Impossible d'adopter {model} {name} car il appartient déjà à un module" + +#: dcim/forms/common.py:128 +#, python-brace-format +msgid "A {model} named {name} already exists" +msgstr "UN {model} nommé {name} existe déjà" + +#: dcim/forms/connections.py:45 dcim/tables/power.py:66 +#: templates/dcim/inc/cable_termination.html:37 +#: templates/dcim/powerfeed.html:27 templates/dcim/powerpanel.html:19 +#: templates/dcim/trace/powerpanel.html:4 +msgid "Power Panel" +msgstr "Panneau d'alimentation" + +#: dcim/forms/connections.py:54 dcim/forms/model_forms.py:670 +#: templates/dcim/powerfeed.html:22 templates/dcim/powerport.html:84 +msgid "Power Feed" +msgstr "Alimentation" + +#: dcim/forms/connections.py:74 +msgid "Side" +msgstr "Côté" + +#: dcim/forms/filtersets.py:141 +msgid "Parent region" +msgstr "Région parente" + +#: dcim/forms/filtersets.py:155 tenancy/forms/bulk_import.py:28 +#: tenancy/forms/bulk_import.py:62 tenancy/forms/filtersets.py:32 +#: tenancy/forms/filtersets.py:61 wireless/forms/bulk_import.py:25 +#: wireless/forms/filtersets.py:24 +msgid "Parent group" +msgstr "Groupe de parents" + +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:331 +msgid "Function" +msgstr "Fonction" + +#: dcim/forms/filtersets.py:418 dcim/forms/model_forms.py:308 +#: templates/inc/panels/image_attachments.html:5 +msgid "Images" +msgstr "Des images" + +#: dcim/forms/filtersets.py:419 dcim/forms/filtersets.py:544 +#: dcim/forms/filtersets.py:655 +msgid "Components" +msgstr "Composantes" + +#: dcim/forms/filtersets.py:441 +msgid "Subdevice role" +msgstr "Rôle du sous-appareil" + +#: dcim/forms/filtersets.py:717 +msgid "Model" +msgstr "Modèle" + +#: dcim/forms/filtersets.py:768 +msgid "Virtual chassis member" +msgstr "Membre virtuel du châssis" + +#: dcim/forms/filtersets.py:1123 +msgid "Cabled" +msgstr "câblé" + +#: dcim/forms/filtersets.py:1130 +msgid "Occupied" +msgstr "Occupé" + +#: dcim/forms/filtersets.py:1155 dcim/forms/filtersets.py:1177 +#: dcim/forms/filtersets.py:1199 dcim/forms/filtersets.py:1216 +#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:367 +#: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:59 +#: templates/dcim/frontport.html:74 templates/dcim/interface.html:146 +#: templates/dcim/powerfeed.html:118 templates/dcim/poweroutlet.html:63 +#: templates/dcim/powerport.html:63 templates/dcim/rearport.html:70 +msgid "Connection" +msgstr "Connexion" + +#: dcim/forms/filtersets.py:1245 dcim/forms/model_forms.py:1477 +#: templates/dcim/virtualdevicecontext.html:16 +msgid "Virtual Device Context" +msgstr "Contexte du périphérique virtuel" + +#: dcim/forms/filtersets.py:1248 extras/forms/bulk_edit.py:315 +#: extras/forms/bulk_import.py:239 extras/forms/filtersets.py:479 +#: extras/forms/model_forms.py:548 extras/tables/tables.py:482 +#: templates/extras/journalentry.html:33 +msgid "Kind" +msgstr "Type" + +#: dcim/forms/filtersets.py:1277 +msgid "Mgmt only" +msgstr "Gestion uniquement" + +#: dcim/forms/filtersets.py:1289 dcim/forms/model_forms.py:1180 +#: dcim/models/device_components.py:630 templates/dcim/interface.html:134 +msgid "WWN" +msgstr "WWN" + +#: dcim/forms/filtersets.py:1309 +msgid "Wireless channel" +msgstr "Canal sans fil" + +#: dcim/forms/filtersets.py:1313 +msgid "Channel frequency (MHz)" +msgstr "Fréquence du canal (MHz)" + +#: dcim/forms/filtersets.py:1317 +msgid "Channel width (MHz)" +msgstr "Largeur du canal (MHz)" + +#: dcim/forms/filtersets.py:1321 templates/dcim/interface.html:86 +msgid "Transmit power (dBm)" +msgstr "Puissance de transmission (dBm)" + +#: dcim/forms/filtersets.py:1344 dcim/forms/filtersets.py:1366 +#: dcim/tables/devices.py:344 templates/dcim/cable.html:12 +#: templates/dcim/cable_edit.html:46 templates/dcim/cable_trace.html:43 +#: templates/dcim/frontport.html:84 +#: templates/dcim/inc/connection_endpoints.html:4 +#: templates/dcim/rearport.html:80 templates/dcim/trace/cable.html:7 +msgid "Cable" +msgstr "câble" + +#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:951 +msgid "Discovered" +msgstr "Découvert" + +#: dcim/forms/formsets.py:20 +#, python-brace-format +msgid "A virtual chassis member already exists in position {vc_position}." +msgstr "Un élément de châssis virtuel existe déjà en place {vc_position}." + +#: dcim/forms/model_forms.py:101 dcim/tables/devices.py:183 +#: templates/dcim/sitegroup.html:26 +msgid "Site Group" +msgstr "Groupe de sites" + +#: dcim/forms/model_forms.py:142 +msgid "Contact Info" +msgstr "Informations de contact" + +#: dcim/forms/model_forms.py:197 templates/dcim/rackrole.html:20 +msgid "Rack Role" +msgstr "Role Rack" + +#: dcim/forms/model_forms.py:248 +msgid "" +"Comma-separated list of numeric unit IDs. A range may be specified using a " +"hyphen." +msgstr "" +"Liste d'identifiants d'unités numériques séparés par des virgules. Une plage" +" peut être spécifiée à l'aide d'un trait d'union." + +#: dcim/forms/model_forms.py:259 dcim/tables/racks.py:133 +msgid "Reservation" +msgstr "Réservation" + +#: dcim/forms/model_forms.py:297 dcim/forms/model_forms.py:380 +#: utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "limace" + +#: dcim/forms/model_forms.py:304 templates/dcim/devicetype.html:12 +msgid "Chassis" +msgstr "Châssis" + +#: dcim/forms/model_forms.py:356 templates/dcim/devicerole.html:24 +msgid "Device Role" +msgstr "Rôle de l'appareil" + +#: dcim/forms/model_forms.py:424 dcim/models/devices.py:632 +msgid "The lowest-numbered unit occupied by the device" +msgstr "L'unité la moins numérotée occupée par l'appareil" + +#: dcim/forms/model_forms.py:469 +msgid "The position in the virtual chassis this device is identified by" +msgstr "" +"La position dans le châssis virtuel par laquelle cet appareil est identifié" + +#: dcim/forms/model_forms.py:473 templates/dcim/device.html:131 +#: templates/dcim/virtualchassis.html:61 +#: templates/dcim/virtualchassis_edit.html:57 +#: templates/ipam/inc/panels/fhrp_groups.html:13 +#: tenancy/forms/bulk_edit.py:146 tenancy/forms/filtersets.py:109 +msgid "Priority" +msgstr "Priorité" + +#: dcim/forms/model_forms.py:474 +msgid "The priority of the device in the virtual chassis" +msgstr "La priorité de l'appareil dans le châssis virtuel" + +#: dcim/forms/model_forms.py:578 +msgid "Automatically populate components associated with this module type" +msgstr "Remplir automatiquement les composants associés à ce type de module" + +#: dcim/forms/model_forms.py:623 +msgid "Maximum length is 32767 (any unit)" +msgstr "La longueur maximale est de 32 767 (n'importe quelle unité)" + +#: dcim/forms/model_forms.py:671 +msgid "Characteristics" +msgstr "Caractéristiques" + +#: dcim/forms/model_forms.py:1130 +msgid "LAG interface" +msgstr "Interface LAG" + +#: dcim/forms/model_forms.py:1184 dcim/forms/model_forms.py:1345 +#: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 +#: ipam/forms/model_forms.py:270 ipam/forms/model_forms.py:279 +#: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 +#: templates/circuits/inc/circuit_termination.html:78 +#: templates/dcim/frontport.html:113 templates/dcim/interface.html:27 +#: templates/dcim/interface.html:190 templates/dcim/interface.html:322 +#: templates/dcim/inventoryitem_edit.html:54 templates/dcim/rearport.html:109 +#: templates/ipam/fhrpgroupassignment_edit.html:11 +#: templates/virtualization/vminterface.html:19 +#: templates/vpn/tunneltermination.html:32 +#: templates/wireless/inc/wirelesslink_interface.html:10 +#: templates/wireless/wirelesslink.html:10 +#: templates/wireless/wirelesslink.html:49 +#: virtualization/forms/model_forms.py:351 vpn/forms/bulk_import.py:292 +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/forms/model_forms.py:430 +#: vpn/forms/model_forms.py:439 vpn/tables/tunnels.py:87 +#: wireless/forms/model_forms.py:112 wireless/forms/model_forms.py:152 +msgid "Interface" +msgstr "Interface" + +#: dcim/forms/model_forms.py:1278 +msgid "Child Device" +msgstr "Appareil pour enfants" + +#: dcim/forms/model_forms.py:1279 +msgid "" +"Child devices must first be created and assigned to the site and rack of the" +" parent device." +msgstr "" +"Les appareils enfants doivent d'abord être créés et affectés au site et au " +"rack de l'appareil parent." + +#: dcim/forms/model_forms.py:1321 +msgid "Console port" +msgstr "Port de console" + +#: dcim/forms/model_forms.py:1329 +msgid "Console server port" +msgstr "Port du serveur de console" + +#: dcim/forms/model_forms.py:1337 +msgid "Front port" +msgstr "Port avant" + +#: dcim/forms/model_forms.py:1353 +msgid "Power outlet" +msgstr "prise de courant" + +#: dcim/forms/model_forms.py:1373 templates/dcim/inventoryitem.html:17 +#: templates/dcim/inventoryitem_edit.html:10 +msgid "Inventory Item" +msgstr "Article d'inventaire" + +#: dcim/forms/model_forms.py:1425 +msgid "An InventoryItem can only be assigned to a single component." +msgstr "Un article d'inventaire ne peut être attribué qu'à un seul composant." + +#: dcim/forms/model_forms.py:1439 templates/dcim/inventoryitemrole.html:15 +msgid "Inventory Item Role" +msgstr "Rôle de l'article d'inventaire" + +#: dcim/forms/model_forms.py:1459 templates/dcim/device.html:195 +#: templates/dcim/virtualdevicecontext.html:33 +#: templates/virtualization/virtualmachine.html:51 +msgid "Primary IPv4" +msgstr "IPv4 principal" + +#: dcim/forms/model_forms.py:1468 templates/dcim/device.html:211 +#: templates/dcim/virtualdevicecontext.html:44 +#: templates/virtualization/virtualmachine.html:67 +msgid "Primary IPv6" +msgstr "IPv6 principal" + +#: dcim/forms/object_create.py:47 dcim/forms/object_create.py:198 +#: dcim/forms/object_create.py:354 +msgid "" +"Alphanumeric ranges are supported. (Must match the number of objects being " +"created.)" +msgstr "" +"Les plages alphanumériques sont prises en charge. (Doit correspondre au " +"nombre d'objets en cours de création.)" + +#: dcim/forms/object_create.py:67 +#, python-brace-format +msgid "" +"The provided pattern specifies {value_count} values, but {pattern_count} are" +" expected." +msgstr "" +"Le modèle fourni spécifie {value_count} des valeurs, mais {pattern_count} " +"sont attendus." + +#: dcim/forms/object_create.py:109 dcim/forms/object_create.py:270 +#: dcim/tables/devices.py:281 +msgid "Rear ports" +msgstr "Ports arrière" + +#: dcim/forms/object_create.py:110 dcim/forms/object_create.py:271 +msgid "Select one rear port assignment for each front port being created." +msgstr "" +"Sélectionnez une attribution de port arrière pour chaque port avant en cours" +" de création." + +#: dcim/forms/object_create.py:163 +#, python-brace-format +msgid "" +"The number of front port templates to be created ({frontport_count}) must " +"match the selected number of rear port positions ({rearport_count})." +msgstr "" +"Le nombre de modèles de port frontal à créer ({frontport_count}) doit " +"correspondre au nombre sélectionné de positions des ports arrière " +"({rearport_count})." + +#: dcim/forms/object_create.py:250 +#, python-brace-format +msgid "" +"The string {module} will be replaced with the position of the " +"assigned module, if any." +msgstr "" +"La ficelle {module} sera remplacé par la position du module " +"attribué, le cas échéant." + +#: dcim/forms/object_create.py:319 +#, python-brace-format +msgid "" +"The number of front ports to be created ({frontport_count}) must match the " +"selected number of rear port positions ({rearport_count})." +msgstr "" +"Le nombre de ports frontaux à créer ({frontport_count}) doit correspondre au" +" nombre sélectionné de positions des ports arrière ({rearport_count})." + +#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1034 +#: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:54 +#: templates/dcim/virtualchassis_edit.html:48 templates/ipam/fhrpgroup.html:39 +msgid "Members" +msgstr "Membres" + +#: dcim/forms/object_create.py:417 +msgid "Initial position" +msgstr "Position initiale" + +#: dcim/forms/object_create.py:420 +msgid "" +"Position of the first member device. Increases by one for each additional " +"member." +msgstr "" +"Position du premier dispositif membre. Augmente d'une unité pour chaque " +"membre supplémentaire." + +#: dcim/forms/object_create.py:434 +msgid "A position must be specified for the first VC member." +msgstr "Une position doit être spécifiée pour le premier membre du VC." + +#: dcim/models/cables.py:62 dcim/models/device_component_templates.py:55 +#: dcim/models/device_components.py:63 extras/models/customfields.py:108 +msgid "label" +msgstr "étiquette" + +#: dcim/models/cables.py:71 +msgid "length" +msgstr "longueur" + +#: dcim/models/cables.py:78 +msgid "length unit" +msgstr "unité de longueur" + +#: dcim/models/cables.py:93 +msgid "cable" +msgstr "câble" + +#: dcim/models/cables.py:94 +msgid "cables" +msgstr "câbles" + +#: dcim/models/cables.py:190 +msgid "A and B terminations cannot connect to the same object." +msgstr "Les terminaisons A et B ne peuvent pas se connecter au même objet." + +#: dcim/models/cables.py:257 ipam/models/asns.py:37 +msgid "end" +msgstr "fin" + +#: dcim/models/cables.py:310 +msgid "cable termination" +msgstr "terminaison de câble" + +#: dcim/models/cables.py:311 +msgid "cable terminations" +msgstr "terminaisons de câble" + +#: dcim/models/cables.py:434 extras/models/configs.py:50 +msgid "is active" +msgstr "est actif" + +#: dcim/models/cables.py:438 +msgid "is complete" +msgstr "est terminé" + +#: dcim/models/cables.py:442 +msgid "is split" +msgstr "est divisé" + +#: dcim/models/cables.py:450 +msgid "cable path" +msgstr "chemin de câble" + +#: dcim/models/cables.py:451 +msgid "cable paths" +msgstr "chemins de câbles" + +#: dcim/models/device_component_templates.py:46 +#, python-brace-format +msgid "" +"{module} is accepted as a substitution for the module bay position when " +"attached to a module type." +msgstr "" +"{module} est accepté en remplacement de la position de la baie du module " +"lorsqu'il est fixé à un type de module." + +#: dcim/models/device_component_templates.py:58 +#: dcim/models/device_components.py:66 +msgid "Physical label" +msgstr "Etiquette physique" + +#: dcim/models/device_component_templates.py:103 +msgid "Component templates cannot be moved to a different device type." +msgstr "" +"Les modèles de composants ne peuvent pas être déplacés vers un autre type " +"d'appareil." + +#: dcim/models/device_component_templates.py:154 +msgid "" +"A component template cannot be associated with both a device type and a " +"module type." +msgstr "" +"Un modèle de composant ne peut pas être associé à la fois à un type " +"d'appareil et à un type de module." + +#: dcim/models/device_component_templates.py:158 +msgid "" +"A component template must be associated with either a device type or a " +"module type." +msgstr "" +"Un modèle de composant doit être associé à un type d'appareil ou à un type " +"de module." + +#: dcim/models/device_component_templates.py:186 +msgid "console port template" +msgstr "modèle de port de console" + +#: dcim/models/device_component_templates.py:187 +msgid "console port templates" +msgstr "modèles de ports de console" + +#: dcim/models/device_component_templates.py:220 +msgid "console server port template" +msgstr "modèle de port de serveur de console" + +#: dcim/models/device_component_templates.py:221 +msgid "console server port templates" +msgstr "modèles de ports de serveur de console" + +#: dcim/models/device_component_templates.py:252 +#: dcim/models/device_components.py:353 +msgid "maximum draw" +msgstr "tirage maximum" + +#: dcim/models/device_component_templates.py:259 +#: dcim/models/device_components.py:360 +msgid "allocated draw" +msgstr "tirage au sort alloué" + +#: dcim/models/device_component_templates.py:269 +msgid "power port template" +msgstr "modèle de port d'alimentation" + +#: dcim/models/device_component_templates.py:270 +msgid "power port templates" +msgstr "modèles de ports d'alimentation" + +#: dcim/models/device_component_templates.py:289 +#: dcim/models/device_components.py:383 +#, python-brace-format +msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." +msgstr "" +"Le tirage alloué ne peut pas dépasser le tirage maximum ({maximum_draw}W)." + +#: dcim/models/device_component_templates.py:321 +#: dcim/models/device_components.py:478 +msgid "feed leg" +msgstr "patte d'alimentation" + +#: dcim/models/device_component_templates.py:325 +#: dcim/models/device_components.py:482 +msgid "Phase (for three-phase feeds)" +msgstr "Phase (pour les alimentations triphasées)" + +#: dcim/models/device_component_templates.py:331 +msgid "power outlet template" +msgstr "modèle de prise de courant" + +#: dcim/models/device_component_templates.py:332 +msgid "power outlet templates" +msgstr "modèles de prises de courant" + +#: dcim/models/device_component_templates.py:341 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same device type" +msgstr "" +"Port d'alimentation parent ({power_port}) doit appartenir au même type " +"d'appareil" + +#: dcim/models/device_component_templates.py:345 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same module type" +msgstr "" +"Port d'alimentation parent ({power_port}) doit appartenir au même type de " +"module" + +#: dcim/models/device_component_templates.py:397 +#: dcim/models/device_components.py:612 +msgid "management only" +msgstr "gestion uniquement" + +#: dcim/models/device_component_templates.py:405 +#: dcim/models/device_components.py:551 +msgid "bridge interface" +msgstr "interface de pont" + +#: dcim/models/device_component_templates.py:423 +#: dcim/models/device_components.py:637 +msgid "wireless role" +msgstr "rôle sans fil" + +#: dcim/models/device_component_templates.py:429 +msgid "interface template" +msgstr "modèle d'interface" + +#: dcim/models/device_component_templates.py:430 +msgid "interface templates" +msgstr "modèles d'interface" + +#: dcim/models/device_component_templates.py:437 +#: dcim/models/device_components.py:805 +#: virtualization/models/virtualmachines.py:398 +msgid "An interface cannot be bridged to itself." +msgstr "Une interface ne peut pas être reliée à elle-même." + +#: dcim/models/device_component_templates.py:440 +#, python-brace-format +msgid "Bridge interface ({bridge}) must belong to the same device type" +msgstr "Interface de pont ({bridge}) doit appartenir au même type d'appareil" + +#: dcim/models/device_component_templates.py:444 +#, python-brace-format +msgid "Bridge interface ({bridge}) must belong to the same module type" +msgstr "Interface de pont ({bridge}) doit appartenir au même type de module" + +#: dcim/models/device_component_templates.py:500 +#: dcim/models/device_components.py:985 +msgid "rear port position" +msgstr "position du port arrière" + +#: dcim/models/device_component_templates.py:525 +msgid "front port template" +msgstr "modèle de port avant" + +#: dcim/models/device_component_templates.py:526 +msgid "front port templates" +msgstr "modèles de port avant" + +#: dcim/models/device_component_templates.py:536 +#, python-brace-format +msgid "Rear port ({name}) must belong to the same device type" +msgstr "Port arrière ({name}) doit appartenir au même type d'appareil" + +#: dcim/models/device_component_templates.py:542 +#, python-brace-format +msgid "" +"Invalid rear port position ({position}); rear port {name} has only {count} " +"positions" +msgstr "" +"Position du port arrière non valide ({position}) ; port arrière {name} n'a " +"que {count} positions" + +#: dcim/models/device_component_templates.py:595 +#: dcim/models/device_components.py:1054 +msgid "positions" +msgstr "positions" + +#: dcim/models/device_component_templates.py:606 +msgid "rear port template" +msgstr "modèle de port arrière" + +#: dcim/models/device_component_templates.py:607 +msgid "rear port templates" +msgstr "modèles de port arrière" + +#: dcim/models/device_component_templates.py:636 +#: dcim/models/device_components.py:1095 +msgid "position" +msgstr "position" + +#: dcim/models/device_component_templates.py:639 +#: dcim/models/device_components.py:1098 +msgid "Identifier to reference when renaming installed components" +msgstr "" +"Identifiant à référencer lors du changement de nom des composants installés" + +#: dcim/models/device_component_templates.py:645 +msgid "module bay template" +msgstr "modèle de baie modulaire" + +#: dcim/models/device_component_templates.py:646 +msgid "module bay templates" +msgstr "modèles de baies de modules" + +#: dcim/models/device_component_templates.py:673 +msgid "device bay template" +msgstr "modèle de baie pour appareils" + +#: dcim/models/device_component_templates.py:674 +msgid "device bay templates" +msgstr "modèles de baies d'appareils" + +#: dcim/models/device_component_templates.py:687 +#, python-brace-format +msgid "" +"Subdevice role of device type ({device_type}) must be set to \"parent\" to " +"allow device bays." +msgstr "" +"Rôle du sous-appareil du type d'appareil ({device_type}) doit être défini " +"sur « parent » pour autoriser les baies de périphériques." + +#: dcim/models/device_component_templates.py:742 +#: dcim/models/device_components.py:1224 +msgid "part ID" +msgstr "ID de pièce" + +#: dcim/models/device_component_templates.py:744 +#: dcim/models/device_components.py:1226 +msgid "Manufacturer-assigned part identifier" +msgstr "Identifiant de pièce attribué par le fabricant" + +#: dcim/models/device_component_templates.py:761 +msgid "inventory item template" +msgstr "modèle d'article d'inventaire" + +#: dcim/models/device_component_templates.py:762 +msgid "inventory item templates" +msgstr "modèles d'articles d'inventaire" + +#: dcim/models/device_components.py:106 +msgid "Components cannot be moved to a different device." +msgstr "Les composants ne peuvent pas être déplacés vers un autre appareil." + +#: dcim/models/device_components.py:145 +msgid "cable end" +msgstr "extrémité du câble" + +#: dcim/models/device_components.py:151 +msgid "mark connected" +msgstr "marque connectée" + +#: dcim/models/device_components.py:153 +msgid "Treat as if a cable is connected" +msgstr "Traitez comme si un câble était connecté" + +#: dcim/models/device_components.py:171 +msgid "Must specify cable end (A or B) when attaching a cable." +msgstr "" +"Doit spécifier l'extrémité du câble (A ou B) lors de la fixation d'un câble." + +#: dcim/models/device_components.py:175 +msgid "Cable end must not be set without a cable." +msgstr "L'extrémité du câble ne doit pas être réglée sans câble." + +#: dcim/models/device_components.py:179 +msgid "Cannot mark as connected with a cable attached." +msgstr "Impossible de marquer comme connecté avec un câble branché." + +#: dcim/models/device_components.py:203 +#, python-brace-format +msgid "{class_name} models must declare a parent_object property" +msgstr "{class_name} les modèles doivent déclarer une propriété parent_object" + +#: dcim/models/device_components.py:288 dcim/models/device_components.py:317 +#: dcim/models/device_components.py:350 dcim/models/device_components.py:468 +msgid "Physical port type" +msgstr "Type de port physique" + +#: dcim/models/device_components.py:291 dcim/models/device_components.py:320 +msgid "speed" +msgstr "vitesse" + +#: dcim/models/device_components.py:295 dcim/models/device_components.py:324 +msgid "Port speed in bits per second" +msgstr "Vitesse du port en bits par seconde" + +#: dcim/models/device_components.py:301 +msgid "console port" +msgstr "port de console" + +#: dcim/models/device_components.py:302 +msgid "console ports" +msgstr "ports de console" + +#: dcim/models/device_components.py:330 +msgid "console server port" +msgstr "port du serveur de console" + +#: dcim/models/device_components.py:331 +msgid "console server ports" +msgstr "ports du serveur de console" + +#: dcim/models/device_components.py:370 +msgid "power port" +msgstr "port d'alimentation" + +#: dcim/models/device_components.py:371 +msgid "power ports" +msgstr "ports d'alimentation" + +#: dcim/models/device_components.py:488 +msgid "power outlet" +msgstr "prise de courant" + +#: dcim/models/device_components.py:489 +msgid "power outlets" +msgstr "prises de courant" + +#: dcim/models/device_components.py:500 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same device" +msgstr "" +"Port d'alimentation parent ({power_port}) doit appartenir au même appareil" + +#: dcim/models/device_components.py:531 vpn/models/crypto.py:81 +#: vpn/models/crypto.py:214 +msgid "mode" +msgstr "mode" + +#: dcim/models/device_components.py:535 +msgid "IEEE 802.1Q tagging strategy" +msgstr "Stratégie de marquage IEEE 802.1Q" + +#: dcim/models/device_components.py:543 +msgid "parent interface" +msgstr "interface parente" + +#: dcim/models/device_components.py:603 +msgid "parent LAG" +msgstr "GAL parent" + +#: dcim/models/device_components.py:613 +msgid "This interface is used only for out-of-band management" +msgstr "Cette interface est utilisée uniquement pour la gestion hors bande" + +#: dcim/models/device_components.py:618 +msgid "speed (Kbps)" +msgstr "vitesse (Kbps)" + +#: dcim/models/device_components.py:621 +msgid "duplex" +msgstr "duplex" + +#: dcim/models/device_components.py:631 +msgid "64-bit World Wide Name" +msgstr "Nom mondial 64 bits" + +#: dcim/models/device_components.py:643 +msgid "wireless channel" +msgstr "canal sans fil" + +#: dcim/models/device_components.py:650 +msgid "channel frequency (MHz)" +msgstr "fréquence du canal (MHz)" + +#: dcim/models/device_components.py:651 dcim/models/device_components.py:659 +msgid "Populated by selected channel (if set)" +msgstr "Rempli par la chaîne sélectionnée (si définie)" + +#: dcim/models/device_components.py:665 +msgid "transmit power (dBm)" +msgstr "puissance de transmission (dBm)" + +#: dcim/models/device_components.py:690 wireless/models.py:116 +msgid "wireless LANs" +msgstr "réseaux locaux sans fil" + +#: dcim/models/device_components.py:698 +#: virtualization/models/virtualmachines.py:328 +msgid "untagged VLAN" +msgstr "VLAN non balisé" + +#: dcim/models/device_components.py:704 +#: virtualization/models/virtualmachines.py:334 +msgid "tagged VLANs" +msgstr "VLAN étiquetés" + +#: dcim/models/device_components.py:746 +#: virtualization/models/virtualmachines.py:370 +msgid "interface" +msgstr "interface" + +#: dcim/models/device_components.py:747 +#: virtualization/models/virtualmachines.py:371 +msgid "interfaces" +msgstr "interfaces" + +#: dcim/models/device_components.py:758 +#, python-brace-format +msgid "{display_type} interfaces cannot have a cable attached." +msgstr "" +"{display_type} les interfaces ne peuvent pas être connectées à un câble." + +#: dcim/models/device_components.py:766 +#, python-brace-format +msgid "{display_type} interfaces cannot be marked as connected." +msgstr "" +"{display_type} les interfaces ne peuvent pas être marquées comme connectées." + +#: dcim/models/device_components.py:775 +#: virtualization/models/virtualmachines.py:383 +msgid "An interface cannot be its own parent." +msgstr "Une interface ne peut pas être son propre parent." + +#: dcim/models/device_components.py:779 +msgid "Only virtual interfaces may be assigned to a parent interface." +msgstr "" +"Seules les interfaces virtuelles peuvent être attribuées à une interface " +"parent." + +#: dcim/models/device_components.py:786 +#, python-brace-format +msgid "" +"The selected parent interface ({interface}) belongs to a different device " +"({device})" +msgstr "" +"L'interface parent sélectionnée ({interface}) appartient à un autre appareil" +" ({device})" + +#: dcim/models/device_components.py:792 +#, python-brace-format +msgid "" +"The selected parent interface ({interface}) belongs to {device}, which is " +"not part of virtual chassis {virtual_chassis}." +msgstr "" +"L'interface parent sélectionnée ({interface}) appartient à {device}, qui ne " +"fait pas partie du châssis virtuel {virtual_chassis}." + +#: dcim/models/device_components.py:812 +#, python-brace-format +msgid "" +"The selected bridge interface ({bridge}) belongs to a different device " +"({device})." +msgstr "" +"L'interface de pont sélectionnée ({bridge}) appartient à un autre appareil " +"({device})." + +#: dcim/models/device_components.py:818 +#, python-brace-format +msgid "" +"The selected bridge interface ({interface}) belongs to {device}, which is " +"not part of virtual chassis {virtual_chassis}." +msgstr "" +"L'interface de pont sélectionnée ({interface}) appartient à {device}, qui ne" +" fait pas partie du châssis virtuel {virtual_chassis}." + +#: dcim/models/device_components.py:829 +msgid "Virtual interfaces cannot have a parent LAG interface." +msgstr "" +"Les interfaces virtuelles ne peuvent pas avoir d'interface LAG parente." + +#: dcim/models/device_components.py:833 +msgid "A LAG interface cannot be its own parent." +msgstr "Une interface LAG ne peut pas être son propre parent." + +#: dcim/models/device_components.py:840 +#, python-brace-format +msgid "" +"The selected LAG interface ({lag}) belongs to a different device ({device})." +msgstr "" +"L'interface LAG sélectionnée ({lag}) appartient à un autre appareil " +"({device})." + +#: dcim/models/device_components.py:846 +#, python-brace-format +msgid "" +"The selected LAG interface ({lag}) belongs to {device}, which is not part of" +" virtual chassis {virtual_chassis}." +msgstr "" +"L'interface LAG sélectionnée ({lag}) appartient à {device}, qui ne fait pas " +"partie du châssis virtuel {virtual_chassis}." + +#: dcim/models/device_components.py:857 +msgid "Virtual interfaces cannot have a PoE mode." +msgstr "Les interfaces virtuelles ne peuvent pas avoir de mode PoE." + +#: dcim/models/device_components.py:861 +msgid "Virtual interfaces cannot have a PoE type." +msgstr "Les interfaces virtuelles ne peuvent pas avoir de type PoE." + +#: dcim/models/device_components.py:867 +msgid "Must specify PoE mode when designating a PoE type." +msgstr "Doit spécifier le mode PoE lors de la désignation d'un type de PoE." + +#: dcim/models/device_components.py:874 +msgid "Wireless role may be set only on wireless interfaces." +msgstr "Le rôle sans fil ne peut être défini que sur les interfaces sans fil." + +#: dcim/models/device_components.py:876 +msgid "Channel may be set only on wireless interfaces." +msgstr "Le canal ne peut être défini que sur les interfaces sans fil." + +#: dcim/models/device_components.py:882 +msgid "Channel frequency may be set only on wireless interfaces." +msgstr "" +"La fréquence des canaux ne peut être réglée que sur les interfaces sans fil." + +#: dcim/models/device_components.py:886 +msgid "Cannot specify custom frequency with channel selected." +msgstr "" +"Impossible de spécifier une fréquence personnalisée avec le canal " +"sélectionné." + +#: dcim/models/device_components.py:892 +msgid "Channel width may be set only on wireless interfaces." +msgstr "" +"La largeur de canal ne peut être réglée que sur les interfaces sans fil." + +#: dcim/models/device_components.py:894 +msgid "Cannot specify custom width with channel selected." +msgstr "" +"Impossible de spécifier une largeur personnalisée avec le canal sélectionné." + +#: dcim/models/device_components.py:902 +#, python-brace-format +msgid "" +"The untagged VLAN ({untagged_vlan}) must belong to the same site as the " +"interface's parent device, or it must be global." +msgstr "" +"Le VLAN non balisé ({untagged_vlan}) doit appartenir au même site que " +"l'appareil parent de l'interface, ou il doit être global." + +#: dcim/models/device_components.py:991 +msgid "Mapped position on corresponding rear port" +msgstr "Position cartographiée sur le port arrière correspondant" + +#: dcim/models/device_components.py:1007 +msgid "front port" +msgstr "port avant" + +#: dcim/models/device_components.py:1008 +msgid "front ports" +msgstr "ports avant" + +#: dcim/models/device_components.py:1022 +#, python-brace-format +msgid "Rear port ({rear_port}) must belong to the same device" +msgstr "Port arrière ({rear_port}) doit appartenir au même appareil" + +#: dcim/models/device_components.py:1030 +#, python-brace-format +msgid "" +"Invalid rear port position ({rear_port_position}): Rear port {name} has only" +" {positions} positions." +msgstr "" +"Position du port arrière non valide ({rear_port_position}) : Port arrière " +"{name} n'a que {positions} positions." + +#: dcim/models/device_components.py:1060 +msgid "Number of front ports which may be mapped" +msgstr "Nombre de ports frontaux pouvant être mappés" + +#: dcim/models/device_components.py:1065 +msgid "rear port" +msgstr "port arrière" + +#: dcim/models/device_components.py:1066 +msgid "rear ports" +msgstr "ports arrière" + +#: dcim/models/device_components.py:1080 +#, python-brace-format +msgid "" +"The number of positions cannot be less than the number of mapped front ports" +" ({frontport_count})" +msgstr "" +"Le nombre de positions ne peut pas être inférieur au nombre de ports " +"frontaux mappés ({frontport_count})" + +#: dcim/models/device_components.py:1104 +msgid "module bay" +msgstr "baie modulaire" + +#: dcim/models/device_components.py:1105 +msgid "module bays" +msgstr "baies de modules" + +#: dcim/models/device_components.py:1118 +msgid "parent_bay" +msgstr "parent_bay" + +#: dcim/models/device_components.py:1126 +msgid "device bay" +msgstr "baie pour appareils" + +#: dcim/models/device_components.py:1127 +msgid "device bays" +msgstr "baies pour appareils" + +#: dcim/models/device_components.py:1137 +#, python-brace-format +msgid "This type of device ({device_type}) does not support device bays." +msgstr "" +"Ce type d'appareil ({device_type}) ne prend pas en charge les baies pour " +"appareils." + +#: dcim/models/device_components.py:1143 +msgid "Cannot install a device into itself." +msgstr "Impossible d'installer un appareil sur lui-même." + +#: dcim/models/device_components.py:1151 +#, python-brace-format +msgid "" +"Cannot install the specified device; device is already installed in {bay}." +msgstr "" +"Impossible d'installer le périphérique spécifié ; le périphérique est déjà " +"installé dans {bay}." + +#: dcim/models/device_components.py:1172 +msgid "inventory item role" +msgstr "rôle des articles d'inventaire" + +#: dcim/models/device_components.py:1173 +msgid "inventory item roles" +msgstr "rôles des articles d'inventaire" + +#: dcim/models/device_components.py:1230 dcim/models/devices.py:595 +#: dcim/models/devices.py:1173 dcim/models/racks.py:113 +msgid "serial number" +msgstr "numéro de série" + +#: dcim/models/device_components.py:1238 dcim/models/devices.py:603 +#: dcim/models/devices.py:1180 dcim/models/racks.py:120 +msgid "asset tag" +msgstr "étiquette d'actif" + +#: dcim/models/device_components.py:1239 +msgid "A unique tag used to identify this item" +msgstr "Une étiquette unique utilisée pour identifier cet article" + +#: dcim/models/device_components.py:1242 +msgid "discovered" +msgstr "découvert" + +#: dcim/models/device_components.py:1244 +msgid "This item was automatically discovered" +msgstr "Cet objet a été découvert automatiquement" + +#: dcim/models/device_components.py:1262 +msgid "inventory item" +msgstr "article d'inventaire" + +#: dcim/models/device_components.py:1263 +msgid "inventory items" +msgstr "articles d'inventaire" + +#: dcim/models/device_components.py:1274 +msgid "Cannot assign self as parent." +msgstr "Impossible de s'attribuer le statut de parent." + +#: dcim/models/device_components.py:1282 +msgid "Parent inventory item does not belong to the same device." +msgstr "L'article d'inventaire parent n'appartient pas au même appareil." + +#: dcim/models/device_components.py:1288 +msgid "Cannot move an inventory item with dependent children" +msgstr "Impossible de déplacer un article en stock avec des enfants à charge" + +#: dcim/models/device_components.py:1296 +msgid "Cannot assign inventory item to component on another device" +msgstr "" +"Impossible d'attribuer un article d'inventaire à un composant sur un autre " +"appareil" + +#: dcim/models/devices.py:54 +msgid "manufacturer" +msgstr "fabricant" + +#: dcim/models/devices.py:55 +msgid "manufacturers" +msgstr "fabricants" + +#: dcim/models/devices.py:82 dcim/models/devices.py:381 +msgid "model" +msgstr "modèle" + +#: dcim/models/devices.py:95 +msgid "default platform" +msgstr "plateforme par défaut" + +#: dcim/models/devices.py:98 dcim/models/devices.py:385 +msgid "part number" +msgstr "numéro de pièce" + +#: dcim/models/devices.py:101 dcim/models/devices.py:388 +msgid "Discrete part number (optional)" +msgstr "Numéro de pièce discret (facultatif)" + +#: dcim/models/devices.py:107 dcim/models/racks.py:137 +msgid "height (U)" +msgstr "hauteur (U)" + +#: dcim/models/devices.py:111 +msgid "exclude from utilization" +msgstr "exclure de l'utilisation" + +#: dcim/models/devices.py:112 +msgid "Devices of this type are excluded when calculating rack utilization." +msgstr "" +"Les appareils de ce type sont exclus du calcul de l'utilisation des racks." + +#: dcim/models/devices.py:116 +msgid "is full depth" +msgstr "est en pleine profondeur" + +#: dcim/models/devices.py:117 +msgid "Device consumes both front and rear rack faces." +msgstr "L'appareil consomme à la fois les faces avant et arrière du châssis." + +#: dcim/models/devices.py:123 +msgid "parent/child status" +msgstr "statut parent/enfant" + +#: dcim/models/devices.py:124 +msgid "" +"Parent devices house child devices in device bays. Leave blank if this " +"device type is neither a parent nor a child." +msgstr "" +"Les appareils parents hébergent les appareils des enfants dans des baies " +"pour appareils. Laissez ce champ vide si ce type d'appareil n'est ni un " +"parent ni un enfant." + +#: dcim/models/devices.py:128 dcim/models/devices.py:647 +msgid "airflow" +msgstr "débit d'air" + +#: dcim/models/devices.py:204 +msgid "device type" +msgstr "type d'appareil" + +#: dcim/models/devices.py:205 +msgid "device types" +msgstr "types d'appareils" + +#: dcim/models/devices.py:289 +msgid "U height must be in increments of 0.5 rack units." +msgstr "" +"La hauteur en U doit être exprimée par incréments de 0,5 unité de rack." + +#: dcim/models/devices.py:306 +#, python-brace-format +msgid "" +"Device {device} in rack {rack} does not have sufficient space to accommodate" +" a height of {height}U" +msgstr "" +"Appareil {device} en rack {rack} ne dispose pas de suffisamment d'espace " +"pour accueillir une hauteur de {height}U" + +#: dcim/models/devices.py:321 +#, python-brace-format +msgid "" +"Unable to set 0U height: Found {racked_instance_count} " +"instances already mounted within racks." +msgstr "" +"Impossible de définir la hauteur 0U : trouvé {racked_instance_count} les instances déjà monté dans des" +" racks." + +#: dcim/models/devices.py:330 +msgid "" +"Must delete all device bay templates associated with this device before " +"declassifying it as a parent device." +msgstr "" +"Vous devez supprimer tous les modèles de baies d'appareils associés à cet " +"appareil avant de le déclassifier en tant qu'appareil parent." + +#: dcim/models/devices.py:336 +msgid "Child device types must be 0U." +msgstr "Les types d'appareils pour enfants doivent être 0U." + +#: dcim/models/devices.py:404 +msgid "module type" +msgstr "type de module" + +#: dcim/models/devices.py:405 +msgid "module types" +msgstr "types de modules" + +#: dcim/models/devices.py:473 +msgid "Virtual machines may be assigned to this role" +msgstr "Des machines virtuelles peuvent être affectées à ce rôle" + +#: dcim/models/devices.py:485 +msgid "device role" +msgstr "rôle de l'appareil" + +#: dcim/models/devices.py:486 +msgid "device roles" +msgstr "rôles des appareils" + +#: dcim/models/devices.py:503 +msgid "Optionally limit this platform to devices of a certain manufacturer" +msgstr "" +"Limitez éventuellement cette plate-forme aux appareils d'un certain " +"fabricant" + +#: dcim/models/devices.py:515 +msgid "platform" +msgstr "plateforme" + +#: dcim/models/devices.py:516 +msgid "platforms" +msgstr "plateformes" + +#: dcim/models/devices.py:564 +msgid "The function this device serves" +msgstr "La fonction de cet appareil" + +#: dcim/models/devices.py:596 +msgid "Chassis serial number, assigned by the manufacturer" +msgstr "Numéro de série du châssis, attribué par le fabricant" + +#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +msgid "A unique tag used to identify this device" +msgstr "Un tag unique utilisé pour identifier cet appareil" + +#: dcim/models/devices.py:631 +msgid "position (U)" +msgstr "position (U)" + +#: dcim/models/devices.py:638 +msgid "rack face" +msgstr "face du rack" + +#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: virtualization/models/virtualmachines.py:98 +msgid "primary IPv4" +msgstr "IPv4 principal" + +#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: virtualization/models/virtualmachines.py:106 +msgid "primary IPv6" +msgstr "IPv6 principal" + +#: dcim/models/devices.py:674 +msgid "out-of-band IP" +msgstr "IP hors bande" + +#: dcim/models/devices.py:691 +msgid "VC position" +msgstr "Position en VC" + +#: dcim/models/devices.py:695 +msgid "Virtual chassis position" +msgstr "Position virtuelle du châssis" + +#: dcim/models/devices.py:698 +msgid "VC priority" +msgstr "Priorité VC" + +#: dcim/models/devices.py:702 +msgid "Virtual chassis master election priority" +msgstr "Priorité d'élection principale du châssis virtuel" + +#: dcim/models/devices.py:705 dcim/models/sites.py:207 +msgid "latitude" +msgstr "latitude" + +#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/sites.py:212 dcim/models/sites.py:220 +msgid "GPS coordinate in decimal format (xx.yyyyyy)" +msgstr "Coordonnées GPS au format décimal (xx.yyyyyy)" + +#: dcim/models/devices.py:713 dcim/models/sites.py:215 +msgid "longitude" +msgstr "longitude" + +#: dcim/models/devices.py:786 +msgid "Device name must be unique per site." +msgstr "Le nom de l'appareil doit être unique par site." + +#: dcim/models/devices.py:797 ipam/models/services.py:75 +msgid "device" +msgstr "appareil" + +#: dcim/models/devices.py:798 +msgid "devices" +msgstr "appareils" + +#: dcim/models/devices.py:838 +#, python-brace-format +msgid "Rack {rack} does not belong to site {site}." +msgstr "Étagère {rack} n'appartient pas au site {site}." + +#: dcim/models/devices.py:843 +#, python-brace-format +msgid "Location {location} does not belong to site {site}." +msgstr "Emplacement {location} n'appartient pas au site {site}." + +#: dcim/models/devices.py:849 +#, python-brace-format +msgid "Rack {rack} does not belong to location {location}." +msgstr "Étagère {rack} n'appartient pas au lieu {location}." + +#: dcim/models/devices.py:856 +msgid "Cannot select a rack face without assigning a rack." +msgstr "Impossible de sélectionner une face de rack sans attribuer un rack." + +#: dcim/models/devices.py:860 +msgid "Cannot select a rack position without assigning a rack." +msgstr "" +"Impossible de sélectionner une position de rack sans attribuer un rack." + +#: dcim/models/devices.py:866 +msgid "Position must be in increments of 0.5 rack units." +msgstr "La position doit être exprimée par incréments de 0,5 unité de rack." + +#: dcim/models/devices.py:870 +msgid "Must specify rack face when defining rack position." +msgstr "" +"Doit spécifier la face du rack lors de la définition de la position du rack." + +#: dcim/models/devices.py:878 +#, python-brace-format +msgid "" +"A U0 device type ({device_type}) cannot be assigned to a rack position." +msgstr "" +"Un type d'appareil U0 ({device_type}) ne peut pas être affecté à une " +"position de rack." + +#: dcim/models/devices.py:889 +msgid "" +"Child device types cannot be assigned to a rack face. This is an attribute " +"of the parent device." +msgstr "" +"Les types d'appareils pour enfants ne peuvent pas être attribués à une face " +"de rack. Il s'agit d'un attribut de l'appareil parent." + +#: dcim/models/devices.py:896 +msgid "" +"Child device types cannot be assigned to a rack position. This is an " +"attribute of the parent device." +msgstr "" +"Les types d'appareils pour enfants ne peuvent pas être affectés à une " +"position en rack. Il s'agit d'un attribut de l'appareil parent." + +#: dcim/models/devices.py:910 +#, python-brace-format +msgid "" +"U{position} is already occupied or does not have sufficient space to " +"accommodate this device type: {device_type} ({u_height}U)" +msgstr "" +"U{position} est déjà occupé ou ne dispose pas de suffisamment d'espace pour " +"accueillir ce type d'appareil : {device_type} ({u_height}U)" + +#: dcim/models/devices.py:925 +#, python-brace-format +msgid "{ip} is not an IPv4 address." +msgstr "{ip} n'est pas une adresse IPv4." + +#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#, python-brace-format +msgid "The specified IP address ({ip}) is not assigned to this device." +msgstr "L'adresse IP spécifiée ({ip}) n'est pas attribué à cet appareil." + +#: dcim/models/devices.py:940 +#, python-brace-format +msgid "{ip} is not an IPv6 address." +msgstr "{ip} n'est pas une adresse IPv6." + +#: dcim/models/devices.py:967 +#, python-brace-format +msgid "" +"The assigned platform is limited to {platform_manufacturer} device types, " +"but this device's type belongs to {devicetype_manufacturer}." +msgstr "" +"La plateforme attribuée est limitée à {platform_manufacturer} types " +"d'appareils, mais le type de cet appareil appartient à " +"{devicetype_manufacturer}." + +#: dcim/models/devices.py:978 +#, python-brace-format +msgid "The assigned cluster belongs to a different site ({site})" +msgstr "Le cluster attribué appartient à un autre site ({site})" + +#: dcim/models/devices.py:986 +msgid "A device assigned to a virtual chassis must have its position defined." +msgstr "" +"La position d'un appareil affecté à un châssis virtuel doit être définie." + +#: dcim/models/devices.py:1188 +msgid "module" +msgstr "module" + +#: dcim/models/devices.py:1189 +msgid "modules" +msgstr "modules" + +#: dcim/models/devices.py:1205 +#, python-brace-format +msgid "" +"Module must be installed within a module bay belonging to the assigned " +"device ({device})." +msgstr "" +"Le module doit être installé dans une baie de modules appartenant au " +"périphérique attribué ({device})." + +#: dcim/models/devices.py:1309 +msgid "domain" +msgstr "domaine" + +#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +msgid "virtual chassis" +msgstr "châssis virtuel" + +#: dcim/models/devices.py:1338 +#, python-brace-format +msgid "" +"The selected master ({master}) is not assigned to this virtual chassis." +msgstr "" +"Le master sélectionné ({master}) n'est pas attribué à ce châssis virtuel." + +#: dcim/models/devices.py:1354 +#, python-brace-format +msgid "" +"Unable to delete virtual chassis {self}. There are member interfaces which " +"form a cross-chassis LAG interfaces." +msgstr "" +"Impossible de supprimer le châssis virtuel {self}. Il existe des interfaces " +"membres qui forment des interfaces LAG inter-châssis." + +#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +msgid "identifier" +msgstr "identificateur" + +#: dcim/models/devices.py:1380 +msgid "Numeric identifier unique to the parent device" +msgstr "Identifiant numérique propre à l'appareil parent" + +#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: extras/models/models.py:724 netbox/models/__init__.py:114 +msgid "comments" +msgstr "commentaires" + +#: dcim/models/devices.py:1424 +msgid "virtual device context" +msgstr "contexte du périphérique virtuel" + +#: dcim/models/devices.py:1425 +msgid "virtual device contexts" +msgstr "contextes de périphériques virtuels" + +#: dcim/models/devices.py:1457 +#, python-brace-format +msgid "{ip} is not an IPv{family} address." +msgstr "{ip} n'est pas un IPV{family} adresse." + +#: dcim/models/devices.py:1463 +msgid "Primary IP address must belong to an interface on the assigned device." +msgstr "" +"L'adresse IP principale doit appartenir à une interface sur l'appareil " +"attribué." + +#: dcim/models/mixins.py:15 extras/models/configs.py:41 +#: extras/models/models.py:343 extras/models/models.py:552 +#: extras/models/search.py:50 ipam/models/ip.py:193 +msgid "weight" +msgstr "poids" + +#: dcim/models/mixins.py:22 +msgid "weight unit" +msgstr "unité de poids" + +#: dcim/models/mixins.py:51 +msgid "Must specify a unit when setting a weight" +msgstr "Doit spécifier une unité lors de la définition d'un poids" + +#: dcim/models/power.py:55 +msgid "power panel" +msgstr "panneau d'alimentation" + +#: dcim/models/power.py:56 +msgid "power panels" +msgstr "panneaux d'alimentation" + +#: dcim/models/power.py:70 +#, python-brace-format +msgid "" +"Location {location} ({location_site}) is in a different site than {site}" +msgstr "" +"Emplacement {location} ({location_site}) se trouve sur un site différent de " +"{site}" + +#: dcim/models/power.py:107 +msgid "supply" +msgstr "fourniture" + +#: dcim/models/power.py:113 +msgid "phase" +msgstr "phase" + +#: dcim/models/power.py:119 +msgid "voltage" +msgstr "tension" + +#: dcim/models/power.py:124 +msgid "amperage" +msgstr "ampérage" + +#: dcim/models/power.py:129 +msgid "max utilization" +msgstr "utilisation maximale" + +#: dcim/models/power.py:132 +msgid "Maximum permissible draw (percentage)" +msgstr "Tirage maximum autorisé (pourcentage)" + +#: dcim/models/power.py:135 +msgid "available power" +msgstr "puissance disponible" + +#: dcim/models/power.py:163 +msgid "power feed" +msgstr "alimentation" + +#: dcim/models/power.py:164 +msgid "power feeds" +msgstr "alimentations" + +#: dcim/models/power.py:178 +#, python-brace-format +msgid "" +"Rack {rack} ({rack_site}) and power panel {powerpanel} ({powerpanel_site}) " +"are in different sites." +msgstr "" +"Étagère {rack} ({rack_site}) et panneau d'alimentation {powerpanel} " +"({powerpanel_site}) se trouvent sur des sites différents." + +#: dcim/models/power.py:189 +msgid "Voltage cannot be negative for AC supply" +msgstr "" +"La tension ne peut pas être négative pour l'alimentation en courant " +"alternatif" + +#: dcim/models/racks.py:49 +msgid "rack role" +msgstr "rôle de rack" + +#: dcim/models/racks.py:50 +msgid "rack roles" +msgstr "rôles de rack" + +#: dcim/models/racks.py:74 +msgid "facility ID" +msgstr "ID de l'établissement" + +#: dcim/models/racks.py:75 +msgid "Locally-assigned identifier" +msgstr "Identifiant attribué localement" + +#: dcim/models/racks.py:108 ipam/forms/bulk_import.py:200 +#: ipam/forms/bulk_import.py:265 ipam/forms/bulk_import.py:300 +#: ipam/forms/bulk_import.py:467 virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Rôle fonctionnel" + +#: dcim/models/racks.py:121 +msgid "A unique tag used to identify this rack" +msgstr "Une étiquette unique utilisée pour identifier ce rack" + +#: dcim/models/racks.py:132 +msgid "width" +msgstr "largeur" + +#: dcim/models/racks.py:133 +msgid "Rail-to-rail width" +msgstr "Largeur rail à rail" + +#: dcim/models/racks.py:139 +msgid "Height in rack units" +msgstr "Hauteur en unités de rayonnage" + +#: dcim/models/racks.py:143 +msgid "starting unit" +msgstr "unité de départ" + +#: dcim/models/racks.py:145 +msgid "Starting unit for rack" +msgstr "Unité de départ pour rack" + +#: dcim/models/racks.py:149 +msgid "descending units" +msgstr "unités décroissantes" + +#: dcim/models/racks.py:150 +msgid "Units are numbered top-to-bottom" +msgstr "Les unités sont numérotées de haut en bas" + +#: dcim/models/racks.py:153 +msgid "outer width" +msgstr "largeur extérieure" + +#: dcim/models/racks.py:156 +msgid "Outer dimension of rack (width)" +msgstr "Dimension extérieure du rack (largeur)" + +#: dcim/models/racks.py:159 +msgid "outer depth" +msgstr "profondeur extérieure" + +#: dcim/models/racks.py:162 +msgid "Outer dimension of rack (depth)" +msgstr "Dimension extérieure du rack (profondeur)" + +#: dcim/models/racks.py:165 +msgid "outer unit" +msgstr "unité extérieure" + +#: dcim/models/racks.py:171 +msgid "max weight" +msgstr "poids maximum" + +#: dcim/models/racks.py:174 +msgid "Maximum load capacity for the rack" +msgstr "Capacité de charge maximale du rack" + +#: dcim/models/racks.py:182 +msgid "mounting depth" +msgstr "profondeur de montage" + +#: dcim/models/racks.py:186 +msgid "" +"Maximum depth of a mounted device, in millimeters. For four-post racks, this" +" is the distance between the front and rear rails." +msgstr "" +"Profondeur maximale d'un appareil monté, en millimètres. Pour les supports à" +" quatre montants, il s'agit de la distance entre les rails avant et arrière." + +#: dcim/models/racks.py:220 +msgid "rack" +msgstr "rack" + +#: dcim/models/racks.py:221 +msgid "racks" +msgstr "étagères" + +#: dcim/models/racks.py:236 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "L'emplacement attribué doit appartenir au site parent ({site})." + +#: dcim/models/racks.py:240 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "" +"Doit spécifier une unité lors du réglage d'une largeur/profondeur extérieure" + +#: dcim/models/racks.py:244 +msgid "Must specify a unit when setting a maximum weight" +msgstr "Doit spécifier une unité lors de la définition d'un poids maximum" + +#: dcim/models/racks.py:254 +#, python-brace-format +msgid "" +"Rack must be at least {min_height}U tall to house currently installed " +"devices." +msgstr "" +"Le rack doit être au moins {min_height}Je parle pour héberger les appareils " +"actuellement installés." + +#: dcim/models/racks.py:261 +#, python-brace-format +msgid "" +"Rack unit numbering must begin at {position} or less to house currently " +"installed devices." +msgstr "" +"La numérotation des unités de rayonnage doit commencer à {position} ou moins" +" pour héberger les appareils actuellement installés." + +#: dcim/models/racks.py:269 +#, python-brace-format +msgid "Location must be from the same site, {site}." +msgstr "L'emplacement doit provenir du même site, {site}." + +#: dcim/models/racks.py:522 +msgid "units" +msgstr "des unités" + +#: dcim/models/racks.py:548 +msgid "rack reservation" +msgstr "réservation de rayonnages" + +#: dcim/models/racks.py:549 +msgid "rack reservations" +msgstr "réservations de racks" + +#: dcim/models/racks.py:566 +#, python-brace-format +msgid "Invalid unit(s) for {height}U rack: {unit_list}" +msgstr "Unité (s) non valide (s) pour {height}Étagère en U : {unit_list}" + +#: dcim/models/racks.py:579 +#, python-brace-format +msgid "The following units have already been reserved: {unit_list}" +msgstr "Les unités suivantes ont déjà été réservées : {unit_list}" + +#: dcim/models/sites.py:49 +msgid "A top-level region with this name already exists." +msgstr "Une région de niveau supérieur portant ce nom existe déjà." + +#: dcim/models/sites.py:59 +msgid "A top-level region with this slug already exists." +msgstr "Une région de niveau supérieur contenant cette limace existe déjà." + +#: dcim/models/sites.py:62 +msgid "region" +msgstr "région" + +#: dcim/models/sites.py:63 +msgid "regions" +msgstr "régions" + +#: dcim/models/sites.py:102 +msgid "A top-level site group with this name already exists." +msgstr "Un groupe de sites de niveau supérieur portant ce nom existe déjà." + +#: dcim/models/sites.py:112 +msgid "A top-level site group with this slug already exists." +msgstr "Un groupe de sites de niveau supérieur contenant ce slug existe déjà." + +#: dcim/models/sites.py:115 +msgid "site group" +msgstr "groupe de sites" + +#: dcim/models/sites.py:116 +msgid "site groups" +msgstr "groupes de sites" + +#: dcim/models/sites.py:141 +msgid "Full name of the site" +msgstr "Nom complet du site" + +#: dcim/models/sites.py:181 +msgid "facility" +msgstr "installation" + +#: dcim/models/sites.py:184 +msgid "Local facility ID or description" +msgstr "Identifiant ou description de l'établissement local" + +#: dcim/models/sites.py:195 +msgid "physical address" +msgstr "adresse physique" + +#: dcim/models/sites.py:198 +msgid "Physical location of the building" +msgstr "Emplacement physique du bâtiment" + +#: dcim/models/sites.py:201 +msgid "shipping address" +msgstr "adresse de livraison" + +#: dcim/models/sites.py:204 +msgid "If different from the physical address" +msgstr "Si elle est différente de l'adresse physique" + +#: dcim/models/sites.py:238 +msgid "site" +msgstr "site" + +#: dcim/models/sites.py:239 +msgid "sites" +msgstr "sites" + +#: dcim/models/sites.py:303 +msgid "A location with this name already exists within the specified site." +msgstr "Un emplacement portant ce nom existe déjà au sein du site spécifié." + +#: dcim/models/sites.py:313 +msgid "A location with this slug already exists within the specified site." +msgstr "Un emplacement contenant ce slug existe déjà dans le site spécifié." + +#: dcim/models/sites.py:316 +msgid "location" +msgstr "emplacement" + +#: dcim/models/sites.py:317 +msgid "locations" +msgstr "les lieux" + +#: dcim/models/sites.py:331 +#, python-brace-format +msgid "Parent location ({parent}) must belong to the same site ({site})." +msgstr "" +"Lieu de résidence du parent ({parent}) doit appartenir au même site " +"({site})." + +#: dcim/tables/cables.py:54 +msgid "Termination A" +msgstr "Résiliation A" + +#: dcim/tables/cables.py:59 +msgid "Termination B" +msgstr "Résiliation B" + +#: dcim/tables/cables.py:65 wireless/tables/wirelesslink.py:22 +msgid "Device A" +msgstr "Appareil A" + +#: dcim/tables/cables.py:71 wireless/tables/wirelesslink.py:31 +msgid "Device B" +msgstr "Appareil B" + +#: dcim/tables/cables.py:77 +msgid "Location A" +msgstr "Lieu A" + +#: dcim/tables/cables.py:83 +msgid "Location B" +msgstr "Lieu B" + +#: dcim/tables/cables.py:89 +msgid "Rack A" +msgstr "Étagère A" + +#: dcim/tables/cables.py:95 +msgid "Rack B" +msgstr "Étagère B" + +#: dcim/tables/cables.py:101 +msgid "Site A" +msgstr "Site A" + +#: dcim/tables/cables.py:107 +msgid "Site B" +msgstr "Site B" + +#: dcim/tables/connections.py:27 templates/dcim/consoleport.html:18 +#: templates/dcim/consoleserverport.html:75 templates/dcim/frontport.html:119 +#: templates/dcim/inventoryitem_edit.html:39 +msgid "Console Port" +msgstr "Port de console" + +#: dcim/tables/connections.py:31 dcim/tables/connections.py:50 +#: dcim/tables/connections.py:71 +#: templates/dcim/inc/connection_endpoints.html:16 +msgid "Reachable" +msgstr "Joignable" + +#: dcim/tables/connections.py:46 dcim/tables/devices.py:524 +#: templates/dcim/inventoryitem_edit.html:64 +#: templates/dcim/poweroutlet.html:47 templates/dcim/powerport.html:18 +msgid "Power Port" +msgstr "Port d'alimentation" + +#: dcim/tables/devices.py:94 dcim/tables/devices.py:139 +#: dcim/tables/racks.py:81 dcim/tables/sites.py:143 +#: netbox/navigation/menu.py:57 netbox/navigation/menu.py:61 +#: netbox/navigation/menu.py:63 virtualization/forms/model_forms.py:125 +#: virtualization/tables/clusters.py:83 virtualization/views.py:211 +msgid "Devices" +msgstr "Appareils" + +#: dcim/tables/devices.py:99 dcim/tables/devices.py:144 +#: virtualization/tables/clusters.py:88 +msgid "VMs" +msgstr "machines virtuelles" + +#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: extras/forms/model_forms.py:506 templates/dcim/device.html:114 +#: templates/dcim/device/render_config.html:11 +#: templates/dcim/device/render_config.html:15 +#: templates/dcim/devicerole.html:47 templates/dcim/platform.html:44 +#: templates/extras/configtemplate.html:10 +#: templates/virtualization/virtualmachine.html:47 +#: templates/virtualization/virtualmachine/render_config.html:11 +#: templates/virtualization/virtualmachine/render_config.html:15 +#: virtualization/tables/virtualmachines.py:93 +msgid "Config Template" +msgstr "Modèle de configuration" + +#: dcim/tables/devices.py:216 dcim/tables/devices.py:1069 +#: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 +#: ipam/tables/ip.py:352 ipam/tables/ip.py:418 ipam/tables/ip.py:441 +#: templates/ipam/ipaddress.html:12 templates/ipam/ipaddress_edit.html:14 +#: virtualization/tables/virtualmachines.py:81 +msgid "IP Address" +msgstr "Adresse IP" + +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1073 +#: virtualization/tables/virtualmachines.py:72 +msgid "IPv4 Address" +msgstr "Adresse IPv4" + +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1077 +#: virtualization/tables/virtualmachines.py:76 +msgid "IPv6 Address" +msgstr "Adresse IPv6" + +#: dcim/tables/devices.py:239 +msgid "VC Position" +msgstr "Position en VC" + +#: dcim/tables/devices.py:242 +msgid "VC Priority" +msgstr "Priorité VC" + +#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: templates/dcim/devicebay_populate.html:16 +msgid "Parent Device" +msgstr "Appareil parent" + +#: dcim/tables/devices.py:254 +msgid "Position (Device Bay)" +msgstr "Position (baie de l'appareil)" + +#: dcim/tables/devices.py:263 +msgid "Console ports" +msgstr "Ports de console" + +#: dcim/tables/devices.py:266 +msgid "Console server ports" +msgstr "Ports du serveur de consoles" + +#: dcim/tables/devices.py:269 +msgid "Power ports" +msgstr "Ports d'alimentation" + +#: dcim/tables/devices.py:272 +msgid "Power outlets" +msgstr "Prises de courant" + +#: dcim/tables/devices.py:275 dcim/tables/devices.py:1082 +#: dcim/tables/devicetypes.py:125 dcim/views.py:1002 dcim/views.py:1241 +#: dcim/views.py:1927 netbox/navigation/menu.py:82 +#: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 +#: templates/dcim/device_list.html:43 templates/dcim/devicetype/base.html:34 +#: templates/dcim/module.html:34 templates/dcim/moduletype/base.html:34 +#: templates/dcim/virtualdevicecontext.html:64 +#: templates/dcim/virtualdevicecontext.html:85 +#: templates/virtualization/virtualmachine/base.html:27 +#: templates/virtualization/virtualmachine_list.html:14 +#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: wireless/tables/wirelesslan.py:55 +msgid "Interfaces" +msgstr "Interfaces" + +#: dcim/tables/devices.py:278 +msgid "Front ports" +msgstr "Ports avant" + +#: dcim/tables/devices.py:284 +msgid "Device bays" +msgstr "Baies pour appareils" + +#: dcim/tables/devices.py:287 +msgid "Module bays" +msgstr "Baies pour modules" + +#: dcim/tables/devices.py:290 +msgid "Inventory items" +msgstr "Articles d'inventaire" + +#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: templates/dcim/modulebay.html:17 +msgid "Module Bay" +msgstr "Module Bay" + +#: dcim/tables/devices.py:350 +msgid "Cable Color" +msgstr "Couleur du câble" + +#: dcim/tables/devices.py:356 +msgid "Link Peers" +msgstr "Lier les pairs" + +#: dcim/tables/devices.py:359 +msgid "Mark Connected" +msgstr "Marquer comme connecté" + +#: dcim/tables/devices.py:470 +msgid "Maximum draw (W)" +msgstr "Tirage maximal (W)" + +#: dcim/tables/devices.py:473 +msgid "Allocated draw (W)" +msgstr "Tirage alloué (W)" + +#: dcim/tables/devices.py:573 ipam/forms/model_forms.py:707 +#: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:671 +#: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 +#: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 +#: templates/ipam/service.html:43 templates/virtualization/vminterface.html:88 +#: vpn/tables/tunnels.py:94 +msgid "IP Addresses" +msgstr "Adresses IP" + +#: dcim/tables/devices.py:579 netbox/navigation/menu.py:190 +#: templates/ipam/inc/panels/fhrp_groups.html:5 +msgid "FHRP Groups" +msgstr "Groupes FHRP" + +#: dcim/tables/devices.py:591 templates/dcim/interface.html:90 +#: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 +#: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 +#: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 +#: vpn/forms/filtersets.py:81 vpn/forms/model_forms.py:59 +#: vpn/forms/model_forms.py:144 vpn/tables/tunnels.py:74 +msgid "Tunnel" +msgstr "Tunnel" + +#: dcim/tables/devices.py:616 dcim/tables/devicetypes.py:224 +#: templates/dcim/interface.html:66 +msgid "Management Only" +msgstr "Gestion uniquement" + +#: dcim/tables/devices.py:624 +msgid "Wireless link" +msgstr "Liaison sans fil" + +#: dcim/tables/devices.py:634 +msgid "VDCs" +msgstr "VDC" + +#: dcim/tables/devices.py:642 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1077 dcim/views.py:2020 +#: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 +#: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 +#: templates/dcim/inc/panels/inventory_items.html:5 +#: templates/dcim/inventoryitemrole.html:33 +msgid "Inventory Items" +msgstr "Articles d'inventaire" + +#: dcim/tables/devices.py:723 +#: templates/circuits/inc/circuit_termination.html:80 +#: templates/dcim/consoleport.html:81 templates/dcim/consoleserverport.html:81 +#: templates/dcim/frontport.html:53 templates/dcim/frontport.html:125 +#: templates/dcim/interface.html:196 templates/dcim/inventoryitem_edit.html:69 +#: templates/dcim/rearport.html:18 templates/dcim/rearport.html:115 +msgid "Rear Port" +msgstr "Port arrière" + +#: dcim/tables/devices.py:888 templates/dcim/modulebay.html:51 +msgid "Installed Module" +msgstr "Module installé" + +#: dcim/tables/devices.py:891 +msgid "Module Serial" +msgstr "Série du module" + +#: dcim/tables/devices.py:895 +msgid "Module Asset Tag" +msgstr "Étiquette d'actif du module" + +#: dcim/tables/devices.py:904 +msgid "Module Status" +msgstr "État du module" + +#: dcim/tables/devices.py:946 dcim/tables/devicetypes.py:308 +#: templates/dcim/inventoryitem.html:41 +msgid "Component" +msgstr "Composant" + +#: dcim/tables/devices.py:1001 +msgid "Items" +msgstr "Objets" + +#: dcim/tables/devicetypes.py:38 netbox/navigation/menu.py:72 +#: netbox/navigation/menu.py:74 +msgid "Device Types" +msgstr "Types d'appareils" + +#: dcim/tables/devicetypes.py:43 netbox/navigation/menu.py:75 +msgid "Module Types" +msgstr "Types de modules" + +#: dcim/tables/devicetypes.py:53 extras/forms/filtersets.py:379 +#: extras/forms/model_forms.py:414 netbox/navigation/menu.py:66 +msgid "Platforms" +msgstr "Plateformes" + +#: dcim/tables/devicetypes.py:85 templates/dcim/devicetype.html:32 +msgid "Default Platform" +msgstr "Plateforme par défaut" + +#: dcim/tables/devicetypes.py:89 templates/dcim/devicetype.html:48 +msgid "Full Depth" +msgstr "Pleine profondeur" + +#: dcim/tables/devicetypes.py:98 +msgid "U Height" +msgstr "Hauteur en U" + +#: dcim/tables/devicetypes.py:110 dcim/tables/modules.py:26 +msgid "Instances" +msgstr "Instances" + +#: dcim/tables/devicetypes.py:113 dcim/views.py:942 dcim/views.py:1181 +#: dcim/views.py:1867 netbox/navigation/menu.py:85 +#: templates/dcim/device/base.html:25 templates/dcim/device_list.html:15 +#: templates/dcim/devicetype/base.html:22 templates/dcim/module.html:22 +#: templates/dcim/moduletype/base.html:22 +msgid "Console Ports" +msgstr "Ports de console" + +#: dcim/tables/devicetypes.py:116 dcim/views.py:957 dcim/views.py:1196 +#: dcim/views.py:1882 netbox/navigation/menu.py:86 +#: templates/dcim/device/base.html:28 templates/dcim/device_list.html:22 +#: templates/dcim/devicetype/base.html:25 templates/dcim/module.html:25 +#: templates/dcim/moduletype/base.html:25 +msgid "Console Server Ports" +msgstr "Ports du serveur de consoles" + +#: dcim/tables/devicetypes.py:119 dcim/views.py:972 dcim/views.py:1211 +#: dcim/views.py:1897 netbox/navigation/menu.py:87 +#: templates/dcim/device/base.html:31 templates/dcim/device_list.html:29 +#: templates/dcim/devicetype/base.html:28 templates/dcim/module.html:28 +#: templates/dcim/moduletype/base.html:28 +msgid "Power Ports" +msgstr "Ports d'alimentation" + +#: dcim/tables/devicetypes.py:122 dcim/views.py:987 dcim/views.py:1226 +#: dcim/views.py:1912 netbox/navigation/menu.py:88 +#: templates/dcim/device/base.html:34 templates/dcim/device_list.html:36 +#: templates/dcim/devicetype/base.html:31 templates/dcim/module.html:31 +#: templates/dcim/moduletype/base.html:31 +msgid "Power Outlets" +msgstr "Prises de courant" + +#: dcim/tables/devicetypes.py:128 dcim/views.py:1017 dcim/views.py:1256 +#: dcim/views.py:1948 netbox/navigation/menu.py:83 +#: templates/dcim/device/base.html:40 templates/dcim/devicetype/base.html:37 +#: templates/dcim/module.html:37 templates/dcim/moduletype/base.html:37 +msgid "Front Ports" +msgstr "Ports avant" + +#: dcim/tables/devicetypes.py:131 dcim/views.py:1032 dcim/views.py:1271 +#: dcim/views.py:1963 netbox/navigation/menu.py:84 +#: templates/dcim/device/base.html:43 templates/dcim/device_list.html:50 +#: templates/dcim/devicetype/base.html:40 templates/dcim/module.html:40 +#: templates/dcim/moduletype/base.html:40 +msgid "Rear Ports" +msgstr "Ports arrière" + +#: dcim/tables/devicetypes.py:134 dcim/views.py:1062 dcim/views.py:2001 +#: netbox/navigation/menu.py:90 templates/dcim/device/base.html:49 +#: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46 +msgid "Device Bays" +msgstr "Baies pour appareils" + +#: dcim/tables/devicetypes.py:137 dcim/views.py:1047 dcim/views.py:1982 +#: netbox/navigation/menu.py:89 templates/dcim/device/base.html:46 +#: templates/dcim/device_list.html:64 templates/dcim/devicetype/base.html:43 +msgid "Module Bays" +msgstr "Baies pour modules" + +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 +#: templates/core/configrevision.html:59 templates/dcim/powerpanel.html:53 +msgid "Power Feeds" +msgstr "Alimentations" + +#: dcim/tables/power.py:80 templates/dcim/powerfeed.html:106 +msgid "Max Utilization" +msgstr "Utilisation maximale" + +#: dcim/tables/power.py:84 +msgid "Available Power (VA)" +msgstr "Puissance disponible (VA)" + +#: dcim/tables/racks.py:29 dcim/tables/sites.py:138 +#: netbox/navigation/menu.py:25 netbox/navigation/menu.py:27 +msgid "Racks" +msgstr "Étagères" + +#: dcim/tables/racks.py:73 templates/dcim/device.html:323 +#: templates/dcim/rack.html:95 +msgid "Height" +msgstr "Hauteur" + +#: dcim/tables/racks.py:85 +msgid "Space" +msgstr "Espace" + +#: dcim/tables/racks.py:96 templates/dcim/rack.html:105 +msgid "Outer Width" +msgstr "Largeur extérieure" + +#: dcim/tables/racks.py:100 templates/dcim/rack.html:115 +msgid "Outer Depth" +msgstr "Profondeur extérieure" + +#: dcim/tables/racks.py:108 +msgid "Max Weight" +msgstr "Poids maximum" + +#: dcim/tables/sites.py:30 dcim/tables/sites.py:57 +#: extras/forms/filtersets.py:359 extras/forms/model_forms.py:394 +#: ipam/forms/bulk_edit.py:128 ipam/forms/model_forms.py:152 +#: ipam/tables/asn.py:66 netbox/navigation/menu.py:16 +#: netbox/navigation/menu.py:18 +msgid "Sites" +msgstr "Des sites" + +#: dcim/views.py:131 +#, python-brace-format +msgid "Disconnected {count} {type}" +msgstr "Déconnecté {count} {type}" + +#: dcim/views.py:692 netbox/navigation/menu.py:29 +msgid "Reservations" +msgstr "Réservations" + +#: dcim/views.py:711 +msgid "Non-Racked Devices" +msgstr "Appareils non rackés" + +#: dcim/views.py:2033 extras/forms/model_forms.py:454 +#: templates/extras/configcontext.html:10 +#: virtualization/forms/model_forms.py:228 virtualization/views.py:408 +msgid "Config Context" +msgstr "Contexte de configuration" + +#: dcim/views.py:2043 virtualization/views.py:418 +msgid "Render Config" +msgstr "Configuration du rendu" + +#: dcim/views.py:2971 ipam/tables/ip.py:233 +msgid "Children" +msgstr "Enfants" + +#: extras/choices.py:27 extras/forms/misc.py:14 +msgid "Text" +msgstr "Texte" + +#: extras/choices.py:28 +msgid "Text (long)" +msgstr "Texte (long)" + +#: extras/choices.py:29 +msgid "Integer" +msgstr "Entier" + +#: extras/choices.py:30 +msgid "Decimal" +msgstr "Décimal" + +#: extras/choices.py:31 +msgid "Boolean (true/false)" +msgstr "Booléen (vrai/faux)" + +#: extras/choices.py:32 +msgid "Date" +msgstr "Date" + +#: extras/choices.py:33 +msgid "Date & time" +msgstr "Date et heure" + +#: extras/choices.py:35 +msgid "JSON" +msgstr "JSON" + +#: extras/choices.py:36 +msgid "Selection" +msgstr "Sélection" + +#: extras/choices.py:37 +msgid "Multiple selection" +msgstr "Sélection multiple" + +#: extras/choices.py:39 +msgid "Multiple objects" +msgstr "Objets multiples" + +#: extras/choices.py:50 templates/extras/customfield.html:69 vpn/choices.py:20 +#: wireless/choices.py:27 +msgid "Disabled" +msgstr "Désactivé" + +#: extras/choices.py:51 +msgid "Loose" +msgstr "Lâche" + +#: extras/choices.py:52 +msgid "Exact" +msgstr "Exact" + +#: extras/choices.py:63 +msgid "Always" +msgstr "Toujours" + +#: extras/choices.py:64 +msgid "If set" +msgstr "Si défini" + +#: extras/choices.py:65 extras/choices.py:78 +msgid "Hidden" +msgstr "Caché" + +#: extras/choices.py:76 +msgid "Yes" +msgstr "Oui" + +#: extras/choices.py:77 +msgid "No" +msgstr "Non" + +#: extras/choices.py:105 templates/tenancy/contact.html:58 +#: tenancy/forms/bulk_edit.py:117 wireless/forms/model_forms.py:159 +msgid "Link" +msgstr "Lien" + +#: extras/choices.py:119 +msgid "Newest" +msgstr "Le plus récent" + +#: extras/choices.py:120 +msgid "Oldest" +msgstr "Le plus ancien" + +#: extras/choices.py:136 templates/generic/object.html:51 +msgid "Updated" +msgstr "Mis à jour" + +#: extras/choices.py:137 +msgid "Deleted" +msgstr "Supprimé" + +#: extras/choices.py:154 extras/choices.py:176 +msgid "Info" +msgstr "Infos" + +#: extras/choices.py:155 extras/choices.py:175 +msgid "Success" +msgstr "Succès" + +#: extras/choices.py:156 extras/choices.py:177 +msgid "Warning" +msgstr "Avertissement" + +#: extras/choices.py:157 +msgid "Danger" +msgstr "Danger" + +#: extras/choices.py:174 utilities/choices.py:190 +msgid "Default" +msgstr "Par défaut" + +#: extras/choices.py:178 +msgid "Failure" +msgstr "Défaillance" + +#: extras/choices.py:185 +msgid "Hourly" +msgstr "Toutes les heures" + +#: extras/choices.py:186 +msgid "12 hours" +msgstr "12 heures" + +#: extras/choices.py:187 +msgid "Daily" +msgstr "Tous les jours" + +#: extras/choices.py:188 +msgid "Weekly" +msgstr "Hebdo" + +#: extras/choices.py:189 +msgid "30 days" +msgstr "30 jours" + +#: extras/choices.py:254 extras/tables/tables.py:287 +#: templates/dcim/virtualchassis_edit.html:108 +#: templates/extras/eventrule.html:51 +#: templates/generic/bulk_add_component.html:56 +#: templates/generic/object_edit.html:29 templates/generic/object_edit.html:70 +#: templates/ipam/inc/ipaddress_edit_header.html:10 +msgid "Create" +msgstr "Créez" + +#: extras/choices.py:255 extras/tables/tables.py:290 +#: templates/extras/eventrule.html:55 +msgid "Update" +msgstr "Mise à jour" + +#: extras/choices.py:256 extras/tables/tables.py:293 +#: templates/circuits/inc/circuit_termination.html:22 +#: templates/dcim/devicetype/component_templates.html:24 +#: templates/dcim/inc/panels/inventory_items.html:29 +#: templates/dcim/moduletype/component_templates.html:24 +#: templates/dcim/powerpanel.html:71 templates/extras/eventrule.html:59 +#: templates/extras/report_list.html:34 templates/extras/script_list.html:33 +#: templates/generic/bulk_delete.html:18 templates/generic/bulk_delete.html:45 +#: templates/generic/object_delete.html:15 templates/htmx/delete_form.html:57 +#: templates/ipam/inc/panels/fhrp_groups.html:35 +#: templates/users/objectpermission.html:49 +#: utilities/templates/buttons/delete.html:9 +msgid "Delete" +msgstr "Supprimer" + +#: extras/choices.py:280 utilities/choices.py:143 utilities/choices.py:191 +msgid "Blue" +msgstr "Bleu" + +#: extras/choices.py:281 utilities/choices.py:142 utilities/choices.py:192 +msgid "Indigo" +msgstr "Indigo" + +#: extras/choices.py:282 utilities/choices.py:140 utilities/choices.py:193 +msgid "Purple" +msgstr "Violet" + +#: extras/choices.py:283 utilities/choices.py:137 utilities/choices.py:194 +msgid "Pink" +msgstr "Rose" + +#: extras/choices.py:284 utilities/choices.py:136 utilities/choices.py:195 +msgid "Red" +msgstr "rouge" + +#: extras/choices.py:285 utilities/choices.py:154 utilities/choices.py:196 +msgid "Orange" +msgstr "Orange" + +#: extras/choices.py:286 utilities/choices.py:152 utilities/choices.py:197 +msgid "Yellow" +msgstr "Jaune" + +#: extras/choices.py:287 utilities/choices.py:149 utilities/choices.py:198 +msgid "Green" +msgstr "Vert" + +#: extras/choices.py:288 utilities/choices.py:146 utilities/choices.py:199 +msgid "Teal" +msgstr "Sarcelle" + +#: extras/choices.py:289 utilities/choices.py:145 utilities/choices.py:200 +msgid "Cyan" +msgstr "Cyan" + +#: extras/choices.py:290 utilities/choices.py:201 +msgid "Gray" +msgstr "gris" + +#: extras/choices.py:291 utilities/choices.py:160 utilities/choices.py:202 +msgid "Black" +msgstr "noir" + +#: extras/choices.py:292 utilities/choices.py:161 utilities/choices.py:203 +msgid "White" +msgstr "blanc" + +#: extras/choices.py:306 extras/forms/model_forms.py:233 +#: extras/forms/model_forms.py:321 templates/extras/webhook.html:11 +msgid "Webhook" +msgstr "Webhook" + +#: extras/choices.py:307 templates/extras/script/base.html:29 +msgid "Script" +msgstr "Scénario" + +#: extras/dashboard/forms.py:38 +msgid "Widget type" +msgstr "Type de widget" + +#: extras/dashboard/widgets.py:148 +msgid "Note" +msgstr "Remarque" + +#: extras/dashboard/widgets.py:149 +msgid "Display some arbitrary custom content. Markdown is supported." +msgstr "" +"Affichez du contenu personnalisé arbitraire. Markdown est pris en charge." + +#: extras/dashboard/widgets.py:162 +msgid "Object Counts" +msgstr "Nombre d'objets" + +#: extras/dashboard/widgets.py:163 +msgid "" +"Display a set of NetBox models and the number of objects created for each " +"type." +msgstr "" +"Affichez un ensemble de modèles NetBox et le nombre d'objets créés pour " +"chaque type." + +#: extras/dashboard/widgets.py:173 +msgid "Filters to apply when counting the number of objects" +msgstr "Filtres à appliquer lors du comptage du nombre d'objets" + +#: extras/dashboard/widgets.py:209 +msgid "Object List" +msgstr "Liste d'objets" + +#: extras/dashboard/widgets.py:210 +msgid "Display an arbitrary list of objects." +msgstr "Afficher une liste arbitraire d'objets." + +#: extras/dashboard/widgets.py:223 +msgid "The default number of objects to display" +msgstr "Le nombre d'objets à afficher par défaut" + +#: extras/dashboard/widgets.py:270 +msgid "RSS Feed" +msgstr "Fil RSS" + +#: extras/dashboard/widgets.py:275 +msgid "Embed an RSS feed from an external website." +msgstr "Intégrez un flux RSS provenant d'un site Web externe." + +#: extras/dashboard/widgets.py:282 +msgid "Feed URL" +msgstr "URL du flux" + +#: extras/dashboard/widgets.py:287 +msgid "The maximum number of objects to display" +msgstr "Le nombre maximum d'objets à afficher" + +#: extras/dashboard/widgets.py:292 +msgid "How long to stored the cached content (in seconds)" +msgstr "Durée de conservation du contenu mis en cache (en secondes)" + +#: extras/dashboard/widgets.py:344 templates/account/base.html:10 +#: templates/account/bookmarks.html:7 templates/inc/profile_button.html:29 +msgid "Bookmarks" +msgstr "Signets" + +#: extras/dashboard/widgets.py:348 +msgid "Show your personal bookmarks" +msgstr "Afficher vos favoris personnels" + +#: extras/filtersets.py:207 extras/filtersets.py:542 extras/filtersets.py:570 +msgid "Data file (ID)" +msgstr "Fichier de données (ID)" + +#: extras/filtersets.py:479 virtualization/forms/filtersets.py:114 +msgid "Cluster type" +msgstr "Type de cluster" + +#: extras/filtersets.py:485 virtualization/filtersets.py:95 +#: virtualization/filtersets.py:146 +msgid "Cluster type (slug)" +msgstr "Type de cluster (slug)" + +#: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 +#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +msgid "Cluster group" +msgstr "Groupe de clusters" + +#: extras/filtersets.py:496 virtualization/filtersets.py:135 +msgid "Cluster group (slug)" +msgstr "Groupe de clusters (slug)" + +#: extras/filtersets.py:506 tenancy/forms/forms.py:16 +#: tenancy/forms/forms.py:39 +msgid "Tenant group" +msgstr "Groupe de locataires" + +#: extras/filtersets.py:512 tenancy/filtersets.py:163 +#: tenancy/filtersets.py:183 +msgid "Tenant group (slug)" +msgstr "Groupe de locataires (slug)" + +#: extras/filtersets.py:528 templates/extras/tag.html:12 +msgid "Tag" +msgstr "Balise" + +#: extras/filtersets.py:534 +msgid "Tag (slug)" +msgstr "Tag (limace)" + +#: extras/filtersets.py:594 extras/forms/filtersets.py:438 +msgid "Has local config context data" +msgstr "Possède des données contextuelles de configuration locales" + +#: extras/filtersets.py:619 +msgid "User name" +msgstr "Nom d'utilisateur" + +#: extras/forms/bulk_edit.py:32 extras/forms/filtersets.py:56 +msgid "Group name" +msgstr "Nom du groupe" + +#: extras/forms/bulk_edit.py:40 extras/forms/filtersets.py:64 +#: extras/tables/tables.py:47 templates/extras/customfield.html:39 +#: templates/generic/bulk_import.html:116 +msgid "Required" +msgstr "Obligatoire" + +#: extras/forms/bulk_edit.py:53 extras/forms/bulk_import.py:57 +#: extras/forms/filtersets.py:78 extras/models/customfields.py:193 +msgid "UI visible" +msgstr "Interface utilisateur visible" + +#: extras/forms/bulk_edit.py:58 extras/forms/bulk_import.py:63 +#: extras/forms/filtersets.py:83 extras/models/customfields.py:200 +msgid "UI editable" +msgstr "Interface utilisateur modifiable" + +#: extras/forms/bulk_edit.py:63 extras/forms/filtersets.py:86 +msgid "Is cloneable" +msgstr "Est cloneable" + +#: extras/forms/bulk_edit.py:102 extras/forms/filtersets.py:126 +msgid "New window" +msgstr "Nouvelle fenêtre" + +#: extras/forms/bulk_edit.py:111 +msgid "Button class" +msgstr "Classe de boutons" + +#: extras/forms/bulk_edit.py:128 extras/forms/filtersets.py:164 +#: extras/models/models.py:439 +msgid "MIME type" +msgstr "Type MIME" + +#: extras/forms/bulk_edit.py:133 extras/forms/filtersets.py:167 +msgid "File extension" +msgstr "Extension de fichier" + +#: extras/forms/bulk_edit.py:138 extras/forms/filtersets.py:171 +msgid "As attachment" +msgstr "En pièce jointe" + +#: extras/forms/bulk_edit.py:166 extras/forms/filtersets.py:213 +#: extras/tables/tables.py:214 templates/extras/savedfilter.html:30 +msgid "Shared" +msgstr "Partagé" + +#: extras/forms/bulk_edit.py:189 extras/forms/filtersets.py:242 +#: extras/models/models.py:204 +msgid "HTTP method" +msgstr "Méthode HTTP" + +#: extras/forms/bulk_edit.py:193 extras/forms/filtersets.py:236 +#: templates/extras/webhook.html:37 +msgid "Payload URL" +msgstr "URL de charge utile" + +#: extras/forms/bulk_edit.py:198 extras/models/models.py:244 +msgid "SSL verification" +msgstr "Vérification SSL" + +#: extras/forms/bulk_edit.py:201 templates/extras/webhook.html:45 +msgid "Secret" +msgstr "Secret" + +#: extras/forms/bulk_edit.py:206 +msgid "CA file path" +msgstr "chemin du fichier CA" + +#: extras/forms/bulk_edit.py:225 +msgid "On create" +msgstr "Lors de la création" + +#: extras/forms/bulk_edit.py:230 +msgid "On update" +msgstr "Sur mise à jour" + +#: extras/forms/bulk_edit.py:235 +msgid "On delete" +msgstr "Lors de la suppression" + +#: extras/forms/bulk_edit.py:240 +msgid "On job start" +msgstr "Au début du travail" + +#: extras/forms/bulk_edit.py:245 +msgid "On job end" +msgstr "En fin de travail" + +#: extras/forms/bulk_edit.py:282 +msgid "Is active" +msgstr "Est actif" + +#: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 +#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 +#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 +#: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 +#: extras/forms/model_forms.py:154 extras/forms/model_forms.py:195 +#: extras/forms/model_forms.py:251 +msgid "Content types" +msgstr "Types de contenu" + +#: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 +#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 +#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +msgid "One or more assigned object types" +msgstr "Un ou plusieurs types d'objets attribués" + +#: extras/forms/bulk_import.py:41 +msgid "Field data type (e.g. text, integer, etc.)" +msgstr "Type de données de champ (par exemple texte, entier, etc.)" + +#: extras/forms/bulk_import.py:44 extras/forms/filtersets.py:48 +#: extras/forms/filtersets.py:259 extras/forms/model_forms.py:47 +#: extras/forms/model_forms.py:221 tenancy/forms/filtersets.py:91 +msgid "Object type" +msgstr "Type d'objet" + +#: extras/forms/bulk_import.py:47 +msgid "Object type (for object or multi-object fields)" +msgstr "Type d'objet (pour les champs d'objets ou multi-objets)" + +#: extras/forms/bulk_import.py:50 extras/forms/filtersets.py:73 +msgid "Choice set" +msgstr "Coffret Choice" + +#: extras/forms/bulk_import.py:54 +msgid "Choice set (for selection fields)" +msgstr "Set de choix (pour les champs de sélection)" + +#: extras/forms/bulk_import.py:60 +msgid "Whether the custom field is displayed in the UI" +msgstr "Si le champ personnalisé est affiché dans l'interface utilisateur" + +#: extras/forms/bulk_import.py:66 +msgid "Whether the custom field is editable in the UI" +msgstr "Si le champ personnalisé est modifiable dans l'interface utilisateur" + +#: extras/forms/bulk_import.py:82 +msgid "The base set of predefined choices to use (if any)" +msgstr "L'ensemble de base de choix prédéfinis à utiliser (le cas échéant)" + +#: extras/forms/bulk_import.py:88 +msgid "" +"Quoted string of comma-separated field choices with optional labels " +"separated by colon: \"choice1:First Choice,choice2:Second Choice\"" +msgstr "" +"Chaîne entre guillemets contenant des choix de champs séparés par des " +"virgules avec des libellés facultatifs séparés par deux points : " +"« Choice1:First Choice, Choice2:Second Choice »" + +#: extras/forms/bulk_import.py:182 +msgid "Action object" +msgstr "Objet d'action" + +#: extras/forms/bulk_import.py:184 +msgid "Webhook name or script as dotted path module.Class" +msgstr "Nom du webhook ou script sous forme de chemin pointillé module.Class" + +#: extras/forms/bulk_import.py:236 +msgid "Assigned object type" +msgstr "Type d'objet attribué" + +#: extras/forms/bulk_import.py:241 +msgid "The classification of entry" +msgstr "La classification de l'entrée" + +#: extras/forms/filtersets.py:53 +msgid "Field type" +msgstr "Type de champ" + +#: extras/forms/filtersets.py:97 extras/tables/tables.py:65 +#: templates/generic/bulk_import.html:148 +msgid "Choices" +msgstr "Choix" + +#: extras/forms/filtersets.py:141 extras/forms/filtersets.py:327 +#: extras/forms/filtersets.py:417 extras/forms/model_forms.py:449 +#: templates/core/job.html:86 templates/extras/configcontext.html:86 +#: templates/extras/eventrule.html:111 +msgid "Data" +msgstr "Données" + +#: extras/forms/filtersets.py:152 extras/forms/filtersets.py:341 +#: extras/forms/filtersets.py:427 utilities/choices.py:219 +#: utilities/forms/bulk_import.py:27 +msgid "Data file" +msgstr "Fichier de données" + +#: extras/forms/filtersets.py:185 +msgid "Content type" +msgstr "Type de contenu" + +#: extras/forms/filtersets.py:232 extras/models/models.py:209 +msgid "HTTP content type" +msgstr "Type de contenu HTTP" + +#: extras/forms/filtersets.py:254 extras/forms/model_forms.py:269 +#: templates/extras/eventrule.html:46 +msgid "Events" +msgstr "Évènements" + +#: extras/forms/filtersets.py:264 +msgid "Action type" +msgstr "Type d'action" + +#: extras/forms/filtersets.py:278 +msgid "Object creations" +msgstr "Créations d'objets" + +#: extras/forms/filtersets.py:285 +msgid "Object updates" +msgstr "mises à jour des objets" + +#: extras/forms/filtersets.py:292 +msgid "Object deletions" +msgstr "Suppressions d'objets" + +#: extras/forms/filtersets.py:299 +msgid "Job starts" +msgstr "Début du travail" + +#: extras/forms/filtersets.py:306 extras/forms/model_forms.py:289 +msgid "Job terminations" +msgstr "Résiliations d'emploi" + +#: extras/forms/filtersets.py:315 +msgid "Tagged object type" +msgstr "Type d'objet balisé" + +#: extras/forms/filtersets.py:320 +msgid "Allowed object type" +msgstr "Type d'objet autorisé" + +#: extras/forms/filtersets.py:349 extras/forms/model_forms.py:384 +#: netbox/navigation/menu.py:19 +msgid "Regions" +msgstr "Régions" + +#: extras/forms/filtersets.py:354 extras/forms/model_forms.py:389 +msgid "Site groups" +msgstr "Groupes de sites" + +#: extras/forms/filtersets.py:364 extras/forms/model_forms.py:399 +#: netbox/navigation/menu.py:21 +msgid "Locations" +msgstr "Localisations" + +#: extras/forms/filtersets.py:369 extras/forms/model_forms.py:404 +msgid "Device types" +msgstr "Types d'appareils" + +#: extras/forms/filtersets.py:374 extras/forms/model_forms.py:409 +msgid "Roles" +msgstr "Rôles" + +#: extras/forms/filtersets.py:384 extras/forms/model_forms.py:419 +msgid "Cluster types" +msgstr "Types de clusters" + +#: extras/forms/filtersets.py:390 extras/forms/model_forms.py:424 +msgid "Cluster groups" +msgstr "Groupes de clusters" + +#: extras/forms/filtersets.py:395 extras/forms/model_forms.py:429 +#: netbox/navigation/menu.py:243 netbox/navigation/menu.py:245 +#: templates/virtualization/clustertype.html:33 +#: virtualization/tables/clusters.py:23 virtualization/tables/clusters.py:45 +msgid "Clusters" +msgstr "Clusters" + +#: extras/forms/filtersets.py:400 extras/forms/model_forms.py:434 +msgid "Tenant groups" +msgstr "Groupes de locataires" + +#: extras/forms/filtersets.py:454 extras/forms/filtersets.py:495 +msgid "After" +msgstr "Après" + +#: extras/forms/filtersets.py:459 extras/forms/filtersets.py:500 +msgid "Before" +msgstr "Avant" + +#: extras/forms/filtersets.py:490 extras/tables/tables.py:426 +#: templates/extras/htmx/report_result.html:43 +#: templates/extras/objectchange.html:34 +msgid "Time" +msgstr "Heure" + +#: extras/forms/filtersets.py:504 extras/forms/model_forms.py:271 +#: extras/tables/tables.py:440 templates/extras/eventrule.html:90 +#: templates/extras/objectchange.html:50 +msgid "Action" +msgstr "Action" + +#: extras/forms/model_forms.py:50 +msgid "Type of the related object (for object/multi-object fields only)" +msgstr "" +"Type de l'objet associé (pour les champs objet/multi-objets uniquement)" + +#: extras/forms/model_forms.py:58 templates/extras/customfield.html:11 +msgid "Custom Field" +msgstr "Champ personnalisé" + +#: extras/forms/model_forms.py:61 templates/extras/customfield.html:60 +msgid "Behavior" +msgstr "Comportement" + +#: extras/forms/model_forms.py:62 +msgid "Values" +msgstr "Valeurs" + +#: extras/forms/model_forms.py:71 +msgid "" +"The type of data stored in this field. For object/multi-object fields, " +"select the related object type below." +msgstr "" +"Le type de données stockées dans ce champ. Pour les champs objet/multi-" +"objets, sélectionnez le type d'objet associé ci-dessous." + +#: extras/forms/model_forms.py:74 +msgid "" +"This will be displayed as help text for the form field. Markdown is " +"supported." +msgstr "" +"Cela sera affiché sous forme de texte d'aide pour le champ du formulaire. " +"Markdown est pris en charge." + +#: extras/forms/model_forms.py:91 +msgid "" +"Enter one choice per line. An optional label may be specified for each " +"choice by appending it with a colon. Example:" +msgstr "" +"Entrez un choix par ligne. Une étiquette facultative peut être spécifiée " +"pour chaque choix en l'ajoutant par deux points. Exemple :" + +#: extras/forms/model_forms.py:132 templates/extras/customlink.html:10 +msgid "Custom Link" +msgstr "Lien personnalisé" + +#: extras/forms/model_forms.py:133 +msgid "Templates" +msgstr "Modèles" + +#: extras/forms/model_forms.py:145 +msgid "" +"Jinja2 template code for the link text. Reference the object as {{ " +"object }}. Links which render as empty text will not be displayed." +msgstr "" + +#: extras/forms/model_forms.py:148 +msgid "" +"Jinja2 template code for the link URL. Reference the object as {{ " +"object }}." +msgstr "" + +#: extras/forms/model_forms.py:158 extras/forms/model_forms.py:500 +msgid "Template code" +msgstr "Code du modèle" + +#: extras/forms/model_forms.py:164 templates/extras/exporttemplate.html:17 +msgid "Export Template" +msgstr "Modèle d'exportation" + +#: extras/forms/model_forms.py:166 +msgid "Rendering" +msgstr "Rendu" + +#: extras/forms/model_forms.py:180 extras/forms/model_forms.py:525 +msgid "Template content is populated from the remote source selected below." +msgstr "" +"Le contenu du modèle est renseigné à partir de la source distante " +"sélectionnée ci-dessous." + +#: extras/forms/model_forms.py:187 extras/forms/model_forms.py:532 +msgid "Must specify either local content or a data file" +msgstr "Doit spécifier un contenu local ou un fichier de données" + +#: extras/forms/model_forms.py:201 netbox/forms/mixins.py:68 +#: templates/extras/savedfilter.html:10 +msgid "Saved Filter" +msgstr "Filtre enregistré" + +#: extras/forms/model_forms.py:234 templates/extras/webhook.html:28 +msgid "HTTP Request" +msgstr "Requête HTTP" + +#: extras/forms/model_forms.py:237 templates/extras/webhook.html:53 +msgid "SSL" +msgstr "SLL" + +#: extras/forms/model_forms.py:255 +msgid "Action choice" +msgstr "Choix de l'action" + +#: extras/forms/model_forms.py:260 +msgid "Enter conditions in JSON format." +msgstr "Entrez les conditions dans JSON format." + +#: extras/forms/model_forms.py:264 +msgid "" +"Enter parameters to pass to the action in JSON format." +msgstr "" +"Entrez les paramètres à transmettre à l'action dans JSON format." + +#: extras/forms/model_forms.py:268 templates/extras/eventrule.html:11 +msgid "Event Rule" +msgstr "Règle de l'événement" + +#: extras/forms/model_forms.py:270 templates/extras/eventrule.html:78 +msgid "Conditions" +msgstr "Les conditions" + +#: extras/forms/model_forms.py:285 +msgid "Creations" +msgstr "Créations" + +#: extras/forms/model_forms.py:286 +msgid "Updates" +msgstr "mises à jour" + +#: extras/forms/model_forms.py:287 +msgid "Deletions" +msgstr "Suppressions" + +#: extras/forms/model_forms.py:288 +msgid "Job executions" +msgstr "Exécutions de tâches" + +#: extras/forms/model_forms.py:366 users/forms/model_forms.py:285 +msgid "Object types" +msgstr "Types d'objets" + +#: extras/forms/model_forms.py:439 netbox/navigation/menu.py:40 +#: tenancy/tables/tenants.py:22 +msgid "Tenants" +msgstr "Locataires" + +#: extras/forms/model_forms.py:456 ipam/forms/filtersets.py:141 +#: ipam/forms/filtersets.py:527 templates/extras/configcontext.html:62 +#: templates/ipam/ipaddress.html:62 templates/ipam/vlan_edit.html:30 +#: tenancy/forms/filtersets.py:86 users/forms/model_forms.py:323 +msgid "Assignment" +msgstr "Affectation" + +#: extras/forms/model_forms.py:482 +msgid "Data is populated from the remote source selected below." +msgstr "" +"Les données sont renseignées à partir de la source distante sélectionnée ci-" +"dessous." + +#: extras/forms/model_forms.py:488 +msgid "Must specify either local data or a data file" +msgstr "Doit spécifier des données locales ou un fichier de données" + +#: extras/forms/model_forms.py:507 templates/core/datafile.html:65 +msgid "Content" +msgstr "Contenu" + +#: extras/forms/reports.py:18 extras/forms/scripts.py:24 +msgid "Schedule at" +msgstr "Horaire à" + +#: extras/forms/reports.py:19 +msgid "Schedule execution of report to a set time" +msgstr "Planifier l'exécution du rapport à une heure définie" + +#: extras/forms/reports.py:24 extras/forms/scripts.py:30 +msgid "Recurs every" +msgstr "Récurrent chaque fois" + +#: extras/forms/reports.py:28 +msgid "Interval at which this report is re-run (in minutes)" +msgstr "Intervalle auquel ce rapport est réexécuté (en minutes)" + +#: extras/forms/reports.py:36 extras/forms/scripts.py:42 +#, python-brace-format +msgid " (current time: {now})" +msgstr " (heure actuelle : {now})" + +#: extras/forms/reports.py:46 extras/forms/scripts.py:52 +msgid "Scheduled time must be in the future." +msgstr "L'heure prévue doit se situer dans le futur." + +#: extras/forms/scripts.py:18 +msgid "Commit changes" +msgstr "Valider les modifications" + +#: extras/forms/scripts.py:19 +msgid "Commit changes to the database (uncheck for a dry-run)" +msgstr "" +"Validez les modifications apportées à la base de données (décochez cette " +"case pour une exécution à sec)" + +#: extras/forms/scripts.py:25 +msgid "Schedule execution of script to a set time" +msgstr "Planifier l'exécution du script à une heure définie" + +#: extras/forms/scripts.py:34 +msgid "Interval at which this script is re-run (in minutes)" +msgstr "Intervalle auquel ce script est réexécuté (en minutes)" + +#: extras/models/change_logging.py:24 +msgid "time" +msgstr "temps" + +#: extras/models/change_logging.py:37 +msgid "user name" +msgstr "nom d'utilisateur" + +#: extras/models/change_logging.py:42 +msgid "request ID" +msgstr "ID de demande" + +#: extras/models/change_logging.py:47 extras/models/staging.py:69 +msgid "action" +msgstr "action" + +#: extras/models/change_logging.py:81 +msgid "pre-change data" +msgstr "données de pré-modification" + +#: extras/models/change_logging.py:87 +msgid "post-change data" +msgstr "données après modification" + +#: extras/models/change_logging.py:101 +msgid "object change" +msgstr "changement d'objet" + +#: extras/models/change_logging.py:102 +msgid "object changes" +msgstr "modifications d'objets" + +#: extras/models/change_logging.py:118 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"La journalisation des modifications n'est pas prise en charge pour ce type " +"d'objet ({type})." + +#: extras/models/configs.py:130 +msgid "config context" +msgstr "contexte de configuration" + +#: extras/models/configs.py:131 +msgid "config contexts" +msgstr "contextes de configuration" + +#: extras/models/configs.py:149 extras/models/configs.py:205 +msgid "JSON data must be in object form. Example:" +msgstr "Les données JSON doivent être sous forme d'objet. Exemple :" + +#: extras/models/configs.py:169 +msgid "" +"Local config context data takes precedence over source contexts in the final" +" rendered config context" +msgstr "" +"Les données du contexte de configuration local ont priorité sur les " +"contextes source dans le contexte de configuration final rendu" + +#: extras/models/configs.py:224 +msgid "template code" +msgstr "code du modèle" + +#: extras/models/configs.py:225 +msgid "Jinja2 template code." +msgstr "Code du modèle Jinja2." + +#: extras/models/configs.py:228 +msgid "environment parameters" +msgstr "paramètres d'environnement" + +#: extras/models/configs.py:233 +msgid "" +"Any additional" +" parameters to pass when constructing the Jinja2 environment." +msgstr "" +"N'importe lequel paramètres" +" supplémentaires à passer lors de la construction de l'environnement " +"Jinja2." + +#: extras/models/configs.py:240 +msgid "config template" +msgstr "modèle de configuration" + +#: extras/models/configs.py:241 +msgid "config templates" +msgstr "modèles de configuration" + +#: extras/models/customfields.py:72 +msgid "The object(s) to which this field applies." +msgstr "Le ou les objets auxquels ce champ s'applique." + +#: extras/models/customfields.py:79 +msgid "The type of data this custom field holds" +msgstr "Le type de données que contient ce champ personnalisé" + +#: extras/models/customfields.py:86 +msgid "The type of NetBox object this field maps to (for object fields)" +msgstr "" +"Le type d'objet NetBox auquel ce champ correspond (pour les champs d'objets)" + +#: extras/models/customfields.py:92 +msgid "Internal field name" +msgstr "Nom du champ interne" + +#: extras/models/customfields.py:96 +msgid "Only alphanumeric characters and underscores are allowed." +msgstr "" +"Seuls les caractères alphanumériques et les traits de soulignement sont " +"autorisés." + +#: extras/models/customfields.py:101 +msgid "Double underscores are not permitted in custom field names." +msgstr "" +"Les doubles soulignements ne sont pas autorisés dans les noms de champs " +"personnalisés." + +#: extras/models/customfields.py:112 +msgid "" +"Name of the field as displayed to users (if not provided, 'the field's name " +"will be used)" +msgstr "" +"Nom du champ tel qu'il est affiché aux utilisateurs (s'il n'est pas fourni, " +"« le nom du champ sera utilisé) »" + +#: extras/models/customfields.py:116 extras/models/models.py:347 +msgid "group name" +msgstr "nom du groupe" + +#: extras/models/customfields.py:119 +msgid "Custom fields within the same group will be displayed together" +msgstr "Les champs personnalisés d'un même groupe seront affichés ensemble" + +#: extras/models/customfields.py:127 +msgid "required" +msgstr "requis" + +#: extras/models/customfields.py:129 +msgid "" +"If true, this field is required when creating new objects or editing an " +"existing object." +msgstr "" +"Si c'est vrai, ce champ est obligatoire lors de la création de nouveaux " +"objets ou de la modification d'un objet existant." + +#: extras/models/customfields.py:132 +msgid "search weight" +msgstr "poids de recherche" + +#: extras/models/customfields.py:135 +msgid "" +"Weighting for search. Lower values are considered more important. Fields " +"with a search weight of zero will be ignored." +msgstr "" +"Pondération pour la recherche. Les valeurs inférieures sont considérées " +"comme plus importantes. Les champs dont le poids de recherche est nul seront" +" ignorés." + +#: extras/models/customfields.py:140 +msgid "filter logic" +msgstr "logique de filtrage" + +#: extras/models/customfields.py:144 +msgid "" +"Loose matches any instance of a given string; exact matches the entire " +"field." +msgstr "" +"Loose correspond à n'importe quelle instance d'une chaîne donnée ; " +"correspond exactement à l'ensemble du champ." + +#: extras/models/customfields.py:147 +msgid "default" +msgstr "défaut" + +#: extras/models/customfields.py:151 +msgid "" +"Default value for the field (must be a JSON value). Encapsulate strings with" +" double quotes (e.g. \"Foo\")." +msgstr "" +"Valeur par défaut pour le champ (doit être une valeur JSON). Encapsulez des " +"chaînes avec des guillemets doubles (par exemple, « Foo »)." + +#: extras/models/customfields.py:156 +msgid "display weight" +msgstr "poids de l'écran" + +#: extras/models/customfields.py:157 +msgid "Fields with higher weights appear lower in a form." +msgstr "" +"Les champs dont le poids est plus élevé apparaissent plus bas dans un " +"formulaire." + +#: extras/models/customfields.py:162 +msgid "minimum value" +msgstr "valeur minimale" + +#: extras/models/customfields.py:163 +msgid "Minimum allowed value (for numeric fields)" +msgstr "Valeur minimale autorisée (pour les champs numériques)" + +#: extras/models/customfields.py:168 +msgid "maximum value" +msgstr "valeur maximale" + +#: extras/models/customfields.py:169 +msgid "Maximum allowed value (for numeric fields)" +msgstr "Valeur maximale autorisée (pour les champs numériques)" + +#: extras/models/customfields.py:175 +msgid "validation regex" +msgstr "regex de validation" + +#: extras/models/customfields.py:177 +#, python-brace-format +msgid "" +"Regular expression to enforce on text field values. Use ^ and $ to force " +"matching of entire string. For example, ^[A-Z]{3}$ will limit " +"values to exactly three uppercase letters." +msgstr "" +"Expression régulière à appliquer aux valeurs des champs de texte. Utilisez ^" +" et $ pour forcer la mise en correspondance de la chaîne entière. Par " +"exemple, ^ [DE A À Z]{3}$ limitera les valeurs à exactement " +"trois lettres majuscules." + +#: extras/models/customfields.py:185 +msgid "choice set" +msgstr "set de choix" + +#: extras/models/customfields.py:194 +msgid "Specifies whether the custom field is displayed in the UI" +msgstr "" +"Indique si le champ personnalisé est affiché dans l'interface utilisateur" + +#: extras/models/customfields.py:201 +msgid "Specifies whether the custom field value can be edited in the UI" +msgstr "" +"Indique si la valeur du champ personnalisé peut être modifiée dans " +"l'interface utilisateur" + +#: extras/models/customfields.py:205 +msgid "is cloneable" +msgstr "est clonable" + +#: extras/models/customfields.py:206 +msgid "Replicate this value when cloning objects" +msgstr "Répliquez cette valeur lors du clonage d'objets" + +#: extras/models/customfields.py:219 +msgid "custom field" +msgstr "champ personnalisé" + +#: extras/models/customfields.py:220 +msgid "custom fields" +msgstr "champs personnalisés" + +#: extras/models/customfields.py:309 +#, python-brace-format +msgid "Invalid default value \"{value}\": {error}" +msgstr "Valeur par défaut non valide »{value}« : {error}" + +#: extras/models/customfields.py:316 +msgid "A minimum value may be set only for numeric fields" +msgstr "" +"Une valeur minimale ne peut être définie que pour les champs numériques" + +#: extras/models/customfields.py:318 +msgid "A maximum value may be set only for numeric fields" +msgstr "" +"Une valeur maximale ne peut être définie que pour les champs numériques" + +#: extras/models/customfields.py:328 +msgid "" +"Regular expression validation is supported only for text and URL fields" +msgstr "" +"La validation des expressions régulières est prise en charge uniquement pour" +" les champs de texte et d'URL" + +#: extras/models/customfields.py:338 +msgid "Selection fields must specify a set of choices." +msgstr "Les champs de sélection doivent spécifier un ensemble de choix." + +#: extras/models/customfields.py:342 +msgid "Choices may be set only on selection fields." +msgstr "Les choix ne peuvent être définis que sur les champs de sélection." + +#: extras/models/customfields.py:349 +msgid "Object fields must define an object type." +msgstr "Les champs d'objet doivent définir un type d'objet." + +#: extras/models/customfields.py:354 +#, python-brace-format +msgid "{type} fields may not define an object type." +msgstr "{type} les champs ne peuvent pas définir de type d'objet." + +#: extras/models/customfields.py:434 +msgid "True" +msgstr "Vrai" + +#: extras/models/customfields.py:435 +msgid "False" +msgstr "Faux" + +#: extras/models/customfields.py:517 +#, python-brace-format +msgid "Values must match this regex: {regex}" +msgstr "" +"Les valeurs doivent correspondre à cette expression régulière : " +"{regex}" + +#: extras/models/customfields.py:612 +msgid "Value must be a string." +msgstr "La valeur doit être une chaîne." + +#: extras/models/customfields.py:614 +#, python-brace-format +msgid "Value must match regex '{regex}'" +msgstr "La valeur doit correspondre à « regex »{regex}'" + +#: extras/models/customfields.py:619 +msgid "Value must be an integer." +msgstr "La valeur doit être un entier." + +#: extras/models/customfields.py:622 extras/models/customfields.py:637 +#, python-brace-format +msgid "Value must be at least {minimum}" +msgstr "La valeur doit être d'au moins {minimum}" + +#: extras/models/customfields.py:626 extras/models/customfields.py:641 +#, python-brace-format +msgid "Value must not exceed {maximum}" +msgstr "La valeur ne doit pas dépasser {maximum}" + +#: extras/models/customfields.py:634 +msgid "Value must be a decimal." +msgstr "La valeur doit être une décimale." + +#: extras/models/customfields.py:646 +msgid "Value must be true or false." +msgstr "La valeur doit être vraie ou fausse." + +#: extras/models/customfields.py:654 +msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." +msgstr "Les valeurs de date doivent être au format ISO 8601 (AAAA-MM-JJ)." + +#: extras/models/customfields.py:663 +msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." +msgstr "" +"Les valeurs de date et d'heure doivent être au format ISO 8601 (YYYY-MM-DD " +"HH:MM:SS)." + +#: extras/models/customfields.py:670 +#, python-brace-format +msgid "Invalid choice ({value}) for choice set {choiceset}." +msgstr "Choix non valide ({value}) pour le set de choix {choiceset}." + +#: extras/models/customfields.py:680 +#, python-brace-format +msgid "Invalid choice(s) ({value}) for choice set {choiceset}." +msgstr "Choix (s) non valide ({value}) pour le set de choix {choiceset}." + +#: extras/models/customfields.py:689 +#, python-brace-format +msgid "Value must be an object ID, not {type}" +msgstr "La valeur doit être un identifiant d'objet, et non {type}" + +#: extras/models/customfields.py:695 +#, python-brace-format +msgid "Value must be a list of object IDs, not {type}" +msgstr "La valeur doit être une liste d'identifiants d'objets, et non {type}" + +#: extras/models/customfields.py:699 +#, python-brace-format +msgid "Found invalid object ID: {id}" +msgstr "ID d'objet non valide trouvé : {id}" + +#: extras/models/customfields.py:702 +msgid "Required field cannot be empty." +msgstr "Le champ obligatoire ne peut pas être vide." + +#: extras/models/customfields.py:721 +msgid "Base set of predefined choices (optional)" +msgstr "Ensemble de base de choix prédéfinis (facultatif)" + +#: extras/models/customfields.py:733 +msgid "Choices are automatically ordered alphabetically" +msgstr "Les choix sont automatiquement classés par ordre alphabétique" + +#: extras/models/customfields.py:740 +msgid "custom field choice set" +msgstr "ensemble de choix de champs personnalisés" + +#: extras/models/customfields.py:741 +msgid "custom field choice sets" +msgstr "ensembles de choix de champs personnalisés" + +#: extras/models/customfields.py:777 +msgid "Must define base or extra choices." +msgstr "Doit définir des choix de base ou supplémentaires." + +#: extras/models/dashboard.py:19 +msgid "layout" +msgstr "disposition" + +#: extras/models/dashboard.py:23 +msgid "config" +msgstr "config" + +#: extras/models/dashboard.py:28 +msgid "dashboard" +msgstr "tableau de bord" + +#: extras/models/dashboard.py:29 +msgid "dashboards" +msgstr "tableaux de bord" + +#: extras/models/models.py:49 +msgid "object types" +msgstr "types d'objets" + +#: extras/models/models.py:50 +msgid "The object(s) to which this rule applies." +msgstr "Le ou les objets auxquels cette règle s'applique." + +#: extras/models/models.py:63 +msgid "on create" +msgstr "lors de la création" + +#: extras/models/models.py:65 +msgid "Triggers when a matching object is created." +msgstr "Se déclenche lorsqu'un objet correspondant est créé." + +#: extras/models/models.py:68 +msgid "on update" +msgstr "sur mise à jour" + +#: extras/models/models.py:70 +msgid "Triggers when a matching object is updated." +msgstr "Se déclenche lorsqu'un objet correspondant est mis à jour." + +#: extras/models/models.py:73 +msgid "on delete" +msgstr "lors de la suppression" + +#: extras/models/models.py:75 +msgid "Triggers when a matching object is deleted." +msgstr "Se déclenche lorsqu'un objet correspondant est supprimé." + +#: extras/models/models.py:78 +msgid "on job start" +msgstr "au début de la tâche" + +#: extras/models/models.py:80 +msgid "Triggers when a job for a matching object is started." +msgstr "Se déclenche lorsqu'une tâche est lancée pour un objet correspondant." + +#: extras/models/models.py:83 +msgid "on job end" +msgstr "en fin de travail" + +#: extras/models/models.py:85 +msgid "Triggers when a job for a matching object terminates." +msgstr "Se déclenche lorsqu'une tâche pour un objet correspondant se termine." + +#: extras/models/models.py:92 +msgid "conditions" +msgstr "conditions" + +#: extras/models/models.py:95 +msgid "" +"A set of conditions which determine whether the event will be generated." +msgstr "Un ensemble de conditions qui déterminent si l'événement sera généré." + +#: extras/models/models.py:103 +msgid "action type" +msgstr "type d'action" + +#: extras/models/models.py:126 +msgid "Additional data to pass to the action object" +msgstr "Données supplémentaires à transmettre à l'objet d'action" + +#: extras/models/models.py:138 +msgid "event rule" +msgstr "règle de l'événement" + +#: extras/models/models.py:139 +msgid "event rules" +msgstr "règles de l'événement" + +#: extras/models/models.py:155 +msgid "" +"At least one event type must be selected: create, update, delete, job start," +" and/or job end." +msgstr "" +"Au moins un type d'événement doit être sélectionné : création, mise à jour, " +"suppression, début et/ou fin de tâche." + +#: extras/models/models.py:196 +msgid "" +"This URL will be called using the HTTP method defined when the webhook is " +"called. Jinja2 template processing is supported with the same context as the" +" request body." +msgstr "" +"Cette URL sera appelée à l'aide de la méthode HTTP définie lors de l'appel " +"du webhook. Le traitement du modèle Jinja2 est pris en charge dans le même " +"contexte que le corps de la requête." + +#: extras/models/models.py:211 +msgid "" +"The complete list of official content types is available here." +msgstr "" +"La liste complète des types de contenu officiels est disponible ici." + +#: extras/models/models.py:216 +msgid "additional headers" +msgstr "en-têtes supplémentaires" + +#: extras/models/models.py:219 +msgid "" +"User-supplied HTTP headers to be sent with the request in addition to the " +"HTTP content type. Headers should be defined in the format Name: " +"Value. Jinja2 template processing is supported with the same context " +"as the request body (below)." +msgstr "" +"En-têtes HTTP fournis par l'utilisateur à envoyer avec la demande en plus du" +" type de contenu HTTP. Les en-têtes doivent être définis au format " +"Nom : Value. Le traitement du modèle Jinja2 est pris en charge " +"dans le même contexte que le corps de la requête (ci-dessous)." + +#: extras/models/models.py:225 +msgid "body template" +msgstr "modèle de carrosserie" + +#: extras/models/models.py:228 +msgid "" +"Jinja2 template for a custom request body. If blank, a JSON object " +"representing the change will be included. Available context data includes: " +"event, model, timestamp, " +"username, request_id, and data." +msgstr "" +"Modèle Jinja2 pour un corps de requête personnalisé. Si ce champ est vide, " +"un objet JSON représentant la modification sera inclus. Les données " +"contextuelles disponibles incluent : événement, " +"modèle, horodatage, nom " +"d'utilisateur, identifiant_demande, et " +"données." + +#: extras/models/models.py:234 +msgid "secret" +msgstr "secret" + +#: extras/models/models.py:238 +msgid "" +"When provided, the request will include a X-Hook-Signature " +"header containing a HMAC hex digest of the payload body using the secret as " +"the key. The secret is not transmitted in the request." +msgstr "" +"Lorsqu'elle sera fournie, la demande comprendra un Signature " +"X-Hook en-tête contenant un condensé hexadécimal HMAC du corps de la " +"charge utile en utilisant le secret comme clé. Le secret n'est pas transmis " +"dans la demande." + +#: extras/models/models.py:245 +msgid "Enable SSL certificate verification. Disable with caution!" +msgstr "" +"Activez la vérification des certificats SSL. Désactivez avec précaution !" + +#: extras/models/models.py:251 templates/extras/webhook.html:62 +msgid "CA File Path" +msgstr "Chemin du fichier CA" + +#: extras/models/models.py:253 +msgid "" +"The specific CA certificate file to use for SSL verification. Leave blank to" +" use the system defaults." +msgstr "" +"Le fichier de certificat CA spécifique à utiliser pour la vérification SSL. " +"Laissez ce champ vide pour utiliser les paramètres par défaut du système." + +#: extras/models/models.py:264 +msgid "webhook" +msgstr "webhook" + +#: extras/models/models.py:265 +msgid "webhooks" +msgstr "webhooks" + +#: extras/models/models.py:283 +msgid "Do not specify a CA certificate file if SSL verification is disabled." +msgstr "" +"Ne spécifiez pas de fichier de certificat CA si la vérification SSL est " +"désactivée." + +#: extras/models/models.py:323 +msgid "The object type(s) to which this link applies." +msgstr "Le ou les types d'objets auxquels ce lien s'applique." + +#: extras/models/models.py:335 +msgid "link text" +msgstr "texte du lien" + +#: extras/models/models.py:336 +msgid "Jinja2 template code for link text" +msgstr "Code modèle Jinja2 pour le texte du lien" + +#: extras/models/models.py:339 +msgid "link URL" +msgstr "URL du lien" + +#: extras/models/models.py:340 +msgid "Jinja2 template code for link URL" +msgstr "Code modèle Jinja2 pour l'URL du lien" + +#: extras/models/models.py:350 +msgid "Links with the same group will appear as a dropdown menu" +msgstr "Les liens avec le même groupe apparaîtront dans un menu déroulant" + +#: extras/models/models.py:353 +msgid "button class" +msgstr "classe de boutons" + +#: extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" +"La classe du premier lien d'un groupe sera utilisée pour le bouton déroulant" + +#: extras/models/models.py:360 +msgid "new window" +msgstr "nouvelle fenêtre" + +#: extras/models/models.py:362 +msgid "Force link to open in a new window" +msgstr "Forcer l'ouverture du lien dans une nouvelle fenêtre" + +#: extras/models/models.py:371 +msgid "custom link" +msgstr "lien personnalisé" + +#: extras/models/models.py:372 +msgid "custom links" +msgstr "liens personnalisés" + +#: extras/models/models.py:419 +msgid "The object type(s) to which this template applies." +msgstr "Le ou les types d'objets auxquels ce modèle s'applique." + +#: extras/models/models.py:432 +msgid "" +"Jinja2 template code. The list of objects being exported is passed as a " +"context variable named queryset." +msgstr "" +"Code du modèle Jinja2. La liste des objets exportés est transmise sous forme" +" de variable de contexte nommée ensemble de requêtes." + +#: extras/models/models.py:440 +msgid "Defaults to text/plain; charset=utf-8" +msgstr "" +"La valeur par défaut est texte/plain ; jeu de caractères = " +"utf-8" + +#: extras/models/models.py:443 +msgid "file extension" +msgstr "extension de fichier" + +#: extras/models/models.py:446 +msgid "Extension to append to the rendered filename" +msgstr "Extension à ajouter au nom de fichier affiché" + +#: extras/models/models.py:449 +msgid "as attachment" +msgstr "en pièce jointe" + +#: extras/models/models.py:451 +msgid "Download file as attachment" +msgstr "Télécharger le fichier en pièce jointe" + +#: extras/models/models.py:460 +msgid "export template" +msgstr "modèle d'exportation" + +#: extras/models/models.py:461 +msgid "export templates" +msgstr "modèles d'exportation" + +#: extras/models/models.py:478 +#, python-brace-format +msgid "\"{name}\" is a reserved name. Please choose a different name." +msgstr "«{name}« est un nom réservé. Veuillez choisir un autre nom." + +#: extras/models/models.py:528 +msgid "The object type(s) to which this filter applies." +msgstr "Le ou les types d'objets auxquels ce filtre s'applique." + +#: extras/models/models.py:560 +msgid "shared" +msgstr "partagé" + +#: extras/models/models.py:573 +msgid "saved filter" +msgstr "filtre enregistré" + +#: extras/models/models.py:574 +msgid "saved filters" +msgstr "filtres enregistrés" + +#: extras/models/models.py:592 +msgid "Filter parameters must be stored as a dictionary of keyword arguments." +msgstr "" +"Les paramètres de filtre doivent être stockés sous la forme d'un " +"dictionnaire d'arguments de mots-clés." + +#: extras/models/models.py:620 +msgid "image height" +msgstr "hauteur de l'image" + +#: extras/models/models.py:623 +msgid "image width" +msgstr "largeur de l'image" + +#: extras/models/models.py:640 +msgid "image attachment" +msgstr "image en pièce jointe" + +#: extras/models/models.py:641 +msgid "image attachments" +msgstr "images jointes" + +#: extras/models/models.py:655 +#, python-brace-format +msgid "Image attachments cannot be assigned to this object type ({type})." +msgstr "" +"Les images jointes ne peuvent pas être attribuées à ce type d'objet " +"({type})." + +#: extras/models/models.py:718 +msgid "kind" +msgstr "sorte" + +#: extras/models/models.py:732 +msgid "journal entry" +msgstr "entrée de journal" + +#: extras/models/models.py:733 +msgid "journal entries" +msgstr "entrées de journal" + +#: extras/models/models.py:748 +#, python-brace-format +msgid "Journaling is not supported for this object type ({type})." +msgstr "" +"La journalisation n'est pas prise en charge pour ce type d'objet ({type})." + +#: extras/models/models.py:790 +msgid "bookmark" +msgstr "signet" + +#: extras/models/models.py:791 +msgid "bookmarks" +msgstr "signets" + +#: extras/models/models.py:804 +#, python-brace-format +msgid "Bookmarks cannot be assigned to this object type ({type})." +msgstr "Les signets ne peuvent pas être affectés à ce type d'objet ({type})." + +#: extras/models/reports.py:46 +msgid "report module" +msgstr "module de rapport" + +#: extras/models/reports.py:47 +msgid "report modules" +msgstr "modules de rapports" + +#: extras/models/scripts.py:46 +msgid "script module" +msgstr "module de script" + +#: extras/models/scripts.py:47 +msgid "script modules" +msgstr "modules de script" + +#: extras/models/search.py:24 +msgid "timestamp" +msgstr "horodatage" + +#: extras/models/search.py:39 +msgid "field" +msgstr "champ" + +#: extras/models/search.py:47 +msgid "value" +msgstr "valeur" + +#: extras/models/search.py:58 +msgid "cached value" +msgstr "valeur mise en cache" + +#: extras/models/search.py:59 +msgid "cached values" +msgstr "valeurs mises en cache" + +#: extras/models/staging.py:44 +msgid "branch" +msgstr "succursale" + +#: extras/models/staging.py:45 +msgid "branches" +msgstr "branches" + +#: extras/models/staging.py:97 +msgid "staged change" +msgstr "changement par étapes" + +#: extras/models/staging.py:98 +msgid "staged changes" +msgstr "modifications échelonnées" + +#: extras/models/tags.py:40 +msgid "The object type(s) to which this this tag can be applied." +msgstr "Le ou les types d'objets auxquels cette balise peut être appliquée." + +#: extras/models/tags.py:49 +msgid "tag" +msgstr "étiquette" + +#: extras/models/tags.py:50 +msgid "tags" +msgstr "balises" + +#: extras/models/tags.py:78 +msgid "tagged item" +msgstr "article étiqueté" + +#: extras/models/tags.py:79 +msgid "tagged items" +msgstr "articles étiquetés" + +#: extras/signals.py:221 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "La suppression est empêchée par une règle de protection : {message}" + +#: extras/tables/tables.py:44 extras/tables/tables.py:119 +#: extras/tables/tables.py:143 extras/tables/tables.py:208 +#: extras/tables/tables.py:281 +msgid "Content Types" +msgstr "Types de contenu" + +#: extras/tables/tables.py:50 +msgid "Visible" +msgstr "Visible" + +#: extras/tables/tables.py:53 +msgid "Editable" +msgstr "Modifiable" + +#: extras/tables/tables.py:60 templates/extras/customfield.html:48 +msgid "Choice Set" +msgstr "Coffret Choice" + +#: extras/tables/tables.py:68 +msgid "Is Cloneable" +msgstr "Est clonable" + +#: extras/tables/tables.py:98 +msgid "Count" +msgstr "Compter" + +#: extras/tables/tables.py:101 +msgid "Order Alphabetically" +msgstr "Ordre alphabétique" + +#: extras/tables/tables.py:125 templates/extras/customlink.html:34 +msgid "New Window" +msgstr "Nouvelle fenêtre" + +#: extras/tables/tables.py:146 +msgid "As Attachment" +msgstr "En tant que pièce jointe" + +#: extras/tables/tables.py:153 extras/tables/tables.py:367 +#: extras/tables/tables.py:402 templates/core/datafile.html:32 +#: templates/dcim/device/render_config.html:23 +#: templates/extras/configcontext.html:40 +#: templates/extras/configtemplate.html:32 +#: templates/extras/exporttemplate.html:51 +#: templates/generic/bulk_import.html:30 +#: templates/virtualization/virtualmachine/render_config.html:23 +msgid "Data File" +msgstr "Fichier de données" + +#: extras/tables/tables.py:158 extras/tables/tables.py:379 +#: extras/tables/tables.py:407 +msgid "Synced" +msgstr "Synchronisé" + +#: extras/tables/tables.py:178 +msgid "Content Type" +msgstr "Type de contenu" + +#: extras/tables/tables.py:185 +msgid "Image" +msgstr "Image" + +#: extras/tables/tables.py:190 +msgid "Size (Bytes)" +msgstr "Taille (octets)" + +#: extras/tables/tables.py:233 extras/tables/tables.py:326 +#: templates/extras/customfield.html:96 templates/extras/eventrule.html:32 +#: templates/users/objectpermission.html:68 users/tables.py:83 +msgid "Object Types" +msgstr "Types d'objets" + +#: extras/tables/tables.py:255 +msgid "SSL Validation" +msgstr "Validation SSL" + +#: extras/tables/tables.py:278 +msgid "Action Type" +msgstr "Type d'action" + +#: extras/tables/tables.py:296 +msgid "Job Start" +msgstr "Début du travail" + +#: extras/tables/tables.py:299 +msgid "Job End" +msgstr "Fin du travail" + +#: extras/tables/tables.py:436 templates/account/profile.html:20 +#: templates/users/user.html:22 +msgid "Full Name" +msgstr "Nom complet" + +#: extras/tables/tables.py:453 templates/extras/objectchange.html:72 +msgid "Request ID" +msgstr "ID de demande" + +#: extras/tables/tables.py:490 +msgid "Comments (Short)" +msgstr "Commentaires (courts)" + +#: extras/validators.py:13 +#, python-format +msgid "Ensure this value is equal to %(limit_value)s." +msgstr "Assurez-vous que cette valeur est égale à %(limit_value)s." + +#: extras/validators.py:24 +#, python-format +msgid "Ensure this value does not equal %(limit_value)s." +msgstr "Assurez-vous que cette valeur n'est pas égale %(limit_value)s." + +#: extras/validators.py:35 +msgid "This field must be empty." +msgstr "Ce champ doit être vide." + +#: extras/validators.py:50 +msgid "This field must not be empty." +msgstr "Ce champ ne doit pas être vide." + +#: extras/views.py:880 +msgid "Your dashboard has been reset." +msgstr "Votre tableau de bord a été réinitialisé." + +#: ipam/api/field_serializers.py:17 +msgid "Enter a valid IPv4 or IPv6 address with optional mask." +msgstr "Entrez une adresse IPv4 ou IPv6 valide avec un masque facultatif." + +#: ipam/api/field_serializers.py:24 +#, python-brace-format +msgid "Invalid IP address format: {data}" +msgstr "Format d'adresse IP non valide : {data}" + +#: ipam/api/field_serializers.py:37 +msgid "Enter a valid IPv4 or IPv6 prefix and mask in CIDR notation." +msgstr "Entrez un préfixe IPv4 ou IPv6 valide et un masque en notation CIDR." + +#: ipam/api/field_serializers.py:44 +#, python-brace-format +msgid "Invalid IP prefix format: {data}" +msgstr "Format de préfixe IP non valide : {data}" + +#: ipam/choices.py:30 +msgid "Container" +msgstr "Récipient" + +#: ipam/choices.py:72 +msgid "DHCP" +msgstr "DHCP" + +#: ipam/choices.py:73 +msgid "SLAAC" +msgstr "SLAAC" + +#: ipam/choices.py:89 +msgid "Loopback" +msgstr "Bouclage" + +#: ipam/choices.py:90 tenancy/choices.py:18 +msgid "Secondary" +msgstr "Secondaire" + +#: ipam/choices.py:91 +msgid "Anycast" +msgstr "N'importe quel cast" + +#: ipam/choices.py:115 +msgid "Standard" +msgstr "Norme" + +#: ipam/choices.py:120 +msgid "CheckPoint" +msgstr "Point de contrôle" + +#: ipam/choices.py:123 +msgid "Cisco" +msgstr "Cisco" + +#: ipam/choices.py:137 +msgid "Plaintext" +msgstr "Texte brut" + +#: ipam/filtersets.py:47 vpn/filtersets.py:276 +msgid "Import target" +msgstr "Objectif d'importation" + +#: ipam/filtersets.py:53 vpn/filtersets.py:282 +msgid "Import target (name)" +msgstr "Cible d'importation (nom)" + +#: ipam/filtersets.py:58 vpn/filtersets.py:287 +msgid "Export target" +msgstr "Objectif d'exportation" + +#: ipam/filtersets.py:64 vpn/filtersets.py:293 +msgid "Export target (name)" +msgstr "Cible d'exportation (nom)" + +#: ipam/filtersets.py:85 +msgid "Importing VRF" +msgstr "Importation de VRF" + +#: ipam/filtersets.py:91 +msgid "Import VRF (RD)" +msgstr "Importer VRF (RD)" + +#: ipam/filtersets.py:96 +msgid "Exporting VRF" +msgstr "Exportation de fichiers VRF" + +#: ipam/filtersets.py:102 +msgid "Export VRF (RD)" +msgstr "Exporter VRF (RD)" + +#: ipam/filtersets.py:132 ipam/filtersets.py:247 ipam/forms/model_forms.py:229 +#: ipam/tables/ip.py:211 templates/ipam/prefix.html:12 +msgid "Prefix" +msgstr "Préfixe" + +#: ipam/filtersets.py:136 ipam/filtersets.py:175 ipam/filtersets.py:198 +msgid "RIR (ID)" +msgstr "RIRE (ID)" + +#: ipam/filtersets.py:142 ipam/filtersets.py:181 ipam/filtersets.py:204 +msgid "RIR (slug)" +msgstr "RIR (limace)" + +#: ipam/filtersets.py:251 +msgid "Within prefix" +msgstr "Dans le préfixe" + +#: ipam/filtersets.py:255 +msgid "Within and including prefix" +msgstr "Dans le préfixe et y compris" + +#: ipam/filtersets.py:259 +msgid "Prefixes which contain this prefix or IP" +msgstr "Préfixes contenant ce préfixe ou cette adresse IP" + +#: ipam/filtersets.py:270 ipam/filtersets.py:538 ipam/forms/bulk_edit.py:326 +#: ipam/forms/filtersets.py:191 ipam/forms/filtersets.py:317 +msgid "Mask length" +msgstr "Longueur du masque" + +#: ipam/filtersets.py:339 vpn/filtersets.py:399 +msgid "VLAN (ID)" +msgstr "VLAN (IDENTIFIANT)" + +#: ipam/filtersets.py:343 vpn/filtersets.py:394 +msgid "VLAN number (1-4094)" +msgstr "Numéro de VLAN (1-4094)" + +#: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 +#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: tenancy/forms/bulk_edit.py:112 +msgid "Address" +msgstr "Adresse" + +#: ipam/filtersets.py:445 +msgid "Ranges which contain this prefix or IP" +msgstr "Plages contenant ce préfixe ou cette adresse IP" + +#: ipam/filtersets.py:473 ipam/filtersets.py:529 +msgid "Parent prefix" +msgstr "Préfixe parent" + +#: ipam/filtersets.py:582 ipam/filtersets.py:812 ipam/filtersets.py:1031 +#: vpn/filtersets.py:357 +msgid "Virtual machine (name)" +msgstr "Machine virtuelle (nom)" + +#: ipam/filtersets.py:587 ipam/filtersets.py:817 ipam/filtersets.py:1025 +#: virtualization/filtersets.py:276 virtualization/filtersets.py:315 +#: vpn/filtersets.py:362 +msgid "Virtual machine (ID)" +msgstr "Machine virtuelle (ID)" + +#: ipam/filtersets.py:593 vpn/filtersets.py:97 vpn/filtersets.py:368 +msgid "Interface (name)" +msgstr "Interface (nom)" + +#: ipam/filtersets.py:598 vpn/filtersets.py:102 vpn/filtersets.py:373 +msgid "Interface (ID)" +msgstr "Interface (ID)" + +#: ipam/filtersets.py:604 vpn/filtersets.py:108 vpn/filtersets.py:379 +msgid "VM interface (name)" +msgstr "Interface de machine virtuelle (nom)" + +#: ipam/filtersets.py:609 vpn/filtersets.py:113 +msgid "VM interface (ID)" +msgstr "Interface de machine virtuelle (ID)" + +#: ipam/filtersets.py:614 +msgid "FHRP group (ID)" +msgstr "Groupe FHRP (ID)" + +#: ipam/filtersets.py:618 +msgid "Is assigned to an interface" +msgstr "Est affecté à une interface" + +#: ipam/filtersets.py:622 +msgid "Is assigned" +msgstr "Est attribué" + +#: ipam/filtersets.py:1036 +msgid "IP address (ID)" +msgstr "Adresse IP (ID)" + +#: ipam/filtersets.py:1042 ipam/models/ip.py:787 +msgid "IP address" +msgstr "Adresse IP" + +#: ipam/filtersets.py:1068 +msgid "Primary IPv4 (ID)" +msgstr "IPv4 principal (ID)" + +#: ipam/filtersets.py:1073 +msgid "Primary IPv6 (ID)" +msgstr "IPv6 principal (ID)" + +#: ipam/forms/bulk_create.py:14 +msgid "Address pattern" +msgstr "Modèle d'adresse" + +#: ipam/forms/bulk_edit.py:85 +msgid "Is private" +msgstr "Est privé" + +#: ipam/forms/bulk_edit.py:106 ipam/forms/bulk_edit.py:135 +#: ipam/forms/bulk_edit.py:160 ipam/forms/bulk_import.py:88 +#: ipam/forms/bulk_import.py:108 ipam/forms/bulk_import.py:128 +#: ipam/forms/filtersets.py:109 ipam/forms/filtersets.py:124 +#: ipam/forms/filtersets.py:147 ipam/forms/model_forms.py:93 +#: ipam/forms/model_forms.py:108 ipam/forms/model_forms.py:130 +#: ipam/forms/model_forms.py:148 ipam/models/asns.py:31 +#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: ipam/tables/asn.py:20 ipam/tables/asn.py:45 +#: templates/ipam/aggregate.html:19 templates/ipam/asn.html:28 +#: templates/ipam/asnrange.html:20 templates/ipam/rir.html:20 +msgid "RIR" +msgstr "RIR" + +#: ipam/forms/bulk_edit.py:168 +msgid "Date added" +msgstr "Date d'ajout" + +#: ipam/forms/bulk_edit.py:229 +msgid "Prefix length" +msgstr "Longueur du préfixe" + +#: ipam/forms/bulk_edit.py:252 ipam/forms/filtersets.py:236 +#: templates/ipam/prefix.html:86 +msgid "Is a pool" +msgstr "C'est une piscine" + +#: ipam/forms/bulk_edit.py:257 ipam/forms/bulk_edit.py:301 +#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#, python-format +msgid "Treat as 100% utilized" +msgstr "Traiter comme utilisé à 100 %" + +#: ipam/forms/bulk_edit.py:349 ipam/models/ip.py:771 +msgid "DNS name" +msgstr "Nom DNS" + +#: ipam/forms/bulk_edit.py:370 ipam/forms/bulk_edit.py:569 +#: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:376 +#: ipam/forms/filtersets.py:511 templates/ipam/fhrpgroup.html:23 +#: templates/ipam/inc/panels/fhrp_groups.html:11 +#: templates/ipam/service.html:35 templates/ipam/servicetemplate.html:20 +msgid "Protocol" +msgstr "Protocole" + +#: ipam/forms/bulk_edit.py:377 ipam/forms/filtersets.py:383 +#: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:27 +msgid "Group ID" +msgstr "ID de groupe" + +#: ipam/forms/bulk_edit.py:382 ipam/forms/filtersets.py:388 +#: wireless/forms/bulk_edit.py:67 wireless/forms/bulk_edit.py:114 +#: wireless/forms/bulk_import.py:62 wireless/forms/bulk_import.py:65 +#: wireless/forms/bulk_import.py:104 wireless/forms/bulk_import.py:107 +#: wireless/forms/filtersets.py:53 wireless/forms/filtersets.py:87 +msgid "Authentication type" +msgstr "Type d'authentification" + +#: ipam/forms/bulk_edit.py:387 ipam/forms/filtersets.py:392 +msgid "Authentication key" +msgstr "Clé d'authentification" + +#: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 +#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: templates/ipam/fhrpgroup.html:51 +#: templates/wireless/inc/authentication_attrs.html:5 +#: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 +#: wireless/forms/filtersets.py:35 wireless/forms/filtersets.py:75 +#: wireless/forms/model_forms.py:56 wireless/forms/model_forms.py:161 +msgid "Authentication" +msgstr "Authentification" + +#: ipam/forms/bulk_edit.py:414 +msgid "Minimum child VLAN VID" +msgstr "VID VLAN minimum pour enfants" + +#: ipam/forms/bulk_edit.py:420 +msgid "Maximum child VLAN VID" +msgstr "VID VLAN maximum pour enfants" + +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +msgid "Scope type" +msgstr "Type de portée" + +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 +msgid "Scope" +msgstr "Champ" + +#: ipam/forms/bulk_edit.py:560 +msgid "Site & Group" +msgstr "Site et groupe" + +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 +#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/tables/services.py:49 templates/ipam/service.html:39 +#: templates/ipam/servicetemplate.html:24 +msgid "Ports" +msgstr "Ports" + +#: ipam/forms/bulk_import.py:47 +msgid "Import route targets" +msgstr "Importer des cibles d'itinéraire" + +#: ipam/forms/bulk_import.py:53 +msgid "Export route targets" +msgstr "Cibles d'itinéraire d'exportation" + +#: ipam/forms/bulk_import.py:91 ipam/forms/bulk_import.py:111 +#: ipam/forms/bulk_import.py:131 +msgid "Assigned RIR" +msgstr "RIR attribué" + +#: ipam/forms/bulk_import.py:181 +msgid "VLAN's group (if any)" +msgstr "Le groupe du VLAN (le cas échéant)" + +#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:219 +#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 +#: templates/ipam/prefix.html:61 templates/ipam/vlan.html:13 +#: templates/ipam/vlan/base.html:6 templates/ipam/vlan_edit.html:10 +#: templates/vpn/l2vpntermination_edit.html:17 +#: templates/wireless/wirelesslan.html:31 vpn/forms/bulk_import.py:299 +#: vpn/forms/filtersets.py:280 vpn/forms/model_forms.py:427 +#: wireless/forms/bulk_edit.py:54 wireless/forms/bulk_import.py:48 +#: wireless/forms/model_forms.py:49 wireless/models.py:101 +msgid "VLAN" +msgstr "VLAN" + +#: ipam/forms/bulk_import.py:307 +msgid "Parent device of assigned interface (if any)" +msgstr "Appareil parent auquel est attribuée l'interface (le cas échéant)" + +#: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 +#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:282 +#: virtualization/filtersets.py:321 virtualization/forms/bulk_edit.py:199 +#: virtualization/forms/bulk_edit.py:325 +#: virtualization/forms/bulk_import.py:146 +#: virtualization/forms/bulk_import.py:207 +#: virtualization/forms/filtersets.py:204 +#: virtualization/forms/filtersets.py:240 +#: virtualization/forms/model_forms.py:291 vpn/forms/bulk_import.py:93 +#: vpn/forms/bulk_import.py:285 +msgid "Virtual machine" +msgstr "Machine virtuelle" + +#: ipam/forms/bulk_import.py:314 +msgid "Parent VM of assigned interface (if any)" +msgstr "VM parent de l'interface attribuée (le cas échéant)" + +#: ipam/forms/bulk_import.py:321 +msgid "Assigned interface" +msgstr "Interface attribuée" + +#: ipam/forms/bulk_import.py:324 +msgid "Is primary" +msgstr "Est principal" + +#: ipam/forms/bulk_import.py:325 +msgid "Make this the primary IP for the assigned device" +msgstr "Faites-en l'adresse IP principale de l'appareil attribué" + +#: ipam/forms/bulk_import.py:364 +msgid "No device or virtual machine specified; cannot set as primary IP" +msgstr "" +"Aucun périphérique ou machine virtuelle spécifié ; impossible de le définir " +"comme adresse IP principale" + +#: ipam/forms/bulk_import.py:368 +msgid "No interface specified; cannot set as primary IP" +msgstr "" +"Aucune interface spécifiée ; impossible de définir comme adresse IP " +"principale" + +#: ipam/forms/bulk_import.py:397 +msgid "Auth type" +msgstr "Type d'authentification" + +#: ipam/forms/bulk_import.py:412 +msgid "Scope type (app & model)" +msgstr "Type de scope (application et modèle)" + +#: ipam/forms/bulk_import.py:418 +#, python-brace-format +msgid "Minimum child VLAN VID (default: {minimum})" +msgstr "VID minimum du VLAN enfant (par défaut) : {minimum})" + +#: ipam/forms/bulk_import.py:424 +#, python-brace-format +msgid "Maximum child VLAN VID (default: {maximum})" +msgstr "VID VLAN enfant maximal (par défaut) : {maximum})" + +#: ipam/forms/bulk_import.py:448 +msgid "Assigned VLAN group" +msgstr "Groupe VLAN attribué" + +#: ipam/forms/bulk_import.py:479 ipam/forms/bulk_import.py:505 +msgid "IP protocol" +msgstr "Protocole IP" + +#: ipam/forms/bulk_import.py:493 +msgid "Required if not assigned to a VM" +msgstr "Obligatoire s'il n'est pas attribué à une machine virtuelle" + +#: ipam/forms/bulk_import.py:500 +msgid "Required if not assigned to a device" +msgstr "Obligatoire s'il n'est pas attribué à un appareil" + +#: ipam/forms/bulk_import.py:525 +#, python-brace-format +msgid "{ip} is not assigned to this device/VM." +msgstr "{ip} n'est pas attribué à cet appareil/à cette machine virtuelle." + +#: ipam/forms/filtersets.py:46 ipam/forms/model_forms.py:60 +#: netbox/navigation/menu.py:177 vpn/forms/model_forms.py:403 +msgid "Route Targets" +msgstr "Cibles de l'itinéraire" + +#: ipam/forms/filtersets.py:52 ipam/forms/model_forms.py:47 +#: vpn/forms/filtersets.py:221 vpn/forms/model_forms.py:390 +msgid "Import targets" +msgstr "Cibles d'importation" + +#: ipam/forms/filtersets.py:57 ipam/forms/model_forms.py:52 +#: vpn/forms/filtersets.py:226 vpn/forms/model_forms.py:395 +msgid "Export targets" +msgstr "Objectifs d'exportation" + +#: ipam/forms/filtersets.py:72 +msgid "Imported by VRF" +msgstr "Importé par VRF" + +#: ipam/forms/filtersets.py:77 +msgid "Exported by VRF" +msgstr "Exporté par VRF" + +#: ipam/forms/filtersets.py:86 ipam/tables/ip.py:89 templates/ipam/rir.html:33 +msgid "Private" +msgstr "Privé" + +#: ipam/forms/filtersets.py:104 ipam/forms/filtersets.py:186 +#: ipam/forms/filtersets.py:261 ipam/forms/filtersets.py:312 +msgid "Address family" +msgstr "Famille d'adresses" + +#: ipam/forms/filtersets.py:118 templates/ipam/asnrange.html:26 +msgid "Range" +msgstr "Gamme" + +#: ipam/forms/filtersets.py:127 +msgid "Start" +msgstr "Démarrer" + +#: ipam/forms/filtersets.py:131 +msgid "End" +msgstr "Fin" + +#: ipam/forms/filtersets.py:181 +msgid "Search within" +msgstr "Rechercher dans" + +#: ipam/forms/filtersets.py:202 ipam/forms/filtersets.py:328 +msgid "Present in VRF" +msgstr "Présent en VRF" + +#: ipam/forms/filtersets.py:243 ipam/forms/filtersets.py:282 +#, python-format +msgid "Marked as 100% utilized" +msgstr "Marqué comme étant utilisé à 100 %" + +#: ipam/forms/filtersets.py:297 +msgid "Device/VM" +msgstr "Appareil/VM" + +#: ipam/forms/filtersets.py:333 +msgid "Assigned Device" +msgstr "Appareil attribué" + +#: ipam/forms/filtersets.py:338 +msgid "Assigned VM" +msgstr "Machine virtuelle attribuée" + +#: ipam/forms/filtersets.py:352 +msgid "Assigned to an interface" +msgstr "Affecté à une interface" + +#: ipam/forms/filtersets.py:359 templates/ipam/ipaddress.html:54 +msgid "DNS Name" +msgstr "Nom DNS" + +#: ipam/forms/filtersets.py:401 ipam/forms/filtersets.py:494 +#: ipam/models/vlans.py:156 templates/ipam/vlan.html:34 +msgid "VLAN ID" +msgstr "IDENTIFIANT DE VLAN" + +#: ipam/forms/filtersets.py:433 +msgid "Minimum VID" +msgstr "VID minimum" + +#: ipam/forms/filtersets.py:439 +msgid "Maximum VID" +msgstr "VID maximum" + +#: ipam/forms/filtersets.py:516 +msgid "Port" +msgstr "Port" + +#: ipam/forms/filtersets.py:537 ipam/tables/vlans.py:191 +#: templates/ipam/ipaddress_edit.html:47 templates/ipam/service_create.html:22 +#: templates/ipam/service_edit.html:21 +#: templates/virtualization/virtualdisk.html:22 +#: templates/virtualization/virtualmachine.html:13 +#: templates/virtualization/vminterface.html:24 +#: templates/vpn/l2vpntermination_edit.html:27 +#: templates/vpn/tunneltermination.html:26 +#: virtualization/forms/filtersets.py:189 +#: virtualization/forms/filtersets.py:234 +#: virtualization/forms/model_forms.py:223 +#: virtualization/tables/virtualmachines.py:115 +#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 +#: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:269 +msgid "Virtual Machine" +msgstr "Machine virtuelle" + +#: ipam/forms/model_forms.py:113 ipam/tables/ip.py:116 +#: templates/ipam/aggregate.html:11 templates/ipam/prefix.html:39 +msgid "Aggregate" +msgstr "Agrégat" + +#: ipam/forms/model_forms.py:134 templates/ipam/asnrange.html:12 +msgid "ASN Range" +msgstr "Gamme ASN" + +#: ipam/forms/model_forms.py:230 +msgid "Site/VLAN Assignment" +msgstr "Affectation de site/VLAN" + +#: ipam/forms/model_forms.py:256 templates/ipam/iprange.html:11 +msgid "IP Range" +msgstr "Gamme IP" + +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 +msgid "FHRP Group" +msgstr "Groupe FHRP" + +#: ipam/forms/model_forms.py:300 +msgid "Make this the primary IP for the device/VM" +msgstr "" +"Faites-en l'adresse IP principale de l'appareil/de la machine virtuelle" + +#: ipam/forms/model_forms.py:351 +msgid "An IP address can only be assigned to a single object." +msgstr "Une adresse IP ne peut être attribuée qu'à un seul objet." + +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:878 +msgid "" +"Cannot reassign IP address while it is designated as the primary IP for the " +"parent object" +msgstr "" +"Impossible de réattribuer l'adresse IP lorsqu'elle est désignée comme " +"adresse IP principale pour l'objet parent" + +#: ipam/forms/model_forms.py:367 +msgid "" +"Only IP addresses assigned to an interface can be designated as primary IPs." +msgstr "" +"Seules les adresses IP attribuées à une interface peuvent être désignées " +"comme adresses IP principales." + +#: ipam/forms/model_forms.py:373 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "" +"{ip} est un identifiant réseau, qui ne peut pas être attribué à une " +"interface." + +#: ipam/forms/model_forms.py:379 +#, python-brace-format +msgid "" +"{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "" +"{ip} est une adresse de diffusion, qui ne peut pas être attribuée à une " +"interface." + +#: ipam/forms/model_forms.py:456 +msgid "Virtual IP Address" +msgstr "Adresse IP virtuelle" + +#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 +#: templates/ipam/vlangroup.html:27 +msgid "VLAN Group" +msgstr "Groupe VLAN" + +#: ipam/forms/model_forms.py:599 +msgid "Child VLANs" +msgstr "VLAN pour enfants" + +#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +msgid "" +"Comma-separated list of one or more port numbers. A range may be specified " +"using a hyphen." +msgstr "" +"Liste séparée par des virgules d'un ou de plusieurs numéros de port. Une " +"plage peut être spécifiée à l'aide d'un trait d'union." + +#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +msgid "Service Template" +msgstr "Modèle de service" + +#: ipam/forms/model_forms.py:724 +msgid "Service template" +msgstr "Modèle de service" + +#: ipam/models/asns.py:34 +msgid "start" +msgstr "démarrer" + +#: ipam/models/asns.py:51 +msgid "ASN range" +msgstr "Gamme ASN" + +#: ipam/models/asns.py:52 +msgid "ASN ranges" +msgstr "Gammes ASN" + +#: ipam/models/asns.py:72 +#, python-brace-format +msgid "Starting ASN ({start}) must be lower than ending ASN ({end})." +msgstr "" +"Démarrage de l'ASN ({start}) doit être inférieur à l'ASN final ({end})." + +#: ipam/models/asns.py:104 +msgid "Regional Internet Registry responsible for this AS number space" +msgstr "Registre Internet régional responsable de cet espace numérique AS" + +#: ipam/models/asns.py:109 +msgid "16- or 32-bit autonomous system number" +msgstr "Numéro de système autonome 16 ou 32 bits" + +#: ipam/models/fhrp.py:22 +msgid "group ID" +msgstr "ID de groupe" + +#: ipam/models/fhrp.py:30 ipam/models/services.py:22 +msgid "protocol" +msgstr "protocole" + +#: ipam/models/fhrp.py:38 wireless/models.py:27 +msgid "authentication type" +msgstr "type d'authentification" + +#: ipam/models/fhrp.py:43 +msgid "authentication key" +msgstr "clé d'authentification" + +#: ipam/models/fhrp.py:56 +msgid "FHRP group" +msgstr "Groupe FHRP" + +#: ipam/models/fhrp.py:57 +msgid "FHRP groups" +msgstr "Groupes FHRP" + +#: ipam/models/fhrp.py:93 tenancy/models/contacts.py:134 +msgid "priority" +msgstr "priorité" + +#: ipam/models/fhrp.py:113 +msgid "FHRP group assignment" +msgstr "Affectation au groupe FHRP" + +#: ipam/models/fhrp.py:114 +msgid "FHRP group assignments" +msgstr "Missions du groupe FHRP" + +#: ipam/models/ip.py:64 +msgid "private" +msgstr "privé" + +#: ipam/models/ip.py:65 +msgid "IP space managed by this RIR is considered private" +msgstr "L'espace IP géré par ce RIR est considéré comme privé" + +#: ipam/models/ip.py:71 netbox/navigation/menu.py:170 +msgid "RIRs" +msgstr "IR" + +#: ipam/models/ip.py:83 +msgid "IPv4 or IPv6 network" +msgstr "Réseau IPv4 ou IPv6" + +#: ipam/models/ip.py:90 +msgid "Regional Internet Registry responsible for this IP space" +msgstr "Registre Internet régional responsable de cet espace IP" + +#: ipam/models/ip.py:100 +msgid "date added" +msgstr "date d'ajout" + +#: ipam/models/ip.py:114 +msgid "aggregate" +msgstr "global" + +#: ipam/models/ip.py:115 +msgid "aggregates" +msgstr "agrégats" + +#: ipam/models/ip.py:131 +msgid "Cannot create aggregate with /0 mask." +msgstr "Impossible de créer un agrégat avec le masque /0." + +#: ipam/models/ip.py:143 +#, python-brace-format +msgid "" +"Aggregates cannot overlap. {prefix} is already covered by an existing " +"aggregate ({aggregate})." +msgstr "" +"Les agrégats ne peuvent pas se chevaucher. {prefix} est déjà couvert par un " +"agrégat existant ({aggregate})." + +#: ipam/models/ip.py:157 +#, python-brace-format +msgid "" +"Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " +"({aggregate})." +msgstr "" +"Les préfixes ne peuvent pas chevaucher des agrégats. {prefix} couvre un " +"agrégat existant ({aggregate})." + +#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +msgid "role" +msgstr "rôle" + +#: ipam/models/ip.py:200 +msgid "roles" +msgstr "rôles" + +#: ipam/models/ip.py:216 ipam/models/ip.py:292 +msgid "prefix" +msgstr "préfixe" + +#: ipam/models/ip.py:217 +msgid "IPv4 or IPv6 network with mask" +msgstr "Réseau IPv4 ou IPv6 avec masque" + +#: ipam/models/ip.py:253 +msgid "Operational status of this prefix" +msgstr "État opérationnel de ce préfixe" + +#: ipam/models/ip.py:261 +msgid "The primary function of this prefix" +msgstr "La fonction principale de ce préfixe" + +#: ipam/models/ip.py:264 +msgid "is a pool" +msgstr "est une piscine" + +#: ipam/models/ip.py:266 +msgid "All IP addresses within this prefix are considered usable" +msgstr "" +"Toutes les adresses IP comprises dans ce préfixe sont considérées comme " +"utilisables" + +#: ipam/models/ip.py:269 ipam/models/ip.py:536 +msgid "mark utilized" +msgstr "marque utilisée" + +#: ipam/models/ip.py:293 +msgid "prefixes" +msgstr "préfixes" + +#: ipam/models/ip.py:316 +msgid "Cannot create prefix with /0 mask." +msgstr "Impossible de créer un préfixe avec le masque /0." + +#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#, python-brace-format +msgid "VRF {vrf}" +msgstr "VRF {vrf}" + +#: ipam/models/ip.py:323 ipam/models/ip.py:854 +msgid "global table" +msgstr "tableau global" + +#: ipam/models/ip.py:325 +#, python-brace-format +msgid "Duplicate prefix found in {table}: {prefix}" +msgstr "Préfixe dupliqué trouvé dans {table}: {prefix}" + +#: ipam/models/ip.py:494 +msgid "start address" +msgstr "adresse de départ" + +#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +msgid "IPv4 or IPv6 address (with mask)" +msgstr "Adresse IPv4 ou IPv6 (avec masque)" + +#: ipam/models/ip.py:498 +msgid "end address" +msgstr "adresse finale" + +#: ipam/models/ip.py:525 +msgid "Operational status of this range" +msgstr "État opérationnel de cette gamme" + +#: ipam/models/ip.py:533 +msgid "The primary function of this range" +msgstr "La principale fonction de cette gamme" + +#: ipam/models/ip.py:547 +msgid "IP range" +msgstr "plage IP" + +#: ipam/models/ip.py:548 +msgid "IP ranges" +msgstr "Gammes IP" + +#: ipam/models/ip.py:564 +msgid "Starting and ending IP address versions must match" +msgstr "Les versions des adresses IP de début et de fin doivent correspondre" + +#: ipam/models/ip.py:570 +msgid "Starting and ending IP address masks must match" +msgstr "Les masques d'adresse IP de début et de fin doivent correspondre" + +#: ipam/models/ip.py:577 +#, python-brace-format +msgid "" +"Ending address must be lower than the starting address ({start_address})" +msgstr "" +"L'adresse de fin doit être inférieure à l'adresse de départ " +"({start_address})" + +#: ipam/models/ip.py:589 +#, python-brace-format +msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" +msgstr "" +"Les adresses définies se chevauchent avec la plage {overlapping_range} en " +"VRF {vrf}" + +#: ipam/models/ip.py:598 +#, python-brace-format +msgid "Defined range exceeds maximum supported size ({max_size})" +msgstr "" +"La plage définie dépasse la taille maximale prise en charge ({max_size})" + +#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +msgid "address" +msgstr "adresse" + +#: ipam/models/ip.py:733 +msgid "The operational status of this IP" +msgstr "L'état opérationnel de cette adresse IP" + +#: ipam/models/ip.py:740 +msgid "The functional role of this IP" +msgstr "Le rôle fonctionnel de cette propriété intellectuelle" + +#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:75 +msgid "NAT (inside)" +msgstr "NAT (intérieur)" + +#: ipam/models/ip.py:765 +msgid "The IP for which this address is the \"outside\" IP" +msgstr "" +"L'adresse IP pour laquelle cette adresse est l'adresse IP « extérieure »" + +#: ipam/models/ip.py:772 +msgid "Hostname or FQDN (not case-sensitive)" +msgstr "Nom d'hôte ou FQDN (pas de distinction majuscules/minuscules)" + +#: ipam/models/ip.py:788 ipam/models/services.py:94 +msgid "IP addresses" +msgstr "Adresses IP" + +#: ipam/models/ip.py:844 +msgid "Cannot create IP address with /0 mask." +msgstr "Impossible de créer une adresse IP avec le masque /0." + +#: ipam/models/ip.py:856 +#, python-brace-format +msgid "Duplicate IP address found in {table}: {ipaddress}" +msgstr "Adresse IP dupliquée trouvée dans {table}: {ipaddress}" + +#: ipam/models/ip.py:885 +msgid "Only IPv6 addresses can be assigned SLAAC status" +msgstr "Seules les adresses IPv6 peuvent se voir attribuer le statut SLAAC" + +#: ipam/models/services.py:33 +msgid "port numbers" +msgstr "numéros de port" + +#: ipam/models/services.py:59 +msgid "service template" +msgstr "modèle de service" + +#: ipam/models/services.py:60 +msgid "service templates" +msgstr "modèles de services" + +#: ipam/models/services.py:95 +msgid "The specific IP addresses (if any) to which this service is bound" +msgstr "" +"Les adresses IP spécifiques (le cas échéant) auxquelles ce service est lié" + +#: ipam/models/services.py:102 +msgid "service" +msgstr "service" + +#: ipam/models/services.py:103 +msgid "services" +msgstr "services" + +#: ipam/models/services.py:117 +msgid "" +"A service cannot be associated with both a device and a virtual machine." +msgstr "" +"Un service ne peut pas être associé à la fois à un appareil et à une machine" +" virtuelle." + +#: ipam/models/services.py:119 +msgid "" +"A service must be associated with either a device or a virtual machine." +msgstr "" +"Un service doit être associé à un appareil ou à une machine virtuelle." + +#: ipam/models/vlans.py:49 +msgid "minimum VLAN ID" +msgstr "ID de VLAN minimal" + +#: ipam/models/vlans.py:55 +msgid "Lowest permissible ID of a child VLAN" +msgstr "ID le plus bas autorisé d'un VLAN enfant" + +#: ipam/models/vlans.py:58 +msgid "maximum VLAN ID" +msgstr "ID VLAN maximal" + +#: ipam/models/vlans.py:64 +msgid "Highest permissible ID of a child VLAN" +msgstr "ID le plus élevé autorisé d'un VLAN enfant" + +#: ipam/models/vlans.py:85 +msgid "VLAN groups" +msgstr "groupes VLAN" + +#: ipam/models/vlans.py:95 +msgid "Cannot set scope_type without scope_id." +msgstr "Impossible de définir scope_type sans scope_id." + +#: ipam/models/vlans.py:97 +msgid "Cannot set scope_id without scope_type." +msgstr "Impossible de définir scope_id sans scope_type." + +#: ipam/models/vlans.py:102 +msgid "Maximum child VID must be greater than or equal to minimum child VID" +msgstr "" +"La VID maximale pour les enfants doit être supérieure ou égale à la VID " +"minimale pour les enfants" + +#: ipam/models/vlans.py:145 +msgid "The specific site to which this VLAN is assigned (if any)" +msgstr "Le site spécifique auquel ce VLAN est attribué (le cas échéant)" + +#: ipam/models/vlans.py:153 +msgid "VLAN group (optional)" +msgstr "Groupe VLAN (facultatif)" + +#: ipam/models/vlans.py:161 +msgid "Numeric VLAN ID (1-4094)" +msgstr "ID VLAN numérique (1-4094)" + +#: ipam/models/vlans.py:179 +msgid "Operational status of this VLAN" +msgstr "État opérationnel de ce VLAN" + +#: ipam/models/vlans.py:187 +msgid "The primary function of this VLAN" +msgstr "La principale fonction de ce VLAN" + +#: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 +#: ipam/views.py:940 netbox/navigation/menu.py:181 +#: netbox/navigation/menu.py:183 +msgid "VLANs" +msgstr "VLAN" + +#: ipam/models/vlans.py:230 +#, python-brace-format +msgid "" +"VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " +"site {site}." +msgstr "" +"Le VLAN est attribué au groupe {group} (champ d'application : {scope}) ; ne " +"peut pas également être attribué au site {site}." + +#: ipam/models/vlans.py:238 +#, python-brace-format +msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgstr "" +"Le VID doit être compris entre {minimum} et {maximum} pour les VLAN du " +"groupe {group}" + +#: ipam/models/vrfs.py:30 +msgid "route distinguisher" +msgstr "Distincteur d'itinéraire" + +#: ipam/models/vrfs.py:31 +msgid "Unique route distinguisher (as defined in RFC 4364)" +msgstr "Distincteur d'itinéraire unique (tel que défini dans la RFC 4364)" + +#: ipam/models/vrfs.py:42 +msgid "enforce unique space" +msgstr "renforcer un espace unique" + +#: ipam/models/vrfs.py:43 +msgid "Prevent duplicate prefixes/IP addresses within this VRF" +msgstr "Empêchez les préfixes/adresses IP dupliqués dans ce VRF" + +#: ipam/models/vrfs.py:63 netbox/navigation/menu.py:174 +#: netbox/navigation/menu.py:176 +msgid "VRFs" +msgstr "VRF" + +#: ipam/models/vrfs.py:82 +msgid "Route target value (formatted in accordance with RFC 4360)" +msgstr "Valeur cible de l'itinéraire (formatée conformément à la RFC 4360)" + +#: ipam/models/vrfs.py:94 +msgid "route target" +msgstr "cible de l'itinéraire" + +#: ipam/models/vrfs.py:95 +msgid "route targets" +msgstr "cibles de l'itinéraire" + +#: ipam/tables/asn.py:52 +msgid "ASDOT" +msgstr "ASDOT" + +#: ipam/tables/asn.py:57 +msgid "Site Count" +msgstr "Nombre de sites" + +#: ipam/tables/asn.py:62 +msgid "Provider Count" +msgstr "Nombre de fournisseurs" + +#: ipam/tables/ip.py:94 netbox/navigation/menu.py:167 +#: netbox/navigation/menu.py:169 +msgid "Aggregates" +msgstr "Agrégats" + +#: ipam/tables/ip.py:124 +msgid "Added" +msgstr "Ajouté" + +#: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 +#: ipam/views.py:349 netbox/navigation/menu.py:153 +#: netbox/navigation/menu.py:155 templates/ipam/vlan.html:87 +msgid "Prefixes" +msgstr "Préfixes" + +#: ipam/tables/ip.py:130 ipam/tables/ip.py:267 ipam/tables/ip.py:320 +#: ipam/tables/vlans.py:82 templates/dcim/device.html:263 +#: templates/ipam/aggregate.html:25 templates/ipam/iprange.html:32 +#: templates/ipam/prefix.html:100 +msgid "Utilization" +msgstr "Utilisation" + +#: ipam/tables/ip.py:170 netbox/navigation/menu.py:149 +msgid "IP Ranges" +msgstr "Gammes d'adresses IP" + +#: ipam/tables/ip.py:220 +msgid "Prefix (Flat)" +msgstr "Préfixe (plat)" + +#: ipam/tables/ip.py:224 templates/dcim/rack_edit.html:52 +msgid "Depth" +msgstr "Profondeur" + +#: ipam/tables/ip.py:261 +msgid "Pool" +msgstr "Piscine" + +#: ipam/tables/ip.py:264 ipam/tables/ip.py:317 +msgid "Marked Utilized" +msgstr "Marqué comme utilisé" + +#: ipam/tables/ip.py:301 +msgid "Start address" +msgstr "Adresse de départ" + +#: ipam/tables/ip.py:379 +msgid "NAT (Inside)" +msgstr "NAT (intérieur)" + +#: ipam/tables/ip.py:384 +msgid "NAT (Outside)" +msgstr "NAT (extérieur)" + +#: ipam/tables/ip.py:389 +msgid "Assigned" +msgstr "Attribué" + +#: ipam/tables/ip.py:424 templates/vpn/l2vpntermination.html:19 +#: vpn/forms/filtersets.py:235 +msgid "Assigned Object" +msgstr "Objet assigné" + +#: ipam/tables/vlans.py:68 +msgid "Scope Type" +msgstr "Type de portée" + +#: ipam/tables/vlans.py:107 ipam/tables/vlans.py:210 +#: templates/dcim/inc/interface_vlans_table.html:4 +msgid "VID" +msgstr "VIDÉO" + +#: ipam/tables/vrfs.py:30 +msgid "RD" +msgstr "RD" + +#: ipam/tables/vrfs.py:33 +msgid "Unique" +msgstr "Unique" + +#: ipam/tables/vrfs.py:36 vpn/tables/l2vpn.py:27 +msgid "Import Targets" +msgstr "Cibles d'importation" + +#: ipam/tables/vrfs.py:41 vpn/tables/l2vpn.py:32 +msgid "Export Targets" +msgstr "Objectifs d'exportation" + +#: ipam/views.py:536 +msgid "Child Prefixes" +msgstr "Préfixes pour enfants" + +#: ipam/views.py:571 +msgid "Child Ranges" +msgstr "Gammes pour enfants" + +#: ipam/views.py:868 +msgid "Related IPs" +msgstr "IP associées" + +#: ipam/views.py:1091 +msgid "Device Interfaces" +msgstr "Interfaces des appareils" + +#: ipam/views.py:1109 +msgid "VM Interfaces" +msgstr "Interfaces de machines virtuelles" + +#: netbox/config/parameters.py:22 templates/core/configrevision.html:111 +msgid "Login banner" +msgstr "Bannière de connexion" + +#: netbox/config/parameters.py:24 +msgid "Additional content to display on the login page" +msgstr "Contenu supplémentaire à afficher sur la page de connexion" + +#: netbox/config/parameters.py:33 templates/core/configrevision.html:115 +msgid "Maintenance banner" +msgstr "Bannière de maintenance" + +#: netbox/config/parameters.py:35 +msgid "Additional content to display when in maintenance mode" +msgstr "Contenu supplémentaire à afficher en mode maintenance" + +#: netbox/config/parameters.py:44 templates/core/configrevision.html:119 +msgid "Top banner" +msgstr "Bannière supérieure" + +#: netbox/config/parameters.py:46 +msgid "Additional content to display at the top of every page" +msgstr "Contenu supplémentaire à afficher en haut de chaque page" + +#: netbox/config/parameters.py:55 templates/core/configrevision.html:123 +msgid "Bottom banner" +msgstr "Bannière inférieure" + +#: netbox/config/parameters.py:57 +msgid "Additional content to display at the bottom of every page" +msgstr "Contenu supplémentaire à afficher au bas de chaque page" + +#: netbox/config/parameters.py:68 +msgid "Globally unique IP space" +msgstr "Un espace IP unique au monde" + +#: netbox/config/parameters.py:70 +msgid "Enforce unique IP addressing within the global table" +msgstr "Appliquez un adressage IP unique dans le tableau global" + +#: netbox/config/parameters.py:75 templates/core/configrevision.html:87 +msgid "Prefer IPv4" +msgstr "Préférez IPv4" + +#: netbox/config/parameters.py:77 +msgid "Prefer IPv4 addresses over IPv6" +msgstr "Préférez les adresses IPv4 à IPv6" + +#: netbox/config/parameters.py:84 +msgid "Rack unit height" +msgstr "Hauteur de l'unité de rayonnage" + +#: netbox/config/parameters.py:86 +msgid "Default unit height for rendered rack elevations" +msgstr "" +"Hauteur unitaire par défaut pour les élévations des rayonnages affichées" + +#: netbox/config/parameters.py:91 +msgid "Rack unit width" +msgstr "Largeur de l'unité de rack" + +#: netbox/config/parameters.py:93 +msgid "Default unit width for rendered rack elevations" +msgstr "" +"Largeur unitaire par défaut pour les élévations des rayonnages affichées" + +#: netbox/config/parameters.py:100 +msgid "Powerfeed voltage" +msgstr "Tension d'alimentation" + +#: netbox/config/parameters.py:102 +msgid "Default voltage for powerfeeds" +msgstr "Tension par défaut pour les alimentations" + +#: netbox/config/parameters.py:107 +msgid "Powerfeed amperage" +msgstr "Ampérage d'alimentation" + +#: netbox/config/parameters.py:109 +msgid "Default amperage for powerfeeds" +msgstr "Ampérage par défaut pour les alimentations" + +#: netbox/config/parameters.py:114 +msgid "Powerfeed max utilization" +msgstr "Utilisation maximale de Powerfeed" + +#: netbox/config/parameters.py:116 +msgid "Default max utilization for powerfeeds" +msgstr "Utilisation maximale par défaut pour les alimentations" + +#: netbox/config/parameters.py:123 templates/core/configrevision.html:99 +msgid "Allowed URL schemes" +msgstr "Schémas d'URL autorisés" + +#: netbox/config/parameters.py:128 +msgid "Permitted schemes for URLs in user-provided content" +msgstr "" +"Schémas autorisés pour les URL dans le contenu fourni par l'utilisateur" + +#: netbox/config/parameters.py:136 +msgid "Default page size" +msgstr "Taille de page par défaut" + +#: netbox/config/parameters.py:142 +msgid "Maximum page size" +msgstr "Taille de page maximale" + +#: netbox/config/parameters.py:150 templates/core/configrevision.html:151 +msgid "Custom validators" +msgstr "Validateurs personnalisés" + +#: netbox/config/parameters.py:152 +msgid "Custom validation rules (JSON)" +msgstr "Règles de validation personnalisées (JSON)" + +#: netbox/config/parameters.py:160 templates/core/configrevision.html:161 +msgid "Protection rules" +msgstr "Règles de protection" + +#: netbox/config/parameters.py:162 +msgid "Deletion protection rules (JSON)" +msgstr "Règles de protection contre la suppression (JSON)" + +#: netbox/config/parameters.py:172 +msgid "Default preferences" +msgstr "Préférences par défaut" + +#: netbox/config/parameters.py:174 +msgid "Default preferences for new users" +msgstr "Préférences par défaut pour les nouveaux utilisateurs" + +#: netbox/config/parameters.py:181 templates/core/configrevision.html:197 +msgid "Maintenance mode" +msgstr "Mode de maintenance" + +#: netbox/config/parameters.py:183 +msgid "Enable maintenance mode" +msgstr "Activer le mode maintenance" + +#: netbox/config/parameters.py:188 templates/core/configrevision.html:201 +msgid "GraphQL enabled" +msgstr "GraphQL activé" + +#: netbox/config/parameters.py:190 +msgid "Enable the GraphQL API" +msgstr "Activez l'API GraphQL" + +#: netbox/config/parameters.py:195 templates/core/configrevision.html:205 +msgid "Changelog retention" +msgstr "Conservation du journal des modifications" + +#: netbox/config/parameters.py:197 +msgid "Days to retain changelog history (set to zero for unlimited)" +msgstr "" +"Jours pendant lesquels l'historique des modifications est conservé (défini à" +" zéro pour un nombre illimité)" + +#: netbox/config/parameters.py:202 +msgid "Job result retention" +msgstr "Maintien des résultats professionnels" + +#: netbox/config/parameters.py:204 +msgid "Days to retain job result history (set to zero for unlimited)" +msgstr "" +"Jours pendant lesquels vous conservez l'historique des résultats du travail " +"(défini sur zéro pour une durée illimitée)" + +#: netbox/config/parameters.py:209 templates/core/configrevision.html:213 +msgid "Maps URL" +msgstr "URL des cartes" + +#: netbox/config/parameters.py:211 +msgid "Base URL for mapping geographic locations" +msgstr "URL de base pour cartographier les emplacements géographiques" + +#: netbox/forms/__init__.py:13 +msgid "Partial match" +msgstr "Match partiel" + +#: netbox/forms/__init__.py:14 +msgid "Exact match" +msgstr "Correspondance exacte" + +#: netbox/forms/__init__.py:15 +msgid "Starts with" +msgstr "Commence par" + +#: netbox/forms/__init__.py:16 +msgid "Ends with" +msgstr "Se termine par" + +#: netbox/forms/__init__.py:17 +msgid "Regex" +msgstr "Regex" + +#: netbox/forms/__init__.py:35 +msgid "Object type(s)" +msgstr "Type (s) d'objet" + +#: netbox/forms/base.py:66 +msgid "Id" +msgstr "Id" + +#: netbox/forms/base.py:105 +msgid "Add tags" +msgstr "Ajouter des tags" + +#: netbox/forms/base.py:110 +msgid "Remove tags" +msgstr "Supprimer les tags" + +#: netbox/models/features.py:434 +msgid "Remote data source" +msgstr "Source de données distante" + +#: netbox/models/features.py:444 +msgid "data path" +msgstr "chemin de données" + +#: netbox/models/features.py:448 +msgid "Path to remote file (relative to data source root)" +msgstr "" +"Chemin vers le fichier distant (par rapport à la racine de la source de " +"données)" + +#: netbox/models/features.py:451 +msgid "auto sync enabled" +msgstr "synchronisation automatique activée" + +#: netbox/models/features.py:453 +msgid "Enable automatic synchronization of data when the data file is updated" +msgstr "" +"Activer la synchronisation automatique des données lors de la mise à jour du" +" fichier de données" + +#: netbox/models/features.py:456 +msgid "date synced" +msgstr "date de synchronisation" + +#: netbox/navigation/menu.py:12 +msgid "Organization" +msgstr "Organisation" + +#: netbox/navigation/menu.py:20 +msgid "Site Groups" +msgstr "Groupes de sites" + +#: netbox/navigation/menu.py:28 +msgid "Rack Roles" +msgstr "Rôles des racks" + +#: netbox/navigation/menu.py:32 +msgid "Elevations" +msgstr "Élévations" + +#: netbox/navigation/menu.py:41 +msgid "Tenant Groups" +msgstr "Groupes de locataires" + +#: netbox/navigation/menu.py:48 +msgid "Contact Groups" +msgstr "Groupes de contacts" + +#: netbox/navigation/menu.py:49 templates/tenancy/contactrole.html:8 +msgid "Contact Roles" +msgstr "Rôles de contact" + +#: netbox/navigation/menu.py:50 +msgid "Contact Assignments" +msgstr "Assignations de contact" + +#: netbox/navigation/menu.py:64 +msgid "Modules" +msgstr "Modules" + +#: netbox/navigation/menu.py:65 templates/dcim/devicerole.html:8 +msgid "Device Roles" +msgstr "Rôles des appareils" + +#: netbox/navigation/menu.py:68 templates/dcim/device.html:162 +#: templates/dcim/virtualdevicecontext.html:8 +msgid "Virtual Device Contexts" +msgstr "Contextes des appareils virtuels" + +#: netbox/navigation/menu.py:76 +msgid "Manufacturers" +msgstr "Fabricants" + +#: netbox/navigation/menu.py:80 +msgid "Device Components" +msgstr "Composants de l'appareil" + +#: netbox/navigation/menu.py:92 templates/dcim/inventoryitemrole.html:8 +msgid "Inventory Item Roles" +msgstr "Rôles des articles d'inventaire" + +#: netbox/navigation/menu.py:99 netbox/navigation/menu.py:103 +msgid "Connections" +msgstr "Connexions" + +#: netbox/navigation/menu.py:105 +msgid "Cables" +msgstr "Câbles" + +#: netbox/navigation/menu.py:106 +msgid "Wireless Links" +msgstr "Liaisons sans fil" + +#: netbox/navigation/menu.py:109 +msgid "Interface Connections" +msgstr "Connexions d'interface" + +#: netbox/navigation/menu.py:114 +msgid "Console Connections" +msgstr "Connexions à la console" + +#: netbox/navigation/menu.py:119 +msgid "Power Connections" +msgstr "Connexions électriques" + +#: netbox/navigation/menu.py:135 +msgid "Wireless LAN Groups" +msgstr "Groupes LAN sans fil" + +#: netbox/navigation/menu.py:156 +msgid "Prefix & VLAN Roles" +msgstr "Préfixes et rôles VLAN" + +#: netbox/navigation/menu.py:162 +msgid "ASN Ranges" +msgstr "Gammes ASN" + +#: netbox/navigation/menu.py:184 +msgid "VLAN Groups" +msgstr "Groupes VLAN" + +#: netbox/navigation/menu.py:191 +msgid "Service Templates" +msgstr "Modèles de services" + +#: netbox/navigation/menu.py:192 templates/dcim/device.html:304 +#: templates/ipam/ipaddress.html:122 +#: templates/virtualization/virtualmachine.html:157 +msgid "Services" +msgstr "Des services" + +#: netbox/navigation/menu.py:199 +msgid "VPN" +msgstr "VPN" + +#: netbox/navigation/menu.py:203 netbox/navigation/menu.py:205 +#: vpn/tables/tunnels.py:24 +msgid "Tunnels" +msgstr "Tunnels" + +#: netbox/navigation/menu.py:206 templates/vpn/tunnelgroup.html:8 +msgid "Tunnel Groups" +msgstr "Groupes de tunnels" + +#: netbox/navigation/menu.py:207 +msgid "Tunnel Terminations" +msgstr "Terminaisons de tunnels" + +#: netbox/navigation/menu.py:211 netbox/navigation/menu.py:213 +#: vpn/models/l2vpn.py:64 +msgid "L2VPNs" +msgstr "VPN L2" + +#: netbox/navigation/menu.py:214 templates/vpn/l2vpn.html:57 +#: templates/vpn/tunnel.html:73 vpn/tables/tunnels.py:54 +msgid "Terminations" +msgstr "Résiliations" + +#: netbox/navigation/menu.py:220 +msgid "IKE Proposals" +msgstr "Propositions IKE" + +#: netbox/navigation/menu.py:221 templates/vpn/ikeproposal.html:42 +msgid "IKE Policies" +msgstr "Politiques IKE" + +#: netbox/navigation/menu.py:222 +msgid "IPSec Proposals" +msgstr "Propositions IPSec" + +#: netbox/navigation/menu.py:223 templates/vpn/ipsecproposal.html:38 +msgid "IPSec Policies" +msgstr "Politiques IPSec" + +#: netbox/navigation/menu.py:224 templates/vpn/ikepolicy.html:39 +#: templates/vpn/ipsecpolicy.html:26 +msgid "IPSec Profiles" +msgstr "Profils IPSec" + +#: netbox/navigation/menu.py:231 templates/dcim/device_edit.html:78 +msgid "Virtualization" +msgstr "Virtualisation" + +#: netbox/navigation/menu.py:235 netbox/navigation/menu.py:237 +#: virtualization/views.py:186 +msgid "Virtual Machines" +msgstr "Machines virtuelles" + +#: netbox/navigation/menu.py:239 +#: templates/virtualization/virtualmachine.html:177 +#: templates/virtualization/virtualmachine/base.html:32 +#: templates/virtualization/virtualmachine_list.html:21 +#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +msgid "Virtual Disks" +msgstr "Disques virtuels" + +#: netbox/navigation/menu.py:246 +msgid "Cluster Types" +msgstr "Types de clusters" + +#: netbox/navigation/menu.py:247 +msgid "Cluster Groups" +msgstr "Groupes de clusters" + +#: netbox/navigation/menu.py:261 +msgid "Circuit Types" +msgstr "Types de circuits" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 +msgid "Providers" +msgstr "Prestataires" + +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:53 +msgid "Provider Accounts" +msgstr "Comptes des fournisseurs" + +#: netbox/navigation/menu.py:269 +msgid "Provider Networks" +msgstr "Réseaux de fournisseurs" + +#: netbox/navigation/menu.py:283 +msgid "Power Panels" +msgstr "Panneaux d'alimentation" + +#: netbox/navigation/menu.py:294 +msgid "Configurations" +msgstr "Configurations" + +#: netbox/navigation/menu.py:296 +msgid "Config Contexts" +msgstr "Contextes de configuration" + +#: netbox/navigation/menu.py:297 +msgid "Config Templates" +msgstr "Modèles de configuration" + +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 +msgid "Customization" +msgstr "Personnalisation" + +#: netbox/navigation/menu.py:310 +#: templates/circuits/circuittermination_edit.html:53 +#: templates/dcim/cable_edit.html:77 templates/dcim/device_edit.html:103 +#: templates/dcim/inventoryitem_edit.html:102 templates/dcim/rack_edit.html:81 +#: templates/dcim/virtualchassis_add.html:31 +#: templates/dcim/virtualchassis_edit.html:41 +#: templates/generic/bulk_edit.html:92 templates/htmx/form.html:32 +#: templates/inc/panels/custom_fields.html:7 +#: templates/ipam/ipaddress_bulk_add.html:35 +#: templates/ipam/ipaddress_edit.html:88 templates/ipam/service_create.html:75 +#: templates/ipam/service_edit.html:62 templates/ipam/vlan_edit.html:63 +#: templates/tenancy/contactassignment_edit.html:31 +#: templates/vpn/l2vpntermination_edit.html:51 +msgid "Custom Fields" +msgstr "Champs personnalisés" + +#: netbox/navigation/menu.py:311 +msgid "Custom Field Choices" +msgstr "Choix de champs personnalisés" + +#: netbox/navigation/menu.py:312 +msgid "Custom Links" +msgstr "Liens personnalisés" + +#: netbox/navigation/menu.py:313 +msgid "Export Templates" +msgstr "Modèles d'exportation" + +#: netbox/navigation/menu.py:314 +msgid "Saved Filters" +msgstr "Filtres enregistrés" + +#: netbox/navigation/menu.py:316 +msgid "Image Attachments" +msgstr "Pièces jointes à des images" + +#: netbox/navigation/menu.py:320 +msgid "Reports & Scripts" +msgstr "Rapports et scripts" + +#: netbox/navigation/menu.py:340 +msgid "Operations" +msgstr "Opérations" + +#: netbox/navigation/menu.py:344 +msgid "Integrations" +msgstr "Intégrations" + +#: netbox/navigation/menu.py:346 +msgid "Data Sources" +msgstr "Sources de données" + +#: netbox/navigation/menu.py:347 +msgid "Event Rules" +msgstr "Règles de l'événement" + +#: netbox/navigation/menu.py:348 +msgid "Webhooks" +msgstr "Webhooks" + +#: netbox/navigation/menu.py:352 netbox/navigation/menu.py:356 +#: netbox/views/generic/feature_views.py:151 +#: templates/extras/report/base.html:37 templates/extras/script/base.html:36 +msgid "Jobs" +msgstr "Emplois" + +#: netbox/navigation/menu.py:362 +msgid "Logging" +msgstr "Journalisation" + +#: netbox/navigation/menu.py:364 +msgid "Journal Entries" +msgstr "Entrées de journal" + +#: netbox/navigation/menu.py:365 templates/extras/objectchange.html:8 +#: templates/extras/objectchange_list.html:4 +msgid "Change Log" +msgstr "Journal des modifications" + +#: netbox/navigation/menu.py:372 templates/inc/profile_button.html:18 +msgid "Admin" +msgstr "Administrateur" + +#: netbox/navigation/menu.py:381 templates/users/group.html:27 +#: users/forms/model_forms.py:242 users/forms/model_forms.py:255 +#: users/forms/model_forms.py:309 users/tables.py:105 +msgid "Users" +msgstr "Utilisateurs" + +#: netbox/navigation/menu.py:404 users/forms/model_forms.py:182 +#: users/forms/model_forms.py:195 users/forms/model_forms.py:314 +#: users/tables.py:35 users/tables.py:109 +msgid "Groups" +msgstr "Groupes" + +#: netbox/navigation/menu.py:426 templates/account/base.html:21 +#: templates/inc/profile_button.html:39 +msgid "API Tokens" +msgstr "Jetons d'API" + +#: netbox/navigation/menu.py:433 users/forms/model_forms.py:188 +#: users/forms/model_forms.py:197 users/forms/model_forms.py:248 +#: users/forms/model_forms.py:256 +msgid "Permissions" +msgstr "Autorisations" + +#: netbox/navigation/menu.py:445 +msgid "Current Config" +msgstr "Config actuelle" + +#: netbox/navigation/menu.py:451 +msgid "Config Revisions" +msgstr "Révisions de configuration" + +#: netbox/navigation/menu.py:491 templates/500.html:35 +#: templates/account/preferences.html:29 +msgid "Plugins" +msgstr "Plug-ins" + +#: netbox/preferences.py:17 +msgid "Color mode" +msgstr "Mode couleur" + +#: netbox/preferences.py:25 +msgid "Page length" +msgstr "Longueur de page" + +#: netbox/preferences.py:27 +msgid "The default number of objects to display per page" +msgstr "Le nombre d'objets par défaut à afficher par page" + +#: netbox/preferences.py:31 +msgid "Paginator placement" +msgstr "Emplacement du paginateur" + +#: netbox/preferences.py:37 +msgid "Where the paginator controls will be displayed relative to a table" +msgstr "" +"Où les commandes du paginateur seront affichées par rapport à un tableau" + +#: netbox/preferences.py:43 +msgid "Data format" +msgstr "Format des données" + +#: netbox/tables/columns.py:175 +msgid "Toggle all" +msgstr "Tout afficher" + +#: netbox/tables/columns.py:277 templates/inc/profile_button.html:56 +msgid "Toggle Dropdown" +msgstr "Basculer vers le menu déroulant" + +#: netbox/tables/columns.py:542 templates/core/job.html:40 +msgid "Error" +msgstr "Erreur" + +#: netbox/tables/tables.py:243 templates/generic/bulk_import.html:115 +msgid "Field" +msgstr "Champ" + +#: netbox/tables/tables.py:246 +msgid "Value" +msgstr "Valeur" + +#: netbox/tables/tables.py:259 +msgid "No results found" +msgstr "Aucun résultat trouvé" + +#: netbox/tests/dummy_plugin/navigation.py:29 +msgid "Dummy Plugin" +msgstr "Plugin Dummy" + +#: netbox/views/generic/feature_views.py:38 +msgid "Changelog" +msgstr "Journal des modifications" + +#: netbox/views/generic/feature_views.py:91 +msgid "Journal" +msgstr "Journal" + +#: templates/403.html:4 +msgid "Access Denied" +msgstr "Accès refusé" + +#: templates/403.html:9 +msgid "You do not have permission to access this page" +msgstr "Vous n'êtes pas autorisé à accéder à cette page" + +#: templates/404.html:4 +msgid "Page Not Found" +msgstr "Page non trouvée" + +#: templates/404.html:9 +msgid "The requested page does not exist" +msgstr "La page demandée n'existe pas" + +#: templates/500.html:7 templates/500.html:18 +msgid "Server Error" +msgstr "Erreur du serveur" + +#: templates/500.html:23 +msgid "There was a problem with your request. Please contact an administrator" +msgstr "" +"Il y a eu un problème avec votre demande. Veuillez contacter un " +"administrateur" + +#: templates/500.html:28 +msgid "The complete exception is provided below" +msgstr "L'exception complète est fournie ci-dessous" + +#: templates/500.html:33 +msgid "Python version" +msgstr "Version Python" + +#: templates/500.html:34 +msgid "NetBox version" +msgstr "Version NetBox" + +#: templates/500.html:36 +msgid "None installed" +msgstr "Aucun n'est installé" + +#: templates/500.html:39 +msgid "If further assistance is required, please post to the" +msgstr "" +"Si une assistance supplémentaire est requise, veuillez envoyer un message au" + +#: templates/500.html:39 +msgid "NetBox discussion forum" +msgstr "Forum de discussion NetBox" + +#: templates/500.html:39 +msgid "on GitHub" +msgstr "sur GitHub" + +#: templates/500.html:42 templates/base/40x.html:17 +msgid "Home Page" +msgstr "Page d'accueil" + +#: templates/account/base.html:7 templates/inc/profile_button.html:24 +#: vpn/forms/bulk_edit.py:256 vpn/forms/filtersets.py:186 +#: vpn/forms/model_forms.py:372 +msgid "Profile" +msgstr "Profil" + +#: templates/account/base.html:13 templates/inc/profile_button.html:34 +msgid "Preferences" +msgstr "Préférences" + +#: templates/account/password.html:5 +msgid "Change Password" +msgstr "Modifier le mot de passe" + +#: templates/account/password.html:17 templates/account/preferences.html:82 +#: templates/core/configrevision_restore.html:80 +#: templates/dcim/devicebay_populate.html:34 +#: templates/dcim/virtualchassis_add_member.html:24 +#: templates/dcim/virtualchassis_edit.html:104 +#: templates/extras/object_journal.html:26 templates/extras/script.html:36 +#: templates/generic/bulk_add_component.html:55 +#: templates/generic/bulk_delete.html:46 templates/generic/bulk_edit.html:125 +#: templates/generic/bulk_import.html:53 templates/generic/bulk_import.html:75 +#: templates/generic/bulk_import.html:97 templates/generic/bulk_remove.html:42 +#: templates/generic/bulk_rename.html:44 +#: templates/generic/confirmation_form.html:20 +#: templates/generic/object_edit.html:76 templates/htmx/delete_form.html:53 +#: templates/htmx/delete_form.html:55 templates/ipam/ipaddress_assign.html:31 +#: templates/virtualization/cluster_add_devices.html:30 +msgid "Cancel" +msgstr "Annuler" + +#: templates/account/password.html:18 templates/account/preferences.html:83 +#: templates/dcim/devicebay_populate.html:35 +#: templates/dcim/virtualchassis_add_member.html:26 +#: templates/dcim/virtualchassis_edit.html:106 +#: templates/extras/dashboard/widget_add.html:26 +#: templates/extras/dashboard/widget_config.html:19 +#: templates/extras/object_journal.html:27 +#: templates/generic/object_edit.html:66 +#: utilities/templates/helpers/applied_filters.html:16 +#: utilities/templates/helpers/table_config_form.html:40 +msgid "Save" +msgstr "Sauver" + +#: templates/account/preferences.html:41 +msgid "Table Configurations" +msgstr "Configurations des tables" + +#: templates/account/preferences.html:46 +msgid "Clear table preferences" +msgstr "Effacer les préférences du tableau" + +#: templates/account/preferences.html:53 +msgid "Toggle All" +msgstr "Tout afficher" + +#: templates/account/preferences.html:55 +msgid "Table" +msgstr "Tableau" + +#: templates/account/preferences.html:56 +msgid "Ordering" +msgstr "Commander" + +#: templates/account/preferences.html:57 +msgid "Columns" +msgstr "Colonnes" + +#: templates/account/preferences.html:76 templates/dcim/cable_trace.html:113 +#: templates/extras/object_configcontext.html:55 +msgid "None found" +msgstr "Aucun n'a été trouvé" + +#: templates/account/profile.html:6 +msgid "User Profile" +msgstr "Profil utilisateur" + +#: templates/account/profile.html:12 +msgid "Account Details" +msgstr "Détails du compte" + +#: templates/account/profile.html:30 templates/tenancy/contact.html:44 +#: templates/users/user.html:26 tenancy/forms/bulk_edit.py:108 +msgid "Email" +msgstr "Courrier électronique" + +#: templates/account/profile.html:34 templates/users/user.html:30 +msgid "Account Created" +msgstr "Compte créé" + +#: templates/account/profile.html:38 templates/users/user.html:42 +msgid "Superuser" +msgstr "Superutilisateur" + +#: templates/account/profile.html:42 +msgid "Admin Access" +msgstr "Accès administrateur" + +#: templates/account/profile.html:51 templates/users/objectpermission.html:86 +#: templates/users/user.html:51 +msgid "Assigned Groups" +msgstr "Groupes assignés" + +#: templates/account/profile.html:56 +#: templates/circuits/circuit_terminations_swap.html:18 +#: templates/circuits/circuit_terminations_swap.html:26 +#: templates/circuits/inc/circuit_termination.html:154 +#: templates/dcim/devicebay.html:66 +#: templates/dcim/inc/panels/inventory_items.html:37 +#: templates/dcim/interface.html:306 templates/dcim/modulebay.html:79 +#: templates/extras/configcontext.html:73 templates/extras/eventrule.html:84 +#: templates/extras/htmx/script_result.html:54 +#: templates/extras/object_configcontext.html:28 +#: templates/extras/objectchange.html:128 +#: templates/extras/objectchange.html:145 templates/extras/webhook.html:79 +#: templates/extras/webhook.html:91 templates/inc/panel_table.html:12 +#: templates/inc/panels/comments.html:12 +#: templates/ipam/inc/panels/fhrp_groups.html:43 templates/users/group.html:32 +#: templates/users/group.html:42 templates/users/objectpermission.html:81 +#: templates/users/objectpermission.html:91 templates/users/user.html:56 +#: templates/users/user.html:66 +msgid "None" +msgstr "Aucune" + +#: templates/account/profile.html:66 templates/users/user.html:76 +msgid "Recent Activity" +msgstr "Activité récente" + +#: templates/account/token.html:8 templates/account/token_list.html:6 +msgid "My API Tokens" +msgstr "Mes jetons d'API" + +#: templates/account/token.html:11 templates/account/token.html:19 +#: templates/users/token.html:6 templates/users/token.html:14 +#: users/forms/filtersets.py:121 +msgid "Token" +msgstr "Jeton" + +#: templates/account/token.html:40 templates/users/token.html:32 +#: users/forms/bulk_edit.py:87 +msgid "Write enabled" +msgstr "Écriture activée" + +#: templates/account/token.html:52 templates/users/token.html:44 +msgid "Last used" +msgstr "Dernière utilisation" + +#: templates/account/token_list.html:12 +msgid "Add a Token" +msgstr "Ajouter un jeton" + +#: templates/admin/index.html:10 +msgid "System" +msgstr "Système" + +#: templates/admin/index.html:14 +msgid "Background Tasks" +msgstr "Tâches d'arrière-plan" + +#: templates/admin/index.html:19 +msgid "Installed plugins" +msgstr "Plug-ins installés" + +#: templates/base/base.html:28 templates/extras/admin/plugins_list.html:8 +#: templates/home.html:24 +msgid "Home" +msgstr "Accueil" + +#: templates/base/layout.html:27 templates/base/layout.html:37 +#: templates/login.html:34 +msgid "NetBox logo" +msgstr "Logo NetBox" + +#: templates/base/layout.html:76 +msgid "Debug mode is enabled" +msgstr "Le mode de débogage est activé" + +#: templates/base/layout.html:77 +msgid "" +"Performance may be limited. Debugging should never be enabled on a " +"production system" +msgstr "" +"Les performances peuvent être limitées. Le débogage ne doit jamais être " +"activé sur un système de production" + +#: templates/base/layout.html:83 +msgid "Maintenance Mode" +msgstr "Mode de maintenance" + +#: templates/base/layout.html:134 +msgid "Docs" +msgstr "Docs" + +#: templates/base/layout.html:139 templates/rest_framework/api.html:10 +msgid "REST API" +msgstr "API REST" + +#: templates/base/layout.html:144 +msgid "REST API documentation" +msgstr "Documentation de l'API REST" + +#: templates/base/layout.html:150 +msgid "GraphQL API" +msgstr "API GraphQL" + +#: templates/base/layout.html:156 +msgid "Source Code" +msgstr "Code source" + +#: templates/base/layout.html:161 +msgid "Community" +msgstr "Communauté" + +#: templates/base/sidenav.html:12 templates/base/sidenav.html:17 +msgid "NetBox Logo" +msgstr "Logo NetBox" + +#: templates/circuits/circuit.html:48 +msgid "Install Date" +msgstr "Date d'installation" + +#: templates/circuits/circuit.html:52 +msgid "Termination Date" +msgstr "Date de résiliation" + +#: templates/circuits/circuit_terminations_swap.html:4 +msgid "Swap Circuit Terminations" +msgstr "Terminaisons du circuit d'échange" + +#: templates/circuits/circuit_terminations_swap.html:8 +#, python-format +msgid "Swap these terminations for circuit %(circuit)s?" +msgstr "Remplacez ces terminaisons par un circuit %(circuit)s?" + +#: templates/circuits/circuit_terminations_swap.html:14 +msgid "A side" +msgstr "Un côté" + +#: templates/circuits/circuit_terminations_swap.html:22 +msgid "Z side" +msgstr "Côté Z" + +#: templates/circuits/circuittermination_edit.html:9 +#: templates/circuits/inc/circuit_termination.html:81 +#: templates/dcim/frontport.html:128 templates/dcim/interface.html:199 +#: templates/dcim/rearport.html:118 +msgid "Circuit Termination" +msgstr "Terminaison du circuit" + +#: templates/circuits/circuittermination_edit.html:41 +msgid "Termination Details" +msgstr "Détails de résiliation" + +#: templates/circuits/circuittype.html:10 +msgid "Add Circuit" +msgstr "Ajouter un circuit" + +#: templates/circuits/inc/circuit_termination.html:9 +#: templates/dcim/devicetype/component_templates.html:30 +#: templates/dcim/manufacturer.html:11 +#: templates/dcim/moduletype/component_templates.html:30 +#: templates/generic/bulk_add_component.html:8 +#: templates/users/objectpermission.html:41 +#: utilities/templates/buttons/add.html:4 +#: utilities/templates/helpers/table_config_form.html:20 +msgid "Add" +msgstr "Ajouter" + +#: templates/circuits/inc/circuit_termination.html:14 +#: templates/circuits/inc/circuit_termination.html:63 +#: templates/dcim/devicetype/component_templates.html:21 +#: templates/dcim/inc/panels/inventory_items.html:24 +#: templates/dcim/moduletype/component_templates.html:21 +#: templates/dcim/powerpanel.html:61 templates/generic/object_edit.html:29 +#: templates/ipam/inc/ipaddress_edit_header.html:10 +#: templates/ipam/inc/panels/fhrp_groups.html:30 +#: utilities/templates/buttons/edit.html:3 +msgid "Edit" +msgstr "Modifier" + +#: templates/circuits/inc/circuit_termination.html:17 +msgid "Swap" +msgstr "Échange" + +#: templates/circuits/inc/circuit_termination.html:26 +#, python-format +msgid "Termination %(side)s" +msgstr "Résiliation %(side)s" + +#: templates/circuits/inc/circuit_termination.html:42 +#: templates/dcim/cable.html:70 templates/dcim/cable.html:76 +#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:76 +msgid "Termination" +msgstr "Résiliation" + +#: templates/circuits/inc/circuit_termination.html:46 +#: templates/dcim/consoleport.html:62 templates/dcim/consoleserverport.html:62 +#: templates/dcim/powerfeed.html:122 +msgid "Marked as connected" +msgstr "Marqué comme connecté" + +#: templates/circuits/inc/circuit_termination.html:48 +msgid "to" +msgstr "pour" + +#: templates/circuits/inc/circuit_termination.html:58 +#: templates/circuits/inc/circuit_termination.html:59 +#: templates/dcim/frontport.html:87 +#: templates/dcim/inc/connection_endpoints.html:7 +#: templates/dcim/interface.html:160 templates/dcim/rearport.html:83 +msgid "Trace" +msgstr "Trace" + +#: templates/circuits/inc/circuit_termination.html:62 +msgid "Edit cable" +msgstr "Modifier le câble" + +#: templates/circuits/inc/circuit_termination.html:67 +msgid "Remove cable" +msgstr "Retirez le câble" + +#: templates/circuits/inc/circuit_termination.html:68 +#: templates/dcim/bulk_disconnect.html:5 +#: templates/dcim/device/consoleports.html:12 +#: templates/dcim/device/consoleserverports.html:12 +#: templates/dcim/device/frontports.html:12 +#: templates/dcim/device/interfaces.html:16 +#: templates/dcim/device/poweroutlets.html:12 +#: templates/dcim/device/powerports.html:12 +#: templates/dcim/device/rearports.html:12 templates/dcim/powerpanel.html:66 +msgid "Disconnect" +msgstr "Déconnectez" + +#: templates/circuits/inc/circuit_termination.html:75 +#: templates/dcim/consoleport.html:71 templates/dcim/consoleserverport.html:71 +#: templates/dcim/frontport.html:109 templates/dcim/interface.html:186 +#: templates/dcim/interface.html:206 templates/dcim/powerfeed.html:136 +#: templates/dcim/poweroutlet.html:75 templates/dcim/poweroutlet.html:76 +#: templates/dcim/powerport.html:77 templates/dcim/rearport.html:105 +msgid "Connect" +msgstr "Connecter" + +#: templates/circuits/inc/circuit_termination.html:79 +#: templates/dcim/consoleport.html:78 templates/dcim/consoleserverport.html:78 +#: templates/dcim/frontport.html:18 templates/dcim/frontport.html:122 +#: templates/dcim/interface.html:193 templates/dcim/inventoryitem_edit.html:49 +#: templates/dcim/rearport.html:112 +msgid "Front Port" +msgstr "Port avant" + +#: templates/circuits/inc/circuit_termination.html:97 +msgid "Downstream" +msgstr "En aval" + +#: templates/circuits/inc/circuit_termination.html:98 +msgid "Upstream" +msgstr "En amont" + +#: templates/circuits/inc/circuit_termination.html:107 +msgid "Cross-Connect" +msgstr "Connexion croisée" + +#: templates/circuits/inc/circuit_termination.html:111 +msgid "Patch Panel/Port" +msgstr "Panneau de raccordement et port" + +#: templates/circuits/provider.html:11 +msgid "Add circuit" +msgstr "Ajouter un circuit" + +#: templates/circuits/provideraccount.html:17 +msgid "Provider Account" +msgstr "Compte du fournisseur" + +#: templates/core/configrevision.html:47 +msgid "Default unit height" +msgstr "Hauteur de l'unité par défaut" + +#: templates/core/configrevision.html:51 +msgid "Default unit width" +msgstr "Largeur de l'unité par défaut" + +#: templates/core/configrevision.html:63 +msgid "Default voltage" +msgstr "Tension par défaut" + +#: templates/core/configrevision.html:67 +msgid "Default amperage" +msgstr "Ampérage par défaut" + +#: templates/core/configrevision.html:71 +msgid "Default max utilization" +msgstr "Utilisation maximale par défaut" + +#: templates/core/configrevision.html:83 +msgid "Enforce global unique" +msgstr "Appliquez une approche unique au monde" + +#: templates/core/configrevision.html:135 +msgid "Paginate count" +msgstr "Nombre de pages" + +#: templates/core/configrevision.html:139 +msgid "Max page size" +msgstr "Taille de page maximale" + +#: templates/core/configrevision.html:179 +msgid "Default user preferences" +msgstr "Préférences utilisateur par défaut" + +#: templates/core/configrevision.html:209 +msgid "Job retention" +msgstr "Maintien de l'emploi" + +#: templates/core/configrevision.html:221 +msgid "Comment" +msgstr "Commentaire" + +#: templates/core/configrevision_restore.html:8 +#: templates/core/configrevision_restore.html:43 +#: templates/core/configrevision_restore.html:79 +msgid "Restore" +msgstr "Restaurer" + +#: templates/core/configrevision_restore.html:21 +msgid "Config revisions" +msgstr "Révisions de configuration" + +#: templates/core/configrevision_restore.html:54 +msgid "Parameter" +msgstr "Paramètre" + +#: templates/core/configrevision_restore.html:55 +msgid "Current Value" +msgstr "Valeur actuelle" + +#: templates/core/configrevision_restore.html:56 +msgid "New Value" +msgstr "Nouvelle valeur" + +#: templates/core/configrevision_restore.html:66 +msgid "Changed" +msgstr "Modifié" + +#: templates/core/datafile.html:47 +msgid "Last Updated" +msgstr "Dernière mise à jour" + +#: templates/core/datafile.html:51 templates/ipam/iprange.html:28 +#: templates/virtualization/virtualdisk.html:30 +msgid "Size" +msgstr "Taille" + +#: templates/core/datafile.html:52 +msgid "bytes" +msgstr "octets" + +#: templates/core/datafile.html:55 +msgid "SHA256 Hash" +msgstr "Hachage SHA256" + +#: templates/core/datasource.html:14 templates/core/datasource.html:20 +#: utilities/templates/buttons/sync.html:5 +msgid "Sync" +msgstr "Synchroniser" + +#: templates/core/datasource.html:51 +msgid "Last synced" +msgstr "Dernière synchronisation" + +#: templates/core/datasource.html:86 +msgid "Backend" +msgstr "Backend" + +#: templates/core/datasource.html:102 +msgid "No parameters defined" +msgstr "Aucun paramètre défini" + +#: templates/core/datasource.html:118 +msgid "Files" +msgstr "Dossiers" + +#: templates/core/job.html:21 +msgid "Job" +msgstr "Emploi" + +#: templates/core/job.html:45 templates/extras/journalentry.html:29 +msgid "Created By" +msgstr "Créé par" + +#: templates/core/job.html:54 +msgid "Scheduling" +msgstr "Planification" + +#: templates/core/job.html:66 +#, python-format +msgid "every %(interval)s seconds" +msgstr "chaque %(interval)s secondes" + +#: templates/dcim/bulk_disconnect.html:9 +#, python-format +msgid "" +"Are you sure you want to disconnect these %(count)s %(obj_type_plural)s?" +msgstr "" +"Êtes-vous sûr de vouloir les déconnecter %(count)s %(obj_type_plural)s?" + +#: templates/dcim/cable_edit.html:12 +msgid "A Side" +msgstr "Un côté" + +#: templates/dcim/cable_edit.html:29 +msgid "B Side" +msgstr "Côté B" + +#: templates/dcim/cable_trace.html:6 +#, python-format +msgid "Cable Trace for %(object_type)s %(object)s" +msgstr "Cable Trace pour %(object_type)s %(object)s" + +#: templates/dcim/cable_trace.html:21 templates/dcim/inc/rack_elevation.html:7 +msgid "Download SVG" +msgstr "Télécharger SVG" + +#: templates/dcim/cable_trace.html:27 +msgid "Asymmetric Path" +msgstr "Trajectoire asymétrique" + +#: templates/dcim/cable_trace.html:28 +msgid "The nodes below have no links and result in an asymmetric path" +msgstr "" +"Les nœuds ci-dessous n'ont aucun lien et génèrent un chemin asymétrique" + +#: templates/dcim/cable_trace.html:35 +msgid "Path split" +msgstr "Parcours divisé" + +#: templates/dcim/cable_trace.html:36 +msgid "Select a node below to continue" +msgstr "Sélectionnez un nœud ci-dessous pour continuer" + +#: templates/dcim/cable_trace.html:52 +msgid "Trace Completed" +msgstr "Trace terminée" + +#: templates/dcim/cable_trace.html:55 +msgid "Total segments" +msgstr "Nombre total de segments" + +#: templates/dcim/cable_trace.html:59 +msgid "Total length" +msgstr "Longueur totale" + +#: templates/dcim/cable_trace.html:74 +msgid "No paths found" +msgstr "Aucun chemin trouvé" + +#: templates/dcim/cable_trace.html:83 +msgid "Related Paths" +msgstr "Chemins associés" + +#: templates/dcim/cable_trace.html:89 +msgid "Origin" +msgstr "Origine" + +#: templates/dcim/cable_trace.html:90 +msgid "Destination" +msgstr "Destination" + +#: templates/dcim/cable_trace.html:91 +msgid "Segments" +msgstr "Segments" + +#: templates/dcim/cable_trace.html:104 +msgid "Incomplete" +msgstr "Incomplet" + +#: templates/dcim/component_list.html:14 +msgid "Rename Selected" +msgstr "Renommer la sélection" + +#: templates/dcim/consoleport.html:67 templates/dcim/consoleserverport.html:67 +#: templates/dcim/frontport.html:105 templates/dcim/interface.html:182 +#: templates/dcim/poweroutlet.html:73 templates/dcim/powerport.html:73 +msgid "Not Connected" +msgstr "Non connecté" + +#: templates/dcim/consoleport.html:75 templates/dcim/consoleserverport.html:18 +#: templates/dcim/frontport.html:116 templates/dcim/inventoryitem_edit.html:44 +msgid "Console Server Port" +msgstr "Port du serveur de consoles" + +#: templates/dcim/device.html:35 +msgid "Highlight device" +msgstr "Surligner l'appareil" + +#: templates/dcim/device.html:57 +msgid "Not racked" +msgstr "Non rincé" + +#: templates/dcim/device.html:64 templates/dcim/site.html:96 +msgid "GPS Coordinates" +msgstr "Coordonnées GPS" + +#: templates/dcim/device.html:70 templates/dcim/site.html:102 +msgid "Map It" +msgstr "Cartographiez-le" + +#: templates/dcim/device.html:110 templates/dcim/inventoryitem.html:57 +#: templates/dcim/module.html:79 templates/dcim/modulebay.html:73 +#: templates/dcim/rack.html:62 +msgid "Asset Tag" +msgstr "Étiquette d'actif" + +#: templates/dcim/device.html:153 +msgid "View Virtual Chassis" +msgstr "Afficher le châssis virtuel" + +#: templates/dcim/device.html:170 +msgid "Create VDC" +msgstr "Créer un VDC" + +#: templates/dcim/device.html:179 templates/dcim/device_edit.html:64 +#: virtualization/forms/model_forms.py:226 +msgid "Management" +msgstr "Gestion" + +#: templates/dcim/device.html:200 templates/dcim/device.html:216 +#: templates/virtualization/virtualmachine.html:56 +#: templates/virtualization/virtualmachine.html:72 +msgid "NAT for" +msgstr "NAT pour" + +#: templates/dcim/device.html:202 templates/dcim/device.html:218 +#: templates/virtualization/virtualmachine.html:58 +#: templates/virtualization/virtualmachine.html:74 +msgid "NAT" +msgstr "NAT" + +#: templates/dcim/device.html:254 templates/dcim/rack.html:70 +msgid "Power Utilization" +msgstr "Utilisation de l'énergie" + +#: templates/dcim/device.html:259 +msgid "Input" +msgstr "Entrée" + +#: templates/dcim/device.html:260 +msgid "Outlets" +msgstr "Prises" + +#: templates/dcim/device.html:261 +msgid "Allocated" +msgstr "Alloué" + +#: templates/dcim/device.html:270 templates/dcim/device.html:272 +#: templates/dcim/device.html:288 templates/dcim/powerfeed.html:70 +msgid "VA" +msgstr "VA" + +#: templates/dcim/device.html:282 +msgctxt "Leg of a power feed" +msgid "Leg" +msgstr "Jambe" + +#: templates/dcim/device.html:312 +#: templates/virtualization/virtualmachine.html:165 +msgid "Add a service" +msgstr "Ajouter un service" + +#: templates/dcim/device.html:319 templates/dcim/rack.html:77 +#: templates/dcim/rack_edit.html:38 +msgid "Dimensions" +msgstr "Dimensions" + +#: templates/dcim/device/base.html:21 templates/dcim/device_list.html:9 +#: templates/dcim/devicetype/base.html:18 templates/dcim/module.html:18 +#: templates/dcim/moduletype/base.html:18 +#: templates/virtualization/virtualmachine/base.html:22 +#: templates/virtualization/virtualmachine_list.html:8 +msgid "Add Components" +msgstr "Ajouter des composants" + +#: templates/dcim/device/consoleports.html:24 +msgid "Add Console Ports" +msgstr "Ajouter des ports de console" + +#: templates/dcim/device/consoleserverports.html:24 +msgid "Add Console Server Ports" +msgstr "Ajouter des ports au serveur de consoles" + +#: templates/dcim/device/devicebays.html:10 +msgid "Add Device Bays" +msgstr "Ajouter des baies pour appareils" + +#: templates/dcim/device/frontports.html:24 +msgid "Add Front Ports" +msgstr "Ajouter des ports frontaux" + +#: templates/dcim/device/inc/interface_table_controls.html:9 +msgid "Hide Enabled" +msgstr "Masquer activé" + +#: templates/dcim/device/inc/interface_table_controls.html:10 +msgid "Hide Disabled" +msgstr "Masquer les désactivés" + +#: templates/dcim/device/inc/interface_table_controls.html:11 +msgid "Hide Virtual" +msgstr "Masquer le virtuel" + +#: templates/dcim/device/inc/interface_table_controls.html:12 +msgid "Hide Disconnected" +msgstr "Masquer les déconnectés" + +#: templates/dcim/device/interfaces.html:28 +msgid "Add Interfaces" +msgstr "Ajouter des interfaces" + +#: templates/dcim/device/inventory.html:10 +#: templates/dcim/inc/panels/inventory_items.html:46 +msgid "Add Inventory Item" +msgstr "Ajouter un article d'inventaire" + +#: templates/dcim/device/modulebays.html:10 +msgid "Add Module Bays" +msgstr "Ajouter des baies de modules" + +#: templates/dcim/device/poweroutlets.html:24 +msgid "Add Power Outlets" +msgstr "Ajouter des prises de courant" + +#: templates/dcim/device/powerports.html:24 +msgid "Add Power Port" +msgstr "Ajouter un port d'alimentation" + +#: templates/dcim/device/rearports.html:24 +msgid "Add Rear Ports" +msgstr "Ajouter des ports arrière" + +#: templates/dcim/device/render_config.html:5 +#: templates/virtualization/virtualmachine/render_config.html:5 +msgid "Config" +msgstr "Configuration" + +#: templates/dcim/device/render_config.html:37 +#: templates/virtualization/virtualmachine/render_config.html:37 +msgid "Context Data" +msgstr "Données contextuelles" + +#: templates/dcim/device/render_config.html:57 +#: templates/virtualization/virtualmachine/render_config.html:57 +msgid "Download" +msgstr "Télécharger" + +#: templates/dcim/device/render_config.html:60 +#: templates/virtualization/virtualmachine/render_config.html:60 +msgid "Rendered Config" +msgstr "Configuration rendue" + +#: templates/dcim/device/render_config.html:65 +#: templates/virtualization/virtualmachine/render_config.html:65 +msgid "No configuration template found" +msgstr "Aucun modèle de configuration trouvé" + +#: templates/dcim/device_edit.html:44 +msgid "Parent Bay" +msgstr "Baie Parent" + +#: templates/dcim/device_edit.html:48 +#: utilities/templates/form_helpers/render_field.html:20 +msgid "Regenerate Slug" +msgstr "Régénérez la limace" + +#: templates/dcim/device_edit.html:49 templates/generic/bulk_remove.html:7 +#: utilities/templates/helpers/table_config_form.html:23 +msgid "Remove" +msgstr "Supprimer" + +#: templates/dcim/device_edit.html:110 +msgid "Local Config Context Data" +msgstr "Données contextuelles de configuration locales" + +#: templates/dcim/device_list.html:82 +#: templates/dcim/devicetype/component_templates.html:18 +#: templates/dcim/moduletype/component_templates.html:18 +#: templates/generic/bulk_rename.html:34 +#: templates/virtualization/virtualmachine/interfaces.html:11 +#: templates/virtualization/virtualmachine/virtual_disks.html:11 +msgid "Rename" +msgstr "Renommer" + +#: templates/dcim/devicebay.html:18 +msgid "Device Bay" +msgstr "Baie pour appareils" + +#: templates/dcim/devicebay.html:48 +msgid "Installed Device" +msgstr "Appareil installé" + +#: templates/dcim/devicebay_delete.html:6 +#, python-format +msgid "Delete device bay %(devicebay)s?" +msgstr "Supprimer la baie de l'appareil %(devicebay)s?" + +#: templates/dcim/devicebay_delete.html:11 +#, python-format +msgid "" +"Are you sure you want to delete this device bay from " +"%(device)s?" +msgstr "" +"Êtes-vous sûr de vouloir supprimer cette baie d'appareils de " +"%(device)s?" + +#: templates/dcim/devicebay_depopulate.html:6 +#, python-format +msgid "Remove %(device)s from %(device_bay)s?" +msgstr "Supprimer %(device)s à partir de %(device_bay)s?" + +#: templates/dcim/devicebay_depopulate.html:13 +#, python-format +msgid "" +"Are you sure you want to remove %(device)s from " +"%(device_bay)s?" +msgstr "" +"Êtes-vous sûr de vouloir supprimer %(device)s à partir de " +"%(device_bay)s?" + +#: templates/dcim/devicebay_populate.html:13 +msgid "Populate" +msgstr "Peupler" + +#: templates/dcim/devicebay_populate.html:22 +msgid "Bay" +msgstr "Baie" + +#: templates/dcim/devicerole.html:14 templates/dcim/platform.html:17 +msgid "Add Device" +msgstr "Ajouter un appareil" + +#: templates/dcim/devicerole.html:43 +msgid "VM Role" +msgstr "Rôle de la machine virtuelle" + +#: templates/dcim/devicetype.html:21 templates/dcim/moduletype.html:19 +msgid "Model Name" +msgstr "Nom du modèle" + +#: templates/dcim/devicetype.html:28 templates/dcim/moduletype.html:23 +msgid "Part Number" +msgstr "Numéro de pièce" + +#: templates/dcim/devicetype.html:40 +msgid "Height (U" +msgstr "Hauteur (U)" + +#: templates/dcim/devicetype.html:44 +msgid "Exclude From Utilization" +msgstr "Exclure de l'utilisation" + +#: templates/dcim/devicetype.html:62 +msgid "Parent/Child" +msgstr "Parent/Enfant" + +#: templates/dcim/devicetype.html:74 +msgid "Front Image" +msgstr "Image avant" + +#: templates/dcim/devicetype.html:86 +msgid "Rear Image" +msgstr "Image arrière" + +#: templates/dcim/frontport.html:57 +msgid "Rear Port Position" +msgstr "Position du port arrière" + +#: templates/dcim/frontport.html:79 templates/dcim/interface.html:150 +#: templates/dcim/poweroutlet.html:67 templates/dcim/powerport.html:67 +#: templates/dcim/rearport.html:75 +msgid "Marked as Connected" +msgstr "Marqué comme connecté" + +#: templates/dcim/frontport.html:93 templates/dcim/rearport.html:89 +msgid "Connection Status" +msgstr "État de la connexion" + +#: templates/dcim/inc/cable_termination.html:65 +msgid "No termination" +msgstr "Pas de résiliation" + +#: templates/dcim/inc/cable_toggle_buttons.html:4 +msgid "Mark Planned" +msgstr "Marquer comme prévu" + +#: templates/dcim/inc/cable_toggle_buttons.html:8 +msgid "Mark Installed" +msgstr "Marquer comme installé" + +#: templates/dcim/inc/connection_endpoints.html:13 +msgid "Path Status" +msgstr "État du chemin" + +#: templates/dcim/inc/connection_endpoints.html:18 +msgid "Not Reachable" +msgstr "Non joignable" + +#: templates/dcim/inc/connection_endpoints.html:23 +msgid "Path Endpoints" +msgstr "Points de terminaison du chemin" + +#: templates/dcim/inc/endpoint_connection.html:8 +#: templates/dcim/powerfeed.html:128 templates/dcim/rearport.html:101 +msgid "Not connected" +msgstr "Non connecté" + +#: templates/dcim/inc/interface_vlans_table.html:6 +msgid "Untagged" +msgstr "Non marqué" + +#: templates/dcim/inc/interface_vlans_table.html:37 +msgid "No VLANs Assigned" +msgstr "Aucun VLAN attribué" + +#: templates/dcim/inc/interface_vlans_table.html:44 +#: templates/ipam/prefix_list.html:16 templates/ipam/prefix_list.html:33 +msgid "Clear" +msgstr "Transparent" + +#: templates/dcim/inc/interface_vlans_table.html:47 +msgid "Clear All" +msgstr "Tout effacer" + +#: templates/dcim/interface.html:17 +msgid "Add Child Interface" +msgstr "Ajouter une interface enfant" + +#: templates/dcim/interface.html:51 +msgid "Speed/Duplex" +msgstr "Vitesse/Duplex" + +#: templates/dcim/interface.html:74 +msgid "PoE Mode" +msgstr "Mode PoE" + +#: templates/dcim/interface.html:78 +msgid "PoE Type" +msgstr "Type de PoE" + +#: templates/dcim/interface.html:82 +#: templates/virtualization/vminterface.html:66 +msgid "802.1Q Mode" +msgstr "Mode 802.1Q" + +#: templates/dcim/interface.html:130 +#: templates/virtualization/vminterface.html:62 +msgid "MAC Address" +msgstr "Adresse MAC" + +#: templates/dcim/interface.html:157 +msgid "Wireless Link" +msgstr "Liaison sans fil" + +#: templates/dcim/interface.html:226 vpn/choices.py:55 +msgid "Peer" +msgstr "Pair" + +#: templates/dcim/interface.html:238 +#: templates/wireless/inc/wirelesslink_interface.html:26 +msgid "Channel" +msgstr "Chaîne" + +#: templates/dcim/interface.html:247 +#: templates/wireless/inc/wirelesslink_interface.html:32 +msgid "Channel Frequency" +msgstr "Fréquence du canal" + +#: templates/dcim/interface.html:250 templates/dcim/interface.html:258 +#: templates/dcim/interface.html:269 templates/dcim/interface.html:277 +msgid "MHz" +msgstr "MHz" + +#: templates/dcim/interface.html:266 +#: templates/wireless/inc/wirelesslink_interface.html:42 +msgid "Channel Width" +msgstr "Largeur du canal" + +#: templates/dcim/interface.html:295 templates/wireless/wirelesslan.html:15 +#: templates/wireless/wirelesslink.html:24 wireless/forms/bulk_edit.py:59 +#: wireless/forms/bulk_edit.py:101 wireless/forms/filtersets.py:39 +#: wireless/forms/filtersets.py:79 wireless/models.py:81 +#: wireless/models.py:155 wireless/tables/wirelesslan.py:44 +msgid "SSID" +msgstr "SAID" + +#: templates/dcim/interface.html:316 +msgid "LAG Members" +msgstr "Membres du GAL" + +#: templates/dcim/interface.html:335 +msgid "No member interfaces" +msgstr "Aucune interface pour les membres" + +#: templates/dcim/interface.html:359 templates/ipam/fhrpgroup.html:80 +#: templates/ipam/iprange/ip_addresses.html:7 +#: templates/ipam/prefix/ip_addresses.html:7 +#: templates/virtualization/vminterface.html:96 +msgid "Add IP Address" +msgstr "Ajouter une adresse IP" + +#: templates/dcim/inventoryitem.html:25 +msgid "Parent Item" +msgstr "Article parent" + +#: templates/dcim/inventoryitem.html:49 +msgid "Part ID" +msgstr "ID de pièce" + +#: templates/dcim/inventoryitem_bulk_delete.html:5 +msgid "This will also delete all child inventory items of those listed" +msgstr "" +"Cela supprimera également tous les articles de l'inventaire pour enfants " +"parmi ceux répertoriés." + +#: templates/dcim/inventoryitem_edit.html:33 +msgid "Component Assignment" +msgstr "Affectation des composants" + +#: templates/dcim/inventoryitem_edit.html:59 +#: templates/dcim/poweroutlet.html:18 templates/dcim/powerport.html:81 +msgid "Power Outlet" +msgstr "Prise de courant" + +#: templates/dcim/location.html:17 +msgid "Add Child Location" +msgstr "Ajouter la localisation de l'enfant" + +#: templates/dcim/location.html:76 +msgid "Child Locations" +msgstr "Localisations pour enfants" + +#: templates/dcim/location.html:84 templates/dcim/site.html:137 +msgid "Add a Location" +msgstr "Ajouter un lieu" + +#: templates/dcim/location.html:98 templates/dcim/site.html:151 +msgid "Add a Device" +msgstr "Ajouter un appareil" + +#: templates/dcim/manufacturer.html:16 +msgid "Add Device Type" +msgstr "Ajouter un type d'appareil" + +#: templates/dcim/manufacturer.html:21 +msgid "Add Module Type" +msgstr "Ajouter un type de module" + +#: templates/dcim/powerfeed.html:56 +msgid "Connected Device" +msgstr "Appareil connecté" + +#: templates/dcim/powerfeed.html:66 +msgid "Utilization (Allocated" +msgstr "Utilisation (allouée)" + +#: templates/dcim/powerfeed.html:85 +msgid "Electrical Characteristics" +msgstr "Caractéristiques électriques" + +#: templates/dcim/powerfeed.html:95 +msgctxt "Abbreviation for volts" +msgid "V" +msgstr "V" + +#: templates/dcim/powerfeed.html:99 +msgctxt "Abbreviation for amperes" +msgid "A" +msgstr "UN" + +#: templates/dcim/poweroutlet.html:51 +msgid "Feed Leg" +msgstr "Patte d'alimentation" + +#: templates/dcim/powerpanel.html:77 +msgid "Add Power Feeds" +msgstr "Ajouter des sources d'alimentation" + +#: templates/dcim/powerport.html:47 +msgid "Maximum Draw" +msgstr "Tirage maximum" + +#: templates/dcim/powerport.html:51 +msgid "Allocated Draw" +msgstr "Tirage alloué" + +#: templates/dcim/rack.html:66 +msgid "Space Utilization" +msgstr "Utilisation de l'espace" + +#: templates/dcim/rack.html:96 +msgid "descending" +msgstr "descendant" + +#: templates/dcim/rack.html:96 +msgid "ascending" +msgstr "ascendant" + +#: templates/dcim/rack.html:99 +msgid "Starting Unit" +msgstr "Unité de départ" + +#: templates/dcim/rack.html:125 +msgid "Mounting Depth" +msgstr "Profondeur de montage" + +#: templates/dcim/rack.html:135 +msgid "Rack Weight" +msgstr "Poids du rack" + +#: templates/dcim/rack.html:145 templates/dcim/rack_edit.html:67 +msgid "Maximum Weight" +msgstr "Poids maximum" + +#: templates/dcim/rack.html:155 +msgid "Total Weight" +msgstr "Poids total" + +#: templates/dcim/rack.html:173 templates/dcim/rack_elevation_list.html:16 +msgid "Images and Labels" +msgstr "Images et étiquettes" + +#: templates/dcim/rack.html:174 templates/dcim/rack_elevation_list.html:17 +msgid "Images only" +msgstr "Images uniquement" + +#: templates/dcim/rack.html:175 templates/dcim/rack_elevation_list.html:18 +msgid "Labels only" +msgstr "Étiquettes uniquement" + +#: templates/dcim/rack/reservations.html:9 +msgid "Add reservation" +msgstr "Ajouter une réservation" + +#: templates/dcim/rack_edit.html:21 +msgid "Inventory Control" +msgstr "Contrôle des stocks" + +#: templates/dcim/rack_edit.html:45 +msgid "Outer Dimensions" +msgstr "Dimensions extérieures" + +#: templates/dcim/rack_edit.html:56 templates/dcim/rack_edit.html:71 +msgid "Unit" +msgstr "Unité" + +#: templates/dcim/rack_elevation_list.html:12 +msgid "View List" +msgstr "Afficher la liste" + +#: templates/dcim/rack_elevation_list.html:27 +msgid "Sort By" +msgstr "Trier par" + +#: templates/dcim/rack_elevation_list.html:77 +msgid "No Racks Found" +msgstr "Aucun support n'a été trouvé" + +#: templates/dcim/rack_list.html:8 +msgid "View Elevations" +msgstr "Afficher les élévations" + +#: templates/dcim/rackreservation.html:47 +msgid "Reservation Details" +msgstr "Détails de la réservation" + +#: templates/dcim/rackrole.html:10 +msgid "Add Rack" +msgstr "Ajouter un rack" + +#: templates/dcim/rearport.html:53 +msgid "Positions" +msgstr "Positions" + +#: templates/dcim/region.html:17 templates/dcim/sitegroup.html:17 +msgid "Add Site" +msgstr "Ajouter un site" + +#: templates/dcim/region.html:56 +msgid "Child Regions" +msgstr "Régions infantiles" + +#: templates/dcim/region.html:64 +msgid "Add Region" +msgstr "Ajouter une région" + +#: templates/dcim/site.html:56 +msgid "Facility" +msgstr "Facilité" + +#: templates/dcim/site.html:64 +msgid "Time Zone" +msgstr "Fuseau horaire" + +#: templates/dcim/site.html:67 +msgid "UTC" +msgstr "UTC" + +#: templates/dcim/site.html:68 +msgid "Site time" +msgstr "Heure du site" + +#: templates/dcim/site.html:75 +msgid "Physical Address" +msgstr "Adresse physique" + +#: templates/dcim/site.html:81 +msgid "Map" +msgstr "Carte" + +#: templates/dcim/site.html:92 +msgid "Shipping Address" +msgstr "Adresse de livraison" + +#: templates/dcim/sitegroup.html:56 templates/tenancy/contactgroup.html:49 +#: templates/tenancy/tenantgroup.html:58 +#: templates/wireless/wirelesslangroup.html:56 +msgid "Child Groups" +msgstr "Groupes d'enfants" + +#: templates/dcim/sitegroup.html:64 +msgid "Add Site Group" +msgstr "Ajouter un groupe de sites" + +#: templates/dcim/trace/attachment.html:5 +#: templates/extras/exporttemplate.html:37 +msgid "Attachment" +msgstr "Pièce jointe" + +#: templates/dcim/virtualchassis.html:86 +msgid "Add Member" +msgstr "Ajouter un membre" + +#: templates/dcim/virtualchassis_add.html:18 +msgid "Member Devices" +msgstr "Appareils pour les membres" + +#: templates/dcim/virtualchassis_add_member.html:6 +#, python-format +msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" +msgstr "Ajouter un nouveau membre à Virtual Chassis %(virtual_chassis)s" + +#: templates/dcim/virtualchassis_add_member.html:17 +msgid "Add New Member" +msgstr "Ajouter un nouveau membre" + +#: templates/dcim/virtualchassis_add_member.html:25 +msgid "Add Another" +msgstr "Ajouter un autre" + +#: templates/dcim/virtualchassis_edit.html:7 +#, python-format +msgid "Editing Virtual Chassis %(name)s" +msgstr "Édition d'un châssis virtuel %(name)s" + +#: templates/dcim/virtualchassis_edit.html:54 +msgid "Rack/Unit" +msgstr "Rack/unité" + +#: templates/dcim/virtualchassis_remove_member.html:5 +msgid "Remove Virtual Chassis Member" +msgstr "Supprimer un membre du châssis virtuel" + +#: templates/dcim/virtualchassis_remove_member.html:9 +#, python-format +msgid "" +"Are you sure you want to remove %(device)s from virtual " +"chassis %(name)s?" +msgstr "" +"Êtes-vous sûr de vouloir supprimer %(device)s à partir d'un" +" châssis virtuel %(name)s?" + +#: templates/dcim/virtualdevicecontext.html:29 templates/vpn/l2vpn.html:19 +msgid "Identifier" +msgstr "Identifiant" + +#: templates/exceptions/import_error.html:6 +msgid "" +"A module import error occurred during this request. Common causes include " +"the following:" +msgstr "" +"Une erreur d'importation de module s'est produite lors de cette demande. Les" +" causes les plus courantes sont les suivantes :" + +#: templates/exceptions/import_error.html:10 +msgid "Missing required packages" +msgstr "Packages requis manquants" + +#: templates/exceptions/import_error.html:11 +msgid "" +"This installation of NetBox might be missing one or more required Python " +"packages. These packages are listed in requirements.txt and " +"local_requirements.txt, and are normally installed as part of " +"the installation or upgrade process. To verify installed packages, run " +"pip freeze from the console and compare the output to the list " +"of required packages." +msgstr "" +"Il se peut qu'il manque un ou plusieurs packages Python requis à cette " +"installation de NetBox. Ces packages sont répertoriés dans " +"requirements.txt et local_requirements.txt, et " +"sont normalement installés dans le cadre du processus d'installation ou de " +"mise à niveau. Pour vérifier les packages installés, exécutez Pip " +"Freeze depuis la console et comparez la sortie à la liste des " +"packages requis." + +#: templates/exceptions/import_error.html:20 +msgid "WSGI service not restarted after upgrade" +msgstr "Le service WSGI n'a pas redémarré après la mise à niveau" + +#: templates/exceptions/import_error.html:21 +msgid "" +"If this installation has recently been upgraded, check that the WSGI service" +" (e.g. gunicorn or uWSGI) has been restarted. This ensures that the new code" +" is running." +msgstr "" +"Si cette installation a récemment été mise à niveau, vérifiez que le service" +" WSGI (par exemple gunicorn ou uWSGI) a été redémarré. Cela garantit que le " +"nouveau code est en cours d'exécution." + +#: templates/exceptions/permission_error.html:6 +msgid "" +"A file permission error was detected while processing this request. Common " +"causes include the following:" +msgstr "" +"Une erreur d'autorisation de fichier a été détectée lors du traitement de " +"cette demande. Les causes les plus courantes sont les suivantes :" + +#: templates/exceptions/permission_error.html:10 +msgid "Insufficient write permission to the media root" +msgstr "Autorisation d'écriture insuffisante pour la racine du média" + +#: templates/exceptions/permission_error.html:11 +#, python-format +msgid "" +"The configured media root is %(media_root)s. Ensure that the " +"user NetBox runs as has access to write files to all locations within this " +"path." +msgstr "" +"La racine multimédia configurée est %(media_root)s. Assurez-" +"vous que l'utilisateur NetBox s'exécute et qu'il a accès pour écrire des " +"fichiers à tous les emplacements situés dans ce chemin." + +#: templates/exceptions/programming_error.html:6 +msgid "" +"A database programming error was detected while processing this request. " +"Common causes include the following:" +msgstr "" +"Une erreur de programmation de base de données a été détectée lors du " +"traitement de cette demande. Les causes les plus courantes sont les " +"suivantes :" + +#: templates/exceptions/programming_error.html:10 +msgid "Database migrations missing" +msgstr "Migration de base de données manquante" + +#: templates/exceptions/programming_error.html:11 +msgid "" +"When upgrading to a new NetBox release, the upgrade script must be run to " +"apply any new database migrations. You can run migrations manually by " +"executing python3 manage.py migrate from the command line." +msgstr "" +"Lors de la mise à niveau vers une nouvelle version de NetBox, le script de " +"mise à niveau doit être exécuté pour appliquer toute nouvelle migration de " +"base de données. Vous pouvez exécuter les migrations manuellement en " +"exécutant migrer python3 manage.py à partir de la ligne de " +"commande." + +#: templates/exceptions/programming_error.html:18 +msgid "Unsupported PostgreSQL version" +msgstr "Version de PostgreSQL non prise en charge" + +#: templates/exceptions/programming_error.html:19 +msgid "" +"Ensure that PostgreSQL version 12 or later is in use. You can check this by " +"connecting to the database using NetBox's credentials and issuing a query " +"for SELECT VERSION()." +msgstr "" +"Assurez-vous que la version 12 ou ultérieure de PostgreSQL est utilisée. " +"Vous pouvez vérifier cela en vous connectant à la base de données à l'aide " +"des informations d'identification de NetBox et en émettant une requête pour " +"SÉLECTIONNER LA VERSION ()." + +#: templates/extras/admin/plugins_list.html:4 +#: templates/extras/admin/plugins_list.html:9 +#: templates/extras/admin/plugins_list.html:13 +msgid "Installed Plugins" +msgstr "Plugins installés" + +#: templates/extras/admin/plugins_list.html:23 +msgid "Package Name" +msgstr "Nom du package" + +#: templates/extras/admin/plugins_list.html:24 +msgid "Author" +msgstr "Auteur" + +#: templates/extras/admin/plugins_list.html:25 +msgid "Author Email" +msgstr "Adresse électronique de l'auteur" + +#: templates/extras/admin/plugins_list.html:27 +#: templates/vpn/ipsecprofile.html:47 vpn/forms/bulk_edit.py:140 +#: vpn/forms/bulk_import.py:171 vpn/tables/crypto.py:61 +msgid "Version" +msgstr "Version" + +#: templates/extras/configcontext.html:46 +#: templates/extras/configtemplate.html:38 +#: templates/extras/exporttemplate.html:57 +msgid "The data file associated with this object has been deleted" +msgstr "Le fichier de données associé à cet objet a été supprimé" + +#: templates/extras/configcontext.html:55 +#: templates/extras/configtemplate.html:47 +#: templates/extras/exporttemplate.html:66 +msgid "Data Synced" +msgstr "Données synchronisées" + +#: templates/extras/configcontext_list.html:7 +#: templates/extras/configtemplate_list.html:7 +#: templates/extras/exporttemplate_list.html:7 +msgid "Sync Data" +msgstr "Synchroniser les données" + +#: templates/extras/configtemplate.html:58 +msgid "Environment Parameters" +msgstr "Paramètres de l'environnement" + +#: templates/extras/configtemplate.html:69 +#: templates/extras/exporttemplate.html:88 +msgid "Template" +msgstr "Modèle" + +#: templates/extras/customfield.html:31 templates/extras/customlink.html:22 +msgid "Group Name" +msgstr "Nom du groupe" + +#: templates/extras/customfield.html:43 +msgid "Cloneable" +msgstr "Clonable" + +#: templates/extras/customfield.html:53 +msgid "Default Value" +msgstr "Valeur par défaut" + +#: templates/extras/customfield.html:64 +msgid "Search Weight" +msgstr "Poids de recherche" + +#: templates/extras/customfield.html:74 +msgid "Filter Logic" +msgstr "Logique des filtres" + +#: templates/extras/customfield.html:78 +msgid "Display Weight" +msgstr "Poids de l'écran" + +#: templates/extras/customfield.html:82 +msgid "UI Visible" +msgstr "Interface utilisateur visible" + +#: templates/extras/customfield.html:86 +msgid "UI Editable" +msgstr "Interface utilisateur modifiable" + +#: templates/extras/customfield.html:108 +msgid "Validation Rules" +msgstr "Règles de validation" + +#: templates/extras/customfield.html:112 +msgid "Minimum Value" +msgstr "Valeur minimale" + +#: templates/extras/customfield.html:116 +msgid "Maximum Value" +msgstr "Valeur maximale" + +#: templates/extras/customfield.html:120 +msgid "Regular Expression" +msgstr "Expression régulière" + +#: templates/extras/customlink.html:30 +msgid "Button Class" +msgstr "Classe de boutons" + +#: templates/extras/customlink.html:41 templates/extras/exporttemplate.html:73 +#: templates/extras/savedfilter.html:41 +msgid "Assigned Models" +msgstr "Modèles assignés" + +#: templates/extras/customlink.html:57 +msgid "Link Text" +msgstr "Texte du lien" + +#: templates/extras/customlink.html:65 +msgid "Link URL" +msgstr "URL du lien" + +#: templates/extras/dashboard/reset.html:4 templates/home.html:63 +msgid "Reset Dashboard" +msgstr "Réinitialisation du tableau" + +#: templates/extras/dashboard/reset.html:8 +msgid "" +"This will remove all configured widgets and restore the " +"default dashboard configuration." +msgstr "" +"Cela supprimera tous widgets configurés et restauration de " +"la configuration par défaut du tableau de bord." + +#: templates/extras/dashboard/reset.html:13 +msgid "" +"This change affects only your dashboard, and will not impact other " +"users." +msgstr "" +"Ce changement concerne uniquement votre tableau de bord, et n'aura " +"aucun impact sur les autres utilisateurs." + +#: templates/extras/dashboard/widget_add.html:7 +msgid "Add a Widget" +msgstr "Ajouter un widget" + +#: templates/extras/dashboard/widgets/bookmarks.html:14 +msgid "No bookmarks have been added yet." +msgstr "Aucun favori n'a encore été ajouté." + +#: templates/extras/dashboard/widgets/objectcounts.html:15 +msgid "No permission" +msgstr "Aucune autorisation" + +#: templates/extras/dashboard/widgets/objectlist.html:6 +msgid "No permission to view this content" +msgstr "Aucune autorisation pour voir ce contenu" + +#: templates/extras/dashboard/widgets/objectlist.html:10 +msgid "Unable to load content. Invalid view name" +msgstr "Impossible de charger le contenu. Nom de vue non valide" + +#: templates/extras/dashboard/widgets/rssfeed.html:12 +msgid "No content found" +msgstr "Aucun contenu n'a été trouvé" + +#: templates/extras/dashboard/widgets/rssfeed.html:18 +msgid "There was a problem fetching the RSS feed" +msgstr "Un problème s'est produit lors de la récupération du flux RSS" + +#: templates/extras/dashboard/widgets/rssfeed.html:21 +msgid "HTTP" +msgstr "HTTP" + +#: templates/extras/eventrule.html:63 +msgid "Job start" +msgstr "Début du travail" + +#: templates/extras/eventrule.html:67 +msgid "Job end" +msgstr "Fin du travail" + +#: templates/extras/exporttemplate.html:29 +msgid "MIME Type" +msgstr "Type MIME" + +#: templates/extras/exporttemplate.html:33 +msgid "File Extension" +msgstr "Extension de fichier" + +#: templates/extras/htmx/report_result.html:9 +#: templates/extras/htmx/script_result.html:10 +msgid "Scheduled for" +msgstr "Prévu pour" + +#: templates/extras/htmx/report_result.html:14 +#: templates/extras/htmx/script_result.html:15 +msgid "Duration" +msgstr "Durée" + +#: templates/extras/htmx/report_result.html:20 +msgid "Report Methods" +msgstr "Méthodes de rapport" + +#: templates/extras/htmx/report_result.html:38 +msgid "Report Results" +msgstr "Résultats du rapport" + +#: templates/extras/htmx/report_result.html:44 +#: templates/extras/htmx/script_result.html:26 +msgid "Level" +msgstr "Niveau" + +#: templates/extras/htmx/report_result.html:46 +#: templates/extras/htmx/script_result.html:27 +msgid "Message" +msgstr "Message" + +#: templates/extras/htmx/script_result.html:21 +msgid "Script Log" +msgstr "Journal des scripts" + +#: templates/extras/htmx/script_result.html:25 +msgid "Line" +msgstr "Ligne" + +#: templates/extras/htmx/script_result.html:38 +msgid "No log output" +msgstr "Aucune sortie de journal" + +#: templates/extras/htmx/script_result.html:46 +msgid "Exec Time" +msgstr "Heure d'exécution" + +#: templates/extras/htmx/script_result.html:46 +msgctxt "Unit of time" +msgid "seconds" +msgstr "secondes" + +#: templates/extras/htmx/script_result.html:50 +msgid "Output" +msgstr "sortie" + +#: templates/extras/inc/result_pending.html:4 +msgid "Loading" +msgstr "Chargement" + +#: templates/extras/inc/result_pending.html:6 +msgid "Results pending" +msgstr "Résultats en attente" + +#: templates/extras/journalentry.html:16 +msgid "Journal Entry" +msgstr "Entrée de journal" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "Change log retention" +msgstr "Modifier la conservation du journal" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "days" +msgstr "jours" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "Indefinite" +msgstr "Indéfini" + +#: templates/extras/object_configcontext.html:11 +msgid "Rendered Context" +msgstr "Contexte rendu" + +#: templates/extras/object_configcontext.html:22 +msgid "Local Context" +msgstr "Contexte local" + +#: templates/extras/object_configcontext.html:34 +msgid "The local config context overwrites all source contexts" +msgstr "Le contexte de configuration local remplace tous les contextes source" + +#: templates/extras/object_configcontext.html:40 +msgid "Source Contexts" +msgstr "Contextes sources" + +#: templates/extras/object_journal.html:18 +msgid "New Journal Entry" +msgstr "Nouvelle entrée de journal" + +#: templates/extras/objectchange.html:29 +#: templates/users/objectpermission.html:45 +msgid "Change" +msgstr "Changez" + +#: templates/extras/objectchange.html:84 +msgid "Difference" +msgstr "Différence" + +#: templates/extras/objectchange.html:87 +msgid "Previous" +msgstr "Précédent" + +#: templates/extras/objectchange.html:90 +msgid "Next" +msgstr "Prochaine" + +#: templates/extras/objectchange.html:98 +msgid "Object Created" +msgstr "Objet créé" + +#: templates/extras/objectchange.html:100 +msgid "Object Deleted" +msgstr "Objet supprimé" + +#: templates/extras/objectchange.html:102 +msgid "No Changes" +msgstr "Aucune modification" + +#: templates/extras/objectchange.html:117 +msgid "Pre-Change Data" +msgstr "Données préalables à la modification" + +#: templates/extras/objectchange.html:126 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Avertissement : Comparaison d'une modification non atomique avec " +"l'enregistrement de modification précédent" + +#: templates/extras/objectchange.html:136 +msgid "Post-Change Data" +msgstr "Données après modification" + +#: templates/extras/objectchange.html:157 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Tout afficher %(count)s Changements" + +#: templates/extras/report.html:14 +msgid "This report is invalid and cannot be run." +msgstr "Ce rapport n'est pas valide et ne peut pas être exécuté." + +#: templates/extras/report.html:23 templates/extras/report_list.html:88 +msgid "Run Again" +msgstr "Exécutez à nouveau" + +#: templates/extras/report.html:25 templates/extras/report_list.html:90 +msgid "Run Report" +msgstr "Exécuter le rapport" + +#: templates/extras/report.html:36 +msgid "Last run" +msgstr "Dernière course" + +#: templates/extras/report/base.html:30 +msgid "Report" +msgstr "Rapport" + +#: templates/extras/report_list.html:48 templates/extras/script_list.html:54 +msgid "Last Run" +msgstr "Dernière course" + +#: templates/extras/report_list.html:70 templates/extras/script_list.html:77 +msgid "Never" +msgstr "Jamais" + +#: templates/extras/report_list.html:75 +msgid "Report has no test methods" +msgstr "Le rapport ne contient aucune méthode de test" + +#: templates/extras/report_list.html:76 +msgid "Invalid" +msgstr "Non valide" + +#: templates/extras/report_list.html:125 +msgid "No Reports Found" +msgstr "Aucun rapport n'a été trouvé" + +#: templates/extras/report_list.html:128 +#, python-format +msgid "" +"Get started by creating a report from " +"an uploaded file or data source." +msgstr "" +"Commencez par création d'un rapport à " +"partir d'un fichier ou d'une source de données chargé." + +#: templates/extras/script.html:13 +msgid "You do not have permission to run scripts" +msgstr "Vous n'êtes pas autorisé à exécuter des scripts" + +#: templates/extras/script.html:37 +msgid "Run Script" +msgstr "Exécuter le script" + +#: templates/extras/script_list.html:44 +#, python-format +msgid "" +"Script file at %(file_path)s could not be " +"loaded." +msgstr "" +"Fichier de script sur %(file_path)s n'a pas pu " +"être chargé." + +#: templates/extras/script_list.html:91 +msgid "No Scripts Found" +msgstr "Aucun script n'a été trouvé" + +#: templates/extras/script_list.html:94 +#, python-format +msgid "" +"Get started by creating a script from " +"an uploaded file or data source." +msgstr "" +"Commencez par création d'un script à " +"partir d'un fichier ou d'une source de données chargé." + +#: templates/extras/script_result.html:42 +msgid "Log" +msgstr "Journal" + +#: templates/extras/tag.html:35 +msgid "Tagged Items" +msgstr "Articles tagués" + +#: templates/extras/tag.html:47 +msgid "Allowed Object Types" +msgstr "Types d'objets autorisés" + +#: templates/extras/tag.html:56 +msgid "Any" +msgstr "N'importe lequel" + +#: templates/extras/tag.html:63 +msgid "Tagged Item Types" +msgstr "Types d'articles tagués" + +#: templates/extras/tag.html:89 +msgid "Tagged Objects" +msgstr "Objets balisés" + +#: templates/extras/webhook.html:33 +msgid "HTTP Method" +msgstr "Méthode HTTP" + +#: templates/extras/webhook.html:41 +msgid "HTTP Content Type" +msgstr "Type de contenu HTTP" + +#: templates/extras/webhook.html:58 +msgid "SSL Verification" +msgstr "Vérification SSL" + +#: templates/extras/webhook.html:73 +msgid "Additional Headers" +msgstr "En-têtes supplémentaires" + +#: templates/extras/webhook.html:85 +msgid "Body Template" +msgstr "Modèle de carrosserie" + +#: templates/generic/bulk_add_component.html:15 +msgid "Bulk Creation" +msgstr "Création en masse" + +#: templates/generic/bulk_add_component.html:20 +#: templates/generic/bulk_edit.html:28 +msgid "Selected Objects" +msgstr "Objets sélectionnés" + +#: templates/generic/bulk_add_component.html:46 +msgid "to Add" +msgstr "à ajouter" + +#: templates/generic/bulk_delete.html:24 +msgid "Confirm Bulk Deletion" +msgstr "Confirmer la suppression groupée" + +#: templates/generic/bulk_delete.html:26 +msgctxt "Noun" +msgid "Warning" +msgstr "Avertissement" + +#: templates/generic/bulk_delete.html:27 +#, python-format +msgid "" +"The following operation will delete %(count)s " +"%(type_plural)s. Please carefully review the objects to be deleted and " +"confirm below." +msgstr "" +"L'opération suivante supprimera %(count)s %(type_plural)s. " +"Veuillez examiner attentivement les objets à supprimer et confirmer ci-" +"dessous." + +#: templates/generic/bulk_edit.html:16 templates/generic/object_edit.html:17 +msgid "Editing" +msgstr "Édition" + +#: templates/generic/bulk_edit.html:23 +msgid "Bulk Edit" +msgstr "Modifier en bloc" + +#: templates/generic/bulk_edit.html:124 templates/generic/bulk_rename.html:42 +msgid "Apply" +msgstr "Appliquer" + +#: templates/generic/bulk_import.html:14 +msgid "Bulk Import" +msgstr "Importation en vrac" + +#: templates/generic/bulk_import.html:20 +msgid "Direct Import" +msgstr "Importation directe" + +#: templates/generic/bulk_import.html:25 +msgid "Upload File" +msgstr "Charger un fichier" + +#: templates/generic/bulk_import.html:51 templates/generic/bulk_import.html:73 +#: templates/generic/bulk_import.html:95 +msgid "Submit" +msgstr "Soumettre" + +#: templates/generic/bulk_import.html:110 +msgid "Field Options" +msgstr "Options de terrain" + +#: templates/generic/bulk_import.html:117 +msgid "Accessor" +msgstr "Accessoire" + +#: templates/generic/bulk_import.html:154 +msgid "Import Value" +msgstr "Valeur d'importation" + +#: templates/generic/bulk_import.html:181 +msgid "Format: YYYY-MM-DD" +msgstr "Format : AAAA-MM-JJ" + +#: templates/generic/bulk_import.html:183 +msgid "Specify true or false" +msgstr "Spécifiez vrai ou faux" + +#: templates/generic/bulk_import.html:195 +msgid "Required fields must be specified for all objects." +msgstr "" +"Champs obligatoires doit être spécifiée pour tous les " +"objets." + +#: templates/generic/bulk_import.html:201 +#, python-format +msgid "" +"Related objects may be referenced by any unique attribute. For example, " +"%(example)s would identify a VRF by its route distinguisher." +msgstr "" +"Les objets associés peuvent être référencés par n'importe quel attribut " +"unique. Par exemple, %(example)s identifierait un VRF grâce à " +"son identificateur d'itinéraire." + +#: templates/generic/bulk_remove.html:13 +msgid "Confirm Bulk Removal" +msgstr "Confirmer la suppression groupée" + +#: templates/generic/bulk_remove.html:15 +#, python-format +msgid "" +"Warning: The following operation will remove %(count)s " +"%(obj_type_plural)s from %(parent_obj)s." +msgstr "" +"Avertissement : L'opération suivante supprimera %(count)s " +"%(obj_type_plural)s à partir de %(parent_obj)s." + +#: templates/generic/bulk_remove.html:21 +#, python-format +msgid "" +"Please carefully review the %(obj_type_plural)s to be removed and confirm " +"below." +msgstr "" +"Veuillez lire attentivement le %(obj_type_plural)s à supprimer et à " +"confirmer ci-dessous." + +#: templates/generic/bulk_remove.html:38 +#, python-format +msgid "Delete these %(count)s %(obj_type_plural)s" +msgstr "Supprimez-les %(count)s %(obj_type_plural)s" + +#: templates/generic/bulk_rename.html:7 +msgid "Renaming" +msgstr "Renommer" + +#: templates/generic/bulk_rename.html:16 +msgid "Current Name" +msgstr "Nom actuel" + +#: templates/generic/bulk_rename.html:17 +msgid "New Name" +msgstr "Nouveau nom" + +#: templates/generic/bulk_rename.html:40 +#: utilities/templates/widgets/markdown_input.html:11 +msgid "Preview" +msgstr "Aperçu" + +#: templates/generic/confirmation_form.html:16 +msgid "Are you sure" +msgstr "Tu es sûr" + +#: templates/generic/confirmation_form.html:19 +msgid "Confirm" +msgstr "Confirmez" + +#: templates/generic/object.html:51 +msgid "ago" +msgstr "depuis" + +#: templates/generic/object_children.html:27 +#: utilities/templates/buttons/bulk_edit.html:4 +msgid "Edit Selected" +msgstr "Modifier la sélection" + +#: templates/generic/object_children.html:41 +#: utilities/templates/buttons/bulk_delete.html:4 +msgid "Delete Selected" +msgstr "Supprimer la sélection" + +#: templates/generic/object_edit.html:19 +#, python-format +msgid "Add a new %(object_type)s" +msgstr "Ajouter un nouveau %(object_type)s" + +#: templates/generic/object_edit.html:47 +msgid "View model documentation" +msgstr "Afficher la documentation du modèle" + +#: templates/generic/object_edit.html:48 +msgid "Help" +msgstr "Aide" + +#: templates/generic/object_edit.html:73 +msgid "Create & Add Another" +msgstr "Créez et ajoutez-en un autre" + +#: templates/generic/object_list.html:48 templates/search.html:13 +msgid "Results" +msgstr "Résultats" + +#: templates/generic/object_list.html:54 +msgid "Filters" +msgstr "Filtres" + +#: templates/generic/object_list.html:94 +#, python-format +msgid "" +"Select all %(count)s %(object_type_plural)s matching query" +msgstr "" +"Sélectionnez tous %(count)s %(object_type_plural)s requête " +"correspondante" + +#: templates/home.html:12 +msgid "New Release Available" +msgstr "Nouvelle version disponible" + +#: templates/home.html:14 +msgid "is available" +msgstr "est disponible" + +#: templates/home.html:17 +msgctxt "Document title" +msgid "Upgrade Instructions" +msgstr "Instructions de mise à niveau" + +#: templates/home.html:37 +msgid "Unlock Dashboard" +msgstr "Ouvrez le tableau de bord" + +#: templates/home.html:46 +msgid "Lock Dashboard" +msgstr "Tableau de bord verrouillé" + +#: templates/home.html:57 +msgid "Add Widget" +msgstr "Ajouter un widget" + +#: templates/home.html:60 +msgid "Save Layout" +msgstr "Enregistrer la mise en page" + +#: templates/htmx/delete_form.html:7 +msgid "Confirm Deletion" +msgstr "Confirmer la suppression" + +#: templates/htmx/delete_form.html:11 +#, python-format +msgid "" +"Are you sure you want to delete " +"%(object_type)s %(object)s?" +msgstr "" +"Es-tu sûr de vouloir supprimer " +"%(object_type)s %(object)s?" + +#: templates/htmx/delete_form.html:17 +msgid "The following objects will be deleted as a result of this action." +msgstr "Les objets suivants seront supprimés à la suite de cette action." + +#: templates/htmx/object_selector.html:5 +msgid "Select" +msgstr "Sélectionnez" + +#: templates/inc/filter_list.html:50 +#: utilities/templates/helpers/table_config_form.html:39 +msgid "Reset" +msgstr "Réinitialiser" + +#: templates/inc/missing_prerequisites.html:7 +#, python-format +msgid "" +"Before you can add a %(model)s you must first create a " +"%(prerequisite_model)s." +msgstr "" +"Avant de pouvoir ajouter un %(model)s vous devez d'abord créer un " +"%(prerequisite_model)s." + +#: templates/inc/paginator.html:38 templates/inc/paginator_htmx.html:53 +msgid "Per Page" +msgstr "Par page" + +#: templates/inc/paginator.html:49 templates/inc/paginator_htmx.html:69 +#, python-format +msgid "Showing %(start)s-%(end)s of %(total)s" +msgstr "Montrant %(start)s-%(end)s de %(total)s" + +#: templates/inc/panels/image_attachments.html:10 +msgid "Attach an image" +msgstr "Joindre une image" + +#: templates/inc/panels/related_objects.html:5 +msgid "Related Objects" +msgstr "Objets associés" + +#: templates/inc/panels/tags.html:11 +msgid "No tags assigned" +msgstr "Aucune étiquette attribuée" + +#: templates/inc/profile_button.html:12 templates/inc/profile_button.html:62 +msgid "Dark Mode" +msgstr "Mode sombre" + +#: templates/inc/profile_button.html:45 +msgid "Log Out" +msgstr "Déconnectez-vous" + +#: templates/inc/profile_button.html:53 +msgid "Log In" +msgstr "Se connecter" + +#: templates/inc/sync_warning.html:7 +msgid "Data is out of sync with upstream file" +msgstr "Les données ne sont pas synchronisées avec le fichier en amont" + +#: templates/inc/table_controls_htmx.html:16 +#: templates/inc/table_controls_htmx.html:18 +msgid "Configure Table" +msgstr "Configurer le tableau" + +#: templates/ipam/aggregate.html:15 templates/ipam/ipaddress.html:17 +#: templates/ipam/iprange.html:16 templates/ipam/prefix.html:16 +msgid "Family" +msgstr "Famille" + +#: templates/ipam/aggregate.html:40 +msgid "Date Added" +msgstr "Date d'ajout" + +#: templates/ipam/aggregate/prefixes.html:8 +#: templates/ipam/prefix/prefixes.html:8 templates/ipam/role.html:10 +msgid "Add Prefix" +msgstr "Ajouter un préfixe" + +#: templates/ipam/asn.html:24 +msgid "AS Number" +msgstr "Numéro AS" + +#: templates/ipam/fhrpgroup.html:55 +msgid "Authentication Type" +msgstr "Type d'authentification" + +#: templates/ipam/fhrpgroup.html:59 +msgid "Authentication Key" +msgstr "Clé d'authentification" + +#: templates/ipam/fhrpgroup.html:72 +msgid "Virtual IP Addresses" +msgstr "Adresses IP virtuelles" + +#: templates/ipam/fhrpgroupassignment_edit.html:8 +msgid "FHRP Group Assignment" +msgstr "Affectation au groupe FHRP" + +#: templates/ipam/inc/ipaddress_edit_header.html:19 +msgid "Assign IP" +msgstr "Attribuer une IP" + +#: templates/ipam/inc/ipaddress_edit_header.html:28 +msgid "Bulk Create" +msgstr "Création en bloc" + +#: templates/ipam/inc/panels/fhrp_groups.html:12 +msgid "Virtual IPs" +msgstr "IP virtuelles" + +#: templates/ipam/inc/panels/fhrp_groups.html:52 +msgid "Create Group" +msgstr "Créer un groupe" + +#: templates/ipam/inc/panels/fhrp_groups.html:57 +msgid "Assign Group" +msgstr "Attribuer un groupe" + +#: templates/ipam/inc/toggle_available.html:7 +msgid "Show Assigned" +msgstr "Afficher les données attribuées" + +#: templates/ipam/inc/toggle_available.html:10 +msgid "Show Available" +msgstr "Afficher disponible" + +#: templates/ipam/inc/toggle_available.html:13 +msgid "Show All" +msgstr "Afficher tout" + +#: templates/ipam/ipaddress.html:26 templates/ipam/iprange.html:48 +#: templates/ipam/prefix.html:25 +msgid "Global" +msgstr "Globale" + +#: templates/ipam/ipaddress.html:88 +msgid "NAT (outside)" +msgstr "NAT (extérieur)" + +#: templates/ipam/ipaddress_assign.html:8 +msgid "Assign an IP Address" +msgstr "Attribuer une adresse IP" + +#: templates/ipam/ipaddress_assign.html:23 +msgid "Select IP Address" +msgstr "Sélectionnez l'adresse IP" + +#: templates/ipam/ipaddress_assign.html:39 +msgid "Search Results" +msgstr "Résultats de recherche" + +#: templates/ipam/ipaddress_bulk_add.html:6 +msgid "Bulk Add IP Addresses" +msgstr "Ajouter des adresses IP en masse" + +#: templates/ipam/ipaddress_edit.html:35 +msgid "Interface Assignment" +msgstr "Affectation d'interface" + +#: templates/ipam/ipaddress_edit.html:74 +msgid "NAT IP (Inside" +msgstr "IP NAT (intérieur)" + +#: templates/ipam/iprange.html:20 +msgid "Starting Address" +msgstr "Adresse de départ" + +#: templates/ipam/iprange.html:24 +msgid "Ending Address" +msgstr "Adresse de fin" + +#: templates/ipam/iprange.html:36 templates/ipam/prefix.html:104 +msgid "Marked fully utilized" +msgstr "Marqué comme entièrement utilisé" + +#: templates/ipam/prefix.html:112 +msgid "Child IPs" +msgstr "IP d'enfants" + +#: templates/ipam/prefix.html:120 +msgid "Available IPs" +msgstr "IP disponibles" + +#: templates/ipam/prefix.html:132 +msgid "First available IP" +msgstr "Première adresse IP disponible" + +#: templates/ipam/prefix.html:151 +msgid "Addressing Details" +msgstr "Détails d'adressage" + +#: templates/ipam/prefix.html:181 +msgid "Prefix Details" +msgstr "Détails du préfixe" + +#: templates/ipam/prefix.html:187 +msgid "Network Address" +msgstr "Adresse réseau" + +#: templates/ipam/prefix.html:191 +msgid "Network Mask" +msgstr "Masque réseau" + +#: templates/ipam/prefix.html:195 +msgid "Wildcard Mask" +msgstr "Masque Wildcard" + +#: templates/ipam/prefix.html:199 +msgid "Broadcast Address" +msgstr "Adresse de diffusion" + +#: templates/ipam/prefix/ip_ranges.html:7 +msgid "Add IP Range" +msgstr "Ajouter une plage d'adresses IP" + +#: templates/ipam/prefix_list.html:7 +msgid "Hide Depth Indicators" +msgstr "Masquer les indicateurs de profondeur" + +#: templates/ipam/prefix_list.html:11 +msgid "Max Depth" +msgstr "Profondeur maximale" + +#: templates/ipam/prefix_list.html:28 +msgid "Max Length" +msgstr "Longueur maximale" + +#: templates/ipam/rir.html:10 +msgid "Add Aggregate" +msgstr "Ajouter un agrégat" + +#: templates/ipam/routetarget.html:10 +msgid "Route Target" +msgstr "Cible de l'itinéraire" + +#: templates/ipam/routetarget.html:40 +msgid "Importing VRFs" +msgstr "Importation de VRF" + +#: templates/ipam/routetarget.html:49 +msgid "Exporting VRFs" +msgstr "Exportation de VRF" + +#: templates/ipam/routetarget.html:60 +msgid "Importing L2VPNs" +msgstr "Importer des VPN L2" + +#: templates/ipam/routetarget.html:69 +msgid "Exporting L2VPNs" +msgstr "Exporter des VPN L2" + +#: templates/ipam/service.html:22 templates/ipam/service_create.html:8 +#: templates/ipam/service_edit.html:8 +msgid "Service" +msgstr "Service" + +#: templates/ipam/service_create.html:43 +msgid "From Template" +msgstr "À partir du modèle" + +#: templates/ipam/service_create.html:48 +msgid "Custom" +msgstr "Personnalisé" + +#: templates/ipam/service_edit.html:37 +msgid "Port(s)" +msgstr "Port (x)" + +#: templates/ipam/vlan.html:95 +msgid "Add a Prefix" +msgstr "Ajouter un préfixe" + +#: templates/ipam/vlangroup.html:18 +msgid "Add VLAN" +msgstr "Ajouter un VLAN" + +#: templates/ipam/vlangroup.html:43 +msgid "Permitted VIDs" +msgstr "VID autorisés" + +#: templates/ipam/vrf.html:19 +msgid "Route Distinguisher" +msgstr "Distincteur d'itinéraires" + +#: templates/ipam/vrf.html:32 +msgid "Unique IP Space" +msgstr "Espace IP unique" + +#: templates/login.html:20 +#: utilities/templates/form_helpers/render_errors.html:7 +msgid "Errors" +msgstr "Erreurs" + +#: templates/login.html:48 +msgid "Sign In" +msgstr "Connectez-vous" + +#: templates/login.html:54 +msgid "Or use a single sign-on (SSO) provider" +msgstr "Ou utilisez un fournisseur d'authentification unique (SSO)" + +#: templates/login.html:68 +msgid "Toggle Color Mode" +msgstr "Basculer en mode couleur" + +#: templates/media_failure.html:7 +msgid "Static Media Failure - NetBox" +msgstr "Défaillance du support statique - NetBox" + +#: templates/media_failure.html:21 +msgid "Static Media Failure" +msgstr "Défaillance du support statique" + +#: templates/media_failure.html:23 +msgid "The following static media file failed to load" +msgstr "Le fichier multimédia statique suivant n'a pas pu être chargé" + +#: templates/media_failure.html:26 +msgid "Check the following" +msgstr "Vérifiez les points suivants" + +#: templates/media_failure.html:29 +msgid "" +"manage.py collectstatic was run during the most recent upgrade." +" This installs the most recent iteration of each static file into the static" +" root path." +msgstr "" +"manage.py collectstatic a été exécuté lors de la dernière mise " +"à niveau. Cela installe l'itération la plus récente de chaque fichier " +"statique dans le chemin racine statique." + +#: templates/media_failure.html:35 +#, python-format +msgid "" +"The HTTP service (e.g. nginx or Apache) is configured to serve files from " +"the STATIC_ROOT path. Refer to the " +"installation documentation for further guidance." +msgstr "" +"Le service HTTP (par exemple nginx ou Apache) est configuré pour servir des " +"fichiers provenant du RACINE_STATIQUE chemin. Reportez-vous à " +"la documentation d'installation pour de plus " +"amples informations." + +#: templates/media_failure.html:47 +#, python-format +msgid "" +"The file %(filename)s exists in the static root directory and " +"is readable by the HTTP server." +msgstr "" +"Le dossier %(filename)s existe dans le répertoire racine " +"statique et est lisible par le serveur HTTP." + +#: templates/media_failure.html:55 +#, python-format +msgid "Click here to attempt loading NetBox again." +msgstr "" +"Cliquez ici pour essayer à nouveau de charger " +"NetBox." + +#: templates/tenancy/contact.html:18 tenancy/filtersets.py:135 +#: tenancy/forms/bulk_edit.py:136 tenancy/forms/filtersets.py:101 +#: tenancy/forms/forms.py:56 tenancy/forms/model_forms.py:109 +#: tenancy/forms/model_forms.py:132 tenancy/tables/contacts.py:98 +msgid "Contact" +msgstr "Contacter" + +#: templates/tenancy/contact.html:30 tenancy/forms/bulk_edit.py:98 +msgid "Title" +msgstr "Titre" + +#: templates/tenancy/contact.html:34 tenancy/forms/bulk_edit.py:103 +#: tenancy/tables/contacts.py:64 +msgid "Phone" +msgstr "Téléphone" + +#: templates/tenancy/contact.html:86 tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Devoirs" + +#: templates/tenancy/contactassignment_edit.html:12 +msgid "Contact Assignment" +msgstr "Affectation des contacts" + +#: templates/tenancy/contactgroup.html:19 tenancy/forms/forms.py:66 +#: tenancy/forms/model_forms.py:76 +msgid "Contact Group" +msgstr "Groupe de contact" + +#: templates/tenancy/contactgroup.html:57 +msgid "Add Contact Group" +msgstr "Ajouter un groupe de contacts" + +#: templates/tenancy/contactrole.html:15 tenancy/filtersets.py:140 +#: tenancy/forms/forms.py:61 tenancy/forms/model_forms.py:90 +msgid "Contact Role" +msgstr "Rôle du contact" + +#: templates/tenancy/object_contacts.html:9 +msgid "Add a contact" +msgstr "Ajouter un contact" + +#: templates/tenancy/tenantgroup.html:17 +msgid "Add Tenant" +msgstr "Ajouter un locataire" + +#: templates/tenancy/tenantgroup.html:27 tenancy/forms/model_forms.py:31 +#: tenancy/tables/columns.py:51 tenancy/tables/columns.py:61 +msgid "Tenant Group" +msgstr "Groupe de locataires" + +#: templates/tenancy/tenantgroup.html:66 +msgid "Add Tenant Group" +msgstr "Ajouter un groupe de locataires" + +#: templates/users/group.html:37 templates/users/user.html:61 +msgid "Assigned Permissions" +msgstr "Autorisations attribuées" + +#: templates/users/objectpermission.html:6 +#: templates/users/objectpermission.html:14 users/forms/filtersets.py:67 +msgid "Permission" +msgstr "Autorisation" + +#: templates/users/objectpermission.html:33 users/forms/filtersets.py:68 +#: users/forms/model_forms.py:321 +msgid "Actions" +msgstr "Des actions" + +#: templates/users/objectpermission.html:37 +msgid "View" +msgstr "Afficher" + +#: templates/users/objectpermission.html:56 users/forms/model_forms.py:324 +msgid "Constraints" +msgstr "Contraintes" + +#: templates/users/objectpermission.html:76 +msgid "Assigned Users" +msgstr "Utilisateurs assignés" + +#: templates/users/user.html:38 +msgid "Staff" +msgstr "Le personnel" + +#: templates/virtualization/cluster.html:56 +msgid "Allocated Resources" +msgstr "Ressources allouées" + +#: templates/virtualization/cluster.html:60 +#: templates/virtualization/virtualmachine.html:128 +msgid "Virtual CPUs" +msgstr "Processeurs virtuels" + +#: templates/virtualization/cluster.html:64 +#: templates/virtualization/virtualmachine.html:132 +msgid "Memory" +msgstr "Mémoire" + +#: templates/virtualization/cluster.html:74 +#: templates/virtualization/virtualmachine.html:143 +msgid "Disk Space" +msgstr "Espace disque" + +#: templates/virtualization/cluster.html:77 +#: templates/virtualization/virtualdisk.html:33 +#: templates/virtualization/virtualmachine.html:147 +msgctxt "Abbreviation for gigabyte" +msgid "GB" +msgstr "GB" + +#: templates/virtualization/cluster/base.html:18 +msgid "Add Virtual Machine" +msgstr "Ajouter une machine virtuelle" + +#: templates/virtualization/cluster/base.html:24 +msgid "Assign Device" +msgstr "Attribuer un appareil" + +#: templates/virtualization/cluster/devices.html:10 +msgid "Remove Selected" +msgstr "Supprimer la sélection" + +#: templates/virtualization/cluster_add_devices.html:9 +#, python-format +msgid "Add Device to Cluster %(cluster)s" +msgstr "Ajouter un appareil au cluster %(cluster)s" + +#: templates/virtualization/cluster_add_devices.html:23 +msgid "Device Selection" +msgstr "Sélection de l'appareil" + +#: templates/virtualization/cluster_add_devices.html:31 +msgid "Add Devices" +msgstr "Ajouter des appareils" + +#: templates/virtualization/clustergroup.html:10 +#: templates/virtualization/clustertype.html:10 +msgid "Add Cluster" +msgstr "Ajouter un cluster" + +#: templates/virtualization/clustergroup.html:20 +#: virtualization/forms/model_forms.py:51 +msgid "Cluster Group" +msgstr "Groupe Cluster" + +#: templates/virtualization/clustertype.html:20 +#: templates/virtualization/virtualmachine.html:111 +#: virtualization/forms/model_forms.py:35 +msgid "Cluster Type" +msgstr "Type de cluster" + +#: templates/virtualization/virtualdisk.html:18 +msgid "Virtual Disk" +msgstr "Disque virtuel" + +#: templates/virtualization/virtualmachine.html:124 +#: virtualization/forms/bulk_edit.py:189 +#: virtualization/forms/model_forms.py:227 +msgid "Resources" +msgstr "Ressources" + +#: templates/virtualization/virtualmachine.html:185 +msgid "Add Virtual Disk" +msgstr "Ajouter un disque virtuel" + +#: templates/vpn/ikepolicy.html:10 templates/vpn/ipsecprofile.html:35 +#: vpn/tables/crypto.py:166 +msgid "IKE Policy" +msgstr "Politique IKE" + +#: templates/vpn/ikepolicy.html:22 +msgid "IKE Version" +msgstr "Version IKE" + +#: templates/vpn/ikepolicy.html:30 +msgid "Pre-Shared Key" +msgstr "Clé pré-partagée" + +#: templates/vpn/ikepolicy.html:34 +#: templates/wireless/inc/authentication_attrs.html:21 +msgid "Show Secret" +msgstr "Afficher le secret" + +#: templates/vpn/ikepolicy.html:59 templates/vpn/ipsecpolicy.html:47 +#: templates/vpn/ipsecprofile.html:55 templates/vpn/ipsecprofile.html:82 +#: vpn/forms/model_forms.py:310 vpn/forms/model_forms.py:345 +#: vpn/tables/crypto.py:68 vpn/tables/crypto.py:134 +msgid "Proposals" +msgstr "Propositions" + +#: templates/vpn/ikeproposal.html:10 +msgid "IKE Proposal" +msgstr "Proposition IKE" + +#: templates/vpn/ikeproposal.html:22 vpn/forms/bulk_edit.py:96 +#: vpn/forms/bulk_import.py:145 vpn/forms/filtersets.py:98 +msgid "Authentication method" +msgstr "Méthode d'authentification" + +#: templates/vpn/ikeproposal.html:26 templates/vpn/ipsecproposal.html:22 +#: vpn/forms/bulk_edit.py:101 vpn/forms/bulk_edit.py:173 +#: vpn/forms/bulk_import.py:149 vpn/forms/bulk_import.py:193 +#: vpn/forms/filtersets.py:103 vpn/forms/filtersets.py:151 +msgid "Encryption algorithm" +msgstr "Algorithme de chiffrement" + +#: templates/vpn/ikeproposal.html:30 templates/vpn/ipsecproposal.html:26 +#: vpn/forms/bulk_edit.py:106 vpn/forms/bulk_edit.py:178 +#: vpn/forms/bulk_import.py:153 vpn/forms/bulk_import.py:197 +#: vpn/forms/filtersets.py:108 vpn/forms/filtersets.py:156 +msgid "Authentication algorithm" +msgstr "Algorithme d'authentification" + +#: templates/vpn/ikeproposal.html:34 +msgid "DH group" +msgstr "groupe DH" + +#: templates/vpn/ikeproposal.html:38 templates/vpn/ipsecproposal.html:30 +#: vpn/forms/bulk_edit.py:183 vpn/models/crypto.py:134 +msgid "SA lifetime (seconds)" +msgstr "Une durée de vie (secondes)" + +#: templates/vpn/ipsecpolicy.html:10 templates/vpn/ipsecprofile.html:70 +#: vpn/tables/crypto.py:170 +msgid "IPSec Policy" +msgstr "Politique IPSec" + +#: templates/vpn/ipsecpolicy.html:22 vpn/forms/bulk_edit.py:211 +#: vpn/models/crypto.py:181 +msgid "PFS group" +msgstr "groupe PFS" + +#: templates/vpn/ipsecprofile.html:10 vpn/forms/model_forms.py:53 +msgid "IPSec Profile" +msgstr "Profil IPSec" + +#: templates/vpn/ipsecprofile.html:94 vpn/tables/crypto.py:137 +msgid "PFS Group" +msgstr "Groupe PFS" + +#: templates/vpn/ipsecproposal.html:10 +msgid "IPSec Proposal" +msgstr "Proposition IPSec" + +#: templates/vpn/ipsecproposal.html:34 vpn/forms/bulk_edit.py:187 +#: vpn/models/crypto.py:140 +msgid "SA lifetime (KB)" +msgstr "Une durée de vie (KB)" + +#: templates/vpn/l2vpn.html:11 templates/vpn/l2vpntermination.html:10 +msgid "L2VPN Attributes" +msgstr "Attributs L2VPN" + +#: templates/vpn/l2vpn.html:65 templates/vpn/tunnel.html:81 +msgid "Add a Termination" +msgstr "Ajouter une résiliation" + +#: templates/vpn/l2vpntermination_edit.html:9 +msgid "L2VPN Termination" +msgstr "Terminaison L2VPN" + +#: templates/vpn/tunnel.html:9 +msgid "Add Termination" +msgstr "Ajouter une résiliation" + +#: templates/vpn/tunnel.html:38 vpn/forms/bulk_edit.py:48 +#: vpn/forms/bulk_import.py:48 vpn/forms/filtersets.py:56 +msgid "Encapsulation" +msgstr "Encapsulation" + +#: templates/vpn/tunnel.html:42 vpn/forms/bulk_edit.py:54 +#: vpn/forms/bulk_import.py:53 vpn/forms/filtersets.py:63 +#: vpn/models/crypto.py:238 vpn/tables/tunnels.py:47 +msgid "IPSec profile" +msgstr "profil IPSec" + +#: templates/vpn/tunnel.html:46 vpn/forms/bulk_edit.py:68 +#: vpn/forms/filtersets.py:67 +msgid "Tunnel ID" +msgstr "Identifiant du tunnel" + +#: templates/vpn/tunnelgroup.html:14 +msgid "Add Tunnel" +msgstr "Ajouter un tunnel" + +#: templates/vpn/tunnelgroup.html:24 vpn/forms/model_forms.py:35 +#: vpn/forms/model_forms.py:48 +msgid "Tunnel Group" +msgstr "Groupe Tunnel" + +#: templates/vpn/tunneltermination.html:10 +msgid "Tunnel Termination" +msgstr "Terminaison du tunnel" + +#: templates/vpn/tunneltermination.html:36 vpn/forms/bulk_import.py:107 +#: vpn/forms/model_forms.py:101 vpn/forms/model_forms.py:137 +#: vpn/forms/model_forms.py:248 vpn/tables/tunnels.py:97 +msgid "Outside IP" +msgstr "IP externe" + +#: templates/vpn/tunneltermination.html:53 +msgid "Peer Terminations" +msgstr "Résiliations entre pairs" + +#: templates/wireless/inc/authentication_attrs.html:13 +msgid "Cipher" +msgstr "Chiffrer" + +#: templates/wireless/inc/authentication_attrs.html:17 +msgid "PSK" +msgstr "PSK" + +#: templates/wireless/inc/wirelesslink_interface.html:35 +#: templates/wireless/inc/wirelesslink_interface.html:45 +msgctxt "Abbreviation for megahertz" +msgid "MHz" +msgstr "MHz" + +#: templates/wireless/wirelesslan.html:11 wireless/forms/model_forms.py:54 +msgid "Wireless LAN" +msgstr "LAN sans fil" + +#: templates/wireless/wirelesslan.html:59 +msgid "Attached Interfaces" +msgstr "Interfaces attachées" + +#: templates/wireless/wirelesslangroup.html:17 +msgid "Add Wireless LAN" +msgstr "Ajouter un réseau sans fil" + +#: templates/wireless/wirelesslangroup.html:26 +#: wireless/forms/model_forms.py:27 +msgid "Wireless LAN Group" +msgstr "Groupe LAN sans fil" + +#: templates/wireless/wirelesslangroup.html:64 +msgid "Add Wireless LAN Group" +msgstr "Ajouter un groupe de réseau local sans fil" + +#: templates/wireless/wirelesslink.html:16 +msgid "Link Properties" +msgstr "Propriétés du lien" + +#: tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Tertiaire" + +#: tenancy/choices.py:20 +msgid "Inactive" +msgstr "Inactif" + +#: tenancy/filtersets.py:29 tenancy/filtersets.py:55 tenancy/filtersets.py:97 +msgid "Contact group (ID)" +msgstr "Groupe de contacts (ID)" + +#: tenancy/filtersets.py:35 tenancy/filtersets.py:62 tenancy/filtersets.py:104 +msgid "Contact group (slug)" +msgstr "Groupe de contact (slug)" + +#: tenancy/filtersets.py:91 +msgid "Contact (ID)" +msgstr "Contact (ID)" + +#: tenancy/filtersets.py:108 +msgid "Contact role (ID)" +msgstr "Rôle du contact (ID)" + +#: tenancy/filtersets.py:114 +msgid "Contact role (slug)" +msgstr "Rôle de contact (limace)" + +#: tenancy/filtersets.py:146 +msgid "Contact group" +msgstr "Groupe de contact" + +#: tenancy/filtersets.py:157 tenancy/filtersets.py:176 +msgid "Tenant group (ID)" +msgstr "Groupe de locataires (ID)" + +#: tenancy/filtersets.py:209 +msgid "Tenant Group (ID)" +msgstr "Groupe de locataires (ID)" + +#: tenancy/filtersets.py:216 +msgid "Tenant Group (slug)" +msgstr "Groupe de locataires (slug)" + +#: tenancy/forms/bulk_edit.py:65 +msgid "Desciption" +msgstr "Descriptif" + +#: tenancy/forms/bulk_import.py:101 +msgid "Assigned contact" +msgstr "Contact assigné" + +#: tenancy/models/contacts.py:32 +msgid "contact group" +msgstr "groupe de contact" + +#: tenancy/models/contacts.py:33 +msgid "contact groups" +msgstr "groupes de contacts" + +#: tenancy/models/contacts.py:48 +msgid "contact role" +msgstr "rôle de contact" + +#: tenancy/models/contacts.py:49 +msgid "contact roles" +msgstr "rôles de contact" + +#: tenancy/models/contacts.py:68 +msgid "title" +msgstr "titre" + +#: tenancy/models/contacts.py:73 +msgid "phone" +msgstr "téléphone" + +#: tenancy/models/contacts.py:78 +msgid "email" +msgstr "courriel" + +#: tenancy/models/contacts.py:87 +msgid "link" +msgstr "lien" + +#: tenancy/models/contacts.py:103 +msgid "contact" +msgstr "contacter" + +#: tenancy/models/contacts.py:104 +msgid "contacts" +msgstr "contacts" + +#: tenancy/models/contacts.py:153 +msgid "contact assignment" +msgstr "attribution de contacts" + +#: tenancy/models/contacts.py:154 +msgid "contact assignments" +msgstr "missions de contact" + +#: tenancy/models/contacts.py:170 +#, python-brace-format +msgid "Contacts cannot be assigned to this object type ({type})." +msgstr "Les contacts ne peuvent pas être affectés à ce type d'objet ({type})." + +#: tenancy/models/tenants.py:32 +msgid "tenant group" +msgstr "groupe de locataires" + +#: tenancy/models/tenants.py:33 +msgid "tenant groups" +msgstr "groupes de locataires" + +#: tenancy/models/tenants.py:70 +msgid "Tenant name must be unique per group." +msgstr "Le nom du locataire doit être unique par groupe." + +#: tenancy/models/tenants.py:80 +msgid "Tenant slug must be unique per group." +msgstr "Le slug tenant doit être unique par groupe." + +#: tenancy/models/tenants.py:88 +msgid "tenant" +msgstr "locataire" + +#: tenancy/models/tenants.py:89 +msgid "tenants" +msgstr "locataires" + +#: tenancy/tables/contacts.py:112 +msgid "Contact Title" +msgstr "Titre du contact" + +#: tenancy/tables/contacts.py:116 +msgid "Contact Phone" +msgstr "Téléphone de contact" + +#: tenancy/tables/contacts.py:120 +msgid "Contact Email" +msgstr "Email de contact" + +#: tenancy/tables/contacts.py:124 +msgid "Contact Address" +msgstr "Adresse de contact" + +#: tenancy/tables/contacts.py:128 +msgid "Contact Link" +msgstr "Lien de contact" + +#: tenancy/tables/contacts.py:132 +msgid "Contact Description" +msgstr "Description du contact" + +#: users/filtersets.py:48 users/filtersets.py:151 +msgid "Group (name)" +msgstr "Groupe (nom)" + +#: users/forms/bulk_edit.py:24 +msgid "First name" +msgstr "Prénom" + +#: users/forms/bulk_edit.py:29 +msgid "Last name" +msgstr "Nom de famille" + +#: users/forms/bulk_edit.py:41 +msgid "Staff status" +msgstr "Statut du personnel" + +#: users/forms/bulk_edit.py:46 +msgid "Superuser status" +msgstr "Statut de superutilisateur" + +#: users/forms/bulk_import.py:43 +msgid "If no key is provided, one will be generated automatically." +msgstr "Si aucune clé n'est fournie, une clé sera générée automatiquement." + +#: users/forms/filtersets.py:52 users/tables.py:42 +msgid "Is Staff" +msgstr "Est-ce que le personnel" + +#: users/forms/filtersets.py:59 users/tables.py:45 +msgid "Is Superuser" +msgstr "Est un superutilisateur" + +#: users/forms/filtersets.py:92 users/tables.py:89 +msgid "Can View" +msgstr "Peut voir" + +#: users/forms/filtersets.py:99 users/tables.py:92 +msgid "Can Add" +msgstr "Peut ajouter" + +#: users/forms/filtersets.py:106 users/tables.py:95 +msgid "Can Change" +msgstr "Peut changer" + +#: users/forms/filtersets.py:113 users/tables.py:98 +msgid "Can Delete" +msgstr "Peut supprimer" + +#: users/forms/model_forms.py:58 +msgid "User Interface" +msgstr "Interface utilisateur" + +#: users/forms/model_forms.py:115 +msgid "" +"Keys must be at least 40 characters in length. Be sure to record " +"your key prior to submitting this form, as it may no longer be " +"accessible once the token has been created." +msgstr "" +"Les clés doivent comporter au moins 40 caractères. Assurez-vous " +"d'enregistrer votre clé avant de soumettre ce formulaire, car il se" +" peut qu'il ne soit plus accessible une fois le jeton créé." + +#: users/forms/model_forms.py:127 +msgid "" +"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" +" no restrictions. Example: " +"10.1.1.0/24,192.168.10.16/32,2001:db8:1::/64" +msgstr "" +"Réseaux IPv4/IPv6 autorisés à partir desquels le jeton peut être utilisé. " +"Laissez ce champ vide pour éviter toute restriction. Exemple : " +"10.1.1.0/24 192.168.10,16/32 2001 : db 8:1 : /64" + +#: users/forms/model_forms.py:176 +msgid "Confirm password" +msgstr "Confirmer mot de passe" + +#: users/forms/model_forms.py:179 +msgid "Enter the same password as before, for verification." +msgstr "" +"Entrez le même mot de passe que précédemment, à des fins de vérification." + +#: users/forms/model_forms.py:237 +msgid "Passwords do not match! Please check your input and try again." +msgstr "" +"Les mots de passe ne correspondent pas ! Vérifiez votre saisie et réessayez." + +#: users/forms/model_forms.py:303 +msgid "Additional actions" +msgstr "Actions supplémentaires" + +#: users/forms/model_forms.py:306 +msgid "Actions granted in addition to those listed above" +msgstr "Actions accordées en plus de celles énumérées ci-dessus" + +#: users/forms/model_forms.py:322 +msgid "Objects" +msgstr "Objets" + +#: users/forms/model_forms.py:334 +msgid "" +"JSON expression of a queryset filter that will return only permitted " +"objects. Leave null to match all objects of this type. A list of multiple " +"objects will result in a logical OR operation." +msgstr "" +"Expression JSON d'un filtre queryset qui ne renverra que les objets " +"autorisés. Laissez null pour correspondre à tous les objets de ce type. Une " +"liste de plusieurs objets entraînera une opération OR logique." + +#: users/forms/model_forms.py:372 +msgid "At least one action must be selected." +msgstr "Au moins une action doit être sélectionnée." + +#: users/forms/model_forms.py:389 +#, python-brace-format +msgid "Invalid filter for {model}: {error}" +msgstr "Filtre non valide pour {model}: {error}" + +#: users/models.py:54 +msgid "user" +msgstr "utilisateur" + +#: users/models.py:55 +msgid "users" +msgstr "utilisateurs" + +#: users/models.py:66 +msgid "A user with this username already exists." +msgstr "Un utilisateur avec ce nom d'utilisateur existe déjà." + +#: users/models.py:78 vpn/models/crypto.py:42 +msgid "group" +msgstr "groupe" + +#: users/models.py:79 +msgid "groups" +msgstr "groupes" + +#: users/models.py:106 users/models.py:107 +msgid "user preferences" +msgstr "préférences de l'utilisateur" + +#: users/models.py:174 +#, python-brace-format +msgid "Key '{path}' is a leaf node; cannot assign new keys" +msgstr "" +"Clé '{path}'est un nœud feuille ; impossible d'attribuer de nouvelles clés" + +#: users/models.py:186 +#, python-brace-format +msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" +msgstr "" +"Clé '{path}'est un dictionnaire ; impossible d'attribuer une valeur autre " +"que celle du dictionnaire" + +#: users/models.py:252 +msgid "expires" +msgstr "expire" + +#: users/models.py:257 +msgid "last used" +msgstr "utilisé pour la dernière fois" + +#: users/models.py:262 +msgid "key" +msgstr "clé" + +#: users/models.py:268 +msgid "write enabled" +msgstr "écriture activée" + +#: users/models.py:270 +msgid "Permit create/update/delete operations using this key" +msgstr "" +"Autoriser les opérations de création/mise à jour/suppression à l'aide de " +"cette clé" + +#: users/models.py:281 +msgid "allowed IPs" +msgstr "adresses IP autorisées" + +#: users/models.py:283 +msgid "" +"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" +" no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" +msgstr "" +"Réseaux IPv4/IPv6 autorisés à partir desquels le jeton peut être utilisé. " +"Laissez ce champ vide pour éviter toute restriction. Par exemple : " +"« 10.1.1.0/24, 192.168.10.16/32, 2001 : DB 8:1 : /64 »" + +#: users/models.py:291 +msgid "token" +msgstr "jeton" + +#: users/models.py:292 +msgid "tokens" +msgstr "jetons" + +#: users/models.py:373 +msgid "The list of actions granted by this permission" +msgstr "La liste des actions accordées par cette autorisation" + +#: users/models.py:378 +msgid "constraints" +msgstr "entraves" + +#: users/models.py:379 +msgid "" +"Queryset filter matching the applicable objects of the selected type(s)" +msgstr "" +"Filtre Queryset correspondant aux objets applicables du ou des types " +"sélectionnés" + +#: users/models.py:386 +msgid "permission" +msgstr "autorisation" + +#: users/models.py:387 +msgid "permissions" +msgstr "autorisations" + +#: users/tables.py:101 +msgid "Custom Actions" +msgstr "Actions personnalisées" + +#: utilities/choices.py:16 +#, python-brace-format +msgid "{name} has a key defined but CHOICES is not a list" +msgstr "{name} a une clé définie mais CHOICES n'est pas une liste" + +#: utilities/choices.py:135 +msgid "Dark Red" +msgstr "Rouge foncé" + +#: utilities/choices.py:138 +msgid "Rose" +msgstr "Rose" + +#: utilities/choices.py:139 +msgid "Fuchsia" +msgstr "Fuchsia" + +#: utilities/choices.py:141 +msgid "Dark Purple" +msgstr "Violet foncé" + +#: utilities/choices.py:144 +msgid "Light Blue" +msgstr "Bleu clair" + +#: utilities/choices.py:147 +msgid "Aqua" +msgstr "Aqua" + +#: utilities/choices.py:148 +msgid "Dark Green" +msgstr "Vert foncé" + +#: utilities/choices.py:150 +msgid "Light Green" +msgstr "Vert clair" + +#: utilities/choices.py:151 +msgid "Lime" +msgstr "Citron" + +#: utilities/choices.py:153 +msgid "Amber" +msgstr "Ambre" + +#: utilities/choices.py:155 +msgid "Dark Orange" +msgstr "Orange foncé" + +#: utilities/choices.py:156 +msgid "Brown" +msgstr "Marron" + +#: utilities/choices.py:157 +msgid "Light Grey" +msgstr "gris clair" + +#: utilities/choices.py:158 +msgid "Grey" +msgstr "gris" + +#: utilities/choices.py:159 +msgid "Dark Grey" +msgstr "gris foncé" + +#: utilities/choices.py:217 +msgid "Direct" +msgstr "Directement" + +#: utilities/choices.py:218 +msgid "Upload" +msgstr "Téléverser" + +#: utilities/choices.py:230 utilities/choices.py:244 +msgid "Auto-detect" +msgstr "Détection automatique" + +#: utilities/choices.py:245 +msgid "Comma" +msgstr "Virgule" + +#: utilities/choices.py:246 +msgid "Semicolon" +msgstr "Point-virgule" + +#: utilities/choices.py:247 +msgid "Tab" +msgstr "Onglet" + +#: utilities/error_handlers.py:20 +#, python-brace-format +msgid "" +"Unable to delete {objects}. {count} dependent objects were " +"found: " +msgstr "" +"Impossible de supprimer {objects}. {count} des objets " +"dépendants ont été trouvés : " + +#: utilities/error_handlers.py:22 +msgid "More than 50" +msgstr "Plus de 50" + +#: utilities/fields.py:162 +#, python-format +msgid "" +"%s(%r) is invalid. to_model parameter to CounterCacheField must be a string " +"in the format 'app.model'" +msgstr "" +"%s(%r) n'est pas valide. Le paramètre to_model de CounterCacheField doit " +"être une chaîne au format « app.model »" + +#: utilities/fields.py:172 +#, python-format +msgid "" +"%s(%r) is invalid. to_field parameter to CounterCacheField must be a string " +"in the format 'field'" +msgstr "" +"%s(%r) n'est pas valide. Le paramètre to_field de CounterCacheField doit " +"être une chaîne au format « field »" + +#: utilities/forms/bulk_import.py:24 +msgid "Enter object data in CSV, JSON or YAML format." +msgstr "Entrez les données de l'objet au format CSV, JSON ou YAML." + +#: utilities/forms/bulk_import.py:37 +msgid "CSV delimiter" +msgstr "Délimiteur CSV" + +#: utilities/forms/bulk_import.py:38 +msgid "The character which delimits CSV fields. Applies only to CSV format." +msgstr "" +"Le caractère qui délimite les champs CSV. S'applique uniquement au format " +"CSV." + +#: utilities/forms/bulk_import.py:101 +msgid "Unable to detect data format. Please specify." +msgstr "Impossible de détecter le format des données. Veuillez préciser." + +#: utilities/forms/bulk_import.py:124 +msgid "Invalid CSV delimiter" +msgstr "Délimiteur CSV non valide" + +#: utilities/forms/bulk_import.py:168 +msgid "" +"Invalid YAML data. Data must be in the form of multiple documents, or a " +"single document comprising a list of dictionaries." +msgstr "" +"Données YAML non valides. Les données doivent se présenter sous la forme de " +"plusieurs documents ou d'un seul document comprenant une liste de " +"dictionnaires." + +#: utilities/forms/fields/array.py:17 +#, python-brace-format +msgid "" +"Invalid list ({value}). Must be numeric and ranges must be in ascending " +"order." +msgstr "" +"Liste non valide ({value}). Doit être numérique et les plages doivent être " +"classées par ordre croissant." + +#: utilities/forms/fields/csv.py:44 +#, python-brace-format +msgid "Invalid value for a multiple choice field: {value}" +msgstr "Valeur non valide pour un champ à choix multiples : {value}" + +#: utilities/forms/fields/csv.py:57 utilities/forms/fields/csv.py:74 +#, python-format +msgid "Object not found: %(value)s" +msgstr "Objet introuvable : %(value)s" + +#: utilities/forms/fields/csv.py:65 +#, python-brace-format +msgid "" +"\"{value}\" is not a unique value for this field; multiple objects were " +"found" +msgstr "" +"«{value}« n'est pas une valeur unique pour ce champ ; plusieurs objets ont " +"été trouvés" + +#: utilities/forms/fields/csv.py:97 +msgid "Object type must be specified as \".\"" +msgstr "Le type d'objet doit être spécifié comme ».«" + +#: utilities/forms/fields/csv.py:101 +msgid "Invalid object type" +msgstr "Type d'objet non valide" + +#: utilities/forms/fields/expandable.py:25 +msgid "" +"Alphanumeric ranges are supported for bulk creation. Mixed cases and types " +"within a single range are not supported (example: " +"[ge,xe]-0/0/[0-9])." +msgstr "" +"Les plages alphanumériques sont prises en charge pour la création en masse. " +"Les cas et les types mixtes au sein d'une même plage ne sont pas pris en " +"charge (exemple : [ge, xe] -0/0/ [0-9])." + +#: utilities/forms/fields/expandable.py:46 +msgid "" +"Specify a numeric range to create multiple IPs.
    Example: " +"192.0.2.[1,5,100-254]/24" +msgstr "" +"Spécifiez une plage numérique pour créer plusieurs adresses IP.
    Exemple : 192,0,2. [1 500 -254] /24" + +#: utilities/forms/fields/fields.py:31 +#, python-brace-format +msgid "" +" Markdown syntax is supported" +msgstr "" +" Markdown la syntaxe est prise en " +"charge" + +#: utilities/forms/fields/fields.py:48 +msgid "URL-friendly unique shorthand" +msgstr "Raccourci unique et convivial pour les URL" + +#: utilities/forms/fields/fields.py:99 +msgid "Enter context data in JSON format." +msgstr "" +"Entrez les données contextuelles dans JSON" +" format." + +#: utilities/forms/fields/fields.py:117 +msgid "MAC address must be in EUI-48 format" +msgstr "L'adresse MAC doit être au format EUI-48" + +#: utilities/forms/forms.py:53 +msgid "Use regular expressions" +msgstr "Utiliser des expressions régulières" + +#: utilities/forms/forms.py:87 +#, python-brace-format +msgid "Unrecognized header: {name}" +msgstr "En-tête non reconnu : {name}" + +#: utilities/forms/forms.py:113 +msgid "Available Columns" +msgstr "Colonnes disponibles" + +#: utilities/forms/forms.py:121 +msgid "Selected Columns" +msgstr "Colonnes sélectionnées" + +#: utilities/forms/mixins.py:101 +msgid "" +"This object has been modified since the form was rendered. Please consult " +"the object's change log for details." +msgstr "" +"Cet objet a été modifié depuis le rendu du formulaire. Consultez le journal " +"des modifications de l'objet pour plus de détails." + +#: utilities/templates/builtins/customfield_value.html:30 +msgid "Not defined" +msgstr "Non défini" + +#: utilities/templates/buttons/bookmark.html:9 +msgid "Unbookmark" +msgstr "Désélectionner" + +#: utilities/templates/buttons/bookmark.html:13 +msgid "Bookmark" +msgstr "Marque-page" + +#: utilities/templates/buttons/clone.html:4 +msgid "Clone" +msgstr "Cloner" + +#: utilities/templates/buttons/export.html:4 +msgid "Export" +msgstr "Exporter" + +#: utilities/templates/buttons/export.html:7 +msgid "Current View" +msgstr "Vue actuelle" + +#: utilities/templates/buttons/export.html:8 +msgid "All Data" +msgstr "Toutes les données" + +#: utilities/templates/buttons/export.html:28 +msgid "Add export template" +msgstr "Ajouter un modèle d'exportation" + +#: utilities/templates/buttons/import.html:4 +msgid "Import" +msgstr "Importer" + +#: utilities/templates/form_helpers/render_field.html:36 +msgid "Copy to clipboard" +msgstr "Copier dans le presse-papiers" + +#: utilities/templates/form_helpers/render_field.html:52 +msgid "This field is required" +msgstr "Ce champ est obligatoire" + +#: utilities/templates/form_helpers/render_field.html:65 +msgid "Set Null" +msgstr "Définir Null" + +#: utilities/templates/helpers/applied_filters.html:11 +msgid "Clear all" +msgstr "Tout effacer" + +#: utilities/templates/helpers/table_config_form.html:8 +msgid "Table Configuration" +msgstr "Configuration de la table" + +#: utilities/templates/helpers/table_config_form.html:31 +msgid "Move Up" +msgstr "Déplacer vers le haut" + +#: utilities/templates/helpers/table_config_form.html:34 +msgid "Move Down" +msgstr "Déplacer vers le bas" + +#: utilities/templates/widgets/apiselect.html:7 +msgid "Open selector" +msgstr "Ouvrir le sélecteur" + +#: utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Aucune assignée" + +#: utilities/templates/widgets/markdown_input.html:6 +msgid "Write" +msgstr "Écrivez" + +#: utilities/templates/widgets/markdown_input.html:20 +msgid "Testing" +msgstr "Tests" + +#: virtualization/filtersets.py:79 +msgid "Parent group (ID)" +msgstr "Groupe de parents (ID)" + +#: virtualization/filtersets.py:85 +msgid "Parent group (slug)" +msgstr "Groupe de parents (limace)" + +#: virtualization/filtersets.py:89 virtualization/filtersets.py:140 +msgid "Cluster type (ID)" +msgstr "Type de cluster (ID)" + +#: virtualization/filtersets.py:129 +msgid "Cluster group (ID)" +msgstr "Groupe de clusters (ID)" + +#: virtualization/filtersets.py:150 virtualization/filtersets.py:265 +msgid "Cluster (ID)" +msgstr "Cluster (ID)" + +#: virtualization/forms/bulk_edit.py:165 +#: virtualization/models/virtualmachines.py:113 +msgid "vCPUs" +msgstr "processeurs virtuels" + +#: virtualization/forms/bulk_edit.py:169 +msgid "Memory (MB)" +msgstr "Mémoire (Mo)" + +#: virtualization/forms/bulk_edit.py:173 +msgid "Disk (GB)" +msgstr "Disque (Go)" + +#: virtualization/forms/bulk_edit.py:333 +#: virtualization/forms/filtersets.py:243 +msgid "Size (GB)" +msgstr "Taille (Go)" + +#: virtualization/forms/bulk_import.py:44 +msgid "Type of cluster" +msgstr "Type de cluster" + +#: virtualization/forms/bulk_import.py:51 +msgid "Assigned cluster group" +msgstr "Groupe de clusters attribué" + +#: virtualization/forms/bulk_import.py:96 +msgid "Assigned cluster" +msgstr "Cluster attribué" + +#: virtualization/forms/bulk_import.py:103 +msgid "Assigned device within cluster" +msgstr "Appareil attribué au sein du cluster" + +#: virtualization/forms/model_forms.py:156 +#, python-brace-format +msgid "" +"{device} belongs to a different site ({device_site}) than the cluster " +"({cluster_site})" +msgstr "" +"{device} appartient à un autre site ({device_site}) puis le cluster " +"({cluster_site})" + +#: virtualization/forms/model_forms.py:195 +msgid "Optionally pin this VM to a specific host device within the cluster" +msgstr "" +"Épinglez éventuellement cette machine virtuelle à un périphérique hôte " +"spécifique au sein du cluster" + +#: virtualization/forms/model_forms.py:224 +msgid "Site/Cluster" +msgstr "Site/Cluster" + +#: virtualization/forms/model_forms.py:247 +msgid "Disk size is managed via the attachment of virtual disks." +msgstr "La taille du disque est gérée via la connexion de disques virtuels." + +#: virtualization/forms/model_forms.py:375 +msgid "Disk" +msgstr "Disque" + +#: virtualization/models/clusters.py:25 +msgid "cluster type" +msgstr "type de cluster" + +#: virtualization/models/clusters.py:26 +msgid "cluster types" +msgstr "types de clusters" + +#: virtualization/models/clusters.py:45 +msgid "cluster group" +msgstr "groupe de clusters" + +#: virtualization/models/clusters.py:46 +msgid "cluster groups" +msgstr "groupes de clusters" + +#: virtualization/models/clusters.py:121 +msgid "cluster" +msgstr "grappe" + +#: virtualization/models/clusters.py:122 +msgid "clusters" +msgstr "entrelas" + +#: virtualization/models/clusters.py:141 +#, python-brace-format +msgid "" +"{count} devices are assigned as hosts for this cluster but are not in site " +"{site}" +msgstr "" +"{count} les appareils sont affectés en tant qu'hôtes à ce cluster mais ne " +"sont pas sur le site {site}" + +#: virtualization/models/virtualmachines.py:121 +msgid "memory (MB)" +msgstr "mémoire (Mo)" + +#: virtualization/models/virtualmachines.py:126 +msgid "disk (GB)" +msgstr "disque (Go)" + +#: virtualization/models/virtualmachines.py:159 +msgid "Virtual machine name must be unique per cluster." +msgstr "Le nom de la machine virtuelle doit être unique par cluster." + +#: virtualization/models/virtualmachines.py:162 +msgid "virtual machine" +msgstr "machine virtuelle" + +#: virtualization/models/virtualmachines.py:163 +msgid "virtual machines" +msgstr "machines virtuelles" + +#: virtualization/models/virtualmachines.py:177 +msgid "A virtual machine must be assigned to a site and/or cluster." +msgstr "" +"Une machine virtuelle doit être attribuée à un site et/ou à un cluster." + +#: virtualization/models/virtualmachines.py:184 +#, python-brace-format +msgid "" +"The selected cluster ({cluster}) is not assigned to this site ({site})." +msgstr "" +"Le cluster sélectionné ({cluster}) n'est pas attribué à ce site ({site})." + +#: virtualization/models/virtualmachines.py:191 +msgid "Must specify a cluster when assigning a host device." +msgstr "" +"Doit spécifier un cluster lors de l'attribution d'un périphérique hôte." + +#: virtualization/models/virtualmachines.py:196 +#, python-brace-format +msgid "" +"The selected device ({device}) is not assigned to this cluster ({cluster})." +msgstr "" +"L'appareil sélectionné ({device}) n'est pas affecté à ce cluster " +"({cluster})." + +#: virtualization/models/virtualmachines.py:208 +#, python-brace-format +msgid "" +"The specified disk size ({size}) must match the aggregate size of assigned " +"virtual disks ({total_size})." +msgstr "" +"La taille de disque spécifiée ({size}) doit correspondre à la taille agrégée" +" des disques virtuels assignés ({total_size})." + +#: virtualization/models/virtualmachines.py:222 +#, python-brace-format +msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" +msgstr "Doit être un IPV{family} adresse. ({ip} est un IPV{version} adresse.)" + +#: virtualization/models/virtualmachines.py:231 +#, python-brace-format +msgid "The specified IP address ({ip}) is not assigned to this VM." +msgstr "" +"L'adresse IP spécifiée ({ip}) n'est pas attribué à cette machine virtuelle." + +#: virtualization/models/virtualmachines.py:389 +#, python-brace-format +msgid "" +"The selected parent interface ({parent}) belongs to a different virtual " +"machine ({virtual_machine})." +msgstr "" +"L'interface parent sélectionnée ({parent}) appartient à une autre machine " +"virtuelle ({virtual_machine})." + +#: virtualization/models/virtualmachines.py:404 +#, python-brace-format +msgid "" +"The selected bridge interface ({bridge}) belongs to a different virtual " +"machine ({virtual_machine})." +msgstr "" +"L'interface de pont sélectionnée ({bridge}) appartient à une autre machine " +"virtuelle ({virtual_machine})." + +#: virtualization/models/virtualmachines.py:415 +#, python-brace-format +msgid "" +"The untagged VLAN ({untagged_vlan}) must belong to the same site as the " +"interface's parent virtual machine, or it must be global." +msgstr "" +"Le VLAN non balisé ({untagged_vlan}) doit appartenir au même site que la " +"machine virtuelle parente de l'interface, ou il doit être global." + +#: virtualization/models/virtualmachines.py:427 +msgid "size (GB)" +msgstr "taille (Go)" + +#: virtualization/models/virtualmachines.py:431 +msgid "virtual disk" +msgstr "disque virtuel" + +#: virtualization/models/virtualmachines.py:432 +msgid "virtual disks" +msgstr "disques virtuels" + +#: vpn/choices.py:31 +msgid "IPsec - Transport" +msgstr "IPSec - Transport" + +#: vpn/choices.py:32 +msgid "IPsec - Tunnel" +msgstr "IPsec - Tunnel" + +#: vpn/choices.py:33 +msgid "IP-in-IP" +msgstr "IP dans IP" + +#: vpn/choices.py:34 +msgid "GRE" +msgstr "GRE" + +#: vpn/choices.py:56 +msgid "Hub" +msgstr "Hub" + +#: vpn/choices.py:57 +msgid "Spoke" +msgstr "A parlé" + +#: vpn/choices.py:80 +msgid "Aggressive" +msgstr "Agressif" + +#: vpn/choices.py:81 +msgid "Main" +msgstr "Principal" + +#: vpn/choices.py:92 +msgid "Pre-shared keys" +msgstr "Clés pré-partagées" + +#: vpn/choices.py:93 +msgid "Certificates" +msgstr "Certificats" + +#: vpn/choices.py:94 +msgid "RSA signatures" +msgstr "Signatures RSA" + +#: vpn/choices.py:95 +msgid "DSA signatures" +msgstr "Signatures DSA" + +#: vpn/choices.py:178 vpn/choices.py:179 vpn/choices.py:180 vpn/choices.py:181 +#: vpn/choices.py:182 vpn/choices.py:183 vpn/choices.py:184 vpn/choices.py:185 +#: vpn/choices.py:186 vpn/choices.py:187 vpn/choices.py:188 vpn/choices.py:189 +#: vpn/choices.py:190 vpn/choices.py:191 vpn/choices.py:192 vpn/choices.py:193 +#: vpn/choices.py:194 vpn/choices.py:195 vpn/choices.py:196 vpn/choices.py:197 +#: vpn/choices.py:198 vpn/choices.py:199 vpn/choices.py:200 +#, python-brace-format +msgid "Group {n}" +msgstr "Groupe {n}" + +#: vpn/choices.py:240 +msgid "Ethernet Private LAN" +msgstr "Réseau local privé Ethernet" + +#: vpn/choices.py:241 +msgid "Ethernet Virtual Private LAN" +msgstr "Réseau local privé virtuel Ethernet" + +#: vpn/choices.py:244 +msgid "Ethernet Private Tree" +msgstr "Arbre privé Ethernet" + +#: vpn/choices.py:245 +msgid "Ethernet Virtual Private Tree" +msgstr "Arbre privé virtuel Ethernet" + +#: vpn/filtersets.py:41 +msgid "Tunnel group (ID)" +msgstr "Groupe de tunnels (ID)" + +#: vpn/filtersets.py:47 +msgid "Tunnel group (slug)" +msgstr "Groupe de tunnels (slug)" + +#: vpn/filtersets.py:54 +msgid "IPSec profile (ID)" +msgstr "profil IPSec (ID)" + +#: vpn/filtersets.py:60 +msgid "IPSec profile (name)" +msgstr "Profil IPSec (nom)" + +#: vpn/filtersets.py:81 +msgid "Tunnel (ID)" +msgstr "Tunnel (ID)" + +#: vpn/filtersets.py:87 +msgid "Tunnel (name)" +msgstr "Tunnel (nom)" + +#: vpn/filtersets.py:118 +msgid "Outside IP (ID)" +msgstr "IP externe (ID)" + +#: vpn/filtersets.py:235 +msgid "IKE policy (ID)" +msgstr "Politique IKE (ID)" + +#: vpn/filtersets.py:241 +msgid "IKE policy (name)" +msgstr "Politique IKE (nom)" + +#: vpn/filtersets.py:245 +msgid "IPSec policy (ID)" +msgstr "Politique IPSec (ID)" + +#: vpn/filtersets.py:251 +msgid "IPSec policy (name)" +msgstr "Politique IPSec (nom)" + +#: vpn/filtersets.py:320 +msgid "L2VPN (slug)" +msgstr "L2VPN (limace)" + +#: vpn/filtersets.py:384 +msgid "VM Interface (ID)" +msgstr "Interface de machine virtuelle (ID)" + +#: vpn/filtersets.py:390 +msgid "VLAN (name)" +msgstr "VLAN (nom)" + +#: vpn/forms/bulk_edit.py:44 vpn/forms/bulk_import.py:42 +#: vpn/forms/filtersets.py:53 +msgid "Tunnel group" +msgstr "Groupe de tunnels" + +#: vpn/forms/bulk_edit.py:116 vpn/models/crypto.py:47 +msgid "SA lifetime" +msgstr "Toute une vie" + +#: vpn/forms/bulk_edit.py:150 wireless/forms/bulk_edit.py:78 +#: wireless/forms/bulk_edit.py:125 wireless/forms/filtersets.py:63 +#: wireless/forms/filtersets.py:97 +msgid "Pre-shared key" +msgstr "Clé pré-partagée" + +#: vpn/forms/bulk_edit.py:238 vpn/forms/bulk_import.py:234 +#: vpn/forms/filtersets.py:196 vpn/forms/model_forms.py:363 +#: vpn/models/crypto.py:103 +msgid "IKE policy" +msgstr "Politique IKE" + +#: vpn/forms/bulk_edit.py:243 vpn/forms/bulk_import.py:239 +#: vpn/forms/filtersets.py:201 vpn/forms/model_forms.py:367 +#: vpn/models/crypto.py:197 +msgid "IPSec policy" +msgstr "Politique IPSec" + +#: vpn/forms/bulk_import.py:50 +msgid "Tunnel encapsulation" +msgstr "Encapsulation par tunnel" + +#: vpn/forms/bulk_import.py:83 +msgid "Operational role" +msgstr "Rôle opérationnel" + +#: vpn/forms/bulk_import.py:90 +msgid "Parent device of assigned interface" +msgstr "Appareil parent à l'interface attribuée" + +#: vpn/forms/bulk_import.py:97 +msgid "Parent VM of assigned interface" +msgstr "Machine virtuelle parente de l'interface attribuée" + +#: vpn/forms/bulk_import.py:104 +msgid "Device or virtual machine interface" +msgstr "Interface de périphérique ou de machine virtuelle" + +#: vpn/forms/bulk_import.py:181 +msgid "IKE proposal(s)" +msgstr "Proposition (s) de l'IKE" + +#: vpn/forms/bulk_import.py:211 vpn/models/crypto.py:185 +msgid "Diffie-Hellman group for Perfect Forward Secrecy" +msgstr "Groupe Diffie-Hellman pour Perfect Forward Secrets" + +#: vpn/forms/bulk_import.py:217 +msgid "IPSec proposal(s)" +msgstr "Proposition (s) IPSec" + +#: vpn/forms/bulk_import.py:231 +msgid "IPSec protocol" +msgstr "Protocole IPSec" + +#: vpn/forms/bulk_import.py:261 +msgid "L2VPN type" +msgstr "Type de VPN L2" + +#: vpn/forms/bulk_import.py:282 +msgid "Parent device (for interface)" +msgstr "Appareil parent (pour interface)" + +#: vpn/forms/bulk_import.py:289 +msgid "Parent virtual machine (for interface)" +msgstr "Machine virtuelle parente (pour l'interface)" + +#: vpn/forms/bulk_import.py:296 +msgid "Assigned interface (device or VM)" +msgstr "Interface attribuée (appareil ou machine virtuelle)" + +#: vpn/forms/bulk_import.py:329 +msgid "Cannot import device and VM interface terminations simultaneously." +msgstr "" +"Impossible d'importer simultanément les terminaisons de l'interface du " +"périphérique et de la machine virtuelle." + +#: vpn/forms/bulk_import.py:331 +msgid "Each termination must specify either an interface or a VLAN." +msgstr "Chaque terminaison doit spécifier une interface ou un VLAN." + +#: vpn/forms/bulk_import.py:333 +msgid "Cannot assign both an interface and a VLAN." +msgstr "Impossible d'attribuer à la fois une interface et un VLAN." + +#: vpn/forms/filtersets.py:127 +msgid "IKE version" +msgstr "Version IKE" + +#: vpn/forms/filtersets.py:139 vpn/forms/filtersets.py:172 +#: vpn/forms/model_forms.py:293 vpn/forms/model_forms.py:328 +msgid "Proposal" +msgstr "Proposition" + +#: vpn/forms/filtersets.py:247 +msgid "Assigned Object Type" +msgstr "Type d'objet attribué" + +#: vpn/forms/model_forms.py:147 +msgid "First Termination" +msgstr "Première résiliation" + +#: vpn/forms/model_forms.py:151 +msgid "Second Termination" +msgstr "Deuxième résiliation" + +#: vpn/forms/model_forms.py:198 +msgid "This parameter is required when defining a termination." +msgstr "Ce paramètre est obligatoire lors de la définition d'une terminaison." + +#: vpn/forms/model_forms.py:314 vpn/forms/model_forms.py:349 +msgid "Policy" +msgstr "Politique" + +#: vpn/forms/model_forms.py:469 +msgid "A termination must specify an interface or VLAN." +msgstr "Une terminaison doit spécifier une interface ou un VLAN." + +#: vpn/forms/model_forms.py:471 +msgid "" +"A termination can only have one terminating object (an interface or VLAN)." +msgstr "" +"Une terminaison ne peut avoir qu'un seul objet de terminaison (une interface" +" ou un VLAN)." + +#: vpn/models/crypto.py:33 +msgid "encryption algorithm" +msgstr "algorithme de chiffrement" + +#: vpn/models/crypto.py:37 +msgid "authentication algorithm" +msgstr "algorithme d'authentification" + +#: vpn/models/crypto.py:44 +msgid "Diffie-Hellman group ID" +msgstr "ID de groupe Diffie-Hellman" + +#: vpn/models/crypto.py:50 +msgid "Security association lifetime (in seconds)" +msgstr "Durée de vie de l'association de sécurité (en secondes)" + +#: vpn/models/crypto.py:59 +msgid "IKE proposal" +msgstr "Proposition IKE" + +#: vpn/models/crypto.py:60 +msgid "IKE proposals" +msgstr "Propositions IKE" + +#: vpn/models/crypto.py:76 +msgid "version" +msgstr "version" + +#: vpn/models/crypto.py:87 vpn/models/crypto.py:178 +msgid "proposals" +msgstr "propositions" + +#: vpn/models/crypto.py:90 wireless/models.py:38 +msgid "pre-shared key" +msgstr "clé pré-partagée" + +#: vpn/models/crypto.py:104 +msgid "IKE policies" +msgstr "Politiques IKE" + +#: vpn/models/crypto.py:124 +msgid "encryption" +msgstr "chiffrement" + +#: vpn/models/crypto.py:129 +msgid "authentication" +msgstr "authentification" + +#: vpn/models/crypto.py:137 +msgid "Security association lifetime (seconds)" +msgstr "Durée de vie de l'association de sécurité (secondes)" + +#: vpn/models/crypto.py:143 +msgid "Security association lifetime (in kilobytes)" +msgstr "Durée de vie de l'association de sécurité (en kilo-octets)" + +#: vpn/models/crypto.py:152 +msgid "IPSec proposal" +msgstr "Proposition IPSec" + +#: vpn/models/crypto.py:153 +msgid "IPSec proposals" +msgstr "Propositions IPSec" + +#: vpn/models/crypto.py:166 +msgid "Encryption and/or authentication algorithm must be defined" +msgstr "" +"Un algorithme de chiffrement et/ou d'authentification doit être défini" + +#: vpn/models/crypto.py:198 +msgid "IPSec policies" +msgstr "Politiques IPSec" + +#: vpn/models/crypto.py:239 +msgid "IPSec profiles" +msgstr "Profils IPSec" + +#: vpn/models/l2vpn.py:116 +msgid "L2VPN termination" +msgstr "Terminaison L2VPN" + +#: vpn/models/l2vpn.py:117 +msgid "L2VPN terminations" +msgstr "Terminaisons L2VPN" + +#: vpn/models/l2vpn.py:135 +#, python-brace-format +msgid "L2VPN Termination already assigned ({assigned_object})" +msgstr "Terminaison L2VPN déjà attribuée ({assigned_object})" + +#: vpn/models/l2vpn.py:147 +#, python-brace-format +msgid "" +"{l2vpn_type} L2VPNs cannot have more than two terminations; found " +"{terminations_count} already defined." +msgstr "" +"{l2vpn_type} Les L2VPN ne peuvent pas avoir plus de deux terminaisons ; " +"trouvé {terminations_count} déjà défini." + +#: vpn/models/tunnels.py:26 +msgid "tunnel group" +msgstr "groupe de tunnels" + +#: vpn/models/tunnels.py:27 +msgid "tunnel groups" +msgstr "groupes de tunnels" + +#: vpn/models/tunnels.py:53 +msgid "encapsulation" +msgstr "encapsulation" + +#: vpn/models/tunnels.py:72 +msgid "tunnel ID" +msgstr "ID du tunnel" + +#: vpn/models/tunnels.py:94 +msgid "tunnel" +msgstr "tunnel" + +#: vpn/models/tunnels.py:95 +msgid "tunnels" +msgstr "tunnels" + +#: vpn/models/tunnels.py:153 +msgid "An object may be terminated to only one tunnel at a time." +msgstr "Un objet ne peut être renvoyé qu'à un seul tunnel à la fois." + +#: vpn/models/tunnels.py:156 +msgid "tunnel termination" +msgstr "terminaison du tunnel" + +#: vpn/models/tunnels.py:157 +msgid "tunnel terminations" +msgstr "terminaisons de tunnels" + +#: vpn/models/tunnels.py:174 +#, python-brace-format +msgid "{name} is already attached to a tunnel ({tunnel})." +msgstr "{name} est déjà rattaché à un tunnel ({tunnel})." + +#: vpn/tables/crypto.py:22 +msgid "Authentication Method" +msgstr "Méthode d'authentification" + +#: vpn/tables/crypto.py:25 vpn/tables/crypto.py:97 +msgid "Encryption Algorithm" +msgstr "Algorithme de chiffrement" + +#: vpn/tables/crypto.py:28 vpn/tables/crypto.py:100 +msgid "Authentication Algorithm" +msgstr "Algorithme d'authentification" + +#: vpn/tables/crypto.py:34 +msgid "SA Lifetime" +msgstr "Toute une vie" + +#: vpn/tables/crypto.py:71 +msgid "Pre-shared Key" +msgstr "Clé pré-partagée" + +#: vpn/tables/crypto.py:103 +msgid "SA Lifetime (Seconds)" +msgstr "Une durée de vie (secondes)" + +#: vpn/tables/crypto.py:106 +msgid "SA Lifetime (KB)" +msgstr "Une vie entière (KB)" + +#: vpn/tables/l2vpn.py:69 +msgid "Object Parent" +msgstr "Parent de l'objet" + +#: vpn/tables/l2vpn.py:74 +msgid "Object Site" +msgstr "Site de l'objet" + +#: vpn/tables/tunnels.py:84 +msgid "Host" +msgstr "Hôte" + +#: wireless/choices.py:11 +msgid "Access point" +msgstr "Point d'accès" + +#: wireless/choices.py:12 +msgid "Station" +msgstr "Gare" + +#: wireless/choices.py:467 +msgid "Open" +msgstr "Ouvert" + +#: wireless/choices.py:469 +msgid "WPA Personal (PSK)" +msgstr "WPA Personnel (PSK)" + +#: wireless/choices.py:470 +msgid "WPA Enterprise" +msgstr "WPA Entreprise" + +#: wireless/forms/bulk_edit.py:72 wireless/forms/bulk_edit.py:119 +#: wireless/forms/bulk_import.py:68 wireless/forms/bulk_import.py:71 +#: wireless/forms/bulk_import.py:110 wireless/forms/bulk_import.py:113 +#: wireless/forms/filtersets.py:58 wireless/forms/filtersets.py:92 +msgid "Authentication cipher" +msgstr "Chiffrement d'authentification" + +#: wireless/forms/bulk_import.py:52 +msgid "Bridged VLAN" +msgstr "VLAN ponté" + +#: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:27 +msgid "Interface A" +msgstr "Interface A" + +#: wireless/forms/bulk_import.py:93 wireless/tables/wirelesslink.py:36 +msgid "Interface B" +msgstr "Interface B" + +#: wireless/forms/model_forms.py:158 +msgid "Side B" +msgstr "Côté B" + +#: wireless/models.py:30 +msgid "authentication cipher" +msgstr "chiffrement d'authentification" + +#: wireless/models.py:68 +msgid "wireless LAN group" +msgstr "groupe LAN sans fil" + +#: wireless/models.py:69 +msgid "wireless LAN groups" +msgstr "groupes LAN sans fil" + +#: wireless/models.py:115 +msgid "wireless LAN" +msgstr "LAN sans fil" + +#: wireless/models.py:143 +msgid "interface A" +msgstr "interface A" + +#: wireless/models.py:150 +msgid "interface B" +msgstr "interface B" + +#: wireless/models.py:198 +msgid "wireless link" +msgstr "liaison sans fil" + +#: wireless/models.py:199 +msgid "wireless links" +msgstr "liens sans fil" + +#: wireless/models.py:216 wireless/models.py:222 +#, python-brace-format +msgid "{type} is not a wireless interface." +msgstr "{type} n'est pas une interface sans fil." diff --git a/netbox/translations/pt/LC_MESSAGES/django.mo b/netbox/translations/pt/LC_MESSAGES/django.mo new file mode 100644 index 000000000..dba8e89f7 Binary files /dev/null and b/netbox/translations/pt/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/pt/LC_MESSAGES/django.po b/netbox/translations/pt/LC_MESSAGES/django.po new file mode 100644 index 000000000..2392a316a --- /dev/null +++ b/netbox/translations/pt/LC_MESSAGES/django.po @@ -0,0 +1,13589 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Renato Almeida de Oliveira, 2023 +# Jeremy Stretch, 2023 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-21 17:54+0000\n" +"PO-Revision-Date: 2023-10-30 17:48+0000\n" +"Last-Translator: Jeremy Stretch, 2023\n" +"Language-Team: Portuguese (https://app.transifex.com/netbox-community/teams/178115/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" + +#: account/tables.py:27 templates/account/token.html:23 +#: templates/users/token.html:18 users/forms/bulk_import.py:41 +#: users/forms/model_forms.py:113 +msgid "Key" +msgstr "Chave" + +#: account/tables.py:31 users/forms/filtersets.py:133 +msgid "Write Enabled" +msgstr "Gravação ativada" + +#: account/tables.py:34 core/tables/jobs.py:29 extras/choices.py:135 +#: extras/tables/tables.py:469 templates/account/token.html:44 +#: templates/core/configrevision.html:34 +#: templates/core/configrevision_restore.html:12 templates/core/job.html:58 +#: templates/extras/htmx/report_result.html:11 +#: templates/extras/htmx/script_result.html:12 +#: templates/extras/journalentry.html:25 templates/generic/object.html:48 +#: templates/users/token.html:36 +msgid "Created" +msgstr "Criado" + +#: account/tables.py:37 templates/account/token.html:48 +#: templates/users/token.html:40 users/forms/bulk_edit.py:97 +#: users/forms/filtersets.py:137 +msgid "Expires" +msgstr "Expira" + +#: account/tables.py:40 users/forms/filtersets.py:142 +msgid "Last Used" +msgstr "Usado pela última vez" + +#: account/tables.py:43 templates/account/token.html:56 +#: templates/users/token.html:48 users/forms/bulk_edit.py:102 +#: users/forms/model_forms.py:125 +msgid "Allowed IPs" +msgstr "IPs permitidos" + +#: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1419 +#: dcim/choices.py:1495 dcim/choices.py:1545 virtualization/choices.py:20 +#: virtualization/choices.py:45 vpn/choices.py:18 +msgid "Planned" +msgstr "Planejado" + +#: circuits/choices.py:22 netbox/navigation/menu.py:290 +msgid "Provisioning" +msgstr "Provisionamento" + +#: circuits/choices.py:23 dcim/choices.py:22 dcim/choices.py:103 +#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1494 +#: dcim/choices.py:1544 extras/tables/tables.py:375 ipam/choices.py:31 +#: ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 +#: templates/extras/configcontext.html:26 templates/users/user.html:34 +#: users/forms/bulk_edit.py:36 virtualization/choices.py:22 +#: virtualization/choices.py:44 vpn/choices.py:19 wireless/choices.py:25 +msgid "Active" +msgstr "Ativo" + +#: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 +#: dcim/choices.py:1493 dcim/choices.py:1546 virtualization/choices.py:24 +#: virtualization/choices.py:43 +msgid "Offline" +msgstr "Off-line" + +#: circuits/choices.py:25 +msgid "Deprovisioning" +msgstr "Desprovisionamento" + +#: circuits/choices.py:26 +msgid "Decommissioned" +msgstr "Desativado" + +#: circuits/filtersets.py:29 circuits/filtersets.py:182 dcim/filtersets.py:120 +#: dcim/filtersets.py:181 dcim/filtersets.py:256 dcim/filtersets.py:364 +#: dcim/filtersets.py:881 dcim/filtersets.py:1177 dcim/filtersets.py:1672 +#: dcim/filtersets.py:1845 dcim/filtersets.py:1902 ipam/filtersets.py:305 +#: ipam/filtersets.py:896 virtualization/filtersets.py:45 +#: virtualization/filtersets.py:172 vpn/filtersets.py:330 +msgid "Region (ID)" +msgstr "Região (ID)" + +#: circuits/filtersets.py:36 circuits/filtersets.py:189 dcim/filtersets.py:126 +#: dcim/filtersets.py:188 dcim/filtersets.py:263 dcim/filtersets.py:371 +#: dcim/filtersets.py:888 dcim/filtersets.py:1184 dcim/filtersets.py:1679 +#: dcim/filtersets.py:1852 dcim/filtersets.py:1909 extras/filtersets.py:414 +#: ipam/filtersets.py:312 ipam/filtersets.py:903 +#: virtualization/filtersets.py:52 virtualization/filtersets.py:179 +#: vpn/filtersets.py:325 +msgid "Region (slug)" +msgstr "Região (slug)" + +#: circuits/filtersets.py:42 circuits/filtersets.py:195 dcim/filtersets.py:194 +#: dcim/filtersets.py:269 dcim/filtersets.py:377 dcim/filtersets.py:894 +#: dcim/filtersets.py:1190 dcim/filtersets.py:1685 dcim/filtersets.py:1858 +#: dcim/filtersets.py:1915 ipam/filtersets.py:318 ipam/filtersets.py:909 +#: virtualization/filtersets.py:58 virtualization/filtersets.py:185 +msgid "Site group (ID)" +msgstr "Grupo de sites (ID)" + +#: circuits/filtersets.py:49 circuits/filtersets.py:202 dcim/filtersets.py:201 +#: dcim/filtersets.py:276 dcim/filtersets.py:384 dcim/filtersets.py:901 +#: dcim/filtersets.py:1197 dcim/filtersets.py:1692 dcim/filtersets.py:1865 +#: dcim/filtersets.py:1922 extras/filtersets.py:420 ipam/filtersets.py:325 +#: ipam/filtersets.py:916 virtualization/filtersets.py:65 +#: virtualization/filtersets.py:192 +msgid "Site group (slug)" +msgstr "Grupo de sites (slug)" + +#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:117 +#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:171 +#: circuits/forms/model_forms.py:137 dcim/forms/bulk_edit.py:166 +#: dcim/forms/bulk_edit.py:238 dcim/forms/bulk_edit.py:570 +#: dcim/forms/bulk_edit.py:763 dcim/forms/bulk_import.py:130 +#: dcim/forms/bulk_import.py:176 dcim/forms/bulk_import.py:249 +#: dcim/forms/bulk_import.py:477 dcim/forms/bulk_import.py:1239 +#: dcim/forms/bulk_import.py:1267 dcim/forms/filtersets.py:84 +#: dcim/forms/filtersets.py:217 dcim/forms/filtersets.py:264 +#: dcim/forms/filtersets.py:373 dcim/forms/filtersets.py:680 +#: dcim/forms/filtersets.py:910 dcim/forms/filtersets.py:934 +#: dcim/forms/filtersets.py:1024 dcim/forms/filtersets.py:1062 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:138 +#: dcim/forms/model_forms.py:167 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:397 dcim/forms/model_forms.py:630 +#: dcim/forms/object_create.py:390 dcim/tables/devices.py:186 +#: dcim/tables/power.py:26 dcim/tables/power.py:93 dcim/tables/racks.py:62 +#: dcim/tables/racks.py:138 dcim/tables/sites.py:129 extras/filtersets.py:430 +#: ipam/forms/bulk_edit.py:215 ipam/forms/bulk_edit.py:269 +#: ipam/forms/bulk_edit.py:447 ipam/forms/bulk_edit.py:519 +#: ipam/forms/bulk_import.py:170 ipam/forms/bulk_import.py:437 +#: ipam/forms/filtersets.py:152 ipam/forms/filtersets.py:226 +#: ipam/forms/filtersets.py:417 ipam/forms/filtersets.py:470 +#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:548 +#: ipam/forms/model_forms.py:640 ipam/tables/ip.py:244 +#: ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 +#: templates/circuits/circuittermination_edit.html:20 +#: templates/circuits/inc/circuit_termination.html:33 +#: templates/dcim/device.html:22 templates/dcim/inc/cable_termination.html:8 +#: templates/dcim/inc/cable_termination.html:33 +#: templates/dcim/location.html:40 templates/dcim/powerpanel.html:23 +#: templates/dcim/rack.html:25 templates/dcim/rackreservation.html:31 +#: templates/dcim/site.html:27 templates/ipam/prefix.html:57 +#: templates/ipam/vlan.html:26 templates/ipam/vlan_edit.html:40 +#: templates/virtualization/cluster.html:45 +#: templates/virtualization/virtualmachine.html:96 +#: virtualization/forms/bulk_edit.py:90 virtualization/forms/bulk_edit.py:99 +#: virtualization/forms/bulk_edit.py:108 virtualization/forms/bulk_edit.py:123 +#: virtualization/forms/bulk_import.py:59 +#: virtualization/forms/bulk_import.py:85 +#: virtualization/forms/filtersets.py:78 +#: virtualization/forms/filtersets.py:144 +#: virtualization/forms/model_forms.py:74 +#: virtualization/forms/model_forms.py:107 +#: virtualization/forms/model_forms.py:174 +#: virtualization/tables/clusters.py:77 +#: virtualization/tables/virtualmachines.py:53 vpn/forms/filtersets.py:262 +#: wireless/forms/model_forms.py:77 wireless/forms/model_forms.py:117 +msgid "Site" +msgstr "Site" + +#: circuits/filtersets.py:60 circuits/filtersets.py:213 +#: circuits/filtersets.py:250 dcim/filtersets.py:211 dcim/filtersets.py:286 +#: dcim/filtersets.py:358 extras/filtersets.py:436 ipam/filtersets.py:215 +#: ipam/filtersets.py:335 ipam/filtersets.py:926 +#: virtualization/filtersets.py:75 virtualization/filtersets.py:202 +#: vpn/filtersets.py:335 +msgid "Site (slug)" +msgstr "Site (slug)" + +#: circuits/filtersets.py:65 +msgid "ASN (ID)" +msgstr "ASN (ID)" + +#: circuits/filtersets.py:86 circuits/filtersets.py:112 +#: circuits/filtersets.py:146 +msgid "Provider (ID)" +msgstr "Provedor (ID)" + +#: circuits/filtersets.py:92 circuits/filtersets.py:118 +#: circuits/filtersets.py:152 +msgid "Provider (slug)" +msgstr "Provedor (slug)" + +#: circuits/filtersets.py:157 +msgid "Provider account (ID)" +msgstr "Conta do provedor (ID)" + +#: circuits/filtersets.py:162 +msgid "Provider network (ID)" +msgstr "Rede do provedor (ID)" + +#: circuits/filtersets.py:166 +msgid "Circuit type (ID)" +msgstr "Tipo de circuito (ID)" + +#: circuits/filtersets.py:172 +msgid "Circuit type (slug)" +msgstr "Tipo de circuito (slug)" + +#: circuits/filtersets.py:207 circuits/filtersets.py:244 +#: dcim/filtersets.py:205 dcim/filtersets.py:280 dcim/filtersets.py:352 +#: dcim/filtersets.py:905 dcim/filtersets.py:1202 dcim/filtersets.py:1697 +#: dcim/filtersets.py:1869 dcim/filtersets.py:1927 ipam/filtersets.py:209 +#: ipam/filtersets.py:329 ipam/filtersets.py:920 +#: virtualization/filtersets.py:69 virtualization/filtersets.py:196 +#: vpn/filtersets.py:340 +msgid "Site (ID)" +msgstr "Site (ID)" + +#: circuits/filtersets.py:236 core/filtersets.py:73 core/filtersets.py:132 +#: dcim/filtersets.py:633 dcim/filtersets.py:1171 dcim/filtersets.py:1973 +#: extras/filtersets.py:40 extras/filtersets.py:69 extras/filtersets.py:101 +#: extras/filtersets.py:140 extras/filtersets.py:168 extras/filtersets.py:195 +#: extras/filtersets.py:226 extras/filtersets.py:295 extras/filtersets.py:343 +#: extras/filtersets.py:403 extras/filtersets.py:562 extras/filtersets.py:604 +#: extras/filtersets.py:645 ipam/forms/model_forms.py:430 +#: netbox/filtersets.py:275 netbox/forms/__init__.py:23 +#: netbox/forms/base.py:152 templates/htmx/object_selector.html:28 +#: templates/inc/filter_list.html:53 templates/ipam/ipaddress_assign.html:32 +#: templates/search.html:7 templates/search.html:26 tenancy/filtersets.py:86 +#: users/filtersets.py:21 users/filtersets.py:37 users/filtersets.py:69 +#: users/filtersets.py:117 utilities/forms/forms.py:99 +msgid "Search" +msgstr "Busca" + +#: circuits/filtersets.py:240 circuits/forms/bulk_edit.py:167 +#: circuits/forms/model_forms.py:110 circuits/forms/model_forms.py:132 +#: dcim/forms/connections.py:66 templates/circuits/circuit.html:15 +#: templates/dcim/inc/cable_termination.html:55 +#: templates/dcim/trace/circuit.html:4 +msgid "Circuit" +msgstr "Circuito" + +#: circuits/filtersets.py:254 +msgid "ProviderNetwork (ID)" +msgstr "Rede do provedor (ID)" + +#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:56 +#: circuits/forms/model_forms.py:26 circuits/tables/providers.py:33 +#: dcim/forms/bulk_edit.py:126 dcim/forms/filtersets.py:187 +#: dcim/forms/model_forms.py:126 dcim/tables/sites.py:94 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 +#: netbox/navigation/menu.py:160 netbox/navigation/menu.py:163 +#: templates/circuits/provider.html:24 +msgid "ASNs" +msgstr "ASNs" + +#: circuits/forms/bulk_edit.py:29 circuits/forms/bulk_edit.py:51 +#: circuits/forms/bulk_edit.py:78 circuits/forms/bulk_edit.py:99 +#: circuits/forms/bulk_edit.py:159 core/forms/bulk_edit.py:27 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:71 +#: dcim/forms/bulk_edit.py:90 dcim/forms/bulk_edit.py:149 +#: dcim/forms/bulk_edit.py:190 dcim/forms/bulk_edit.py:208 +#: dcim/forms/bulk_edit.py:336 dcim/forms/bulk_edit.py:371 +#: dcim/forms/bulk_edit.py:386 dcim/forms/bulk_edit.py:445 +#: dcim/forms/bulk_edit.py:484 dcim/forms/bulk_edit.py:514 +#: dcim/forms/bulk_edit.py:538 dcim/forms/bulk_edit.py:608 +#: dcim/forms/bulk_edit.py:657 dcim/forms/bulk_edit.py:709 +#: dcim/forms/bulk_edit.py:732 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_edit.py:850 dcim/forms/bulk_edit.py:903 +#: dcim/forms/bulk_edit.py:938 dcim/forms/bulk_edit.py:978 +#: dcim/forms/bulk_edit.py:1022 dcim/forms/bulk_edit.py:1067 +#: dcim/forms/bulk_edit.py:1094 dcim/forms/bulk_edit.py:1112 +#: dcim/forms/bulk_edit.py:1130 dcim/forms/bulk_edit.py:1148 +#: dcim/forms/bulk_edit.py:1566 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:123 extras/forms/bulk_edit.py:152 +#: extras/forms/bulk_edit.py:182 extras/forms/bulk_edit.py:263 +#: extras/forms/bulk_edit.py:287 extras/forms/bulk_edit.py:301 +#: extras/tables/tables.py:56 ipam/forms/bulk_edit.py:50 +#: ipam/forms/bulk_edit.py:70 ipam/forms/bulk_edit.py:90 +#: ipam/forms/bulk_edit.py:114 ipam/forms/bulk_edit.py:143 +#: ipam/forms/bulk_edit.py:172 ipam/forms/bulk_edit.py:191 +#: ipam/forms/bulk_edit.py:260 ipam/forms/bulk_edit.py:304 +#: ipam/forms/bulk_edit.py:352 ipam/forms/bulk_edit.py:395 +#: ipam/forms/bulk_edit.py:423 ipam/forms/bulk_edit.py:551 +#: ipam/forms/bulk_edit.py:582 templates/account/token.html:36 +#: templates/circuits/circuit.html:60 templates/circuits/circuittype.html:29 +#: templates/circuits/inc/circuit_termination.html:115 +#: templates/circuits/provider.html:34 +#: templates/circuits/providernetwork.html:35 +#: templates/core/datasource.html:55 templates/dcim/cable.html:37 +#: templates/dcim/consoleport.html:47 templates/dcim/consoleserverport.html:47 +#: templates/dcim/device.html:96 templates/dcim/devicebay.html:35 +#: templates/dcim/devicerole.html:33 templates/dcim/devicetype.html:36 +#: templates/dcim/frontport.html:61 templates/dcim/interface.html:70 +#: templates/dcim/inventoryitem.html:61 +#: templates/dcim/inventoryitemrole.html:23 templates/dcim/location.html:36 +#: templates/dcim/manufacturer.html:43 templates/dcim/module.html:71 +#: templates/dcim/modulebay.html:39 templates/dcim/moduletype.html:27 +#: templates/dcim/platform.html:36 templates/dcim/powerfeed.html:43 +#: templates/dcim/poweroutlet.html:43 templates/dcim/powerpanel.html:31 +#: templates/dcim/powerport.html:43 templates/dcim/rack.html:54 +#: templates/dcim/rackreservation.html:69 templates/dcim/rackrole.html:29 +#: templates/dcim/rearport.html:57 templates/dcim/region.html:34 +#: templates/dcim/site.html:60 templates/dcim/sitegroup.html:34 +#: templates/dcim/virtualchassis.html:32 +#: templates/extras/admin/plugins_list.html:26 +#: templates/extras/configcontext.html:22 +#: templates/extras/configtemplate.html:18 +#: templates/extras/customfield.html:35 +#: templates/extras/dashboard/widget_add.html:14 +#: templates/extras/eventrule.html:24 templates/extras/exporttemplate.html:25 +#: templates/extras/report_list.html:47 templates/extras/savedfilter.html:18 +#: templates/extras/script_list.html:53 templates/extras/tag.html:23 +#: templates/extras/webhook.html:20 templates/generic/bulk_import.html:118 +#: templates/ipam/aggregate.html:44 templates/ipam/asn.html:43 +#: templates/ipam/asnrange.html:39 templates/ipam/fhrpgroup.html:35 +#: templates/ipam/ipaddress.html:58 templates/ipam/iprange.html:70 +#: templates/ipam/prefix.html:82 templates/ipam/rir.html:29 +#: templates/ipam/role.html:29 templates/ipam/routetarget.html:22 +#: templates/ipam/service.html:53 templates/ipam/servicetemplate.html:28 +#: templates/ipam/vlan.html:65 templates/ipam/vlangroup.html:35 +#: templates/ipam/vrf.html:36 templates/tenancy/contact.html:68 +#: templates/tenancy/contactgroup.html:28 +#: templates/tenancy/contactrole.html:23 templates/tenancy/tenant.html:25 +#: templates/tenancy/tenantgroup.html:36 +#: templates/users/objectpermission.html:22 templates/users/token.html:28 +#: templates/virtualization/cluster.html:28 +#: templates/virtualization/clustergroup.html:29 +#: templates/virtualization/clustertype.html:29 +#: templates/virtualization/virtualdisk.html:40 +#: templates/virtualization/virtualmachine.html:34 +#: templates/virtualization/vminterface.html:54 +#: templates/vpn/ikepolicy.html:18 templates/vpn/ikeproposal.html:18 +#: templates/vpn/ipsecpolicy.html:18 templates/vpn/ipsecprofile.html:18 +#: templates/vpn/ipsecprofile.html:43 templates/vpn/ipsecprofile.html:78 +#: templates/vpn/ipsecproposal.html:18 templates/vpn/l2vpn.html:27 +#: templates/vpn/tunnel.html:34 templates/vpn/tunnelgroup.html:33 +#: templates/wireless/wirelesslan.html:27 +#: templates/wireless/wirelesslangroup.html:34 +#: templates/wireless/wirelesslink.html:37 tenancy/forms/bulk_edit.py:31 +#: tenancy/forms/bulk_edit.py:79 tenancy/forms/bulk_edit.py:121 +#: users/forms/bulk_edit.py:62 users/forms/bulk_edit.py:92 +#: virtualization/forms/bulk_edit.py:31 virtualization/forms/bulk_edit.py:45 +#: virtualization/forms/bulk_edit.py:176 virtualization/forms/bulk_edit.py:227 +#: virtualization/forms/bulk_edit.py:336 vpn/forms/bulk_edit.py:27 +#: vpn/forms/bulk_edit.py:63 vpn/forms/bulk_edit.py:120 +#: vpn/forms/bulk_edit.py:154 vpn/forms/bulk_edit.py:191 +#: vpn/forms/bulk_edit.py:216 vpn/forms/bulk_edit.py:248 +#: vpn/forms/bulk_edit.py:277 wireless/forms/bulk_edit.py:28 +#: wireless/forms/bulk_edit.py:81 wireless/forms/bulk_edit.py:128 +msgid "Description" +msgstr "Descrição" + +#: circuits/forms/bulk_edit.py:46 circuits/forms/bulk_edit.py:68 +#: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 +#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 +#: circuits/forms/model_forms.py:32 circuits/forms/model_forms.py:44 +#: circuits/forms/model_forms.py:58 circuits/forms/model_forms.py:92 +#: circuits/tables/circuits.py:55 circuits/tables/providers.py:72 +#: circuits/tables/providers.py:103 templates/circuits/circuit.html:19 +#: templates/circuits/provider.html:20 +#: templates/circuits/provideraccount.html:21 +#: templates/circuits/providernetwork.html:23 +#: templates/dcim/inc/cable_termination.html:51 +msgid "Provider" +msgstr "Provedor" + +#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:91 +#: templates/circuits/providernetwork.html:31 +msgid "Service ID" +msgstr "ID do serviço" + +#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:107 +#: dcim/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:500 +#: dcim/forms/bulk_edit.py:694 dcim/forms/bulk_edit.py:1063 +#: dcim/forms/bulk_edit.py:1090 dcim/forms/bulk_edit.py:1562 +#: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1353 +#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:717 +#: dcim/tables/devices.py:777 dcim/tables/devices.py:1004 +#: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 +#: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:259 +#: extras/tables/tables.py:323 templates/circuits/circuittype.html:33 +#: templates/dcim/cable.html:41 templates/dcim/devicerole.html:37 +#: templates/dcim/frontport.html:43 templates/dcim/inventoryitemrole.html:27 +#: templates/dcim/rackrole.html:33 templates/dcim/rearport.html:43 +#: templates/extras/tag.html:29 +msgid "Color" +msgstr "Cor" + +#: circuits/forms/bulk_edit.py:113 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:17 +#: core/forms/filtersets.py:29 core/tables/data.py:20 core/tables/jobs.py:18 +#: dcim/forms/bulk_edit.py:281 dcim/forms/bulk_edit.py:672 +#: dcim/forms/bulk_edit.py:811 dcim/forms/bulk_edit.py:879 +#: dcim/forms/bulk_edit.py:898 dcim/forms/bulk_edit.py:921 +#: dcim/forms/bulk_edit.py:963 dcim/forms/bulk_edit.py:1007 +#: dcim/forms/bulk_edit.py:1058 dcim/forms/bulk_edit.py:1085 +#: dcim/forms/bulk_import.py:206 dcim/forms/bulk_import.py:645 +#: dcim/forms/bulk_import.py:671 dcim/forms/bulk_import.py:697 +#: dcim/forms/bulk_import.py:717 dcim/forms/bulk_import.py:800 +#: dcim/forms/bulk_import.py:890 dcim/forms/bulk_import.py:932 +#: dcim/forms/bulk_import.py:1145 dcim/forms/bulk_import.py:1304 +#: dcim/forms/filtersets.py:286 dcim/forms/filtersets.py:867 +#: dcim/forms/filtersets.py:967 dcim/forms/filtersets.py:1088 +#: dcim/forms/filtersets.py:1158 dcim/forms/filtersets.py:1180 +#: dcim/forms/filtersets.py:1202 dcim/forms/filtersets.py:1219 +#: dcim/forms/filtersets.py:1253 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1369 dcim/forms/object_import.py:89 +#: dcim/forms/object_import.py:118 dcim/forms/object_import.py:150 +#: dcim/tables/devices.py:211 dcim/tables/devices.py:833 +#: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 +#: extras/tables/tables.py:345 extras/tables/tables.py:443 +#: netbox/tables/tables.py:234 templates/circuits/circuit.html:31 +#: templates/core/datasource.html:39 templates/dcim/cable.html:16 +#: templates/dcim/consoleport.html:39 templates/dcim/consoleserverport.html:39 +#: templates/dcim/frontport.html:39 templates/dcim/interface.html:47 +#: templates/dcim/interface.html:175 templates/dcim/interface.html:323 +#: templates/dcim/powerfeed.html:35 templates/dcim/poweroutlet.html:39 +#: templates/dcim/powerport.html:39 templates/dcim/rack.html:81 +#: templates/dcim/rearport.html:39 templates/extras/eventrule.html:95 +#: templates/virtualization/cluster.html:20 templates/vpn/l2vpn.html:23 +#: templates/wireless/inc/authentication_attrs.html:9 +#: templates/wireless/inc/wirelesslink_interface.html:14 +#: virtualization/forms/bulk_edit.py:59 virtualization/forms/bulk_import.py:41 +#: virtualization/forms/filtersets.py:53 +#: virtualization/forms/model_forms.py:65 virtualization/tables/clusters.py:66 +#: vpn/forms/bulk_edit.py:267 vpn/forms/bulk_import.py:259 +#: vpn/forms/filtersets.py:214 vpn/forms/model_forms.py:83 +#: vpn/forms/model_forms.py:118 vpn/forms/model_forms.py:232 +msgid "Type" +msgstr "Tipo" + +#: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:97 +msgid "Provider account" +msgstr "Conta do provedor" + +#: circuits/forms/bulk_edit.py:131 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:34 +#: core/forms/filtersets.py:75 core/tables/data.py:23 core/tables/jobs.py:26 +#: dcim/forms/bulk_edit.py:104 dcim/forms/bulk_edit.py:179 +#: dcim/forms/bulk_edit.py:260 dcim/forms/bulk_edit.py:593 +#: dcim/forms/bulk_edit.py:646 dcim/forms/bulk_edit.py:678 +#: dcim/forms/bulk_edit.py:805 dcim/forms/bulk_edit.py:1585 +#: dcim/forms/bulk_import.py:87 dcim/forms/bulk_import.py:146 +#: dcim/forms/bulk_import.py:194 dcim/forms/bulk_import.py:442 +#: dcim/forms/bulk_import.py:596 dcim/forms/bulk_import.py:1139 +#: dcim/forms/bulk_import.py:1299 dcim/forms/filtersets.py:170 +#: dcim/forms/filtersets.py:229 dcim/forms/filtersets.py:281 +#: dcim/forms/filtersets.py:726 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:871 dcim/forms/filtersets.py:972 +#: dcim/forms/filtersets.py:1083 dcim/tables/devices.py:173 +#: dcim/tables/devices.py:836 dcim/tables/devices.py:1064 +#: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 +#: dcim/tables/sites.py:82 dcim/tables/sites.py:133 +#: ipam/forms/bulk_edit.py:240 ipam/forms/bulk_edit.py:289 +#: ipam/forms/bulk_edit.py:337 ipam/forms/bulk_edit.py:541 +#: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 +#: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 +#: ipam/forms/filtersets.py:205 ipam/forms/filtersets.py:270 +#: ipam/forms/filtersets.py:341 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:449 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 +#: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 +#: templates/circuits/circuit.html:35 templates/core/datasource.html:47 +#: templates/core/job.html:35 templates/dcim/cable.html:20 +#: templates/dcim/device.html:183 templates/dcim/location.html:48 +#: templates/dcim/module.html:67 templates/dcim/powerfeed.html:39 +#: templates/dcim/rack.html:46 templates/dcim/site.html:43 +#: templates/extras/report_list.html:49 templates/extras/script_list.html:55 +#: templates/ipam/ipaddress.html:40 templates/ipam/iprange.html:57 +#: templates/ipam/prefix.html:74 templates/ipam/vlan.html:51 +#: templates/virtualization/cluster.html:24 +#: templates/virtualization/virtualmachine.html:22 +#: templates/vpn/tunnel.html:26 templates/wireless/wirelesslan.html:23 +#: templates/wireless/wirelesslink.html:20 users/forms/filtersets.py:33 +#: users/forms/model_forms.py:196 virtualization/forms/bulk_edit.py:69 +#: virtualization/forms/bulk_edit.py:117 +#: virtualization/forms/bulk_import.py:54 +#: virtualization/forms/bulk_import.py:80 +#: virtualization/forms/filtersets.py:61 +#: virtualization/forms/filtersets.py:156 virtualization/tables/clusters.py:74 +#: virtualization/tables/virtualmachines.py:50 vpn/forms/bulk_edit.py:38 +#: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:46 +#: vpn/tables/tunnels.py:44 wireless/forms/bulk_edit.py:42 +#: wireless/forms/bulk_edit.py:104 wireless/forms/bulk_import.py:43 +#: wireless/forms/bulk_import.py:84 wireless/forms/filtersets.py:48 +#: wireless/forms/filtersets.py:82 wireless/tables/wirelesslan.py:52 +#: wireless/tables/wirelesslink.py:19 +msgid "Status" +msgstr "Status" + +#: circuits/forms/bulk_edit.py:137 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:119 dcim/forms/bulk_edit.py:120 +#: dcim/forms/bulk_edit.py:185 dcim/forms/bulk_edit.py:255 +#: dcim/forms/bulk_edit.py:366 dcim/forms/bulk_edit.py:583 +#: dcim/forms/bulk_edit.py:684 dcim/forms/bulk_edit.py:1590 +#: dcim/forms/bulk_import.py:106 dcim/forms/bulk_import.py:151 +#: dcim/forms/bulk_import.py:187 dcim/forms/bulk_import.py:274 +#: dcim/forms/bulk_import.py:416 dcim/forms/bulk_import.py:1151 +#: dcim/forms/bulk_import.py:1356 dcim/forms/filtersets.py:165 +#: dcim/forms/filtersets.py:197 dcim/forms/filtersets.py:248 +#: dcim/forms/filtersets.py:333 dcim/forms/filtersets.py:354 +#: dcim/forms/filtersets.py:653 dcim/forms/filtersets.py:826 +#: dcim/forms/filtersets.py:891 dcim/forms/filtersets.py:921 +#: dcim/forms/filtersets.py:1043 dcim/tables/power.py:88 +#: extras/filtersets.py:517 extras/forms/filtersets.py:331 +#: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:40 +#: ipam/forms/bulk_edit.py:65 ipam/forms/bulk_edit.py:109 +#: ipam/forms/bulk_edit.py:138 ipam/forms/bulk_edit.py:163 +#: ipam/forms/bulk_edit.py:235 ipam/forms/bulk_edit.py:284 +#: ipam/forms/bulk_edit.py:332 ipam/forms/bulk_edit.py:536 +#: ipam/forms/bulk_import.py:37 ipam/forms/bulk_import.py:66 +#: ipam/forms/bulk_import.py:94 ipam/forms/bulk_import.py:114 +#: ipam/forms/bulk_import.py:134 ipam/forms/bulk_import.py:163 +#: ipam/forms/bulk_import.py:249 ipam/forms/bulk_import.py:285 +#: ipam/forms/bulk_import.py:451 ipam/forms/filtersets.py:47 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:99 +#: ipam/forms/filtersets.py:119 ipam/forms/filtersets.py:142 +#: ipam/forms/filtersets.py:169 ipam/forms/filtersets.py:256 +#: ipam/forms/filtersets.py:296 ipam/forms/filtersets.py:450 +#: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 +#: templates/circuits/circuit.html:39 templates/dcim/cable.html:24 +#: templates/dcim/device.html:81 templates/dcim/location.html:52 +#: templates/dcim/powerfeed.html:47 templates/dcim/rack.html:37 +#: templates/dcim/rackreservation.html:56 templates/dcim/site.html:47 +#: templates/dcim/virtualdevicecontext.html:55 +#: templates/ipam/aggregate.html:31 templates/ipam/asn.html:34 +#: templates/ipam/asnrange.html:30 templates/ipam/ipaddress.html:31 +#: templates/ipam/iprange.html:61 templates/ipam/prefix.html:30 +#: templates/ipam/routetarget.html:18 templates/ipam/vlan.html:42 +#: templates/ipam/vrf.html:23 templates/tenancy/tenant.html:17 +#: templates/virtualization/cluster.html:36 +#: templates/virtualization/virtualmachine.html:38 templates/vpn/l2vpn.html:31 +#: templates/vpn/tunnel.html:50 templates/wireless/wirelesslan.html:35 +#: templates/wireless/wirelesslink.html:28 tenancy/forms/forms.py:25 +#: tenancy/forms/forms.py:48 tenancy/forms/model_forms.py:53 +#: tenancy/tables/columns.py:64 virtualization/forms/bulk_edit.py:75 +#: virtualization/forms/bulk_edit.py:154 +#: virtualization/forms/bulk_import.py:66 +#: virtualization/forms/bulk_import.py:115 +#: virtualization/forms/filtersets.py:46 +#: virtualization/forms/filtersets.py:101 vpn/forms/bulk_edit.py:58 +#: vpn/forms/bulk_edit.py:272 vpn/forms/bulk_import.py:59 +#: vpn/forms/bulk_import.py:253 vpn/forms/filtersets.py:211 +#: wireless/forms/bulk_edit.py:62 wireless/forms/bulk_edit.py:109 +#: wireless/forms/bulk_import.py:55 wireless/forms/bulk_import.py:97 +#: wireless/forms/filtersets.py:34 wireless/forms/filtersets.py:74 +msgid "Tenant" +msgstr "Inquilino" + +#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:174 +msgid "Install date" +msgstr "Data de instalação" + +#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:179 +msgid "Termination date" +msgstr "Data de rescisão" + +#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:186 +msgid "Commit rate (Kbps)" +msgstr "Taxa de confirmação (Kbps)" + +#: circuits/forms/bulk_edit.py:168 circuits/forms/model_forms.py:111 +msgid "Service Parameters" +msgstr "Parâmetros de serviço" + +#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:112 +#: dcim/forms/model_forms.py:141 dcim/forms/model_forms.py:183 +#: dcim/forms/model_forms.py:260 dcim/forms/model_forms.py:672 +#: dcim/forms/model_forms.py:1478 ipam/forms/model_forms.py:61 +#: ipam/forms/model_forms.py:114 ipam/forms/model_forms.py:135 +#: ipam/forms/model_forms.py:159 ipam/forms/model_forms.py:231 +#: ipam/forms/model_forms.py:257 netbox/navigation/menu.py:38 +#: templates/dcim/cable_edit.html:68 templates/dcim/device_edit.html:85 +#: templates/dcim/rack_edit.html:30 templates/ipam/ipaddress_bulk_add.html:27 +#: templates/ipam/ipaddress_edit.html:27 templates/ipam/vlan_edit.html:22 +#: virtualization/forms/model_forms.py:83 +#: virtualization/forms/model_forms.py:225 vpn/forms/bulk_edit.py:77 +#: vpn/forms/filtersets.py:43 vpn/forms/model_forms.py:61 +#: vpn/forms/model_forms.py:146 vpn/forms/model_forms.py:404 +#: wireless/forms/model_forms.py:55 wireless/forms/model_forms.py:160 +msgid "Tenancy" +msgstr "Locação" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 +msgid "Assigned provider" +msgstr "Provedor atribuído" + +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:170 +#: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:1092 +#: dcim/forms/bulk_import.py:1171 extras/forms/bulk_import.py:229 +msgid "RGB color in hexadecimal. Example:" +msgstr "Cor RGB em hexadecimal. Exemplo:" + +#: circuits/forms/bulk_import.py:85 +msgid "Assigned provider account" +msgstr "Conta de provedor atribuída" + +#: circuits/forms/bulk_import.py:92 +msgid "Type of circuit" +msgstr "Tipo de circuito" + +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 +#: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:196 +#: dcim/forms/bulk_import.py:444 dcim/forms/bulk_import.py:598 +#: dcim/forms/bulk_import.py:1301 ipam/forms/bulk_import.py:193 +#: ipam/forms/bulk_import.py:258 ipam/forms/bulk_import.py:294 +#: ipam/forms/bulk_import.py:460 virtualization/forms/bulk_import.py:56 +#: virtualization/forms/bulk_import.py:82 vpn/forms/bulk_import.py:39 +msgid "Operational status" +msgstr "Status operacional" + +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 +#: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:278 +#: dcim/forms/bulk_import.py:420 dcim/forms/bulk_import.py:1155 +#: dcim/forms/bulk_import.py:1296 ipam/forms/bulk_import.py:41 +#: ipam/forms/bulk_import.py:70 ipam/forms/bulk_import.py:98 +#: ipam/forms/bulk_import.py:118 ipam/forms/bulk_import.py:138 +#: ipam/forms/bulk_import.py:167 ipam/forms/bulk_import.py:253 +#: ipam/forms/bulk_import.py:289 ipam/forms/bulk_import.py:455 +#: virtualization/forms/bulk_import.py:70 +#: virtualization/forms/bulk_import.py:119 vpn/forms/bulk_import.py:63 +#: wireless/forms/bulk_import.py:59 wireless/forms/bulk_import.py:101 +msgid "Assigned tenant" +msgstr "Inquilino designado" + +#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:147 +#: circuits/forms/model_forms.py:143 +msgid "Provider network" +msgstr "Rede de provedores" + +#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:118 +#: dcim/forms/bulk_edit.py:247 dcim/forms/bulk_edit.py:345 +#: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:622 +#: dcim/forms/bulk_edit.py:772 dcim/forms/bulk_import.py:181 +#: dcim/forms/bulk_import.py:255 dcim/forms/bulk_import.py:483 +#: dcim/forms/bulk_import.py:1245 dcim/forms/bulk_import.py:1279 +#: dcim/forms/filtersets.py:92 dcim/forms/filtersets.py:245 +#: dcim/forms/filtersets.py:278 dcim/forms/filtersets.py:330 +#: dcim/forms/filtersets.py:381 dcim/forms/filtersets.py:650 +#: dcim/forms/filtersets.py:689 dcim/forms/filtersets.py:890 +#: dcim/forms/filtersets.py:919 dcim/forms/filtersets.py:939 +#: dcim/forms/filtersets.py:1003 dcim/forms/filtersets.py:1033 +#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1153 +#: dcim/forms/filtersets.py:1175 dcim/forms/filtersets.py:1197 +#: dcim/forms/filtersets.py:1214 dcim/forms/filtersets.py:1234 +#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 +#: dcim/forms/filtersets.py:1385 dcim/forms/filtersets.py:1400 +#: dcim/forms/filtersets.py:1411 dcim/forms/model_forms.py:182 +#: dcim/forms/model_forms.py:216 dcim/forms/model_forms.py:402 +#: dcim/forms/model_forms.py:635 dcim/tables/devices.py:190 +#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 +#: extras/filtersets.py:441 extras/forms/filtersets.py:328 +#: ipam/forms/bulk_edit.py:456 ipam/forms/filtersets.py:168 +#: ipam/forms/filtersets.py:400 ipam/forms/filtersets.py:422 +#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:560 +#: templates/dcim/device.html:26 templates/dcim/device_edit.html:30 +#: templates/dcim/inc/cable_termination.html:12 +#: templates/dcim/location.html:27 templates/dcim/powerpanel.html:27 +#: templates/dcim/rack.html:29 templates/dcim/rackreservation.html:35 +#: virtualization/forms/filtersets.py:45 virtualization/forms/filtersets.py:99 +#: wireless/forms/model_forms.py:88 wireless/forms/model_forms.py:128 +msgid "Location" +msgstr "Localização" + +#: circuits/forms/filtersets.py:27 ipam/forms/model_forms.py:158 +#: ipam/models/asns.py:108 ipam/models/asns.py:125 ipam/tables/asn.py:41 +#: templates/ipam/asn.html:20 +msgid "ASN" +msgstr "ASN" + +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:120 +#: dcim/forms/filtersets.py:136 dcim/forms/filtersets.py:150 +#: dcim/forms/filtersets.py:166 dcim/forms/filtersets.py:198 +#: dcim/forms/filtersets.py:249 dcim/forms/filtersets.py:334 +#: dcim/forms/filtersets.py:408 dcim/forms/filtersets.py:654 +#: dcim/forms/filtersets.py:1004 netbox/navigation/menu.py:45 +#: netbox/navigation/menu.py:47 tenancy/tables/columns.py:70 +#: tenancy/tables/contacts.py:25 tenancy/views.py:18 +#: virtualization/forms/filtersets.py:36 virtualization/forms/filtersets.py:47 +#: virtualization/forms/filtersets.py:102 +msgid "Contacts" +msgstr "Contatos" + +#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:157 +#: dcim/forms/bulk_edit.py:110 dcim/forms/bulk_edit.py:222 +#: dcim/forms/bulk_edit.py:747 dcim/forms/bulk_import.py:92 +#: dcim/forms/filtersets.py:70 dcim/forms/filtersets.py:177 +#: dcim/forms/filtersets.py:203 dcim/forms/filtersets.py:256 +#: dcim/forms/filtersets.py:359 dcim/forms/filtersets.py:666 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1010 dcim/forms/filtersets.py:1049 +#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 +#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:80 +#: dcim/forms/model_forms.py:115 dcim/forms/object_create.py:374 +#: dcim/tables/devices.py:176 dcim/tables/sites.py:85 extras/filtersets.py:408 +#: ipam/forms/bulk_edit.py:205 ipam/forms/bulk_edit.py:437 +#: ipam/forms/bulk_edit.py:509 ipam/forms/filtersets.py:212 +#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:456 +#: ipam/forms/model_forms.py:532 templates/dcim/device.html:18 +#: templates/dcim/rack.html:19 templates/dcim/rackreservation.html:25 +#: templates/dcim/region.html:26 templates/dcim/site.html:31 +#: templates/ipam/prefix.html:50 templates/ipam/vlan.html:19 +#: virtualization/forms/bulk_edit.py:80 virtualization/forms/filtersets.py:58 +#: virtualization/forms/filtersets.py:129 +#: virtualization/forms/model_forms.py:95 vpn/forms/filtersets.py:253 +msgid "Region" +msgstr "Região" + +#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:162 +#: dcim/forms/bulk_edit.py:230 dcim/forms/bulk_edit.py:755 +#: dcim/forms/filtersets.py:75 dcim/forms/filtersets.py:182 +#: dcim/forms/filtersets.py:208 dcim/forms/filtersets.py:269 +#: dcim/forms/filtersets.py:364 dcim/forms/filtersets.py:671 +#: dcim/forms/filtersets.py:901 dcim/forms/filtersets.py:1015 +#: dcim/forms/filtersets.py:1054 dcim/forms/object_create.py:382 +#: extras/filtersets.py:425 ipam/forms/bulk_edit.py:210 +#: ipam/forms/bulk_edit.py:444 ipam/forms/bulk_edit.py:514 +#: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:412 +#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:545 +#: virtualization/forms/bulk_edit.py:85 virtualization/forms/filtersets.py:68 +#: virtualization/forms/filtersets.py:134 +#: virtualization/forms/model_forms.py:101 +msgid "Site group" +msgstr "Grupo de sites" + +#: circuits/forms/filtersets.py:51 +msgid "ASN (legacy)" +msgstr "ASN (legado)" + +#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 +#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 +#: core/forms/filtersets.py:63 dcim/forms/bulk_edit.py:718 +#: dcim/forms/filtersets.py:164 dcim/forms/filtersets.py:196 +#: dcim/forms/filtersets.py:825 dcim/forms/filtersets.py:920 +#: dcim/forms/filtersets.py:1044 dcim/forms/filtersets.py:1152 +#: dcim/forms/filtersets.py:1174 dcim/forms/filtersets.py:1196 +#: dcim/forms/filtersets.py:1213 dcim/forms/filtersets.py:1230 +#: dcim/forms/filtersets.py:1341 dcim/forms/filtersets.py:1363 +#: dcim/forms/filtersets.py:1384 dcim/forms/filtersets.py:1399 +#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:40 +#: extras/forms/filtersets.py:111 extras/forms/filtersets.py:142 +#: extras/forms/filtersets.py:182 extras/forms/filtersets.py:198 +#: extras/forms/filtersets.py:229 extras/forms/filtersets.py:253 +#: extras/forms/filtersets.py:450 extras/forms/filtersets.py:491 +#: ipam/forms/filtersets.py:98 ipam/forms/filtersets.py:255 +#: ipam/forms/filtersets.py:294 ipam/forms/filtersets.py:368 +#: ipam/forms/filtersets.py:449 ipam/forms/filtersets.py:508 +#: ipam/forms/filtersets.py:526 netbox/tables/tables.py:250 +#: virtualization/forms/filtersets.py:44 +#: virtualization/forms/filtersets.py:100 +#: virtualization/forms/filtersets.py:190 +#: virtualization/forms/filtersets.py:235 vpn/forms/filtersets.py:210 +#: wireless/forms/filtersets.py:33 wireless/forms/filtersets.py:73 +msgid "Attributes" +msgstr "Atributos" + +#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:60 +#: circuits/tables/providers.py:66 templates/circuits/circuit.html:23 +#: templates/circuits/provideraccount.html:25 +msgid "Account" +msgstr "Conta" + +#: circuits/forms/model_forms.py:64 +#: templates/circuits/circuittermination_edit.html:23 +#: templates/circuits/inc/circuit_termination.html:89 +#: templates/circuits/providernetwork.html:18 +msgid "Provider Network" +msgstr "Rede de provedores" + +#: circuits/forms/model_forms.py:78 templates/circuits/circuittype.html:20 +msgid "Circuit Type" +msgstr "Tipo de circuito" + +#: circuits/models/circuits.py:25 dcim/models/cables.py:67 +#: dcim/models/device_component_templates.py:491 +#: dcim/models/device_component_templates.py:591 +#: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 +#: dcim/models/device_components.py:1166 dcim/models/devices.py:467 +#: dcim/models/racks.py:43 extras/models/tags.py:28 +msgid "color" +msgstr "cor" + +#: circuits/models/circuits.py:34 +msgid "circuit type" +msgstr "tipo de circuito" + +#: circuits/models/circuits.py:35 +msgid "circuit types" +msgstr "tipos de circuito" + +#: circuits/models/circuits.py:46 +msgid "circuit ID" +msgstr "ID do circuito" + +#: circuits/models/circuits.py:47 +msgid "Unique circuit ID" +msgstr "ID de circuito exclusivo" + +#: circuits/models/circuits.py:67 core/models/data.py:54 +#: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:641 +#: dcim/models/devices.py:1165 dcim/models/devices.py:1374 +#: dcim/models/power.py:95 dcim/models/racks.py:97 dcim/models/sites.py:154 +#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 +#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: virtualization/models/clusters.py:74 +#: virtualization/models/virtualmachines.py:82 vpn/models/tunnels.py:40 +#: wireless/models.py:94 wireless/models.py:158 +msgid "status" +msgstr "status" + +#: circuits/models/circuits.py:82 +msgid "installed" +msgstr "instalada" + +#: circuits/models/circuits.py:87 +msgid "terminates" +msgstr "termina" + +#: circuits/models/circuits.py:92 +msgid "commit rate (Kbps)" +msgstr "taxa de confirmação (Kbps)" + +#: circuits/models/circuits.py:93 +msgid "Committed rate" +msgstr "Taxa comprometida" + +#: circuits/models/circuits.py:135 +msgid "circuit" +msgstr "circuito" + +#: circuits/models/circuits.py:136 +msgid "circuits" +msgstr "circuitos" + +#: circuits/models/circuits.py:169 +msgid "termination" +msgstr "terminação" + +#: circuits/models/circuits.py:186 +msgid "port speed (Kbps)" +msgstr "velocidade da porta (Kbps)" + +#: circuits/models/circuits.py:189 +msgid "Physical circuit speed" +msgstr "Velocidade do circuito físico" + +#: circuits/models/circuits.py:194 +msgid "upstream speed (Kbps)" +msgstr "velocidade de upstream (Kbps)" + +#: circuits/models/circuits.py:195 +msgid "Upstream speed, if different from port speed" +msgstr "Velocidade de upstream, se diferente da velocidade da porta" + +#: circuits/models/circuits.py:200 +msgid "cross-connect ID" +msgstr "ID de conexão cruzada" + +#: circuits/models/circuits.py:201 +msgid "ID of the local cross-connect" +msgstr "ID da conexão cruzada local" + +#: circuits/models/circuits.py:206 +msgid "patch panel/port(s)" +msgstr "painel de remendo/porta (s)" + +#: circuits/models/circuits.py:207 +msgid "Patch panel ID and port number(s)" +msgstr "ID do painel de patch e número (s) de porta" + +#: circuits/models/circuits.py:210 +#: dcim/models/device_component_templates.py:61 +#: dcim/models/device_components.py:69 dcim/models/racks.py:537 +#: extras/models/configs.py:45 extras/models/configs.py:219 +#: extras/models/customfields.py:122 extras/models/models.py:58 +#: extras/models/models.py:188 extras/models/models.py:426 +#: extras/models/models.py:541 extras/models/staging.py:31 +#: extras/models/tags.py:32 netbox/models/__init__.py:109 +#: netbox/models/__init__.py:144 netbox/models/__init__.py:190 +#: users/models.py:273 users/models.py:348 +#: virtualization/models/virtualmachines.py:282 +msgid "description" +msgstr "descrição" + +#: circuits/models/circuits.py:223 +msgid "circuit termination" +msgstr "terminação do circuito" + +#: circuits/models/circuits.py:224 +msgid "circuit terminations" +msgstr "terminações de circuito" + +#: circuits/models/providers.py:22 circuits/models/providers.py:66 +#: circuits/models/providers.py:104 core/models/data.py:41 +#: core/models/jobs.py:46 dcim/models/device_component_templates.py:43 +#: dcim/models/device_components.py:54 dcim/models/devices.py:581 +#: dcim/models/devices.py:1305 dcim/models/devices.py:1370 +#: dcim/models/power.py:39 dcim/models/power.py:91 dcim/models/racks.py:62 +#: dcim/models/sites.py:138 extras/models/configs.py:36 +#: extras/models/configs.py:215 extras/models/customfields.py:89 +#: extras/models/models.py:53 extras/models/models.py:183 +#: extras/models/models.py:326 extras/models/models.py:422 +#: extras/models/models.py:531 extras/models/models.py:626 +#: extras/models/staging.py:26 ipam/models/asns.py:18 ipam/models/fhrp.py:25 +#: ipam/models/services.py:52 ipam/models/services.py:88 +#: ipam/models/vlans.py:26 ipam/models/vlans.py:164 ipam/models/vrfs.py:22 +#: ipam/models/vrfs.py:79 netbox/models/__init__.py:136 +#: netbox/models/__init__.py:180 tenancy/models/contacts.py:64 +#: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 +#: users/models.py:344 virtualization/models/clusters.py:57 +#: virtualization/models/virtualmachines.py:70 +#: virtualization/models/virtualmachines.py:272 vpn/models/crypto.py:24 +#: vpn/models/crypto.py:71 vpn/models/crypto.py:119 vpn/models/crypto.py:171 +#: vpn/models/crypto.py:209 vpn/models/l2vpn.py:22 vpn/models/tunnels.py:35 +#: wireless/models.py:50 +msgid "name" +msgstr "nome" + +#: circuits/models/providers.py:25 +msgid "Full name of the provider" +msgstr "Nome completo do provedor" + +#: circuits/models/providers.py:28 dcim/models/devices.py:86 +#: dcim/models/sites.py:149 extras/models/models.py:536 ipam/models/asns.py:23 +#: ipam/models/vlans.py:30 netbox/models/__init__.py:140 +#: netbox/models/__init__.py:185 tenancy/models/tenants.py:25 +#: tenancy/models/tenants.py:49 vpn/models/l2vpn.py:27 wireless/models.py:55 +msgid "slug" +msgstr "slug" + +#: circuits/models/providers.py:42 +msgid "provider" +msgstr "provedor" + +#: circuits/models/providers.py:43 +msgid "providers" +msgstr "provedores" + +#: circuits/models/providers.py:63 +msgid "account ID" +msgstr "ID da conta" + +#: circuits/models/providers.py:86 +msgid "provider account" +msgstr "conta do provedor" + +#: circuits/models/providers.py:87 +msgid "provider accounts" +msgstr "contas de provedores" + +#: circuits/models/providers.py:115 +msgid "service ID" +msgstr "ID do serviço" + +#: circuits/models/providers.py:126 +msgid "provider network" +msgstr "rede do provedor" + +#: circuits/models/providers.py:127 +msgid "provider networks" +msgstr "redes de provedores" + +#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/providers.py:69 circuits/tables/providers.py:99 +#: core/tables/data.py:16 core/tables/jobs.py:14 dcim/forms/filtersets.py:60 +#: dcim/forms/object_create.py:42 dcim/tables/devices.py:88 +#: dcim/tables/devices.py:125 dcim/tables/devices.py:167 +#: dcim/tables/devices.py:318 dcim/tables/devices.py:395 +#: dcim/tables/devices.py:439 dcim/tables/devices.py:491 +#: dcim/tables/devices.py:543 dcim/tables/devices.py:663 +#: dcim/tables/devices.py:744 dcim/tables/devices.py:794 +#: dcim/tables/devices.py:860 dcim/tables/devices.py:975 +#: dcim/tables/devices.py:995 dcim/tables/devices.py:1024 +#: dcim/tables/devices.py:1054 dcim/tables/devicetypes.py:32 +#: dcim/tables/power.py:22 dcim/tables/power.py:62 dcim/tables/racks.py:23 +#: dcim/tables/racks.py:53 dcim/tables/sites.py:24 dcim/tables/sites.py:51 +#: dcim/tables/sites.py:78 dcim/tables/sites.py:125 +#: extras/forms/filtersets.py:190 extras/tables/tables.py:40 +#: extras/tables/tables.py:83 extras/tables/tables.py:115 +#: extras/tables/tables.py:139 extras/tables/tables.py:204 +#: extras/tables/tables.py:251 extras/tables/tables.py:274 +#: extras/tables/tables.py:319 extras/tables/tables.py:371 +#: extras/tables/tables.py:394 ipam/forms/bulk_edit.py:390 +#: ipam/forms/filtersets.py:372 ipam/tables/asn.py:16 ipam/tables/ip.py:85 +#: ipam/tables/ip.py:159 ipam/tables/services.py:15 ipam/tables/services.py:40 +#: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 +#: ipam/tables/vrfs.py:67 templates/circuits/circuittype.html:25 +#: templates/circuits/provideraccount.html:29 +#: templates/circuits/providernetwork.html:27 +#: templates/core/datasource.html:35 templates/core/job.html:31 +#: templates/dcim/consoleport.html:31 templates/dcim/consoleserverport.html:31 +#: templates/dcim/devicebay.html:27 templates/dcim/devicerole.html:29 +#: templates/dcim/frontport.html:31 +#: templates/dcim/inc/interface_vlans_table.html:5 +#: templates/dcim/inc/panels/inventory_items.html:10 +#: templates/dcim/interface.html:39 templates/dcim/interface.html:171 +#: templates/dcim/inventoryitem.html:29 +#: templates/dcim/inventoryitemrole.html:19 templates/dcim/location.html:32 +#: templates/dcim/manufacturer.html:39 templates/dcim/modulebay.html:27 +#: templates/dcim/platform.html:32 templates/dcim/poweroutlet.html:31 +#: templates/dcim/powerport.html:31 templates/dcim/rackrole.html:25 +#: templates/dcim/rearport.html:31 templates/dcim/region.html:30 +#: templates/dcim/sitegroup.html:30 +#: templates/dcim/virtualdevicecontext.html:21 +#: templates/extras/admin/plugins_list.html:22 +#: templates/extras/configcontext.html:14 +#: templates/extras/configtemplate.html:14 +#: templates/extras/customfield.html:16 templates/extras/customlink.html:14 +#: templates/extras/eventrule.html:16 templates/extras/exporttemplate.html:21 +#: templates/extras/report_list.html:46 templates/extras/savedfilter.html:14 +#: templates/extras/script_list.html:52 templates/extras/tag.html:17 +#: templates/extras/webhook.html:16 templates/ipam/asnrange.html:16 +#: templates/ipam/fhrpgroup.html:31 templates/ipam/rir.html:25 +#: templates/ipam/role.html:25 templates/ipam/routetarget.html:14 +#: templates/ipam/service.html:27 templates/ipam/servicetemplate.html:16 +#: templates/ipam/vlan.html:38 templates/ipam/vlangroup.html:31 +#: templates/tenancy/contact.html:26 templates/tenancy/contactgroup.html:24 +#: templates/tenancy/contactrole.html:19 templates/tenancy/tenantgroup.html:32 +#: templates/users/group.html:18 templates/users/objectpermission.html:18 +#: templates/virtualization/cluster.html:16 +#: templates/virtualization/clustergroup.html:25 +#: templates/virtualization/clustertype.html:25 +#: templates/virtualization/virtualdisk.html:26 +#: templates/virtualization/virtualmachine.html:18 +#: templates/virtualization/vminterface.html:28 +#: templates/vpn/ikepolicy.html:14 templates/vpn/ikeproposal.html:14 +#: templates/vpn/ipsecpolicy.html:14 templates/vpn/ipsecprofile.html:14 +#: templates/vpn/ipsecprofile.html:39 templates/vpn/ipsecprofile.html:74 +#: templates/vpn/ipsecproposal.html:14 templates/vpn/l2vpn.html:15 +#: templates/vpn/tunnel.html:22 templates/vpn/tunnelgroup.html:29 +#: templates/wireless/wirelesslangroup.html:30 tenancy/tables/contacts.py:19 +#: tenancy/tables/contacts.py:41 tenancy/tables/contacts.py:56 +#: tenancy/tables/tenants.py:16 tenancy/tables/tenants.py:38 +#: users/tables.py:62 users/tables.py:79 +#: virtualization/forms/bulk_create.py:20 +#: virtualization/forms/object_create.py:13 +#: virtualization/forms/object_create.py:23 +#: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 +#: virtualization/tables/clusters.py:62 +#: virtualization/tables/virtualmachines.py:45 +#: virtualization/tables/virtualmachines.py:119 +#: virtualization/tables/virtualmachines.py:172 vpn/tables/crypto.py:18 +#: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 +#: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 +#: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 +#: wireless/tables/wirelesslan.py:79 +msgid "Name" +msgstr "Nome" + +#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/providers.py:79 netbox/navigation/menu.py:254 +#: netbox/navigation/menu.py:258 netbox/navigation/menu.py:260 +#: templates/circuits/provider.html:61 +#: templates/circuits/provideraccount.html:46 +#: templates/circuits/providernetwork.html:54 +msgid "Circuits" +msgstr "Circuitos" + +#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:27 +msgid "Circuit ID" +msgstr "ID do circuito" + +#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:157 +msgid "Side A" +msgstr "Lado A" + +#: circuits/tables/circuits.py:69 +msgid "Side Z" +msgstr "Lado Z" + +#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:56 +msgid "Commit Rate" +msgstr "Taxa de comprometimento" + +#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/providers.py:82 circuits/tables/providers.py:107 +#: dcim/tables/devices.py:1037 dcim/tables/devicetypes.py:92 +#: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 +#: dcim/tables/power.py:96 dcim/tables/racks.py:76 dcim/tables/racks.py:156 +#: dcim/tables/sites.py:103 extras/forms/bulk_edit.py:320 +#: extras/tables/tables.py:485 ipam/tables/asn.py:69 ipam/tables/fhrp.py:34 +#: ipam/tables/ip.py:135 ipam/tables/ip.py:272 ipam/tables/ip.py:325 +#: ipam/tables/ip.py:392 ipam/tables/services.py:24 ipam/tables/services.py:54 +#: ipam/tables/vlans.py:141 ipam/tables/vrfs.py:46 ipam/tables/vrfs.py:71 +#: templates/dcim/cable_edit.html:85 templates/generic/bulk_edit.html:102 +#: templates/inc/panels/comments.html:6 tenancy/tables/contacts.py:68 +#: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 +#: virtualization/tables/clusters.py:91 +#: virtualization/tables/virtualmachines.py:68 vpn/tables/crypto.py:37 +#: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 +#: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:57 +#: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 +msgid "Comments" +msgstr "Comentários" + +#: circuits/tables/providers.py:23 +msgid "Accounts" +msgstr "Contas" + +#: circuits/tables/providers.py:29 +msgid "Account Count" +msgstr "Contagem de contas" + +#: circuits/tables/providers.py:39 dcim/tables/sites.py:100 +msgid "ASN Count" +msgstr "Contagem de ASN" + +#: core/choices.py:18 +msgid "New" +msgstr "Novo" + +#: core/choices.py:19 +msgid "Queued" +msgstr "Em fila" + +#: core/choices.py:20 +msgid "Syncing" +msgstr "Sincronizando" + +#: core/choices.py:21 core/choices.py:57 core/tables/jobs.py:41 +#: extras/choices.py:210 templates/core/job.html:75 +msgid "Completed" +msgstr "Concluído" + +#: core/choices.py:22 core/choices.py:59 dcim/choices.py:176 +#: dcim/choices.py:222 dcim/choices.py:1496 extras/choices.py:212 +#: virtualization/choices.py:47 +msgid "Failed" +msgstr "Falhou" + +#: core/choices.py:35 netbox/navigation/menu.py:330 +#: templates/extras/script/base.html:14 templates/extras/script_list.html:6 +#: templates/extras/script_list.html:20 templates/extras/script_result.html:18 +msgid "Scripts" +msgstr "Scripts" + +#: core/choices.py:36 netbox/navigation/menu.py:324 +#: templates/extras/report/base.html:13 templates/extras/report_list.html:7 +#: templates/extras/report_list.html:12 +msgid "Reports" +msgstr "Relatórios" + +#: core/choices.py:54 extras/choices.py:207 +msgid "Pending" +msgstr "Pendente" + +#: core/choices.py:55 core/tables/jobs.py:32 extras/choices.py:208 +#: templates/core/job.html:62 +msgid "Scheduled" +msgstr "Programado" + +#: core/choices.py:56 extras/choices.py:209 +msgid "Running" +msgstr "Correndo" + +#: core/choices.py:58 extras/choices.py:211 +msgid "Errored" +msgstr "Errado" + +#: core/data_backends.py:29 templates/dcim/interface.html:224 +msgid "Local" +msgstr "Local" + +#: core/data_backends.py:47 extras/tables/tables.py:431 +#: templates/account/profile.html:16 templates/users/user.html:18 +#: users/tables.py:31 +msgid "Username" +msgstr "Nome de usuário" + +#: core/data_backends.py:49 core/data_backends.py:55 +msgid "Only used for cloning with HTTP(S)" +msgstr "Usado apenas para clonagem com HTTP (S)" + +#: core/data_backends.py:53 templates/account/base.html:17 +#: templates/account/password.html:11 users/forms/model_forms.py:171 +msgid "Password" +msgstr "Senha" + +#: core/data_backends.py:59 +msgid "Branch" +msgstr "Filial" + +#: core/data_backends.py:118 +msgid "AWS access key ID" +msgstr "ID da chave de acesso da AWS" + +#: core/data_backends.py:122 +msgid "AWS secret access key" +msgstr "Chave de acesso secreta da AWS" + +#: core/filtersets.py:49 extras/filtersets.py:203 extras/filtersets.py:538 +#: extras/filtersets.py:566 +msgid "Data source (ID)" +msgstr "Fonte de dados (ID)" + +#: core/filtersets.py:55 +msgid "Data source (name)" +msgstr "Fonte de dados (nome)" + +#: core/forms/bulk_edit.py:24 ipam/forms/bulk_edit.py:47 +msgid "Enforce unique space" +msgstr "Imponha um espaço exclusivo" + +#: core/forms/bulk_edit.py:33 extras/forms/model_forms.py:202 +#: templates/extras/savedfilter.html:57 vpn/forms/filtersets.py:95 +#: vpn/forms/filtersets.py:124 vpn/forms/filtersets.py:148 +#: vpn/forms/filtersets.py:167 vpn/forms/model_forms.py:294 +#: vpn/forms/model_forms.py:315 vpn/forms/model_forms.py:329 +#: vpn/forms/model_forms.py:350 vpn/forms/model_forms.py:373 +msgid "Parameters" +msgstr "Parâmetros" + +#: core/forms/bulk_edit.py:37 templates/core/datasource.html:69 +msgid "Ignore rules" +msgstr "Ignorar regras" + +#: core/forms/filtersets.py:26 core/forms/model_forms.py:95 +#: extras/forms/model_forms.py:165 extras/forms/model_forms.py:455 +#: extras/forms/model_forms.py:508 extras/tables/tables.py:149 +#: extras/tables/tables.py:363 extras/tables/tables.py:398 +#: templates/core/datasource.html:31 +#: templates/dcim/device/render_config.html:19 +#: templates/extras/configcontext.html:30 +#: templates/extras/configtemplate.html:22 +#: templates/extras/exporttemplate.html:41 +#: templates/virtualization/virtualmachine/render_config.html:19 +msgid "Data Source" +msgstr "Fonte de dados" + +#: core/forms/filtersets.py:39 core/tables/data.py:26 +#: dcim/forms/bulk_edit.py:1012 dcim/forms/bulk_edit.py:1285 +#: dcim/forms/filtersets.py:1270 dcim/tables/devices.py:568 +#: dcim/tables/devicetypes.py:221 extras/forms/bulk_edit.py:97 +#: extras/forms/bulk_edit.py:161 extras/forms/bulk_edit.py:220 +#: extras/forms/filtersets.py:119 extras/forms/filtersets.py:206 +#: extras/forms/filtersets.py:267 extras/tables/tables.py:122 +#: extras/tables/tables.py:211 extras/tables/tables.py:284 +#: templates/core/datasource.html:43 templates/dcim/interface.html:62 +#: templates/extras/customlink.html:18 templates/extras/eventrule.html:20 +#: templates/extras/savedfilter.html:26 +#: templates/users/objectpermission.html:26 +#: templates/virtualization/vminterface.html:32 users/forms/bulk_edit.py:69 +#: users/forms/filtersets.py:71 users/tables.py:86 +#: virtualization/forms/bulk_edit.py:216 +#: virtualization/forms/filtersets.py:207 +msgid "Enabled" +msgstr "Habilitado" + +#: core/forms/filtersets.py:51 core/forms/mixins.py:21 +msgid "File" +msgstr "Arquivo" + +#: core/forms/filtersets.py:56 core/forms/mixins.py:16 +#: extras/forms/filtersets.py:147 extras/forms/filtersets.py:336 +#: extras/forms/filtersets.py:422 +msgid "Data source" +msgstr "Fonte de dados" + +#: core/forms/filtersets.py:64 extras/forms/filtersets.py:449 +msgid "Creation" +msgstr "Criação" + +#: core/forms/filtersets.py:70 extras/forms/filtersets.py:473 +#: extras/forms/filtersets.py:519 extras/tables/tables.py:474 +#: templates/core/job.html:25 templates/extras/objectchange.html:56 +#: tenancy/tables/contacts.py:90 vpn/tables/l2vpn.py:59 +msgid "Object Type" +msgstr "Tipo de objeto" + +#: core/forms/filtersets.py:80 +msgid "Created after" +msgstr "Criado após" + +#: core/forms/filtersets.py:85 +msgid "Created before" +msgstr "Criado antes" + +#: core/forms/filtersets.py:90 +msgid "Scheduled after" +msgstr "Programado após" + +#: core/forms/filtersets.py:95 +msgid "Scheduled before" +msgstr "Programado antes" + +#: core/forms/filtersets.py:100 +msgid "Started after" +msgstr "Começou depois" + +#: core/forms/filtersets.py:105 +msgid "Started before" +msgstr "Começou antes" + +#: core/forms/filtersets.py:110 +msgid "Completed after" +msgstr "Concluído após" + +#: core/forms/filtersets.py:115 +msgid "Completed before" +msgstr "Concluído antes" + +#: core/forms/filtersets.py:122 dcim/forms/bulk_edit.py:359 +#: dcim/forms/filtersets.py:352 dcim/forms/filtersets.py:396 +#: dcim/forms/model_forms.py:251 extras/forms/filtersets.py:465 +#: extras/forms/filtersets.py:511 templates/dcim/rackreservation.html:65 +#: templates/extras/objectchange.html:40 templates/extras/savedfilter.html:22 +#: templates/users/token.html:22 templates/users/user.html:6 +#: templates/users/user.html:14 users/filtersets.py:74 users/filtersets.py:134 +#: users/forms/filtersets.py:85 users/forms/filtersets.py:126 +#: users/forms/model_forms.py:156 users/forms/model_forms.py:194 +#: users/tables.py:19 +msgid "User" +msgstr "Usuário" + +#: core/forms/model_forms.py:52 core/tables/data.py:46 +#: templates/core/datafile.html:36 templates/extras/report/base.html:33 +#: templates/extras/script/base.html:32 templates/extras/script_result.html:45 +msgid "Source" +msgstr "Fonte" + +#: core/forms/model_forms.py:56 +msgid "Backend Parameters" +msgstr "Parâmetros de back-end" + +#: core/forms/model_forms.py:94 +msgid "File Upload" +msgstr "Upload de arquivo" + +#: core/forms/model_forms.py:147 templates/core/configrevision.html:43 +#: templates/dcim/rack_elevation_list.html:6 +msgid "Rack Elevations" +msgstr "Elevações da cremalheira" + +#: core/forms/model_forms.py:148 dcim/choices.py:1407 +#: dcim/forms/bulk_edit.py:859 dcim/forms/bulk_edit.py:1242 +#: dcim/forms/bulk_edit.py:1260 dcim/tables/racks.py:89 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 +msgid "Power" +msgstr "Poder" + +#: core/forms/model_forms.py:149 netbox/navigation/menu.py:142 +#: templates/core/configrevision.html:79 +msgid "IPAM" +msgstr "IPAM" + +#: core/forms/model_forms.py:150 netbox/navigation/menu.py:218 +#: templates/core/configrevision.html:95 vpn/forms/bulk_edit.py:76 +#: vpn/forms/filtersets.py:42 vpn/forms/model_forms.py:60 +#: vpn/forms/model_forms.py:145 +msgid "Security" +msgstr "Segurança" + +#: core/forms/model_forms.py:151 templates/core/configrevision.html:107 +msgid "Banners" +msgstr "Banners" + +#: core/forms/model_forms.py:152 templates/core/configrevision.html:131 +msgid "Pagination" +msgstr "Paginação" + +#: core/forms/model_forms.py:153 extras/forms/model_forms.py:63 +#: templates/core/configrevision.html:147 +msgid "Validation" +msgstr "Validação" + +#: core/forms/model_forms.py:154 templates/account/preferences.html:6 +#: templates/core/configrevision.html:175 +msgid "User Preferences" +msgstr "Preferências do usuário" + +#: core/forms/model_forms.py:155 dcim/forms/filtersets.py:658 +#: templates/core/configrevision.html:193 users/forms/model_forms.py:63 +msgid "Miscellaneous" +msgstr "Diversos" + +#: core/forms/model_forms.py:158 +msgid "Config Revision" +msgstr "Revisão de configuração" + +#: core/forms/model_forms.py:197 +msgid "This parameter has been defined statically and cannot be modified." +msgstr "Esse parâmetro foi definido estaticamente e não pode ser modificado." + +#: core/forms/model_forms.py:205 +#, python-brace-format +msgid "Current value: {value}" +msgstr "Valor atual: {value}" + +#: core/forms/model_forms.py:207 +msgid " (default)" +msgstr " (padrão)" + +#: core/models/config.py:18 core/models/data.py:259 core/models/files.py:27 +#: core/models/jobs.py:50 extras/models/models.py:760 +#: netbox/models/features.py:52 users/models.py:248 +msgid "created" +msgstr "criada" + +#: core/models/config.py:22 +msgid "comment" +msgstr "comentário" + +#: core/models/config.py:29 +msgid "configuration data" +msgstr "dados de configuração" + +#: core/models/config.py:36 +msgid "config revision" +msgstr "revisão de configuração" + +#: core/models/config.py:37 +msgid "config revisions" +msgstr "revisões de configuração" + +#: core/models/config.py:41 +msgid "Default configuration" +msgstr "Configuração padrão" + +#: core/models/config.py:43 +msgid "Current configuration" +msgstr "Configuração atual" + +#: core/models/config.py:44 +#, python-brace-format +msgid "Config revision #{id}" +msgstr "Revisão de configuração #{id}" + +#: core/models/data.py:46 dcim/models/cables.py:43 +#: dcim/models/device_component_templates.py:177 +#: dcim/models/device_component_templates.py:211 +#: dcim/models/device_component_templates.py:246 +#: dcim/models/device_component_templates.py:308 +#: dcim/models/device_component_templates.py:387 +#: dcim/models/device_component_templates.py:486 +#: dcim/models/device_component_templates.py:586 +#: dcim/models/device_components.py:284 dcim/models/device_components.py:313 +#: dcim/models/device_components.py:346 dcim/models/device_components.py:464 +#: dcim/models/device_components.py:606 dcim/models/device_components.py:971 +#: dcim/models/device_components.py:1045 dcim/models/power.py:101 +#: dcim/models/racks.py:127 extras/models/customfields.py:75 +#: extras/models/search.py:43 virtualization/models/clusters.py:61 +#: vpn/models/l2vpn.py:32 +msgid "type" +msgstr "tipo" + +#: core/models/data.py:51 extras/choices.py:34 extras/models/models.py:194 +#: templates/core/datasource.html:59 +msgid "URL" +msgstr "URL" + +#: core/models/data.py:61 dcim/models/device_component_templates.py:392 +#: dcim/models/device_components.py:513 extras/models/models.py:88 +#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:353 +msgid "enabled" +msgstr "permitido" + +#: core/models/data.py:65 +msgid "ignore rules" +msgstr "ignorar regras" + +#: core/models/data.py:67 +msgid "Patterns (one per line) matching files to ignore when syncing" +msgstr "" +"Padrões (um por linha) de arquivos correspondentes a serem ignorados ao " +"sincronizar" + +#: core/models/data.py:70 extras/models/models.py:564 +msgid "parameters" +msgstr "parâmetros" + +#: core/models/data.py:75 +msgid "last synced" +msgstr "sincronizado pela última vez" + +#: core/models/data.py:83 +msgid "data source" +msgstr "fonte de dados" + +#: core/models/data.py:84 +msgid "data sources" +msgstr "fontes de dados" + +#: core/models/data.py:124 +#, python-brace-format +msgid "Unknown backend type: {type}" +msgstr "Tipo de back-end desconhecido: {type}" + +#: core/models/data.py:263 core/models/files.py:31 +#: netbox/models/features.py:58 +msgid "last updated" +msgstr "última atualização" + +#: core/models/data.py:273 dcim/models/cables.py:430 +msgid "path" +msgstr "caminho" + +#: core/models/data.py:276 +msgid "File path relative to the data source's root" +msgstr "Caminho do arquivo relativo à raiz da fonte de dados" + +#: core/models/data.py:280 ipam/models/ip.py:502 +msgid "size" +msgstr "tamanho" + +#: core/models/data.py:283 +msgid "hash" +msgstr "jogo da velha" + +#: core/models/data.py:287 +msgid "Length must be 64 hexadecimal characters." +msgstr "O comprimento deve ser de 64 caracteres hexadecimais." + +#: core/models/data.py:289 +msgid "SHA256 hash of the file data" +msgstr "Hash SHA256 dos dados do arquivo" + +#: core/models/data.py:306 +msgid "data file" +msgstr "arquivo de dados" + +#: core/models/data.py:307 +msgid "data files" +msgstr "arquivos de dados" + +#: core/models/data.py:393 +msgid "auto sync record" +msgstr "registro de sincronização automática" + +#: core/models/data.py:394 +msgid "auto sync records" +msgstr "registros de sincronização automática" + +#: core/models/files.py:37 +msgid "file root" +msgstr "raiz do arquivo" + +#: core/models/files.py:42 +msgid "file path" +msgstr "caminho do arquivo" + +#: core/models/files.py:44 +msgid "File path relative to the designated root path" +msgstr "Caminho do arquivo em relação ao caminho raiz designado" + +#: core/models/files.py:61 +msgid "managed file" +msgstr "arquivo gerenciado" + +#: core/models/files.py:62 +msgid "managed files" +msgstr "arquivos gerenciados" + +#: core/models/jobs.py:54 +msgid "scheduled" +msgstr "agendada" + +#: core/models/jobs.py:59 +msgid "interval" +msgstr "intervalo" + +#: core/models/jobs.py:65 +msgid "Recurrence interval (in minutes)" +msgstr "Intervalo de recorrência (em minutos)" + +#: core/models/jobs.py:68 +msgid "started" +msgstr "iniciada" + +#: core/models/jobs.py:73 +msgid "completed" +msgstr "concluído" + +#: core/models/jobs.py:91 extras/models/models.py:123 +#: extras/models/staging.py:87 +msgid "data" +msgstr "dados" + +#: core/models/jobs.py:96 +msgid "error" +msgstr "erro" + +#: core/models/jobs.py:101 +msgid "job ID" +msgstr "ID do trabalho" + +#: core/models/jobs.py:112 +msgid "job" +msgstr "trabalho" + +#: core/models/jobs.py:113 +msgid "jobs" +msgstr "empregos" + +#: core/models/jobs.py:135 +#, python-brace-format +msgid "Jobs cannot be assigned to this object type ({type})." +msgstr "Os trabalhos não podem ser atribuídos a esse tipo de objeto ({type})." + +#: core/tables/config.py:21 users/forms/filtersets.py:45 users/tables.py:39 +msgid "Is Active" +msgstr "Está ativo" + +#: core/tables/data.py:50 templates/core/datafile.html:40 +msgid "Path" +msgstr "Caminho" + +#: core/tables/data.py:54 templates/extras/inc/result_pending.html:7 +msgid "Last updated" +msgstr "Última atualização" + +#: core/tables/jobs.py:10 dcim/tables/devicetypes.py:161 +#: extras/tables/tables.py:174 extras/tables/tables.py:340 +#: netbox/tables/tables.py:184 templates/dcim/virtualchassis_edit.html:53 +#: wireless/tables/wirelesslink.py:16 +msgid "ID" +msgstr "CARTEIRA DE IDENTIDADE" + +#: core/tables/jobs.py:21 extras/choices.py:38 extras/tables/tables.py:236 +#: extras/tables/tables.py:350 extras/tables/tables.py:448 +#: extras/tables/tables.py:479 netbox/tables/tables.py:238 +#: templates/extras/eventrule.html:99 +#: templates/extras/htmx/report_result.html:45 +#: templates/extras/journalentry.html:21 templates/extras/objectchange.html:62 +#: tenancy/tables/contacts.py:93 vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Objeto" + +#: core/tables/jobs.py:35 +msgid "Interval" +msgstr "Intervalo" + +#: core/tables/jobs.py:38 templates/core/job.html:71 +#: templates/extras/htmx/report_result.html:7 +#: templates/extras/htmx/script_result.html:8 +msgid "Started" +msgstr "Iniciado" + +#: dcim/api/serializers.py:205 templates/dcim/rack.html:33 +msgid "Facility ID" +msgstr "ID da instalação" + +#: dcim/api/serializers.py:321 dcim/api/serializers.py:680 +msgid "Position (U)" +msgstr "Posição (U)" + +#: dcim/choices.py:21 virtualization/choices.py:21 +msgid "Staging" +msgstr "Encenação" + +#: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 +#: dcim/choices.py:1420 virtualization/choices.py:23 +#: virtualization/choices.py:48 +msgid "Decommissioning" +msgstr "Descomissionamento" + +#: dcim/choices.py:24 +msgid "Retired" +msgstr "Aposentado" + +#: dcim/choices.py:65 +msgid "2-post frame" +msgstr "Moldura de 2 postes" + +#: dcim/choices.py:66 +msgid "4-post frame" +msgstr "moldura de 4 postes" + +#: dcim/choices.py:67 +msgid "4-post cabinet" +msgstr "Armário de 4 colunas" + +#: dcim/choices.py:68 +msgid "Wall-mounted frame" +msgstr "Estrutura montada na parede" + +#: dcim/choices.py:69 +msgid "Wall-mounted frame (vertical)" +msgstr "Estrutura montada na parede (vertical)" + +#: dcim/choices.py:70 +msgid "Wall-mounted cabinet" +msgstr "Armário montado na parede" + +#: dcim/choices.py:71 +msgid "Wall-mounted cabinet (vertical)" +msgstr "Armário montado na parede (vertical)" + +#: dcim/choices.py:83 dcim/choices.py:84 dcim/choices.py:85 dcim/choices.py:86 +#, python-brace-format +msgid "{n} inches" +msgstr "{n} polegadas" + +#: dcim/choices.py:100 ipam/choices.py:32 ipam/choices.py:50 +#: ipam/choices.py:70 ipam/choices.py:155 wireless/choices.py:26 +msgid "Reserved" +msgstr "Reservado" + +#: dcim/choices.py:101 templates/dcim/device.html:262 +msgid "Available" +msgstr "Disponível" + +#: dcim/choices.py:104 ipam/choices.py:33 ipam/choices.py:51 +#: ipam/choices.py:71 ipam/choices.py:156 wireless/choices.py:28 +msgid "Deprecated" +msgstr "Obsoleto" + +#: dcim/choices.py:114 templates/dcim/rack.html:128 +msgid "Millimeters" +msgstr "Milímetros" + +#: dcim/choices.py:115 dcim/choices.py:1442 +msgid "Inches" +msgstr "Polegadas" + +#: dcim/choices.py:140 dcim/forms/bulk_edit.py:66 dcim/forms/bulk_edit.py:85 +#: dcim/forms/bulk_edit.py:171 dcim/forms/bulk_edit.py:1290 +#: dcim/forms/bulk_import.py:59 dcim/forms/bulk_import.py:73 +#: dcim/forms/bulk_import.py:136 dcim/forms/bulk_import.py:503 +#: dcim/forms/bulk_import.py:770 dcim/forms/bulk_import.py:1021 +#: dcim/forms/filtersets.py:226 dcim/forms/model_forms.py:73 +#: dcim/forms/model_forms.py:94 dcim/forms/model_forms.py:172 +#: dcim/forms/model_forms.py:955 dcim/forms/model_forms.py:1296 +#: dcim/forms/object_import.py:181 dcim/tables/devices.py:671 +#: dcim/tables/devices.py:955 extras/tables/tables.py:181 +#: ipam/tables/fhrp.py:59 ipam/tables/ip.py:374 ipam/tables/services.py:44 +#: templates/dcim/interface.html:105 templates/dcim/interface.html:321 +#: templates/dcim/location.html:44 templates/dcim/region.html:38 +#: templates/dcim/sitegroup.html:38 templates/ipam/service.html:31 +#: templates/tenancy/contactgroup.html:32 +#: templates/tenancy/tenantgroup.html:40 +#: templates/virtualization/vminterface.html:42 +#: templates/wireless/wirelesslangroup.html:38 tenancy/forms/bulk_edit.py:26 +#: tenancy/forms/bulk_edit.py:60 tenancy/forms/bulk_import.py:24 +#: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:24 +#: tenancy/forms/model_forms.py:69 virtualization/forms/bulk_edit.py:206 +#: virtualization/forms/bulk_import.py:151 +#: virtualization/tables/virtualmachines.py:142 wireless/forms/bulk_edit.py:23 +#: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:20 +msgid "Parent" +msgstr "Pai" + +#: dcim/choices.py:141 +msgid "Child" +msgstr "Criança" + +#: dcim/choices.py:155 templates/dcim/device.html:345 +#: templates/dcim/rack.html:181 templates/dcim/rack_elevation_list.html:22 +#: templates/dcim/rackreservation.html:84 +msgid "Front" +msgstr "Frente" + +#: dcim/choices.py:156 templates/dcim/device.html:351 +#: templates/dcim/rack.html:187 templates/dcim/rack_elevation_list.html:23 +#: templates/dcim/rackreservation.html:90 +msgid "Rear" +msgstr "Traseira" + +#: dcim/choices.py:175 dcim/choices.py:221 virtualization/choices.py:46 +msgid "Staged" +msgstr "Encenado" + +#: dcim/choices.py:177 +msgid "Inventory" +msgstr "Inventário" + +#: dcim/choices.py:193 +msgid "Front to rear" +msgstr "Da frente para trás" + +#: dcim/choices.py:194 +msgid "Rear to front" +msgstr "De trás para frente" + +#: dcim/choices.py:195 +msgid "Left to right" +msgstr "Da esquerda para a direita" + +#: dcim/choices.py:196 +msgid "Right to left" +msgstr "Da direita para a esquerda" + +#: dcim/choices.py:197 +msgid "Side to rear" +msgstr "De lado para trás" + +#: dcim/choices.py:198 dcim/choices.py:1215 +msgid "Passive" +msgstr "Passivo" + +#: dcim/choices.py:199 +msgid "Mixed" +msgstr "Misto" + +#: dcim/choices.py:443 dcim/choices.py:680 +msgid "NEMA (Non-locking)" +msgstr "NEMA (sem bloqueio)" + +#: dcim/choices.py:465 dcim/choices.py:702 +msgid "NEMA (Locking)" +msgstr "NEMA (Bloqueio)" + +#: dcim/choices.py:488 dcim/choices.py:725 +msgid "California Style" +msgstr "Estilo da Califórnia" + +#: dcim/choices.py:496 +msgid "International/ITA" +msgstr "Internacional/ITA" + +#: dcim/choices.py:526 dcim/choices.py:755 +msgid "Proprietary" +msgstr "Proprietário" + +#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1131 +#: dcim/choices.py:1133 dcim/choices.py:1338 dcim/choices.py:1340 +#: netbox/navigation/menu.py:188 +msgid "Other" +msgstr "Outros" + +#: dcim/choices.py:733 +msgid "ITA/International" +msgstr "ITA/Internacional" + +#: dcim/choices.py:794 +msgid "Physical" +msgstr "Físico" + +#: dcim/choices.py:795 dcim/choices.py:949 +msgid "Virtual" +msgstr "Virtual" + +#: dcim/choices.py:796 dcim/choices.py:1019 dcim/forms/bulk_edit.py:1398 +#: dcim/forms/filtersets.py:1233 dcim/forms/model_forms.py:881 +#: dcim/forms/model_forms.py:1190 netbox/navigation/menu.py:128 +#: netbox/navigation/menu.py:132 templates/dcim/interface.html:217 +msgid "Wireless" +msgstr "Sem fio" + +#: dcim/choices.py:947 +msgid "Virtual interfaces" +msgstr "Interfaces virtuais" + +#: dcim/choices.py:950 dcim/forms/bulk_edit.py:1295 +#: dcim/forms/bulk_import.py:777 dcim/forms/model_forms.py:869 +#: dcim/tables/devices.py:675 templates/dcim/interface.html:109 +#: templates/virtualization/vminterface.html:46 +#: virtualization/forms/bulk_edit.py:211 +#: virtualization/forms/bulk_import.py:158 +#: virtualization/tables/virtualmachines.py:146 +msgid "Bridge" +msgstr "Ponte" + +#: dcim/choices.py:951 +msgid "Link Aggregation Group (LAG)" +msgstr "Grupo de agregação de links (LAG)" + +#: dcim/choices.py:955 +msgid "Ethernet (fixed)" +msgstr "Ethernet (fixa)" + +#: dcim/choices.py:969 +msgid "Ethernet (modular)" +msgstr "Ethernet (modular)" + +#: dcim/choices.py:1005 +msgid "Ethernet (backplane)" +msgstr "Ethernet (painel traseiro)" + +#: dcim/choices.py:1033 +msgid "Cellular" +msgstr "Celular" + +#: dcim/choices.py:1080 dcim/forms/filtersets.py:302 +#: dcim/forms/filtersets.py:736 dcim/forms/filtersets.py:876 +#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:53 +#: templates/dcim/virtualchassis_edit.html:55 +msgid "Serial" +msgstr "Serial" + +#: dcim/choices.py:1095 +msgid "Coaxial" +msgstr "Coaxial" + +#: dcim/choices.py:1112 +msgid "Stacking" +msgstr "Empilhamento" + +#: dcim/choices.py:1162 +msgid "Half" +msgstr "Metade" + +#: dcim/choices.py:1163 +msgid "Full" +msgstr "Completo" + +#: dcim/choices.py:1164 wireless/choices.py:480 +msgid "Auto" +msgstr "Automático" + +#: dcim/choices.py:1175 +msgid "Access" +msgstr "Acesso" + +#: dcim/choices.py:1176 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: templates/dcim/inc/interface_vlans_table.html:7 +msgid "Tagged" +msgstr "Marcado" + +#: dcim/choices.py:1177 +msgid "Tagged (All)" +msgstr "Marcado (Todos)" + +#: dcim/choices.py:1206 +msgid "IEEE Standard" +msgstr "Padrão IEEE" + +#: dcim/choices.py:1217 +msgid "Passive 24V (2-pair)" +msgstr "24V passivo (2 pares)" + +#: dcim/choices.py:1218 +msgid "Passive 24V (4-pair)" +msgstr "24V passivo (4 pares)" + +#: dcim/choices.py:1219 +msgid "Passive 48V (2-pair)" +msgstr "48V passivo (2 pares)" + +#: dcim/choices.py:1220 +msgid "Passive 48V (4-pair)" +msgstr "48V passivo (4 pares)" + +#: dcim/choices.py:1282 dcim/choices.py:1378 +msgid "Copper" +msgstr "Cobre" + +#: dcim/choices.py:1305 +msgid "Fiber Optic" +msgstr "Fibra óptica" + +#: dcim/choices.py:1394 +msgid "Fiber" +msgstr "Fibra" + +#: dcim/choices.py:1418 dcim/forms/filtersets.py:1140 +msgid "Connected" +msgstr "Conectado" + +#: dcim/choices.py:1437 +msgid "Kilometers" +msgstr "Quilômetros" + +#: dcim/choices.py:1438 templates/dcim/cable_trace.html:62 +msgid "Meters" +msgstr "Metros" + +#: dcim/choices.py:1439 +msgid "Centimeters" +msgstr "Centímetros" + +#: dcim/choices.py:1440 +msgid "Miles" +msgstr "Miles" + +#: dcim/choices.py:1441 templates/dcim/cable_trace.html:63 +msgid "Feet" +msgstr "Pés" + +#: dcim/choices.py:1457 templates/dcim/device.html:332 +#: templates/dcim/rack.html:157 +msgid "Kilograms" +msgstr "Quilogramas" + +#: dcim/choices.py:1458 +msgid "Grams" +msgstr "Gramas" + +#: dcim/choices.py:1459 templates/dcim/rack.html:158 +msgid "Pounds" +msgstr "Libras" + +#: dcim/choices.py:1460 +msgid "Ounces" +msgstr "Onças" + +#: dcim/choices.py:1506 tenancy/choices.py:17 +msgid "Primary" +msgstr "Primário" + +#: dcim/choices.py:1507 +msgid "Redundant" +msgstr "Redundante" + +#: dcim/choices.py:1528 +msgid "Single phase" +msgstr "Fase única" + +#: dcim/choices.py:1529 +msgid "Three-phase" +msgstr "Trifásico" + +#: dcim/filtersets.py:80 +msgid "Parent region (ID)" +msgstr "Região principal (ID)" + +#: dcim/filtersets.py:86 +msgid "Parent region (slug)" +msgstr "Região parental (lesma)" + +#: dcim/filtersets.py:97 +msgid "Parent site group (ID)" +msgstr "Grupo de sites principais (ID)" + +#: dcim/filtersets.py:103 +msgid "Parent site group (slug)" +msgstr "Grupo de sites principais (slug)" + +#: dcim/filtersets.py:132 ipam/filtersets.py:797 ipam/filtersets.py:930 +msgid "Group (ID)" +msgstr "Grupo (ID)" + +#: dcim/filtersets.py:138 +msgid "Group (slug)" +msgstr "Grupo (lesma)" + +#: dcim/filtersets.py:144 dcim/filtersets.py:149 +msgid "AS (ID)" +msgstr "COMO (ID)" + +#: dcim/filtersets.py:217 dcim/filtersets.py:292 dcim/filtersets.py:390 +#: dcim/filtersets.py:917 dcim/filtersets.py:1213 dcim/filtersets.py:1881 +msgid "Location (ID)" +msgstr "Localização (ID)" + +#: dcim/filtersets.py:224 dcim/filtersets.py:299 dcim/filtersets.py:397 +#: dcim/filtersets.py:1219 extras/filtersets.py:447 +msgid "Location (slug)" +msgstr "Localização (lesma)" + +#: dcim/filtersets.py:313 dcim/filtersets.py:764 dcim/filtersets.py:854 +#: dcim/filtersets.py:1619 ipam/filtersets.py:347 ipam/filtersets.py:459 +#: ipam/filtersets.py:940 virtualization/filtersets.py:209 +msgid "Role (ID)" +msgstr "Função (ID)" + +#: dcim/filtersets.py:319 dcim/filtersets.py:770 dcim/filtersets.py:860 +#: dcim/filtersets.py:1625 extras/filtersets.py:463 ipam/filtersets.py:353 +#: ipam/filtersets.py:465 ipam/filtersets.py:946 +#: virtualization/filtersets.py:215 +msgid "Role (slug)" +msgstr "Papel (lesma)" + +#: dcim/filtersets.py:347 dcim/filtersets.py:922 dcim/filtersets.py:1224 +#: dcim/filtersets.py:1942 +msgid "Rack (ID)" +msgstr "Prateleira (ID)" + +#: dcim/filtersets.py:401 extras/filtersets.py:234 extras/filtersets.py:278 +#: extras/filtersets.py:318 extras/filtersets.py:613 +msgid "User (ID)" +msgstr "Usuário (ID)" + +#: dcim/filtersets.py:407 extras/filtersets.py:240 extras/filtersets.py:284 +#: extras/filtersets.py:324 users/filtersets.py:80 users/filtersets.py:140 +msgid "User (name)" +msgstr "Usuário (nome)" + +#: dcim/filtersets.py:435 dcim/filtersets.py:561 dcim/filtersets.py:754 +#: dcim/filtersets.py:805 dcim/filtersets.py:833 dcim/filtersets.py:1116 +#: dcim/filtersets.py:1609 +msgid "Manufacturer (ID)" +msgstr "Fabricante (ID)" + +#: dcim/filtersets.py:441 dcim/filtersets.py:567 dcim/filtersets.py:760 +#: dcim/filtersets.py:811 dcim/filtersets.py:839 dcim/filtersets.py:1122 +#: dcim/filtersets.py:1615 +msgid "Manufacturer (slug)" +msgstr "Fabricante (lesma)" + +#: dcim/filtersets.py:445 +msgid "Default platform (ID)" +msgstr "Plataforma padrão (ID)" + +#: dcim/filtersets.py:451 +msgid "Default platform (slug)" +msgstr "Plataforma padrão (slug)" + +#: dcim/filtersets.py:454 dcim/forms/filtersets.py:452 +msgid "Has a front image" +msgstr "Tem uma imagem frontal" + +#: dcim/filtersets.py:458 dcim/forms/filtersets.py:459 +msgid "Has a rear image" +msgstr "Tem uma imagem traseira" + +#: dcim/filtersets.py:463 dcim/filtersets.py:571 dcim/filtersets.py:975 +#: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:563 +#: dcim/forms/filtersets.py:775 +msgid "Has console ports" +msgstr "Tem portas de console" + +#: dcim/filtersets.py:467 dcim/filtersets.py:575 dcim/filtersets.py:979 +#: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:570 +#: dcim/forms/filtersets.py:782 +msgid "Has console server ports" +msgstr "Tem portas de servidor de console" + +#: dcim/filtersets.py:471 dcim/filtersets.py:579 dcim/filtersets.py:983 +#: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:577 +#: dcim/forms/filtersets.py:789 +msgid "Has power ports" +msgstr "Tem portas de alimentação" + +#: dcim/filtersets.py:475 dcim/filtersets.py:583 dcim/filtersets.py:987 +#: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:584 +#: dcim/forms/filtersets.py:796 +msgid "Has power outlets" +msgstr "Tem tomadas elétricas" + +#: dcim/filtersets.py:479 dcim/filtersets.py:587 dcim/filtersets.py:991 +#: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:591 +#: dcim/forms/filtersets.py:803 +msgid "Has interfaces" +msgstr "Tem interfaces" + +#: dcim/filtersets.py:483 dcim/filtersets.py:591 dcim/filtersets.py:995 +#: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:598 +#: dcim/forms/filtersets.py:810 +msgid "Has pass-through ports" +msgstr "Tem portas de passagem" + +#: dcim/filtersets.py:487 dcim/filtersets.py:999 dcim/forms/filtersets.py:515 +msgid "Has module bays" +msgstr "Tem compartimentos de módulos" + +#: dcim/filtersets.py:491 dcim/filtersets.py:1003 dcim/forms/filtersets.py:508 +msgid "Has device bays" +msgstr "Tem compartimentos para dispositivos" + +#: dcim/filtersets.py:495 dcim/forms/filtersets.py:522 +msgid "Has inventory items" +msgstr "Tem itens de inventário" + +#: dcim/filtersets.py:638 dcim/filtersets.py:849 dcim/filtersets.py:1245 +msgid "Device type (ID)" +msgstr "Tipo de dispositivo (ID)" + +#: dcim/filtersets.py:651 dcim/filtersets.py:1127 +msgid "Module type (ID)" +msgstr "Tipo de módulo (ID)" + +#: dcim/filtersets.py:750 dcim/filtersets.py:1605 +msgid "Parent inventory item (ID)" +msgstr "Item do inventário principal (ID)" + +#: dcim/filtersets.py:793 dcim/filtersets.py:815 dcim/filtersets.py:971 +#: virtualization/filtersets.py:237 +msgid "Config template (ID)" +msgstr "Modelo de configuração (ID)" + +#: dcim/filtersets.py:845 +msgid "Device type (slug)" +msgstr "Tipo de dispositivo (lesma)" + +#: dcim/filtersets.py:865 +msgid "Parent Device (ID)" +msgstr "Dispositivo principal (ID)" + +#: dcim/filtersets.py:869 virtualization/filtersets.py:219 +msgid "Platform (ID)" +msgstr "Plataforma (ID)" + +#: dcim/filtersets.py:875 extras/filtersets.py:474 +#: virtualization/filtersets.py:225 +msgid "Platform (slug)" +msgstr "Plataforma (lesma)" + +#: dcim/filtersets.py:911 dcim/filtersets.py:1208 dcim/filtersets.py:1703 +#: dcim/filtersets.py:1875 dcim/filtersets.py:1933 +msgid "Site name (slug)" +msgstr "Nome do site (slug)" + +#: dcim/filtersets.py:926 +msgid "VM cluster (ID)" +msgstr "Cluster de VMs (ID)" + +#: dcim/filtersets.py:932 +msgid "Device model (slug)" +msgstr "Modelo do dispositivo (slug)" + +#: dcim/filtersets.py:943 dcim/forms/bulk_edit.py:421 +msgid "Is full depth" +msgstr "É de profundidade total" + +#: dcim/filtersets.py:947 dcim/forms/common.py:18 dcim/forms/filtersets.py:745 +#: dcim/forms/filtersets.py:1285 dcim/models/device_components.py:519 +#: virtualization/filtersets.py:229 virtualization/filtersets.py:295 +#: virtualization/forms/filtersets.py:168 +#: virtualization/forms/filtersets.py:215 +msgid "MAC address" +msgstr "Endereço MAC" + +#: dcim/filtersets.py:954 dcim/forms/filtersets.py:754 +#: dcim/forms/filtersets.py:841 virtualization/filtersets.py:233 +#: virtualization/forms/filtersets.py:172 +msgid "Has a primary IP" +msgstr "Tem um IP primário" + +#: dcim/filtersets.py:958 +msgid "Has an out-of-band IP" +msgstr "Tem um IP fora de banda" + +#: dcim/filtersets.py:963 +msgid "Virtual chassis (ID)" +msgstr "Chassi virtual (ID)" + +#: dcim/filtersets.py:967 +msgid "Is a virtual chassis member" +msgstr "É membro do chassi virtual" + +#: dcim/filtersets.py:1008 +msgid "OOB IP (ID)" +msgstr "COTOB IP (ID)" + +#: dcim/filtersets.py:1133 +msgid "Module type (model)" +msgstr "Tipo de módulo (modelo)" + +#: dcim/filtersets.py:1139 +msgid "Module Bay (ID)" +msgstr "Compartimento do módulo (ID)" + +#: dcim/filtersets.py:1143 dcim/filtersets.py:1234 ipam/filtersets.py:577 +#: ipam/filtersets.py:807 ipam/filtersets.py:1015 +#: virtualization/filtersets.py:160 vpn/filtersets.py:351 +msgid "Device (ID)" +msgstr "Dispositivo (ID)" + +#: dcim/filtersets.py:1230 +msgid "Rack (name)" +msgstr "Rack (nome)" + +#: dcim/filtersets.py:1240 ipam/filtersets.py:572 ipam/filtersets.py:802 +#: ipam/filtersets.py:1021 vpn/filtersets.py:346 +msgid "Device (name)" +msgstr "Dispositivo (nome)" + +#: dcim/filtersets.py:1251 +msgid "Device type (model)" +msgstr "Tipo de dispositivo (modelo)" + +#: dcim/filtersets.py:1256 dcim/filtersets.py:1279 +msgid "Device role (ID)" +msgstr "Função do dispositivo (ID)" + +#: dcim/filtersets.py:1262 dcim/filtersets.py:1285 +msgid "Device role (slug)" +msgstr "Função do dispositivo (slug)" + +#: dcim/filtersets.py:1267 +msgid "Virtual Chassis (ID)" +msgstr "Chassi virtual (ID)" + +#: dcim/filtersets.py:1273 dcim/forms/filtersets.py:106 +#: dcim/tables/devices.py:235 netbox/navigation/menu.py:67 +#: templates/dcim/device.html:123 templates/dcim/device_edit.html:93 +#: templates/dcim/virtualchassis.html:20 +#: templates/dcim/virtualchassis_add.html:8 +#: templates/dcim/virtualchassis_edit.html:25 +msgid "Virtual Chassis" +msgstr "Chassi virtual" + +#: dcim/filtersets.py:1305 +msgid "Module (ID)" +msgstr "Módulo (ID)" + +#: dcim/filtersets.py:1409 ipam/forms/bulk_import.py:188 +#: vpn/forms/bulk_import.py:303 +msgid "Assigned VLAN" +msgstr "VLAN atribuída" + +#: dcim/filtersets.py:1413 +msgid "Assigned VID" +msgstr "VID atribuído" + +#: dcim/filtersets.py:1418 dcim/forms/bulk_edit.py:1374 +#: dcim/forms/bulk_import.py:828 dcim/forms/filtersets.py:1328 +#: dcim/forms/model_forms.py:1175 dcim/models/device_components.py:712 +#: dcim/tables/devices.py:637 ipam/filtersets.py:282 ipam/filtersets.py:293 +#: ipam/filtersets.py:449 ipam/filtersets.py:550 ipam/filtersets.py:561 +#: ipam/forms/bulk_edit.py:226 ipam/forms/bulk_edit.py:281 +#: ipam/forms/bulk_edit.py:323 ipam/forms/bulk_import.py:156 +#: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 +#: ipam/forms/filtersets.py:66 ipam/forms/filtersets.py:167 +#: ipam/forms/filtersets.py:295 ipam/forms/model_forms.py:59 +#: ipam/forms/model_forms.py:203 ipam/forms/model_forms.py:246 +#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:412 +#: ipam/forms/model_forms.py:426 ipam/forms/model_forms.py:440 +#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 +#: ipam/tables/ip.py:356 ipam/tables/ip.py:445 +#: templates/dcim/interface.html:138 templates/ipam/ipaddress.html:21 +#: templates/ipam/iprange.html:43 templates/ipam/prefix.html:20 +#: templates/ipam/vrf.html:7 templates/ipam/vrf.html:14 +#: templates/virtualization/vminterface.html:50 +#: virtualization/forms/bulk_edit.py:260 +#: virtualization/forms/bulk_import.py:171 +#: virtualization/forms/filtersets.py:220 +#: virtualization/forms/model_forms.py:347 +#: virtualization/models/virtualmachines.py:348 +#: virtualization/tables/virtualmachines.py:123 +msgid "VRF" +msgstr "VRF" + +#: dcim/filtersets.py:1424 ipam/filtersets.py:288 ipam/filtersets.py:299 +#: ipam/filtersets.py:455 ipam/filtersets.py:556 ipam/filtersets.py:567 +msgid "VRF (RD)" +msgstr "VRF (VERMELHO)" + +#: dcim/filtersets.py:1429 ipam/filtersets.py:963 vpn/filtersets.py:314 +msgid "L2VPN (ID)" +msgstr "L2VPN (ID)" + +#: dcim/filtersets.py:1435 dcim/forms/filtersets.py:1333 +#: dcim/tables/devices.py:585 ipam/filtersets.py:969 +#: ipam/forms/filtersets.py:499 ipam/tables/vlans.py:133 +#: templates/dcim/interface.html:94 templates/ipam/vlan.html:69 +#: templates/vpn/l2vpntermination.html:15 +#: virtualization/forms/filtersets.py:225 vpn/forms/bulk_import.py:275 +#: vpn/forms/filtersets.py:242 vpn/forms/model_forms.py:402 +#: vpn/forms/model_forms.py:420 vpn/models/l2vpn.py:63 vpn/tables/l2vpn.py:55 +msgid "L2VPN" +msgstr "L2VPN" + +#: dcim/filtersets.py:1467 +msgid "Virtual Chassis Interfaces for Device" +msgstr "Interfaces de chassi virtual para dispositivo" + +#: dcim/filtersets.py:1472 +msgid "Virtual Chassis Interfaces for Device (ID)" +msgstr "Interfaces de chassi virtual para dispositivo (ID)" + +#: dcim/filtersets.py:1476 +msgid "Kind of interface" +msgstr "Tipo de interface" + +#: dcim/filtersets.py:1481 virtualization/filtersets.py:287 +msgid "Parent interface (ID)" +msgstr "Interface principal (ID)" + +#: dcim/filtersets.py:1486 virtualization/filtersets.py:292 +msgid "Bridged interface (ID)" +msgstr "Interface interligada (ID)" + +#: dcim/filtersets.py:1491 +msgid "LAG interface (ID)" +msgstr "Interface LAG (ID)" + +#: dcim/filtersets.py:1660 +msgid "Master (ID)" +msgstr "Mestre (ID)" + +#: dcim/filtersets.py:1666 +msgid "Master (name)" +msgstr "Mestre (nome)" + +#: dcim/filtersets.py:1708 tenancy/filtersets.py:220 +msgid "Tenant (ID)" +msgstr "Inquilino (ID)" + +#: dcim/filtersets.py:1714 extras/filtersets.py:523 tenancy/filtersets.py:226 +msgid "Tenant (slug)" +msgstr "Inquilino (lesma)" + +#: dcim/filtersets.py:1749 dcim/forms/filtersets.py:990 +msgid "Unterminated" +msgstr "Não terminado" + +#: dcim/filtersets.py:1937 +msgid "Power panel (ID)" +msgstr "Painel de alimentação (ID)" + +#: dcim/forms/bulk_create.py:40 extras/forms/filtersets.py:410 +#: extras/forms/model_forms.py:444 extras/forms/model_forms.py:495 +#: netbox/forms/base.py:71 netbox/forms/mixins.py:79 +#: netbox/tables/columns.py:448 +#: templates/circuits/inc/circuit_termination.html:119 +#: templates/generic/bulk_edit.html:81 templates/inc/panels/tags.html:5 +#: utilities/forms/fields/fields.py:81 +msgid "Tags" +msgstr "Etiquetas" + +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1390 +#: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:468 +#: dcim/forms/object_create.py:196 dcim/forms/object_create.py:352 +#: dcim/tables/devices.py:198 dcim/tables/devices.py:720 +#: dcim/tables/devicetypes.py:242 templates/dcim/device.html:45 +#: templates/dcim/device.html:129 templates/dcim/modulebay.html:35 +#: templates/dcim/virtualchassis.html:59 +#: templates/dcim/virtualchassis_edit.html:56 +msgid "Position" +msgstr "Posição" + +#: dcim/forms/bulk_create.py:114 +msgid "" +"Alphanumeric ranges are supported. (Must match the number of names being " +"created.)" +msgstr "" +"Os intervalos alfanuméricos são suportados. (Deve corresponder ao número de " +"nomes que estão sendo criados.)" + +#: dcim/forms/bulk_edit.py:115 dcim/forms/bulk_import.py:99 +#: dcim/forms/model_forms.py:120 dcim/tables/sites.py:89 +#: ipam/filtersets.py:936 ipam/forms/bulk_edit.py:528 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:509 +#: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 +#: templates/dcim/interface.html:294 templates/dcim/site.html:37 +#: templates/ipam/inc/panels/fhrp_groups.html:10 templates/ipam/vlan.html:30 +#: templates/tenancy/contact.html:22 templates/tenancy/tenant.html:21 +#: templates/users/group.html:6 templates/users/group.html:14 +#: templates/virtualization/cluster.html:32 templates/vpn/tunnel.html:30 +#: templates/wireless/wirelesslan.html:19 tenancy/forms/bulk_edit.py:42 +#: tenancy/forms/bulk_edit.py:93 tenancy/forms/bulk_import.py:40 +#: tenancy/forms/bulk_import.py:81 tenancy/forms/filtersets.py:47 +#: tenancy/forms/filtersets.py:77 tenancy/forms/filtersets.py:96 +#: tenancy/forms/model_forms.py:46 tenancy/forms/model_forms.py:102 +#: tenancy/forms/model_forms.py:124 tenancy/tables/contacts.py:60 +#: tenancy/tables/contacts.py:107 tenancy/tables/tenants.py:42 +#: users/filtersets.py:42 users/filtersets.py:145 users/forms/filtersets.py:32 +#: users/forms/filtersets.py:38 users/forms/filtersets.py:80 +#: virtualization/forms/bulk_edit.py:64 virtualization/forms/bulk_import.py:47 +#: virtualization/forms/filtersets.py:84 +#: virtualization/forms/model_forms.py:69 virtualization/tables/clusters.py:70 +#: vpn/forms/bulk_edit.py:111 vpn/forms/bulk_import.py:157 +#: vpn/forms/filtersets.py:113 vpn/tables/crypto.py:31 +#: wireless/forms/bulk_edit.py:47 wireless/forms/bulk_import.py:36 +#: wireless/forms/filtersets.py:45 wireless/forms/model_forms.py:41 +#: wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Grupo" + +#: dcim/forms/bulk_edit.py:130 +msgid "Contact name" +msgstr "Nome do contato" + +#: dcim/forms/bulk_edit.py:135 +msgid "Contact phone" +msgstr "Telefone de contato" + +#: dcim/forms/bulk_edit.py:141 +msgid "Contact E-mail" +msgstr "E-mail de contato" + +#: dcim/forms/bulk_edit.py:144 dcim/forms/bulk_import.py:122 +#: dcim/forms/model_forms.py:131 +msgid "Time zone" +msgstr "Fuso horário" + +#: dcim/forms/bulk_edit.py:266 dcim/forms/bulk_edit.py:1152 +#: dcim/forms/bulk_edit.py:1539 dcim/forms/bulk_import.py:199 +#: dcim/forms/bulk_import.py:1009 dcim/forms/filtersets.py:299 +#: dcim/forms/filtersets.py:704 dcim/forms/filtersets.py:1417 +#: dcim/forms/model_forms.py:224 dcim/forms/model_forms.py:963 +#: dcim/forms/model_forms.py:1304 dcim/forms/object_import.py:186 +#: dcim/tables/devices.py:202 dcim/tables/devices.py:828 +#: dcim/tables/devices.py:939 dcim/tables/devicetypes.py:300 +#: dcim/tables/racks.py:69 extras/filtersets.py:457 +#: ipam/forms/bulk_edit.py:245 ipam/forms/bulk_edit.py:294 +#: ipam/forms/bulk_edit.py:342 ipam/forms/bulk_edit.py:546 +#: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 +#: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 +#: ipam/forms/filtersets.py:232 ipam/forms/filtersets.py:278 +#: ipam/forms/filtersets.py:346 ipam/forms/filtersets.py:490 +#: ipam/forms/model_forms.py:187 ipam/forms/model_forms.py:222 +#: ipam/forms/model_forms.py:249 ipam/forms/model_forms.py:647 +#: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 +#: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 +#: templates/dcim/device.html:187 +#: templates/dcim/inc/panels/inventory_items.html:12 +#: templates/dcim/interface.html:231 templates/dcim/inventoryitem.html:37 +#: templates/dcim/rack.html:50 templates/ipam/ipaddress.html:44 +#: templates/ipam/iprange.html:53 templates/ipam/prefix.html:78 +#: templates/ipam/role.html:20 templates/ipam/vlan.html:55 +#: templates/virtualization/virtualmachine.html:26 +#: templates/vpn/tunneltermination.html:18 +#: templates/wireless/inc/wirelesslink_interface.html:20 +#: tenancy/forms/bulk_edit.py:141 tenancy/forms/filtersets.py:106 +#: tenancy/forms/model_forms.py:139 tenancy/tables/contacts.py:102 +#: virtualization/forms/bulk_edit.py:144 +#: virtualization/forms/bulk_import.py:106 +#: virtualization/forms/filtersets.py:153 +#: virtualization/forms/model_forms.py:198 +#: virtualization/tables/virtualmachines.py:65 vpn/forms/bulk_edit.py:86 +#: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:84 +#: vpn/forms/model_forms.py:77 vpn/forms/model_forms.py:112 +#: vpn/tables/tunnels.py:78 +msgid "Role" +msgstr "Função" + +#: dcim/forms/bulk_edit.py:273 dcim/forms/bulk_edit.py:605 +#: dcim/forms/bulk_edit.py:654 templates/dcim/device.html:106 +#: templates/dcim/module.html:75 templates/dcim/modulebay.html:69 +#: templates/dcim/rack.html:58 +msgid "Serial Number" +msgstr "Número de série" + +#: dcim/forms/bulk_edit.py:276 dcim/forms/filtersets.py:306 +#: dcim/forms/filtersets.py:740 dcim/forms/filtersets.py:880 +#: dcim/forms/filtersets.py:1430 +msgid "Asset tag" +msgstr "Etiqueta de ativo" + +#: dcim/forms/bulk_edit.py:286 dcim/forms/bulk_import.py:212 +#: dcim/forms/filtersets.py:291 templates/dcim/rack.html:91 +#: templates/dcim/rack_edit.html:48 +msgid "Width" +msgstr "Largura" + +#: dcim/forms/bulk_edit.py:292 +msgid "Height (U)" +msgstr "Altura (U)" + +#: dcim/forms/bulk_edit.py:297 +msgid "Descending units" +msgstr "Unidades descendentes" + +#: dcim/forms/bulk_edit.py:300 +msgid "Outer width" +msgstr "Largura externa" + +#: dcim/forms/bulk_edit.py:305 +msgid "Outer depth" +msgstr "Profundidade externa" + +#: dcim/forms/bulk_edit.py:310 dcim/forms/bulk_import.py:217 +msgid "Outer unit" +msgstr "Unidade externa" + +#: dcim/forms/bulk_edit.py:315 +msgid "Mounting depth" +msgstr "Profundidade de montagem" + +#: dcim/forms/bulk_edit.py:320 dcim/forms/bulk_edit.py:349 +#: dcim/forms/bulk_edit.py:434 dcim/forms/bulk_edit.py:457 +#: dcim/forms/bulk_edit.py:473 dcim/forms/bulk_edit.py:493 +#: dcim/forms/bulk_import.py:324 dcim/forms/bulk_import.py:350 +#: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:311 +#: dcim/forms/filtersets.py:335 dcim/forms/filtersets.py:423 +#: dcim/forms/filtersets.py:529 dcim/forms/filtersets.py:548 +#: dcim/forms/filtersets.py:605 dcim/forms/model_forms.py:337 +#: dcim/tables/devicetypes.py:103 dcim/tables/modules.py:35 +#: dcim/tables/racks.py:103 extras/forms/bulk_edit.py:45 +#: extras/forms/bulk_edit.py:107 extras/forms/bulk_edit.py:157 +#: extras/forms/bulk_edit.py:277 extras/forms/filtersets.py:60 +#: extras/forms/filtersets.py:133 extras/forms/filtersets.py:220 +#: ipam/forms/bulk_edit.py:187 templates/dcim/device.html:329 +#: templates/dcim/devicetype.html:52 templates/dcim/moduletype.html:31 +#: templates/dcim/rack_edit.html:60 templates/dcim/rack_edit.html:63 +#: templates/extras/configcontext.html:18 templates/extras/customlink.html:26 +#: templates/extras/savedfilter.html:34 templates/ipam/role.html:33 +msgid "Weight" +msgstr "Peso" + +#: dcim/forms/bulk_edit.py:325 dcim/forms/filtersets.py:316 +msgid "Max weight" +msgstr "Peso máximo" + +#: dcim/forms/bulk_edit.py:330 dcim/forms/bulk_edit.py:439 +#: dcim/forms/bulk_edit.py:478 dcim/forms/bulk_import.py:223 +#: dcim/forms/bulk_import.py:329 dcim/forms/bulk_import.py:355 +#: dcim/forms/filtersets.py:321 dcim/forms/filtersets.py:533 +#: dcim/forms/filtersets.py:609 +msgid "Weight unit" +msgstr "Unidade de peso" + +#: dcim/forms/bulk_edit.py:344 dcim/forms/bulk_edit.py:800 +#: dcim/forms/bulk_import.py:262 dcim/forms/bulk_import.py:265 +#: dcim/forms/bulk_import.py:490 dcim/forms/bulk_import.py:1286 +#: dcim/forms/bulk_import.py:1290 dcim/forms/filtersets.py:101 +#: dcim/forms/filtersets.py:339 dcim/forms/filtersets.py:353 +#: dcim/forms/filtersets.py:391 dcim/forms/filtersets.py:699 +#: dcim/forms/filtersets.py:948 dcim/forms/filtersets.py:1080 +#: dcim/forms/model_forms.py:241 dcim/forms/model_forms.py:413 +#: dcim/forms/model_forms.py:662 dcim/forms/object_create.py:399 +#: dcim/tables/devices.py:194 dcim/tables/power.py:70 dcim/tables/racks.py:148 +#: ipam/forms/bulk_edit.py:464 ipam/forms/filtersets.py:427 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:30 +#: templates/dcim/inc/cable_termination.html:16 +#: templates/dcim/powerfeed.html:31 templates/dcim/rack.html:14 +#: templates/dcim/rack/base.html:4 templates/dcim/rack_edit.html:8 +#: templates/dcim/rackreservation.html:20 +#: templates/dcim/rackreservation.html:39 +#: virtualization/forms/model_forms.py:116 +msgid "Rack" +msgstr "Rack" + +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:623 +#: dcim/forms/filtersets.py:247 dcim/forms/filtersets.py:332 +#: dcim/forms/filtersets.py:417 dcim/forms/filtersets.py:543 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:853 +#: dcim/forms/model_forms.py:589 dcim/forms/model_forms.py:1374 +#: templates/dcim/device_edit.html:20 +#: templates/dcim/inventoryitem_edit.html:23 +msgid "Hardware" +msgstr "Hardware" + +#: dcim/forms/bulk_edit.py:400 dcim/forms/bulk_edit.py:464 +#: dcim/forms/bulk_edit.py:528 dcim/forms/bulk_edit.py:552 +#: dcim/forms/bulk_edit.py:633 dcim/forms/bulk_edit.py:1157 +#: dcim/forms/bulk_edit.py:1544 dcim/forms/bulk_import.py:311 +#: dcim/forms/bulk_import.py:345 dcim/forms/bulk_import.py:387 +#: dcim/forms/bulk_import.py:423 dcim/forms/bulk_import.py:1015 +#: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 +#: dcim/forms/filtersets.py:631 dcim/forms/filtersets.py:709 +#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/model_forms.py:274 dcim/forms/model_forms.py:288 +#: dcim/forms/model_forms.py:330 dcim/forms/model_forms.py:370 +#: dcim/forms/model_forms.py:968 dcim/forms/model_forms.py:1309 +#: dcim/forms/object_import.py:192 dcim/tables/devices.py:129 +#: dcim/tables/devices.py:205 dcim/tables/devices.py:942 +#: dcim/tables/devicetypes.py:81 dcim/tables/devicetypes.py:304 +#: dcim/tables/modules.py:20 dcim/tables/modules.py:60 +#: templates/dcim/devicetype.html:17 templates/dcim/inventoryitem.html:45 +#: templates/dcim/manufacturer.html:34 templates/dcim/modulebay.html:61 +#: templates/dcim/moduletype.html:15 templates/dcim/platform.html:40 +msgid "Manufacturer" +msgstr "Fabricante" + +#: dcim/forms/bulk_edit.py:405 dcim/forms/bulk_import.py:317 +#: dcim/forms/filtersets.py:434 dcim/forms/model_forms.py:292 +msgid "Default platform" +msgstr "Plataforma padrão" + +#: dcim/forms/bulk_edit.py:410 dcim/forms/bulk_edit.py:469 +#: dcim/forms/filtersets.py:437 dcim/forms/filtersets.py:558 +msgid "Part number" +msgstr "Número da peça" + +#: dcim/forms/bulk_edit.py:414 +msgid "U height" +msgstr "Altura em U" + +#: dcim/forms/bulk_edit.py:426 +msgid "Exclude from utilization" +msgstr "Excluir da utilização" + +#: dcim/forms/bulk_edit.py:429 dcim/forms/bulk_edit.py:598 +#: dcim/forms/bulk_import.py:517 dcim/forms/filtersets.py:446 +#: dcim/forms/filtersets.py:731 templates/dcim/device.html:100 +#: templates/dcim/devicetype.html:68 +msgid "Airflow" +msgstr "Fluxo de ar" + +#: dcim/forms/bulk_edit.py:453 dcim/forms/model_forms.py:303 +#: dcim/tables/devicetypes.py:78 templates/dcim/device.html:90 +#: templates/dcim/devicebay.html:59 templates/dcim/module.html:59 +msgid "Device Type" +msgstr "Tipo de dispositivo" + +#: dcim/forms/bulk_edit.py:492 dcim/forms/model_forms.py:336 +#: dcim/tables/modules.py:17 dcim/tables/modules.py:65 +#: templates/dcim/module.html:63 templates/dcim/modulebay.html:65 +#: templates/dcim/moduletype.html:11 +msgid "Module Type" +msgstr "Tipo de módulo" + +#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:472 +msgid "VM role" +msgstr "Função da VM" + +#: dcim/forms/bulk_edit.py:509 dcim/forms/bulk_edit.py:533 +#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_import.py:368 +#: dcim/forms/bulk_import.py:372 dcim/forms/bulk_import.py:394 +#: dcim/forms/bulk_import.py:398 dcim/forms/bulk_import.py:523 +#: dcim/forms/bulk_import.py:527 dcim/forms/filtersets.py:620 +#: dcim/forms/filtersets.py:636 dcim/forms/filtersets.py:750 +#: dcim/forms/model_forms.py:349 dcim/forms/model_forms.py:375 +#: dcim/forms/model_forms.py:477 virtualization/forms/bulk_import.py:132 +#: virtualization/forms/bulk_import.py:133 +#: virtualization/forms/filtersets.py:180 +#: virtualization/forms/model_forms.py:218 +msgid "Config template" +msgstr "Modelo de configuração" + +#: dcim/forms/bulk_edit.py:557 dcim/forms/bulk_edit.py:951 +#: dcim/forms/bulk_import.py:429 dcim/forms/filtersets.py:111 +#: dcim/forms/model_forms.py:435 dcim/forms/model_forms.py:776 +#: dcim/forms/model_forms.py:790 extras/filtersets.py:452 +msgid "Device type" +msgstr "Tipo de dispositivo" + +#: dcim/forms/bulk_edit.py:565 dcim/forms/bulk_import.py:410 +#: dcim/forms/filtersets.py:116 dcim/forms/model_forms.py:440 +msgid "Device role" +msgstr "Função do dispositivo" + +#: dcim/forms/bulk_edit.py:588 dcim/forms/bulk_import.py:435 +#: dcim/forms/filtersets.py:723 dcim/forms/model_forms.py:385 +#: dcim/forms/model_forms.py:444 extras/filtersets.py:468 +#: templates/dcim/device.html:191 templates/dcim/platform.html:27 +#: templates/virtualization/virtualmachine.html:30 +#: virtualization/forms/bulk_edit.py:159 +#: virtualization/forms/bulk_import.py:122 +#: virtualization/forms/filtersets.py:164 +#: virtualization/forms/model_forms.py:206 +msgid "Platform" +msgstr "Plataforma" + +#: dcim/forms/bulk_edit.py:621 dcim/forms/bulk_edit.py:1171 +#: dcim/forms/bulk_edit.py:1534 dcim/forms/bulk_edit.py:1580 +#: dcim/forms/bulk_import.py:578 dcim/forms/bulk_import.py:640 +#: dcim/forms/bulk_import.py:666 dcim/forms/bulk_import.py:692 +#: dcim/forms/bulk_import.py:712 dcim/forms/bulk_import.py:765 +#: dcim/forms/bulk_import.py:879 dcim/forms/bulk_import.py:927 +#: dcim/forms/bulk_import.py:944 dcim/forms/bulk_import.py:956 +#: dcim/forms/bulk_import.py:1004 dcim/forms/bulk_import.py:1350 +#: dcim/forms/connections.py:23 dcim/forms/filtersets.py:128 +#: dcim/forms/filtersets.py:831 dcim/forms/filtersets.py:964 +#: dcim/forms/filtersets.py:1154 dcim/forms/filtersets.py:1176 +#: dcim/forms/filtersets.py:1198 dcim/forms/filtersets.py:1215 +#: dcim/forms/filtersets.py:1235 dcim/forms/filtersets.py:1343 +#: dcim/forms/filtersets.py:1365 dcim/forms/filtersets.py:1386 +#: dcim/forms/filtersets.py:1401 dcim/forms/filtersets.py:1412 +#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 +#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:555 +#: dcim/forms/model_forms.py:753 dcim/forms/model_forms.py:1004 +#: dcim/forms/model_forms.py:1453 dcim/forms/object_create.py:256 +#: dcim/tables/connections.py:22 dcim/tables/connections.py:41 +#: dcim/tables/connections.py:60 dcim/tables/devices.py:314 +#: dcim/tables/devices.py:374 dcim/tables/devices.py:418 +#: dcim/tables/devices.py:463 dcim/tables/devices.py:517 +#: dcim/tables/devices.py:609 dcim/tables/devices.py:710 +#: dcim/tables/devices.py:770 dcim/tables/devices.py:820 +#: dcim/tables/devices.py:880 dcim/tables/devices.py:932 +#: dcim/tables/devices.py:1058 dcim/tables/modules.py:52 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_import.py:303 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:532 +#: ipam/forms/model_forms.py:685 ipam/tables/vlans.py:176 +#: templates/dcim/consoleport.html:23 templates/dcim/consoleserverport.html:23 +#: templates/dcim/device.html:14 templates/dcim/device.html:128 +#: templates/dcim/device_edit.html:10 templates/dcim/devicebay.html:23 +#: templates/dcim/devicebay.html:55 templates/dcim/frontport.html:23 +#: templates/dcim/interface.html:31 templates/dcim/interface.html:167 +#: templates/dcim/inventoryitem.html:21 templates/dcim/module.html:55 +#: templates/dcim/modulebay.html:21 templates/dcim/poweroutlet.html:23 +#: templates/dcim/powerport.html:23 templates/dcim/rearport.html:23 +#: templates/dcim/virtualchassis.html:58 +#: templates/dcim/virtualchassis_edit.html:52 +#: templates/dcim/virtualdevicecontext.html:25 +#: templates/ipam/ipaddress_edit.html:42 templates/ipam/service_create.html:17 +#: templates/ipam/service_edit.html:16 +#: templates/virtualization/virtualmachine.html:115 +#: templates/vpn/l2vpntermination_edit.html:22 +#: templates/vpn/tunneltermination.html:24 +#: templates/wireless/inc/wirelesslink_interface.html:6 +#: virtualization/filtersets.py:166 virtualization/forms/bulk_edit.py:136 +#: virtualization/forms/bulk_import.py:99 +#: virtualization/forms/filtersets.py:124 +#: virtualization/forms/model_forms.py:188 +#: virtualization/tables/virtualmachines.py:61 vpn/choices.py:44 +#: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:278 +#: vpn/forms/filtersets.py:271 vpn/forms/model_forms.py:89 +#: vpn/forms/model_forms.py:124 vpn/forms/model_forms.py:237 +#: wireless/forms/model_forms.py:100 wireless/forms/model_forms.py:140 +#: wireless/tables/wirelesslan.py:75 +msgid "Device" +msgstr "Dispositivo" + +#: dcim/forms/bulk_edit.py:624 netbox/navigation/menu.py:441 +#: templates/extras/dashboard/widget_config.html:7 +msgid "Configuration" +msgstr "Configuração" + +#: dcim/forms/bulk_edit.py:638 dcim/forms/bulk_import.py:590 +#: dcim/forms/model_forms.py:569 dcim/forms/model_forms.py:795 +msgid "Module type" +msgstr "Tipo de módulo" + +#: dcim/forms/bulk_edit.py:689 dcim/forms/bulk_edit.py:874 +#: dcim/forms/bulk_edit.py:893 dcim/forms/bulk_edit.py:916 +#: dcim/forms/bulk_edit.py:958 dcim/forms/bulk_edit.py:1002 +#: dcim/forms/bulk_edit.py:1053 dcim/forms/bulk_edit.py:1080 +#: dcim/forms/bulk_edit.py:1107 dcim/forms/bulk_edit.py:1125 +#: dcim/forms/bulk_edit.py:1143 dcim/forms/filtersets.py:64 +#: dcim/forms/object_create.py:45 templates/dcim/cable.html:33 +#: templates/dcim/consoleport.html:35 templates/dcim/consoleserverport.html:35 +#: templates/dcim/devicebay.html:31 templates/dcim/frontport.html:35 +#: templates/dcim/inc/panels/inventory_items.html:11 +#: templates/dcim/interface.html:43 templates/dcim/inventoryitem.html:33 +#: templates/dcim/modulebay.html:31 templates/dcim/poweroutlet.html:35 +#: templates/dcim/powerport.html:35 templates/dcim/rearport.html:35 +#: templates/extras/customfield.html:27 templates/generic/bulk_import.html:155 +msgid "Label" +msgstr "Rótulo" + +#: dcim/forms/bulk_edit.py:698 dcim/forms/filtersets.py:981 +#: templates/dcim/cable.html:51 +msgid "Length" +msgstr "Comprimento" + +#: dcim/forms/bulk_edit.py:703 dcim/forms/bulk_import.py:1158 +#: dcim/forms/bulk_import.py:1161 dcim/forms/filtersets.py:985 +msgid "Length unit" +msgstr "Unidade de comprimento" + +#: dcim/forms/bulk_edit.py:727 templates/dcim/virtualchassis.html:24 +msgid "Domain" +msgstr "Domínio" + +#: dcim/forms/bulk_edit.py:795 dcim/forms/bulk_import.py:1273 +#: dcim/forms/filtersets.py:1071 dcim/forms/model_forms.py:657 +msgid "Power panel" +msgstr "Painel de alimentação" + +#: dcim/forms/bulk_edit.py:817 dcim/forms/bulk_import.py:1309 +#: dcim/forms/filtersets.py:1093 templates/dcim/powerfeed.html:90 +msgid "Supply" +msgstr "Fornecimento" + +#: dcim/forms/bulk_edit.py:823 dcim/forms/bulk_import.py:1314 +#: dcim/forms/filtersets.py:1098 templates/dcim/powerfeed.html:102 +msgid "Phase" +msgstr "Estágio" + +#: dcim/forms/bulk_edit.py:829 dcim/forms/filtersets.py:1103 +#: templates/dcim/powerfeed.html:94 +msgid "Voltage" +msgstr "Voltagem" + +#: dcim/forms/bulk_edit.py:833 dcim/forms/filtersets.py:1107 +#: templates/dcim/powerfeed.html:98 +msgid "Amperage" +msgstr "Amperagem" + +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1111 +msgid "Max utilization" +msgstr "Utilização máxima" + +#: dcim/forms/bulk_edit.py:841 dcim/forms/bulk_edit.py:1200 +#: dcim/forms/bulk_edit.py:1217 dcim/forms/bulk_edit.py:1234 +#: dcim/forms/bulk_edit.py:1252 dcim/forms/bulk_edit.py:1340 +#: dcim/forms/bulk_edit.py:1478 dcim/forms/bulk_edit.py:1495 +msgid "Mark connected" +msgstr "Marcar conectado" + +#: dcim/forms/bulk_edit.py:926 +msgid "Maximum draw" +msgstr "Sorteio máximo" + +#: dcim/forms/bulk_edit.py:929 dcim/models/device_component_templates.py:256 +#: dcim/models/device_components.py:357 +msgid "Maximum power draw (watts)" +msgstr "Consumo máximo de energia (watts)" + +#: dcim/forms/bulk_edit.py:932 +msgid "Allocated draw" +msgstr "Sorteio alocado" + +#: dcim/forms/bulk_edit.py:935 dcim/models/device_component_templates.py:263 +#: dcim/models/device_components.py:364 +msgid "Allocated power draw (watts)" +msgstr "Consumo de energia alocado (watts)" + +#: dcim/forms/bulk_edit.py:968 dcim/forms/bulk_import.py:723 +#: dcim/forms/model_forms.py:848 dcim/forms/model_forms.py:1076 +#: dcim/forms/model_forms.py:1361 dcim/forms/object_import.py:60 +msgid "Power port" +msgstr "Porta de alimentação" + +#: dcim/forms/bulk_edit.py:973 +msgid "Feed leg" +msgstr "Perna de alimentação" + +#: dcim/forms/bulk_edit.py:1019 dcim/forms/bulk_edit.py:1325 +msgid "Management only" +msgstr "Somente gerenciamento" + +#: dcim/forms/bulk_edit.py:1029 dcim/forms/bulk_edit.py:1331 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1294 +#: dcim/forms/object_import.py:95 +#: dcim/models/device_component_templates.py:411 +#: dcim/models/device_components.py:671 +msgid "PoE mode" +msgstr "Modo PoE" + +#: dcim/forms/bulk_edit.py:1035 dcim/forms/bulk_edit.py:1337 +#: dcim/forms/bulk_import.py:819 dcim/forms/filtersets.py:1299 +#: dcim/forms/object_import.py:100 +#: dcim/models/device_component_templates.py:417 +#: dcim/models/device_components.py:677 +msgid "PoE type" +msgstr "Tipo PoE" + +#: dcim/forms/bulk_edit.py:1041 dcim/forms/filtersets.py:1304 +#: dcim/forms/object_import.py:105 +msgid "Wireless role" +msgstr "Função sem fio" + +#: dcim/forms/bulk_edit.py:1178 dcim/forms/model_forms.py:588 +#: dcim/forms/model_forms.py:1019 dcim/tables/devices.py:337 +#: templates/dcim/consoleport.html:27 templates/dcim/consoleserverport.html:27 +#: templates/dcim/frontport.html:27 templates/dcim/interface.html:35 +#: templates/dcim/module.html:51 templates/dcim/modulebay.html:57 +#: templates/dcim/poweroutlet.html:27 templates/dcim/powerport.html:27 +#: templates/dcim/rearport.html:27 +msgid "Module" +msgstr "Módulo" + +#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:680 +#: templates/dcim/interface.html:113 +msgid "LAG" +msgstr "DEFASAGEM" + +#: dcim/forms/bulk_edit.py:1310 dcim/forms/model_forms.py:1103 +msgid "Virtual device contexts" +msgstr "Contextos de dispositivos virtuais" + +#: dcim/forms/bulk_edit.py:1316 dcim/forms/bulk_import.py:651 +#: dcim/forms/bulk_import.py:677 dcim/forms/filtersets.py:1163 +#: dcim/forms/filtersets.py:1185 dcim/forms/filtersets.py:1258 +#: dcim/tables/devices.py:621 +#: templates/circuits/inc/circuit_termination.html:94 +#: templates/dcim/consoleport.html:43 templates/dcim/consoleserverport.html:43 +msgid "Speed" +msgstr "Rapidez" + +#: dcim/forms/bulk_edit.py:1345 dcim/forms/bulk_import.py:822 +#: templates/vpn/ikepolicy.html:26 templates/vpn/ipsecprofile.html:22 +#: templates/vpn/ipsecprofile.html:51 virtualization/forms/bulk_edit.py:232 +#: virtualization/forms/bulk_import.py:165 vpn/forms/bulk_edit.py:145 +#: vpn/forms/bulk_edit.py:233 vpn/forms/bulk_import.py:175 +#: vpn/forms/bulk_import.py:229 vpn/forms/filtersets.py:132 +#: vpn/forms/filtersets.py:175 vpn/forms/filtersets.py:189 +#: vpn/tables/crypto.py:64 vpn/tables/crypto.py:162 +msgid "Mode" +msgstr "Modo" + +#: dcim/forms/bulk_edit.py:1353 dcim/forms/model_forms.py:1152 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:479 +#: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:239 +#: virtualization/forms/model_forms.py:324 +msgid "VLAN group" +msgstr "Grupo de VLAN" + +#: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1157 +#: dcim/tables/devices.py:594 virtualization/forms/bulk_edit.py:247 +#: virtualization/forms/model_forms.py:329 +msgid "Untagged VLAN" +msgstr "VLAN sem etiqueta" + +#: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1166 +#: dcim/tables/devices.py:600 virtualization/forms/bulk_edit.py:255 +#: virtualization/forms/model_forms.py:338 +msgid "Tagged VLANs" +msgstr "VLANs marcadas" + +#: dcim/forms/bulk_edit.py:1379 dcim/forms/model_forms.py:1139 +msgid "Wireless LAN group" +msgstr "Grupo de LAN sem fio" + +#: dcim/forms/bulk_edit.py:1384 dcim/forms/model_forms.py:1144 +#: dcim/tables/devices.py:630 netbox/navigation/menu.py:134 +#: templates/dcim/interface.html:289 wireless/tables/wirelesslan.py:24 +msgid "Wireless LANs" +msgstr "LANs sem fio" + +#: dcim/forms/bulk_edit.py:1393 dcim/forms/filtersets.py:1231 +#: dcim/forms/model_forms.py:1185 ipam/forms/bulk_edit.py:270 +#: ipam/forms/bulk_edit.py:361 ipam/forms/filtersets.py:166 +#: templates/dcim/interface.html:126 templates/ipam/prefix.html:96 +#: virtualization/forms/model_forms.py:352 +msgid "Addressing" +msgstr "Endereçando" + +#: dcim/forms/bulk_edit.py:1394 dcim/forms/filtersets.py:651 +#: dcim/forms/model_forms.py:1186 virtualization/forms/model_forms.py:353 +msgid "Operation" +msgstr "Operação" + +#: dcim/forms/bulk_edit.py:1395 dcim/forms/filtersets.py:1232 +#: dcim/forms/model_forms.py:880 dcim/forms/model_forms.py:1188 +msgid "PoE" +msgstr "PoE" + +#: dcim/forms/bulk_edit.py:1396 dcim/forms/model_forms.py:1187 +#: templates/dcim/interface.html:101 virtualization/forms/bulk_edit.py:266 +#: virtualization/forms/model_forms.py:354 +msgid "Related Interfaces" +msgstr "Interfaces relacionadas" + +#: dcim/forms/bulk_edit.py:1397 dcim/forms/model_forms.py:1189 +#: virtualization/forms/bulk_edit.py:267 +#: virtualization/forms/model_forms.py:355 +msgid "802.1Q Switching" +msgstr "Comutação 802.1Q" + +#: dcim/forms/bulk_edit.py:1458 dcim/forms/bulk_edit.py:1460 +msgid "Interface mode must be specified to assign VLANs" +msgstr "O modo de interface deve ser especificado para atribuir VLANs" + +#: dcim/forms/bulk_edit.py:1465 dcim/forms/common.py:50 +msgid "An access interface cannot have tagged VLANs assigned." +msgstr "Uma interface de acesso não pode ter VLANs marcadas atribuídas." + +#: dcim/forms/bulk_import.py:63 +msgid "Name of parent region" +msgstr "Nome da região principal" + +#: dcim/forms/bulk_import.py:77 +msgid "Name of parent site group" +msgstr "Nome do grupo de sites principal" + +#: dcim/forms/bulk_import.py:96 +msgid "Assigned region" +msgstr "Região atribuída" + +#: dcim/forms/bulk_import.py:103 tenancy/forms/bulk_import.py:44 +#: tenancy/forms/bulk_import.py:85 wireless/forms/bulk_import.py:40 +msgid "Assigned group" +msgstr "Grupo atribuído" + +#: dcim/forms/bulk_import.py:122 +msgid "available options" +msgstr "opções disponíveis" + +#: dcim/forms/bulk_import.py:133 dcim/forms/bulk_import.py:480 +#: dcim/forms/bulk_import.py:1270 ipam/forms/bulk_import.py:174 +#: ipam/forms/bulk_import.py:441 virtualization/forms/bulk_import.py:63 +#: virtualization/forms/bulk_import.py:89 +msgid "Assigned site" +msgstr "Site atribuído" + +#: dcim/forms/bulk_import.py:140 +msgid "Parent location" +msgstr "Localização dos pais" + +#: dcim/forms/bulk_import.py:142 +msgid "Location not found." +msgstr "Localização não encontrada." + +#: dcim/forms/bulk_import.py:191 +msgid "Name of assigned tenant" +msgstr "Nome do inquilino designado" + +#: dcim/forms/bulk_import.py:203 +msgid "Name of assigned role" +msgstr "Nome da função atribuída" + +#: dcim/forms/bulk_import.py:209 +msgid "Rack type" +msgstr "Tipo de rack" + +#: dcim/forms/bulk_import.py:214 +msgid "Rail-to-rail width (in inches)" +msgstr "Largura de trilho a trilho (em polegadas)" + +#: dcim/forms/bulk_import.py:220 +msgid "Unit for outer dimensions" +msgstr "Unidade para dimensões externas" + +#: dcim/forms/bulk_import.py:226 +msgid "Unit for rack weights" +msgstr "Unidade para pesos de rack" + +#: dcim/forms/bulk_import.py:252 +msgid "Parent site" +msgstr "Site principal" + +#: dcim/forms/bulk_import.py:259 dcim/forms/bulk_import.py:1283 +msgid "Rack's location (if any)" +msgstr "Localização do rack (se houver)" + +#: dcim/forms/bulk_import.py:268 dcim/forms/model_forms.py:246 +#: dcim/tables/racks.py:153 templates/dcim/rackreservation.html:12 +#: templates/dcim/rackreservation.html:52 +msgid "Units" +msgstr "Unidades" + +#: dcim/forms/bulk_import.py:271 +msgid "Comma-separated list of individual unit numbers" +msgstr "Lista separada por vírgula de números de unidades individuais" + +#: dcim/forms/bulk_import.py:314 +msgid "The manufacturer which produces this device type" +msgstr "O fabricante que produz esse tipo de dispositivo" + +#: dcim/forms/bulk_import.py:321 +msgid "The default platform for devices of this type (optional)" +msgstr "A plataforma padrão para dispositivos desse tipo (opcional)" + +#: dcim/forms/bulk_import.py:326 +msgid "Device weight" +msgstr "Peso do dispositivo" + +#: dcim/forms/bulk_import.py:332 +msgid "Unit for device weight" +msgstr "Unidade para peso do dispositivo" + +#: dcim/forms/bulk_import.py:352 +msgid "Module weight" +msgstr "Peso do módulo" + +#: dcim/forms/bulk_import.py:358 +msgid "Unit for module weight" +msgstr "Unidade para peso do módulo" + +#: dcim/forms/bulk_import.py:391 +msgid "Limit platform assignments to this manufacturer" +msgstr "Limitar as atribuições de plataforma a este fabricante" + +#: dcim/forms/bulk_import.py:413 tenancy/forms/bulk_import.py:106 +msgid "Assigned role" +msgstr "Função atribuída" + +#: dcim/forms/bulk_import.py:426 +msgid "Device type manufacturer" +msgstr "Fabricante do tipo de dispositivo" + +#: dcim/forms/bulk_import.py:432 +msgid "Device type model" +msgstr "Tipo de dispositivo: modelo" + +#: dcim/forms/bulk_import.py:439 virtualization/forms/bulk_import.py:126 +msgid "Assigned platform" +msgstr "Plataforma atribuída" + +#: dcim/forms/bulk_import.py:447 dcim/forms/bulk_import.py:451 +#: dcim/forms/model_forms.py:461 +msgid "Virtual chassis" +msgstr "Chassi virtual" + +#: dcim/forms/bulk_import.py:454 dcim/forms/model_forms.py:450 +#: dcim/tables/devices.py:231 extras/filtersets.py:501 +#: extras/forms/filtersets.py:330 ipam/forms/bulk_edit.py:478 +#: ipam/forms/model_forms.py:588 templates/dcim/device.html:239 +#: templates/virtualization/cluster.html:11 +#: templates/virtualization/virtualmachine.html:92 +#: templates/virtualization/virtualmachine.html:102 +#: virtualization/filtersets.py:156 virtualization/filtersets.py:271 +#: virtualization/forms/bulk_edit.py:128 +#: virtualization/forms/bulk_import.py:92 +#: virtualization/forms/filtersets.py:98 +#: virtualization/forms/filtersets.py:119 +#: virtualization/forms/filtersets.py:196 +#: virtualization/forms/model_forms.py:82 +#: virtualization/forms/model_forms.py:179 +#: virtualization/tables/virtualmachines.py:57 +msgid "Cluster" +msgstr "Cluster" + +#: dcim/forms/bulk_import.py:458 +msgid "Virtualization cluster" +msgstr "Cluster de virtualização" + +#: dcim/forms/bulk_import.py:487 +msgid "Assigned location (if any)" +msgstr "Local atribuído (se houver)" + +#: dcim/forms/bulk_import.py:494 +msgid "Assigned rack (if any)" +msgstr "Rack atribuído (se houver)" + +#: dcim/forms/bulk_import.py:497 +msgid "Face" +msgstr "Rosto" + +#: dcim/forms/bulk_import.py:500 +msgid "Mounted rack face" +msgstr "Face de rack montada" + +#: dcim/forms/bulk_import.py:507 +msgid "Parent device (for child devices)" +msgstr "Dispositivo principal (para dispositivos infantis)" + +#: dcim/forms/bulk_import.py:510 +msgid "Device bay" +msgstr "Compartimento de dispositivos" + +#: dcim/forms/bulk_import.py:514 +msgid "Device bay in which this device is installed (for child devices)" +msgstr "" +"Compartimento de dispositivos no qual este dispositivo está instalado (para " +"dispositivos infantis)" + +#: dcim/forms/bulk_import.py:520 +msgid "Airflow direction" +msgstr "Direção do fluxo de ar" + +#: dcim/forms/bulk_import.py:581 +msgid "The device in which this module is installed" +msgstr "O dispositivo no qual este módulo está instalado" + +#: dcim/forms/bulk_import.py:584 dcim/forms/model_forms.py:562 +msgid "Module bay" +msgstr "Compartimento do módulo" + +#: dcim/forms/bulk_import.py:587 +msgid "The module bay in which this module is installed" +msgstr "O compartimento do módulo no qual este módulo está instalado" + +#: dcim/forms/bulk_import.py:593 +msgid "The type of module" +msgstr "O tipo de módulo" + +#: dcim/forms/bulk_import.py:601 dcim/forms/model_forms.py:575 +msgid "Replicate components" +msgstr "Replicar componentes" + +#: dcim/forms/bulk_import.py:603 +msgid "" +"Automatically populate components associated with this module type (enabled " +"by default)" +msgstr "" +"Preencher automaticamente os componentes associados a esse tipo de módulo " +"(ativado por padrão)" + +#: dcim/forms/bulk_import.py:606 dcim/forms/model_forms.py:581 +msgid "Adopt components" +msgstr "Adote componentes" + +#: dcim/forms/bulk_import.py:608 dcim/forms/model_forms.py:584 +msgid "Adopt already existing components" +msgstr "Adote componentes já existentes" + +#: dcim/forms/bulk_import.py:648 dcim/forms/bulk_import.py:674 +#: dcim/forms/bulk_import.py:700 +msgid "Port type" +msgstr "Tipo de porta" + +#: dcim/forms/bulk_import.py:656 dcim/forms/bulk_import.py:682 +msgid "Port speed in bps" +msgstr "Velocidade da porta em bps" + +#: dcim/forms/bulk_import.py:720 +msgid "Outlet type" +msgstr "Tipo de tomada" + +#: dcim/forms/bulk_import.py:727 +msgid "Local power port which feeds this outlet" +msgstr "Porta de alimentação local que alimenta esta tomada" + +#: dcim/forms/bulk_import.py:730 +msgid "Feed lag" +msgstr "Atraso de alimentação" + +#: dcim/forms/bulk_import.py:733 +msgid "Electrical phase (for three-phase circuits)" +msgstr "Fase elétrica (para circuitos trifásicos)" + +#: dcim/forms/bulk_import.py:774 dcim/forms/model_forms.py:1114 +#: virtualization/forms/bulk_import.py:155 +#: virtualization/forms/model_forms.py:308 +msgid "Parent interface" +msgstr "Interface principal" + +#: dcim/forms/bulk_import.py:781 dcim/forms/model_forms.py:1122 +#: virtualization/forms/bulk_import.py:162 +#: virtualization/forms/model_forms.py:316 +msgid "Bridged interface" +msgstr "Interface interligada" + +#: dcim/forms/bulk_import.py:784 +msgid "Lag" +msgstr "Atraso" + +#: dcim/forms/bulk_import.py:788 +msgid "Parent LAG interface" +msgstr "Interface LAG principal" + +#: dcim/forms/bulk_import.py:791 +msgid "Vdcs" +msgstr "Vdcs" + +#: dcim/forms/bulk_import.py:796 +msgid "VDC names separated by commas, encased with double quotes. Example:" +msgstr "Nomes VDC separados por vírgulas, entre aspas duplas. Exemplo:" + +#: dcim/forms/bulk_import.py:802 +msgid "Physical medium" +msgstr "Meio físico" + +#: dcim/forms/bulk_import.py:805 dcim/forms/filtersets.py:1265 +msgid "Duplex" +msgstr "Duplex" + +#: dcim/forms/bulk_import.py:810 +msgid "Poe mode" +msgstr "Modo Poe" + +#: dcim/forms/bulk_import.py:816 +msgid "Poe type" +msgstr "Tipo de poe" + +#: dcim/forms/bulk_import.py:825 virtualization/forms/bulk_import.py:168 +msgid "IEEE 802.1Q operational mode (for L2 interfaces)" +msgstr "Modo operacional IEEE 802.1Q (para interfaces L2)" + +#: dcim/forms/bulk_import.py:832 ipam/forms/bulk_import.py:160 +#: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:322 virtualization/forms/bulk_import.py:175 +msgid "Assigned VRF" +msgstr "VRF atribuído" + +#: dcim/forms/bulk_import.py:835 +msgid "Rf role" +msgstr "Função Rf" + +#: dcim/forms/bulk_import.py:838 +msgid "Wireless role (AP/station)" +msgstr "Função sem fio (AP/estação)" + +#: dcim/forms/bulk_import.py:884 dcim/forms/model_forms.py:893 +#: dcim/forms/model_forms.py:1369 dcim/forms/object_import.py:122 +msgid "Rear port" +msgstr "Porta traseira" + +#: dcim/forms/bulk_import.py:887 +msgid "Corresponding rear port" +msgstr "Porta traseira correspondente" + +#: dcim/forms/bulk_import.py:892 dcim/forms/bulk_import.py:933 +#: dcim/forms/bulk_import.py:1148 +msgid "Physical medium classification" +msgstr "Classificação física do meio" + +#: dcim/forms/bulk_import.py:961 dcim/tables/devices.py:841 +msgid "Installed device" +msgstr "Dispositivo instalado" + +#: dcim/forms/bulk_import.py:965 +msgid "Child device installed within this bay" +msgstr "Dispositivo infantil instalado dentro deste compartimento" + +#: dcim/forms/bulk_import.py:967 +msgid "Child device not found." +msgstr "Dispositivo infantil não encontrado." + +#: dcim/forms/bulk_import.py:1025 +msgid "Parent inventory item" +msgstr "Item do inventário principal" + +#: dcim/forms/bulk_import.py:1028 +msgid "Component type" +msgstr "Tipo de componente" + +#: dcim/forms/bulk_import.py:1032 +msgid "Component Type" +msgstr "Tipo de componente" + +#: dcim/forms/bulk_import.py:1035 +msgid "Compnent name" +msgstr "Nome do componente" + +#: dcim/forms/bulk_import.py:1037 +msgid "Component Name" +msgstr "Nome do componente" + +#: dcim/forms/bulk_import.py:1103 +msgid "Side A device" +msgstr "Dispositivo do lado A" + +#: dcim/forms/bulk_import.py:1106 dcim/forms/bulk_import.py:1124 +msgid "Device name" +msgstr "Nome do dispositivo" + +#: dcim/forms/bulk_import.py:1109 +msgid "Side A type" +msgstr "Tipo de lado A" + +#: dcim/forms/bulk_import.py:1112 dcim/forms/bulk_import.py:1130 +msgid "Termination type" +msgstr "Tipo de rescisão" + +#: dcim/forms/bulk_import.py:1115 +msgid "Side A name" +msgstr "Nome do lado A" + +#: dcim/forms/bulk_import.py:1116 dcim/forms/bulk_import.py:1134 +msgid "Termination name" +msgstr "Nome da rescisão" + +#: dcim/forms/bulk_import.py:1121 +msgid "Side B device" +msgstr "Dispositivo do lado B" + +#: dcim/forms/bulk_import.py:1127 +msgid "Side B type" +msgstr "Tipo de lado B" + +#: dcim/forms/bulk_import.py:1133 +msgid "Side B name" +msgstr "Nome do lado B" + +#: dcim/forms/bulk_import.py:1142 wireless/forms/bulk_import.py:86 +msgid "Connection status" +msgstr "Status da conexão" + +#: dcim/forms/bulk_import.py:1221 dcim/forms/model_forms.py:689 +#: dcim/tables/devices.py:1028 templates/dcim/device.html:130 +#: templates/dcim/virtualchassis.html:28 templates/dcim/virtualchassis.html:60 +msgid "Master" +msgstr "Dominar" + +#: dcim/forms/bulk_import.py:1225 +msgid "Master device" +msgstr "Dispositivo principal" + +#: dcim/forms/bulk_import.py:1242 +msgid "Name of parent site" +msgstr "Nome do site principal" + +#: dcim/forms/bulk_import.py:1276 +msgid "Upstream power panel" +msgstr "Painel de alimentação upstream" + +#: dcim/forms/bulk_import.py:1306 +msgid "Primary or redundant" +msgstr "Primário ou redundante" + +#: dcim/forms/bulk_import.py:1311 +msgid "Supply type (AC/DC)" +msgstr "Tipo de alimentação (AC/DC)" + +#: dcim/forms/bulk_import.py:1316 +msgid "Single or three-phase" +msgstr "Monofásico ou trifásico" + +#: dcim/forms/common.py:24 dcim/models/device_components.py:528 +#: templates/dcim/interface.html:58 +#: templates/virtualization/vminterface.html:58 +#: virtualization/forms/bulk_edit.py:224 +msgid "MTU" +msgstr "MTU" + +#: dcim/forms/common.py:65 +#, python-brace-format +msgid "" +"The tagged VLANs ({vlans}) must belong to the same site as the interface's " +"parent device/VM, or they must be global" +msgstr "" +"As VLANs marcadas ({vlans}) devem pertencer ao mesmo site do dispositivo/VM " +"pai da interface ou devem ser globais" + +#: dcim/forms/common.py:110 +msgid "" +"Cannot install module with placeholder values in a module bay with no " +"position defined." +msgstr "" +"Não é possível instalar o módulo com valores de espaço reservado em um " +"compartimento de módulo sem posição definida." + +#: dcim/forms/common.py:119 +#, python-brace-format +msgid "Cannot adopt {model} {name} as it already belongs to a module" +msgstr "Não pode adotar {model} {name} pois já pertence a um módulo" + +#: dcim/forms/common.py:128 +#, python-brace-format +msgid "A {model} named {name} already exists" +msgstr "UMA {model} nomeado {name} já existe" + +#: dcim/forms/connections.py:45 dcim/tables/power.py:66 +#: templates/dcim/inc/cable_termination.html:37 +#: templates/dcim/powerfeed.html:27 templates/dcim/powerpanel.html:19 +#: templates/dcim/trace/powerpanel.html:4 +msgid "Power Panel" +msgstr "Painel de alimentação" + +#: dcim/forms/connections.py:54 dcim/forms/model_forms.py:670 +#: templates/dcim/powerfeed.html:22 templates/dcim/powerport.html:84 +msgid "Power Feed" +msgstr "Alimentação de energia" + +#: dcim/forms/connections.py:74 +msgid "Side" +msgstr "Lado" + +#: dcim/forms/filtersets.py:141 +msgid "Parent region" +msgstr "Região principal" + +#: dcim/forms/filtersets.py:155 tenancy/forms/bulk_import.py:28 +#: tenancy/forms/bulk_import.py:62 tenancy/forms/filtersets.py:32 +#: tenancy/forms/filtersets.py:61 wireless/forms/bulk_import.py:25 +#: wireless/forms/filtersets.py:24 +msgid "Parent group" +msgstr "Grupo de pais" + +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:331 +msgid "Function" +msgstr "Função" + +#: dcim/forms/filtersets.py:418 dcim/forms/model_forms.py:308 +#: templates/inc/panels/image_attachments.html:5 +msgid "Images" +msgstr "Imagens" + +#: dcim/forms/filtersets.py:419 dcim/forms/filtersets.py:544 +#: dcim/forms/filtersets.py:655 +msgid "Components" +msgstr "Componentes" + +#: dcim/forms/filtersets.py:441 +msgid "Subdevice role" +msgstr "Função do subdispositivo" + +#: dcim/forms/filtersets.py:717 +msgid "Model" +msgstr "modelo" + +#: dcim/forms/filtersets.py:768 +msgid "Virtual chassis member" +msgstr "Membro do chassi virtual" + +#: dcim/forms/filtersets.py:1123 +msgid "Cabled" +msgstr "Cablado" + +#: dcim/forms/filtersets.py:1130 +msgid "Occupied" +msgstr "Ocupado" + +#: dcim/forms/filtersets.py:1155 dcim/forms/filtersets.py:1177 +#: dcim/forms/filtersets.py:1199 dcim/forms/filtersets.py:1216 +#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:367 +#: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:59 +#: templates/dcim/frontport.html:74 templates/dcim/interface.html:146 +#: templates/dcim/powerfeed.html:118 templates/dcim/poweroutlet.html:63 +#: templates/dcim/powerport.html:63 templates/dcim/rearport.html:70 +msgid "Connection" +msgstr "Conexão" + +#: dcim/forms/filtersets.py:1245 dcim/forms/model_forms.py:1477 +#: templates/dcim/virtualdevicecontext.html:16 +msgid "Virtual Device Context" +msgstr "Contexto do dispositivo virtual" + +#: dcim/forms/filtersets.py:1248 extras/forms/bulk_edit.py:315 +#: extras/forms/bulk_import.py:239 extras/forms/filtersets.py:479 +#: extras/forms/model_forms.py:548 extras/tables/tables.py:482 +#: templates/extras/journalentry.html:33 +msgid "Kind" +msgstr "Gentil" + +#: dcim/forms/filtersets.py:1277 +msgid "Mgmt only" +msgstr "Somente gerenciamento" + +#: dcim/forms/filtersets.py:1289 dcim/forms/model_forms.py:1180 +#: dcim/models/device_components.py:630 templates/dcim/interface.html:134 +msgid "WWN" +msgstr "WWN" + +#: dcim/forms/filtersets.py:1309 +msgid "Wireless channel" +msgstr "Canal sem fio" + +#: dcim/forms/filtersets.py:1313 +msgid "Channel frequency (MHz)" +msgstr "Frequência do canal (MHz)" + +#: dcim/forms/filtersets.py:1317 +msgid "Channel width (MHz)" +msgstr "Largura do canal (MHz)" + +#: dcim/forms/filtersets.py:1321 templates/dcim/interface.html:86 +msgid "Transmit power (dBm)" +msgstr "Potência de transmissão (dBm)" + +#: dcim/forms/filtersets.py:1344 dcim/forms/filtersets.py:1366 +#: dcim/tables/devices.py:344 templates/dcim/cable.html:12 +#: templates/dcim/cable_edit.html:46 templates/dcim/cable_trace.html:43 +#: templates/dcim/frontport.html:84 +#: templates/dcim/inc/connection_endpoints.html:4 +#: templates/dcim/rearport.html:80 templates/dcim/trace/cable.html:7 +msgid "Cable" +msgstr "Cabo" + +#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:951 +msgid "Discovered" +msgstr "Descoberto" + +#: dcim/forms/formsets.py:20 +#, python-brace-format +msgid "A virtual chassis member already exists in position {vc_position}." +msgstr "Já existe um membro do chassi virtual em posição {vc_position}." + +#: dcim/forms/model_forms.py:101 dcim/tables/devices.py:183 +#: templates/dcim/sitegroup.html:26 +msgid "Site Group" +msgstr "Grupo de sites" + +#: dcim/forms/model_forms.py:142 +msgid "Contact Info" +msgstr "Informações de contato" + +#: dcim/forms/model_forms.py:197 templates/dcim/rackrole.html:20 +msgid "Rack Role" +msgstr "Função de rack" + +#: dcim/forms/model_forms.py:248 +msgid "" +"Comma-separated list of numeric unit IDs. A range may be specified using a " +"hyphen." +msgstr "" +"Lista separada por vírgulas de IDs de unidades numéricas. Um intervalo pode " +"ser especificado usando um hífen." + +#: dcim/forms/model_forms.py:259 dcim/tables/racks.py:133 +msgid "Reservation" +msgstr "Reserva" + +#: dcim/forms/model_forms.py:297 dcim/forms/model_forms.py:380 +#: utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Lesma" + +#: dcim/forms/model_forms.py:304 templates/dcim/devicetype.html:12 +msgid "Chassis" +msgstr "Chassi" + +#: dcim/forms/model_forms.py:356 templates/dcim/devicerole.html:24 +msgid "Device Role" +msgstr "Função do dispositivo" + +#: dcim/forms/model_forms.py:424 dcim/models/devices.py:632 +msgid "The lowest-numbered unit occupied by the device" +msgstr "A unidade de menor número ocupada pelo dispositivo" + +#: dcim/forms/model_forms.py:469 +msgid "The position in the virtual chassis this device is identified by" +msgstr "A posição no chassi virtual pela qual este dispositivo é identificado" + +#: dcim/forms/model_forms.py:473 templates/dcim/device.html:131 +#: templates/dcim/virtualchassis.html:61 +#: templates/dcim/virtualchassis_edit.html:57 +#: templates/ipam/inc/panels/fhrp_groups.html:13 +#: tenancy/forms/bulk_edit.py:146 tenancy/forms/filtersets.py:109 +msgid "Priority" +msgstr "Prioridade" + +#: dcim/forms/model_forms.py:474 +msgid "The priority of the device in the virtual chassis" +msgstr "A prioridade do dispositivo no chassi virtual" + +#: dcim/forms/model_forms.py:578 +msgid "Automatically populate components associated with this module type" +msgstr "" +"Preencher automaticamente os componentes associados a esse tipo de módulo" + +#: dcim/forms/model_forms.py:623 +msgid "Maximum length is 32767 (any unit)" +msgstr "O comprimento máximo é 32767 (qualquer unidade)" + +#: dcim/forms/model_forms.py:671 +msgid "Characteristics" +msgstr "Características" + +#: dcim/forms/model_forms.py:1130 +msgid "LAG interface" +msgstr "Interface LAG" + +#: dcim/forms/model_forms.py:1184 dcim/forms/model_forms.py:1345 +#: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 +#: ipam/forms/model_forms.py:270 ipam/forms/model_forms.py:279 +#: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 +#: templates/circuits/inc/circuit_termination.html:78 +#: templates/dcim/frontport.html:113 templates/dcim/interface.html:27 +#: templates/dcim/interface.html:190 templates/dcim/interface.html:322 +#: templates/dcim/inventoryitem_edit.html:54 templates/dcim/rearport.html:109 +#: templates/ipam/fhrpgroupassignment_edit.html:11 +#: templates/virtualization/vminterface.html:19 +#: templates/vpn/tunneltermination.html:32 +#: templates/wireless/inc/wirelesslink_interface.html:10 +#: templates/wireless/wirelesslink.html:10 +#: templates/wireless/wirelesslink.html:49 +#: virtualization/forms/model_forms.py:351 vpn/forms/bulk_import.py:292 +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/forms/model_forms.py:430 +#: vpn/forms/model_forms.py:439 vpn/tables/tunnels.py:87 +#: wireless/forms/model_forms.py:112 wireless/forms/model_forms.py:152 +msgid "Interface" +msgstr "Interface" + +#: dcim/forms/model_forms.py:1278 +msgid "Child Device" +msgstr "Dispositivo infantil" + +#: dcim/forms/model_forms.py:1279 +msgid "" +"Child devices must first be created and assigned to the site and rack of the" +" parent device." +msgstr "" +"Os dispositivos secundários devem primeiro ser criados e atribuídos ao site " +"e ao rack do dispositivo principal." + +#: dcim/forms/model_forms.py:1321 +msgid "Console port" +msgstr "Porta de console" + +#: dcim/forms/model_forms.py:1329 +msgid "Console server port" +msgstr "Porta do servidor do console" + +#: dcim/forms/model_forms.py:1337 +msgid "Front port" +msgstr "Porta frontal" + +#: dcim/forms/model_forms.py:1353 +msgid "Power outlet" +msgstr "Tomada elétrica" + +#: dcim/forms/model_forms.py:1373 templates/dcim/inventoryitem.html:17 +#: templates/dcim/inventoryitem_edit.html:10 +msgid "Inventory Item" +msgstr "Item de inventário" + +#: dcim/forms/model_forms.py:1425 +msgid "An InventoryItem can only be assigned to a single component." +msgstr "Um item de inventário só pode ser atribuído a um único componente." + +#: dcim/forms/model_forms.py:1439 templates/dcim/inventoryitemrole.html:15 +msgid "Inventory Item Role" +msgstr "Função do item de inventário" + +#: dcim/forms/model_forms.py:1459 templates/dcim/device.html:195 +#: templates/dcim/virtualdevicecontext.html:33 +#: templates/virtualization/virtualmachine.html:51 +msgid "Primary IPv4" +msgstr "IPv4 primário" + +#: dcim/forms/model_forms.py:1468 templates/dcim/device.html:211 +#: templates/dcim/virtualdevicecontext.html:44 +#: templates/virtualization/virtualmachine.html:67 +msgid "Primary IPv6" +msgstr "IPv6 primário" + +#: dcim/forms/object_create.py:47 dcim/forms/object_create.py:198 +#: dcim/forms/object_create.py:354 +msgid "" +"Alphanumeric ranges are supported. (Must match the number of objects being " +"created.)" +msgstr "" +"Os intervalos alfanuméricos são suportados. (Deve corresponder ao número de " +"objetos que estão sendo criados.)" + +#: dcim/forms/object_create.py:67 +#, python-brace-format +msgid "" +"The provided pattern specifies {value_count} values, but {pattern_count} are" +" expected." +msgstr "" +"O padrão fornecido especifica {value_count} valores, mas {pattern_count} são" +" esperados." + +#: dcim/forms/object_create.py:109 dcim/forms/object_create.py:270 +#: dcim/tables/devices.py:281 +msgid "Rear ports" +msgstr "Portas traseiras" + +#: dcim/forms/object_create.py:110 dcim/forms/object_create.py:271 +msgid "Select one rear port assignment for each front port being created." +msgstr "" +"Selecione uma atribuição de porta traseira para cada porta frontal que está " +"sendo criada." + +#: dcim/forms/object_create.py:163 +#, python-brace-format +msgid "" +"The number of front port templates to be created ({frontport_count}) must " +"match the selected number of rear port positions ({rearport_count})." +msgstr "" +"O número de modelos de porta frontal a serem criados ({frontport_count}) " +"deve corresponder ao número selecionado de posições da porta traseira " +"({rearport_count})." + +#: dcim/forms/object_create.py:250 +#, python-brace-format +msgid "" +"The string {module} will be replaced with the position of the " +"assigned module, if any." +msgstr "" +"A corda {module} será substituído pela posição do módulo " +"atribuído, se houver." + +#: dcim/forms/object_create.py:319 +#, python-brace-format +msgid "" +"The number of front ports to be created ({frontport_count}) must match the " +"selected number of rear port positions ({rearport_count})." +msgstr "" +"O número de portas frontais a serem criadas ({frontport_count}) deve " +"corresponder ao número selecionado de posições da porta traseira " +"({rearport_count})." + +#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1034 +#: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:54 +#: templates/dcim/virtualchassis_edit.html:48 templates/ipam/fhrpgroup.html:39 +msgid "Members" +msgstr "Membros" + +#: dcim/forms/object_create.py:417 +msgid "Initial position" +msgstr "Posição inicial" + +#: dcim/forms/object_create.py:420 +msgid "" +"Position of the first member device. Increases by one for each additional " +"member." +msgstr "" +"Posição do primeiro dispositivo membro. Aumenta em um para cada membro " +"adicional." + +#: dcim/forms/object_create.py:434 +msgid "A position must be specified for the first VC member." +msgstr "Uma posição deve ser especificada para o primeiro membro do VC." + +#: dcim/models/cables.py:62 dcim/models/device_component_templates.py:55 +#: dcim/models/device_components.py:63 extras/models/customfields.py:108 +msgid "label" +msgstr "etiqueta" + +#: dcim/models/cables.py:71 +msgid "length" +msgstr "comprimento" + +#: dcim/models/cables.py:78 +msgid "length unit" +msgstr "unidade de comprimento" + +#: dcim/models/cables.py:93 +msgid "cable" +msgstr "cabo" + +#: dcim/models/cables.py:94 +msgid "cables" +msgstr "cabos" + +#: dcim/models/cables.py:190 +msgid "A and B terminations cannot connect to the same object." +msgstr "As terminações A e B não podem se conectar ao mesmo objeto." + +#: dcim/models/cables.py:257 ipam/models/asns.py:37 +msgid "end" +msgstr "fim" + +#: dcim/models/cables.py:310 +msgid "cable termination" +msgstr "terminação de cabo" + +#: dcim/models/cables.py:311 +msgid "cable terminations" +msgstr "terminações de cabos" + +#: dcim/models/cables.py:434 extras/models/configs.py:50 +msgid "is active" +msgstr "está ativo" + +#: dcim/models/cables.py:438 +msgid "is complete" +msgstr "está completo" + +#: dcim/models/cables.py:442 +msgid "is split" +msgstr "é dividido" + +#: dcim/models/cables.py:450 +msgid "cable path" +msgstr "caminho do cabo" + +#: dcim/models/cables.py:451 +msgid "cable paths" +msgstr "caminhos de cabos" + +#: dcim/models/device_component_templates.py:46 +#, python-brace-format +msgid "" +"{module} is accepted as a substitution for the module bay position when " +"attached to a module type." +msgstr "" +"{module} é aceito como uma substituição para a posição do compartimento do " +"módulo quando conectado a um tipo de módulo." + +#: dcim/models/device_component_templates.py:58 +#: dcim/models/device_components.py:66 +msgid "Physical label" +msgstr "Rótulo físico" + +#: dcim/models/device_component_templates.py:103 +msgid "Component templates cannot be moved to a different device type." +msgstr "" +"Os modelos de componentes não podem ser movidos para um tipo de dispositivo " +"diferente." + +#: dcim/models/device_component_templates.py:154 +msgid "" +"A component template cannot be associated with both a device type and a " +"module type." +msgstr "" +"Um modelo de componente não pode ser associado a um tipo de dispositivo e a " +"um tipo de módulo." + +#: dcim/models/device_component_templates.py:158 +msgid "" +"A component template must be associated with either a device type or a " +"module type." +msgstr "" +"Um modelo de componente deve estar associado a um tipo de dispositivo ou a " +"um tipo de módulo." + +#: dcim/models/device_component_templates.py:186 +msgid "console port template" +msgstr "modelo de porta de console" + +#: dcim/models/device_component_templates.py:187 +msgid "console port templates" +msgstr "modelos de porta de console" + +#: dcim/models/device_component_templates.py:220 +msgid "console server port template" +msgstr "modelo de porta de servidor de console" + +#: dcim/models/device_component_templates.py:221 +msgid "console server port templates" +msgstr "modelos de porta de servidor de console" + +#: dcim/models/device_component_templates.py:252 +#: dcim/models/device_components.py:353 +msgid "maximum draw" +msgstr "sorteio máximo" + +#: dcim/models/device_component_templates.py:259 +#: dcim/models/device_components.py:360 +msgid "allocated draw" +msgstr "sorteio alocado" + +#: dcim/models/device_component_templates.py:269 +msgid "power port template" +msgstr "modelo de porta de alimentação" + +#: dcim/models/device_component_templates.py:270 +msgid "power port templates" +msgstr "modelos de porta de alimentação" + +#: dcim/models/device_component_templates.py:289 +#: dcim/models/device_components.py:383 +#, python-brace-format +msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." +msgstr "" +"O sorteio alocado não pode exceder o sorteio máximo ({maximum_draw}W)." + +#: dcim/models/device_component_templates.py:321 +#: dcim/models/device_components.py:478 +msgid "feed leg" +msgstr "perna de alimentação" + +#: dcim/models/device_component_templates.py:325 +#: dcim/models/device_components.py:482 +msgid "Phase (for three-phase feeds)" +msgstr "Fase (para alimentações trifásicas)" + +#: dcim/models/device_component_templates.py:331 +msgid "power outlet template" +msgstr "modelo de tomada elétrica" + +#: dcim/models/device_component_templates.py:332 +msgid "power outlet templates" +msgstr "modelos de tomadas elétricas" + +#: dcim/models/device_component_templates.py:341 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same device type" +msgstr "" +"Porta de alimentação principal ({power_port}) devem pertencer ao mesmo tipo " +"de dispositivo" + +#: dcim/models/device_component_templates.py:345 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same module type" +msgstr "" +"Porta de alimentação principal ({power_port}) devem pertencer ao mesmo tipo " +"de módulo" + +#: dcim/models/device_component_templates.py:397 +#: dcim/models/device_components.py:612 +msgid "management only" +msgstr "somente gerenciamento" + +#: dcim/models/device_component_templates.py:405 +#: dcim/models/device_components.py:551 +msgid "bridge interface" +msgstr "interface de ponte" + +#: dcim/models/device_component_templates.py:423 +#: dcim/models/device_components.py:637 +msgid "wireless role" +msgstr "função sem fio" + +#: dcim/models/device_component_templates.py:429 +msgid "interface template" +msgstr "modelo de interface" + +#: dcim/models/device_component_templates.py:430 +msgid "interface templates" +msgstr "modelos de interface" + +#: dcim/models/device_component_templates.py:437 +#: dcim/models/device_components.py:805 +#: virtualization/models/virtualmachines.py:398 +msgid "An interface cannot be bridged to itself." +msgstr "Uma interface não pode ser conectada a si mesma." + +#: dcim/models/device_component_templates.py:440 +#, python-brace-format +msgid "Bridge interface ({bridge}) must belong to the same device type" +msgstr "" +"Interface de ponte ({bridge}) devem pertencer ao mesmo tipo de dispositivo" + +#: dcim/models/device_component_templates.py:444 +#, python-brace-format +msgid "Bridge interface ({bridge}) must belong to the same module type" +msgstr "Interface de ponte ({bridge}) devem pertencer ao mesmo tipo de módulo" + +#: dcim/models/device_component_templates.py:500 +#: dcim/models/device_components.py:985 +msgid "rear port position" +msgstr "posição da porta traseira" + +#: dcim/models/device_component_templates.py:525 +msgid "front port template" +msgstr "modelo de porta frontal" + +#: dcim/models/device_component_templates.py:526 +msgid "front port templates" +msgstr "modelos de porta frontal" + +#: dcim/models/device_component_templates.py:536 +#, python-brace-format +msgid "Rear port ({name}) must belong to the same device type" +msgstr "Porta traseira ({name}) devem pertencer ao mesmo tipo de dispositivo" + +#: dcim/models/device_component_templates.py:542 +#, python-brace-format +msgid "" +"Invalid rear port position ({position}); rear port {name} has only {count} " +"positions" +msgstr "" +"Posição inválida da porta traseira ({position}); porta traseira {name} tem " +"apenas {count} posições" + +#: dcim/models/device_component_templates.py:595 +#: dcim/models/device_components.py:1054 +msgid "positions" +msgstr "posições" + +#: dcim/models/device_component_templates.py:606 +msgid "rear port template" +msgstr "modelo de porta traseira" + +#: dcim/models/device_component_templates.py:607 +msgid "rear port templates" +msgstr "modelos de porta traseira" + +#: dcim/models/device_component_templates.py:636 +#: dcim/models/device_components.py:1095 +msgid "position" +msgstr "posição" + +#: dcim/models/device_component_templates.py:639 +#: dcim/models/device_components.py:1098 +msgid "Identifier to reference when renaming installed components" +msgstr "Identificador a ser referenciado ao renomear componentes instalados" + +#: dcim/models/device_component_templates.py:645 +msgid "module bay template" +msgstr "modelo de compartimento de módulo" + +#: dcim/models/device_component_templates.py:646 +msgid "module bay templates" +msgstr "modelos de compartimento de módulos" + +#: dcim/models/device_component_templates.py:673 +msgid "device bay template" +msgstr "modelo de compartimento de dispositivos" + +#: dcim/models/device_component_templates.py:674 +msgid "device bay templates" +msgstr "modelos de compartimento de dispositivos" + +#: dcim/models/device_component_templates.py:687 +#, python-brace-format +msgid "" +"Subdevice role of device type ({device_type}) must be set to \"parent\" to " +"allow device bays." +msgstr "" +"Função do subdispositivo do tipo de dispositivo ({device_type}) deve ser " +"definido como “pai” para permitir compartimentos de dispositivos." + +#: dcim/models/device_component_templates.py:742 +#: dcim/models/device_components.py:1224 +msgid "part ID" +msgstr "ID da peça" + +#: dcim/models/device_component_templates.py:744 +#: dcim/models/device_components.py:1226 +msgid "Manufacturer-assigned part identifier" +msgstr "Identificador de peça atribuído pelo fabricante" + +#: dcim/models/device_component_templates.py:761 +msgid "inventory item template" +msgstr "modelo de item de inventário" + +#: dcim/models/device_component_templates.py:762 +msgid "inventory item templates" +msgstr "modelos de itens de inventário" + +#: dcim/models/device_components.py:106 +msgid "Components cannot be moved to a different device." +msgstr "Os componentes não podem ser movidos para um dispositivo diferente." + +#: dcim/models/device_components.py:145 +msgid "cable end" +msgstr "extremidade do cabo" + +#: dcim/models/device_components.py:151 +msgid "mark connected" +msgstr "marca conectada" + +#: dcim/models/device_components.py:153 +msgid "Treat as if a cable is connected" +msgstr "Trate como se um cabo estivesse conectado" + +#: dcim/models/device_components.py:171 +msgid "Must specify cable end (A or B) when attaching a cable." +msgstr "Deve especificar a extremidade do cabo (A ou B) ao conectar um cabo." + +#: dcim/models/device_components.py:175 +msgid "Cable end must not be set without a cable." +msgstr "A extremidade do cabo não deve ser ajustada sem um cabo." + +#: dcim/models/device_components.py:179 +msgid "Cannot mark as connected with a cable attached." +msgstr "Não é possível marcar como conectado com um cabo conectado." + +#: dcim/models/device_components.py:203 +#, python-brace-format +msgid "{class_name} models must declare a parent_object property" +msgstr "{class_name} os modelos devem declarar uma propriedade parent_object" + +#: dcim/models/device_components.py:288 dcim/models/device_components.py:317 +#: dcim/models/device_components.py:350 dcim/models/device_components.py:468 +msgid "Physical port type" +msgstr "Tipo de porta física" + +#: dcim/models/device_components.py:291 dcim/models/device_components.py:320 +msgid "speed" +msgstr "rapidez" + +#: dcim/models/device_components.py:295 dcim/models/device_components.py:324 +msgid "Port speed in bits per second" +msgstr "Velocidade da porta em bits por segundo" + +#: dcim/models/device_components.py:301 +msgid "console port" +msgstr "porta de console" + +#: dcim/models/device_components.py:302 +msgid "console ports" +msgstr "portas de console" + +#: dcim/models/device_components.py:330 +msgid "console server port" +msgstr "porta do servidor de console" + +#: dcim/models/device_components.py:331 +msgid "console server ports" +msgstr "portas do servidor de console" + +#: dcim/models/device_components.py:370 +msgid "power port" +msgstr "porta de alimentação" + +#: dcim/models/device_components.py:371 +msgid "power ports" +msgstr "portas de alimentação" + +#: dcim/models/device_components.py:488 +msgid "power outlet" +msgstr "tomada elétrica" + +#: dcim/models/device_components.py:489 +msgid "power outlets" +msgstr "tomadas elétricas" + +#: dcim/models/device_components.py:500 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same device" +msgstr "" +"Porta de alimentação principal ({power_port}) devem pertencer ao mesmo " +"dispositivo" + +#: dcim/models/device_components.py:531 vpn/models/crypto.py:81 +#: vpn/models/crypto.py:214 +msgid "mode" +msgstr "modo" + +#: dcim/models/device_components.py:535 +msgid "IEEE 802.1Q tagging strategy" +msgstr "Estratégia de marcação IEEE 802.1Q" + +#: dcim/models/device_components.py:543 +msgid "parent interface" +msgstr "interface principal" + +#: dcim/models/device_components.py:603 +msgid "parent LAG" +msgstr "LAG principal" + +#: dcim/models/device_components.py:613 +msgid "This interface is used only for out-of-band management" +msgstr "Essa interface é usada somente para gerenciamento fora da banda" + +#: dcim/models/device_components.py:618 +msgid "speed (Kbps)" +msgstr "velocidade (Kbps)" + +#: dcim/models/device_components.py:621 +msgid "duplex" +msgstr "duplex" + +#: dcim/models/device_components.py:631 +msgid "64-bit World Wide Name" +msgstr "Nome mundial de 64 bits" + +#: dcim/models/device_components.py:643 +msgid "wireless channel" +msgstr "canal sem fio" + +#: dcim/models/device_components.py:650 +msgid "channel frequency (MHz)" +msgstr "frequência do canal (MHz)" + +#: dcim/models/device_components.py:651 dcim/models/device_components.py:659 +msgid "Populated by selected channel (if set)" +msgstr "Preenchido pelo canal selecionado (se definido)" + +#: dcim/models/device_components.py:665 +msgid "transmit power (dBm)" +msgstr "potência de transmissão (dBm)" + +#: dcim/models/device_components.py:690 wireless/models.py:116 +msgid "wireless LANs" +msgstr "LANs sem fio" + +#: dcim/models/device_components.py:698 +#: virtualization/models/virtualmachines.py:328 +msgid "untagged VLAN" +msgstr "VLAN sem etiqueta" + +#: dcim/models/device_components.py:704 +#: virtualization/models/virtualmachines.py:334 +msgid "tagged VLANs" +msgstr "VLANs marcadas" + +#: dcim/models/device_components.py:746 +#: virtualization/models/virtualmachines.py:370 +msgid "interface" +msgstr "interface" + +#: dcim/models/device_components.py:747 +#: virtualization/models/virtualmachines.py:371 +msgid "interfaces" +msgstr "interfaces" + +#: dcim/models/device_components.py:758 +#, python-brace-format +msgid "{display_type} interfaces cannot have a cable attached." +msgstr "{display_type} as interfaces não podem ter um cabo conectado." + +#: dcim/models/device_components.py:766 +#, python-brace-format +msgid "{display_type} interfaces cannot be marked as connected." +msgstr "{display_type} as interfaces não podem ser marcadas como conectadas." + +#: dcim/models/device_components.py:775 +#: virtualization/models/virtualmachines.py:383 +msgid "An interface cannot be its own parent." +msgstr "Uma interface não pode ser sua própria mãe." + +#: dcim/models/device_components.py:779 +msgid "Only virtual interfaces may be assigned to a parent interface." +msgstr "" +"Somente interfaces virtuais podem ser atribuídas a uma interface principal." + +#: dcim/models/device_components.py:786 +#, python-brace-format +msgid "" +"The selected parent interface ({interface}) belongs to a different device " +"({device})" +msgstr "" +"A interface principal selecionada ({interface}) pertence a um dispositivo " +"diferente ({device})" + +#: dcim/models/device_components.py:792 +#, python-brace-format +msgid "" +"The selected parent interface ({interface}) belongs to {device}, which is " +"not part of virtual chassis {virtual_chassis}." +msgstr "" +"A interface principal selecionada ({interface}) pertence a {device}, que não" +" faz parte do chassi virtual {virtual_chassis}." + +#: dcim/models/device_components.py:812 +#, python-brace-format +msgid "" +"The selected bridge interface ({bridge}) belongs to a different device " +"({device})." +msgstr "" +"A interface de ponte selecionada ({bridge}) pertence a um dispositivo " +"diferente ({device})." + +#: dcim/models/device_components.py:818 +#, python-brace-format +msgid "" +"The selected bridge interface ({interface}) belongs to {device}, which is " +"not part of virtual chassis {virtual_chassis}." +msgstr "" +"A interface de ponte selecionada ({interface}) pertence a {device}, que não " +"faz parte do chassi virtual {virtual_chassis}." + +#: dcim/models/device_components.py:829 +msgid "Virtual interfaces cannot have a parent LAG interface." +msgstr "As interfaces virtuais não podem ter uma interface LAG principal." + +#: dcim/models/device_components.py:833 +msgid "A LAG interface cannot be its own parent." +msgstr "Uma interface LAG não pode ser sua própria mãe." + +#: dcim/models/device_components.py:840 +#, python-brace-format +msgid "" +"The selected LAG interface ({lag}) belongs to a different device ({device})." +msgstr "" +"A interface LAG selecionada ({lag}) pertence a um dispositivo diferente " +"({device})." + +#: dcim/models/device_components.py:846 +#, python-brace-format +msgid "" +"The selected LAG interface ({lag}) belongs to {device}, which is not part of" +" virtual chassis {virtual_chassis}." +msgstr "" +"A interface LAG selecionada ({lag}) pertence a {device}, que não faz parte " +"do chassi virtual {virtual_chassis}." + +#: dcim/models/device_components.py:857 +msgid "Virtual interfaces cannot have a PoE mode." +msgstr "As interfaces virtuais não podem ter um modo PoE." + +#: dcim/models/device_components.py:861 +msgid "Virtual interfaces cannot have a PoE type." +msgstr "As interfaces virtuais não podem ter um tipo PoE." + +#: dcim/models/device_components.py:867 +msgid "Must specify PoE mode when designating a PoE type." +msgstr "Deve especificar o modo PoE ao designar um tipo de PoE." + +#: dcim/models/device_components.py:874 +msgid "Wireless role may be set only on wireless interfaces." +msgstr "A função sem fio pode ser definida somente em interfaces sem fio." + +#: dcim/models/device_components.py:876 +msgid "Channel may be set only on wireless interfaces." +msgstr "O canal pode ser configurado somente em interfaces sem fio." + +#: dcim/models/device_components.py:882 +msgid "Channel frequency may be set only on wireless interfaces." +msgstr "" +"A frequência do canal pode ser definida somente em interfaces sem fio." + +#: dcim/models/device_components.py:886 +msgid "Cannot specify custom frequency with channel selected." +msgstr "" +"Não é possível especificar a frequência personalizada com o canal " +"selecionado." + +#: dcim/models/device_components.py:892 +msgid "Channel width may be set only on wireless interfaces." +msgstr "A largura do canal pode ser definida somente em interfaces sem fio." + +#: dcim/models/device_components.py:894 +msgid "Cannot specify custom width with channel selected." +msgstr "" +"Não é possível especificar a largura personalizada com o canal selecionado." + +#: dcim/models/device_components.py:902 +#, python-brace-format +msgid "" +"The untagged VLAN ({untagged_vlan}) must belong to the same site as the " +"interface's parent device, or it must be global." +msgstr "" +"A VLAN não marcada ({untagged_vlan}) deve pertencer ao mesmo site do " +"dispositivo pai da interface ou deve ser global." + +#: dcim/models/device_components.py:991 +msgid "Mapped position on corresponding rear port" +msgstr "Posição mapeada na porta traseira correspondente" + +#: dcim/models/device_components.py:1007 +msgid "front port" +msgstr "porta frontal" + +#: dcim/models/device_components.py:1008 +msgid "front ports" +msgstr "portas frontais" + +#: dcim/models/device_components.py:1022 +#, python-brace-format +msgid "Rear port ({rear_port}) must belong to the same device" +msgstr "Porta traseira ({rear_port}) devem pertencer ao mesmo dispositivo" + +#: dcim/models/device_components.py:1030 +#, python-brace-format +msgid "" +"Invalid rear port position ({rear_port_position}): Rear port {name} has only" +" {positions} positions." +msgstr "" +"Posição inválida da porta traseira ({rear_port_position}): Porta traseira " +"{name} tem apenas {positions} posições." + +#: dcim/models/device_components.py:1060 +msgid "Number of front ports which may be mapped" +msgstr "Número de portas frontais que podem ser mapeadas" + +#: dcim/models/device_components.py:1065 +msgid "rear port" +msgstr "porta traseira" + +#: dcim/models/device_components.py:1066 +msgid "rear ports" +msgstr "portas traseiras" + +#: dcim/models/device_components.py:1080 +#, python-brace-format +msgid "" +"The number of positions cannot be less than the number of mapped front ports" +" ({frontport_count})" +msgstr "" +"O número de posições não pode ser menor que o número de portas frontais " +"mapeadas ({frontport_count})" + +#: dcim/models/device_components.py:1104 +msgid "module bay" +msgstr "compartimento de módulos" + +#: dcim/models/device_components.py:1105 +msgid "module bays" +msgstr "compartimentos de módulos" + +#: dcim/models/device_components.py:1118 +msgid "parent_bay" +msgstr "parent_bay" + +#: dcim/models/device_components.py:1126 +msgid "device bay" +msgstr "compartimento de dispositivos" + +#: dcim/models/device_components.py:1127 +msgid "device bays" +msgstr "compartimentos de dispositivos" + +#: dcim/models/device_components.py:1137 +#, python-brace-format +msgid "This type of device ({device_type}) does not support device bays." +msgstr "" +"Esse tipo de dispositivo ({device_type}) não suporta compartimentos de " +"dispositivos." + +#: dcim/models/device_components.py:1143 +msgid "Cannot install a device into itself." +msgstr "Não é possível instalar um dispositivo em si mesmo." + +#: dcim/models/device_components.py:1151 +#, python-brace-format +msgid "" +"Cannot install the specified device; device is already installed in {bay}." +msgstr "" +"Não é possível instalar o dispositivo especificado; o dispositivo já está " +"instalado no {bay}." + +#: dcim/models/device_components.py:1172 +msgid "inventory item role" +msgstr "função do item de inventário" + +#: dcim/models/device_components.py:1173 +msgid "inventory item roles" +msgstr "funções do item de inventário" + +#: dcim/models/device_components.py:1230 dcim/models/devices.py:595 +#: dcim/models/devices.py:1173 dcim/models/racks.py:113 +msgid "serial number" +msgstr "número de série" + +#: dcim/models/device_components.py:1238 dcim/models/devices.py:603 +#: dcim/models/devices.py:1180 dcim/models/racks.py:120 +msgid "asset tag" +msgstr "etiqueta de ativo" + +#: dcim/models/device_components.py:1239 +msgid "A unique tag used to identify this item" +msgstr "Uma tag exclusiva usada para identificar esse item" + +#: dcim/models/device_components.py:1242 +msgid "discovered" +msgstr "descoberto" + +#: dcim/models/device_components.py:1244 +msgid "This item was automatically discovered" +msgstr "Este item foi descoberto automaticamente" + +#: dcim/models/device_components.py:1262 +msgid "inventory item" +msgstr "item de inventário" + +#: dcim/models/device_components.py:1263 +msgid "inventory items" +msgstr "itens de inventário" + +#: dcim/models/device_components.py:1274 +msgid "Cannot assign self as parent." +msgstr "Não é possível designar a si mesmo como pai." + +#: dcim/models/device_components.py:1282 +msgid "Parent inventory item does not belong to the same device." +msgstr "O item do inventário principal não pertence ao mesmo dispositivo." + +#: dcim/models/device_components.py:1288 +msgid "Cannot move an inventory item with dependent children" +msgstr "Não é possível mover um item de inventário com filhos dependentes" + +#: dcim/models/device_components.py:1296 +msgid "Cannot assign inventory item to component on another device" +msgstr "" +"Não é possível atribuir item de inventário ao componente em outro " +"dispositivo" + +#: dcim/models/devices.py:54 +msgid "manufacturer" +msgstr "fabricante" + +#: dcim/models/devices.py:55 +msgid "manufacturers" +msgstr "fabricantes" + +#: dcim/models/devices.py:82 dcim/models/devices.py:381 +msgid "model" +msgstr "modelo" + +#: dcim/models/devices.py:95 +msgid "default platform" +msgstr "plataforma padrão" + +#: dcim/models/devices.py:98 dcim/models/devices.py:385 +msgid "part number" +msgstr "número da peça" + +#: dcim/models/devices.py:101 dcim/models/devices.py:388 +msgid "Discrete part number (optional)" +msgstr "Número de peça discreto (opcional)" + +#: dcim/models/devices.py:107 dcim/models/racks.py:137 +msgid "height (U)" +msgstr "altura (U)" + +#: dcim/models/devices.py:111 +msgid "exclude from utilization" +msgstr "excluir da utilização" + +#: dcim/models/devices.py:112 +msgid "Devices of this type are excluded when calculating rack utilization." +msgstr "" +"Dispositivos desse tipo são excluídos ao calcular a utilização do rack." + +#: dcim/models/devices.py:116 +msgid "is full depth" +msgstr "é profundidade total" + +#: dcim/models/devices.py:117 +msgid "Device consumes both front and rear rack faces." +msgstr "O dispositivo consome as faces frontal e traseira do rack." + +#: dcim/models/devices.py:123 +msgid "parent/child status" +msgstr "status de pai/filho" + +#: dcim/models/devices.py:124 +msgid "" +"Parent devices house child devices in device bays. Leave blank if this " +"device type is neither a parent nor a child." +msgstr "" +"Os dispositivos parentais abrigam dispositivos infantis em compartimentos de" +" dispositivos. Deixe em branco se esse tipo de dispositivo não for pai nem " +"filho." + +#: dcim/models/devices.py:128 dcim/models/devices.py:647 +msgid "airflow" +msgstr "fluxo de ar" + +#: dcim/models/devices.py:204 +msgid "device type" +msgstr "tipo de dispositivo" + +#: dcim/models/devices.py:205 +msgid "device types" +msgstr "tipos de dispositivos" + +#: dcim/models/devices.py:289 +msgid "U height must be in increments of 0.5 rack units." +msgstr "A altura U deve estar em incrementos de 0,5 unidades de rack." + +#: dcim/models/devices.py:306 +#, python-brace-format +msgid "" +"Device {device} in rack {rack} does not have sufficient space to accommodate" +" a height of {height}U" +msgstr "" +"Dispositivo {device} na prateleira {rack} não tem espaço suficiente para " +"acomodar uma altura de {height}U" + +#: dcim/models/devices.py:321 +#, python-brace-format +msgid "" +"Unable to set 0U height: Found {racked_instance_count} " +"instances already mounted within racks." +msgstr "" +"Não é possível definir a altura de 0U: encontrado {racked_instance_count} instâncias já montado dentro de " +"racks." + +#: dcim/models/devices.py:330 +msgid "" +"Must delete all device bay templates associated with this device before " +"declassifying it as a parent device." +msgstr "" +"É necessário excluir todos os modelos de compartimento de dispositivos " +"associados a esse dispositivo antes de desclassificá-lo como dispositivo " +"principal." + +#: dcim/models/devices.py:336 +msgid "Child device types must be 0U." +msgstr "Os tipos de dispositivos infantis devem ser 0U." + +#: dcim/models/devices.py:404 +msgid "module type" +msgstr "tipo de módulo" + +#: dcim/models/devices.py:405 +msgid "module types" +msgstr "tipos de módulo" + +#: dcim/models/devices.py:473 +msgid "Virtual machines may be assigned to this role" +msgstr "Máquinas virtuais podem ser atribuídas a essa função" + +#: dcim/models/devices.py:485 +msgid "device role" +msgstr "função do dispositivo" + +#: dcim/models/devices.py:486 +msgid "device roles" +msgstr "funções do dispositivo" + +#: dcim/models/devices.py:503 +msgid "Optionally limit this platform to devices of a certain manufacturer" +msgstr "" +"Opcionalmente, limite essa plataforma a dispositivos de um determinado " +"fabricante" + +#: dcim/models/devices.py:515 +msgid "platform" +msgstr "plataforma" + +#: dcim/models/devices.py:516 +msgid "platforms" +msgstr "plataformas" + +#: dcim/models/devices.py:564 +msgid "The function this device serves" +msgstr "A função que este dispositivo serve" + +#: dcim/models/devices.py:596 +msgid "Chassis serial number, assigned by the manufacturer" +msgstr "Número de série do chassi, atribuído pelo fabricante" + +#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +msgid "A unique tag used to identify this device" +msgstr "Uma tag exclusiva usada para identificar esse dispositivo" + +#: dcim/models/devices.py:631 +msgid "position (U)" +msgstr "posição (U)" + +#: dcim/models/devices.py:638 +msgid "rack face" +msgstr "face de cremalheira" + +#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: virtualization/models/virtualmachines.py:98 +msgid "primary IPv4" +msgstr "IPv4 primário" + +#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: virtualization/models/virtualmachines.py:106 +msgid "primary IPv6" +msgstr "IPv6 primário" + +#: dcim/models/devices.py:674 +msgid "out-of-band IP" +msgstr "IP fora de banda" + +#: dcim/models/devices.py:691 +msgid "VC position" +msgstr "Posição VC" + +#: dcim/models/devices.py:695 +msgid "Virtual chassis position" +msgstr "Posição do chassi virtual" + +#: dcim/models/devices.py:698 +msgid "VC priority" +msgstr "Prioridade VC" + +#: dcim/models/devices.py:702 +msgid "Virtual chassis master election priority" +msgstr "Prioridade de eleição do mestre do chassi virtual" + +#: dcim/models/devices.py:705 dcim/models/sites.py:207 +msgid "latitude" +msgstr "latitude" + +#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/sites.py:212 dcim/models/sites.py:220 +msgid "GPS coordinate in decimal format (xx.yyyyyy)" +msgstr "Coordenada GPS em formato decimal (xx.yyyyyy)" + +#: dcim/models/devices.py:713 dcim/models/sites.py:215 +msgid "longitude" +msgstr "longitude" + +#: dcim/models/devices.py:786 +msgid "Device name must be unique per site." +msgstr "O nome do dispositivo deve ser exclusivo por site." + +#: dcim/models/devices.py:797 ipam/models/services.py:75 +msgid "device" +msgstr "dispositivo" + +#: dcim/models/devices.py:798 +msgid "devices" +msgstr "dispositivos" + +#: dcim/models/devices.py:838 +#, python-brace-format +msgid "Rack {rack} does not belong to site {site}." +msgstr "Rack {rack} não pertence ao site {site}." + +#: dcim/models/devices.py:843 +#, python-brace-format +msgid "Location {location} does not belong to site {site}." +msgstr "Localização {location} não pertence ao site {site}." + +#: dcim/models/devices.py:849 +#, python-brace-format +msgid "Rack {rack} does not belong to location {location}." +msgstr "Rack {rack} não pertence à localização {location}." + +#: dcim/models/devices.py:856 +msgid "Cannot select a rack face without assigning a rack." +msgstr "Não é possível selecionar uma face de rack sem atribuir um rack." + +#: dcim/models/devices.py:860 +msgid "Cannot select a rack position without assigning a rack." +msgstr "Não é possível selecionar uma posição de rack sem atribuir um rack." + +#: dcim/models/devices.py:866 +msgid "Position must be in increments of 0.5 rack units." +msgstr "A posição deve estar em incrementos de 0,5 unidades de rack." + +#: dcim/models/devices.py:870 +msgid "Must specify rack face when defining rack position." +msgstr "Deve especificar a face do rack ao definir a posição do rack." + +#: dcim/models/devices.py:878 +#, python-brace-format +msgid "" +"A U0 device type ({device_type}) cannot be assigned to a rack position." +msgstr "" +"Um tipo de dispositivo U0 ({device_type}) não pode ser atribuído a uma " +"posição de rack." + +#: dcim/models/devices.py:889 +msgid "" +"Child device types cannot be assigned to a rack face. This is an attribute " +"of the parent device." +msgstr "" +"Os tipos de dispositivos secundários não podem ser atribuídos a uma face de " +"rack. Esse é um atributo do dispositivo principal." + +#: dcim/models/devices.py:896 +msgid "" +"Child device types cannot be assigned to a rack position. This is an " +"attribute of the parent device." +msgstr "" +"Os tipos de dispositivos infantis não podem ser atribuídos a uma posição de " +"rack. Esse é um atributo do dispositivo principal." + +#: dcim/models/devices.py:910 +#, python-brace-format +msgid "" +"U{position} is already occupied or does not have sufficient space to " +"accommodate this device type: {device_type} ({u_height}U)" +msgstr "" +"U{position} já está ocupado ou não tem espaço suficiente para acomodar este " +"tipo de dispositivo: {device_type} ({u_height}U)" + +#: dcim/models/devices.py:925 +#, python-brace-format +msgid "{ip} is not an IPv4 address." +msgstr "{ip} não é um endereço IPv4." + +#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#, python-brace-format +msgid "The specified IP address ({ip}) is not assigned to this device." +msgstr "" +"O endereço IP especificado ({ip}) não está atribuído a este dispositivo." + +#: dcim/models/devices.py:940 +#, python-brace-format +msgid "{ip} is not an IPv6 address." +msgstr "{ip} não é um endereço IPv6." + +#: dcim/models/devices.py:967 +#, python-brace-format +msgid "" +"The assigned platform is limited to {platform_manufacturer} device types, " +"but this device's type belongs to {devicetype_manufacturer}." +msgstr "" +"A plataforma atribuída está limitada a {platform_manufacturer} tipos de " +"dispositivo, mas o tipo desse dispositivo pertence a " +"{devicetype_manufacturer}." + +#: dcim/models/devices.py:978 +#, python-brace-format +msgid "The assigned cluster belongs to a different site ({site})" +msgstr "O cluster atribuído pertence a um site diferente ({site})" + +#: dcim/models/devices.py:986 +msgid "A device assigned to a virtual chassis must have its position defined." +msgstr "" +"Um dispositivo atribuído a um chassi virtual deve ter sua posição definida." + +#: dcim/models/devices.py:1188 +msgid "module" +msgstr "módulo" + +#: dcim/models/devices.py:1189 +msgid "modules" +msgstr "módulos" + +#: dcim/models/devices.py:1205 +#, python-brace-format +msgid "" +"Module must be installed within a module bay belonging to the assigned " +"device ({device})." +msgstr "" +"O módulo deve ser instalado dentro de um compartimento de módulo pertencente" +" ao dispositivo atribuído ({device})." + +#: dcim/models/devices.py:1309 +msgid "domain" +msgstr "dominar" + +#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +msgid "virtual chassis" +msgstr "chassi virtual" + +#: dcim/models/devices.py:1338 +#, python-brace-format +msgid "" +"The selected master ({master}) is not assigned to this virtual chassis." +msgstr "" +"O mestre selecionado ({master}) não está atribuído a esse chassi virtual." + +#: dcim/models/devices.py:1354 +#, python-brace-format +msgid "" +"Unable to delete virtual chassis {self}. There are member interfaces which " +"form a cross-chassis LAG interfaces." +msgstr "" +"Não é possível excluir o chassi virtual {self}. Existem interfaces de " +"membros que formam interfaces LAG entre chassis." + +#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +msgid "identifier" +msgstr "identificador" + +#: dcim/models/devices.py:1380 +msgid "Numeric identifier unique to the parent device" +msgstr "Identificador numérico exclusivo para o dispositivo principal" + +#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: extras/models/models.py:724 netbox/models/__init__.py:114 +msgid "comments" +msgstr "comentários" + +#: dcim/models/devices.py:1424 +msgid "virtual device context" +msgstr "contexto de dispositivo virtual" + +#: dcim/models/devices.py:1425 +msgid "virtual device contexts" +msgstr "contextos de dispositivos virtuais" + +#: dcim/models/devices.py:1457 +#, python-brace-format +msgid "{ip} is not an IPv{family} address." +msgstr "{ip} não é um IPv{family} endereço." + +#: dcim/models/devices.py:1463 +msgid "Primary IP address must belong to an interface on the assigned device." +msgstr "" +"O endereço IP principal deve pertencer a uma interface no dispositivo " +"atribuído." + +#: dcim/models/mixins.py:15 extras/models/configs.py:41 +#: extras/models/models.py:343 extras/models/models.py:552 +#: extras/models/search.py:50 ipam/models/ip.py:193 +msgid "weight" +msgstr "peso" + +#: dcim/models/mixins.py:22 +msgid "weight unit" +msgstr "unidade de peso" + +#: dcim/models/mixins.py:51 +msgid "Must specify a unit when setting a weight" +msgstr "Deve especificar uma unidade ao definir um peso" + +#: dcim/models/power.py:55 +msgid "power panel" +msgstr "painel de alimentação" + +#: dcim/models/power.py:56 +msgid "power panels" +msgstr "painéis de energia" + +#: dcim/models/power.py:70 +#, python-brace-format +msgid "" +"Location {location} ({location_site}) is in a different site than {site}" +msgstr "" +"Localização {location} ({location_site}) está em um site diferente do {site}" + +#: dcim/models/power.py:107 +msgid "supply" +msgstr "fornecem" + +#: dcim/models/power.py:113 +msgid "phase" +msgstr "estágio" + +#: dcim/models/power.py:119 +msgid "voltage" +msgstr "voltagem" + +#: dcim/models/power.py:124 +msgid "amperage" +msgstr "amperagem" + +#: dcim/models/power.py:129 +msgid "max utilization" +msgstr "utilização máxima" + +#: dcim/models/power.py:132 +msgid "Maximum permissible draw (percentage)" +msgstr "Sorteio máximo permitido (porcentagem)" + +#: dcim/models/power.py:135 +msgid "available power" +msgstr "potência disponível" + +#: dcim/models/power.py:163 +msgid "power feed" +msgstr "alimentação de energia" + +#: dcim/models/power.py:164 +msgid "power feeds" +msgstr "alimentações de energia" + +#: dcim/models/power.py:178 +#, python-brace-format +msgid "" +"Rack {rack} ({rack_site}) and power panel {powerpanel} ({powerpanel_site}) " +"are in different sites." +msgstr "" +"Rack {rack} ({rack_site}) e painel de alimentação {powerpanel} " +"({powerpanel_site}) estão em sites diferentes." + +#: dcim/models/power.py:189 +msgid "Voltage cannot be negative for AC supply" +msgstr "A tensão não pode ser negativa para a alimentação CA" + +#: dcim/models/racks.py:49 +msgid "rack role" +msgstr "papel de rack" + +#: dcim/models/racks.py:50 +msgid "rack roles" +msgstr "funções de rack" + +#: dcim/models/racks.py:74 +msgid "facility ID" +msgstr "ID da instalação" + +#: dcim/models/racks.py:75 +msgid "Locally-assigned identifier" +msgstr "Identificador atribuído localmente" + +#: dcim/models/racks.py:108 ipam/forms/bulk_import.py:200 +#: ipam/forms/bulk_import.py:265 ipam/forms/bulk_import.py:300 +#: ipam/forms/bulk_import.py:467 virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Papel funcional" + +#: dcim/models/racks.py:121 +msgid "A unique tag used to identify this rack" +msgstr "Uma etiqueta exclusiva usada para identificar esse rack" + +#: dcim/models/racks.py:132 +msgid "width" +msgstr "largura" + +#: dcim/models/racks.py:133 +msgid "Rail-to-rail width" +msgstr "Largura de trilho a trilho" + +#: dcim/models/racks.py:139 +msgid "Height in rack units" +msgstr "Altura em unidades de rack" + +#: dcim/models/racks.py:143 +msgid "starting unit" +msgstr "unidade inicial" + +#: dcim/models/racks.py:145 +msgid "Starting unit for rack" +msgstr "Unidade inicial para rack" + +#: dcim/models/racks.py:149 +msgid "descending units" +msgstr "unidades descendentes" + +#: dcim/models/racks.py:150 +msgid "Units are numbered top-to-bottom" +msgstr "As unidades são numeradas de cima para baixo" + +#: dcim/models/racks.py:153 +msgid "outer width" +msgstr "largura externa" + +#: dcim/models/racks.py:156 +msgid "Outer dimension of rack (width)" +msgstr "Dimensão externa do rack (largura)" + +#: dcim/models/racks.py:159 +msgid "outer depth" +msgstr "profundidade externa" + +#: dcim/models/racks.py:162 +msgid "Outer dimension of rack (depth)" +msgstr "Dimensão externa do rack (profundidade)" + +#: dcim/models/racks.py:165 +msgid "outer unit" +msgstr "unidade externa" + +#: dcim/models/racks.py:171 +msgid "max weight" +msgstr "peso máximo" + +#: dcim/models/racks.py:174 +msgid "Maximum load capacity for the rack" +msgstr "Capacidade máxima de carga para o rack" + +#: dcim/models/racks.py:182 +msgid "mounting depth" +msgstr "profundidade de montagem" + +#: dcim/models/racks.py:186 +msgid "" +"Maximum depth of a mounted device, in millimeters. For four-post racks, this" +" is the distance between the front and rear rails." +msgstr "" +"Profundidade máxima de um dispositivo montado, em milímetros. Para racks de " +"quatro postes, essa é a distância entre os trilhos dianteiro e traseiro." + +#: dcim/models/racks.py:220 +msgid "rack" +msgstr "prateleira" + +#: dcim/models/racks.py:221 +msgid "racks" +msgstr "prateleiras" + +#: dcim/models/racks.py:236 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "O local atribuído deve pertencer ao site principal ({site})." + +#: dcim/models/racks.py:240 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "" +"Deve especificar uma unidade ao definir uma largura/profundidade externa" + +#: dcim/models/racks.py:244 +msgid "Must specify a unit when setting a maximum weight" +msgstr "Deve especificar uma unidade ao definir um peso máximo" + +#: dcim/models/racks.py:254 +#, python-brace-format +msgid "" +"Rack must be at least {min_height}U tall to house currently installed " +"devices." +msgstr "" +"O rack deve ter pelo menos {min_height}Eu ligo para a casa dos dispositivos " +"atualmente instalados." + +#: dcim/models/racks.py:261 +#, python-brace-format +msgid "" +"Rack unit numbering must begin at {position} or less to house currently " +"installed devices." +msgstr "" +"A numeração das unidades de rack deve começar em {position} ou menos para " +"abrigar dispositivos atualmente instalados." + +#: dcim/models/racks.py:269 +#, python-brace-format +msgid "Location must be from the same site, {site}." +msgstr "A localização deve ser do mesmo site, {site}." + +#: dcim/models/racks.py:522 +msgid "units" +msgstr "unidades" + +#: dcim/models/racks.py:548 +msgid "rack reservation" +msgstr "reserva de estantes" + +#: dcim/models/racks.py:549 +msgid "rack reservations" +msgstr "Reservas de rack" + +#: dcim/models/racks.py:566 +#, python-brace-format +msgid "Invalid unit(s) for {height}U rack: {unit_list}" +msgstr "Unidade (s) inválida (s) para {height}Rack U: {unit_list}" + +#: dcim/models/racks.py:579 +#, python-brace-format +msgid "The following units have already been reserved: {unit_list}" +msgstr "As seguintes unidades já foram reservadas: {unit_list}" + +#: dcim/models/sites.py:49 +msgid "A top-level region with this name already exists." +msgstr "Já existe uma região de nível superior com esse nome." + +#: dcim/models/sites.py:59 +msgid "A top-level region with this slug already exists." +msgstr "Já existe uma região de alto nível com essa lesma." + +#: dcim/models/sites.py:62 +msgid "region" +msgstr "região" + +#: dcim/models/sites.py:63 +msgid "regions" +msgstr "regiões" + +#: dcim/models/sites.py:102 +msgid "A top-level site group with this name already exists." +msgstr "Já existe um grupo de sites de nível superior com esse nome." + +#: dcim/models/sites.py:112 +msgid "A top-level site group with this slug already exists." +msgstr "Já existe um grupo de sites de alto nível com esse slug." + +#: dcim/models/sites.py:115 +msgid "site group" +msgstr "grupo de sites" + +#: dcim/models/sites.py:116 +msgid "site groups" +msgstr "grupos de sites" + +#: dcim/models/sites.py:141 +msgid "Full name of the site" +msgstr "Nome completo do site" + +#: dcim/models/sites.py:181 +msgid "facility" +msgstr "instalação" + +#: dcim/models/sites.py:184 +msgid "Local facility ID or description" +msgstr "ID ou descrição da instalação local" + +#: dcim/models/sites.py:195 +msgid "physical address" +msgstr "endereço físico" + +#: dcim/models/sites.py:198 +msgid "Physical location of the building" +msgstr "Localização física do edifício" + +#: dcim/models/sites.py:201 +msgid "shipping address" +msgstr "endereço de entrega" + +#: dcim/models/sites.py:204 +msgid "If different from the physical address" +msgstr "Se for diferente do endereço físico" + +#: dcim/models/sites.py:238 +msgid "site" +msgstr "local" + +#: dcim/models/sites.py:239 +msgid "sites" +msgstr "sites" + +#: dcim/models/sites.py:303 +msgid "A location with this name already exists within the specified site." +msgstr "Já existe um local com esse nome no site especificado." + +#: dcim/models/sites.py:313 +msgid "A location with this slug already exists within the specified site." +msgstr "Já existe um local com esse slug no site especificado." + +#: dcim/models/sites.py:316 +msgid "location" +msgstr "localização" + +#: dcim/models/sites.py:317 +msgid "locations" +msgstr "localizações" + +#: dcim/models/sites.py:331 +#, python-brace-format +msgid "Parent location ({parent}) must belong to the same site ({site})." +msgstr "" +"Localização dos pais ({parent}) deve pertencer ao mesmo site ({site})." + +#: dcim/tables/cables.py:54 +msgid "Termination A" +msgstr "Rescisão A" + +#: dcim/tables/cables.py:59 +msgid "Termination B" +msgstr "Rescisão B" + +#: dcim/tables/cables.py:65 wireless/tables/wirelesslink.py:22 +msgid "Device A" +msgstr "Dispositivo A" + +#: dcim/tables/cables.py:71 wireless/tables/wirelesslink.py:31 +msgid "Device B" +msgstr "Dispositivo B" + +#: dcim/tables/cables.py:77 +msgid "Location A" +msgstr "Localização A" + +#: dcim/tables/cables.py:83 +msgid "Location B" +msgstr "Localização B" + +#: dcim/tables/cables.py:89 +msgid "Rack A" +msgstr "Prateleira A" + +#: dcim/tables/cables.py:95 +msgid "Rack B" +msgstr "Prateleira B" + +#: dcim/tables/cables.py:101 +msgid "Site A" +msgstr "Sítio A" + +#: dcim/tables/cables.py:107 +msgid "Site B" +msgstr "Sítio B" + +#: dcim/tables/connections.py:27 templates/dcim/consoleport.html:18 +#: templates/dcim/consoleserverport.html:75 templates/dcim/frontport.html:119 +#: templates/dcim/inventoryitem_edit.html:39 +msgid "Console Port" +msgstr "Porta de console" + +#: dcim/tables/connections.py:31 dcim/tables/connections.py:50 +#: dcim/tables/connections.py:71 +#: templates/dcim/inc/connection_endpoints.html:16 +msgid "Reachable" +msgstr "Acessível" + +#: dcim/tables/connections.py:46 dcim/tables/devices.py:524 +#: templates/dcim/inventoryitem_edit.html:64 +#: templates/dcim/poweroutlet.html:47 templates/dcim/powerport.html:18 +msgid "Power Port" +msgstr "Porta de alimentação" + +#: dcim/tables/devices.py:94 dcim/tables/devices.py:139 +#: dcim/tables/racks.py:81 dcim/tables/sites.py:143 +#: netbox/navigation/menu.py:57 netbox/navigation/menu.py:61 +#: netbox/navigation/menu.py:63 virtualization/forms/model_forms.py:125 +#: virtualization/tables/clusters.py:83 virtualization/views.py:211 +msgid "Devices" +msgstr "Dispositivos" + +#: dcim/tables/devices.py:99 dcim/tables/devices.py:144 +#: virtualization/tables/clusters.py:88 +msgid "VMs" +msgstr "VMs" + +#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: extras/forms/model_forms.py:506 templates/dcim/device.html:114 +#: templates/dcim/device/render_config.html:11 +#: templates/dcim/device/render_config.html:15 +#: templates/dcim/devicerole.html:47 templates/dcim/platform.html:44 +#: templates/extras/configtemplate.html:10 +#: templates/virtualization/virtualmachine.html:47 +#: templates/virtualization/virtualmachine/render_config.html:11 +#: templates/virtualization/virtualmachine/render_config.html:15 +#: virtualization/tables/virtualmachines.py:93 +msgid "Config Template" +msgstr "Modelo de configuração" + +#: dcim/tables/devices.py:216 dcim/tables/devices.py:1069 +#: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 +#: ipam/tables/ip.py:352 ipam/tables/ip.py:418 ipam/tables/ip.py:441 +#: templates/ipam/ipaddress.html:12 templates/ipam/ipaddress_edit.html:14 +#: virtualization/tables/virtualmachines.py:81 +msgid "IP Address" +msgstr "Endereço IP" + +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1073 +#: virtualization/tables/virtualmachines.py:72 +msgid "IPv4 Address" +msgstr "Endereço IPv4" + +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1077 +#: virtualization/tables/virtualmachines.py:76 +msgid "IPv6 Address" +msgstr "Endereço IPv6" + +#: dcim/tables/devices.py:239 +msgid "VC Position" +msgstr "Posição VC" + +#: dcim/tables/devices.py:242 +msgid "VC Priority" +msgstr "Prioridade VC" + +#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: templates/dcim/devicebay_populate.html:16 +msgid "Parent Device" +msgstr "Dispositivo principal" + +#: dcim/tables/devices.py:254 +msgid "Position (Device Bay)" +msgstr "Posição (compartimento do dispositivo)" + +#: dcim/tables/devices.py:263 +msgid "Console ports" +msgstr "Portas de console" + +#: dcim/tables/devices.py:266 +msgid "Console server ports" +msgstr "Portas do servidor de console" + +#: dcim/tables/devices.py:269 +msgid "Power ports" +msgstr "Portas de alimentação" + +#: dcim/tables/devices.py:272 +msgid "Power outlets" +msgstr "Tomadas elétricas" + +#: dcim/tables/devices.py:275 dcim/tables/devices.py:1082 +#: dcim/tables/devicetypes.py:125 dcim/views.py:1002 dcim/views.py:1241 +#: dcim/views.py:1927 netbox/navigation/menu.py:82 +#: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 +#: templates/dcim/device_list.html:43 templates/dcim/devicetype/base.html:34 +#: templates/dcim/module.html:34 templates/dcim/moduletype/base.html:34 +#: templates/dcim/virtualdevicecontext.html:64 +#: templates/dcim/virtualdevicecontext.html:85 +#: templates/virtualization/virtualmachine/base.html:27 +#: templates/virtualization/virtualmachine_list.html:14 +#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: wireless/tables/wirelesslan.py:55 +msgid "Interfaces" +msgstr "Interfaces" + +#: dcim/tables/devices.py:278 +msgid "Front ports" +msgstr "Portas frontais" + +#: dcim/tables/devices.py:284 +msgid "Device bays" +msgstr "Compartimentos para dispositivos" + +#: dcim/tables/devices.py:287 +msgid "Module bays" +msgstr "Compartimentos de módulos" + +#: dcim/tables/devices.py:290 +msgid "Inventory items" +msgstr "Itens de inventário" + +#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: templates/dcim/modulebay.html:17 +msgid "Module Bay" +msgstr "Compartimento do módulo" + +#: dcim/tables/devices.py:350 +msgid "Cable Color" +msgstr "Cor do cabo" + +#: dcim/tables/devices.py:356 +msgid "Link Peers" +msgstr "Vincular pares" + +#: dcim/tables/devices.py:359 +msgid "Mark Connected" +msgstr "Marcar Conectado" + +#: dcim/tables/devices.py:470 +msgid "Maximum draw (W)" +msgstr "Consumo máximo (W)" + +#: dcim/tables/devices.py:473 +msgid "Allocated draw (W)" +msgstr "Sorteio alocado (W)" + +#: dcim/tables/devices.py:573 ipam/forms/model_forms.py:707 +#: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:671 +#: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 +#: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 +#: templates/ipam/service.html:43 templates/virtualization/vminterface.html:88 +#: vpn/tables/tunnels.py:94 +msgid "IP Addresses" +msgstr "Endereços IP" + +#: dcim/tables/devices.py:579 netbox/navigation/menu.py:190 +#: templates/ipam/inc/panels/fhrp_groups.html:5 +msgid "FHRP Groups" +msgstr "Grupos FHRP" + +#: dcim/tables/devices.py:591 templates/dcim/interface.html:90 +#: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 +#: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 +#: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 +#: vpn/forms/filtersets.py:81 vpn/forms/model_forms.py:59 +#: vpn/forms/model_forms.py:144 vpn/tables/tunnels.py:74 +msgid "Tunnel" +msgstr "Túnel" + +#: dcim/tables/devices.py:616 dcim/tables/devicetypes.py:224 +#: templates/dcim/interface.html:66 +msgid "Management Only" +msgstr "Somente gerenciamento" + +#: dcim/tables/devices.py:624 +msgid "Wireless link" +msgstr "Link sem fio" + +#: dcim/tables/devices.py:634 +msgid "VDCs" +msgstr "VDCs" + +#: dcim/tables/devices.py:642 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1077 dcim/views.py:2020 +#: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 +#: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 +#: templates/dcim/inc/panels/inventory_items.html:5 +#: templates/dcim/inventoryitemrole.html:33 +msgid "Inventory Items" +msgstr "Itens de inventário" + +#: dcim/tables/devices.py:723 +#: templates/circuits/inc/circuit_termination.html:80 +#: templates/dcim/consoleport.html:81 templates/dcim/consoleserverport.html:81 +#: templates/dcim/frontport.html:53 templates/dcim/frontport.html:125 +#: templates/dcim/interface.html:196 templates/dcim/inventoryitem_edit.html:69 +#: templates/dcim/rearport.html:18 templates/dcim/rearport.html:115 +msgid "Rear Port" +msgstr "Porta traseira" + +#: dcim/tables/devices.py:888 templates/dcim/modulebay.html:51 +msgid "Installed Module" +msgstr "Módulo instalado" + +#: dcim/tables/devices.py:891 +msgid "Module Serial" +msgstr "Módulo serial" + +#: dcim/tables/devices.py:895 +msgid "Module Asset Tag" +msgstr "Etiqueta de ativo do módulo" + +#: dcim/tables/devices.py:904 +msgid "Module Status" +msgstr "Status do módulo" + +#: dcim/tables/devices.py:946 dcim/tables/devicetypes.py:308 +#: templates/dcim/inventoryitem.html:41 +msgid "Component" +msgstr "Parte" + +#: dcim/tables/devices.py:1001 +msgid "Items" +msgstr "Itens" + +#: dcim/tables/devicetypes.py:38 netbox/navigation/menu.py:72 +#: netbox/navigation/menu.py:74 +msgid "Device Types" +msgstr "Tipos de dispositivos" + +#: dcim/tables/devicetypes.py:43 netbox/navigation/menu.py:75 +msgid "Module Types" +msgstr "Tipos de módulo" + +#: dcim/tables/devicetypes.py:53 extras/forms/filtersets.py:379 +#: extras/forms/model_forms.py:414 netbox/navigation/menu.py:66 +msgid "Platforms" +msgstr "Plataformas" + +#: dcim/tables/devicetypes.py:85 templates/dcim/devicetype.html:32 +msgid "Default Platform" +msgstr "Plataforma padrão" + +#: dcim/tables/devicetypes.py:89 templates/dcim/devicetype.html:48 +msgid "Full Depth" +msgstr "Profundidade total" + +#: dcim/tables/devicetypes.py:98 +msgid "U Height" +msgstr "Altura U" + +#: dcim/tables/devicetypes.py:110 dcim/tables/modules.py:26 +msgid "Instances" +msgstr "Instâncias" + +#: dcim/tables/devicetypes.py:113 dcim/views.py:942 dcim/views.py:1181 +#: dcim/views.py:1867 netbox/navigation/menu.py:85 +#: templates/dcim/device/base.html:25 templates/dcim/device_list.html:15 +#: templates/dcim/devicetype/base.html:22 templates/dcim/module.html:22 +#: templates/dcim/moduletype/base.html:22 +msgid "Console Ports" +msgstr "Portas de console" + +#: dcim/tables/devicetypes.py:116 dcim/views.py:957 dcim/views.py:1196 +#: dcim/views.py:1882 netbox/navigation/menu.py:86 +#: templates/dcim/device/base.html:28 templates/dcim/device_list.html:22 +#: templates/dcim/devicetype/base.html:25 templates/dcim/module.html:25 +#: templates/dcim/moduletype/base.html:25 +msgid "Console Server Ports" +msgstr "Portas do servidor de console" + +#: dcim/tables/devicetypes.py:119 dcim/views.py:972 dcim/views.py:1211 +#: dcim/views.py:1897 netbox/navigation/menu.py:87 +#: templates/dcim/device/base.html:31 templates/dcim/device_list.html:29 +#: templates/dcim/devicetype/base.html:28 templates/dcim/module.html:28 +#: templates/dcim/moduletype/base.html:28 +msgid "Power Ports" +msgstr "Portas de alimentação" + +#: dcim/tables/devicetypes.py:122 dcim/views.py:987 dcim/views.py:1226 +#: dcim/views.py:1912 netbox/navigation/menu.py:88 +#: templates/dcim/device/base.html:34 templates/dcim/device_list.html:36 +#: templates/dcim/devicetype/base.html:31 templates/dcim/module.html:31 +#: templates/dcim/moduletype/base.html:31 +msgid "Power Outlets" +msgstr "Tomadas elétricas" + +#: dcim/tables/devicetypes.py:128 dcim/views.py:1017 dcim/views.py:1256 +#: dcim/views.py:1948 netbox/navigation/menu.py:83 +#: templates/dcim/device/base.html:40 templates/dcim/devicetype/base.html:37 +#: templates/dcim/module.html:37 templates/dcim/moduletype/base.html:37 +msgid "Front Ports" +msgstr "Portas frontais" + +#: dcim/tables/devicetypes.py:131 dcim/views.py:1032 dcim/views.py:1271 +#: dcim/views.py:1963 netbox/navigation/menu.py:84 +#: templates/dcim/device/base.html:43 templates/dcim/device_list.html:50 +#: templates/dcim/devicetype/base.html:40 templates/dcim/module.html:40 +#: templates/dcim/moduletype/base.html:40 +msgid "Rear Ports" +msgstr "Portas traseiras" + +#: dcim/tables/devicetypes.py:134 dcim/views.py:1062 dcim/views.py:2001 +#: netbox/navigation/menu.py:90 templates/dcim/device/base.html:49 +#: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46 +msgid "Device Bays" +msgstr "Compartimentos de dispositivos" + +#: dcim/tables/devicetypes.py:137 dcim/views.py:1047 dcim/views.py:1982 +#: netbox/navigation/menu.py:89 templates/dcim/device/base.html:46 +#: templates/dcim/device_list.html:64 templates/dcim/devicetype/base.html:43 +msgid "Module Bays" +msgstr "Compartimentos de módulos" + +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 +#: templates/core/configrevision.html:59 templates/dcim/powerpanel.html:53 +msgid "Power Feeds" +msgstr "Alimentações de energia" + +#: dcim/tables/power.py:80 templates/dcim/powerfeed.html:106 +msgid "Max Utilization" +msgstr "Utilização máxima" + +#: dcim/tables/power.py:84 +msgid "Available Power (VA)" +msgstr "Potência disponível (VA)" + +#: dcim/tables/racks.py:29 dcim/tables/sites.py:138 +#: netbox/navigation/menu.py:25 netbox/navigation/menu.py:27 +msgid "Racks" +msgstr "Prateleiras" + +#: dcim/tables/racks.py:73 templates/dcim/device.html:323 +#: templates/dcim/rack.html:95 +msgid "Height" +msgstr "Altura" + +#: dcim/tables/racks.py:85 +msgid "Space" +msgstr "Espaço" + +#: dcim/tables/racks.py:96 templates/dcim/rack.html:105 +msgid "Outer Width" +msgstr "Largura externa" + +#: dcim/tables/racks.py:100 templates/dcim/rack.html:115 +msgid "Outer Depth" +msgstr "Profundidade externa" + +#: dcim/tables/racks.py:108 +msgid "Max Weight" +msgstr "Peso máximo" + +#: dcim/tables/sites.py:30 dcim/tables/sites.py:57 +#: extras/forms/filtersets.py:359 extras/forms/model_forms.py:394 +#: ipam/forms/bulk_edit.py:128 ipam/forms/model_forms.py:152 +#: ipam/tables/asn.py:66 netbox/navigation/menu.py:16 +#: netbox/navigation/menu.py:18 +msgid "Sites" +msgstr "Sites" + +#: dcim/views.py:131 +#, python-brace-format +msgid "Disconnected {count} {type}" +msgstr "Desconectado {count} {type}" + +#: dcim/views.py:692 netbox/navigation/menu.py:29 +msgid "Reservations" +msgstr "Reservas" + +#: dcim/views.py:711 +msgid "Non-Racked Devices" +msgstr "Dispositivos sem rack" + +#: dcim/views.py:2033 extras/forms/model_forms.py:454 +#: templates/extras/configcontext.html:10 +#: virtualization/forms/model_forms.py:228 virtualization/views.py:408 +msgid "Config Context" +msgstr "Contexto de configuração" + +#: dcim/views.py:2043 virtualization/views.py:418 +msgid "Render Config" +msgstr "Configuração de renderização" + +#: dcim/views.py:2971 ipam/tables/ip.py:233 +msgid "Children" +msgstr "Crianças" + +#: extras/choices.py:27 extras/forms/misc.py:14 +msgid "Text" +msgstr "Texto" + +#: extras/choices.py:28 +msgid "Text (long)" +msgstr "Texto (longo)" + +#: extras/choices.py:29 +msgid "Integer" +msgstr "Número inteiro" + +#: extras/choices.py:30 +msgid "Decimal" +msgstr "Decimal" + +#: extras/choices.py:31 +msgid "Boolean (true/false)" +msgstr "Boolean (verdadeiro/falso)" + +#: extras/choices.py:32 +msgid "Date" +msgstr "Encontro" + +#: extras/choices.py:33 +msgid "Date & time" +msgstr "Data e hora" + +#: extras/choices.py:35 +msgid "JSON" +msgstr "JSON" + +#: extras/choices.py:36 +msgid "Selection" +msgstr "Seleção" + +#: extras/choices.py:37 +msgid "Multiple selection" +msgstr "Seleção múltipla" + +#: extras/choices.py:39 +msgid "Multiple objects" +msgstr "Vários objetos" + +#: extras/choices.py:50 templates/extras/customfield.html:69 vpn/choices.py:20 +#: wireless/choices.py:27 +msgid "Disabled" +msgstr "Desativado" + +#: extras/choices.py:51 +msgid "Loose" +msgstr "Solto" + +#: extras/choices.py:52 +msgid "Exact" +msgstr "Exato" + +#: extras/choices.py:63 +msgid "Always" +msgstr "Sempre" + +#: extras/choices.py:64 +msgid "If set" +msgstr "Se definido" + +#: extras/choices.py:65 extras/choices.py:78 +msgid "Hidden" +msgstr "Escondido" + +#: extras/choices.py:76 +msgid "Yes" +msgstr "sim" + +#: extras/choices.py:77 +msgid "No" +msgstr "Não" + +#: extras/choices.py:105 templates/tenancy/contact.html:58 +#: tenancy/forms/bulk_edit.py:117 wireless/forms/model_forms.py:159 +msgid "Link" +msgstr "Link" + +#: extras/choices.py:119 +msgid "Newest" +msgstr "Mais recente" + +#: extras/choices.py:120 +msgid "Oldest" +msgstr "Mais antigo" + +#: extras/choices.py:136 templates/generic/object.html:51 +msgid "Updated" +msgstr "Atualizado" + +#: extras/choices.py:137 +msgid "Deleted" +msgstr "Excluído" + +#: extras/choices.py:154 extras/choices.py:176 +msgid "Info" +msgstr "Informações" + +#: extras/choices.py:155 extras/choices.py:175 +msgid "Success" +msgstr "Sucesso" + +#: extras/choices.py:156 extras/choices.py:177 +msgid "Warning" +msgstr "Aviso" + +#: extras/choices.py:157 +msgid "Danger" +msgstr "Perigo" + +#: extras/choices.py:174 utilities/choices.py:190 +msgid "Default" +msgstr "Padrão" + +#: extras/choices.py:178 +msgid "Failure" +msgstr "Falha" + +#: extras/choices.py:185 +msgid "Hourly" +msgstr "A cada hora" + +#: extras/choices.py:186 +msgid "12 hours" +msgstr "12 horas" + +#: extras/choices.py:187 +msgid "Daily" +msgstr "Diariamente" + +#: extras/choices.py:188 +msgid "Weekly" +msgstr "Semanalmente" + +#: extras/choices.py:189 +msgid "30 days" +msgstr "30 dias" + +#: extras/choices.py:254 extras/tables/tables.py:287 +#: templates/dcim/virtualchassis_edit.html:108 +#: templates/extras/eventrule.html:51 +#: templates/generic/bulk_add_component.html:56 +#: templates/generic/object_edit.html:29 templates/generic/object_edit.html:70 +#: templates/ipam/inc/ipaddress_edit_header.html:10 +msgid "Create" +msgstr "Criar" + +#: extras/choices.py:255 extras/tables/tables.py:290 +#: templates/extras/eventrule.html:55 +msgid "Update" +msgstr "Atualizar" + +#: extras/choices.py:256 extras/tables/tables.py:293 +#: templates/circuits/inc/circuit_termination.html:22 +#: templates/dcim/devicetype/component_templates.html:24 +#: templates/dcim/inc/panels/inventory_items.html:29 +#: templates/dcim/moduletype/component_templates.html:24 +#: templates/dcim/powerpanel.html:71 templates/extras/eventrule.html:59 +#: templates/extras/report_list.html:34 templates/extras/script_list.html:33 +#: templates/generic/bulk_delete.html:18 templates/generic/bulk_delete.html:45 +#: templates/generic/object_delete.html:15 templates/htmx/delete_form.html:57 +#: templates/ipam/inc/panels/fhrp_groups.html:35 +#: templates/users/objectpermission.html:49 +#: utilities/templates/buttons/delete.html:9 +msgid "Delete" +msgstr "Excluir" + +#: extras/choices.py:280 utilities/choices.py:143 utilities/choices.py:191 +msgid "Blue" +msgstr "Azul" + +#: extras/choices.py:281 utilities/choices.py:142 utilities/choices.py:192 +msgid "Indigo" +msgstr "Índigo" + +#: extras/choices.py:282 utilities/choices.py:140 utilities/choices.py:193 +msgid "Purple" +msgstr "Roxa" + +#: extras/choices.py:283 utilities/choices.py:137 utilities/choices.py:194 +msgid "Pink" +msgstr "Rosa" + +#: extras/choices.py:284 utilities/choices.py:136 utilities/choices.py:195 +msgid "Red" +msgstr "Vermelho" + +#: extras/choices.py:285 utilities/choices.py:154 utilities/choices.py:196 +msgid "Orange" +msgstr "Alaranjado" + +#: extras/choices.py:286 utilities/choices.py:152 utilities/choices.py:197 +msgid "Yellow" +msgstr "Amarelo" + +#: extras/choices.py:287 utilities/choices.py:149 utilities/choices.py:198 +msgid "Green" +msgstr "Verde" + +#: extras/choices.py:288 utilities/choices.py:146 utilities/choices.py:199 +msgid "Teal" +msgstr "- Marinho" + +#: extras/choices.py:289 utilities/choices.py:145 utilities/choices.py:200 +msgid "Cyan" +msgstr "Ciano" + +#: extras/choices.py:290 utilities/choices.py:201 +msgid "Gray" +msgstr "Cinza" + +#: extras/choices.py:291 utilities/choices.py:160 utilities/choices.py:202 +msgid "Black" +msgstr "Preto" + +#: extras/choices.py:292 utilities/choices.py:161 utilities/choices.py:203 +msgid "White" +msgstr "Branco" + +#: extras/choices.py:306 extras/forms/model_forms.py:233 +#: extras/forms/model_forms.py:321 templates/extras/webhook.html:11 +msgid "Webhook" +msgstr "Webhook" + +#: extras/choices.py:307 templates/extras/script/base.html:29 +msgid "Script" +msgstr "Roteiro" + +#: extras/dashboard/forms.py:38 +msgid "Widget type" +msgstr "Tipo de widget" + +#: extras/dashboard/widgets.py:148 +msgid "Note" +msgstr "Nota" + +#: extras/dashboard/widgets.py:149 +msgid "Display some arbitrary custom content. Markdown is supported." +msgstr "" +"Exiba algum conteúdo personalizado arbitrário. O Markdown é suportado." + +#: extras/dashboard/widgets.py:162 +msgid "Object Counts" +msgstr "Contagens de objetos" + +#: extras/dashboard/widgets.py:163 +msgid "" +"Display a set of NetBox models and the number of objects created for each " +"type." +msgstr "" +"Exiba um conjunto de modelos NetBox e o número de objetos criados para cada " +"tipo." + +#: extras/dashboard/widgets.py:173 +msgid "Filters to apply when counting the number of objects" +msgstr "Filtros a serem aplicados ao contar o número de objetos" + +#: extras/dashboard/widgets.py:209 +msgid "Object List" +msgstr "Lista de objetos" + +#: extras/dashboard/widgets.py:210 +msgid "Display an arbitrary list of objects." +msgstr "Exiba uma lista arbitrária de objetos." + +#: extras/dashboard/widgets.py:223 +msgid "The default number of objects to display" +msgstr "O número padrão de objetos a serem exibidos" + +#: extras/dashboard/widgets.py:270 +msgid "RSS Feed" +msgstr "Feed RSS" + +#: extras/dashboard/widgets.py:275 +msgid "Embed an RSS feed from an external website." +msgstr "Incorpore um feed RSS de um site externo." + +#: extras/dashboard/widgets.py:282 +msgid "Feed URL" +msgstr "URL do feed" + +#: extras/dashboard/widgets.py:287 +msgid "The maximum number of objects to display" +msgstr "O número máximo de objetos a serem exibidos" + +#: extras/dashboard/widgets.py:292 +msgid "How long to stored the cached content (in seconds)" +msgstr "" +"Por quanto tempo o conteúdo em cache deve ser armazenado (em segundos)" + +#: extras/dashboard/widgets.py:344 templates/account/base.html:10 +#: templates/account/bookmarks.html:7 templates/inc/profile_button.html:29 +msgid "Bookmarks" +msgstr "Favoritos" + +#: extras/dashboard/widgets.py:348 +msgid "Show your personal bookmarks" +msgstr "Mostre seus favoritos pessoais" + +#: extras/filtersets.py:207 extras/filtersets.py:542 extras/filtersets.py:570 +msgid "Data file (ID)" +msgstr "Arquivo de dados (ID)" + +#: extras/filtersets.py:479 virtualization/forms/filtersets.py:114 +msgid "Cluster type" +msgstr "Tipo de cluster" + +#: extras/filtersets.py:485 virtualization/filtersets.py:95 +#: virtualization/filtersets.py:146 +msgid "Cluster type (slug)" +msgstr "Tipo de cluster (lesma)" + +#: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 +#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +msgid "Cluster group" +msgstr "Grupo de clusters" + +#: extras/filtersets.py:496 virtualization/filtersets.py:135 +msgid "Cluster group (slug)" +msgstr "Grupo de clusters (lesma)" + +#: extras/filtersets.py:506 tenancy/forms/forms.py:16 +#: tenancy/forms/forms.py:39 +msgid "Tenant group" +msgstr "Grupo de inquilinos" + +#: extras/filtersets.py:512 tenancy/filtersets.py:163 +#: tenancy/filtersets.py:183 +msgid "Tenant group (slug)" +msgstr "Grupo de inquilinos (lesma)" + +#: extras/filtersets.py:528 templates/extras/tag.html:12 +msgid "Tag" +msgstr "Tag" + +#: extras/filtersets.py:534 +msgid "Tag (slug)" +msgstr "Tag (lesma)" + +#: extras/filtersets.py:594 extras/forms/filtersets.py:438 +msgid "Has local config context data" +msgstr "Tem dados de contexto de configuração local" + +#: extras/filtersets.py:619 +msgid "User name" +msgstr "Nome de usuário" + +#: extras/forms/bulk_edit.py:32 extras/forms/filtersets.py:56 +msgid "Group name" +msgstr "Nome do grupo" + +#: extras/forms/bulk_edit.py:40 extras/forms/filtersets.py:64 +#: extras/tables/tables.py:47 templates/extras/customfield.html:39 +#: templates/generic/bulk_import.html:116 +msgid "Required" +msgstr "Obrigatório" + +#: extras/forms/bulk_edit.py:53 extras/forms/bulk_import.py:57 +#: extras/forms/filtersets.py:78 extras/models/customfields.py:193 +msgid "UI visible" +msgstr "UI visível" + +#: extras/forms/bulk_edit.py:58 extras/forms/bulk_import.py:63 +#: extras/forms/filtersets.py:83 extras/models/customfields.py:200 +msgid "UI editable" +msgstr "UI editável" + +#: extras/forms/bulk_edit.py:63 extras/forms/filtersets.py:86 +msgid "Is cloneable" +msgstr "É clonável" + +#: extras/forms/bulk_edit.py:102 extras/forms/filtersets.py:126 +msgid "New window" +msgstr "Nova janela" + +#: extras/forms/bulk_edit.py:111 +msgid "Button class" +msgstr "Classe de botão" + +#: extras/forms/bulk_edit.py:128 extras/forms/filtersets.py:164 +#: extras/models/models.py:439 +msgid "MIME type" +msgstr "Tipo MIME" + +#: extras/forms/bulk_edit.py:133 extras/forms/filtersets.py:167 +msgid "File extension" +msgstr "Extensão de arquivo" + +#: extras/forms/bulk_edit.py:138 extras/forms/filtersets.py:171 +msgid "As attachment" +msgstr "Como anexo" + +#: extras/forms/bulk_edit.py:166 extras/forms/filtersets.py:213 +#: extras/tables/tables.py:214 templates/extras/savedfilter.html:30 +msgid "Shared" +msgstr "Compartilhado" + +#: extras/forms/bulk_edit.py:189 extras/forms/filtersets.py:242 +#: extras/models/models.py:204 +msgid "HTTP method" +msgstr "Método HTTP" + +#: extras/forms/bulk_edit.py:193 extras/forms/filtersets.py:236 +#: templates/extras/webhook.html:37 +msgid "Payload URL" +msgstr "URL do payload" + +#: extras/forms/bulk_edit.py:198 extras/models/models.py:244 +msgid "SSL verification" +msgstr "Verificação SSL" + +#: extras/forms/bulk_edit.py:201 templates/extras/webhook.html:45 +msgid "Secret" +msgstr "Segredo" + +#: extras/forms/bulk_edit.py:206 +msgid "CA file path" +msgstr "Caminho do arquivo CA" + +#: extras/forms/bulk_edit.py:225 +msgid "On create" +msgstr "Ao criar" + +#: extras/forms/bulk_edit.py:230 +msgid "On update" +msgstr "Em atualização" + +#: extras/forms/bulk_edit.py:235 +msgid "On delete" +msgstr "Ao excluir" + +#: extras/forms/bulk_edit.py:240 +msgid "On job start" +msgstr "No início do trabalho" + +#: extras/forms/bulk_edit.py:245 +msgid "On job end" +msgstr "No final do trabalho" + +#: extras/forms/bulk_edit.py:282 +msgid "Is active" +msgstr "Está ativo" + +#: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 +#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 +#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 +#: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 +#: extras/forms/model_forms.py:154 extras/forms/model_forms.py:195 +#: extras/forms/model_forms.py:251 +msgid "Content types" +msgstr "Tipos de conteúdo" + +#: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 +#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 +#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +msgid "One or more assigned object types" +msgstr "Um ou mais tipos de objetos atribuídos" + +#: extras/forms/bulk_import.py:41 +msgid "Field data type (e.g. text, integer, etc.)" +msgstr "Tipo de dados de campo (por exemplo, texto, número inteiro etc.)" + +#: extras/forms/bulk_import.py:44 extras/forms/filtersets.py:48 +#: extras/forms/filtersets.py:259 extras/forms/model_forms.py:47 +#: extras/forms/model_forms.py:221 tenancy/forms/filtersets.py:91 +msgid "Object type" +msgstr "Tipo de objeto" + +#: extras/forms/bulk_import.py:47 +msgid "Object type (for object or multi-object fields)" +msgstr "Tipo de objeto (para campos de objeto ou de vários objetos)" + +#: extras/forms/bulk_import.py:50 extras/forms/filtersets.py:73 +msgid "Choice set" +msgstr "Conjunto de opções" + +#: extras/forms/bulk_import.py:54 +msgid "Choice set (for selection fields)" +msgstr "Conjunto de opções (para campos de seleção)" + +#: extras/forms/bulk_import.py:60 +msgid "Whether the custom field is displayed in the UI" +msgstr "Se o campo personalizado é exibido na interface do usuário" + +#: extras/forms/bulk_import.py:66 +msgid "Whether the custom field is editable in the UI" +msgstr "Se o campo personalizado é editável na interface do usuário" + +#: extras/forms/bulk_import.py:82 +msgid "The base set of predefined choices to use (if any)" +msgstr "O conjunto básico de opções predefinidas a serem usadas (se houver)" + +#: extras/forms/bulk_import.py:88 +msgid "" +"Quoted string of comma-separated field choices with optional labels " +"separated by colon: \"choice1:First Choice,choice2:Second Choice\"" +msgstr "" +"Sequência entre aspas de opções de campo separadas por vírgula com rótulos " +"opcionais separados por dois pontos: “Choice1:First Choice, Choice2:Second " +"Choice”" + +#: extras/forms/bulk_import.py:182 +msgid "Action object" +msgstr "Objeto de ação" + +#: extras/forms/bulk_import.py:184 +msgid "Webhook name or script as dotted path module.Class" +msgstr "Nome do webhook ou script como caminho pontilhado module.Class" + +#: extras/forms/bulk_import.py:236 +msgid "Assigned object type" +msgstr "Tipo de objeto atribuído" + +#: extras/forms/bulk_import.py:241 +msgid "The classification of entry" +msgstr "A classificação da entrada" + +#: extras/forms/filtersets.py:53 +msgid "Field type" +msgstr "Tipo de campo" + +#: extras/forms/filtersets.py:97 extras/tables/tables.py:65 +#: templates/generic/bulk_import.html:148 +msgid "Choices" +msgstr "Escolhas" + +#: extras/forms/filtersets.py:141 extras/forms/filtersets.py:327 +#: extras/forms/filtersets.py:417 extras/forms/model_forms.py:449 +#: templates/core/job.html:86 templates/extras/configcontext.html:86 +#: templates/extras/eventrule.html:111 +msgid "Data" +msgstr "Dados" + +#: extras/forms/filtersets.py:152 extras/forms/filtersets.py:341 +#: extras/forms/filtersets.py:427 utilities/choices.py:219 +#: utilities/forms/bulk_import.py:27 +msgid "Data file" +msgstr "Arquivo de dados" + +#: extras/forms/filtersets.py:185 +msgid "Content type" +msgstr "Tipo de conteúdo" + +#: extras/forms/filtersets.py:232 extras/models/models.py:209 +msgid "HTTP content type" +msgstr "Tipo de conteúdo HTTP" + +#: extras/forms/filtersets.py:254 extras/forms/model_forms.py:269 +#: templates/extras/eventrule.html:46 +msgid "Events" +msgstr "Eventos" + +#: extras/forms/filtersets.py:264 +msgid "Action type" +msgstr "Tipo de ação" + +#: extras/forms/filtersets.py:278 +msgid "Object creations" +msgstr "Criações de objetos" + +#: extras/forms/filtersets.py:285 +msgid "Object updates" +msgstr "Atualizações de objetos" + +#: extras/forms/filtersets.py:292 +msgid "Object deletions" +msgstr "Exclusões de objetos" + +#: extras/forms/filtersets.py:299 +msgid "Job starts" +msgstr "Início do trabalho" + +#: extras/forms/filtersets.py:306 extras/forms/model_forms.py:289 +msgid "Job terminations" +msgstr "Rescisões de trabalho" + +#: extras/forms/filtersets.py:315 +msgid "Tagged object type" +msgstr "Tipo de objeto marcado" + +#: extras/forms/filtersets.py:320 +msgid "Allowed object type" +msgstr "Tipo de objeto permitido" + +#: extras/forms/filtersets.py:349 extras/forms/model_forms.py:384 +#: netbox/navigation/menu.py:19 +msgid "Regions" +msgstr "Regiões" + +#: extras/forms/filtersets.py:354 extras/forms/model_forms.py:389 +msgid "Site groups" +msgstr "Grupos de sites" + +#: extras/forms/filtersets.py:364 extras/forms/model_forms.py:399 +#: netbox/navigation/menu.py:21 +msgid "Locations" +msgstr "Localizações" + +#: extras/forms/filtersets.py:369 extras/forms/model_forms.py:404 +msgid "Device types" +msgstr "Tipos de dispositivos" + +#: extras/forms/filtersets.py:374 extras/forms/model_forms.py:409 +msgid "Roles" +msgstr "Funções" + +#: extras/forms/filtersets.py:384 extras/forms/model_forms.py:419 +msgid "Cluster types" +msgstr "Tipos de cluster" + +#: extras/forms/filtersets.py:390 extras/forms/model_forms.py:424 +msgid "Cluster groups" +msgstr "Grupos de clusters" + +#: extras/forms/filtersets.py:395 extras/forms/model_forms.py:429 +#: netbox/navigation/menu.py:243 netbox/navigation/menu.py:245 +#: templates/virtualization/clustertype.html:33 +#: virtualization/tables/clusters.py:23 virtualization/tables/clusters.py:45 +msgid "Clusters" +msgstr "Clusters" + +#: extras/forms/filtersets.py:400 extras/forms/model_forms.py:434 +msgid "Tenant groups" +msgstr "Grupos de inquilinos" + +#: extras/forms/filtersets.py:454 extras/forms/filtersets.py:495 +msgid "After" +msgstr "Depois" + +#: extras/forms/filtersets.py:459 extras/forms/filtersets.py:500 +msgid "Before" +msgstr "Antes" + +#: extras/forms/filtersets.py:490 extras/tables/tables.py:426 +#: templates/extras/htmx/report_result.html:43 +#: templates/extras/objectchange.html:34 +msgid "Time" +msgstr "Tempo" + +#: extras/forms/filtersets.py:504 extras/forms/model_forms.py:271 +#: extras/tables/tables.py:440 templates/extras/eventrule.html:90 +#: templates/extras/objectchange.html:50 +msgid "Action" +msgstr "Ação" + +#: extras/forms/model_forms.py:50 +msgid "Type of the related object (for object/multi-object fields only)" +msgstr "" +"Tipo do objeto relacionado (somente para campos de objeto/vários objetos)" + +#: extras/forms/model_forms.py:58 templates/extras/customfield.html:11 +msgid "Custom Field" +msgstr "Campo personalizado" + +#: extras/forms/model_forms.py:61 templates/extras/customfield.html:60 +msgid "Behavior" +msgstr "Comportamento" + +#: extras/forms/model_forms.py:62 +msgid "Values" +msgstr "Valores" + +#: extras/forms/model_forms.py:71 +msgid "" +"The type of data stored in this field. For object/multi-object fields, " +"select the related object type below." +msgstr "" +"O tipo de dados armazenados nesse campo. Para campos de objeto/multiobjeto, " +"selecione o tipo de objeto relacionado abaixo." + +#: extras/forms/model_forms.py:74 +msgid "" +"This will be displayed as help text for the form field. Markdown is " +"supported." +msgstr "" +"Isso será exibido como texto de ajuda para o campo do formulário. O Markdown" +" é suportado." + +#: extras/forms/model_forms.py:91 +msgid "" +"Enter one choice per line. An optional label may be specified for each " +"choice by appending it with a colon. Example:" +msgstr "" +"Insira uma opção por linha. Um rótulo opcional pode ser especificado para " +"cada opção anexando-o com dois pontos. Exemplo:" + +#: extras/forms/model_forms.py:132 templates/extras/customlink.html:10 +msgid "Custom Link" +msgstr "Link personalizado" + +#: extras/forms/model_forms.py:133 +msgid "Templates" +msgstr "Modelos" + +#: extras/forms/model_forms.py:145 +msgid "" +"Jinja2 template code for the link text. Reference the object as {{ " +"object }}. Links which render as empty text will not be displayed." +msgstr "" + +#: extras/forms/model_forms.py:148 +msgid "" +"Jinja2 template code for the link URL. Reference the object as {{ " +"object }}." +msgstr "" + +#: extras/forms/model_forms.py:158 extras/forms/model_forms.py:500 +msgid "Template code" +msgstr "Código do modelo" + +#: extras/forms/model_forms.py:164 templates/extras/exporttemplate.html:17 +msgid "Export Template" +msgstr "Modelo de exportação" + +#: extras/forms/model_forms.py:166 +msgid "Rendering" +msgstr "Renderização" + +#: extras/forms/model_forms.py:180 extras/forms/model_forms.py:525 +msgid "Template content is populated from the remote source selected below." +msgstr "" +"O conteúdo do modelo é preenchido a partir da fonte remota selecionada " +"abaixo." + +#: extras/forms/model_forms.py:187 extras/forms/model_forms.py:532 +msgid "Must specify either local content or a data file" +msgstr "Deve especificar o conteúdo local ou um arquivo de dados" + +#: extras/forms/model_forms.py:201 netbox/forms/mixins.py:68 +#: templates/extras/savedfilter.html:10 +msgid "Saved Filter" +msgstr "Filtro salvo" + +#: extras/forms/model_forms.py:234 templates/extras/webhook.html:28 +msgid "HTTP Request" +msgstr "Solicitação HTTP" + +#: extras/forms/model_forms.py:237 templates/extras/webhook.html:53 +msgid "SSL" +msgstr "SSL" + +#: extras/forms/model_forms.py:255 +msgid "Action choice" +msgstr "Escolha de ação" + +#: extras/forms/model_forms.py:260 +msgid "Enter conditions in JSON format." +msgstr "Insira as condições em JSON formato." + +#: extras/forms/model_forms.py:264 +msgid "" +"Enter parameters to pass to the action in JSON format." +msgstr "" +"Insira os parâmetros a serem passados para a ação em JSON formato." + +#: extras/forms/model_forms.py:268 templates/extras/eventrule.html:11 +msgid "Event Rule" +msgstr "Regra do evento" + +#: extras/forms/model_forms.py:270 templates/extras/eventrule.html:78 +msgid "Conditions" +msgstr "Condições" + +#: extras/forms/model_forms.py:285 +msgid "Creations" +msgstr "Criações" + +#: extras/forms/model_forms.py:286 +msgid "Updates" +msgstr "Atualizações" + +#: extras/forms/model_forms.py:287 +msgid "Deletions" +msgstr "Exclusões" + +#: extras/forms/model_forms.py:288 +msgid "Job executions" +msgstr "Execuções de empregos" + +#: extras/forms/model_forms.py:366 users/forms/model_forms.py:285 +msgid "Object types" +msgstr "Tipos de objetos" + +#: extras/forms/model_forms.py:439 netbox/navigation/menu.py:40 +#: tenancy/tables/tenants.py:22 +msgid "Tenants" +msgstr "Inquilinos" + +#: extras/forms/model_forms.py:456 ipam/forms/filtersets.py:141 +#: ipam/forms/filtersets.py:527 templates/extras/configcontext.html:62 +#: templates/ipam/ipaddress.html:62 templates/ipam/vlan_edit.html:30 +#: tenancy/forms/filtersets.py:86 users/forms/model_forms.py:323 +msgid "Assignment" +msgstr "Atribuição" + +#: extras/forms/model_forms.py:482 +msgid "Data is populated from the remote source selected below." +msgstr "Os dados são preenchidos a partir da fonte remota selecionada abaixo." + +#: extras/forms/model_forms.py:488 +msgid "Must specify either local data or a data file" +msgstr "Deve especificar dados locais ou um arquivo de dados" + +#: extras/forms/model_forms.py:507 templates/core/datafile.html:65 +msgid "Content" +msgstr "Conteúdo" + +#: extras/forms/reports.py:18 extras/forms/scripts.py:24 +msgid "Schedule at" +msgstr "Agende em" + +#: extras/forms/reports.py:19 +msgid "Schedule execution of report to a set time" +msgstr "Programe a execução do relatório em um horário definido" + +#: extras/forms/reports.py:24 extras/forms/scripts.py:30 +msgid "Recurs every" +msgstr "Recorre a cada" + +#: extras/forms/reports.py:28 +msgid "Interval at which this report is re-run (in minutes)" +msgstr "Intervalo no qual esse relatório é executado novamente (em minutos)" + +#: extras/forms/reports.py:36 extras/forms/scripts.py:42 +#, python-brace-format +msgid " (current time: {now})" +msgstr " (hora atual: {now})" + +#: extras/forms/reports.py:46 extras/forms/scripts.py:52 +msgid "Scheduled time must be in the future." +msgstr "O horário agendado deve ser no futuro." + +#: extras/forms/scripts.py:18 +msgid "Commit changes" +msgstr "Confirmar alterações" + +#: extras/forms/scripts.py:19 +msgid "Commit changes to the database (uncheck for a dry-run)" +msgstr "" +"Confirme as alterações no banco de dados (desmarque para uma execução a " +"seco)" + +#: extras/forms/scripts.py:25 +msgid "Schedule execution of script to a set time" +msgstr "Programe a execução do script para um horário definido" + +#: extras/forms/scripts.py:34 +msgid "Interval at which this script is re-run (in minutes)" +msgstr "Intervalo no qual esse script é executado novamente (em minutos)" + +#: extras/models/change_logging.py:24 +msgid "time" +msgstr "horas" + +#: extras/models/change_logging.py:37 +msgid "user name" +msgstr "nome de usuário" + +#: extras/models/change_logging.py:42 +msgid "request ID" +msgstr "ID da solicitação" + +#: extras/models/change_logging.py:47 extras/models/staging.py:69 +msgid "action" +msgstr "ação" + +#: extras/models/change_logging.py:81 +msgid "pre-change data" +msgstr "dados de pré-alteração" + +#: extras/models/change_logging.py:87 +msgid "post-change data" +msgstr "dados pós-alteração" + +#: extras/models/change_logging.py:101 +msgid "object change" +msgstr "mudança de objeto" + +#: extras/models/change_logging.py:102 +msgid "object changes" +msgstr "mudanças de objeto" + +#: extras/models/change_logging.py:118 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"O registro de alterações não é suportado para esse tipo de objeto ({type})." + +#: extras/models/configs.py:130 +msgid "config context" +msgstr "contexto de configuração" + +#: extras/models/configs.py:131 +msgid "config contexts" +msgstr "contextos de configuração" + +#: extras/models/configs.py:149 extras/models/configs.py:205 +msgid "JSON data must be in object form. Example:" +msgstr "Os dados JSON devem estar no formato de objeto. Exemplo:" + +#: extras/models/configs.py:169 +msgid "" +"Local config context data takes precedence over source contexts in the final" +" rendered config context" +msgstr "" +"Os dados do contexto de configuração local têm precedência sobre os " +"contextos de origem no contexto de configuração renderizado final" + +#: extras/models/configs.py:224 +msgid "template code" +msgstr "código de modelo" + +#: extras/models/configs.py:225 +msgid "Jinja2 template code." +msgstr "Código do modelo Jinja2." + +#: extras/models/configs.py:228 +msgid "environment parameters" +msgstr "parâmetros do ambiente" + +#: extras/models/configs.py:233 +msgid "" +"Any additional" +" parameters to pass when constructing the Jinja2 environment." +msgstr "" +"Qualquer parâmetros" +" adicionais para passar ao construir o ambiente Jinja2." + +#: extras/models/configs.py:240 +msgid "config template" +msgstr "modelo de configuração" + +#: extras/models/configs.py:241 +msgid "config templates" +msgstr "modelos de configuração" + +#: extras/models/customfields.py:72 +msgid "The object(s) to which this field applies." +msgstr "O (s) objeto (s) aos quais esse campo se aplica." + +#: extras/models/customfields.py:79 +msgid "The type of data this custom field holds" +msgstr "O tipo de dados que esse campo personalizado contém" + +#: extras/models/customfields.py:86 +msgid "The type of NetBox object this field maps to (for object fields)" +msgstr "" +"O tipo de objeto NetBox para o qual esse campo é mapeado (para campos de " +"objeto)" + +#: extras/models/customfields.py:92 +msgid "Internal field name" +msgstr "Nome do campo interno" + +#: extras/models/customfields.py:96 +msgid "Only alphanumeric characters and underscores are allowed." +msgstr "Somente caracteres alfanuméricos e sublinhados são permitidos." + +#: extras/models/customfields.py:101 +msgid "Double underscores are not permitted in custom field names." +msgstr "" +"Sublinhados duplos não são permitidos em nomes de campos personalizados." + +#: extras/models/customfields.py:112 +msgid "" +"Name of the field as displayed to users (if not provided, 'the field's name " +"will be used)" +msgstr "" +"Nome do campo exibido aos usuários (se não for fornecido, 'o nome do campo " +"será usado)" + +#: extras/models/customfields.py:116 extras/models/models.py:347 +msgid "group name" +msgstr "nome do grupo" + +#: extras/models/customfields.py:119 +msgid "Custom fields within the same group will be displayed together" +msgstr "Os campos personalizados dentro do mesmo grupo serão exibidos juntos" + +#: extras/models/customfields.py:127 +msgid "required" +msgstr "requeridos" + +#: extras/models/customfields.py:129 +msgid "" +"If true, this field is required when creating new objects or editing an " +"existing object." +msgstr "" +"Se verdadeiro, esse campo é obrigatório ao criar novos objetos ou editar um " +"objeto existente." + +#: extras/models/customfields.py:132 +msgid "search weight" +msgstr "peso de pesquisa" + +#: extras/models/customfields.py:135 +msgid "" +"Weighting for search. Lower values are considered more important. Fields " +"with a search weight of zero will be ignored." +msgstr "" +"Ponderação para pesquisa. Valores mais baixos são considerados mais " +"importantes. Os campos com peso de pesquisa zero serão ignorados." + +#: extras/models/customfields.py:140 +msgid "filter logic" +msgstr "lógica de filtro" + +#: extras/models/customfields.py:144 +msgid "" +"Loose matches any instance of a given string; exact matches the entire " +"field." +msgstr "" +"Loose corresponde a qualquer instância de uma determinada string; a exata " +"corresponde a todo o campo." + +#: extras/models/customfields.py:147 +msgid "default" +msgstr "padrão" + +#: extras/models/customfields.py:151 +msgid "" +"Default value for the field (must be a JSON value). Encapsulate strings with" +" double quotes (e.g. \"Foo\")." +msgstr "" +"Valor padrão para o campo (deve ser um valor JSON). Encapsular cadeias de " +"caracteres com aspas duplas (por exemplo, “Foo”)." + +#: extras/models/customfields.py:156 +msgid "display weight" +msgstr "peso da tela" + +#: extras/models/customfields.py:157 +msgid "Fields with higher weights appear lower in a form." +msgstr "Os campos com pesos maiores aparecem mais abaixo em um formulário." + +#: extras/models/customfields.py:162 +msgid "minimum value" +msgstr "valor mínimo" + +#: extras/models/customfields.py:163 +msgid "Minimum allowed value (for numeric fields)" +msgstr "Valor mínimo permitido (para campos numéricos)" + +#: extras/models/customfields.py:168 +msgid "maximum value" +msgstr "valor máximo" + +#: extras/models/customfields.py:169 +msgid "Maximum allowed value (for numeric fields)" +msgstr "Valor máximo permitido (para campos numéricos)" + +#: extras/models/customfields.py:175 +msgid "validation regex" +msgstr "regex de validação" + +#: extras/models/customfields.py:177 +#, python-brace-format +msgid "" +"Regular expression to enforce on text field values. Use ^ and $ to force " +"matching of entire string. For example, ^[A-Z]{3}$ will limit " +"values to exactly three uppercase letters." +msgstr "" +"Expressão regular para impor valores de campo de texto. Use ^ e $ para " +"forçar a correspondência de toda a string. Por exemplo, ^ " +"[A-Z]{3}$ limitará os valores a exatamente três letras maiúsculas." + +#: extras/models/customfields.py:185 +msgid "choice set" +msgstr "conjunto de opções" + +#: extras/models/customfields.py:194 +msgid "Specifies whether the custom field is displayed in the UI" +msgstr "Especifica se o campo personalizado é exibido na interface do usuário" + +#: extras/models/customfields.py:201 +msgid "Specifies whether the custom field value can be edited in the UI" +msgstr "" +"Especifica se o valor do campo personalizado pode ser editado na interface " +"do usuário" + +#: extras/models/customfields.py:205 +msgid "is cloneable" +msgstr "é clonável" + +#: extras/models/customfields.py:206 +msgid "Replicate this value when cloning objects" +msgstr "Replique esse valor ao clonar objetos" + +#: extras/models/customfields.py:219 +msgid "custom field" +msgstr "campo personalizado" + +#: extras/models/customfields.py:220 +msgid "custom fields" +msgstr "campos personalizados" + +#: extras/models/customfields.py:309 +#, python-brace-format +msgid "Invalid default value \"{value}\": {error}" +msgstr "Valor padrão inválido”{value}“: {error}" + +#: extras/models/customfields.py:316 +msgid "A minimum value may be set only for numeric fields" +msgstr "Um valor mínimo pode ser definido somente para campos numéricos" + +#: extras/models/customfields.py:318 +msgid "A maximum value may be set only for numeric fields" +msgstr "Um valor máximo pode ser definido somente para campos numéricos" + +#: extras/models/customfields.py:328 +msgid "" +"Regular expression validation is supported only for text and URL fields" +msgstr "" +"A validação de expressões regulares é suportada somente para campos de texto" +" e URL" + +#: extras/models/customfields.py:338 +msgid "Selection fields must specify a set of choices." +msgstr "Os campos de seleção devem especificar um conjunto de opções." + +#: extras/models/customfields.py:342 +msgid "Choices may be set only on selection fields." +msgstr "As opções podem ser definidas somente nos campos de seleção." + +#: extras/models/customfields.py:349 +msgid "Object fields must define an object type." +msgstr "Os campos de objeto devem definir um tipo de objeto." + +#: extras/models/customfields.py:354 +#, python-brace-format +msgid "{type} fields may not define an object type." +msgstr "{type} os campos não podem definir um tipo de objeto." + +#: extras/models/customfields.py:434 +msgid "True" +msgstr "É verdade" + +#: extras/models/customfields.py:435 +msgid "False" +msgstr "Falso" + +#: extras/models/customfields.py:517 +#, python-brace-format +msgid "Values must match this regex: {regex}" +msgstr "Os valores devem corresponder a esse regex: {regex}" + +#: extras/models/customfields.py:612 +msgid "Value must be a string." +msgstr "O valor deve ser uma string." + +#: extras/models/customfields.py:614 +#, python-brace-format +msgid "Value must match regex '{regex}'" +msgstr "O valor deve corresponder ao regex '{regex}'" + +#: extras/models/customfields.py:619 +msgid "Value must be an integer." +msgstr "O valor deve ser um número inteiro." + +#: extras/models/customfields.py:622 extras/models/customfields.py:637 +#, python-brace-format +msgid "Value must be at least {minimum}" +msgstr "O valor deve ser pelo menos {minimum}" + +#: extras/models/customfields.py:626 extras/models/customfields.py:641 +#, python-brace-format +msgid "Value must not exceed {maximum}" +msgstr "O valor não deve exceder {maximum}" + +#: extras/models/customfields.py:634 +msgid "Value must be a decimal." +msgstr "O valor deve ser decimal." + +#: extras/models/customfields.py:646 +msgid "Value must be true or false." +msgstr "O valor deve ser verdadeiro ou falso." + +#: extras/models/customfields.py:654 +msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." +msgstr "Os valores de data devem estar no formato ISO 8601 (AAAA-MM-DD)." + +#: extras/models/customfields.py:663 +msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." +msgstr "" +"Os valores de data e hora devem estar no formato ISO 8601 (AAAA-MM-DD " +"HH:MM:SS)." + +#: extras/models/customfields.py:670 +#, python-brace-format +msgid "Invalid choice ({value}) for choice set {choiceset}." +msgstr "Escolha inválida ({value}) para conjunto de escolha {choiceset}." + +#: extras/models/customfields.py:680 +#, python-brace-format +msgid "Invalid choice(s) ({value}) for choice set {choiceset}." +msgstr "" +"Escolha (s) inválida (s){value}) para conjunto de escolha {choiceset}." + +#: extras/models/customfields.py:689 +#, python-brace-format +msgid "Value must be an object ID, not {type}" +msgstr "O valor deve ser um ID de objeto, não {type}" + +#: extras/models/customfields.py:695 +#, python-brace-format +msgid "Value must be a list of object IDs, not {type}" +msgstr "O valor deve ser uma lista de IDs de objetos, não {type}" + +#: extras/models/customfields.py:699 +#, python-brace-format +msgid "Found invalid object ID: {id}" +msgstr "ID de objeto inválida encontrada: {id}" + +#: extras/models/customfields.py:702 +msgid "Required field cannot be empty." +msgstr "O campo obrigatório não pode estar vazio." + +#: extras/models/customfields.py:721 +msgid "Base set of predefined choices (optional)" +msgstr "Conjunto básico de opções predefinidas (opcional)" + +#: extras/models/customfields.py:733 +msgid "Choices are automatically ordered alphabetically" +msgstr "As opções são ordenadas automaticamente em ordem alfabética" + +#: extras/models/customfields.py:740 +msgid "custom field choice set" +msgstr "conjunto de opções de campo personalizado" + +#: extras/models/customfields.py:741 +msgid "custom field choice sets" +msgstr "conjuntos de opções de campo personalizados" + +#: extras/models/customfields.py:777 +msgid "Must define base or extra choices." +msgstr "Deve definir opções básicas ou extras." + +#: extras/models/dashboard.py:19 +msgid "layout" +msgstr "layout" + +#: extras/models/dashboard.py:23 +msgid "config" +msgstr "configuração" + +#: extras/models/dashboard.py:28 +msgid "dashboard" +msgstr "painel de controle" + +#: extras/models/dashboard.py:29 +msgid "dashboards" +msgstr "painéis" + +#: extras/models/models.py:49 +msgid "object types" +msgstr "tipos de objetos" + +#: extras/models/models.py:50 +msgid "The object(s) to which this rule applies." +msgstr "O (s) objeto (s) aos quais essa regra se aplica." + +#: extras/models/models.py:63 +msgid "on create" +msgstr "na criação" + +#: extras/models/models.py:65 +msgid "Triggers when a matching object is created." +msgstr "É acionado quando um objeto correspondente é criado." + +#: extras/models/models.py:68 +msgid "on update" +msgstr "na atualização" + +#: extras/models/models.py:70 +msgid "Triggers when a matching object is updated." +msgstr "É acionado quando um objeto correspondente é atualizado." + +#: extras/models/models.py:73 +msgid "on delete" +msgstr "ao excluir" + +#: extras/models/models.py:75 +msgid "Triggers when a matching object is deleted." +msgstr "É acionado quando um objeto correspondente é excluído." + +#: extras/models/models.py:78 +msgid "on job start" +msgstr "no início do trabalho" + +#: extras/models/models.py:80 +msgid "Triggers when a job for a matching object is started." +msgstr "" +"É acionado quando um trabalho para um objeto correspondente é iniciado." + +#: extras/models/models.py:83 +msgid "on job end" +msgstr "no final do trabalho" + +#: extras/models/models.py:85 +msgid "Triggers when a job for a matching object terminates." +msgstr "" +"É acionado quando um trabalho para um objeto correspondente é encerrado." + +#: extras/models/models.py:92 +msgid "conditions" +msgstr "condições" + +#: extras/models/models.py:95 +msgid "" +"A set of conditions which determine whether the event will be generated." +msgstr "Um conjunto de condições que determinam se o evento será gerado." + +#: extras/models/models.py:103 +msgid "action type" +msgstr "tipo de ação" + +#: extras/models/models.py:126 +msgid "Additional data to pass to the action object" +msgstr "Dados adicionais para passar para o objeto de ação" + +#: extras/models/models.py:138 +msgid "event rule" +msgstr "regra do evento" + +#: extras/models/models.py:139 +msgid "event rules" +msgstr "regras do evento" + +#: extras/models/models.py:155 +msgid "" +"At least one event type must be selected: create, update, delete, job start," +" and/or job end." +msgstr "" +"Pelo menos um tipo de evento deve ser selecionado: criar, atualizar, " +"excluir, início e/ou fim do trabalho." + +#: extras/models/models.py:196 +msgid "" +"This URL will be called using the HTTP method defined when the webhook is " +"called. Jinja2 template processing is supported with the same context as the" +" request body." +msgstr "" +"Esse URL será chamado usando o método HTTP definido quando o webhook for " +"chamado. O processamento do modelo Jinja2 é suportado com o mesmo contexto " +"do corpo da solicitação." + +#: extras/models/models.py:211 +msgid "" +"The complete list of official content types is available here." +msgstr "" +"A lista completa dos tipos de conteúdo oficial está disponível aqui." + +#: extras/models/models.py:216 +msgid "additional headers" +msgstr "cabeçalhos adicionais" + +#: extras/models/models.py:219 +msgid "" +"User-supplied HTTP headers to be sent with the request in addition to the " +"HTTP content type. Headers should be defined in the format Name: " +"Value. Jinja2 template processing is supported with the same context " +"as the request body (below)." +msgstr "" +"Cabeçalhos HTTP fornecidos pelo usuário a serem enviados com a solicitação, " +"além do tipo de conteúdo HTTP. Os cabeçalhos devem ser definidos no formato " +"Nome: Valor. O processamento do modelo Jinja2 é suportado com o" +" mesmo contexto do corpo da solicitação (abaixo)." + +#: extras/models/models.py:225 +msgid "body template" +msgstr "modelo de corpo" + +#: extras/models/models.py:228 +msgid "" +"Jinja2 template for a custom request body. If blank, a JSON object " +"representing the change will be included. Available context data includes: " +"event, model, timestamp, " +"username, request_id, and data." +msgstr "" +"Modelo Jinja2 para um corpo de solicitação personalizado. Se estiver em " +"branco, um objeto JSON representando a alteração será incluído. Os dados de " +"contexto disponíveis incluem: evento, modelo, " +"timestamp, nome de usuário, ID da " +"solicitação, e dados." + +#: extras/models/models.py:234 +msgid "secret" +msgstr "secreto" + +#: extras/models/models.py:238 +msgid "" +"When provided, the request will include a X-Hook-Signature " +"header containing a HMAC hex digest of the payload body using the secret as " +"the key. The secret is not transmitted in the request." +msgstr "" +"Quando fornecida, a solicitação incluirá um Assinatura X-Hook " +"cabeçalho contendo um resumo hexadecimal HMAC do corpo da carga usando o " +"segredo como chave. O segredo não é transmitido na solicitação." + +#: extras/models/models.py:245 +msgid "Enable SSL certificate verification. Disable with caution!" +msgstr "Ative a verificação do certificado SSL. Desative com cuidado!" + +#: extras/models/models.py:251 templates/extras/webhook.html:62 +msgid "CA File Path" +msgstr "Caminho do arquivo CA" + +#: extras/models/models.py:253 +msgid "" +"The specific CA certificate file to use for SSL verification. Leave blank to" +" use the system defaults." +msgstr "" +"O arquivo de certificado CA específico a ser usado para verificação SSL. " +"Deixe em branco para usar os padrões do sistema." + +#: extras/models/models.py:264 +msgid "webhook" +msgstr "webhook" + +#: extras/models/models.py:265 +msgid "webhooks" +msgstr "webhooks" + +#: extras/models/models.py:283 +msgid "Do not specify a CA certificate file if SSL verification is disabled." +msgstr "" +"Não especifique um arquivo de certificado CA se a verificação SSL estiver " +"desativada." + +#: extras/models/models.py:323 +msgid "The object type(s) to which this link applies." +msgstr "O (s) tipo (s) de objeto aos quais esse link se aplica." + +#: extras/models/models.py:335 +msgid "link text" +msgstr "texto do link" + +#: extras/models/models.py:336 +msgid "Jinja2 template code for link text" +msgstr "Código de modelo Jinja2 para texto do link" + +#: extras/models/models.py:339 +msgid "link URL" +msgstr "URL do link" + +#: extras/models/models.py:340 +msgid "Jinja2 template code for link URL" +msgstr "Código de modelo Jinja2 para URL do link" + +#: extras/models/models.py:350 +msgid "Links with the same group will appear as a dropdown menu" +msgstr "Links com o mesmo grupo aparecerão como um menu suspenso" + +#: extras/models/models.py:353 +msgid "button class" +msgstr "classe de botão" + +#: extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" +"A classe do primeiro link em um grupo será usada para o botão suspenso" + +#: extras/models/models.py:360 +msgid "new window" +msgstr "nova janela" + +#: extras/models/models.py:362 +msgid "Force link to open in a new window" +msgstr "Forçar o link a abrir em uma nova janela" + +#: extras/models/models.py:371 +msgid "custom link" +msgstr "link personalizado" + +#: extras/models/models.py:372 +msgid "custom links" +msgstr "links personalizados" + +#: extras/models/models.py:419 +msgid "The object type(s) to which this template applies." +msgstr "O (s) tipo (s) de objeto aos quais esse modelo se aplica." + +#: extras/models/models.py:432 +msgid "" +"Jinja2 template code. The list of objects being exported is passed as a " +"context variable named queryset." +msgstr "" +"Código do modelo Jinja2. A lista de objetos que estão sendo exportados é " +"passada como uma variável de contexto chamada conjunto de " +"consultas." + +#: extras/models/models.py:440 +msgid "Defaults to text/plain; charset=utf-8" +msgstr "O padrão é texto/simples; charset=utf-8" + +#: extras/models/models.py:443 +msgid "file extension" +msgstr "extensão de arquivo" + +#: extras/models/models.py:446 +msgid "Extension to append to the rendered filename" +msgstr "Extensão para anexar ao nome do arquivo renderizado" + +#: extras/models/models.py:449 +msgid "as attachment" +msgstr "como anexo" + +#: extras/models/models.py:451 +msgid "Download file as attachment" +msgstr "Baixar arquivo como anexo" + +#: extras/models/models.py:460 +msgid "export template" +msgstr "modelo de exportação" + +#: extras/models/models.py:461 +msgid "export templates" +msgstr "modelos de exportação" + +#: extras/models/models.py:478 +#, python-brace-format +msgid "\"{name}\" is a reserved name. Please choose a different name." +msgstr "“{name}“é um nome reservado. Escolha um nome diferente." + +#: extras/models/models.py:528 +msgid "The object type(s) to which this filter applies." +msgstr "O (s) tipo (s) de objeto aos quais esse filtro se aplica." + +#: extras/models/models.py:560 +msgid "shared" +msgstr "compartilhado" + +#: extras/models/models.py:573 +msgid "saved filter" +msgstr "filtro salvo" + +#: extras/models/models.py:574 +msgid "saved filters" +msgstr "filtros salvos" + +#: extras/models/models.py:592 +msgid "Filter parameters must be stored as a dictionary of keyword arguments." +msgstr "" +"Os parâmetros do filtro devem ser armazenados como um dicionário de " +"argumentos de palavras-chave." + +#: extras/models/models.py:620 +msgid "image height" +msgstr "altura da imagem" + +#: extras/models/models.py:623 +msgid "image width" +msgstr "largura da imagem" + +#: extras/models/models.py:640 +msgid "image attachment" +msgstr "anexo de imagem" + +#: extras/models/models.py:641 +msgid "image attachments" +msgstr "anexos de imagem" + +#: extras/models/models.py:655 +#, python-brace-format +msgid "Image attachments cannot be assigned to this object type ({type})." +msgstr "" +"Os anexos de imagem não podem ser atribuídos a esse tipo de objeto ({type})." + +#: extras/models/models.py:718 +msgid "kind" +msgstr "gentil" + +#: extras/models/models.py:732 +msgid "journal entry" +msgstr "entrada no diário" + +#: extras/models/models.py:733 +msgid "journal entries" +msgstr "entradas de diário" + +#: extras/models/models.py:748 +#, python-brace-format +msgid "Journaling is not supported for this object type ({type})." +msgstr "" +"O registro no diário não é suportado para esse tipo de objeto ({type})." + +#: extras/models/models.py:790 +msgid "bookmark" +msgstr "marca páginas" + +#: extras/models/models.py:791 +msgid "bookmarks" +msgstr "marcadores" + +#: extras/models/models.py:804 +#, python-brace-format +msgid "Bookmarks cannot be assigned to this object type ({type})." +msgstr "" +"Os marcadores não podem ser atribuídos a esse tipo de objeto ({type})." + +#: extras/models/reports.py:46 +msgid "report module" +msgstr "módulo de relatório" + +#: extras/models/reports.py:47 +msgid "report modules" +msgstr "módulos de relatório" + +#: extras/models/scripts.py:46 +msgid "script module" +msgstr "módulo de script" + +#: extras/models/scripts.py:47 +msgid "script modules" +msgstr "módulos de script" + +#: extras/models/search.py:24 +msgid "timestamp" +msgstr "timestamp" + +#: extras/models/search.py:39 +msgid "field" +msgstr "campo" + +#: extras/models/search.py:47 +msgid "value" +msgstr "valor" + +#: extras/models/search.py:58 +msgid "cached value" +msgstr "valor em cache" + +#: extras/models/search.py:59 +msgid "cached values" +msgstr "valores em cache" + +#: extras/models/staging.py:44 +msgid "branch" +msgstr "filial" + +#: extras/models/staging.py:45 +msgid "branches" +msgstr "ramos" + +#: extras/models/staging.py:97 +msgid "staged change" +msgstr "mudança encenada" + +#: extras/models/staging.py:98 +msgid "staged changes" +msgstr "mudanças encenadas" + +#: extras/models/tags.py:40 +msgid "The object type(s) to which this this tag can be applied." +msgstr "O (s) tipo (s) de objeto aos quais essa tag pode ser aplicada." + +#: extras/models/tags.py:49 +msgid "tag" +msgstr "marcar" + +#: extras/models/tags.py:50 +msgid "tags" +msgstr "tags" + +#: extras/models/tags.py:78 +msgid "tagged item" +msgstr "item marcado" + +#: extras/models/tags.py:79 +msgid "tagged items" +msgstr "itens marcados" + +#: extras/signals.py:221 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "A exclusão é impedida por uma regra de proteção: {message}" + +#: extras/tables/tables.py:44 extras/tables/tables.py:119 +#: extras/tables/tables.py:143 extras/tables/tables.py:208 +#: extras/tables/tables.py:281 +msgid "Content Types" +msgstr "Tipos de conteúdo" + +#: extras/tables/tables.py:50 +msgid "Visible" +msgstr "Visível" + +#: extras/tables/tables.py:53 +msgid "Editable" +msgstr "Editável" + +#: extras/tables/tables.py:60 templates/extras/customfield.html:48 +msgid "Choice Set" +msgstr "Conjunto de opções" + +#: extras/tables/tables.py:68 +msgid "Is Cloneable" +msgstr "É clonável" + +#: extras/tables/tables.py:98 +msgid "Count" +msgstr "Contar" + +#: extras/tables/tables.py:101 +msgid "Order Alphabetically" +msgstr "Ordenar alfabeticamente" + +#: extras/tables/tables.py:125 templates/extras/customlink.html:34 +msgid "New Window" +msgstr "Nova janela" + +#: extras/tables/tables.py:146 +msgid "As Attachment" +msgstr "Como anexo" + +#: extras/tables/tables.py:153 extras/tables/tables.py:367 +#: extras/tables/tables.py:402 templates/core/datafile.html:32 +#: templates/dcim/device/render_config.html:23 +#: templates/extras/configcontext.html:40 +#: templates/extras/configtemplate.html:32 +#: templates/extras/exporttemplate.html:51 +#: templates/generic/bulk_import.html:30 +#: templates/virtualization/virtualmachine/render_config.html:23 +msgid "Data File" +msgstr "Arquivo de dados" + +#: extras/tables/tables.py:158 extras/tables/tables.py:379 +#: extras/tables/tables.py:407 +msgid "Synced" +msgstr "Sincronizado" + +#: extras/tables/tables.py:178 +msgid "Content Type" +msgstr "Tipo de conteúdo" + +#: extras/tables/tables.py:185 +msgid "Image" +msgstr "Imagem" + +#: extras/tables/tables.py:190 +msgid "Size (Bytes)" +msgstr "Tamanho (bytes)" + +#: extras/tables/tables.py:233 extras/tables/tables.py:326 +#: templates/extras/customfield.html:96 templates/extras/eventrule.html:32 +#: templates/users/objectpermission.html:68 users/tables.py:83 +msgid "Object Types" +msgstr "Tipos de objetos" + +#: extras/tables/tables.py:255 +msgid "SSL Validation" +msgstr "Validação SSL" + +#: extras/tables/tables.py:278 +msgid "Action Type" +msgstr "Tipo de ação" + +#: extras/tables/tables.py:296 +msgid "Job Start" +msgstr "Início do trabalho" + +#: extras/tables/tables.py:299 +msgid "Job End" +msgstr "Fim do trabalho" + +#: extras/tables/tables.py:436 templates/account/profile.html:20 +#: templates/users/user.html:22 +msgid "Full Name" +msgstr "Nome completo" + +#: extras/tables/tables.py:453 templates/extras/objectchange.html:72 +msgid "Request ID" +msgstr "ID da solicitação" + +#: extras/tables/tables.py:490 +msgid "Comments (Short)" +msgstr "Comentários (curtos)" + +#: extras/validators.py:13 +#, python-format +msgid "Ensure this value is equal to %(limit_value)s." +msgstr "Verifique se esse valor é igual a %(limit_value)s." + +#: extras/validators.py:24 +#, python-format +msgid "Ensure this value does not equal %(limit_value)s." +msgstr "Certifique-se de que esse valor não seja igual %(limit_value)s." + +#: extras/validators.py:35 +msgid "This field must be empty." +msgstr "Esse campo deve estar vazio." + +#: extras/validators.py:50 +msgid "This field must not be empty." +msgstr "Esse campo não deve estar vazio." + +#: extras/views.py:880 +msgid "Your dashboard has been reset." +msgstr "Seu painel foi redefinido." + +#: ipam/api/field_serializers.py:17 +msgid "Enter a valid IPv4 or IPv6 address with optional mask." +msgstr "Insira um endereço IPv4 ou IPv6 válido com máscara opcional." + +#: ipam/api/field_serializers.py:24 +#, python-brace-format +msgid "Invalid IP address format: {data}" +msgstr "Formato de endereço IP inválido: {data}" + +#: ipam/api/field_serializers.py:37 +msgid "Enter a valid IPv4 or IPv6 prefix and mask in CIDR notation." +msgstr "Insira um prefixo IPv4 ou IPv6 válido e uma máscara na notação CIDR." + +#: ipam/api/field_serializers.py:44 +#, python-brace-format +msgid "Invalid IP prefix format: {data}" +msgstr "Formato de prefixo IP inválido: {data}" + +#: ipam/choices.py:30 +msgid "Container" +msgstr "Contêiner" + +#: ipam/choices.py:72 +msgid "DHCP" +msgstr "DHCP" + +#: ipam/choices.py:73 +msgid "SLAAC" +msgstr "ESBRAVEJAR" + +#: ipam/choices.py:89 +msgid "Loopback" +msgstr "Loopback" + +#: ipam/choices.py:90 tenancy/choices.py:18 +msgid "Secondary" +msgstr "Secundário" + +#: ipam/choices.py:91 +msgid "Anycast" +msgstr "Anycast" + +#: ipam/choices.py:115 +msgid "Standard" +msgstr "Padrão" + +#: ipam/choices.py:120 +msgid "CheckPoint" +msgstr "Ponto de verificação" + +#: ipam/choices.py:123 +msgid "Cisco" +msgstr "Cisco" + +#: ipam/choices.py:137 +msgid "Plaintext" +msgstr "Texto sem formatação" + +#: ipam/filtersets.py:47 vpn/filtersets.py:276 +msgid "Import target" +msgstr "Alvo de importação" + +#: ipam/filtersets.py:53 vpn/filtersets.py:282 +msgid "Import target (name)" +msgstr "Destino de importação (nome)" + +#: ipam/filtersets.py:58 vpn/filtersets.py:287 +msgid "Export target" +msgstr "Alvo de exportação" + +#: ipam/filtersets.py:64 vpn/filtersets.py:293 +msgid "Export target (name)" +msgstr "Alvo de exportação (nome)" + +#: ipam/filtersets.py:85 +msgid "Importing VRF" +msgstr "Importando VRF" + +#: ipam/filtersets.py:91 +msgid "Import VRF (RD)" +msgstr "Importar VRF (RD)" + +#: ipam/filtersets.py:96 +msgid "Exporting VRF" +msgstr "Exportando VRF" + +#: ipam/filtersets.py:102 +msgid "Export VRF (RD)" +msgstr "Exportar VRF (RD)" + +#: ipam/filtersets.py:132 ipam/filtersets.py:247 ipam/forms/model_forms.py:229 +#: ipam/tables/ip.py:211 templates/ipam/prefix.html:12 +msgid "Prefix" +msgstr "Prefixo" + +#: ipam/filtersets.py:136 ipam/filtersets.py:175 ipam/filtersets.py:198 +msgid "RIR (ID)" +msgstr "RIR (ID)" + +#: ipam/filtersets.py:142 ipam/filtersets.py:181 ipam/filtersets.py:204 +msgid "RIR (slug)" +msgstr "RIR (lesma)" + +#: ipam/filtersets.py:251 +msgid "Within prefix" +msgstr "Dentro do prefixo" + +#: ipam/filtersets.py:255 +msgid "Within and including prefix" +msgstr "Dentro e incluindo o prefixo" + +#: ipam/filtersets.py:259 +msgid "Prefixes which contain this prefix or IP" +msgstr "Prefixos que contêm esse prefixo ou IP" + +#: ipam/filtersets.py:270 ipam/filtersets.py:538 ipam/forms/bulk_edit.py:326 +#: ipam/forms/filtersets.py:191 ipam/forms/filtersets.py:317 +msgid "Mask length" +msgstr "Comprimento da máscara" + +#: ipam/filtersets.py:339 vpn/filtersets.py:399 +msgid "VLAN (ID)" +msgstr "VLAN (ID)" + +#: ipam/filtersets.py:343 vpn/filtersets.py:394 +msgid "VLAN number (1-4094)" +msgstr "Número da VLAN (1-4094)" + +#: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 +#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: tenancy/forms/bulk_edit.py:112 +msgid "Address" +msgstr "Endereço" + +#: ipam/filtersets.py:445 +msgid "Ranges which contain this prefix or IP" +msgstr "Intervalos que contêm esse prefixo ou IP" + +#: ipam/filtersets.py:473 ipam/filtersets.py:529 +msgid "Parent prefix" +msgstr "Prefixo principal" + +#: ipam/filtersets.py:582 ipam/filtersets.py:812 ipam/filtersets.py:1031 +#: vpn/filtersets.py:357 +msgid "Virtual machine (name)" +msgstr "Máquina virtual (nome)" + +#: ipam/filtersets.py:587 ipam/filtersets.py:817 ipam/filtersets.py:1025 +#: virtualization/filtersets.py:276 virtualization/filtersets.py:315 +#: vpn/filtersets.py:362 +msgid "Virtual machine (ID)" +msgstr "Máquina virtual (ID)" + +#: ipam/filtersets.py:593 vpn/filtersets.py:97 vpn/filtersets.py:368 +msgid "Interface (name)" +msgstr "Interface (nome)" + +#: ipam/filtersets.py:598 vpn/filtersets.py:102 vpn/filtersets.py:373 +msgid "Interface (ID)" +msgstr "Interface (ID)" + +#: ipam/filtersets.py:604 vpn/filtersets.py:108 vpn/filtersets.py:379 +msgid "VM interface (name)" +msgstr "Interface da VM (nome)" + +#: ipam/filtersets.py:609 vpn/filtersets.py:113 +msgid "VM interface (ID)" +msgstr "Interface de VM (ID)" + +#: ipam/filtersets.py:614 +msgid "FHRP group (ID)" +msgstr "Grupo FHRP (ID)" + +#: ipam/filtersets.py:618 +msgid "Is assigned to an interface" +msgstr "É atribuído a uma interface" + +#: ipam/filtersets.py:622 +msgid "Is assigned" +msgstr "É atribuído" + +#: ipam/filtersets.py:1036 +msgid "IP address (ID)" +msgstr "Endereço IP (ID)" + +#: ipam/filtersets.py:1042 ipam/models/ip.py:787 +msgid "IP address" +msgstr "Endereço IP" + +#: ipam/filtersets.py:1068 +msgid "Primary IPv4 (ID)" +msgstr "IPv4 primário (ID)" + +#: ipam/filtersets.py:1073 +msgid "Primary IPv6 (ID)" +msgstr "IPv6 primário (ID)" + +#: ipam/forms/bulk_create.py:14 +msgid "Address pattern" +msgstr "Padrão de endereço" + +#: ipam/forms/bulk_edit.py:85 +msgid "Is private" +msgstr "É privado" + +#: ipam/forms/bulk_edit.py:106 ipam/forms/bulk_edit.py:135 +#: ipam/forms/bulk_edit.py:160 ipam/forms/bulk_import.py:88 +#: ipam/forms/bulk_import.py:108 ipam/forms/bulk_import.py:128 +#: ipam/forms/filtersets.py:109 ipam/forms/filtersets.py:124 +#: ipam/forms/filtersets.py:147 ipam/forms/model_forms.py:93 +#: ipam/forms/model_forms.py:108 ipam/forms/model_forms.py:130 +#: ipam/forms/model_forms.py:148 ipam/models/asns.py:31 +#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: ipam/tables/asn.py:20 ipam/tables/asn.py:45 +#: templates/ipam/aggregate.html:19 templates/ipam/asn.html:28 +#: templates/ipam/asnrange.html:20 templates/ipam/rir.html:20 +msgid "RIR" +msgstr "RIR" + +#: ipam/forms/bulk_edit.py:168 +msgid "Date added" +msgstr "Data adicionada" + +#: ipam/forms/bulk_edit.py:229 +msgid "Prefix length" +msgstr "Comprimento do prefixo" + +#: ipam/forms/bulk_edit.py:252 ipam/forms/filtersets.py:236 +#: templates/ipam/prefix.html:86 +msgid "Is a pool" +msgstr "É uma piscina" + +#: ipam/forms/bulk_edit.py:257 ipam/forms/bulk_edit.py:301 +#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#, python-format +msgid "Treat as 100% utilized" +msgstr "Trate como 100% utilizado" + +#: ipam/forms/bulk_edit.py:349 ipam/models/ip.py:771 +msgid "DNS name" +msgstr "Nome DNS" + +#: ipam/forms/bulk_edit.py:370 ipam/forms/bulk_edit.py:569 +#: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:376 +#: ipam/forms/filtersets.py:511 templates/ipam/fhrpgroup.html:23 +#: templates/ipam/inc/panels/fhrp_groups.html:11 +#: templates/ipam/service.html:35 templates/ipam/servicetemplate.html:20 +msgid "Protocol" +msgstr "Protocolo" + +#: ipam/forms/bulk_edit.py:377 ipam/forms/filtersets.py:383 +#: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:27 +msgid "Group ID" +msgstr "ID do grupo" + +#: ipam/forms/bulk_edit.py:382 ipam/forms/filtersets.py:388 +#: wireless/forms/bulk_edit.py:67 wireless/forms/bulk_edit.py:114 +#: wireless/forms/bulk_import.py:62 wireless/forms/bulk_import.py:65 +#: wireless/forms/bulk_import.py:104 wireless/forms/bulk_import.py:107 +#: wireless/forms/filtersets.py:53 wireless/forms/filtersets.py:87 +msgid "Authentication type" +msgstr "Tipo de autenticação" + +#: ipam/forms/bulk_edit.py:387 ipam/forms/filtersets.py:392 +msgid "Authentication key" +msgstr "Chave de autenticação" + +#: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 +#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: templates/ipam/fhrpgroup.html:51 +#: templates/wireless/inc/authentication_attrs.html:5 +#: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 +#: wireless/forms/filtersets.py:35 wireless/forms/filtersets.py:75 +#: wireless/forms/model_forms.py:56 wireless/forms/model_forms.py:161 +msgid "Authentication" +msgstr "Autenticação" + +#: ipam/forms/bulk_edit.py:414 +msgid "Minimum child VLAN VID" +msgstr "VLAN infantil mínima VID" + +#: ipam/forms/bulk_edit.py:420 +msgid "Maximum child VLAN VID" +msgstr "VLAN infantil máximo VID" + +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +msgid "Scope type" +msgstr "Tipo de escopo" + +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 +msgid "Scope" +msgstr "Escopo" + +#: ipam/forms/bulk_edit.py:560 +msgid "Site & Group" +msgstr "Site e grupo" + +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 +#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/tables/services.py:49 templates/ipam/service.html:39 +#: templates/ipam/servicetemplate.html:24 +msgid "Ports" +msgstr "Portos" + +#: ipam/forms/bulk_import.py:47 +msgid "Import route targets" +msgstr "Importar destinos de rota" + +#: ipam/forms/bulk_import.py:53 +msgid "Export route targets" +msgstr "Exportar destinos de rota" + +#: ipam/forms/bulk_import.py:91 ipam/forms/bulk_import.py:111 +#: ipam/forms/bulk_import.py:131 +msgid "Assigned RIR" +msgstr "RIR atribuído" + +#: ipam/forms/bulk_import.py:181 +msgid "VLAN's group (if any)" +msgstr "Grupo de VLANs (se houver)" + +#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:219 +#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 +#: templates/ipam/prefix.html:61 templates/ipam/vlan.html:13 +#: templates/ipam/vlan/base.html:6 templates/ipam/vlan_edit.html:10 +#: templates/vpn/l2vpntermination_edit.html:17 +#: templates/wireless/wirelesslan.html:31 vpn/forms/bulk_import.py:299 +#: vpn/forms/filtersets.py:280 vpn/forms/model_forms.py:427 +#: wireless/forms/bulk_edit.py:54 wireless/forms/bulk_import.py:48 +#: wireless/forms/model_forms.py:49 wireless/models.py:101 +msgid "VLAN" +msgstr "VLAN" + +#: ipam/forms/bulk_import.py:307 +msgid "Parent device of assigned interface (if any)" +msgstr "Dispositivo principal da interface atribuída (se houver)" + +#: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 +#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:282 +#: virtualization/filtersets.py:321 virtualization/forms/bulk_edit.py:199 +#: virtualization/forms/bulk_edit.py:325 +#: virtualization/forms/bulk_import.py:146 +#: virtualization/forms/bulk_import.py:207 +#: virtualization/forms/filtersets.py:204 +#: virtualization/forms/filtersets.py:240 +#: virtualization/forms/model_forms.py:291 vpn/forms/bulk_import.py:93 +#: vpn/forms/bulk_import.py:285 +msgid "Virtual machine" +msgstr "Máquina virtual" + +#: ipam/forms/bulk_import.py:314 +msgid "Parent VM of assigned interface (if any)" +msgstr "VM principal da interface atribuída (se houver)" + +#: ipam/forms/bulk_import.py:321 +msgid "Assigned interface" +msgstr "Interface atribuída" + +#: ipam/forms/bulk_import.py:324 +msgid "Is primary" +msgstr "É primário" + +#: ipam/forms/bulk_import.py:325 +msgid "Make this the primary IP for the assigned device" +msgstr "Torne esse o IP primário do dispositivo atribuído" + +#: ipam/forms/bulk_import.py:364 +msgid "No device or virtual machine specified; cannot set as primary IP" +msgstr "" +"Nenhum dispositivo ou máquina virtual especificado; não pode ser definido " +"como IP primário" + +#: ipam/forms/bulk_import.py:368 +msgid "No interface specified; cannot set as primary IP" +msgstr "" +"Nenhuma interface especificada; não é possível definir como IP primário" + +#: ipam/forms/bulk_import.py:397 +msgid "Auth type" +msgstr "Tipo de autenticação" + +#: ipam/forms/bulk_import.py:412 +msgid "Scope type (app & model)" +msgstr "Tipo de escopo (aplicativo e modelo)" + +#: ipam/forms/bulk_import.py:418 +#, python-brace-format +msgid "Minimum child VLAN VID (default: {minimum})" +msgstr "VLAN filho mínimo (VID) (padrão: {minimum})" + +#: ipam/forms/bulk_import.py:424 +#, python-brace-format +msgid "Maximum child VLAN VID (default: {maximum})" +msgstr "VLAN filho máximo (VID) (padrão): {maximum})" + +#: ipam/forms/bulk_import.py:448 +msgid "Assigned VLAN group" +msgstr "Grupo de VLAN atribuído" + +#: ipam/forms/bulk_import.py:479 ipam/forms/bulk_import.py:505 +msgid "IP protocol" +msgstr "Protocolo IP" + +#: ipam/forms/bulk_import.py:493 +msgid "Required if not assigned to a VM" +msgstr "Obrigatório se não for atribuído a uma VM" + +#: ipam/forms/bulk_import.py:500 +msgid "Required if not assigned to a device" +msgstr "Obrigatório se não estiver atribuído a um dispositivo" + +#: ipam/forms/bulk_import.py:525 +#, python-brace-format +msgid "{ip} is not assigned to this device/VM." +msgstr "{ip} não está atribuído a esse dispositivo/VM." + +#: ipam/forms/filtersets.py:46 ipam/forms/model_forms.py:60 +#: netbox/navigation/menu.py:177 vpn/forms/model_forms.py:403 +msgid "Route Targets" +msgstr "Alvos da rota" + +#: ipam/forms/filtersets.py:52 ipam/forms/model_forms.py:47 +#: vpn/forms/filtersets.py:221 vpn/forms/model_forms.py:390 +msgid "Import targets" +msgstr "Alvos de importação" + +#: ipam/forms/filtersets.py:57 ipam/forms/model_forms.py:52 +#: vpn/forms/filtersets.py:226 vpn/forms/model_forms.py:395 +msgid "Export targets" +msgstr "Alvos de exportação" + +#: ipam/forms/filtersets.py:72 +msgid "Imported by VRF" +msgstr "Importado pela VRF" + +#: ipam/forms/filtersets.py:77 +msgid "Exported by VRF" +msgstr "Exportado por VRF" + +#: ipam/forms/filtersets.py:86 ipam/tables/ip.py:89 templates/ipam/rir.html:33 +msgid "Private" +msgstr "Privado" + +#: ipam/forms/filtersets.py:104 ipam/forms/filtersets.py:186 +#: ipam/forms/filtersets.py:261 ipam/forms/filtersets.py:312 +msgid "Address family" +msgstr "Família de endereços" + +#: ipam/forms/filtersets.py:118 templates/ipam/asnrange.html:26 +msgid "Range" +msgstr "Alcance" + +#: ipam/forms/filtersets.py:127 +msgid "Start" +msgstr "Iniciar" + +#: ipam/forms/filtersets.py:131 +msgid "End" +msgstr "Fim" + +#: ipam/forms/filtersets.py:181 +msgid "Search within" +msgstr "Pesquisar dentro" + +#: ipam/forms/filtersets.py:202 ipam/forms/filtersets.py:328 +msgid "Present in VRF" +msgstr "Presente em VRF" + +#: ipam/forms/filtersets.py:243 ipam/forms/filtersets.py:282 +#, python-format +msgid "Marked as 100% utilized" +msgstr "Marcado como 100% utilizado" + +#: ipam/forms/filtersets.py:297 +msgid "Device/VM" +msgstr "Dispositivo/VM" + +#: ipam/forms/filtersets.py:333 +msgid "Assigned Device" +msgstr "Dispositivo atribuído" + +#: ipam/forms/filtersets.py:338 +msgid "Assigned VM" +msgstr "VM atribuída" + +#: ipam/forms/filtersets.py:352 +msgid "Assigned to an interface" +msgstr "Atribuído a uma interface" + +#: ipam/forms/filtersets.py:359 templates/ipam/ipaddress.html:54 +msgid "DNS Name" +msgstr "Nome do DNS" + +#: ipam/forms/filtersets.py:401 ipam/forms/filtersets.py:494 +#: ipam/models/vlans.py:156 templates/ipam/vlan.html:34 +msgid "VLAN ID" +msgstr "ID DA VLAN" + +#: ipam/forms/filtersets.py:433 +msgid "Minimum VID" +msgstr "VID mínimo" + +#: ipam/forms/filtersets.py:439 +msgid "Maximum VID" +msgstr "VID máximo" + +#: ipam/forms/filtersets.py:516 +msgid "Port" +msgstr "Porto" + +#: ipam/forms/filtersets.py:537 ipam/tables/vlans.py:191 +#: templates/ipam/ipaddress_edit.html:47 templates/ipam/service_create.html:22 +#: templates/ipam/service_edit.html:21 +#: templates/virtualization/virtualdisk.html:22 +#: templates/virtualization/virtualmachine.html:13 +#: templates/virtualization/vminterface.html:24 +#: templates/vpn/l2vpntermination_edit.html:27 +#: templates/vpn/tunneltermination.html:26 +#: virtualization/forms/filtersets.py:189 +#: virtualization/forms/filtersets.py:234 +#: virtualization/forms/model_forms.py:223 +#: virtualization/tables/virtualmachines.py:115 +#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 +#: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:269 +msgid "Virtual Machine" +msgstr "Máquina virtual" + +#: ipam/forms/model_forms.py:113 ipam/tables/ip.py:116 +#: templates/ipam/aggregate.html:11 templates/ipam/prefix.html:39 +msgid "Aggregate" +msgstr "Agregar" + +#: ipam/forms/model_forms.py:134 templates/ipam/asnrange.html:12 +msgid "ASN Range" +msgstr "Intervalo ASN" + +#: ipam/forms/model_forms.py:230 +msgid "Site/VLAN Assignment" +msgstr "Atribuição de site/VLAN" + +#: ipam/forms/model_forms.py:256 templates/ipam/iprange.html:11 +msgid "IP Range" +msgstr "Intervalo de IP" + +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 +msgid "FHRP Group" +msgstr "Grupo FHRP" + +#: ipam/forms/model_forms.py:300 +msgid "Make this the primary IP for the device/VM" +msgstr "Torne esse o IP primário do dispositivo/VM" + +#: ipam/forms/model_forms.py:351 +msgid "An IP address can only be assigned to a single object." +msgstr "Um endereço IP só pode ser atribuído a um único objeto." + +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:878 +msgid "" +"Cannot reassign IP address while it is designated as the primary IP for the " +"parent object" +msgstr "" +"Não é possível reatribuir o endereço IP enquanto ele estiver designado como " +"o IP principal do objeto pai" + +#: ipam/forms/model_forms.py:367 +msgid "" +"Only IP addresses assigned to an interface can be designated as primary IPs." +msgstr "" +"Somente endereços IP atribuídos a uma interface podem ser designados como " +"IPs primários." + +#: ipam/forms/model_forms.py:373 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "{ip} é uma ID de rede, que não pode ser atribuída a uma interface." + +#: ipam/forms/model_forms.py:379 +#, python-brace-format +msgid "" +"{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "" +"{ip} é um endereço de transmissão, que não pode ser atribuído a uma " +"interface." + +#: ipam/forms/model_forms.py:456 +msgid "Virtual IP Address" +msgstr "Endereço IP virtual" + +#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 +#: templates/ipam/vlangroup.html:27 +msgid "VLAN Group" +msgstr "Grupo VLAN" + +#: ipam/forms/model_forms.py:599 +msgid "Child VLANs" +msgstr "VLANs secundários" + +#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +msgid "" +"Comma-separated list of one or more port numbers. A range may be specified " +"using a hyphen." +msgstr "" +"Lista separada por vírgula de um ou mais números de porta. Um intervalo pode" +" ser especificado usando um hífen." + +#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +msgid "Service Template" +msgstr "Modelo de serviço" + +#: ipam/forms/model_forms.py:724 +msgid "Service template" +msgstr "Modelo de serviço" + +#: ipam/models/asns.py:34 +msgid "start" +msgstr "iniciar" + +#: ipam/models/asns.py:51 +msgid "ASN range" +msgstr "faixa ASN" + +#: ipam/models/asns.py:52 +msgid "ASN ranges" +msgstr "Intervalos ASN" + +#: ipam/models/asns.py:72 +#, python-brace-format +msgid "Starting ASN ({start}) must be lower than ending ASN ({end})." +msgstr "Iniciando o ASN ({start}) deve ser menor do que o ASN final ({end})." + +#: ipam/models/asns.py:104 +msgid "Regional Internet Registry responsible for this AS number space" +msgstr "Registro regional da Internet responsável por esse espaço numérico AS" + +#: ipam/models/asns.py:109 +msgid "16- or 32-bit autonomous system number" +msgstr "Número de sistema autônomo de 16 ou 32 bits" + +#: ipam/models/fhrp.py:22 +msgid "group ID" +msgstr "ID do grupo" + +#: ipam/models/fhrp.py:30 ipam/models/services.py:22 +msgid "protocol" +msgstr "protocolo" + +#: ipam/models/fhrp.py:38 wireless/models.py:27 +msgid "authentication type" +msgstr "tipo de autenticação" + +#: ipam/models/fhrp.py:43 +msgid "authentication key" +msgstr "chave de autenticação" + +#: ipam/models/fhrp.py:56 +msgid "FHRP group" +msgstr "Grupo FHRP" + +#: ipam/models/fhrp.py:57 +msgid "FHRP groups" +msgstr "Grupos FHRP" + +#: ipam/models/fhrp.py:93 tenancy/models/contacts.py:134 +msgid "priority" +msgstr "prioridade" + +#: ipam/models/fhrp.py:113 +msgid "FHRP group assignment" +msgstr "Atribuição em grupo do FHRP" + +#: ipam/models/fhrp.py:114 +msgid "FHRP group assignments" +msgstr "Atribuições em grupo do FHRP" + +#: ipam/models/ip.py:64 +msgid "private" +msgstr "privado" + +#: ipam/models/ip.py:65 +msgid "IP space managed by this RIR is considered private" +msgstr "O espaço IP gerenciado por este RIR é considerado privado" + +#: ipam/models/ip.py:71 netbox/navigation/menu.py:170 +msgid "RIRs" +msgstr "RIRs" + +#: ipam/models/ip.py:83 +msgid "IPv4 or IPv6 network" +msgstr "Rede IPv4 ou IPv6" + +#: ipam/models/ip.py:90 +msgid "Regional Internet Registry responsible for this IP space" +msgstr "Registro regional da Internet responsável por esse espaço IP" + +#: ipam/models/ip.py:100 +msgid "date added" +msgstr "data adicionada" + +#: ipam/models/ip.py:114 +msgid "aggregate" +msgstr "agregar" + +#: ipam/models/ip.py:115 +msgid "aggregates" +msgstr "agregados" + +#: ipam/models/ip.py:131 +msgid "Cannot create aggregate with /0 mask." +msgstr "Não é possível criar agregação com máscara /0." + +#: ipam/models/ip.py:143 +#, python-brace-format +msgid "" +"Aggregates cannot overlap. {prefix} is already covered by an existing " +"aggregate ({aggregate})." +msgstr "" +"Os agregados não podem se sobrepor. {prefix} já está coberto por um agregado" +" existente ({aggregate})." + +#: ipam/models/ip.py:157 +#, python-brace-format +msgid "" +"Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " +"({aggregate})." +msgstr "" +"Os prefixos não podem se sobrepor aos agregados. {prefix} cobre um agregado " +"existente ({aggregate})." + +#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +msgid "role" +msgstr "função" + +#: ipam/models/ip.py:200 +msgid "roles" +msgstr "papéis" + +#: ipam/models/ip.py:216 ipam/models/ip.py:292 +msgid "prefix" +msgstr "prefixo" + +#: ipam/models/ip.py:217 +msgid "IPv4 or IPv6 network with mask" +msgstr "Rede IPv4 ou IPv6 com máscara" + +#: ipam/models/ip.py:253 +msgid "Operational status of this prefix" +msgstr "Status operacional desse prefixo" + +#: ipam/models/ip.py:261 +msgid "The primary function of this prefix" +msgstr "A função primária desse prefixo" + +#: ipam/models/ip.py:264 +msgid "is a pool" +msgstr "é uma piscina" + +#: ipam/models/ip.py:266 +msgid "All IP addresses within this prefix are considered usable" +msgstr "" +"Todos os endereços IP dentro desse prefixo são considerados utilizáveis" + +#: ipam/models/ip.py:269 ipam/models/ip.py:536 +msgid "mark utilized" +msgstr "marca utilizada" + +#: ipam/models/ip.py:293 +msgid "prefixes" +msgstr "prefixos" + +#: ipam/models/ip.py:316 +msgid "Cannot create prefix with /0 mask." +msgstr "Não é possível criar prefixo com a máscara /0." + +#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#, python-brace-format +msgid "VRF {vrf}" +msgstr "VRF {vrf}" + +#: ipam/models/ip.py:323 ipam/models/ip.py:854 +msgid "global table" +msgstr "tabela global" + +#: ipam/models/ip.py:325 +#, python-brace-format +msgid "Duplicate prefix found in {table}: {prefix}" +msgstr "Prefixo duplicado encontrado em {table}: {prefix}" + +#: ipam/models/ip.py:494 +msgid "start address" +msgstr "endereço inicial" + +#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +msgid "IPv4 or IPv6 address (with mask)" +msgstr "Endereço IPv4 ou IPv6 (com máscara)" + +#: ipam/models/ip.py:498 +msgid "end address" +msgstr "endereço final" + +#: ipam/models/ip.py:525 +msgid "Operational status of this range" +msgstr "Status operacional dessa faixa" + +#: ipam/models/ip.py:533 +msgid "The primary function of this range" +msgstr "A função principal desse intervalo" + +#: ipam/models/ip.py:547 +msgid "IP range" +msgstr "Intervalo de IP" + +#: ipam/models/ip.py:548 +msgid "IP ranges" +msgstr "Intervalos de IP" + +#: ipam/models/ip.py:564 +msgid "Starting and ending IP address versions must match" +msgstr "As versões inicial e final do endereço IP devem corresponder" + +#: ipam/models/ip.py:570 +msgid "Starting and ending IP address masks must match" +msgstr "As máscaras de endereço IP inicial e final devem corresponder" + +#: ipam/models/ip.py:577 +#, python-brace-format +msgid "" +"Ending address must be lower than the starting address ({start_address})" +msgstr "" +"O endereço final deve ser menor que o endereço inicial ({start_address})" + +#: ipam/models/ip.py:589 +#, python-brace-format +msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" +msgstr "" +"Endereços definidos se sobrepõem ao intervalo {overlapping_range} em VRF " +"{vrf}" + +#: ipam/models/ip.py:598 +#, python-brace-format +msgid "Defined range exceeds maximum supported size ({max_size})" +msgstr "O intervalo definido excede o tamanho máximo suportado ({max_size})" + +#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +msgid "address" +msgstr "abordar" + +#: ipam/models/ip.py:733 +msgid "The operational status of this IP" +msgstr "O status operacional desse IP" + +#: ipam/models/ip.py:740 +msgid "The functional role of this IP" +msgstr "O papel funcional desse IP" + +#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:75 +msgid "NAT (inside)" +msgstr "NAT (interno)" + +#: ipam/models/ip.py:765 +msgid "The IP for which this address is the \"outside\" IP" +msgstr "O IP para o qual esse endereço é o IP “externo”" + +#: ipam/models/ip.py:772 +msgid "Hostname or FQDN (not case-sensitive)" +msgstr "Nome do host ou FQDN (não diferencia maiúsculas de minúsculas)" + +#: ipam/models/ip.py:788 ipam/models/services.py:94 +msgid "IP addresses" +msgstr "Endereços IP" + +#: ipam/models/ip.py:844 +msgid "Cannot create IP address with /0 mask." +msgstr "Não é possível criar endereço IP com máscara /0." + +#: ipam/models/ip.py:856 +#, python-brace-format +msgid "Duplicate IP address found in {table}: {ipaddress}" +msgstr "Endereço IP duplicado encontrado em {table}: {ipaddress}" + +#: ipam/models/ip.py:885 +msgid "Only IPv6 addresses can be assigned SLAAC status" +msgstr "Somente endereços IPv6 podem receber o status SLAAC" + +#: ipam/models/services.py:33 +msgid "port numbers" +msgstr "números de porta" + +#: ipam/models/services.py:59 +msgid "service template" +msgstr "modelo de serviço" + +#: ipam/models/services.py:60 +msgid "service templates" +msgstr "modelos de serviço" + +#: ipam/models/services.py:95 +msgid "The specific IP addresses (if any) to which this service is bound" +msgstr "" +"Os endereços IP específicos (se houver) aos quais esse serviço está " +"vinculado" + +#: ipam/models/services.py:102 +msgid "service" +msgstr "manutenção" + +#: ipam/models/services.py:103 +msgid "services" +msgstr "serviços" + +#: ipam/models/services.py:117 +msgid "" +"A service cannot be associated with both a device and a virtual machine." +msgstr "" +"Um serviço não pode ser associado a um dispositivo e a uma máquina virtual." + +#: ipam/models/services.py:119 +msgid "" +"A service must be associated with either a device or a virtual machine." +msgstr "" +"Um serviço deve estar associado a um dispositivo ou a uma máquina virtual." + +#: ipam/models/vlans.py:49 +msgid "minimum VLAN ID" +msgstr "ID mínimo de VLAN" + +#: ipam/models/vlans.py:55 +msgid "Lowest permissible ID of a child VLAN" +msgstr "ID mais baixa permitida de uma VLAN secundária" + +#: ipam/models/vlans.py:58 +msgid "maximum VLAN ID" +msgstr "ID máximo de VLAN" + +#: ipam/models/vlans.py:64 +msgid "Highest permissible ID of a child VLAN" +msgstr "ID mais alta permitida de uma VLAN secundária" + +#: ipam/models/vlans.py:85 +msgid "VLAN groups" +msgstr "Grupos de VLAN" + +#: ipam/models/vlans.py:95 +msgid "Cannot set scope_type without scope_id." +msgstr "Não é possível definir scope_type sem scope_id." + +#: ipam/models/vlans.py:97 +msgid "Cannot set scope_id without scope_type." +msgstr "Não é possível definir scope_id sem scope_type." + +#: ipam/models/vlans.py:102 +msgid "Maximum child VID must be greater than or equal to minimum child VID" +msgstr "" +"O VID máximo da criança deve ser maior ou igual ao VID mínimo da criança" + +#: ipam/models/vlans.py:145 +msgid "The specific site to which this VLAN is assigned (if any)" +msgstr "O site específico ao qual essa VLAN está atribuída (se houver)" + +#: ipam/models/vlans.py:153 +msgid "VLAN group (optional)" +msgstr "Grupo de VLAN (opcional)" + +#: ipam/models/vlans.py:161 +msgid "Numeric VLAN ID (1-4094)" +msgstr "ID numérica da VLAN (1-4094)" + +#: ipam/models/vlans.py:179 +msgid "Operational status of this VLAN" +msgstr "Status operacional desta VLAN" + +#: ipam/models/vlans.py:187 +msgid "The primary function of this VLAN" +msgstr "A função principal desta VLAN" + +#: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 +#: ipam/views.py:940 netbox/navigation/menu.py:181 +#: netbox/navigation/menu.py:183 +msgid "VLANs" +msgstr "VLANs" + +#: ipam/models/vlans.py:230 +#, python-brace-format +msgid "" +"VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " +"site {site}." +msgstr "" +"A VLAN é atribuída ao grupo {group} (escopo: {scope}); também não pode " +"atribuir ao site {site}." + +#: ipam/models/vlans.py:238 +#, python-brace-format +msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgstr "" +"O VID deve estar entre {minimum} e {maximum} para VLANs em grupo {group}" + +#: ipam/models/vrfs.py:30 +msgid "route distinguisher" +msgstr "distintor de rota" + +#: ipam/models/vrfs.py:31 +msgid "Unique route distinguisher (as defined in RFC 4364)" +msgstr "Distintivo de rota exclusivo (conforme definido na RFC 4364)" + +#: ipam/models/vrfs.py:42 +msgid "enforce unique space" +msgstr "imponha um espaço exclusivo" + +#: ipam/models/vrfs.py:43 +msgid "Prevent duplicate prefixes/IP addresses within this VRF" +msgstr "Evite prefixos/endereços IP duplicados dentro deste VRF" + +#: ipam/models/vrfs.py:63 netbox/navigation/menu.py:174 +#: netbox/navigation/menu.py:176 +msgid "VRFs" +msgstr "VRFs" + +#: ipam/models/vrfs.py:82 +msgid "Route target value (formatted in accordance with RFC 4360)" +msgstr "Valor alvo da rota (formatado de acordo com a RFC 4360)" + +#: ipam/models/vrfs.py:94 +msgid "route target" +msgstr "alvo da rota" + +#: ipam/models/vrfs.py:95 +msgid "route targets" +msgstr "alvos da rota" + +#: ipam/tables/asn.py:52 +msgid "ASDOT" +msgstr "ASDOT" + +#: ipam/tables/asn.py:57 +msgid "Site Count" +msgstr "Contagem de sites" + +#: ipam/tables/asn.py:62 +msgid "Provider Count" +msgstr "Contagem de fornecedores" + +#: ipam/tables/ip.py:94 netbox/navigation/menu.py:167 +#: netbox/navigation/menu.py:169 +msgid "Aggregates" +msgstr "Agregados" + +#: ipam/tables/ip.py:124 +msgid "Added" +msgstr "Adicionado" + +#: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 +#: ipam/views.py:349 netbox/navigation/menu.py:153 +#: netbox/navigation/menu.py:155 templates/ipam/vlan.html:87 +msgid "Prefixes" +msgstr "Prefixos" + +#: ipam/tables/ip.py:130 ipam/tables/ip.py:267 ipam/tables/ip.py:320 +#: ipam/tables/vlans.py:82 templates/dcim/device.html:263 +#: templates/ipam/aggregate.html:25 templates/ipam/iprange.html:32 +#: templates/ipam/prefix.html:100 +msgid "Utilization" +msgstr "Utilização" + +#: ipam/tables/ip.py:170 netbox/navigation/menu.py:149 +msgid "IP Ranges" +msgstr "Intervalos de IP" + +#: ipam/tables/ip.py:220 +msgid "Prefix (Flat)" +msgstr "Prefixo (plano)" + +#: ipam/tables/ip.py:224 templates/dcim/rack_edit.html:52 +msgid "Depth" +msgstr "Profundidade" + +#: ipam/tables/ip.py:261 +msgid "Pool" +msgstr "Piscina" + +#: ipam/tables/ip.py:264 ipam/tables/ip.py:317 +msgid "Marked Utilized" +msgstr "Marcado como utilizado" + +#: ipam/tables/ip.py:301 +msgid "Start address" +msgstr "Endereço inicial" + +#: ipam/tables/ip.py:379 +msgid "NAT (Inside)" +msgstr "NAT (interno)" + +#: ipam/tables/ip.py:384 +msgid "NAT (Outside)" +msgstr "NAT (ao ar livre)" + +#: ipam/tables/ip.py:389 +msgid "Assigned" +msgstr "Atribuído" + +#: ipam/tables/ip.py:424 templates/vpn/l2vpntermination.html:19 +#: vpn/forms/filtersets.py:235 +msgid "Assigned Object" +msgstr "Objeto atribuído" + +#: ipam/tables/vlans.py:68 +msgid "Scope Type" +msgstr "Tipo de escopo" + +#: ipam/tables/vlans.py:107 ipam/tables/vlans.py:210 +#: templates/dcim/inc/interface_vlans_table.html:4 +msgid "VID" +msgstr "VÍDEO" + +#: ipam/tables/vrfs.py:30 +msgid "RD" +msgstr "VERMELHO" + +#: ipam/tables/vrfs.py:33 +msgid "Unique" +msgstr "Único" + +#: ipam/tables/vrfs.py:36 vpn/tables/l2vpn.py:27 +msgid "Import Targets" +msgstr "Alvos de importação" + +#: ipam/tables/vrfs.py:41 vpn/tables/l2vpn.py:32 +msgid "Export Targets" +msgstr "Alvos de exportação" + +#: ipam/views.py:536 +msgid "Child Prefixes" +msgstr "Prefixos infantis" + +#: ipam/views.py:571 +msgid "Child Ranges" +msgstr "Intervalos para crianças" + +#: ipam/views.py:868 +msgid "Related IPs" +msgstr "IPs relacionados" + +#: ipam/views.py:1091 +msgid "Device Interfaces" +msgstr "Interfaces de dispositivos" + +#: ipam/views.py:1109 +msgid "VM Interfaces" +msgstr "Interfaces de VM" + +#: netbox/config/parameters.py:22 templates/core/configrevision.html:111 +msgid "Login banner" +msgstr "Banner de login" + +#: netbox/config/parameters.py:24 +msgid "Additional content to display on the login page" +msgstr "Conteúdo adicional para exibir na página de login" + +#: netbox/config/parameters.py:33 templates/core/configrevision.html:115 +msgid "Maintenance banner" +msgstr "Banner de manutenção" + +#: netbox/config/parameters.py:35 +msgid "Additional content to display when in maintenance mode" +msgstr "Conteúdo adicional a ser exibido no modo de manutenção" + +#: netbox/config/parameters.py:44 templates/core/configrevision.html:119 +msgid "Top banner" +msgstr "Banner superior" + +#: netbox/config/parameters.py:46 +msgid "Additional content to display at the top of every page" +msgstr "Conteúdo adicional para exibir na parte superior de cada página" + +#: netbox/config/parameters.py:55 templates/core/configrevision.html:123 +msgid "Bottom banner" +msgstr "Banner inferior" + +#: netbox/config/parameters.py:57 +msgid "Additional content to display at the bottom of every page" +msgstr "Conteúdo adicional para exibir na parte inferior de cada página" + +#: netbox/config/parameters.py:68 +msgid "Globally unique IP space" +msgstr "Espaço IP globalmente exclusivo" + +#: netbox/config/parameters.py:70 +msgid "Enforce unique IP addressing within the global table" +msgstr "Imponha o endereçamento IP exclusivo na tabela global" + +#: netbox/config/parameters.py:75 templates/core/configrevision.html:87 +msgid "Prefer IPv4" +msgstr "Prefiro IPv4" + +#: netbox/config/parameters.py:77 +msgid "Prefer IPv4 addresses over IPv6" +msgstr "Prefira endereços IPv4 em vez de IPv6" + +#: netbox/config/parameters.py:84 +msgid "Rack unit height" +msgstr "Altura da unidade de rack" + +#: netbox/config/parameters.py:86 +msgid "Default unit height for rendered rack elevations" +msgstr "Altura padrão da unidade para elevações de rack renderizadas" + +#: netbox/config/parameters.py:91 +msgid "Rack unit width" +msgstr "Largura da unidade de rack" + +#: netbox/config/parameters.py:93 +msgid "Default unit width for rendered rack elevations" +msgstr "Largura padrão da unidade para elevações de rack renderizadas" + +#: netbox/config/parameters.py:100 +msgid "Powerfeed voltage" +msgstr "Tensão de alimentação" + +#: netbox/config/parameters.py:102 +msgid "Default voltage for powerfeeds" +msgstr "Tensão padrão para alimentações de energia" + +#: netbox/config/parameters.py:107 +msgid "Powerfeed amperage" +msgstr "Amperagem de alimentação de energia" + +#: netbox/config/parameters.py:109 +msgid "Default amperage for powerfeeds" +msgstr "Amperagem padrão para alimentações de energia" + +#: netbox/config/parameters.py:114 +msgid "Powerfeed max utilization" +msgstr "Utilização máxima da alimentação de energia" + +#: netbox/config/parameters.py:116 +msgid "Default max utilization for powerfeeds" +msgstr "Utilização máxima padrão para alimentações de energia" + +#: netbox/config/parameters.py:123 templates/core/configrevision.html:99 +msgid "Allowed URL schemes" +msgstr "Esquemas de URL permitidos" + +#: netbox/config/parameters.py:128 +msgid "Permitted schemes for URLs in user-provided content" +msgstr "Esquemas permitidos para URLs em conteúdo fornecido pelo usuário" + +#: netbox/config/parameters.py:136 +msgid "Default page size" +msgstr "Tamanho de página padrão" + +#: netbox/config/parameters.py:142 +msgid "Maximum page size" +msgstr "Tamanho máximo da página" + +#: netbox/config/parameters.py:150 templates/core/configrevision.html:151 +msgid "Custom validators" +msgstr "Validadores personalizados" + +#: netbox/config/parameters.py:152 +msgid "Custom validation rules (JSON)" +msgstr "Regras de validação personalizadas (JSON)" + +#: netbox/config/parameters.py:160 templates/core/configrevision.html:161 +msgid "Protection rules" +msgstr "Regras de proteção" + +#: netbox/config/parameters.py:162 +msgid "Deletion protection rules (JSON)" +msgstr "Regras de proteção contra exclusão (JSON)" + +#: netbox/config/parameters.py:172 +msgid "Default preferences" +msgstr "Preferências padrão" + +#: netbox/config/parameters.py:174 +msgid "Default preferences for new users" +msgstr "Preferências padrão para novos usuários" + +#: netbox/config/parameters.py:181 templates/core/configrevision.html:197 +msgid "Maintenance mode" +msgstr "Modo de manutenção" + +#: netbox/config/parameters.py:183 +msgid "Enable maintenance mode" +msgstr "Ativar o modo de manutenção" + +#: netbox/config/parameters.py:188 templates/core/configrevision.html:201 +msgid "GraphQL enabled" +msgstr "GraphQL habilitado" + +#: netbox/config/parameters.py:190 +msgid "Enable the GraphQL API" +msgstr "Habilite a API GraphQL" + +#: netbox/config/parameters.py:195 templates/core/configrevision.html:205 +msgid "Changelog retention" +msgstr "Retenção do changelog" + +#: netbox/config/parameters.py:197 +msgid "Days to retain changelog history (set to zero for unlimited)" +msgstr "" +"Dias para reter o histórico do changelog (definido como zero para uso " +"ilimitado)" + +#: netbox/config/parameters.py:202 +msgid "Job result retention" +msgstr "Retenção de resultados de trabalho" + +#: netbox/config/parameters.py:204 +msgid "Days to retain job result history (set to zero for unlimited)" +msgstr "" +"Dias para reter o histórico de resultados do trabalho (definido como zero " +"para uso ilimitado)" + +#: netbox/config/parameters.py:209 templates/core/configrevision.html:213 +msgid "Maps URL" +msgstr "URL dos mapas" + +#: netbox/config/parameters.py:211 +msgid "Base URL for mapping geographic locations" +msgstr "URL base para mapear localizações geográficas" + +#: netbox/forms/__init__.py:13 +msgid "Partial match" +msgstr "Correspondência parcial" + +#: netbox/forms/__init__.py:14 +msgid "Exact match" +msgstr "Correspondência exata" + +#: netbox/forms/__init__.py:15 +msgid "Starts with" +msgstr "Começa com" + +#: netbox/forms/__init__.py:16 +msgid "Ends with" +msgstr "Termina com" + +#: netbox/forms/__init__.py:17 +msgid "Regex" +msgstr "Regex" + +#: netbox/forms/__init__.py:35 +msgid "Object type(s)" +msgstr "Tipo (s) de objeto" + +#: netbox/forms/base.py:66 +msgid "Id" +msgstr "Id" + +#: netbox/forms/base.py:105 +msgid "Add tags" +msgstr "Adicionar etiquetas" + +#: netbox/forms/base.py:110 +msgid "Remove tags" +msgstr "Remover etiquetas" + +#: netbox/models/features.py:434 +msgid "Remote data source" +msgstr "Fonte de dados remota" + +#: netbox/models/features.py:444 +msgid "data path" +msgstr "caminho de dados" + +#: netbox/models/features.py:448 +msgid "Path to remote file (relative to data source root)" +msgstr "Caminho para o arquivo remoto (em relação à raiz da fonte de dados)" + +#: netbox/models/features.py:451 +msgid "auto sync enabled" +msgstr "sincronização automática ativada" + +#: netbox/models/features.py:453 +msgid "Enable automatic synchronization of data when the data file is updated" +msgstr "" +"Habilitar a sincronização automática de dados quando o arquivo de dados for " +"atualizado" + +#: netbox/models/features.py:456 +msgid "date synced" +msgstr "data sincronizada" + +#: netbox/navigation/menu.py:12 +msgid "Organization" +msgstr "Organização" + +#: netbox/navigation/menu.py:20 +msgid "Site Groups" +msgstr "Grupos de sites" + +#: netbox/navigation/menu.py:28 +msgid "Rack Roles" +msgstr "Funções de rack" + +#: netbox/navigation/menu.py:32 +msgid "Elevations" +msgstr "Elevações" + +#: netbox/navigation/menu.py:41 +msgid "Tenant Groups" +msgstr "Grupos de inquilinos" + +#: netbox/navigation/menu.py:48 +msgid "Contact Groups" +msgstr "Grupos de contato" + +#: netbox/navigation/menu.py:49 templates/tenancy/contactrole.html:8 +msgid "Contact Roles" +msgstr "Funções de contato" + +#: netbox/navigation/menu.py:50 +msgid "Contact Assignments" +msgstr "Atribuições de contato" + +#: netbox/navigation/menu.py:64 +msgid "Modules" +msgstr "Módulos" + +#: netbox/navigation/menu.py:65 templates/dcim/devicerole.html:8 +msgid "Device Roles" +msgstr "Funções do dispositivo" + +#: netbox/navigation/menu.py:68 templates/dcim/device.html:162 +#: templates/dcim/virtualdevicecontext.html:8 +msgid "Virtual Device Contexts" +msgstr "Contextos de dispositivos virtuais" + +#: netbox/navigation/menu.py:76 +msgid "Manufacturers" +msgstr "Fabricantes" + +#: netbox/navigation/menu.py:80 +msgid "Device Components" +msgstr "Componentes do dispositivo" + +#: netbox/navigation/menu.py:92 templates/dcim/inventoryitemrole.html:8 +msgid "Inventory Item Roles" +msgstr "Funções do item de inventário" + +#: netbox/navigation/menu.py:99 netbox/navigation/menu.py:103 +msgid "Connections" +msgstr "Conexões" + +#: netbox/navigation/menu.py:105 +msgid "Cables" +msgstr "Cabos" + +#: netbox/navigation/menu.py:106 +msgid "Wireless Links" +msgstr "Links sem fio" + +#: netbox/navigation/menu.py:109 +msgid "Interface Connections" +msgstr "Conexões de interface" + +#: netbox/navigation/menu.py:114 +msgid "Console Connections" +msgstr "Conexões do console" + +#: netbox/navigation/menu.py:119 +msgid "Power Connections" +msgstr "Conexões de alimentação" + +#: netbox/navigation/menu.py:135 +msgid "Wireless LAN Groups" +msgstr "Grupos de LAN sem fio" + +#: netbox/navigation/menu.py:156 +msgid "Prefix & VLAN Roles" +msgstr "Funções de prefixo e VLAN" + +#: netbox/navigation/menu.py:162 +msgid "ASN Ranges" +msgstr "Intervalos ASN" + +#: netbox/navigation/menu.py:184 +msgid "VLAN Groups" +msgstr "Grupos de VLAN" + +#: netbox/navigation/menu.py:191 +msgid "Service Templates" +msgstr "Modelos de serviço" + +#: netbox/navigation/menu.py:192 templates/dcim/device.html:304 +#: templates/ipam/ipaddress.html:122 +#: templates/virtualization/virtualmachine.html:157 +msgid "Services" +msgstr "Serviços" + +#: netbox/navigation/menu.py:199 +msgid "VPN" +msgstr "VPN" + +#: netbox/navigation/menu.py:203 netbox/navigation/menu.py:205 +#: vpn/tables/tunnels.py:24 +msgid "Tunnels" +msgstr "Túneis" + +#: netbox/navigation/menu.py:206 templates/vpn/tunnelgroup.html:8 +msgid "Tunnel Groups" +msgstr "grupos de túneis" + +#: netbox/navigation/menu.py:207 +msgid "Tunnel Terminations" +msgstr "Terminações de túneis" + +#: netbox/navigation/menu.py:211 netbox/navigation/menu.py:213 +#: vpn/models/l2vpn.py:64 +msgid "L2VPNs" +msgstr "VPNs L2" + +#: netbox/navigation/menu.py:214 templates/vpn/l2vpn.html:57 +#: templates/vpn/tunnel.html:73 vpn/tables/tunnels.py:54 +msgid "Terminations" +msgstr "Rescisões" + +#: netbox/navigation/menu.py:220 +msgid "IKE Proposals" +msgstr "Propostas do IKE" + +#: netbox/navigation/menu.py:221 templates/vpn/ikeproposal.html:42 +msgid "IKE Policies" +msgstr "Políticas da IKE" + +#: netbox/navigation/menu.py:222 +msgid "IPSec Proposals" +msgstr "Propostas de IPsec" + +#: netbox/navigation/menu.py:223 templates/vpn/ipsecproposal.html:38 +msgid "IPSec Policies" +msgstr "Políticas IPsec" + +#: netbox/navigation/menu.py:224 templates/vpn/ikepolicy.html:39 +#: templates/vpn/ipsecpolicy.html:26 +msgid "IPSec Profiles" +msgstr "Perfis IPsec" + +#: netbox/navigation/menu.py:231 templates/dcim/device_edit.html:78 +msgid "Virtualization" +msgstr "Virtualização" + +#: netbox/navigation/menu.py:235 netbox/navigation/menu.py:237 +#: virtualization/views.py:186 +msgid "Virtual Machines" +msgstr "Máquinas virtuais" + +#: netbox/navigation/menu.py:239 +#: templates/virtualization/virtualmachine.html:177 +#: templates/virtualization/virtualmachine/base.html:32 +#: templates/virtualization/virtualmachine_list.html:21 +#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +msgid "Virtual Disks" +msgstr "Discos virtuais" + +#: netbox/navigation/menu.py:246 +msgid "Cluster Types" +msgstr "Tipos de cluster" + +#: netbox/navigation/menu.py:247 +msgid "Cluster Groups" +msgstr "Grupos de clusters" + +#: netbox/navigation/menu.py:261 +msgid "Circuit Types" +msgstr "Tipos de circuito" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 +msgid "Providers" +msgstr "Provedores" + +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:53 +msgid "Provider Accounts" +msgstr "Contas de provedores" + +#: netbox/navigation/menu.py:269 +msgid "Provider Networks" +msgstr "Redes de provedores" + +#: netbox/navigation/menu.py:283 +msgid "Power Panels" +msgstr "Painéis de energia" + +#: netbox/navigation/menu.py:294 +msgid "Configurations" +msgstr "Configurações" + +#: netbox/navigation/menu.py:296 +msgid "Config Contexts" +msgstr "Contextos de configuração" + +#: netbox/navigation/menu.py:297 +msgid "Config Templates" +msgstr "Modelos de configuração" + +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 +msgid "Customization" +msgstr "Personalização" + +#: netbox/navigation/menu.py:310 +#: templates/circuits/circuittermination_edit.html:53 +#: templates/dcim/cable_edit.html:77 templates/dcim/device_edit.html:103 +#: templates/dcim/inventoryitem_edit.html:102 templates/dcim/rack_edit.html:81 +#: templates/dcim/virtualchassis_add.html:31 +#: templates/dcim/virtualchassis_edit.html:41 +#: templates/generic/bulk_edit.html:92 templates/htmx/form.html:32 +#: templates/inc/panels/custom_fields.html:7 +#: templates/ipam/ipaddress_bulk_add.html:35 +#: templates/ipam/ipaddress_edit.html:88 templates/ipam/service_create.html:75 +#: templates/ipam/service_edit.html:62 templates/ipam/vlan_edit.html:63 +#: templates/tenancy/contactassignment_edit.html:31 +#: templates/vpn/l2vpntermination_edit.html:51 +msgid "Custom Fields" +msgstr "Campos personalizados" + +#: netbox/navigation/menu.py:311 +msgid "Custom Field Choices" +msgstr "Opções de campo personalizadas" + +#: netbox/navigation/menu.py:312 +msgid "Custom Links" +msgstr "Links personalizados" + +#: netbox/navigation/menu.py:313 +msgid "Export Templates" +msgstr "Modelos de exportação" + +#: netbox/navigation/menu.py:314 +msgid "Saved Filters" +msgstr "Filtros salvos" + +#: netbox/navigation/menu.py:316 +msgid "Image Attachments" +msgstr "Anexos de imagem" + +#: netbox/navigation/menu.py:320 +msgid "Reports & Scripts" +msgstr "Relatórios e scripts" + +#: netbox/navigation/menu.py:340 +msgid "Operations" +msgstr "Operações" + +#: netbox/navigation/menu.py:344 +msgid "Integrations" +msgstr "Integrações" + +#: netbox/navigation/menu.py:346 +msgid "Data Sources" +msgstr "Fontes de dados" + +#: netbox/navigation/menu.py:347 +msgid "Event Rules" +msgstr "Regras do evento" + +#: netbox/navigation/menu.py:348 +msgid "Webhooks" +msgstr "Webhooks" + +#: netbox/navigation/menu.py:352 netbox/navigation/menu.py:356 +#: netbox/views/generic/feature_views.py:151 +#: templates/extras/report/base.html:37 templates/extras/script/base.html:36 +msgid "Jobs" +msgstr "Empregos" + +#: netbox/navigation/menu.py:362 +msgid "Logging" +msgstr "Exploração de" + +#: netbox/navigation/menu.py:364 +msgid "Journal Entries" +msgstr "Entradas de diário" + +#: netbox/navigation/menu.py:365 templates/extras/objectchange.html:8 +#: templates/extras/objectchange_list.html:4 +msgid "Change Log" +msgstr "Registro de alterações" + +#: netbox/navigation/menu.py:372 templates/inc/profile_button.html:18 +msgid "Admin" +msgstr "Administrador" + +#: netbox/navigation/menu.py:381 templates/users/group.html:27 +#: users/forms/model_forms.py:242 users/forms/model_forms.py:255 +#: users/forms/model_forms.py:309 users/tables.py:105 +msgid "Users" +msgstr "Usuários" + +#: netbox/navigation/menu.py:404 users/forms/model_forms.py:182 +#: users/forms/model_forms.py:195 users/forms/model_forms.py:314 +#: users/tables.py:35 users/tables.py:109 +msgid "Groups" +msgstr "Grupos" + +#: netbox/navigation/menu.py:426 templates/account/base.html:21 +#: templates/inc/profile_button.html:39 +msgid "API Tokens" +msgstr "Tokens de API" + +#: netbox/navigation/menu.py:433 users/forms/model_forms.py:188 +#: users/forms/model_forms.py:197 users/forms/model_forms.py:248 +#: users/forms/model_forms.py:256 +msgid "Permissions" +msgstr "Permissões" + +#: netbox/navigation/menu.py:445 +msgid "Current Config" +msgstr "Configuração atual" + +#: netbox/navigation/menu.py:451 +msgid "Config Revisions" +msgstr "Revisões de configuração" + +#: netbox/navigation/menu.py:491 templates/500.html:35 +#: templates/account/preferences.html:29 +msgid "Plugins" +msgstr "Plugins" + +#: netbox/preferences.py:17 +msgid "Color mode" +msgstr "Modo de cor" + +#: netbox/preferences.py:25 +msgid "Page length" +msgstr "Comprimento da página" + +#: netbox/preferences.py:27 +msgid "The default number of objects to display per page" +msgstr "O número padrão de objetos a serem exibidos por página" + +#: netbox/preferences.py:31 +msgid "Paginator placement" +msgstr "Posicionamento do paginador" + +#: netbox/preferences.py:37 +msgid "Where the paginator controls will be displayed relative to a table" +msgstr "Onde os controles do paginador serão exibidos em relação a uma tabela" + +#: netbox/preferences.py:43 +msgid "Data format" +msgstr "Formato de dados" + +#: netbox/tables/columns.py:175 +msgid "Toggle all" +msgstr "Alternar tudo" + +#: netbox/tables/columns.py:277 templates/inc/profile_button.html:56 +msgid "Toggle Dropdown" +msgstr "Alternar lista suspensa" + +#: netbox/tables/columns.py:542 templates/core/job.html:40 +msgid "Error" +msgstr "Erro" + +#: netbox/tables/tables.py:243 templates/generic/bulk_import.html:115 +msgid "Field" +msgstr "Campo" + +#: netbox/tables/tables.py:246 +msgid "Value" +msgstr "Valor" + +#: netbox/tables/tables.py:259 +msgid "No results found" +msgstr "Nenhum resultado encontrado" + +#: netbox/tests/dummy_plugin/navigation.py:29 +msgid "Dummy Plugin" +msgstr "Plugin fictício" + +#: netbox/views/generic/feature_views.py:38 +msgid "Changelog" +msgstr "Registro de alterações" + +#: netbox/views/generic/feature_views.py:91 +msgid "Journal" +msgstr "Diário" + +#: templates/403.html:4 +msgid "Access Denied" +msgstr "Acesso negado" + +#: templates/403.html:9 +msgid "You do not have permission to access this page" +msgstr "Você não tem permissão para acessar esta página" + +#: templates/404.html:4 +msgid "Page Not Found" +msgstr "Página não encontrada" + +#: templates/404.html:9 +msgid "The requested page does not exist" +msgstr "A página solicitada não existe" + +#: templates/500.html:7 templates/500.html:18 +msgid "Server Error" +msgstr "Erro no servidor" + +#: templates/500.html:23 +msgid "There was a problem with your request. Please contact an administrator" +msgstr "" +"Houve um problema com sua solicitação. Entre em contato com um administrador" + +#: templates/500.html:28 +msgid "The complete exception is provided below" +msgstr "A exceção completa é fornecida abaixo" + +#: templates/500.html:33 +msgid "Python version" +msgstr "Versão Python" + +#: templates/500.html:34 +msgid "NetBox version" +msgstr "Versão NetBox" + +#: templates/500.html:36 +msgid "None installed" +msgstr "Nenhum instalado" + +#: templates/500.html:39 +msgid "If further assistance is required, please post to the" +msgstr "Se for necessária mais assistência, por favor poste no" + +#: templates/500.html:39 +msgid "NetBox discussion forum" +msgstr "Fórum de discussão NetBox" + +#: templates/500.html:39 +msgid "on GitHub" +msgstr "no GitHub" + +#: templates/500.html:42 templates/base/40x.html:17 +msgid "Home Page" +msgstr "Página inicial" + +#: templates/account/base.html:7 templates/inc/profile_button.html:24 +#: vpn/forms/bulk_edit.py:256 vpn/forms/filtersets.py:186 +#: vpn/forms/model_forms.py:372 +msgid "Profile" +msgstr "Perfil" + +#: templates/account/base.html:13 templates/inc/profile_button.html:34 +msgid "Preferences" +msgstr "Preferências" + +#: templates/account/password.html:5 +msgid "Change Password" +msgstr "Alterar senha" + +#: templates/account/password.html:17 templates/account/preferences.html:82 +#: templates/core/configrevision_restore.html:80 +#: templates/dcim/devicebay_populate.html:34 +#: templates/dcim/virtualchassis_add_member.html:24 +#: templates/dcim/virtualchassis_edit.html:104 +#: templates/extras/object_journal.html:26 templates/extras/script.html:36 +#: templates/generic/bulk_add_component.html:55 +#: templates/generic/bulk_delete.html:46 templates/generic/bulk_edit.html:125 +#: templates/generic/bulk_import.html:53 templates/generic/bulk_import.html:75 +#: templates/generic/bulk_import.html:97 templates/generic/bulk_remove.html:42 +#: templates/generic/bulk_rename.html:44 +#: templates/generic/confirmation_form.html:20 +#: templates/generic/object_edit.html:76 templates/htmx/delete_form.html:53 +#: templates/htmx/delete_form.html:55 templates/ipam/ipaddress_assign.html:31 +#: templates/virtualization/cluster_add_devices.html:30 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/account/password.html:18 templates/account/preferences.html:83 +#: templates/dcim/devicebay_populate.html:35 +#: templates/dcim/virtualchassis_add_member.html:26 +#: templates/dcim/virtualchassis_edit.html:106 +#: templates/extras/dashboard/widget_add.html:26 +#: templates/extras/dashboard/widget_config.html:19 +#: templates/extras/object_journal.html:27 +#: templates/generic/object_edit.html:66 +#: utilities/templates/helpers/applied_filters.html:16 +#: utilities/templates/helpers/table_config_form.html:40 +msgid "Save" +msgstr "Salvar" + +#: templates/account/preferences.html:41 +msgid "Table Configurations" +msgstr "Configurações de tabela" + +#: templates/account/preferences.html:46 +msgid "Clear table preferences" +msgstr "Limpar preferências de tabela" + +#: templates/account/preferences.html:53 +msgid "Toggle All" +msgstr "Alternar tudo" + +#: templates/account/preferences.html:55 +msgid "Table" +msgstr "Tabela" + +#: templates/account/preferences.html:56 +msgid "Ordering" +msgstr "Pedido" + +#: templates/account/preferences.html:57 +msgid "Columns" +msgstr "Colunas" + +#: templates/account/preferences.html:76 templates/dcim/cable_trace.html:113 +#: templates/extras/object_configcontext.html:55 +msgid "None found" +msgstr "Nenhum encontrado" + +#: templates/account/profile.html:6 +msgid "User Profile" +msgstr "Perfil do usuário" + +#: templates/account/profile.html:12 +msgid "Account Details" +msgstr "Detalhes da conta" + +#: templates/account/profile.html:30 templates/tenancy/contact.html:44 +#: templates/users/user.html:26 tenancy/forms/bulk_edit.py:108 +msgid "Email" +msgstr "E-mail" + +#: templates/account/profile.html:34 templates/users/user.html:30 +msgid "Account Created" +msgstr "Conta criada" + +#: templates/account/profile.html:38 templates/users/user.html:42 +msgid "Superuser" +msgstr "Superusuário" + +#: templates/account/profile.html:42 +msgid "Admin Access" +msgstr "Acesso de administrador" + +#: templates/account/profile.html:51 templates/users/objectpermission.html:86 +#: templates/users/user.html:51 +msgid "Assigned Groups" +msgstr "Grupos atribuídos" + +#: templates/account/profile.html:56 +#: templates/circuits/circuit_terminations_swap.html:18 +#: templates/circuits/circuit_terminations_swap.html:26 +#: templates/circuits/inc/circuit_termination.html:154 +#: templates/dcim/devicebay.html:66 +#: templates/dcim/inc/panels/inventory_items.html:37 +#: templates/dcim/interface.html:306 templates/dcim/modulebay.html:79 +#: templates/extras/configcontext.html:73 templates/extras/eventrule.html:84 +#: templates/extras/htmx/script_result.html:54 +#: templates/extras/object_configcontext.html:28 +#: templates/extras/objectchange.html:128 +#: templates/extras/objectchange.html:145 templates/extras/webhook.html:79 +#: templates/extras/webhook.html:91 templates/inc/panel_table.html:12 +#: templates/inc/panels/comments.html:12 +#: templates/ipam/inc/panels/fhrp_groups.html:43 templates/users/group.html:32 +#: templates/users/group.html:42 templates/users/objectpermission.html:81 +#: templates/users/objectpermission.html:91 templates/users/user.html:56 +#: templates/users/user.html:66 +msgid "None" +msgstr "Nenhum" + +#: templates/account/profile.html:66 templates/users/user.html:76 +msgid "Recent Activity" +msgstr "Atividade recente" + +#: templates/account/token.html:8 templates/account/token_list.html:6 +msgid "My API Tokens" +msgstr "Meus tokens de API" + +#: templates/account/token.html:11 templates/account/token.html:19 +#: templates/users/token.html:6 templates/users/token.html:14 +#: users/forms/filtersets.py:121 +msgid "Token" +msgstr "Ficha" + +#: templates/account/token.html:40 templates/users/token.html:32 +#: users/forms/bulk_edit.py:87 +msgid "Write enabled" +msgstr "Gravação ativada" + +#: templates/account/token.html:52 templates/users/token.html:44 +msgid "Last used" +msgstr "Usado pela última vez" + +#: templates/account/token_list.html:12 +msgid "Add a Token" +msgstr "Adicionar um token" + +#: templates/admin/index.html:10 +msgid "System" +msgstr "Sistema" + +#: templates/admin/index.html:14 +msgid "Background Tasks" +msgstr "Tarefas de fundo" + +#: templates/admin/index.html:19 +msgid "Installed plugins" +msgstr "Plugins instalados" + +#: templates/base/base.html:28 templates/extras/admin/plugins_list.html:8 +#: templates/home.html:24 +msgid "Home" +msgstr "Início" + +#: templates/base/layout.html:27 templates/base/layout.html:37 +#: templates/login.html:34 +msgid "NetBox logo" +msgstr "Logotipo da NetBox" + +#: templates/base/layout.html:76 +msgid "Debug mode is enabled" +msgstr "O modo de depuração está ativado" + +#: templates/base/layout.html:77 +msgid "" +"Performance may be limited. Debugging should never be enabled on a " +"production system" +msgstr "" +"O desempenho pode ser limitado. A depuração nunca deve ser ativada em um " +"sistema de produção" + +#: templates/base/layout.html:83 +msgid "Maintenance Mode" +msgstr "Modo de manutenção" + +#: templates/base/layout.html:134 +msgid "Docs" +msgstr "Documentos" + +#: templates/base/layout.html:139 templates/rest_framework/api.html:10 +msgid "REST API" +msgstr "API DE DESCANSO" + +#: templates/base/layout.html:144 +msgid "REST API documentation" +msgstr "Documentação da API REST" + +#: templates/base/layout.html:150 +msgid "GraphQL API" +msgstr "API do GraphQL" + +#: templates/base/layout.html:156 +msgid "Source Code" +msgstr "Código-fonte" + +#: templates/base/layout.html:161 +msgid "Community" +msgstr "Comunidade" + +#: templates/base/sidenav.html:12 templates/base/sidenav.html:17 +msgid "NetBox Logo" +msgstr "Logotipo da NetBox" + +#: templates/circuits/circuit.html:48 +msgid "Install Date" +msgstr "Data de instalação" + +#: templates/circuits/circuit.html:52 +msgid "Termination Date" +msgstr "Data de rescisão" + +#: templates/circuits/circuit_terminations_swap.html:4 +msgid "Swap Circuit Terminations" +msgstr "Terminações do circuito de troca" + +#: templates/circuits/circuit_terminations_swap.html:8 +#, python-format +msgid "Swap these terminations for circuit %(circuit)s?" +msgstr "Troque essas terminações por circuito %(circuit)s?" + +#: templates/circuits/circuit_terminations_swap.html:14 +msgid "A side" +msgstr "Um lado" + +#: templates/circuits/circuit_terminations_swap.html:22 +msgid "Z side" +msgstr "Lado Z" + +#: templates/circuits/circuittermination_edit.html:9 +#: templates/circuits/inc/circuit_termination.html:81 +#: templates/dcim/frontport.html:128 templates/dcim/interface.html:199 +#: templates/dcim/rearport.html:118 +msgid "Circuit Termination" +msgstr "Terminação do circuito" + +#: templates/circuits/circuittermination_edit.html:41 +msgid "Termination Details" +msgstr "Detalhes da rescisão" + +#: templates/circuits/circuittype.html:10 +msgid "Add Circuit" +msgstr "Adicionar circuito" + +#: templates/circuits/inc/circuit_termination.html:9 +#: templates/dcim/devicetype/component_templates.html:30 +#: templates/dcim/manufacturer.html:11 +#: templates/dcim/moduletype/component_templates.html:30 +#: templates/generic/bulk_add_component.html:8 +#: templates/users/objectpermission.html:41 +#: utilities/templates/buttons/add.html:4 +#: utilities/templates/helpers/table_config_form.html:20 +msgid "Add" +msgstr "Adicionar" + +#: templates/circuits/inc/circuit_termination.html:14 +#: templates/circuits/inc/circuit_termination.html:63 +#: templates/dcim/devicetype/component_templates.html:21 +#: templates/dcim/inc/panels/inventory_items.html:24 +#: templates/dcim/moduletype/component_templates.html:21 +#: templates/dcim/powerpanel.html:61 templates/generic/object_edit.html:29 +#: templates/ipam/inc/ipaddress_edit_header.html:10 +#: templates/ipam/inc/panels/fhrp_groups.html:30 +#: utilities/templates/buttons/edit.html:3 +msgid "Edit" +msgstr "Editar" + +#: templates/circuits/inc/circuit_termination.html:17 +msgid "Swap" +msgstr "Troca" + +#: templates/circuits/inc/circuit_termination.html:26 +#, python-format +msgid "Termination %(side)s" +msgstr "Rescisão %(side)s" + +#: templates/circuits/inc/circuit_termination.html:42 +#: templates/dcim/cable.html:70 templates/dcim/cable.html:76 +#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:76 +msgid "Termination" +msgstr "Rescisão" + +#: templates/circuits/inc/circuit_termination.html:46 +#: templates/dcim/consoleport.html:62 templates/dcim/consoleserverport.html:62 +#: templates/dcim/powerfeed.html:122 +msgid "Marked as connected" +msgstr "Marcado como conectado" + +#: templates/circuits/inc/circuit_termination.html:48 +msgid "to" +msgstr "para" + +#: templates/circuits/inc/circuit_termination.html:58 +#: templates/circuits/inc/circuit_termination.html:59 +#: templates/dcim/frontport.html:87 +#: templates/dcim/inc/connection_endpoints.html:7 +#: templates/dcim/interface.html:160 templates/dcim/rearport.html:83 +msgid "Trace" +msgstr "Traço" + +#: templates/circuits/inc/circuit_termination.html:62 +msgid "Edit cable" +msgstr "Editar cabo" + +#: templates/circuits/inc/circuit_termination.html:67 +msgid "Remove cable" +msgstr "Remova o cabo" + +#: templates/circuits/inc/circuit_termination.html:68 +#: templates/dcim/bulk_disconnect.html:5 +#: templates/dcim/device/consoleports.html:12 +#: templates/dcim/device/consoleserverports.html:12 +#: templates/dcim/device/frontports.html:12 +#: templates/dcim/device/interfaces.html:16 +#: templates/dcim/device/poweroutlets.html:12 +#: templates/dcim/device/powerports.html:12 +#: templates/dcim/device/rearports.html:12 templates/dcim/powerpanel.html:66 +msgid "Disconnect" +msgstr "Desconectar" + +#: templates/circuits/inc/circuit_termination.html:75 +#: templates/dcim/consoleport.html:71 templates/dcim/consoleserverport.html:71 +#: templates/dcim/frontport.html:109 templates/dcim/interface.html:186 +#: templates/dcim/interface.html:206 templates/dcim/powerfeed.html:136 +#: templates/dcim/poweroutlet.html:75 templates/dcim/poweroutlet.html:76 +#: templates/dcim/powerport.html:77 templates/dcim/rearport.html:105 +msgid "Connect" +msgstr "Conectar" + +#: templates/circuits/inc/circuit_termination.html:79 +#: templates/dcim/consoleport.html:78 templates/dcim/consoleserverport.html:78 +#: templates/dcim/frontport.html:18 templates/dcim/frontport.html:122 +#: templates/dcim/interface.html:193 templates/dcim/inventoryitem_edit.html:49 +#: templates/dcim/rearport.html:112 +msgid "Front Port" +msgstr "Porta frontal" + +#: templates/circuits/inc/circuit_termination.html:97 +msgid "Downstream" +msgstr "Rio abaixo" + +#: templates/circuits/inc/circuit_termination.html:98 +msgid "Upstream" +msgstr "Rio acima" + +#: templates/circuits/inc/circuit_termination.html:107 +msgid "Cross-Connect" +msgstr "Conexão cruzada" + +#: templates/circuits/inc/circuit_termination.html:111 +msgid "Patch Panel/Port" +msgstr "Painel de remendo/porta" + +#: templates/circuits/provider.html:11 +msgid "Add circuit" +msgstr "Adicionar circuito" + +#: templates/circuits/provideraccount.html:17 +msgid "Provider Account" +msgstr "Conta do provedor" + +#: templates/core/configrevision.html:47 +msgid "Default unit height" +msgstr "Altura padrão da unidade" + +#: templates/core/configrevision.html:51 +msgid "Default unit width" +msgstr "Largura da unidade padrão" + +#: templates/core/configrevision.html:63 +msgid "Default voltage" +msgstr "Tensão padrão" + +#: templates/core/configrevision.html:67 +msgid "Default amperage" +msgstr "Amperagem padrão" + +#: templates/core/configrevision.html:71 +msgid "Default max utilization" +msgstr "Utilização máxima padrão" + +#: templates/core/configrevision.html:83 +msgid "Enforce global unique" +msgstr "Imponha uma exclusividade global" + +#: templates/core/configrevision.html:135 +msgid "Paginate count" +msgstr "Contagem de paginações" + +#: templates/core/configrevision.html:139 +msgid "Max page size" +msgstr "Tamanho máximo da página" + +#: templates/core/configrevision.html:179 +msgid "Default user preferences" +msgstr "Preferências padrão do usuário" + +#: templates/core/configrevision.html:209 +msgid "Job retention" +msgstr "Retenção de emprego" + +#: templates/core/configrevision.html:221 +msgid "Comment" +msgstr "Comentar" + +#: templates/core/configrevision_restore.html:8 +#: templates/core/configrevision_restore.html:43 +#: templates/core/configrevision_restore.html:79 +msgid "Restore" +msgstr "Restaurar" + +#: templates/core/configrevision_restore.html:21 +msgid "Config revisions" +msgstr "Revisões de configuração" + +#: templates/core/configrevision_restore.html:54 +msgid "Parameter" +msgstr "Parâmetro" + +#: templates/core/configrevision_restore.html:55 +msgid "Current Value" +msgstr "Valor atual" + +#: templates/core/configrevision_restore.html:56 +msgid "New Value" +msgstr "Novo valor" + +#: templates/core/configrevision_restore.html:66 +msgid "Changed" +msgstr "Alterado" + +#: templates/core/datafile.html:47 +msgid "Last Updated" +msgstr "Última atualização" + +#: templates/core/datafile.html:51 templates/ipam/iprange.html:28 +#: templates/virtualization/virtualdisk.html:30 +msgid "Size" +msgstr "Tamanho" + +#: templates/core/datafile.html:52 +msgid "bytes" +msgstr "bytes" + +#: templates/core/datafile.html:55 +msgid "SHA256 Hash" +msgstr "Hash SHA256" + +#: templates/core/datasource.html:14 templates/core/datasource.html:20 +#: utilities/templates/buttons/sync.html:5 +msgid "Sync" +msgstr "Sync" + +#: templates/core/datasource.html:51 +msgid "Last synced" +msgstr "Última sincronização" + +#: templates/core/datasource.html:86 +msgid "Backend" +msgstr "Back-end" + +#: templates/core/datasource.html:102 +msgid "No parameters defined" +msgstr "Nenhum parâmetro definido" + +#: templates/core/datasource.html:118 +msgid "Files" +msgstr "Arquivos" + +#: templates/core/job.html:21 +msgid "Job" +msgstr "Emprego" + +#: templates/core/job.html:45 templates/extras/journalentry.html:29 +msgid "Created By" +msgstr "Criado por" + +#: templates/core/job.html:54 +msgid "Scheduling" +msgstr "Agendamento" + +#: templates/core/job.html:66 +#, python-format +msgid "every %(interval)s seconds" +msgstr "cada %(interval)s segundos" + +#: templates/dcim/bulk_disconnect.html:9 +#, python-format +msgid "" +"Are you sure you want to disconnect these %(count)s %(obj_type_plural)s?" +msgstr "" +"Tem certeza de que deseja desconectá-los %(count)s %(obj_type_plural)s?" + +#: templates/dcim/cable_edit.html:12 +msgid "A Side" +msgstr "Um lado" + +#: templates/dcim/cable_edit.html:29 +msgid "B Side" +msgstr "Lado B" + +#: templates/dcim/cable_trace.html:6 +#, python-format +msgid "Cable Trace for %(object_type)s %(object)s" +msgstr "Cable Trace para %(object_type)s %(object)s" + +#: templates/dcim/cable_trace.html:21 templates/dcim/inc/rack_elevation.html:7 +msgid "Download SVG" +msgstr "Baixar SVG" + +#: templates/dcim/cable_trace.html:27 +msgid "Asymmetric Path" +msgstr "Caminho assimétrico" + +#: templates/dcim/cable_trace.html:28 +msgid "The nodes below have no links and result in an asymmetric path" +msgstr "Os nós abaixo não têm links e resultam em um caminho assimétrico" + +#: templates/dcim/cable_trace.html:35 +msgid "Path split" +msgstr "Divisão de caminho" + +#: templates/dcim/cable_trace.html:36 +msgid "Select a node below to continue" +msgstr "Selecione um nó abaixo para continuar" + +#: templates/dcim/cable_trace.html:52 +msgid "Trace Completed" +msgstr "Rastreamento concluído" + +#: templates/dcim/cable_trace.html:55 +msgid "Total segments" +msgstr "Total de segmentos" + +#: templates/dcim/cable_trace.html:59 +msgid "Total length" +msgstr "Comprimento total" + +#: templates/dcim/cable_trace.html:74 +msgid "No paths found" +msgstr "Nenhum caminho encontrado" + +#: templates/dcim/cable_trace.html:83 +msgid "Related Paths" +msgstr "Caminhos relacionados" + +#: templates/dcim/cable_trace.html:89 +msgid "Origin" +msgstr "Origem" + +#: templates/dcim/cable_trace.html:90 +msgid "Destination" +msgstr "Destino" + +#: templates/dcim/cable_trace.html:91 +msgid "Segments" +msgstr "Segmentos" + +#: templates/dcim/cable_trace.html:104 +msgid "Incomplete" +msgstr "Incompleto" + +#: templates/dcim/component_list.html:14 +msgid "Rename Selected" +msgstr "Renomear selecionado" + +#: templates/dcim/consoleport.html:67 templates/dcim/consoleserverport.html:67 +#: templates/dcim/frontport.html:105 templates/dcim/interface.html:182 +#: templates/dcim/poweroutlet.html:73 templates/dcim/powerport.html:73 +msgid "Not Connected" +msgstr "Não conectado" + +#: templates/dcim/consoleport.html:75 templates/dcim/consoleserverport.html:18 +#: templates/dcim/frontport.html:116 templates/dcim/inventoryitem_edit.html:44 +msgid "Console Server Port" +msgstr "Porta do servidor do console" + +#: templates/dcim/device.html:35 +msgid "Highlight device" +msgstr "Dispositivo de destaque" + +#: templates/dcim/device.html:57 +msgid "Not racked" +msgstr "Não estackeado" + +#: templates/dcim/device.html:64 templates/dcim/site.html:96 +msgid "GPS Coordinates" +msgstr "Coordenadas GPS" + +#: templates/dcim/device.html:70 templates/dcim/site.html:102 +msgid "Map It" +msgstr "Mapeie-o" + +#: templates/dcim/device.html:110 templates/dcim/inventoryitem.html:57 +#: templates/dcim/module.html:79 templates/dcim/modulebay.html:73 +#: templates/dcim/rack.html:62 +msgid "Asset Tag" +msgstr "Etiqueta de ativo" + +#: templates/dcim/device.html:153 +msgid "View Virtual Chassis" +msgstr "Exibir chassi virtual" + +#: templates/dcim/device.html:170 +msgid "Create VDC" +msgstr "Criar VDC" + +#: templates/dcim/device.html:179 templates/dcim/device_edit.html:64 +#: virtualization/forms/model_forms.py:226 +msgid "Management" +msgstr "Gestão" + +#: templates/dcim/device.html:200 templates/dcim/device.html:216 +#: templates/virtualization/virtualmachine.html:56 +#: templates/virtualization/virtualmachine.html:72 +msgid "NAT for" +msgstr "NAT para" + +#: templates/dcim/device.html:202 templates/dcim/device.html:218 +#: templates/virtualization/virtualmachine.html:58 +#: templates/virtualization/virtualmachine.html:74 +msgid "NAT" +msgstr "NAT" + +#: templates/dcim/device.html:254 templates/dcim/rack.html:70 +msgid "Power Utilization" +msgstr "Utilização de energia" + +#: templates/dcim/device.html:259 +msgid "Input" +msgstr "Entrada" + +#: templates/dcim/device.html:260 +msgid "Outlets" +msgstr "Outlets" + +#: templates/dcim/device.html:261 +msgid "Allocated" +msgstr "Alocado" + +#: templates/dcim/device.html:270 templates/dcim/device.html:272 +#: templates/dcim/device.html:288 templates/dcim/powerfeed.html:70 +msgid "VA" +msgstr "VA" + +#: templates/dcim/device.html:282 +msgctxt "Leg of a power feed" +msgid "Leg" +msgstr "Perna" + +#: templates/dcim/device.html:312 +#: templates/virtualization/virtualmachine.html:165 +msgid "Add a service" +msgstr "Adicionar um serviço" + +#: templates/dcim/device.html:319 templates/dcim/rack.html:77 +#: templates/dcim/rack_edit.html:38 +msgid "Dimensions" +msgstr "Dimensões" + +#: templates/dcim/device/base.html:21 templates/dcim/device_list.html:9 +#: templates/dcim/devicetype/base.html:18 templates/dcim/module.html:18 +#: templates/dcim/moduletype/base.html:18 +#: templates/virtualization/virtualmachine/base.html:22 +#: templates/virtualization/virtualmachine_list.html:8 +msgid "Add Components" +msgstr "Adicionar componentes" + +#: templates/dcim/device/consoleports.html:24 +msgid "Add Console Ports" +msgstr "Adicionar portas de console" + +#: templates/dcim/device/consoleserverports.html:24 +msgid "Add Console Server Ports" +msgstr "Adicionar portas do servidor de console" + +#: templates/dcim/device/devicebays.html:10 +msgid "Add Device Bays" +msgstr "Adicionar compartimentos de dispositivos" + +#: templates/dcim/device/frontports.html:24 +msgid "Add Front Ports" +msgstr "Adicionar portas frontais" + +#: templates/dcim/device/inc/interface_table_controls.html:9 +msgid "Hide Enabled" +msgstr "Ocultar ativado" + +#: templates/dcim/device/inc/interface_table_controls.html:10 +msgid "Hide Disabled" +msgstr "Ocultar desativado" + +#: templates/dcim/device/inc/interface_table_controls.html:11 +msgid "Hide Virtual" +msgstr "Ocultar virtual" + +#: templates/dcim/device/inc/interface_table_controls.html:12 +msgid "Hide Disconnected" +msgstr "Ocultar Desconectado" + +#: templates/dcim/device/interfaces.html:28 +msgid "Add Interfaces" +msgstr "Adicionar interfaces" + +#: templates/dcim/device/inventory.html:10 +#: templates/dcim/inc/panels/inventory_items.html:46 +msgid "Add Inventory Item" +msgstr "Adicionar item de inventário" + +#: templates/dcim/device/modulebays.html:10 +msgid "Add Module Bays" +msgstr "Adicionar compartimentos de módulo" + +#: templates/dcim/device/poweroutlets.html:24 +msgid "Add Power Outlets" +msgstr "Adicionar tomadas elétricas" + +#: templates/dcim/device/powerports.html:24 +msgid "Add Power Port" +msgstr "Adicionar porta de alimentação" + +#: templates/dcim/device/rearports.html:24 +msgid "Add Rear Ports" +msgstr "Adicionar portas traseiras" + +#: templates/dcim/device/render_config.html:5 +#: templates/virtualization/virtualmachine/render_config.html:5 +msgid "Config" +msgstr "Configuração" + +#: templates/dcim/device/render_config.html:37 +#: templates/virtualization/virtualmachine/render_config.html:37 +msgid "Context Data" +msgstr "Dados de contexto" + +#: templates/dcim/device/render_config.html:57 +#: templates/virtualization/virtualmachine/render_config.html:57 +msgid "Download" +msgstr "Baixar" + +#: templates/dcim/device/render_config.html:60 +#: templates/virtualization/virtualmachine/render_config.html:60 +msgid "Rendered Config" +msgstr "Configuração renderizada" + +#: templates/dcim/device/render_config.html:65 +#: templates/virtualization/virtualmachine/render_config.html:65 +msgid "No configuration template found" +msgstr "Nenhum modelo de configuração encontrado" + +#: templates/dcim/device_edit.html:44 +msgid "Parent Bay" +msgstr "Baía dos Pais" + +#: templates/dcim/device_edit.html:48 +#: utilities/templates/form_helpers/render_field.html:20 +msgid "Regenerate Slug" +msgstr "Regenerar lesma" + +#: templates/dcim/device_edit.html:49 templates/generic/bulk_remove.html:7 +#: utilities/templates/helpers/table_config_form.html:23 +msgid "Remove" +msgstr "Remover" + +#: templates/dcim/device_edit.html:110 +msgid "Local Config Context Data" +msgstr "Dados de contexto de configuração local" + +#: templates/dcim/device_list.html:82 +#: templates/dcim/devicetype/component_templates.html:18 +#: templates/dcim/moduletype/component_templates.html:18 +#: templates/generic/bulk_rename.html:34 +#: templates/virtualization/virtualmachine/interfaces.html:11 +#: templates/virtualization/virtualmachine/virtual_disks.html:11 +msgid "Rename" +msgstr "Renomear" + +#: templates/dcim/devicebay.html:18 +msgid "Device Bay" +msgstr "Compartimento de dispositivos" + +#: templates/dcim/devicebay.html:48 +msgid "Installed Device" +msgstr "Dispositivo instalado" + +#: templates/dcim/devicebay_delete.html:6 +#, python-format +msgid "Delete device bay %(devicebay)s?" +msgstr "Excluir compartimento do dispositivo %(devicebay)s?" + +#: templates/dcim/devicebay_delete.html:11 +#, python-format +msgid "" +"Are you sure you want to delete this device bay from " +"%(device)s?" +msgstr "" +"Tem certeza de que deseja excluir este compartimento de dispositivo do " +"%(device)s?" + +#: templates/dcim/devicebay_depopulate.html:6 +#, python-format +msgid "Remove %(device)s from %(device_bay)s?" +msgstr "Remover %(device)s desde %(device_bay)s?" + +#: templates/dcim/devicebay_depopulate.html:13 +#, python-format +msgid "" +"Are you sure you want to remove %(device)s from " +"%(device_bay)s?" +msgstr "" +"Tem certeza de que deseja remover %(device)s desde " +"%(device_bay)s?" + +#: templates/dcim/devicebay_populate.html:13 +msgid "Populate" +msgstr "Preencher" + +#: templates/dcim/devicebay_populate.html:22 +msgid "Bay" +msgstr "Baía" + +#: templates/dcim/devicerole.html:14 templates/dcim/platform.html:17 +msgid "Add Device" +msgstr "Adicionar dispositivo" + +#: templates/dcim/devicerole.html:43 +msgid "VM Role" +msgstr "Função da VM" + +#: templates/dcim/devicetype.html:21 templates/dcim/moduletype.html:19 +msgid "Model Name" +msgstr "Nome do modelo" + +#: templates/dcim/devicetype.html:28 templates/dcim/moduletype.html:23 +msgid "Part Number" +msgstr "Número da peça" + +#: templates/dcim/devicetype.html:40 +msgid "Height (U" +msgstr "Altura (U)" + +#: templates/dcim/devicetype.html:44 +msgid "Exclude From Utilization" +msgstr "Excluir da utilização" + +#: templates/dcim/devicetype.html:62 +msgid "Parent/Child" +msgstr "Pai/filho" + +#: templates/dcim/devicetype.html:74 +msgid "Front Image" +msgstr "Imagem frontal" + +#: templates/dcim/devicetype.html:86 +msgid "Rear Image" +msgstr "Imagem traseira" + +#: templates/dcim/frontport.html:57 +msgid "Rear Port Position" +msgstr "Posição da porta traseira" + +#: templates/dcim/frontport.html:79 templates/dcim/interface.html:150 +#: templates/dcim/poweroutlet.html:67 templates/dcim/powerport.html:67 +#: templates/dcim/rearport.html:75 +msgid "Marked as Connected" +msgstr "Marcado como conectado" + +#: templates/dcim/frontport.html:93 templates/dcim/rearport.html:89 +msgid "Connection Status" +msgstr "Status da conexão" + +#: templates/dcim/inc/cable_termination.html:65 +msgid "No termination" +msgstr "Sem rescisão" + +#: templates/dcim/inc/cable_toggle_buttons.html:4 +msgid "Mark Planned" +msgstr "Marca planejada" + +#: templates/dcim/inc/cable_toggle_buttons.html:8 +msgid "Mark Installed" +msgstr "Marcar instalado" + +#: templates/dcim/inc/connection_endpoints.html:13 +msgid "Path Status" +msgstr "Status do caminho" + +#: templates/dcim/inc/connection_endpoints.html:18 +msgid "Not Reachable" +msgstr "Não acessível" + +#: templates/dcim/inc/connection_endpoints.html:23 +msgid "Path Endpoints" +msgstr "Pontos finais do caminho" + +#: templates/dcim/inc/endpoint_connection.html:8 +#: templates/dcim/powerfeed.html:128 templates/dcim/rearport.html:101 +msgid "Not connected" +msgstr "Não conectado" + +#: templates/dcim/inc/interface_vlans_table.html:6 +msgid "Untagged" +msgstr "Sem etiqueta" + +#: templates/dcim/inc/interface_vlans_table.html:37 +msgid "No VLANs Assigned" +msgstr "Nenhuma VLAN atribuída" + +#: templates/dcim/inc/interface_vlans_table.html:44 +#: templates/ipam/prefix_list.html:16 templates/ipam/prefix_list.html:33 +msgid "Clear" +msgstr "Claro" + +#: templates/dcim/inc/interface_vlans_table.html:47 +msgid "Clear All" +msgstr "Limpar tudo" + +#: templates/dcim/interface.html:17 +msgid "Add Child Interface" +msgstr "Adicionar interface infantil" + +#: templates/dcim/interface.html:51 +msgid "Speed/Duplex" +msgstr "Velocidade/Duplex" + +#: templates/dcim/interface.html:74 +msgid "PoE Mode" +msgstr "Modo PoE" + +#: templates/dcim/interface.html:78 +msgid "PoE Type" +msgstr "Tipo PoE" + +#: templates/dcim/interface.html:82 +#: templates/virtualization/vminterface.html:66 +msgid "802.1Q Mode" +msgstr "Modo 802.1Q" + +#: templates/dcim/interface.html:130 +#: templates/virtualization/vminterface.html:62 +msgid "MAC Address" +msgstr "Endereço MAC" + +#: templates/dcim/interface.html:157 +msgid "Wireless Link" +msgstr "Link sem fio" + +#: templates/dcim/interface.html:226 vpn/choices.py:55 +msgid "Peer" +msgstr "Par" + +#: templates/dcim/interface.html:238 +#: templates/wireless/inc/wirelesslink_interface.html:26 +msgid "Channel" +msgstr "Canal" + +#: templates/dcim/interface.html:247 +#: templates/wireless/inc/wirelesslink_interface.html:32 +msgid "Channel Frequency" +msgstr "Frequência do canal" + +#: templates/dcim/interface.html:250 templates/dcim/interface.html:258 +#: templates/dcim/interface.html:269 templates/dcim/interface.html:277 +msgid "MHz" +msgstr "MHz" + +#: templates/dcim/interface.html:266 +#: templates/wireless/inc/wirelesslink_interface.html:42 +msgid "Channel Width" +msgstr "Largura do canal" + +#: templates/dcim/interface.html:295 templates/wireless/wirelesslan.html:15 +#: templates/wireless/wirelesslink.html:24 wireless/forms/bulk_edit.py:59 +#: wireless/forms/bulk_edit.py:101 wireless/forms/filtersets.py:39 +#: wireless/forms/filtersets.py:79 wireless/models.py:81 +#: wireless/models.py:155 wireless/tables/wirelesslan.py:44 +msgid "SSID" +msgstr "DISSE" + +#: templates/dcim/interface.html:316 +msgid "LAG Members" +msgstr "Membros do LAG" + +#: templates/dcim/interface.html:335 +msgid "No member interfaces" +msgstr "Sem interfaces de membros" + +#: templates/dcim/interface.html:359 templates/ipam/fhrpgroup.html:80 +#: templates/ipam/iprange/ip_addresses.html:7 +#: templates/ipam/prefix/ip_addresses.html:7 +#: templates/virtualization/vminterface.html:96 +msgid "Add IP Address" +msgstr "Adicionar endereço IP" + +#: templates/dcim/inventoryitem.html:25 +msgid "Parent Item" +msgstr "Item principal" + +#: templates/dcim/inventoryitem.html:49 +msgid "Part ID" +msgstr "ID da peça" + +#: templates/dcim/inventoryitem_bulk_delete.html:5 +msgid "This will also delete all child inventory items of those listed" +msgstr "" +"Isso também excluirá todos os itens do inventário infantil dos listados." + +#: templates/dcim/inventoryitem_edit.html:33 +msgid "Component Assignment" +msgstr "Atribuição de componentes" + +#: templates/dcim/inventoryitem_edit.html:59 +#: templates/dcim/poweroutlet.html:18 templates/dcim/powerport.html:81 +msgid "Power Outlet" +msgstr "Tomada elétrica" + +#: templates/dcim/location.html:17 +msgid "Add Child Location" +msgstr "Adicionar localização da criança" + +#: templates/dcim/location.html:76 +msgid "Child Locations" +msgstr "Localizações para crianças" + +#: templates/dcim/location.html:84 templates/dcim/site.html:137 +msgid "Add a Location" +msgstr "Adicionar um local" + +#: templates/dcim/location.html:98 templates/dcim/site.html:151 +msgid "Add a Device" +msgstr "Adicionar um dispositivo" + +#: templates/dcim/manufacturer.html:16 +msgid "Add Device Type" +msgstr "Adicionar tipo de dispositivo" + +#: templates/dcim/manufacturer.html:21 +msgid "Add Module Type" +msgstr "Adicionar tipo de módulo" + +#: templates/dcim/powerfeed.html:56 +msgid "Connected Device" +msgstr "Dispositivo conectado" + +#: templates/dcim/powerfeed.html:66 +msgid "Utilization (Allocated" +msgstr "Utilização (alocada)" + +#: templates/dcim/powerfeed.html:85 +msgid "Electrical Characteristics" +msgstr "Características elétricas" + +#: templates/dcim/powerfeed.html:95 +msgctxt "Abbreviation for volts" +msgid "V" +msgstr "V" + +#: templates/dcim/powerfeed.html:99 +msgctxt "Abbreviation for amperes" +msgid "A" +msgstr "UMA" + +#: templates/dcim/poweroutlet.html:51 +msgid "Feed Leg" +msgstr "Perna de alimentação" + +#: templates/dcim/powerpanel.html:77 +msgid "Add Power Feeds" +msgstr "Adicionar feeds de energia" + +#: templates/dcim/powerport.html:47 +msgid "Maximum Draw" +msgstr "Sorteio máximo" + +#: templates/dcim/powerport.html:51 +msgid "Allocated Draw" +msgstr "Sorteio alocado" + +#: templates/dcim/rack.html:66 +msgid "Space Utilization" +msgstr "Utilização do espaço" + +#: templates/dcim/rack.html:96 +msgid "descending" +msgstr "descedentes" + +#: templates/dcim/rack.html:96 +msgid "ascending" +msgstr "ascendente" + +#: templates/dcim/rack.html:99 +msgid "Starting Unit" +msgstr "Unidade inicial" + +#: templates/dcim/rack.html:125 +msgid "Mounting Depth" +msgstr "Profundidade de montagem" + +#: templates/dcim/rack.html:135 +msgid "Rack Weight" +msgstr "Peso da cremalheira" + +#: templates/dcim/rack.html:145 templates/dcim/rack_edit.html:67 +msgid "Maximum Weight" +msgstr "Peso máximo" + +#: templates/dcim/rack.html:155 +msgid "Total Weight" +msgstr "Peso total" + +#: templates/dcim/rack.html:173 templates/dcim/rack_elevation_list.html:16 +msgid "Images and Labels" +msgstr "Imagens e rótulos" + +#: templates/dcim/rack.html:174 templates/dcim/rack_elevation_list.html:17 +msgid "Images only" +msgstr "Somente imagens" + +#: templates/dcim/rack.html:175 templates/dcim/rack_elevation_list.html:18 +msgid "Labels only" +msgstr "Somente rótulos" + +#: templates/dcim/rack/reservations.html:9 +msgid "Add reservation" +msgstr "Adicionar reserva" + +#: templates/dcim/rack_edit.html:21 +msgid "Inventory Control" +msgstr "Controle de inventário" + +#: templates/dcim/rack_edit.html:45 +msgid "Outer Dimensions" +msgstr "Dimensões externas" + +#: templates/dcim/rack_edit.html:56 templates/dcim/rack_edit.html:71 +msgid "Unit" +msgstr "Unidade" + +#: templates/dcim/rack_elevation_list.html:12 +msgid "View List" +msgstr "Exibir lista" + +#: templates/dcim/rack_elevation_list.html:27 +msgid "Sort By" +msgstr "Ordenar por" + +#: templates/dcim/rack_elevation_list.html:77 +msgid "No Racks Found" +msgstr "Nenhuma prateleira encontrada" + +#: templates/dcim/rack_list.html:8 +msgid "View Elevations" +msgstr "Exibir elevações" + +#: templates/dcim/rackreservation.html:47 +msgid "Reservation Details" +msgstr "Detalhes da reserva" + +#: templates/dcim/rackrole.html:10 +msgid "Add Rack" +msgstr "Adicionar rack" + +#: templates/dcim/rearport.html:53 +msgid "Positions" +msgstr "Posições" + +#: templates/dcim/region.html:17 templates/dcim/sitegroup.html:17 +msgid "Add Site" +msgstr "Adicionar site" + +#: templates/dcim/region.html:56 +msgid "Child Regions" +msgstr "Regiões infantis" + +#: templates/dcim/region.html:64 +msgid "Add Region" +msgstr "Adicionar região" + +#: templates/dcim/site.html:56 +msgid "Facility" +msgstr "Instalação" + +#: templates/dcim/site.html:64 +msgid "Time Zone" +msgstr "Fuso horário" + +#: templates/dcim/site.html:67 +msgid "UTC" +msgstr "UTC" + +#: templates/dcim/site.html:68 +msgid "Site time" +msgstr "Hora do site" + +#: templates/dcim/site.html:75 +msgid "Physical Address" +msgstr "Endereço físico" + +#: templates/dcim/site.html:81 +msgid "Map" +msgstr "Mapa" + +#: templates/dcim/site.html:92 +msgid "Shipping Address" +msgstr "Endereço de entrega" + +#: templates/dcim/sitegroup.html:56 templates/tenancy/contactgroup.html:49 +#: templates/tenancy/tenantgroup.html:58 +#: templates/wireless/wirelesslangroup.html:56 +msgid "Child Groups" +msgstr "Grupos infantis" + +#: templates/dcim/sitegroup.html:64 +msgid "Add Site Group" +msgstr "Adicionar grupo de sites" + +#: templates/dcim/trace/attachment.html:5 +#: templates/extras/exporttemplate.html:37 +msgid "Attachment" +msgstr "Anexo" + +#: templates/dcim/virtualchassis.html:86 +msgid "Add Member" +msgstr "Adicionar membro" + +#: templates/dcim/virtualchassis_add.html:18 +msgid "Member Devices" +msgstr "Dispositivos membros" + +#: templates/dcim/virtualchassis_add_member.html:6 +#, python-format +msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" +msgstr "Adicionar novo membro ao chassi virtual %(virtual_chassis)s" + +#: templates/dcim/virtualchassis_add_member.html:17 +msgid "Add New Member" +msgstr "Adicionar novo membro" + +#: templates/dcim/virtualchassis_add_member.html:25 +msgid "Add Another" +msgstr "Adicionar outro" + +#: templates/dcim/virtualchassis_edit.html:7 +#, python-format +msgid "Editing Virtual Chassis %(name)s" +msgstr "Editando chassi virtual %(name)s" + +#: templates/dcim/virtualchassis_edit.html:54 +msgid "Rack/Unit" +msgstr "Rack/unidade" + +#: templates/dcim/virtualchassis_remove_member.html:5 +msgid "Remove Virtual Chassis Member" +msgstr "Remover membro do chassi virtual" + +#: templates/dcim/virtualchassis_remove_member.html:9 +#, python-format +msgid "" +"Are you sure you want to remove %(device)s from virtual " +"chassis %(name)s?" +msgstr "" +"Tem certeza de que deseja remover %(device)s do chassi " +"virtual %(name)s?" + +#: templates/dcim/virtualdevicecontext.html:29 templates/vpn/l2vpn.html:19 +msgid "Identifier" +msgstr "Identificador" + +#: templates/exceptions/import_error.html:6 +msgid "" +"A module import error occurred during this request. Common causes include " +"the following:" +msgstr "" +"Ocorreu um erro de importação do módulo durante essa solicitação. As causas " +"comuns incluem o seguinte:" + +#: templates/exceptions/import_error.html:10 +msgid "Missing required packages" +msgstr "Pacotes necessários ausentes" + +#: templates/exceptions/import_error.html:11 +msgid "" +"This installation of NetBox might be missing one or more required Python " +"packages. These packages are listed in requirements.txt and " +"local_requirements.txt, and are normally installed as part of " +"the installation or upgrade process. To verify installed packages, run " +"pip freeze from the console and compare the output to the list " +"of required packages." +msgstr "" +"Essa instalação do NetBox pode não ter um ou mais pacotes Python " +"necessários. Esses pacotes estão listados em requirements.txt e" +" local_requirements.txt, e normalmente são instalados como " +"parte do processo de instalação ou atualização. Para verificar os pacotes " +"instalados, execute congelamento de sementes do console e " +"compare a saída com a lista de pacotes necessários." + +#: templates/exceptions/import_error.html:20 +msgid "WSGI service not restarted after upgrade" +msgstr "O serviço WSGI não foi reiniciado após a atualização" + +#: templates/exceptions/import_error.html:21 +msgid "" +"If this installation has recently been upgraded, check that the WSGI service" +" (e.g. gunicorn or uWSGI) has been restarted. This ensures that the new code" +" is running." +msgstr "" +"Se essa instalação foi atualizada recentemente, verifique se o serviço WSGI " +"(por exemplo, gunicorn ou uWSGI) foi reiniciado. Isso garante que o novo " +"código esteja em execução." + +#: templates/exceptions/permission_error.html:6 +msgid "" +"A file permission error was detected while processing this request. Common " +"causes include the following:" +msgstr "" +"Um erro de permissão de arquivo foi detectado ao processar essa solicitação." +" As causas comuns incluem o seguinte:" + +#: templates/exceptions/permission_error.html:10 +msgid "Insufficient write permission to the media root" +msgstr "Permissão de gravação insuficiente para a raiz da mídia" + +#: templates/exceptions/permission_error.html:11 +#, python-format +msgid "" +"The configured media root is %(media_root)s. Ensure that the " +"user NetBox runs as has access to write files to all locations within this " +"path." +msgstr "" +"A raiz de mídia configurada é %(media_root)s. Certifique-se de " +"que o usuário NetBox seja executado como se tivesse acesso para gravar " +"arquivos em todos os locais dentro desse caminho." + +#: templates/exceptions/programming_error.html:6 +msgid "" +"A database programming error was detected while processing this request. " +"Common causes include the following:" +msgstr "" +"Um erro de programação do banco de dados foi detectado ao processar essa " +"solicitação. As causas comuns incluem o seguinte:" + +#: templates/exceptions/programming_error.html:10 +msgid "Database migrations missing" +msgstr "Migrações de banco de dados ausentes" + +#: templates/exceptions/programming_error.html:11 +msgid "" +"When upgrading to a new NetBox release, the upgrade script must be run to " +"apply any new database migrations. You can run migrations manually by " +"executing python3 manage.py migrate from the command line." +msgstr "" +"Ao atualizar para uma nova versão do NetBox, o script de atualização deve " +"ser executado para aplicar qualquer nova migração de banco de dados. Você " +"pode executar migrações manualmente executando python3 manage.py " +"migrar da linha de comando." + +#: templates/exceptions/programming_error.html:18 +msgid "Unsupported PostgreSQL version" +msgstr "Versão não suportada do PostgreSQL" + +#: templates/exceptions/programming_error.html:19 +msgid "" +"Ensure that PostgreSQL version 12 or later is in use. You can check this by " +"connecting to the database using NetBox's credentials and issuing a query " +"for SELECT VERSION()." +msgstr "" +"Certifique-se de que o PostgreSQL versão 12 ou posterior esteja em uso. Você" +" pode verificar isso conectando-se ao banco de dados usando as credenciais " +"do NetBox e emitindo uma consulta para SELECIONE A VERSÃO ()." + +#: templates/extras/admin/plugins_list.html:4 +#: templates/extras/admin/plugins_list.html:9 +#: templates/extras/admin/plugins_list.html:13 +msgid "Installed Plugins" +msgstr "Plugins instalados" + +#: templates/extras/admin/plugins_list.html:23 +msgid "Package Name" +msgstr "Nome do pacote" + +#: templates/extras/admin/plugins_list.html:24 +msgid "Author" +msgstr "Autor" + +#: templates/extras/admin/plugins_list.html:25 +msgid "Author Email" +msgstr "E-mail do autor" + +#: templates/extras/admin/plugins_list.html:27 +#: templates/vpn/ipsecprofile.html:47 vpn/forms/bulk_edit.py:140 +#: vpn/forms/bulk_import.py:171 vpn/tables/crypto.py:61 +msgid "Version" +msgstr "Versão" + +#: templates/extras/configcontext.html:46 +#: templates/extras/configtemplate.html:38 +#: templates/extras/exporttemplate.html:57 +msgid "The data file associated with this object has been deleted" +msgstr "O arquivo de dados associado a esse objeto foi excluído" + +#: templates/extras/configcontext.html:55 +#: templates/extras/configtemplate.html:47 +#: templates/extras/exporttemplate.html:66 +msgid "Data Synced" +msgstr "Dados sincronizados" + +#: templates/extras/configcontext_list.html:7 +#: templates/extras/configtemplate_list.html:7 +#: templates/extras/exporttemplate_list.html:7 +msgid "Sync Data" +msgstr "Sincronizar dados" + +#: templates/extras/configtemplate.html:58 +msgid "Environment Parameters" +msgstr "Parâmetros do ambiente" + +#: templates/extras/configtemplate.html:69 +#: templates/extras/exporttemplate.html:88 +msgid "Template" +msgstr "Modelo" + +#: templates/extras/customfield.html:31 templates/extras/customlink.html:22 +msgid "Group Name" +msgstr "Nome do grupo" + +#: templates/extras/customfield.html:43 +msgid "Cloneable" +msgstr "Clonável" + +#: templates/extras/customfield.html:53 +msgid "Default Value" +msgstr "Valor padrão" + +#: templates/extras/customfield.html:64 +msgid "Search Weight" +msgstr "Peso da pesquisa" + +#: templates/extras/customfield.html:74 +msgid "Filter Logic" +msgstr "Lógica do filtro" + +#: templates/extras/customfield.html:78 +msgid "Display Weight" +msgstr "Peso da tela" + +#: templates/extras/customfield.html:82 +msgid "UI Visible" +msgstr "UI visível" + +#: templates/extras/customfield.html:86 +msgid "UI Editable" +msgstr "UI editável" + +#: templates/extras/customfield.html:108 +msgid "Validation Rules" +msgstr "Regras de validação" + +#: templates/extras/customfield.html:112 +msgid "Minimum Value" +msgstr "Valor mínimo" + +#: templates/extras/customfield.html:116 +msgid "Maximum Value" +msgstr "Valor máximo" + +#: templates/extras/customfield.html:120 +msgid "Regular Expression" +msgstr "Expressão regular" + +#: templates/extras/customlink.html:30 +msgid "Button Class" +msgstr "Classe de botão" + +#: templates/extras/customlink.html:41 templates/extras/exporttemplate.html:73 +#: templates/extras/savedfilter.html:41 +msgid "Assigned Models" +msgstr "Modelos atribuídos" + +#: templates/extras/customlink.html:57 +msgid "Link Text" +msgstr "Texto do link" + +#: templates/extras/customlink.html:65 +msgid "Link URL" +msgstr "URL do link" + +#: templates/extras/dashboard/reset.html:4 templates/home.html:63 +msgid "Reset Dashboard" +msgstr "Redefinir painel" + +#: templates/extras/dashboard/reset.html:8 +msgid "" +"This will remove all configured widgets and restore the " +"default dashboard configuration." +msgstr "" +"Isso removerá tudo configurou widgets e restaurou a " +"configuração padrão do painel." + +#: templates/extras/dashboard/reset.html:13 +msgid "" +"This change affects only your dashboard, and will not impact other " +"users." +msgstr "" +"Essa mudança afeta apenas seu painel de controle e não afetará outros" +" usuários." + +#: templates/extras/dashboard/widget_add.html:7 +msgid "Add a Widget" +msgstr "Adicionar um widget" + +#: templates/extras/dashboard/widgets/bookmarks.html:14 +msgid "No bookmarks have been added yet." +msgstr "Nenhum marcador foi adicionado ainda." + +#: templates/extras/dashboard/widgets/objectcounts.html:15 +msgid "No permission" +msgstr "Sem permissão" + +#: templates/extras/dashboard/widgets/objectlist.html:6 +msgid "No permission to view this content" +msgstr "Sem permissão para visualizar este conteúdo" + +#: templates/extras/dashboard/widgets/objectlist.html:10 +msgid "Unable to load content. Invalid view name" +msgstr "Não é possível carregar o conteúdo. Nome de exibição inválido" + +#: templates/extras/dashboard/widgets/rssfeed.html:12 +msgid "No content found" +msgstr "Nenhum conteúdo encontrado" + +#: templates/extras/dashboard/widgets/rssfeed.html:18 +msgid "There was a problem fetching the RSS feed" +msgstr "Houve um problema ao obter o feed RSS" + +#: templates/extras/dashboard/widgets/rssfeed.html:21 +msgid "HTTP" +msgstr "HTTP" + +#: templates/extras/eventrule.html:63 +msgid "Job start" +msgstr "Início do trabalho" + +#: templates/extras/eventrule.html:67 +msgid "Job end" +msgstr "Fim do trabalho" + +#: templates/extras/exporttemplate.html:29 +msgid "MIME Type" +msgstr "Tipo MIME" + +#: templates/extras/exporttemplate.html:33 +msgid "File Extension" +msgstr "Extensão de arquivo" + +#: templates/extras/htmx/report_result.html:9 +#: templates/extras/htmx/script_result.html:10 +msgid "Scheduled for" +msgstr "Programado para" + +#: templates/extras/htmx/report_result.html:14 +#: templates/extras/htmx/script_result.html:15 +msgid "Duration" +msgstr "Duração" + +#: templates/extras/htmx/report_result.html:20 +msgid "Report Methods" +msgstr "Métodos de relatório" + +#: templates/extras/htmx/report_result.html:38 +msgid "Report Results" +msgstr "Resultados do relatório" + +#: templates/extras/htmx/report_result.html:44 +#: templates/extras/htmx/script_result.html:26 +msgid "Level" +msgstr "Nível" + +#: templates/extras/htmx/report_result.html:46 +#: templates/extras/htmx/script_result.html:27 +msgid "Message" +msgstr "Mensagem" + +#: templates/extras/htmx/script_result.html:21 +msgid "Script Log" +msgstr "Registro de scripts" + +#: templates/extras/htmx/script_result.html:25 +msgid "Line" +msgstr "Linha" + +#: templates/extras/htmx/script_result.html:38 +msgid "No log output" +msgstr "Sem saída de log" + +#: templates/extras/htmx/script_result.html:46 +msgid "Exec Time" +msgstr "Hora de execução" + +#: templates/extras/htmx/script_result.html:46 +msgctxt "Unit of time" +msgid "seconds" +msgstr "segundos" + +#: templates/extras/htmx/script_result.html:50 +msgid "Output" +msgstr "Saída" + +#: templates/extras/inc/result_pending.html:4 +msgid "Loading" +msgstr "Carregando" + +#: templates/extras/inc/result_pending.html:6 +msgid "Results pending" +msgstr "Resultados pendentes" + +#: templates/extras/journalentry.html:16 +msgid "Journal Entry" +msgstr "Entrada de diário" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "Change log retention" +msgstr "Retenção de registros de alterações" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "days" +msgstr "dias" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "Indefinite" +msgstr "Indefinido" + +#: templates/extras/object_configcontext.html:11 +msgid "Rendered Context" +msgstr "Contexto renderizado" + +#: templates/extras/object_configcontext.html:22 +msgid "Local Context" +msgstr "Contexto local" + +#: templates/extras/object_configcontext.html:34 +msgid "The local config context overwrites all source contexts" +msgstr "" +"O contexto de configuração local substitui todos os contextos de origem" + +#: templates/extras/object_configcontext.html:40 +msgid "Source Contexts" +msgstr "Contextos de origem" + +#: templates/extras/object_journal.html:18 +msgid "New Journal Entry" +msgstr "Nova entrada no diário" + +#: templates/extras/objectchange.html:29 +#: templates/users/objectpermission.html:45 +msgid "Change" +msgstr "Mudança" + +#: templates/extras/objectchange.html:84 +msgid "Difference" +msgstr "Diferença" + +#: templates/extras/objectchange.html:87 +msgid "Previous" +msgstr "Anterior" + +#: templates/extras/objectchange.html:90 +msgid "Next" +msgstr "Próximo" + +#: templates/extras/objectchange.html:98 +msgid "Object Created" +msgstr "Objeto criado" + +#: templates/extras/objectchange.html:100 +msgid "Object Deleted" +msgstr "Objeto excluído" + +#: templates/extras/objectchange.html:102 +msgid "No Changes" +msgstr "Sem alterações" + +#: templates/extras/objectchange.html:117 +msgid "Pre-Change Data" +msgstr "Dados anteriores à alteração" + +#: templates/extras/objectchange.html:126 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Aviso: Comparando a mudança não atômica com o registro de alteração anterior" + +#: templates/extras/objectchange.html:136 +msgid "Post-Change Data" +msgstr "Dados pós-alteração" + +#: templates/extras/objectchange.html:157 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Ver tudo %(count)s Mudanças" + +#: templates/extras/report.html:14 +msgid "This report is invalid and cannot be run." +msgstr "Esse relatório é inválido e não pode ser executado." + +#: templates/extras/report.html:23 templates/extras/report_list.html:88 +msgid "Run Again" +msgstr "Corra novamente" + +#: templates/extras/report.html:25 templates/extras/report_list.html:90 +msgid "Run Report" +msgstr "Executar relatório" + +#: templates/extras/report.html:36 +msgid "Last run" +msgstr "Última corrida" + +#: templates/extras/report/base.html:30 +msgid "Report" +msgstr "Relatório" + +#: templates/extras/report_list.html:48 templates/extras/script_list.html:54 +msgid "Last Run" +msgstr "Última corrida" + +#: templates/extras/report_list.html:70 templates/extras/script_list.html:77 +msgid "Never" +msgstr "Nunca" + +#: templates/extras/report_list.html:75 +msgid "Report has no test methods" +msgstr "O relatório não tem métodos de teste" + +#: templates/extras/report_list.html:76 +msgid "Invalid" +msgstr "Inválido" + +#: templates/extras/report_list.html:125 +msgid "No Reports Found" +msgstr "Nenhum relatório encontrado" + +#: templates/extras/report_list.html:128 +#, python-format +msgid "" +"Get started by creating a report from " +"an uploaded file or data source." +msgstr "" +"Comece por criando um relatório de um " +"arquivo ou fonte de dados carregado." + +#: templates/extras/script.html:13 +msgid "You do not have permission to run scripts" +msgstr "Você não tem permissão para executar scripts" + +#: templates/extras/script.html:37 +msgid "Run Script" +msgstr "Executar script" + +#: templates/extras/script_list.html:44 +#, python-format +msgid "" +"Script file at %(file_path)s could not be " +"loaded." +msgstr "" +"Arquivo de script em %(file_path)s não pôde ser " +"carregado." + +#: templates/extras/script_list.html:91 +msgid "No Scripts Found" +msgstr "Nenhum script encontrado" + +#: templates/extras/script_list.html:94 +#, python-format +msgid "" +"Get started by creating a script from " +"an uploaded file or data source." +msgstr "" +"Comece por criando um script de um " +"arquivo ou fonte de dados carregado." + +#: templates/extras/script_result.html:42 +msgid "Log" +msgstr "Registro" + +#: templates/extras/tag.html:35 +msgid "Tagged Items" +msgstr "Itens marcados" + +#: templates/extras/tag.html:47 +msgid "Allowed Object Types" +msgstr "Tipos de objetos permitidos" + +#: templates/extras/tag.html:56 +msgid "Any" +msgstr "Qualquer" + +#: templates/extras/tag.html:63 +msgid "Tagged Item Types" +msgstr "Tipos de itens marcados" + +#: templates/extras/tag.html:89 +msgid "Tagged Objects" +msgstr "Objetos marcados" + +#: templates/extras/webhook.html:33 +msgid "HTTP Method" +msgstr "Método HTTP" + +#: templates/extras/webhook.html:41 +msgid "HTTP Content Type" +msgstr "Tipo de conteúdo HTTP" + +#: templates/extras/webhook.html:58 +msgid "SSL Verification" +msgstr "Verificação SSL" + +#: templates/extras/webhook.html:73 +msgid "Additional Headers" +msgstr "Cabeçalhos adicionais" + +#: templates/extras/webhook.html:85 +msgid "Body Template" +msgstr "Modelo de corpo" + +#: templates/generic/bulk_add_component.html:15 +msgid "Bulk Creation" +msgstr "Criação em massa" + +#: templates/generic/bulk_add_component.html:20 +#: templates/generic/bulk_edit.html:28 +msgid "Selected Objects" +msgstr "Objetos selecionados" + +#: templates/generic/bulk_add_component.html:46 +msgid "to Add" +msgstr "para adicionar" + +#: templates/generic/bulk_delete.html:24 +msgid "Confirm Bulk Deletion" +msgstr "Confirme a exclusão em massa" + +#: templates/generic/bulk_delete.html:26 +msgctxt "Noun" +msgid "Warning" +msgstr "Aviso" + +#: templates/generic/bulk_delete.html:27 +#, python-format +msgid "" +"The following operation will delete %(count)s " +"%(type_plural)s. Please carefully review the objects to be deleted and " +"confirm below." +msgstr "" +"A operação a seguir será excluída %(count)s " +"%(type_plural)s. Analise cuidadosamente os objetos a serem excluídos e " +"confirme abaixo." + +#: templates/generic/bulk_edit.html:16 templates/generic/object_edit.html:17 +msgid "Editing" +msgstr "Editando" + +#: templates/generic/bulk_edit.html:23 +msgid "Bulk Edit" +msgstr "Edição em massa" + +#: templates/generic/bulk_edit.html:124 templates/generic/bulk_rename.html:42 +msgid "Apply" +msgstr "Aplique" + +#: templates/generic/bulk_import.html:14 +msgid "Bulk Import" +msgstr "Importação em massa" + +#: templates/generic/bulk_import.html:20 +msgid "Direct Import" +msgstr "Importação direta" + +#: templates/generic/bulk_import.html:25 +msgid "Upload File" +msgstr "Carregar arquivo" + +#: templates/generic/bulk_import.html:51 templates/generic/bulk_import.html:73 +#: templates/generic/bulk_import.html:95 +msgid "Submit" +msgstr "Enviar" + +#: templates/generic/bulk_import.html:110 +msgid "Field Options" +msgstr "Opções de campo" + +#: templates/generic/bulk_import.html:117 +msgid "Accessor" +msgstr "Acessador" + +#: templates/generic/bulk_import.html:154 +msgid "Import Value" +msgstr "Valor de importação" + +#: templates/generic/bulk_import.html:181 +msgid "Format: YYYY-MM-DD" +msgstr "Formato: AAAA-MM-DD" + +#: templates/generic/bulk_import.html:183 +msgid "Specify true or false" +msgstr "Especifique verdadeiro ou falso" + +#: templates/generic/bulk_import.html:195 +msgid "Required fields must be specified for all objects." +msgstr "" +"Campos obrigatórios mosto ser especificado para todos os " +"objetos." + +#: templates/generic/bulk_import.html:201 +#, python-format +msgid "" +"Related objects may be referenced by any unique attribute. For example, " +"%(example)s would identify a VRF by its route distinguisher." +msgstr "" +"Objetos relacionados podem ser referenciados por qualquer atributo " +"exclusivo. Por exemplo, %(example)s identificaria um VRF por " +"seu distintor de rota." + +#: templates/generic/bulk_remove.html:13 +msgid "Confirm Bulk Removal" +msgstr "Confirme a remoção em massa" + +#: templates/generic/bulk_remove.html:15 +#, python-format +msgid "" +"Warning: The following operation will remove %(count)s " +"%(obj_type_plural)s from %(parent_obj)s." +msgstr "" +"Aviso: A operação a seguir removerá %(count)s " +"%(obj_type_plural)s desde %(parent_obj)s." + +#: templates/generic/bulk_remove.html:21 +#, python-format +msgid "" +"Please carefully review the %(obj_type_plural)s to be removed and confirm " +"below." +msgstr "" +"Por favor, revise cuidadosamente o %(obj_type_plural)s a ser removido e " +"confirme abaixo." + +#: templates/generic/bulk_remove.html:38 +#, python-format +msgid "Delete these %(count)s %(obj_type_plural)s" +msgstr "Exclua esses %(count)s %(obj_type_plural)s" + +#: templates/generic/bulk_rename.html:7 +msgid "Renaming" +msgstr "Renomeando" + +#: templates/generic/bulk_rename.html:16 +msgid "Current Name" +msgstr "Nome atual" + +#: templates/generic/bulk_rename.html:17 +msgid "New Name" +msgstr "Novo nome" + +#: templates/generic/bulk_rename.html:40 +#: utilities/templates/widgets/markdown_input.html:11 +msgid "Preview" +msgstr "prévia" + +#: templates/generic/confirmation_form.html:16 +msgid "Are you sure" +msgstr "Você tem certeza" + +#: templates/generic/confirmation_form.html:19 +msgid "Confirm" +msgstr "Confirme" + +#: templates/generic/object.html:51 +msgid "ago" +msgstr "atrás" + +#: templates/generic/object_children.html:27 +#: utilities/templates/buttons/bulk_edit.html:4 +msgid "Edit Selected" +msgstr "Editar selecionado" + +#: templates/generic/object_children.html:41 +#: utilities/templates/buttons/bulk_delete.html:4 +msgid "Delete Selected" +msgstr "Excluir selecionado" + +#: templates/generic/object_edit.html:19 +#, python-format +msgid "Add a new %(object_type)s" +msgstr "Adicionar um novo %(object_type)s" + +#: templates/generic/object_edit.html:47 +msgid "View model documentation" +msgstr "Veja a documentação do modelo" + +#: templates/generic/object_edit.html:48 +msgid "Help" +msgstr "Socorro" + +#: templates/generic/object_edit.html:73 +msgid "Create & Add Another" +msgstr "Criar e adicionar outro" + +#: templates/generic/object_list.html:48 templates/search.html:13 +msgid "Results" +msgstr "Resultados" + +#: templates/generic/object_list.html:54 +msgid "Filters" +msgstr "Filtros" + +#: templates/generic/object_list.html:94 +#, python-format +msgid "" +"Select all %(count)s %(object_type_plural)s matching query" +msgstr "" +"Selecionar tudo %(count)s %(object_type_plural)s consulta " +"correspondente" + +#: templates/home.html:12 +msgid "New Release Available" +msgstr "Nova versão disponível" + +#: templates/home.html:14 +msgid "is available" +msgstr "está disponível" + +#: templates/home.html:17 +msgctxt "Document title" +msgid "Upgrade Instructions" +msgstr "Instruções de atualização" + +#: templates/home.html:37 +msgid "Unlock Dashboard" +msgstr "Desbloquear painel" + +#: templates/home.html:46 +msgid "Lock Dashboard" +msgstr "Bloquear painel" + +#: templates/home.html:57 +msgid "Add Widget" +msgstr "Adicionar widget" + +#: templates/home.html:60 +msgid "Save Layout" +msgstr "Salvar layout" + +#: templates/htmx/delete_form.html:7 +msgid "Confirm Deletion" +msgstr "Confirmar exclusão" + +#: templates/htmx/delete_form.html:11 +#, python-format +msgid "" +"Are you sure you want to delete " +"%(object_type)s %(object)s?" +msgstr "" +"Tem certeza de que quer deletar " +"%(object_type)s %(object)s?" + +#: templates/htmx/delete_form.html:17 +msgid "The following objects will be deleted as a result of this action." +msgstr "Os objetos a seguir serão excluídos como resultado dessa ação." + +#: templates/htmx/object_selector.html:5 +msgid "Select" +msgstr "Selecionar" + +#: templates/inc/filter_list.html:50 +#: utilities/templates/helpers/table_config_form.html:39 +msgid "Reset" +msgstr "Redefinir" + +#: templates/inc/missing_prerequisites.html:7 +#, python-format +msgid "" +"Before you can add a %(model)s you must first create a " +"%(prerequisite_model)s." +msgstr "" +"Antes que você possa adicionar um %(model)s você deve primeiro criar um " +"%(prerequisite_model)s." + +#: templates/inc/paginator.html:38 templates/inc/paginator_htmx.html:53 +msgid "Per Page" +msgstr "Por página" + +#: templates/inc/paginator.html:49 templates/inc/paginator_htmx.html:69 +#, python-format +msgid "Showing %(start)s-%(end)s of %(total)s" +msgstr "Mostrando %(start)s-%(end)s do %(total)s" + +#: templates/inc/panels/image_attachments.html:10 +msgid "Attach an image" +msgstr "Anexar uma imagem" + +#: templates/inc/panels/related_objects.html:5 +msgid "Related Objects" +msgstr "Objetos relacionados" + +#: templates/inc/panels/tags.html:11 +msgid "No tags assigned" +msgstr "Nenhuma tag atribuída" + +#: templates/inc/profile_button.html:12 templates/inc/profile_button.html:62 +msgid "Dark Mode" +msgstr "Modo escuro" + +#: templates/inc/profile_button.html:45 +msgid "Log Out" +msgstr "Sair" + +#: templates/inc/profile_button.html:53 +msgid "Log In" +msgstr "Faça login" + +#: templates/inc/sync_warning.html:7 +msgid "Data is out of sync with upstream file" +msgstr "Os dados estão fora de sincronia com o arquivo upstream" + +#: templates/inc/table_controls_htmx.html:16 +#: templates/inc/table_controls_htmx.html:18 +msgid "Configure Table" +msgstr "Configurar tabela" + +#: templates/ipam/aggregate.html:15 templates/ipam/ipaddress.html:17 +#: templates/ipam/iprange.html:16 templates/ipam/prefix.html:16 +msgid "Family" +msgstr "Família" + +#: templates/ipam/aggregate.html:40 +msgid "Date Added" +msgstr "Data adicionada" + +#: templates/ipam/aggregate/prefixes.html:8 +#: templates/ipam/prefix/prefixes.html:8 templates/ipam/role.html:10 +msgid "Add Prefix" +msgstr "Adicionar prefixo" + +#: templates/ipam/asn.html:24 +msgid "AS Number" +msgstr "Número AS" + +#: templates/ipam/fhrpgroup.html:55 +msgid "Authentication Type" +msgstr "Tipo de autenticação" + +#: templates/ipam/fhrpgroup.html:59 +msgid "Authentication Key" +msgstr "Chave de autenticação" + +#: templates/ipam/fhrpgroup.html:72 +msgid "Virtual IP Addresses" +msgstr "Endereços IP virtuais" + +#: templates/ipam/fhrpgroupassignment_edit.html:8 +msgid "FHRP Group Assignment" +msgstr "Atribuição de grupo do FHRP" + +#: templates/ipam/inc/ipaddress_edit_header.html:19 +msgid "Assign IP" +msgstr "Atribuir IP" + +#: templates/ipam/inc/ipaddress_edit_header.html:28 +msgid "Bulk Create" +msgstr "Criação em massa" + +#: templates/ipam/inc/panels/fhrp_groups.html:12 +msgid "Virtual IPs" +msgstr "IPs virtuais" + +#: templates/ipam/inc/panels/fhrp_groups.html:52 +msgid "Create Group" +msgstr "Criar grupo" + +#: templates/ipam/inc/panels/fhrp_groups.html:57 +msgid "Assign Group" +msgstr "Atribuir grupo" + +#: templates/ipam/inc/toggle_available.html:7 +msgid "Show Assigned" +msgstr "Mostrar atribuído" + +#: templates/ipam/inc/toggle_available.html:10 +msgid "Show Available" +msgstr "Mostrar disponível" + +#: templates/ipam/inc/toggle_available.html:13 +msgid "Show All" +msgstr "Mostrar tudo" + +#: templates/ipam/ipaddress.html:26 templates/ipam/iprange.html:48 +#: templates/ipam/prefix.html:25 +msgid "Global" +msgstr "Global" + +#: templates/ipam/ipaddress.html:88 +msgid "NAT (outside)" +msgstr "NAT (externo)" + +#: templates/ipam/ipaddress_assign.html:8 +msgid "Assign an IP Address" +msgstr "Atribuir um endereço IP" + +#: templates/ipam/ipaddress_assign.html:23 +msgid "Select IP Address" +msgstr "Selecione o endereço IP" + +#: templates/ipam/ipaddress_assign.html:39 +msgid "Search Results" +msgstr "Resultados da pesquisa" + +#: templates/ipam/ipaddress_bulk_add.html:6 +msgid "Bulk Add IP Addresses" +msgstr "Adicionar endereços IP em massa" + +#: templates/ipam/ipaddress_edit.html:35 +msgid "Interface Assignment" +msgstr "Atribuição de interface" + +#: templates/ipam/ipaddress_edit.html:74 +msgid "NAT IP (Inside" +msgstr "NAT IP (interno)" + +#: templates/ipam/iprange.html:20 +msgid "Starting Address" +msgstr "Endereço inicial" + +#: templates/ipam/iprange.html:24 +msgid "Ending Address" +msgstr "Endereço final" + +#: templates/ipam/iprange.html:36 templates/ipam/prefix.html:104 +msgid "Marked fully utilized" +msgstr "Marcado como totalmente utilizado" + +#: templates/ipam/prefix.html:112 +msgid "Child IPs" +msgstr "IPs de crianças" + +#: templates/ipam/prefix.html:120 +msgid "Available IPs" +msgstr "IPs disponíveis" + +#: templates/ipam/prefix.html:132 +msgid "First available IP" +msgstr "Primeiro IP disponível" + +#: templates/ipam/prefix.html:151 +msgid "Addressing Details" +msgstr "Detalhes de endereçamento" + +#: templates/ipam/prefix.html:181 +msgid "Prefix Details" +msgstr "Detalhes do prefixo" + +#: templates/ipam/prefix.html:187 +msgid "Network Address" +msgstr "Endereço de rede" + +#: templates/ipam/prefix.html:191 +msgid "Network Mask" +msgstr "Máscara de rede" + +#: templates/ipam/prefix.html:195 +msgid "Wildcard Mask" +msgstr "Máscara Wildcard" + +#: templates/ipam/prefix.html:199 +msgid "Broadcast Address" +msgstr "Endereço de transmissão" + +#: templates/ipam/prefix/ip_ranges.html:7 +msgid "Add IP Range" +msgstr "Adicionar intervalo de IP" + +#: templates/ipam/prefix_list.html:7 +msgid "Hide Depth Indicators" +msgstr "Ocultar indicadores de profundidade" + +#: templates/ipam/prefix_list.html:11 +msgid "Max Depth" +msgstr "Profundidade máxima" + +#: templates/ipam/prefix_list.html:28 +msgid "Max Length" +msgstr "Comprimento máximo" + +#: templates/ipam/rir.html:10 +msgid "Add Aggregate" +msgstr "Adicionar agregado" + +#: templates/ipam/routetarget.html:10 +msgid "Route Target" +msgstr "Alvo da rota" + +#: templates/ipam/routetarget.html:40 +msgid "Importing VRFs" +msgstr "Importando VRFs" + +#: templates/ipam/routetarget.html:49 +msgid "Exporting VRFs" +msgstr "Exportando VRFs" + +#: templates/ipam/routetarget.html:60 +msgid "Importing L2VPNs" +msgstr "Importando L2VPNs" + +#: templates/ipam/routetarget.html:69 +msgid "Exporting L2VPNs" +msgstr "Exportando L2VPNs" + +#: templates/ipam/service.html:22 templates/ipam/service_create.html:8 +#: templates/ipam/service_edit.html:8 +msgid "Service" +msgstr "Serviço" + +#: templates/ipam/service_create.html:43 +msgid "From Template" +msgstr "Do modelo" + +#: templates/ipam/service_create.html:48 +msgid "Custom" +msgstr "Personalizado" + +#: templates/ipam/service_edit.html:37 +msgid "Port(s)" +msgstr "Porta (s)" + +#: templates/ipam/vlan.html:95 +msgid "Add a Prefix" +msgstr "Adicionar um prefixo" + +#: templates/ipam/vlangroup.html:18 +msgid "Add VLAN" +msgstr "Adicionar VLAN" + +#: templates/ipam/vlangroup.html:43 +msgid "Permitted VIDs" +msgstr "VIDs permitidos" + +#: templates/ipam/vrf.html:19 +msgid "Route Distinguisher" +msgstr "Distintor de rotas" + +#: templates/ipam/vrf.html:32 +msgid "Unique IP Space" +msgstr "Espaço IP exclusivo" + +#: templates/login.html:20 +#: utilities/templates/form_helpers/render_errors.html:7 +msgid "Errors" +msgstr "Erros" + +#: templates/login.html:48 +msgid "Sign In" +msgstr "Entrar" + +#: templates/login.html:54 +msgid "Or use a single sign-on (SSO) provider" +msgstr "Ou use um provedor de login único (SSO)" + +#: templates/login.html:68 +msgid "Toggle Color Mode" +msgstr "Alternar modo de cor" + +#: templates/media_failure.html:7 +msgid "Static Media Failure - NetBox" +msgstr "Falha de mídia estática - NetBox" + +#: templates/media_failure.html:21 +msgid "Static Media Failure" +msgstr "Falha de mídia estática" + +#: templates/media_failure.html:23 +msgid "The following static media file failed to load" +msgstr "O seguinte arquivo de mídia estática falhou ao carregar" + +#: templates/media_failure.html:26 +msgid "Check the following" +msgstr "Verifique o seguinte" + +#: templates/media_failure.html:29 +msgid "" +"manage.py collectstatic was run during the most recent upgrade." +" This installs the most recent iteration of each static file into the static" +" root path." +msgstr "" +"manage.py coleta estática foi executado durante a atualização " +"mais recente. Isso instala a iteração mais recente de cada arquivo estático " +"no caminho raiz estático." + +#: templates/media_failure.html:35 +#, python-format +msgid "" +"The HTTP service (e.g. nginx or Apache) is configured to serve files from " +"the STATIC_ROOT path. Refer to the " +"installation documentation for further guidance." +msgstr "" +"O serviço HTTP (por exemplo, nginx ou Apache) está configurado para servir " +"arquivos do RAIZ_ESTÁTICA caminho. Consulte a documentação de instalação para obter mais " +"orientações." + +#: templates/media_failure.html:47 +#, python-format +msgid "" +"The file %(filename)s exists in the static root directory and " +"is readable by the HTTP server." +msgstr "" +"O arquivo %(filename)s existe no diretório raiz estático e pode" +" ser lido pelo servidor HTTP." + +#: templates/media_failure.html:55 +#, python-format +msgid "Click here to attempt loading NetBox again." +msgstr "" +"Clique aqui para tentar carregar o NetBox " +"novamente." + +#: templates/tenancy/contact.html:18 tenancy/filtersets.py:135 +#: tenancy/forms/bulk_edit.py:136 tenancy/forms/filtersets.py:101 +#: tenancy/forms/forms.py:56 tenancy/forms/model_forms.py:109 +#: tenancy/forms/model_forms.py:132 tenancy/tables/contacts.py:98 +msgid "Contact" +msgstr "Contato" + +#: templates/tenancy/contact.html:30 tenancy/forms/bulk_edit.py:98 +msgid "Title" +msgstr "Título" + +#: templates/tenancy/contact.html:34 tenancy/forms/bulk_edit.py:103 +#: tenancy/tables/contacts.py:64 +msgid "Phone" +msgstr "Telefone" + +#: templates/tenancy/contact.html:86 tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Atribuições" + +#: templates/tenancy/contactassignment_edit.html:12 +msgid "Contact Assignment" +msgstr "Atribuição de contato" + +#: templates/tenancy/contactgroup.html:19 tenancy/forms/forms.py:66 +#: tenancy/forms/model_forms.py:76 +msgid "Contact Group" +msgstr "Grupo de contato" + +#: templates/tenancy/contactgroup.html:57 +msgid "Add Contact Group" +msgstr "Adicionar grupo de contato" + +#: templates/tenancy/contactrole.html:15 tenancy/filtersets.py:140 +#: tenancy/forms/forms.py:61 tenancy/forms/model_forms.py:90 +msgid "Contact Role" +msgstr "Função de contato" + +#: templates/tenancy/object_contacts.html:9 +msgid "Add a contact" +msgstr "Adicionar um contato" + +#: templates/tenancy/tenantgroup.html:17 +msgid "Add Tenant" +msgstr "Adicionar inquilino" + +#: templates/tenancy/tenantgroup.html:27 tenancy/forms/model_forms.py:31 +#: tenancy/tables/columns.py:51 tenancy/tables/columns.py:61 +msgid "Tenant Group" +msgstr "Grupo de inquilinos" + +#: templates/tenancy/tenantgroup.html:66 +msgid "Add Tenant Group" +msgstr "Adicionar grupo de inquilinos" + +#: templates/users/group.html:37 templates/users/user.html:61 +msgid "Assigned Permissions" +msgstr "Permissões atribuídas" + +#: templates/users/objectpermission.html:6 +#: templates/users/objectpermission.html:14 users/forms/filtersets.py:67 +msgid "Permission" +msgstr "Permissão" + +#: templates/users/objectpermission.html:33 users/forms/filtersets.py:68 +#: users/forms/model_forms.py:321 +msgid "Actions" +msgstr "Ações" + +#: templates/users/objectpermission.html:37 +msgid "View" +msgstr "Visualizar" + +#: templates/users/objectpermission.html:56 users/forms/model_forms.py:324 +msgid "Constraints" +msgstr "Restrições" + +#: templates/users/objectpermission.html:76 +msgid "Assigned Users" +msgstr "Usuários atribuídos" + +#: templates/users/user.html:38 +msgid "Staff" +msgstr "Pessoal" + +#: templates/virtualization/cluster.html:56 +msgid "Allocated Resources" +msgstr "Recursos alocados" + +#: templates/virtualization/cluster.html:60 +#: templates/virtualization/virtualmachine.html:128 +msgid "Virtual CPUs" +msgstr "CPUs virtuais" + +#: templates/virtualization/cluster.html:64 +#: templates/virtualization/virtualmachine.html:132 +msgid "Memory" +msgstr "Memória" + +#: templates/virtualization/cluster.html:74 +#: templates/virtualization/virtualmachine.html:143 +msgid "Disk Space" +msgstr "Espaço em disco" + +#: templates/virtualization/cluster.html:77 +#: templates/virtualization/virtualdisk.html:33 +#: templates/virtualization/virtualmachine.html:147 +msgctxt "Abbreviation for gigabyte" +msgid "GB" +msgstr "GB" + +#: templates/virtualization/cluster/base.html:18 +msgid "Add Virtual Machine" +msgstr "Adicionar máquina virtual" + +#: templates/virtualization/cluster/base.html:24 +msgid "Assign Device" +msgstr "Atribuir dispositivo" + +#: templates/virtualization/cluster/devices.html:10 +msgid "Remove Selected" +msgstr "Remover selecionado" + +#: templates/virtualization/cluster_add_devices.html:9 +#, python-format +msgid "Add Device to Cluster %(cluster)s" +msgstr "Adicionar dispositivo ao cluster %(cluster)s" + +#: templates/virtualization/cluster_add_devices.html:23 +msgid "Device Selection" +msgstr "Seleção de dispositivos" + +#: templates/virtualization/cluster_add_devices.html:31 +msgid "Add Devices" +msgstr "Adicionar dispositivos" + +#: templates/virtualization/clustergroup.html:10 +#: templates/virtualization/clustertype.html:10 +msgid "Add Cluster" +msgstr "Adicionar cluster" + +#: templates/virtualization/clustergroup.html:20 +#: virtualization/forms/model_forms.py:51 +msgid "Cluster Group" +msgstr "Grupo de clusters" + +#: templates/virtualization/clustertype.html:20 +#: templates/virtualization/virtualmachine.html:111 +#: virtualization/forms/model_forms.py:35 +msgid "Cluster Type" +msgstr "Tipo de cluster" + +#: templates/virtualization/virtualdisk.html:18 +msgid "Virtual Disk" +msgstr "Disco virtual" + +#: templates/virtualization/virtualmachine.html:124 +#: virtualization/forms/bulk_edit.py:189 +#: virtualization/forms/model_forms.py:227 +msgid "Resources" +msgstr "Recursos" + +#: templates/virtualization/virtualmachine.html:185 +msgid "Add Virtual Disk" +msgstr "Adicionar disco virtual" + +#: templates/vpn/ikepolicy.html:10 templates/vpn/ipsecprofile.html:35 +#: vpn/tables/crypto.py:166 +msgid "IKE Policy" +msgstr "Política da IKE" + +#: templates/vpn/ikepolicy.html:22 +msgid "IKE Version" +msgstr "Versão IKE" + +#: templates/vpn/ikepolicy.html:30 +msgid "Pre-Shared Key" +msgstr "Chave pré-compartilhada" + +#: templates/vpn/ikepolicy.html:34 +#: templates/wireless/inc/authentication_attrs.html:21 +msgid "Show Secret" +msgstr "Mostrar segredo" + +#: templates/vpn/ikepolicy.html:59 templates/vpn/ipsecpolicy.html:47 +#: templates/vpn/ipsecprofile.html:55 templates/vpn/ipsecprofile.html:82 +#: vpn/forms/model_forms.py:310 vpn/forms/model_forms.py:345 +#: vpn/tables/crypto.py:68 vpn/tables/crypto.py:134 +msgid "Proposals" +msgstr "Propostas" + +#: templates/vpn/ikeproposal.html:10 +msgid "IKE Proposal" +msgstr "Proposta IKE" + +#: templates/vpn/ikeproposal.html:22 vpn/forms/bulk_edit.py:96 +#: vpn/forms/bulk_import.py:145 vpn/forms/filtersets.py:98 +msgid "Authentication method" +msgstr "Método de autenticação" + +#: templates/vpn/ikeproposal.html:26 templates/vpn/ipsecproposal.html:22 +#: vpn/forms/bulk_edit.py:101 vpn/forms/bulk_edit.py:173 +#: vpn/forms/bulk_import.py:149 vpn/forms/bulk_import.py:193 +#: vpn/forms/filtersets.py:103 vpn/forms/filtersets.py:151 +msgid "Encryption algorithm" +msgstr "algoritmo de criptografia" + +#: templates/vpn/ikeproposal.html:30 templates/vpn/ipsecproposal.html:26 +#: vpn/forms/bulk_edit.py:106 vpn/forms/bulk_edit.py:178 +#: vpn/forms/bulk_import.py:153 vpn/forms/bulk_import.py:197 +#: vpn/forms/filtersets.py:108 vpn/forms/filtersets.py:156 +msgid "Authentication algorithm" +msgstr "algoritmo de autenticação" + +#: templates/vpn/ikeproposal.html:34 +msgid "DH group" +msgstr "Grupo DH" + +#: templates/vpn/ikeproposal.html:38 templates/vpn/ipsecproposal.html:30 +#: vpn/forms/bulk_edit.py:183 vpn/models/crypto.py:134 +msgid "SA lifetime (seconds)" +msgstr "Vida útil da SA (segundos)" + +#: templates/vpn/ipsecpolicy.html:10 templates/vpn/ipsecprofile.html:70 +#: vpn/tables/crypto.py:170 +msgid "IPSec Policy" +msgstr "Política IPsec" + +#: templates/vpn/ipsecpolicy.html:22 vpn/forms/bulk_edit.py:211 +#: vpn/models/crypto.py:181 +msgid "PFS group" +msgstr "Grupo PFS" + +#: templates/vpn/ipsecprofile.html:10 vpn/forms/model_forms.py:53 +msgid "IPSec Profile" +msgstr "Perfil IPsec" + +#: templates/vpn/ipsecprofile.html:94 vpn/tables/crypto.py:137 +msgid "PFS Group" +msgstr "Grupo PFS" + +#: templates/vpn/ipsecproposal.html:10 +msgid "IPSec Proposal" +msgstr "Proposta IPsec" + +#: templates/vpn/ipsecproposal.html:34 vpn/forms/bulk_edit.py:187 +#: vpn/models/crypto.py:140 +msgid "SA lifetime (KB)" +msgstr "Vida útil da SA (KB)" + +#: templates/vpn/l2vpn.html:11 templates/vpn/l2vpntermination.html:10 +msgid "L2VPN Attributes" +msgstr "Atributos L2VPN" + +#: templates/vpn/l2vpn.html:65 templates/vpn/tunnel.html:81 +msgid "Add a Termination" +msgstr "Adicionar uma rescisão" + +#: templates/vpn/l2vpntermination_edit.html:9 +msgid "L2VPN Termination" +msgstr "Terminação L2VPN" + +#: templates/vpn/tunnel.html:9 +msgid "Add Termination" +msgstr "Adicionar rescisão" + +#: templates/vpn/tunnel.html:38 vpn/forms/bulk_edit.py:48 +#: vpn/forms/bulk_import.py:48 vpn/forms/filtersets.py:56 +msgid "Encapsulation" +msgstr "Encapsulamento" + +#: templates/vpn/tunnel.html:42 vpn/forms/bulk_edit.py:54 +#: vpn/forms/bulk_import.py:53 vpn/forms/filtersets.py:63 +#: vpn/models/crypto.py:238 vpn/tables/tunnels.py:47 +msgid "IPSec profile" +msgstr "Perfil IPsec" + +#: templates/vpn/tunnel.html:46 vpn/forms/bulk_edit.py:68 +#: vpn/forms/filtersets.py:67 +msgid "Tunnel ID" +msgstr "ID do túnel" + +#: templates/vpn/tunnelgroup.html:14 +msgid "Add Tunnel" +msgstr "Adicionar túnel" + +#: templates/vpn/tunnelgroup.html:24 vpn/forms/model_forms.py:35 +#: vpn/forms/model_forms.py:48 +msgid "Tunnel Group" +msgstr "Grupo de túneis" + +#: templates/vpn/tunneltermination.html:10 +msgid "Tunnel Termination" +msgstr "Terminação do túnel" + +#: templates/vpn/tunneltermination.html:36 vpn/forms/bulk_import.py:107 +#: vpn/forms/model_forms.py:101 vpn/forms/model_forms.py:137 +#: vpn/forms/model_forms.py:248 vpn/tables/tunnels.py:97 +msgid "Outside IP" +msgstr "IP externo" + +#: templates/vpn/tunneltermination.html:53 +msgid "Peer Terminations" +msgstr "Rescisões de pares" + +#: templates/wireless/inc/authentication_attrs.html:13 +msgid "Cipher" +msgstr "Cifra" + +#: templates/wireless/inc/authentication_attrs.html:17 +msgid "PSK" +msgstr "PSK" + +#: templates/wireless/inc/wirelesslink_interface.html:35 +#: templates/wireless/inc/wirelesslink_interface.html:45 +msgctxt "Abbreviation for megahertz" +msgid "MHz" +msgstr "MHz" + +#: templates/wireless/wirelesslan.html:11 wireless/forms/model_forms.py:54 +msgid "Wireless LAN" +msgstr "LAN sem fio" + +#: templates/wireless/wirelesslan.html:59 +msgid "Attached Interfaces" +msgstr "Interfaces anexadas" + +#: templates/wireless/wirelesslangroup.html:17 +msgid "Add Wireless LAN" +msgstr "Adicionar LAN sem fio" + +#: templates/wireless/wirelesslangroup.html:26 +#: wireless/forms/model_forms.py:27 +msgid "Wireless LAN Group" +msgstr "Grupo de LAN sem fio" + +#: templates/wireless/wirelesslangroup.html:64 +msgid "Add Wireless LAN Group" +msgstr "Adicionar grupo de LAN sem fio" + +#: templates/wireless/wirelesslink.html:16 +msgid "Link Properties" +msgstr "Propriedades do link" + +#: tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Terciário" + +#: tenancy/choices.py:20 +msgid "Inactive" +msgstr "Inativo" + +#: tenancy/filtersets.py:29 tenancy/filtersets.py:55 tenancy/filtersets.py:97 +msgid "Contact group (ID)" +msgstr "Grupo de contato (ID)" + +#: tenancy/filtersets.py:35 tenancy/filtersets.py:62 tenancy/filtersets.py:104 +msgid "Contact group (slug)" +msgstr "Grupo de contato (slug)" + +#: tenancy/filtersets.py:91 +msgid "Contact (ID)" +msgstr "Contato (ID)" + +#: tenancy/filtersets.py:108 +msgid "Contact role (ID)" +msgstr "Função de contato (ID)" + +#: tenancy/filtersets.py:114 +msgid "Contact role (slug)" +msgstr "Função de contato (lesma)" + +#: tenancy/filtersets.py:146 +msgid "Contact group" +msgstr "Grupo de contato" + +#: tenancy/filtersets.py:157 tenancy/filtersets.py:176 +msgid "Tenant group (ID)" +msgstr "Grupo de inquilinos (ID)" + +#: tenancy/filtersets.py:209 +msgid "Tenant Group (ID)" +msgstr "Grupo de inquilinos (ID)" + +#: tenancy/filtersets.py:216 +msgid "Tenant Group (slug)" +msgstr "Grupo de inquilinos (lesma)" + +#: tenancy/forms/bulk_edit.py:65 +msgid "Desciption" +msgstr "Descrição" + +#: tenancy/forms/bulk_import.py:101 +msgid "Assigned contact" +msgstr "Contato atribuído" + +#: tenancy/models/contacts.py:32 +msgid "contact group" +msgstr "grupo de contato" + +#: tenancy/models/contacts.py:33 +msgid "contact groups" +msgstr "grupos de contato" + +#: tenancy/models/contacts.py:48 +msgid "contact role" +msgstr "função de contato" + +#: tenancy/models/contacts.py:49 +msgid "contact roles" +msgstr "funções de contato" + +#: tenancy/models/contacts.py:68 +msgid "title" +msgstr "título" + +#: tenancy/models/contacts.py:73 +msgid "phone" +msgstr "telefone" + +#: tenancy/models/contacts.py:78 +msgid "email" +msgstr "e-mail" + +#: tenancy/models/contacts.py:87 +msgid "link" +msgstr "vincular" + +#: tenancy/models/contacts.py:103 +msgid "contact" +msgstr "contato" + +#: tenancy/models/contacts.py:104 +msgid "contacts" +msgstr "contatos" + +#: tenancy/models/contacts.py:153 +msgid "contact assignment" +msgstr "atribuição de contato" + +#: tenancy/models/contacts.py:154 +msgid "contact assignments" +msgstr "atribuições de contato" + +#: tenancy/models/contacts.py:170 +#, python-brace-format +msgid "Contacts cannot be assigned to this object type ({type})." +msgstr "Os contatos não podem ser atribuídos a esse tipo de objeto ({type})." + +#: tenancy/models/tenants.py:32 +msgid "tenant group" +msgstr "grupo de inquilinos" + +#: tenancy/models/tenants.py:33 +msgid "tenant groups" +msgstr "grupos de inquilinos" + +#: tenancy/models/tenants.py:70 +msgid "Tenant name must be unique per group." +msgstr "O nome do inquilino deve ser exclusivo por grupo." + +#: tenancy/models/tenants.py:80 +msgid "Tenant slug must be unique per group." +msgstr "A lesma do inquilino deve ser exclusiva por grupo." + +#: tenancy/models/tenants.py:88 +msgid "tenant" +msgstr "inquilina" + +#: tenancy/models/tenants.py:89 +msgid "tenants" +msgstr "inquilinos" + +#: tenancy/tables/contacts.py:112 +msgid "Contact Title" +msgstr "Título do contato" + +#: tenancy/tables/contacts.py:116 +msgid "Contact Phone" +msgstr "Telefone de contato" + +#: tenancy/tables/contacts.py:120 +msgid "Contact Email" +msgstr "E-mail de contato" + +#: tenancy/tables/contacts.py:124 +msgid "Contact Address" +msgstr "Endereço de contato" + +#: tenancy/tables/contacts.py:128 +msgid "Contact Link" +msgstr "Link de contato" + +#: tenancy/tables/contacts.py:132 +msgid "Contact Description" +msgstr "Descrição do contato" + +#: users/filtersets.py:48 users/filtersets.py:151 +msgid "Group (name)" +msgstr "Grupo (nome)" + +#: users/forms/bulk_edit.py:24 +msgid "First name" +msgstr "Primeiro nome" + +#: users/forms/bulk_edit.py:29 +msgid "Last name" +msgstr "Último nome" + +#: users/forms/bulk_edit.py:41 +msgid "Staff status" +msgstr "Status da equipe" + +#: users/forms/bulk_edit.py:46 +msgid "Superuser status" +msgstr "Status de superusuário" + +#: users/forms/bulk_import.py:43 +msgid "If no key is provided, one will be generated automatically." +msgstr "Se nenhuma chave for fornecida, uma será gerada automaticamente." + +#: users/forms/filtersets.py:52 users/tables.py:42 +msgid "Is Staff" +msgstr "É a equipe" + +#: users/forms/filtersets.py:59 users/tables.py:45 +msgid "Is Superuser" +msgstr "É superusuário" + +#: users/forms/filtersets.py:92 users/tables.py:89 +msgid "Can View" +msgstr "Pode ver" + +#: users/forms/filtersets.py:99 users/tables.py:92 +msgid "Can Add" +msgstr "Pode adicionar" + +#: users/forms/filtersets.py:106 users/tables.py:95 +msgid "Can Change" +msgstr "Pode mudar" + +#: users/forms/filtersets.py:113 users/tables.py:98 +msgid "Can Delete" +msgstr "Pode excluir" + +#: users/forms/model_forms.py:58 +msgid "User Interface" +msgstr "Interface de usuário" + +#: users/forms/model_forms.py:115 +msgid "" +"Keys must be at least 40 characters in length. Be sure to record " +"your key prior to submitting this form, as it may no longer be " +"accessible once the token has been created." +msgstr "" +"As chaves devem ter pelo menos 40 caracteres. Certifique-se de " +"gravar sua chave antes de enviar este formulário, pois ele pode não" +" estar mais acessível depois que o token for criado." + +#: users/forms/model_forms.py:127 +msgid "" +"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" +" no restrictions. Example: " +"10.1.1.0/24,192.168.10.16/32,2001:db8:1::/64" +msgstr "" +"Redes IPv4/IPv6 permitidas de onde o token pode ser usado. Deixe em branco " +"sem restrições. Exemplo: 10.1.1.0/24.192.168.10.16/32, 2001:db 8:1: " +":/64" + +#: users/forms/model_forms.py:176 +msgid "Confirm password" +msgstr "Confirme a senha" + +#: users/forms/model_forms.py:179 +msgid "Enter the same password as before, for verification." +msgstr "Digite a mesma senha de antes, para verificação." + +#: users/forms/model_forms.py:237 +msgid "Passwords do not match! Please check your input and try again." +msgstr "As senhas não coincidem! Verifique sua entrada e tente novamente." + +#: users/forms/model_forms.py:303 +msgid "Additional actions" +msgstr "Ações adicionais" + +#: users/forms/model_forms.py:306 +msgid "Actions granted in addition to those listed above" +msgstr "Ações concedidas além das listadas acima" + +#: users/forms/model_forms.py:322 +msgid "Objects" +msgstr "Objetos" + +#: users/forms/model_forms.py:334 +msgid "" +"JSON expression of a queryset filter that will return only permitted " +"objects. Leave null to match all objects of this type. A list of multiple " +"objects will result in a logical OR operation." +msgstr "" +"Expressão JSON de um filtro queryset que retornará somente objetos " +"permitidos. Deixe null para corresponder a todos os objetos desse tipo. Uma " +"lista de vários objetos resultará em uma operação OR lógica." + +#: users/forms/model_forms.py:372 +msgid "At least one action must be selected." +msgstr "Pelo menos uma ação deve ser selecionada." + +#: users/forms/model_forms.py:389 +#, python-brace-format +msgid "Invalid filter for {model}: {error}" +msgstr "Filtro inválido para {model}: {error}" + +#: users/models.py:54 +msgid "user" +msgstr "usuária" + +#: users/models.py:55 +msgid "users" +msgstr "usuários" + +#: users/models.py:66 +msgid "A user with this username already exists." +msgstr "Já existe um usuário com esse nome de usuário." + +#: users/models.py:78 vpn/models/crypto.py:42 +msgid "group" +msgstr "grupo" + +#: users/models.py:79 +msgid "groups" +msgstr "grupos" + +#: users/models.py:106 users/models.py:107 +msgid "user preferences" +msgstr "preferências do usuário" + +#: users/models.py:174 +#, python-brace-format +msgid "Key '{path}' is a leaf node; cannot assign new keys" +msgstr "Chave '{path}'é um nó de folha; não é possível atribuir novas chaves" + +#: users/models.py:186 +#, python-brace-format +msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" +msgstr "" +"Chave '{path}'é um dicionário; não pode atribuir um valor que não seja do " +"dicionário" + +#: users/models.py:252 +msgid "expires" +msgstr "expira" + +#: users/models.py:257 +msgid "last used" +msgstr "usado pela última vez" + +#: users/models.py:262 +msgid "key" +msgstr "chave" + +#: users/models.py:268 +msgid "write enabled" +msgstr "gravação habilitada" + +#: users/models.py:270 +msgid "Permit create/update/delete operations using this key" +msgstr "Permitir operações de criação/atualização/exclusão usando essa chave" + +#: users/models.py:281 +msgid "allowed IPs" +msgstr "IPs permitidos" + +#: users/models.py:283 +msgid "" +"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" +" no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" +msgstr "" +"Redes IPv4/IPv6 permitidas de onde o token pode ser usado. Deixe em branco " +"sem restrições. Ex: “10.1.1.0/24, 192.168.10.16/32, 2001:DB 8:1: :/64\"" + +#: users/models.py:291 +msgid "token" +msgstr "ficha" + +#: users/models.py:292 +msgid "tokens" +msgstr "tokens" + +#: users/models.py:373 +msgid "The list of actions granted by this permission" +msgstr "A lista de ações concedidas por essa permissão" + +#: users/models.py:378 +msgid "constraints" +msgstr "restrições" + +#: users/models.py:379 +msgid "" +"Queryset filter matching the applicable objects of the selected type(s)" +msgstr "" +"Filtro do conjunto de consultas que corresponde aos objetos aplicáveis do " +"(s) tipo (s) selecionado (s)" + +#: users/models.py:386 +msgid "permission" +msgstr "permissão" + +#: users/models.py:387 +msgid "permissions" +msgstr "permissões" + +#: users/tables.py:101 +msgid "Custom Actions" +msgstr "Ações personalizadas" + +#: utilities/choices.py:16 +#, python-brace-format +msgid "{name} has a key defined but CHOICES is not a list" +msgstr "{name} tem uma chave definida, mas CHOICES não é uma lista" + +#: utilities/choices.py:135 +msgid "Dark Red" +msgstr "Vermelho escuro" + +#: utilities/choices.py:138 +msgid "Rose" +msgstr "Rose" + +#: utilities/choices.py:139 +msgid "Fuchsia" +msgstr "Fúcsia" + +#: utilities/choices.py:141 +msgid "Dark Purple" +msgstr "Roxo escuro" + +#: utilities/choices.py:144 +msgid "Light Blue" +msgstr "Azul claro" + +#: utilities/choices.py:147 +msgid "Aqua" +msgstr "Aqua" + +#: utilities/choices.py:148 +msgid "Dark Green" +msgstr "Verde escuro" + +#: utilities/choices.py:150 +msgid "Light Green" +msgstr "Verde claro" + +#: utilities/choices.py:151 +msgid "Lime" +msgstr "Limão" + +#: utilities/choices.py:153 +msgid "Amber" +msgstr "Âmbar" + +#: utilities/choices.py:155 +msgid "Dark Orange" +msgstr "Laranja escuro" + +#: utilities/choices.py:156 +msgid "Brown" +msgstr "Castanho" + +#: utilities/choices.py:157 +msgid "Light Grey" +msgstr "Cinza claro" + +#: utilities/choices.py:158 +msgid "Grey" +msgstr "Cinza" + +#: utilities/choices.py:159 +msgid "Dark Grey" +msgstr "Cinza escuro" + +#: utilities/choices.py:217 +msgid "Direct" +msgstr "Direto" + +#: utilities/choices.py:218 +msgid "Upload" +msgstr "Carregar" + +#: utilities/choices.py:230 utilities/choices.py:244 +msgid "Auto-detect" +msgstr "Detecção automática" + +#: utilities/choices.py:245 +msgid "Comma" +msgstr "Vírgula" + +#: utilities/choices.py:246 +msgid "Semicolon" +msgstr "Ponto e vírgula" + +#: utilities/choices.py:247 +msgid "Tab" +msgstr "Aba" + +#: utilities/error_handlers.py:20 +#, python-brace-format +msgid "" +"Unable to delete {objects}. {count} dependent objects were " +"found: " +msgstr "" +"Não é possível excluir {objects}. {count} objetos " +"dependentes foram encontrados: " + +#: utilities/error_handlers.py:22 +msgid "More than 50" +msgstr "Mais de 50" + +#: utilities/fields.py:162 +#, python-format +msgid "" +"%s(%r) is invalid. to_model parameter to CounterCacheField must be a string " +"in the format 'app.model'" +msgstr "" +"%s(%r) é inválido. O parâmetro to_model para CounterCacheField deve ser uma " +"string no formato 'app.model'" + +#: utilities/fields.py:172 +#, python-format +msgid "" +"%s(%r) is invalid. to_field parameter to CounterCacheField must be a string " +"in the format 'field'" +msgstr "" +"%s(%r) é inválido. O parâmetro to_field para CounterCacheField deve ser uma " +"string no formato 'field'" + +#: utilities/forms/bulk_import.py:24 +msgid "Enter object data in CSV, JSON or YAML format." +msgstr "Insira os dados do objeto no formato CSV, JSON ou YAML." + +#: utilities/forms/bulk_import.py:37 +msgid "CSV delimiter" +msgstr "Delimitador CSV" + +#: utilities/forms/bulk_import.py:38 +msgid "The character which delimits CSV fields. Applies only to CSV format." +msgstr "" +"O caractere que delimita os campos CSV. Aplica-se somente ao formato CSV." + +#: utilities/forms/bulk_import.py:101 +msgid "Unable to detect data format. Please specify." +msgstr "" +"Não foi possível detectar o formato dos dados. Por favor, especifique." + +#: utilities/forms/bulk_import.py:124 +msgid "Invalid CSV delimiter" +msgstr "Delimitador CSV inválido" + +#: utilities/forms/bulk_import.py:168 +msgid "" +"Invalid YAML data. Data must be in the form of multiple documents, or a " +"single document comprising a list of dictionaries." +msgstr "" +"Dados YAML inválidos. Os dados devem estar na forma de vários documentos ou " +"de um único documento contendo uma lista de dicionários." + +#: utilities/forms/fields/array.py:17 +#, python-brace-format +msgid "" +"Invalid list ({value}). Must be numeric and ranges must be in ascending " +"order." +msgstr "" +"Lista inválida ({value}). Deve ser numérico e os intervalos devem estar em " +"ordem crescente." + +#: utilities/forms/fields/csv.py:44 +#, python-brace-format +msgid "Invalid value for a multiple choice field: {value}" +msgstr "Valor inválido para um campo de múltipla escolha: {value}" + +#: utilities/forms/fields/csv.py:57 utilities/forms/fields/csv.py:74 +#, python-format +msgid "Object not found: %(value)s" +msgstr "Objeto não encontrado: %(value)s" + +#: utilities/forms/fields/csv.py:65 +#, python-brace-format +msgid "" +"\"{value}\" is not a unique value for this field; multiple objects were " +"found" +msgstr "" +"“{value}“não é um valor exclusivo para esse campo; vários objetos foram " +"encontrados" + +#: utilities/forms/fields/csv.py:97 +msgid "Object type must be specified as \".\"" +msgstr "O tipo de objeto deve ser especificado como”.“" + +#: utilities/forms/fields/csv.py:101 +msgid "Invalid object type" +msgstr "Tipo de objeto inválido" + +#: utilities/forms/fields/expandable.py:25 +msgid "" +"Alphanumeric ranges are supported for bulk creation. Mixed cases and types " +"within a single range are not supported (example: " +"[ge,xe]-0/0/[0-9])." +msgstr "" +"Os intervalos alfanuméricos são suportados para criação em massa. Casos e " +"tipos mistos dentro de um único intervalo não são suportados (exemplo: " +"[ge, xe] -0/0/ [0-9])." + +#: utilities/forms/fields/expandable.py:46 +msgid "" +"Specify a numeric range to create multiple IPs.
    Example: " +"192.0.2.[1,5,100-254]/24" +msgstr "" +"Especifique um intervalo numérico para criar vários IPs.
    Exemplo: " +"192,0.2. [1,5,100-254] /24" + +#: utilities/forms/fields/fields.py:31 +#, python-brace-format +msgid "" +" Markdown syntax is supported" +msgstr "" +" Markdown a sintaxe é suportada" + +#: utilities/forms/fields/fields.py:48 +msgid "URL-friendly unique shorthand" +msgstr "Abreviatura exclusiva e compatível com URL" + +#: utilities/forms/fields/fields.py:99 +msgid "Enter context data in JSON format." +msgstr "" +"Inserir dados de contexto em JSON formato." + +#: utilities/forms/fields/fields.py:117 +msgid "MAC address must be in EUI-48 format" +msgstr "O endereço MAC deve estar no formato EUI-48" + +#: utilities/forms/forms.py:53 +msgid "Use regular expressions" +msgstr "Use expressões regulares" + +#: utilities/forms/forms.py:87 +#, python-brace-format +msgid "Unrecognized header: {name}" +msgstr "Cabeçalho não reconhecido: {name}" + +#: utilities/forms/forms.py:113 +msgid "Available Columns" +msgstr "Colunas disponíveis" + +#: utilities/forms/forms.py:121 +msgid "Selected Columns" +msgstr "Colunas selecionadas" + +#: utilities/forms/mixins.py:101 +msgid "" +"This object has been modified since the form was rendered. Please consult " +"the object's change log for details." +msgstr "" +"Esse objeto foi modificado desde que o formulário foi renderizado. Consulte " +"o registro de alterações do objeto para obter detalhes." + +#: utilities/templates/builtins/customfield_value.html:30 +msgid "Not defined" +msgstr "Não definido" + +#: utilities/templates/buttons/bookmark.html:9 +msgid "Unbookmark" +msgstr "Desmarcar" + +#: utilities/templates/buttons/bookmark.html:13 +msgid "Bookmark" +msgstr "Marcador" + +#: utilities/templates/buttons/clone.html:4 +msgid "Clone" +msgstr "Clonar" + +#: utilities/templates/buttons/export.html:4 +msgid "Export" +msgstr "Exportar" + +#: utilities/templates/buttons/export.html:7 +msgid "Current View" +msgstr "Visualização atual" + +#: utilities/templates/buttons/export.html:8 +msgid "All Data" +msgstr "Todos os dados" + +#: utilities/templates/buttons/export.html:28 +msgid "Add export template" +msgstr "Adicionar modelo de exportação" + +#: utilities/templates/buttons/import.html:4 +msgid "Import" +msgstr "Importar" + +#: utilities/templates/form_helpers/render_field.html:36 +msgid "Copy to clipboard" +msgstr "Copiar para a prancheta" + +#: utilities/templates/form_helpers/render_field.html:52 +msgid "This field is required" +msgstr "Esse campo é obrigatório" + +#: utilities/templates/form_helpers/render_field.html:65 +msgid "Set Null" +msgstr "Definir como nulo" + +#: utilities/templates/helpers/applied_filters.html:11 +msgid "Clear all" +msgstr "Limpar tudo" + +#: utilities/templates/helpers/table_config_form.html:8 +msgid "Table Configuration" +msgstr "Configuração da tabela" + +#: utilities/templates/helpers/table_config_form.html:31 +msgid "Move Up" +msgstr "Mova-se para cima" + +#: utilities/templates/helpers/table_config_form.html:34 +msgid "Move Down" +msgstr "Mover para baixo" + +#: utilities/templates/widgets/apiselect.html:7 +msgid "Open selector" +msgstr "Abrir seletor" + +#: utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Nenhum atribuído" + +#: utilities/templates/widgets/markdown_input.html:6 +msgid "Write" +msgstr "Escreva" + +#: utilities/templates/widgets/markdown_input.html:20 +msgid "Testing" +msgstr "Testando" + +#: virtualization/filtersets.py:79 +msgid "Parent group (ID)" +msgstr "Grupo de pais (ID)" + +#: virtualization/filtersets.py:85 +msgid "Parent group (slug)" +msgstr "Grupo de pais (lesma)" + +#: virtualization/filtersets.py:89 virtualization/filtersets.py:140 +msgid "Cluster type (ID)" +msgstr "Tipo de cluster (ID)" + +#: virtualization/filtersets.py:129 +msgid "Cluster group (ID)" +msgstr "Grupo de clusters (ID)" + +#: virtualization/filtersets.py:150 virtualization/filtersets.py:265 +msgid "Cluster (ID)" +msgstr "Cluster (ID)" + +#: virtualization/forms/bulk_edit.py:165 +#: virtualization/models/virtualmachines.py:113 +msgid "vCPUs" +msgstr "vCPUs" + +#: virtualization/forms/bulk_edit.py:169 +msgid "Memory (MB)" +msgstr "Memória (MB)" + +#: virtualization/forms/bulk_edit.py:173 +msgid "Disk (GB)" +msgstr "Disco (GB)" + +#: virtualization/forms/bulk_edit.py:333 +#: virtualization/forms/filtersets.py:243 +msgid "Size (GB)" +msgstr "Tamanho (GB)" + +#: virtualization/forms/bulk_import.py:44 +msgid "Type of cluster" +msgstr "Tipo de cluster" + +#: virtualization/forms/bulk_import.py:51 +msgid "Assigned cluster group" +msgstr "Grupo de clusters atribuído" + +#: virtualization/forms/bulk_import.py:96 +msgid "Assigned cluster" +msgstr "Cluster atribuído" + +#: virtualization/forms/bulk_import.py:103 +msgid "Assigned device within cluster" +msgstr "Dispositivo atribuído dentro do cluster" + +#: virtualization/forms/model_forms.py:156 +#, python-brace-format +msgid "" +"{device} belongs to a different site ({device_site}) than the cluster " +"({cluster_site})" +msgstr "" +"{device} pertence a um site diferente ({device_site}) do que o cluster " +"({cluster_site})" + +#: virtualization/forms/model_forms.py:195 +msgid "Optionally pin this VM to a specific host device within the cluster" +msgstr "" +"Opcionalmente, fixe essa VM em um dispositivo host específico dentro do " +"cluster" + +#: virtualization/forms/model_forms.py:224 +msgid "Site/Cluster" +msgstr "Site/Cluster" + +#: virtualization/forms/model_forms.py:247 +msgid "Disk size is managed via the attachment of virtual disks." +msgstr "" +"O tamanho do disco é gerenciado por meio da conexão de discos virtuais." + +#: virtualization/forms/model_forms.py:375 +msgid "Disk" +msgstr "Disco" + +#: virtualization/models/clusters.py:25 +msgid "cluster type" +msgstr "tipo de cluster" + +#: virtualization/models/clusters.py:26 +msgid "cluster types" +msgstr "tipos de cluster" + +#: virtualization/models/clusters.py:45 +msgid "cluster group" +msgstr "grupo de clusters" + +#: virtualization/models/clusters.py:46 +msgid "cluster groups" +msgstr "grupos de clusters" + +#: virtualization/models/clusters.py:121 +msgid "cluster" +msgstr "grupo" + +#: virtualization/models/clusters.py:122 +msgid "clusters" +msgstr "aglomerados" + +#: virtualization/models/clusters.py:141 +#, python-brace-format +msgid "" +"{count} devices are assigned as hosts for this cluster but are not in site " +"{site}" +msgstr "" +"{count} os dispositivos são atribuídos como hosts para esse cluster, mas não" +" estão no site {site}" + +#: virtualization/models/virtualmachines.py:121 +msgid "memory (MB)" +msgstr "memória (MB)" + +#: virtualization/models/virtualmachines.py:126 +msgid "disk (GB)" +msgstr "disco (GB)" + +#: virtualization/models/virtualmachines.py:159 +msgid "Virtual machine name must be unique per cluster." +msgstr "O nome da máquina virtual deve ser exclusivo por cluster." + +#: virtualization/models/virtualmachines.py:162 +msgid "virtual machine" +msgstr "máquina virtual" + +#: virtualization/models/virtualmachines.py:163 +msgid "virtual machines" +msgstr "máquinas virtuais" + +#: virtualization/models/virtualmachines.py:177 +msgid "A virtual machine must be assigned to a site and/or cluster." +msgstr "Uma máquina virtual deve ser atribuída a um site e/ou cluster." + +#: virtualization/models/virtualmachines.py:184 +#, python-brace-format +msgid "" +"The selected cluster ({cluster}) is not assigned to this site ({site})." +msgstr "" +"O cluster selecionado ({cluster}) não está atribuído a este site ({site})." + +#: virtualization/models/virtualmachines.py:191 +msgid "Must specify a cluster when assigning a host device." +msgstr "É necessário especificar um cluster ao atribuir um dispositivo host." + +#: virtualization/models/virtualmachines.py:196 +#, python-brace-format +msgid "" +"The selected device ({device}) is not assigned to this cluster ({cluster})." +msgstr "" +"O dispositivo selecionado ({device}) não está atribuído a esse cluster " +"({cluster})." + +#: virtualization/models/virtualmachines.py:208 +#, python-brace-format +msgid "" +"The specified disk size ({size}) must match the aggregate size of assigned " +"virtual disks ({total_size})." +msgstr "" +"O tamanho do disco especificado ({size}) deve corresponder ao tamanho " +"agregado dos discos virtuais atribuídos ({total_size})." + +#: virtualization/models/virtualmachines.py:222 +#, python-brace-format +msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" +msgstr "Deve ser um IPv{family} endereço. ({ip} é um IPv{version} endereço.)" + +#: virtualization/models/virtualmachines.py:231 +#, python-brace-format +msgid "The specified IP address ({ip}) is not assigned to this VM." +msgstr "O endereço IP especificado ({ip}) não está atribuído a essa VM." + +#: virtualization/models/virtualmachines.py:389 +#, python-brace-format +msgid "" +"The selected parent interface ({parent}) belongs to a different virtual " +"machine ({virtual_machine})." +msgstr "" +"A interface principal selecionada ({parent}) pertence a uma máquina virtual " +"diferente ({virtual_machine})." + +#: virtualization/models/virtualmachines.py:404 +#, python-brace-format +msgid "" +"The selected bridge interface ({bridge}) belongs to a different virtual " +"machine ({virtual_machine})." +msgstr "" +"A interface de ponte selecionada ({bridge}) pertence a uma máquina virtual " +"diferente ({virtual_machine})." + +#: virtualization/models/virtualmachines.py:415 +#, python-brace-format +msgid "" +"The untagged VLAN ({untagged_vlan}) must belong to the same site as the " +"interface's parent virtual machine, or it must be global." +msgstr "" +"A VLAN não marcada ({untagged_vlan}) deve pertencer ao mesmo site da máquina" +" virtual principal da interface ou deve ser global." + +#: virtualization/models/virtualmachines.py:427 +msgid "size (GB)" +msgstr "tamanho (GB)" + +#: virtualization/models/virtualmachines.py:431 +msgid "virtual disk" +msgstr "disco virtual" + +#: virtualization/models/virtualmachines.py:432 +msgid "virtual disks" +msgstr "discos virtuais" + +#: vpn/choices.py:31 +msgid "IPsec - Transport" +msgstr "IPsec - Transporte" + +#: vpn/choices.py:32 +msgid "IPsec - Tunnel" +msgstr "IPsec - Túnel" + +#: vpn/choices.py:33 +msgid "IP-in-IP" +msgstr "IP-in-IP" + +#: vpn/choices.py:34 +msgid "GRE" +msgstr "CINZENTO" + +#: vpn/choices.py:56 +msgid "Hub" +msgstr "Hub" + +#: vpn/choices.py:57 +msgid "Spoke" +msgstr "Falou" + +#: vpn/choices.py:80 +msgid "Aggressive" +msgstr "Agressivo" + +#: vpn/choices.py:81 +msgid "Main" +msgstr "Principal" + +#: vpn/choices.py:92 +msgid "Pre-shared keys" +msgstr "Chaves pré-compartilhadas" + +#: vpn/choices.py:93 +msgid "Certificates" +msgstr "Certificados" + +#: vpn/choices.py:94 +msgid "RSA signatures" +msgstr "Assinaturas RSA" + +#: vpn/choices.py:95 +msgid "DSA signatures" +msgstr "Assinaturas do DSA" + +#: vpn/choices.py:178 vpn/choices.py:179 vpn/choices.py:180 vpn/choices.py:181 +#: vpn/choices.py:182 vpn/choices.py:183 vpn/choices.py:184 vpn/choices.py:185 +#: vpn/choices.py:186 vpn/choices.py:187 vpn/choices.py:188 vpn/choices.py:189 +#: vpn/choices.py:190 vpn/choices.py:191 vpn/choices.py:192 vpn/choices.py:193 +#: vpn/choices.py:194 vpn/choices.py:195 vpn/choices.py:196 vpn/choices.py:197 +#: vpn/choices.py:198 vpn/choices.py:199 vpn/choices.py:200 +#, python-brace-format +msgid "Group {n}" +msgstr "Grupo {n}" + +#: vpn/choices.py:240 +msgid "Ethernet Private LAN" +msgstr "LAN privada Ethernet" + +#: vpn/choices.py:241 +msgid "Ethernet Virtual Private LAN" +msgstr "LAN privada virtual Ethernet" + +#: vpn/choices.py:244 +msgid "Ethernet Private Tree" +msgstr "Árvore privada Ethernet" + +#: vpn/choices.py:245 +msgid "Ethernet Virtual Private Tree" +msgstr "Árvore privada virtual Ethernet" + +#: vpn/filtersets.py:41 +msgid "Tunnel group (ID)" +msgstr "Grupo de túneis (ID)" + +#: vpn/filtersets.py:47 +msgid "Tunnel group (slug)" +msgstr "Grupo de túneis (lesma)" + +#: vpn/filtersets.py:54 +msgid "IPSec profile (ID)" +msgstr "Perfil IPsec (ID)" + +#: vpn/filtersets.py:60 +msgid "IPSec profile (name)" +msgstr "Perfil IPsec (nome)" + +#: vpn/filtersets.py:81 +msgid "Tunnel (ID)" +msgstr "Túnel (ID)" + +#: vpn/filtersets.py:87 +msgid "Tunnel (name)" +msgstr "Túnel (nome)" + +#: vpn/filtersets.py:118 +msgid "Outside IP (ID)" +msgstr "IP externo (ID)" + +#: vpn/filtersets.py:235 +msgid "IKE policy (ID)" +msgstr "Política IKE (ID)" + +#: vpn/filtersets.py:241 +msgid "IKE policy (name)" +msgstr "Política IKE (nome)" + +#: vpn/filtersets.py:245 +msgid "IPSec policy (ID)" +msgstr "Política IPsec (ID)" + +#: vpn/filtersets.py:251 +msgid "IPSec policy (name)" +msgstr "Política IPsec (nome)" + +#: vpn/filtersets.py:320 +msgid "L2VPN (slug)" +msgstr "L2VPN (slug)" + +#: vpn/filtersets.py:384 +msgid "VM Interface (ID)" +msgstr "Interface de VM (ID)" + +#: vpn/filtersets.py:390 +msgid "VLAN (name)" +msgstr "VLAN (nome)" + +#: vpn/forms/bulk_edit.py:44 vpn/forms/bulk_import.py:42 +#: vpn/forms/filtersets.py:53 +msgid "Tunnel group" +msgstr "Grupo de túneis" + +#: vpn/forms/bulk_edit.py:116 vpn/models/crypto.py:47 +msgid "SA lifetime" +msgstr "Uma vida útil" + +#: vpn/forms/bulk_edit.py:150 wireless/forms/bulk_edit.py:78 +#: wireless/forms/bulk_edit.py:125 wireless/forms/filtersets.py:63 +#: wireless/forms/filtersets.py:97 +msgid "Pre-shared key" +msgstr "Chave pré-compartilhada" + +#: vpn/forms/bulk_edit.py:238 vpn/forms/bulk_import.py:234 +#: vpn/forms/filtersets.py:196 vpn/forms/model_forms.py:363 +#: vpn/models/crypto.py:103 +msgid "IKE policy" +msgstr "Política do IKE" + +#: vpn/forms/bulk_edit.py:243 vpn/forms/bulk_import.py:239 +#: vpn/forms/filtersets.py:201 vpn/forms/model_forms.py:367 +#: vpn/models/crypto.py:197 +msgid "IPSec policy" +msgstr "Política IPsec" + +#: vpn/forms/bulk_import.py:50 +msgid "Tunnel encapsulation" +msgstr "Encapsulamento de túneis" + +#: vpn/forms/bulk_import.py:83 +msgid "Operational role" +msgstr "Função operacional" + +#: vpn/forms/bulk_import.py:90 +msgid "Parent device of assigned interface" +msgstr "Dispositivo principal da interface atribuída" + +#: vpn/forms/bulk_import.py:97 +msgid "Parent VM of assigned interface" +msgstr "VM principal da interface atribuída" + +#: vpn/forms/bulk_import.py:104 +msgid "Device or virtual machine interface" +msgstr "Interface de dispositivo ou máquina virtual" + +#: vpn/forms/bulk_import.py:181 +msgid "IKE proposal(s)" +msgstr "Proposta (s) do IKE" + +#: vpn/forms/bulk_import.py:211 vpn/models/crypto.py:185 +msgid "Diffie-Hellman group for Perfect Forward Secrecy" +msgstr "Grupo Diffie-Hellman para Perfect Forward Secrecy" + +#: vpn/forms/bulk_import.py:217 +msgid "IPSec proposal(s)" +msgstr "Proposta (s) de IPsec" + +#: vpn/forms/bulk_import.py:231 +msgid "IPSec protocol" +msgstr "Protocolo IPsec" + +#: vpn/forms/bulk_import.py:261 +msgid "L2VPN type" +msgstr "Tipo L2VPN" + +#: vpn/forms/bulk_import.py:282 +msgid "Parent device (for interface)" +msgstr "Dispositivo principal (para interface)" + +#: vpn/forms/bulk_import.py:289 +msgid "Parent virtual machine (for interface)" +msgstr "Máquina virtual principal (para interface)" + +#: vpn/forms/bulk_import.py:296 +msgid "Assigned interface (device or VM)" +msgstr "Interface atribuída (dispositivo ou VM)" + +#: vpn/forms/bulk_import.py:329 +msgid "Cannot import device and VM interface terminations simultaneously." +msgstr "" +"Não é possível importar terminações do dispositivo e da interface da VM " +"simultaneamente." + +#: vpn/forms/bulk_import.py:331 +msgid "Each termination must specify either an interface or a VLAN." +msgstr "Cada terminação deve especificar uma interface ou uma VLAN." + +#: vpn/forms/bulk_import.py:333 +msgid "Cannot assign both an interface and a VLAN." +msgstr "Não é possível atribuir uma interface e uma VLAN." + +#: vpn/forms/filtersets.py:127 +msgid "IKE version" +msgstr "Versão IKE" + +#: vpn/forms/filtersets.py:139 vpn/forms/filtersets.py:172 +#: vpn/forms/model_forms.py:293 vpn/forms/model_forms.py:328 +msgid "Proposal" +msgstr "Proposta" + +#: vpn/forms/filtersets.py:247 +msgid "Assigned Object Type" +msgstr "Tipo de objeto atribuído" + +#: vpn/forms/model_forms.py:147 +msgid "First Termination" +msgstr "Primeira rescisão" + +#: vpn/forms/model_forms.py:151 +msgid "Second Termination" +msgstr "Segunda rescisão" + +#: vpn/forms/model_forms.py:198 +msgid "This parameter is required when defining a termination." +msgstr "Esse parâmetro é necessário ao definir uma terminação." + +#: vpn/forms/model_forms.py:314 vpn/forms/model_forms.py:349 +msgid "Policy" +msgstr "Política" + +#: vpn/forms/model_forms.py:469 +msgid "A termination must specify an interface or VLAN." +msgstr "Uma terminação deve especificar uma interface ou VLAN." + +#: vpn/forms/model_forms.py:471 +msgid "" +"A termination can only have one terminating object (an interface or VLAN)." +msgstr "" +"Uma terminação só pode ter um objeto de terminação (uma interface ou VLAN)." + +#: vpn/models/crypto.py:33 +msgid "encryption algorithm" +msgstr "algoritmo de criptografia" + +#: vpn/models/crypto.py:37 +msgid "authentication algorithm" +msgstr "algoritmo de autenticação" + +#: vpn/models/crypto.py:44 +msgid "Diffie-Hellman group ID" +msgstr "ID do grupo Diffie-Hellman" + +#: vpn/models/crypto.py:50 +msgid "Security association lifetime (in seconds)" +msgstr "Vida útil da associação de segurança (em segundos)" + +#: vpn/models/crypto.py:59 +msgid "IKE proposal" +msgstr "Proposta IKE" + +#: vpn/models/crypto.py:60 +msgid "IKE proposals" +msgstr "Propostas do IKE" + +#: vpn/models/crypto.py:76 +msgid "version" +msgstr "versão" + +#: vpn/models/crypto.py:87 vpn/models/crypto.py:178 +msgid "proposals" +msgstr "propostas" + +#: vpn/models/crypto.py:90 wireless/models.py:38 +msgid "pre-shared key" +msgstr "chave pré-compartilhada" + +#: vpn/models/crypto.py:104 +msgid "IKE policies" +msgstr "Políticas do IKE" + +#: vpn/models/crypto.py:124 +msgid "encryption" +msgstr "criptografia" + +#: vpn/models/crypto.py:129 +msgid "authentication" +msgstr "autenticação" + +#: vpn/models/crypto.py:137 +msgid "Security association lifetime (seconds)" +msgstr "Vida útil da associação de segurança (segundos)" + +#: vpn/models/crypto.py:143 +msgid "Security association lifetime (in kilobytes)" +msgstr "Vida útil da associação de segurança (em kilobytes)" + +#: vpn/models/crypto.py:152 +msgid "IPSec proposal" +msgstr "Proposta IPsec" + +#: vpn/models/crypto.py:153 +msgid "IPSec proposals" +msgstr "Propostas de IPsec" + +#: vpn/models/crypto.py:166 +msgid "Encryption and/or authentication algorithm must be defined" +msgstr "O algoritmo de criptografia e/ou autenticação deve ser definido" + +#: vpn/models/crypto.py:198 +msgid "IPSec policies" +msgstr "Políticas IPsec" + +#: vpn/models/crypto.py:239 +msgid "IPSec profiles" +msgstr "Perfis IPsec" + +#: vpn/models/l2vpn.py:116 +msgid "L2VPN termination" +msgstr "Terminação L2VPN" + +#: vpn/models/l2vpn.py:117 +msgid "L2VPN terminations" +msgstr "Terminações L2VPN" + +#: vpn/models/l2vpn.py:135 +#, python-brace-format +msgid "L2VPN Termination already assigned ({assigned_object})" +msgstr "Terminação L2VPN já atribuída ({assigned_object})" + +#: vpn/models/l2vpn.py:147 +#, python-brace-format +msgid "" +"{l2vpn_type} L2VPNs cannot have more than two terminations; found " +"{terminations_count} already defined." +msgstr "" +"{l2vpn_type} L2VPNs não podem ter mais de duas terminações; encontrado " +"{terminations_count} já definido." + +#: vpn/models/tunnels.py:26 +msgid "tunnel group" +msgstr "grupo de túneis" + +#: vpn/models/tunnels.py:27 +msgid "tunnel groups" +msgstr "grupos de túneis" + +#: vpn/models/tunnels.py:53 +msgid "encapsulation" +msgstr "encapsulamento" + +#: vpn/models/tunnels.py:72 +msgid "tunnel ID" +msgstr "ID do túnel" + +#: vpn/models/tunnels.py:94 +msgid "tunnel" +msgstr "túnel" + +#: vpn/models/tunnels.py:95 +msgid "tunnels" +msgstr "túneis" + +#: vpn/models/tunnels.py:153 +msgid "An object may be terminated to only one tunnel at a time." +msgstr "Um objeto pode ser encerrado em apenas um túnel por vez." + +#: vpn/models/tunnels.py:156 +msgid "tunnel termination" +msgstr "terminação do túnel" + +#: vpn/models/tunnels.py:157 +msgid "tunnel terminations" +msgstr "terminações de túneis" + +#: vpn/models/tunnels.py:174 +#, python-brace-format +msgid "{name} is already attached to a tunnel ({tunnel})." +msgstr "{name} já está conectado a um túnel ({tunnel})." + +#: vpn/tables/crypto.py:22 +msgid "Authentication Method" +msgstr "Método de autenticação" + +#: vpn/tables/crypto.py:25 vpn/tables/crypto.py:97 +msgid "Encryption Algorithm" +msgstr "algoritmo de criptografia" + +#: vpn/tables/crypto.py:28 vpn/tables/crypto.py:100 +msgid "Authentication Algorithm" +msgstr "algoritmo de autenticação" + +#: vpn/tables/crypto.py:34 +msgid "SA Lifetime" +msgstr "Vida útil de SA" + +#: vpn/tables/crypto.py:71 +msgid "Pre-shared Key" +msgstr "Chave pré-compartilhada" + +#: vpn/tables/crypto.py:103 +msgid "SA Lifetime (Seconds)" +msgstr "Vida útil do SA (segundos)" + +#: vpn/tables/crypto.py:106 +msgid "SA Lifetime (KB)" +msgstr "Vida útil da SA (KB)" + +#: vpn/tables/l2vpn.py:69 +msgid "Object Parent" +msgstr "Pai do objeto" + +#: vpn/tables/l2vpn.py:74 +msgid "Object Site" +msgstr "Site do objeto" + +#: vpn/tables/tunnels.py:84 +msgid "Host" +msgstr "Hospedeiro" + +#: wireless/choices.py:11 +msgid "Access point" +msgstr "Ponto de acesso" + +#: wireless/choices.py:12 +msgid "Station" +msgstr "Estação" + +#: wireless/choices.py:467 +msgid "Open" +msgstr "Aberto" + +#: wireless/choices.py:469 +msgid "WPA Personal (PSK)" +msgstr "WPA pessoal (PSK)" + +#: wireless/choices.py:470 +msgid "WPA Enterprise" +msgstr "WPA Empresarial" + +#: wireless/forms/bulk_edit.py:72 wireless/forms/bulk_edit.py:119 +#: wireless/forms/bulk_import.py:68 wireless/forms/bulk_import.py:71 +#: wireless/forms/bulk_import.py:110 wireless/forms/bulk_import.py:113 +#: wireless/forms/filtersets.py:58 wireless/forms/filtersets.py:92 +msgid "Authentication cipher" +msgstr "Cifra de autenticação" + +#: wireless/forms/bulk_import.py:52 +msgid "Bridged VLAN" +msgstr "VLAN interligada" + +#: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:27 +msgid "Interface A" +msgstr "Interface A" + +#: wireless/forms/bulk_import.py:93 wireless/tables/wirelesslink.py:36 +msgid "Interface B" +msgstr "Interface B" + +#: wireless/forms/model_forms.py:158 +msgid "Side B" +msgstr "Lado B" + +#: wireless/models.py:30 +msgid "authentication cipher" +msgstr "cifra de autenticação" + +#: wireless/models.py:68 +msgid "wireless LAN group" +msgstr "grupo de LAN sem fio" + +#: wireless/models.py:69 +msgid "wireless LAN groups" +msgstr "grupos de LAN sem fio" + +#: wireless/models.py:115 +msgid "wireless LAN" +msgstr "LAN sem fio" + +#: wireless/models.py:143 +msgid "interface A" +msgstr "interface A" + +#: wireless/models.py:150 +msgid "interface B" +msgstr "interface B" + +#: wireless/models.py:198 +msgid "wireless link" +msgstr "link sem fio" + +#: wireless/models.py:199 +msgid "wireless links" +msgstr "links sem fio" + +#: wireless/models.py:216 wireless/models.py:222 +#, python-brace-format +msgid "{type} is not a wireless interface." +msgstr "{type} não é uma interface sem fio." diff --git a/netbox/translations/ru/LC_MESSAGES/django.mo b/netbox/translations/ru/LC_MESSAGES/django.mo new file mode 100644 index 000000000..4b4aced04 Binary files /dev/null and b/netbox/translations/ru/LC_MESSAGES/django.mo differ diff --git a/netbox/translations/ru/LC_MESSAGES/django.po b/netbox/translations/ru/LC_MESSAGES/django.po new file mode 100644 index 000000000..7e2932449 --- /dev/null +++ b/netbox/translations/ru/LC_MESSAGES/django.po @@ -0,0 +1,13582 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +# Translators: +# Jeremy Stretch, 2023 +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-12-21 17:54+0000\n" +"PO-Revision-Date: 2023-10-30 17:48+0000\n" +"Last-Translator: Jeremy Stretch, 2023\n" +"Language-Team: Russian (https://app.transifex.com/netbox-community/teams/178115/ru/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +#: account/tables.py:27 templates/account/token.html:23 +#: templates/users/token.html:18 users/forms/bulk_import.py:41 +#: users/forms/model_forms.py:113 +msgid "Key" +msgstr "Ключ" + +#: account/tables.py:31 users/forms/filtersets.py:133 +msgid "Write Enabled" +msgstr "Запись включена" + +#: account/tables.py:34 core/tables/jobs.py:29 extras/choices.py:135 +#: extras/tables/tables.py:469 templates/account/token.html:44 +#: templates/core/configrevision.html:34 +#: templates/core/configrevision_restore.html:12 templates/core/job.html:58 +#: templates/extras/htmx/report_result.html:11 +#: templates/extras/htmx/script_result.html:12 +#: templates/extras/journalentry.html:25 templates/generic/object.html:48 +#: templates/users/token.html:36 +msgid "Created" +msgstr "Создан" + +#: account/tables.py:37 templates/account/token.html:48 +#: templates/users/token.html:40 users/forms/bulk_edit.py:97 +#: users/forms/filtersets.py:137 +msgid "Expires" +msgstr "Истекает" + +#: account/tables.py:40 users/forms/filtersets.py:142 +msgid "Last Used" +msgstr "Последний раз использованный" + +#: account/tables.py:43 templates/account/token.html:56 +#: templates/users/token.html:48 users/forms/bulk_edit.py:102 +#: users/forms/model_forms.py:125 +msgid "Allowed IPs" +msgstr "Разрешенные IP-адреса" + +#: circuits/choices.py:21 dcim/choices.py:20 dcim/choices.py:102 +#: dcim/choices.py:174 dcim/choices.py:220 dcim/choices.py:1419 +#: dcim/choices.py:1495 dcim/choices.py:1545 virtualization/choices.py:20 +#: virtualization/choices.py:45 vpn/choices.py:18 +msgid "Planned" +msgstr "Запланировано" + +#: circuits/choices.py:22 netbox/navigation/menu.py:290 +msgid "Provisioning" +msgstr "Выделение ресурсов" + +#: circuits/choices.py:23 dcim/choices.py:22 dcim/choices.py:103 +#: dcim/choices.py:173 dcim/choices.py:219 dcim/choices.py:1494 +#: dcim/choices.py:1544 extras/tables/tables.py:375 ipam/choices.py:31 +#: ipam/choices.py:49 ipam/choices.py:69 ipam/choices.py:154 +#: templates/extras/configcontext.html:26 templates/users/user.html:34 +#: users/forms/bulk_edit.py:36 virtualization/choices.py:22 +#: virtualization/choices.py:44 vpn/choices.py:19 wireless/choices.py:25 +msgid "Active" +msgstr "Активный" + +#: circuits/choices.py:24 dcim/choices.py:172 dcim/choices.py:218 +#: dcim/choices.py:1493 dcim/choices.py:1546 virtualization/choices.py:24 +#: virtualization/choices.py:43 +msgid "Offline" +msgstr "Не в сети" + +#: circuits/choices.py:25 +msgid "Deprovisioning" +msgstr "Выделение резервов" + +#: circuits/choices.py:26 +msgid "Decommissioned" +msgstr "Списан" + +#: circuits/filtersets.py:29 circuits/filtersets.py:182 dcim/filtersets.py:120 +#: dcim/filtersets.py:181 dcim/filtersets.py:256 dcim/filtersets.py:364 +#: dcim/filtersets.py:881 dcim/filtersets.py:1177 dcim/filtersets.py:1672 +#: dcim/filtersets.py:1845 dcim/filtersets.py:1902 ipam/filtersets.py:305 +#: ipam/filtersets.py:896 virtualization/filtersets.py:45 +#: virtualization/filtersets.py:172 vpn/filtersets.py:330 +msgid "Region (ID)" +msgstr "Регион (ID)" + +#: circuits/filtersets.py:36 circuits/filtersets.py:189 dcim/filtersets.py:126 +#: dcim/filtersets.py:188 dcim/filtersets.py:263 dcim/filtersets.py:371 +#: dcim/filtersets.py:888 dcim/filtersets.py:1184 dcim/filtersets.py:1679 +#: dcim/filtersets.py:1852 dcim/filtersets.py:1909 extras/filtersets.py:414 +#: ipam/filtersets.py:312 ipam/filtersets.py:903 +#: virtualization/filtersets.py:52 virtualization/filtersets.py:179 +#: vpn/filtersets.py:325 +msgid "Region (slug)" +msgstr "Регион (пуля)" + +#: circuits/filtersets.py:42 circuits/filtersets.py:195 dcim/filtersets.py:194 +#: dcim/filtersets.py:269 dcim/filtersets.py:377 dcim/filtersets.py:894 +#: dcim/filtersets.py:1190 dcim/filtersets.py:1685 dcim/filtersets.py:1858 +#: dcim/filtersets.py:1915 ipam/filtersets.py:318 ipam/filtersets.py:909 +#: virtualization/filtersets.py:58 virtualization/filtersets.py:185 +msgid "Site group (ID)" +msgstr "Группа сайтов (ID)" + +#: circuits/filtersets.py:49 circuits/filtersets.py:202 dcim/filtersets.py:201 +#: dcim/filtersets.py:276 dcim/filtersets.py:384 dcim/filtersets.py:901 +#: dcim/filtersets.py:1197 dcim/filtersets.py:1692 dcim/filtersets.py:1865 +#: dcim/filtersets.py:1922 extras/filtersets.py:420 ipam/filtersets.py:325 +#: ipam/filtersets.py:916 virtualization/filtersets.py:65 +#: virtualization/filtersets.py:192 +msgid "Site group (slug)" +msgstr "Группа сайтов (слизень)" + +#: circuits/filtersets.py:54 circuits/forms/bulk_import.py:117 +#: circuits/forms/filtersets.py:47 circuits/forms/filtersets.py:171 +#: circuits/forms/model_forms.py:137 dcim/forms/bulk_edit.py:166 +#: dcim/forms/bulk_edit.py:238 dcim/forms/bulk_edit.py:570 +#: dcim/forms/bulk_edit.py:763 dcim/forms/bulk_import.py:130 +#: dcim/forms/bulk_import.py:176 dcim/forms/bulk_import.py:249 +#: dcim/forms/bulk_import.py:477 dcim/forms/bulk_import.py:1239 +#: dcim/forms/bulk_import.py:1267 dcim/forms/filtersets.py:84 +#: dcim/forms/filtersets.py:217 dcim/forms/filtersets.py:264 +#: dcim/forms/filtersets.py:373 dcim/forms/filtersets.py:680 +#: dcim/forms/filtersets.py:910 dcim/forms/filtersets.py:934 +#: dcim/forms/filtersets.py:1024 dcim/forms/filtersets.py:1062 +#: dcim/forms/filtersets.py:1468 dcim/forms/filtersets.py:1492 +#: dcim/forms/filtersets.py:1516 dcim/forms/model_forms.py:138 +#: dcim/forms/model_forms.py:167 dcim/forms/model_forms.py:211 +#: dcim/forms/model_forms.py:397 dcim/forms/model_forms.py:630 +#: dcim/forms/object_create.py:390 dcim/tables/devices.py:186 +#: dcim/tables/power.py:26 dcim/tables/power.py:93 dcim/tables/racks.py:62 +#: dcim/tables/racks.py:138 dcim/tables/sites.py:129 extras/filtersets.py:430 +#: ipam/forms/bulk_edit.py:215 ipam/forms/bulk_edit.py:269 +#: ipam/forms/bulk_edit.py:447 ipam/forms/bulk_edit.py:519 +#: ipam/forms/bulk_import.py:170 ipam/forms/bulk_import.py:437 +#: ipam/forms/filtersets.py:152 ipam/forms/filtersets.py:226 +#: ipam/forms/filtersets.py:417 ipam/forms/filtersets.py:470 +#: ipam/forms/model_forms.py:206 ipam/forms/model_forms.py:548 +#: ipam/forms/model_forms.py:640 ipam/tables/ip.py:244 +#: ipam/tables/vlans.py:114 ipam/tables/vlans.py:216 +#: templates/circuits/circuittermination_edit.html:20 +#: templates/circuits/inc/circuit_termination.html:33 +#: templates/dcim/device.html:22 templates/dcim/inc/cable_termination.html:8 +#: templates/dcim/inc/cable_termination.html:33 +#: templates/dcim/location.html:40 templates/dcim/powerpanel.html:23 +#: templates/dcim/rack.html:25 templates/dcim/rackreservation.html:31 +#: templates/dcim/site.html:27 templates/ipam/prefix.html:57 +#: templates/ipam/vlan.html:26 templates/ipam/vlan_edit.html:40 +#: templates/virtualization/cluster.html:45 +#: templates/virtualization/virtualmachine.html:96 +#: virtualization/forms/bulk_edit.py:90 virtualization/forms/bulk_edit.py:99 +#: virtualization/forms/bulk_edit.py:108 virtualization/forms/bulk_edit.py:123 +#: virtualization/forms/bulk_import.py:59 +#: virtualization/forms/bulk_import.py:85 +#: virtualization/forms/filtersets.py:78 +#: virtualization/forms/filtersets.py:144 +#: virtualization/forms/model_forms.py:74 +#: virtualization/forms/model_forms.py:107 +#: virtualization/forms/model_forms.py:174 +#: virtualization/tables/clusters.py:77 +#: virtualization/tables/virtualmachines.py:53 vpn/forms/filtersets.py:262 +#: wireless/forms/model_forms.py:77 wireless/forms/model_forms.py:117 +msgid "Site" +msgstr "Сайт" + +#: circuits/filtersets.py:60 circuits/filtersets.py:213 +#: circuits/filtersets.py:250 dcim/filtersets.py:211 dcim/filtersets.py:286 +#: dcim/filtersets.py:358 extras/filtersets.py:436 ipam/filtersets.py:215 +#: ipam/filtersets.py:335 ipam/filtersets.py:926 +#: virtualization/filtersets.py:75 virtualization/filtersets.py:202 +#: vpn/filtersets.py:335 +msgid "Site (slug)" +msgstr "Сайт (слизень)" + +#: circuits/filtersets.py:65 +msgid "ASN (ID)" +msgstr "ЯСЕНЬ (РЕБЕНОК)" + +#: circuits/filtersets.py:86 circuits/filtersets.py:112 +#: circuits/filtersets.py:146 +msgid "Provider (ID)" +msgstr "Поставщик (ID)" + +#: circuits/filtersets.py:92 circuits/filtersets.py:118 +#: circuits/filtersets.py:152 +msgid "Provider (slug)" +msgstr "Поставщик (пуля)" + +#: circuits/filtersets.py:157 +msgid "Provider account (ID)" +msgstr "Учетная запись поставщика (ID)" + +#: circuits/filtersets.py:162 +msgid "Provider network (ID)" +msgstr "Сеть провайдеров (ID)" + +#: circuits/filtersets.py:166 +msgid "Circuit type (ID)" +msgstr "Тип цепи (ID)" + +#: circuits/filtersets.py:172 +msgid "Circuit type (slug)" +msgstr "Тип цепи (заглушка)" + +#: circuits/filtersets.py:207 circuits/filtersets.py:244 +#: dcim/filtersets.py:205 dcim/filtersets.py:280 dcim/filtersets.py:352 +#: dcim/filtersets.py:905 dcim/filtersets.py:1202 dcim/filtersets.py:1697 +#: dcim/filtersets.py:1869 dcim/filtersets.py:1927 ipam/filtersets.py:209 +#: ipam/filtersets.py:329 ipam/filtersets.py:920 +#: virtualization/filtersets.py:69 virtualization/filtersets.py:196 +#: vpn/filtersets.py:340 +msgid "Site (ID)" +msgstr "Сайт (ID)" + +#: circuits/filtersets.py:236 core/filtersets.py:73 core/filtersets.py:132 +#: dcim/filtersets.py:633 dcim/filtersets.py:1171 dcim/filtersets.py:1973 +#: extras/filtersets.py:40 extras/filtersets.py:69 extras/filtersets.py:101 +#: extras/filtersets.py:140 extras/filtersets.py:168 extras/filtersets.py:195 +#: extras/filtersets.py:226 extras/filtersets.py:295 extras/filtersets.py:343 +#: extras/filtersets.py:403 extras/filtersets.py:562 extras/filtersets.py:604 +#: extras/filtersets.py:645 ipam/forms/model_forms.py:430 +#: netbox/filtersets.py:275 netbox/forms/__init__.py:23 +#: netbox/forms/base.py:152 templates/htmx/object_selector.html:28 +#: templates/inc/filter_list.html:53 templates/ipam/ipaddress_assign.html:32 +#: templates/search.html:7 templates/search.html:26 tenancy/filtersets.py:86 +#: users/filtersets.py:21 users/filtersets.py:37 users/filtersets.py:69 +#: users/filtersets.py:117 utilities/forms/forms.py:99 +msgid "Search" +msgstr "Поиск" + +#: circuits/filtersets.py:240 circuits/forms/bulk_edit.py:167 +#: circuits/forms/model_forms.py:110 circuits/forms/model_forms.py:132 +#: dcim/forms/connections.py:66 templates/circuits/circuit.html:15 +#: templates/dcim/inc/cable_termination.html:55 +#: templates/dcim/trace/circuit.html:4 +msgid "Circuit" +msgstr "Цепь" + +#: circuits/filtersets.py:254 +msgid "ProviderNetwork (ID)" +msgstr "Сеть провайдеров (ID)" + +#: circuits/forms/bulk_edit.py:25 circuits/forms/filtersets.py:56 +#: circuits/forms/model_forms.py:26 circuits/tables/providers.py:33 +#: dcim/forms/bulk_edit.py:126 dcim/forms/filtersets.py:187 +#: dcim/forms/model_forms.py:126 dcim/tables/sites.py:94 +#: ipam/models/asns.py:126 ipam/tables/asn.py:27 ipam/views.py:219 +#: netbox/navigation/menu.py:160 netbox/navigation/menu.py:163 +#: templates/circuits/provider.html:24 +msgid "ASNs" +msgstr "SAN" + +#: circuits/forms/bulk_edit.py:29 circuits/forms/bulk_edit.py:51 +#: circuits/forms/bulk_edit.py:78 circuits/forms/bulk_edit.py:99 +#: circuits/forms/bulk_edit.py:159 core/forms/bulk_edit.py:27 +#: dcim/forms/bulk_create.py:35 dcim/forms/bulk_edit.py:71 +#: dcim/forms/bulk_edit.py:90 dcim/forms/bulk_edit.py:149 +#: dcim/forms/bulk_edit.py:190 dcim/forms/bulk_edit.py:208 +#: dcim/forms/bulk_edit.py:336 dcim/forms/bulk_edit.py:371 +#: dcim/forms/bulk_edit.py:386 dcim/forms/bulk_edit.py:445 +#: dcim/forms/bulk_edit.py:484 dcim/forms/bulk_edit.py:514 +#: dcim/forms/bulk_edit.py:538 dcim/forms/bulk_edit.py:608 +#: dcim/forms/bulk_edit.py:657 dcim/forms/bulk_edit.py:709 +#: dcim/forms/bulk_edit.py:732 dcim/forms/bulk_edit.py:780 +#: dcim/forms/bulk_edit.py:850 dcim/forms/bulk_edit.py:903 +#: dcim/forms/bulk_edit.py:938 dcim/forms/bulk_edit.py:978 +#: dcim/forms/bulk_edit.py:1022 dcim/forms/bulk_edit.py:1067 +#: dcim/forms/bulk_edit.py:1094 dcim/forms/bulk_edit.py:1112 +#: dcim/forms/bulk_edit.py:1130 dcim/forms/bulk_edit.py:1148 +#: dcim/forms/bulk_edit.py:1566 extras/forms/bulk_edit.py:36 +#: extras/forms/bulk_edit.py:123 extras/forms/bulk_edit.py:152 +#: extras/forms/bulk_edit.py:182 extras/forms/bulk_edit.py:263 +#: extras/forms/bulk_edit.py:287 extras/forms/bulk_edit.py:301 +#: extras/tables/tables.py:56 ipam/forms/bulk_edit.py:50 +#: ipam/forms/bulk_edit.py:70 ipam/forms/bulk_edit.py:90 +#: ipam/forms/bulk_edit.py:114 ipam/forms/bulk_edit.py:143 +#: ipam/forms/bulk_edit.py:172 ipam/forms/bulk_edit.py:191 +#: ipam/forms/bulk_edit.py:260 ipam/forms/bulk_edit.py:304 +#: ipam/forms/bulk_edit.py:352 ipam/forms/bulk_edit.py:395 +#: ipam/forms/bulk_edit.py:423 ipam/forms/bulk_edit.py:551 +#: ipam/forms/bulk_edit.py:582 templates/account/token.html:36 +#: templates/circuits/circuit.html:60 templates/circuits/circuittype.html:29 +#: templates/circuits/inc/circuit_termination.html:115 +#: templates/circuits/provider.html:34 +#: templates/circuits/providernetwork.html:35 +#: templates/core/datasource.html:55 templates/dcim/cable.html:37 +#: templates/dcim/consoleport.html:47 templates/dcim/consoleserverport.html:47 +#: templates/dcim/device.html:96 templates/dcim/devicebay.html:35 +#: templates/dcim/devicerole.html:33 templates/dcim/devicetype.html:36 +#: templates/dcim/frontport.html:61 templates/dcim/interface.html:70 +#: templates/dcim/inventoryitem.html:61 +#: templates/dcim/inventoryitemrole.html:23 templates/dcim/location.html:36 +#: templates/dcim/manufacturer.html:43 templates/dcim/module.html:71 +#: templates/dcim/modulebay.html:39 templates/dcim/moduletype.html:27 +#: templates/dcim/platform.html:36 templates/dcim/powerfeed.html:43 +#: templates/dcim/poweroutlet.html:43 templates/dcim/powerpanel.html:31 +#: templates/dcim/powerport.html:43 templates/dcim/rack.html:54 +#: templates/dcim/rackreservation.html:69 templates/dcim/rackrole.html:29 +#: templates/dcim/rearport.html:57 templates/dcim/region.html:34 +#: templates/dcim/site.html:60 templates/dcim/sitegroup.html:34 +#: templates/dcim/virtualchassis.html:32 +#: templates/extras/admin/plugins_list.html:26 +#: templates/extras/configcontext.html:22 +#: templates/extras/configtemplate.html:18 +#: templates/extras/customfield.html:35 +#: templates/extras/dashboard/widget_add.html:14 +#: templates/extras/eventrule.html:24 templates/extras/exporttemplate.html:25 +#: templates/extras/report_list.html:47 templates/extras/savedfilter.html:18 +#: templates/extras/script_list.html:53 templates/extras/tag.html:23 +#: templates/extras/webhook.html:20 templates/generic/bulk_import.html:118 +#: templates/ipam/aggregate.html:44 templates/ipam/asn.html:43 +#: templates/ipam/asnrange.html:39 templates/ipam/fhrpgroup.html:35 +#: templates/ipam/ipaddress.html:58 templates/ipam/iprange.html:70 +#: templates/ipam/prefix.html:82 templates/ipam/rir.html:29 +#: templates/ipam/role.html:29 templates/ipam/routetarget.html:22 +#: templates/ipam/service.html:53 templates/ipam/servicetemplate.html:28 +#: templates/ipam/vlan.html:65 templates/ipam/vlangroup.html:35 +#: templates/ipam/vrf.html:36 templates/tenancy/contact.html:68 +#: templates/tenancy/contactgroup.html:28 +#: templates/tenancy/contactrole.html:23 templates/tenancy/tenant.html:25 +#: templates/tenancy/tenantgroup.html:36 +#: templates/users/objectpermission.html:22 templates/users/token.html:28 +#: templates/virtualization/cluster.html:28 +#: templates/virtualization/clustergroup.html:29 +#: templates/virtualization/clustertype.html:29 +#: templates/virtualization/virtualdisk.html:40 +#: templates/virtualization/virtualmachine.html:34 +#: templates/virtualization/vminterface.html:54 +#: templates/vpn/ikepolicy.html:18 templates/vpn/ikeproposal.html:18 +#: templates/vpn/ipsecpolicy.html:18 templates/vpn/ipsecprofile.html:18 +#: templates/vpn/ipsecprofile.html:43 templates/vpn/ipsecprofile.html:78 +#: templates/vpn/ipsecproposal.html:18 templates/vpn/l2vpn.html:27 +#: templates/vpn/tunnel.html:34 templates/vpn/tunnelgroup.html:33 +#: templates/wireless/wirelesslan.html:27 +#: templates/wireless/wirelesslangroup.html:34 +#: templates/wireless/wirelesslink.html:37 tenancy/forms/bulk_edit.py:31 +#: tenancy/forms/bulk_edit.py:79 tenancy/forms/bulk_edit.py:121 +#: users/forms/bulk_edit.py:62 users/forms/bulk_edit.py:92 +#: virtualization/forms/bulk_edit.py:31 virtualization/forms/bulk_edit.py:45 +#: virtualization/forms/bulk_edit.py:176 virtualization/forms/bulk_edit.py:227 +#: virtualization/forms/bulk_edit.py:336 vpn/forms/bulk_edit.py:27 +#: vpn/forms/bulk_edit.py:63 vpn/forms/bulk_edit.py:120 +#: vpn/forms/bulk_edit.py:154 vpn/forms/bulk_edit.py:191 +#: vpn/forms/bulk_edit.py:216 vpn/forms/bulk_edit.py:248 +#: vpn/forms/bulk_edit.py:277 wireless/forms/bulk_edit.py:28 +#: wireless/forms/bulk_edit.py:81 wireless/forms/bulk_edit.py:128 +msgid "Description" +msgstr "Описание" + +#: circuits/forms/bulk_edit.py:46 circuits/forms/bulk_edit.py:68 +#: circuits/forms/bulk_edit.py:118 circuits/forms/bulk_import.py:35 +#: circuits/forms/bulk_import.py:50 circuits/forms/bulk_import.py:76 +#: circuits/forms/filtersets.py:70 circuits/forms/filtersets.py:88 +#: circuits/forms/filtersets.py:116 circuits/forms/filtersets.py:131 +#: circuits/forms/model_forms.py:32 circuits/forms/model_forms.py:44 +#: circuits/forms/model_forms.py:58 circuits/forms/model_forms.py:92 +#: circuits/tables/circuits.py:55 circuits/tables/providers.py:72 +#: circuits/tables/providers.py:103 templates/circuits/circuit.html:19 +#: templates/circuits/provider.html:20 +#: templates/circuits/provideraccount.html:21 +#: templates/circuits/providernetwork.html:23 +#: templates/dcim/inc/cable_termination.html:51 +msgid "Provider" +msgstr "Поставщик" + +#: circuits/forms/bulk_edit.py:75 circuits/forms/filtersets.py:91 +#: templates/circuits/providernetwork.html:31 +msgid "Service ID" +msgstr "Идентификатор услуги" + +#: circuits/forms/bulk_edit.py:95 circuits/forms/filtersets.py:107 +#: dcim/forms/bulk_edit.py:204 dcim/forms/bulk_edit.py:500 +#: dcim/forms/bulk_edit.py:694 dcim/forms/bulk_edit.py:1063 +#: dcim/forms/bulk_edit.py:1090 dcim/forms/bulk_edit.py:1562 +#: dcim/forms/filtersets.py:977 dcim/forms/filtersets.py:1353 +#: dcim/forms/filtersets.py:1374 dcim/tables/devices.py:717 +#: dcim/tables/devices.py:777 dcim/tables/devices.py:1004 +#: dcim/tables/devicetypes.py:245 dcim/tables/devicetypes.py:260 +#: dcim/tables/racks.py:32 extras/forms/bulk_edit.py:259 +#: extras/tables/tables.py:323 templates/circuits/circuittype.html:33 +#: templates/dcim/cable.html:41 templates/dcim/devicerole.html:37 +#: templates/dcim/frontport.html:43 templates/dcim/inventoryitemrole.html:27 +#: templates/dcim/rackrole.html:33 templates/dcim/rearport.html:43 +#: templates/extras/tag.html:29 +msgid "Color" +msgstr "Цвет" + +#: circuits/forms/bulk_edit.py:113 circuits/forms/bulk_import.py:89 +#: circuits/forms/filtersets.py:126 core/forms/bulk_edit.py:17 +#: core/forms/filtersets.py:29 core/tables/data.py:20 core/tables/jobs.py:18 +#: dcim/forms/bulk_edit.py:281 dcim/forms/bulk_edit.py:672 +#: dcim/forms/bulk_edit.py:811 dcim/forms/bulk_edit.py:879 +#: dcim/forms/bulk_edit.py:898 dcim/forms/bulk_edit.py:921 +#: dcim/forms/bulk_edit.py:963 dcim/forms/bulk_edit.py:1007 +#: dcim/forms/bulk_edit.py:1058 dcim/forms/bulk_edit.py:1085 +#: dcim/forms/bulk_import.py:206 dcim/forms/bulk_import.py:645 +#: dcim/forms/bulk_import.py:671 dcim/forms/bulk_import.py:697 +#: dcim/forms/bulk_import.py:717 dcim/forms/bulk_import.py:800 +#: dcim/forms/bulk_import.py:890 dcim/forms/bulk_import.py:932 +#: dcim/forms/bulk_import.py:1145 dcim/forms/bulk_import.py:1304 +#: dcim/forms/filtersets.py:286 dcim/forms/filtersets.py:867 +#: dcim/forms/filtersets.py:967 dcim/forms/filtersets.py:1088 +#: dcim/forms/filtersets.py:1158 dcim/forms/filtersets.py:1180 +#: dcim/forms/filtersets.py:1202 dcim/forms/filtersets.py:1219 +#: dcim/forms/filtersets.py:1253 dcim/forms/filtersets.py:1348 +#: dcim/forms/filtersets.py:1369 dcim/forms/object_import.py:89 +#: dcim/forms/object_import.py:118 dcim/forms/object_import.py:150 +#: dcim/tables/devices.py:211 dcim/tables/devices.py:833 +#: dcim/tables/power.py:77 extras/forms/bulk_import.py:39 +#: extras/tables/tables.py:345 extras/tables/tables.py:443 +#: netbox/tables/tables.py:234 templates/circuits/circuit.html:31 +#: templates/core/datasource.html:39 templates/dcim/cable.html:16 +#: templates/dcim/consoleport.html:39 templates/dcim/consoleserverport.html:39 +#: templates/dcim/frontport.html:39 templates/dcim/interface.html:47 +#: templates/dcim/interface.html:175 templates/dcim/interface.html:323 +#: templates/dcim/powerfeed.html:35 templates/dcim/poweroutlet.html:39 +#: templates/dcim/powerport.html:39 templates/dcim/rack.html:81 +#: templates/dcim/rearport.html:39 templates/extras/eventrule.html:95 +#: templates/virtualization/cluster.html:20 templates/vpn/l2vpn.html:23 +#: templates/wireless/inc/authentication_attrs.html:9 +#: templates/wireless/inc/wirelesslink_interface.html:14 +#: virtualization/forms/bulk_edit.py:59 virtualization/forms/bulk_import.py:41 +#: virtualization/forms/filtersets.py:53 +#: virtualization/forms/model_forms.py:65 virtualization/tables/clusters.py:66 +#: vpn/forms/bulk_edit.py:267 vpn/forms/bulk_import.py:259 +#: vpn/forms/filtersets.py:214 vpn/forms/model_forms.py:83 +#: vpn/forms/model_forms.py:118 vpn/forms/model_forms.py:232 +msgid "Type" +msgstr "Тип" + +#: circuits/forms/bulk_edit.py:123 circuits/forms/bulk_import.py:82 +#: circuits/forms/filtersets.py:139 circuits/forms/model_forms.py:97 +msgid "Provider account" +msgstr "Учетная запись поставщика" + +#: circuits/forms/bulk_edit.py:131 circuits/forms/bulk_import.py:95 +#: circuits/forms/filtersets.py:150 core/forms/filtersets.py:34 +#: core/forms/filtersets.py:75 core/tables/data.py:23 core/tables/jobs.py:26 +#: dcim/forms/bulk_edit.py:104 dcim/forms/bulk_edit.py:179 +#: dcim/forms/bulk_edit.py:260 dcim/forms/bulk_edit.py:593 +#: dcim/forms/bulk_edit.py:646 dcim/forms/bulk_edit.py:678 +#: dcim/forms/bulk_edit.py:805 dcim/forms/bulk_edit.py:1585 +#: dcim/forms/bulk_import.py:87 dcim/forms/bulk_import.py:146 +#: dcim/forms/bulk_import.py:194 dcim/forms/bulk_import.py:442 +#: dcim/forms/bulk_import.py:596 dcim/forms/bulk_import.py:1139 +#: dcim/forms/bulk_import.py:1299 dcim/forms/filtersets.py:170 +#: dcim/forms/filtersets.py:229 dcim/forms/filtersets.py:281 +#: dcim/forms/filtersets.py:726 dcim/forms/filtersets.py:835 +#: dcim/forms/filtersets.py:871 dcim/forms/filtersets.py:972 +#: dcim/forms/filtersets.py:1083 dcim/tables/devices.py:173 +#: dcim/tables/devices.py:836 dcim/tables/devices.py:1064 +#: dcim/tables/modules.py:69 dcim/tables/power.py:74 dcim/tables/racks.py:66 +#: dcim/tables/sites.py:82 dcim/tables/sites.py:133 +#: ipam/forms/bulk_edit.py:240 ipam/forms/bulk_edit.py:289 +#: ipam/forms/bulk_edit.py:337 ipam/forms/bulk_edit.py:541 +#: ipam/forms/bulk_import.py:191 ipam/forms/bulk_import.py:256 +#: ipam/forms/bulk_import.py:292 ipam/forms/bulk_import.py:458 +#: ipam/forms/filtersets.py:205 ipam/forms/filtersets.py:270 +#: ipam/forms/filtersets.py:341 ipam/forms/filtersets.py:482 +#: ipam/forms/model_forms.py:449 ipam/tables/ip.py:236 ipam/tables/ip.py:309 +#: ipam/tables/ip.py:359 ipam/tables/ip.py:421 ipam/tables/ip.py:448 +#: ipam/tables/vlans.py:122 ipam/tables/vlans.py:227 +#: templates/circuits/circuit.html:35 templates/core/datasource.html:47 +#: templates/core/job.html:35 templates/dcim/cable.html:20 +#: templates/dcim/device.html:183 templates/dcim/location.html:48 +#: templates/dcim/module.html:67 templates/dcim/powerfeed.html:39 +#: templates/dcim/rack.html:46 templates/dcim/site.html:43 +#: templates/extras/report_list.html:49 templates/extras/script_list.html:55 +#: templates/ipam/ipaddress.html:40 templates/ipam/iprange.html:57 +#: templates/ipam/prefix.html:74 templates/ipam/vlan.html:51 +#: templates/virtualization/cluster.html:24 +#: templates/virtualization/virtualmachine.html:22 +#: templates/vpn/tunnel.html:26 templates/wireless/wirelesslan.html:23 +#: templates/wireless/wirelesslink.html:20 users/forms/filtersets.py:33 +#: users/forms/model_forms.py:196 virtualization/forms/bulk_edit.py:69 +#: virtualization/forms/bulk_edit.py:117 +#: virtualization/forms/bulk_import.py:54 +#: virtualization/forms/bulk_import.py:80 +#: virtualization/forms/filtersets.py:61 +#: virtualization/forms/filtersets.py:156 virtualization/tables/clusters.py:74 +#: virtualization/tables/virtualmachines.py:50 vpn/forms/bulk_edit.py:38 +#: vpn/forms/bulk_import.py:37 vpn/forms/filtersets.py:46 +#: vpn/tables/tunnels.py:44 wireless/forms/bulk_edit.py:42 +#: wireless/forms/bulk_edit.py:104 wireless/forms/bulk_import.py:43 +#: wireless/forms/bulk_import.py:84 wireless/forms/filtersets.py:48 +#: wireless/forms/filtersets.py:82 wireless/tables/wirelesslan.py:52 +#: wireless/tables/wirelesslink.py:19 +msgid "Status" +msgstr "Статус" + +#: circuits/forms/bulk_edit.py:137 circuits/forms/bulk_import.py:100 +#: circuits/forms/filtersets.py:119 dcim/forms/bulk_edit.py:120 +#: dcim/forms/bulk_edit.py:185 dcim/forms/bulk_edit.py:255 +#: dcim/forms/bulk_edit.py:366 dcim/forms/bulk_edit.py:583 +#: dcim/forms/bulk_edit.py:684 dcim/forms/bulk_edit.py:1590 +#: dcim/forms/bulk_import.py:106 dcim/forms/bulk_import.py:151 +#: dcim/forms/bulk_import.py:187 dcim/forms/bulk_import.py:274 +#: dcim/forms/bulk_import.py:416 dcim/forms/bulk_import.py:1151 +#: dcim/forms/bulk_import.py:1356 dcim/forms/filtersets.py:165 +#: dcim/forms/filtersets.py:197 dcim/forms/filtersets.py:248 +#: dcim/forms/filtersets.py:333 dcim/forms/filtersets.py:354 +#: dcim/forms/filtersets.py:653 dcim/forms/filtersets.py:826 +#: dcim/forms/filtersets.py:891 dcim/forms/filtersets.py:921 +#: dcim/forms/filtersets.py:1043 dcim/tables/power.py:88 +#: extras/filtersets.py:517 extras/forms/filtersets.py:331 +#: extras/forms/filtersets.py:405 ipam/forms/bulk_edit.py:40 +#: ipam/forms/bulk_edit.py:65 ipam/forms/bulk_edit.py:109 +#: ipam/forms/bulk_edit.py:138 ipam/forms/bulk_edit.py:163 +#: ipam/forms/bulk_edit.py:235 ipam/forms/bulk_edit.py:284 +#: ipam/forms/bulk_edit.py:332 ipam/forms/bulk_edit.py:536 +#: ipam/forms/bulk_import.py:37 ipam/forms/bulk_import.py:66 +#: ipam/forms/bulk_import.py:94 ipam/forms/bulk_import.py:114 +#: ipam/forms/bulk_import.py:134 ipam/forms/bulk_import.py:163 +#: ipam/forms/bulk_import.py:249 ipam/forms/bulk_import.py:285 +#: ipam/forms/bulk_import.py:451 ipam/forms/filtersets.py:47 +#: ipam/forms/filtersets.py:67 ipam/forms/filtersets.py:99 +#: ipam/forms/filtersets.py:119 ipam/forms/filtersets.py:142 +#: ipam/forms/filtersets.py:169 ipam/forms/filtersets.py:256 +#: ipam/forms/filtersets.py:296 ipam/forms/filtersets.py:450 +#: ipam/tables/ip.py:451 ipam/tables/vlans.py:224 +#: templates/circuits/circuit.html:39 templates/dcim/cable.html:24 +#: templates/dcim/device.html:81 templates/dcim/location.html:52 +#: templates/dcim/powerfeed.html:47 templates/dcim/rack.html:37 +#: templates/dcim/rackreservation.html:56 templates/dcim/site.html:47 +#: templates/dcim/virtualdevicecontext.html:55 +#: templates/ipam/aggregate.html:31 templates/ipam/asn.html:34 +#: templates/ipam/asnrange.html:30 templates/ipam/ipaddress.html:31 +#: templates/ipam/iprange.html:61 templates/ipam/prefix.html:30 +#: templates/ipam/routetarget.html:18 templates/ipam/vlan.html:42 +#: templates/ipam/vrf.html:23 templates/tenancy/tenant.html:17 +#: templates/virtualization/cluster.html:36 +#: templates/virtualization/virtualmachine.html:38 templates/vpn/l2vpn.html:31 +#: templates/vpn/tunnel.html:50 templates/wireless/wirelesslan.html:35 +#: templates/wireless/wirelesslink.html:28 tenancy/forms/forms.py:25 +#: tenancy/forms/forms.py:48 tenancy/forms/model_forms.py:53 +#: tenancy/tables/columns.py:64 virtualization/forms/bulk_edit.py:75 +#: virtualization/forms/bulk_edit.py:154 +#: virtualization/forms/bulk_import.py:66 +#: virtualization/forms/bulk_import.py:115 +#: virtualization/forms/filtersets.py:46 +#: virtualization/forms/filtersets.py:101 vpn/forms/bulk_edit.py:58 +#: vpn/forms/bulk_edit.py:272 vpn/forms/bulk_import.py:59 +#: vpn/forms/bulk_import.py:253 vpn/forms/filtersets.py:211 +#: wireless/forms/bulk_edit.py:62 wireless/forms/bulk_edit.py:109 +#: wireless/forms/bulk_import.py:55 wireless/forms/bulk_import.py:97 +#: wireless/forms/filtersets.py:34 wireless/forms/filtersets.py:74 +msgid "Tenant" +msgstr "Арендатор" + +#: circuits/forms/bulk_edit.py:142 circuits/forms/filtersets.py:174 +msgid "Install date" +msgstr "Дата установки" + +#: circuits/forms/bulk_edit.py:147 circuits/forms/filtersets.py:179 +msgid "Termination date" +msgstr "Дата увольнения" + +#: circuits/forms/bulk_edit.py:153 circuits/forms/filtersets.py:186 +msgid "Commit rate (Kbps)" +msgstr "Скорость коммитирования (Кбит/с)" + +#: circuits/forms/bulk_edit.py:168 circuits/forms/model_forms.py:111 +msgid "Service Parameters" +msgstr "Параметры сервиса" + +#: circuits/forms/bulk_edit.py:169 circuits/forms/model_forms.py:112 +#: dcim/forms/model_forms.py:141 dcim/forms/model_forms.py:183 +#: dcim/forms/model_forms.py:260 dcim/forms/model_forms.py:672 +#: dcim/forms/model_forms.py:1478 ipam/forms/model_forms.py:61 +#: ipam/forms/model_forms.py:114 ipam/forms/model_forms.py:135 +#: ipam/forms/model_forms.py:159 ipam/forms/model_forms.py:231 +#: ipam/forms/model_forms.py:257 netbox/navigation/menu.py:38 +#: templates/dcim/cable_edit.html:68 templates/dcim/device_edit.html:85 +#: templates/dcim/rack_edit.html:30 templates/ipam/ipaddress_bulk_add.html:27 +#: templates/ipam/ipaddress_edit.html:27 templates/ipam/vlan_edit.html:22 +#: virtualization/forms/model_forms.py:83 +#: virtualization/forms/model_forms.py:225 vpn/forms/bulk_edit.py:77 +#: vpn/forms/filtersets.py:43 vpn/forms/model_forms.py:61 +#: vpn/forms/model_forms.py:146 vpn/forms/model_forms.py:404 +#: wireless/forms/model_forms.py:55 wireless/forms/model_forms.py:160 +msgid "Tenancy" +msgstr "Сдача в аренду" + +#: circuits/forms/bulk_import.py:38 circuits/forms/bulk_import.py:53 +#: circuits/forms/bulk_import.py:79 +msgid "Assigned provider" +msgstr "Назначенный поставщик" + +#: circuits/forms/bulk_import.py:70 dcim/forms/bulk_import.py:170 +#: dcim/forms/bulk_import.py:380 dcim/forms/bulk_import.py:1092 +#: dcim/forms/bulk_import.py:1171 extras/forms/bulk_import.py:229 +msgid "RGB color in hexadecimal. Example:" +msgstr "Цвет RGB в шестнадцатеричном формате. Пример:" + +#: circuits/forms/bulk_import.py:85 +msgid "Assigned provider account" +msgstr "Учетная запись назначенного поставщика" + +#: circuits/forms/bulk_import.py:92 +msgid "Type of circuit" +msgstr "Тип схемы" + +#: circuits/forms/bulk_import.py:97 dcim/forms/bulk_import.py:89 +#: dcim/forms/bulk_import.py:148 dcim/forms/bulk_import.py:196 +#: dcim/forms/bulk_import.py:444 dcim/forms/bulk_import.py:598 +#: dcim/forms/bulk_import.py:1301 ipam/forms/bulk_import.py:193 +#: ipam/forms/bulk_import.py:258 ipam/forms/bulk_import.py:294 +#: ipam/forms/bulk_import.py:460 virtualization/forms/bulk_import.py:56 +#: virtualization/forms/bulk_import.py:82 vpn/forms/bulk_import.py:39 +msgid "Operational status" +msgstr "Эксплуатационный статус" + +#: circuits/forms/bulk_import.py:104 dcim/forms/bulk_import.py:110 +#: dcim/forms/bulk_import.py:155 dcim/forms/bulk_import.py:278 +#: dcim/forms/bulk_import.py:420 dcim/forms/bulk_import.py:1155 +#: dcim/forms/bulk_import.py:1296 ipam/forms/bulk_import.py:41 +#: ipam/forms/bulk_import.py:70 ipam/forms/bulk_import.py:98 +#: ipam/forms/bulk_import.py:118 ipam/forms/bulk_import.py:138 +#: ipam/forms/bulk_import.py:167 ipam/forms/bulk_import.py:253 +#: ipam/forms/bulk_import.py:289 ipam/forms/bulk_import.py:455 +#: virtualization/forms/bulk_import.py:70 +#: virtualization/forms/bulk_import.py:119 vpn/forms/bulk_import.py:63 +#: wireless/forms/bulk_import.py:59 wireless/forms/bulk_import.py:101 +msgid "Assigned tenant" +msgstr "Назначение арендатора" + +#: circuits/forms/bulk_import.py:123 circuits/forms/filtersets.py:147 +#: circuits/forms/model_forms.py:143 +msgid "Provider network" +msgstr "Сеть провайдеров" + +#: circuits/forms/filtersets.py:26 circuits/forms/filtersets.py:118 +#: dcim/forms/bulk_edit.py:247 dcim/forms/bulk_edit.py:345 +#: dcim/forms/bulk_edit.py:575 dcim/forms/bulk_edit.py:622 +#: dcim/forms/bulk_edit.py:772 dcim/forms/bulk_import.py:181 +#: dcim/forms/bulk_import.py:255 dcim/forms/bulk_import.py:483 +#: dcim/forms/bulk_import.py:1245 dcim/forms/bulk_import.py:1279 +#: dcim/forms/filtersets.py:92 dcim/forms/filtersets.py:245 +#: dcim/forms/filtersets.py:278 dcim/forms/filtersets.py:330 +#: dcim/forms/filtersets.py:381 dcim/forms/filtersets.py:650 +#: dcim/forms/filtersets.py:689 dcim/forms/filtersets.py:890 +#: dcim/forms/filtersets.py:919 dcim/forms/filtersets.py:939 +#: dcim/forms/filtersets.py:1003 dcim/forms/filtersets.py:1033 +#: dcim/forms/filtersets.py:1042 dcim/forms/filtersets.py:1153 +#: dcim/forms/filtersets.py:1175 dcim/forms/filtersets.py:1197 +#: dcim/forms/filtersets.py:1214 dcim/forms/filtersets.py:1234 +#: dcim/forms/filtersets.py:1342 dcim/forms/filtersets.py:1364 +#: dcim/forms/filtersets.py:1385 dcim/forms/filtersets.py:1400 +#: dcim/forms/filtersets.py:1411 dcim/forms/model_forms.py:182 +#: dcim/forms/model_forms.py:216 dcim/forms/model_forms.py:402 +#: dcim/forms/model_forms.py:635 dcim/tables/devices.py:190 +#: dcim/tables/power.py:30 dcim/tables/racks.py:58 dcim/tables/racks.py:143 +#: extras/filtersets.py:441 extras/forms/filtersets.py:328 +#: ipam/forms/bulk_edit.py:456 ipam/forms/filtersets.py:168 +#: ipam/forms/filtersets.py:400 ipam/forms/filtersets.py:422 +#: ipam/forms/filtersets.py:448 ipam/forms/model_forms.py:560 +#: templates/dcim/device.html:26 templates/dcim/device_edit.html:30 +#: templates/dcim/inc/cable_termination.html:12 +#: templates/dcim/location.html:27 templates/dcim/powerpanel.html:27 +#: templates/dcim/rack.html:29 templates/dcim/rackreservation.html:35 +#: virtualization/forms/filtersets.py:45 virtualization/forms/filtersets.py:99 +#: wireless/forms/model_forms.py:88 wireless/forms/model_forms.py:128 +msgid "Location" +msgstr "Местоположение" + +#: circuits/forms/filtersets.py:27 ipam/forms/model_forms.py:158 +#: ipam/models/asns.py:108 ipam/models/asns.py:125 ipam/tables/asn.py:41 +#: templates/ipam/asn.html:20 +msgid "ASN" +msgstr "ЗОЛ" + +#: circuits/forms/filtersets.py:28 circuits/forms/filtersets.py:120 +#: dcim/forms/filtersets.py:136 dcim/forms/filtersets.py:150 +#: dcim/forms/filtersets.py:166 dcim/forms/filtersets.py:198 +#: dcim/forms/filtersets.py:249 dcim/forms/filtersets.py:334 +#: dcim/forms/filtersets.py:408 dcim/forms/filtersets.py:654 +#: dcim/forms/filtersets.py:1004 netbox/navigation/menu.py:45 +#: netbox/navigation/menu.py:47 tenancy/tables/columns.py:70 +#: tenancy/tables/contacts.py:25 tenancy/views.py:18 +#: virtualization/forms/filtersets.py:36 virtualization/forms/filtersets.py:47 +#: virtualization/forms/filtersets.py:102 +msgid "Contacts" +msgstr "Контакты" + +#: circuits/forms/filtersets.py:33 circuits/forms/filtersets.py:157 +#: dcim/forms/bulk_edit.py:110 dcim/forms/bulk_edit.py:222 +#: dcim/forms/bulk_edit.py:747 dcim/forms/bulk_import.py:92 +#: dcim/forms/filtersets.py:70 dcim/forms/filtersets.py:177 +#: dcim/forms/filtersets.py:203 dcim/forms/filtersets.py:256 +#: dcim/forms/filtersets.py:359 dcim/forms/filtersets.py:666 +#: dcim/forms/filtersets.py:896 dcim/forms/filtersets.py:926 +#: dcim/forms/filtersets.py:1010 dcim/forms/filtersets.py:1049 +#: dcim/forms/filtersets.py:1460 dcim/forms/filtersets.py:1484 +#: dcim/forms/filtersets.py:1508 dcim/forms/model_forms.py:80 +#: dcim/forms/model_forms.py:115 dcim/forms/object_create.py:374 +#: dcim/tables/devices.py:176 dcim/tables/sites.py:85 extras/filtersets.py:408 +#: ipam/forms/bulk_edit.py:205 ipam/forms/bulk_edit.py:437 +#: ipam/forms/bulk_edit.py:509 ipam/forms/filtersets.py:212 +#: ipam/forms/filtersets.py:407 ipam/forms/filtersets.py:456 +#: ipam/forms/model_forms.py:532 templates/dcim/device.html:18 +#: templates/dcim/rack.html:19 templates/dcim/rackreservation.html:25 +#: templates/dcim/region.html:26 templates/dcim/site.html:31 +#: templates/ipam/prefix.html:50 templates/ipam/vlan.html:19 +#: virtualization/forms/bulk_edit.py:80 virtualization/forms/filtersets.py:58 +#: virtualization/forms/filtersets.py:129 +#: virtualization/forms/model_forms.py:95 vpn/forms/filtersets.py:253 +msgid "Region" +msgstr "Регион" + +#: circuits/forms/filtersets.py:38 circuits/forms/filtersets.py:162 +#: dcim/forms/bulk_edit.py:230 dcim/forms/bulk_edit.py:755 +#: dcim/forms/filtersets.py:75 dcim/forms/filtersets.py:182 +#: dcim/forms/filtersets.py:208 dcim/forms/filtersets.py:269 +#: dcim/forms/filtersets.py:364 dcim/forms/filtersets.py:671 +#: dcim/forms/filtersets.py:901 dcim/forms/filtersets.py:1015 +#: dcim/forms/filtersets.py:1054 dcim/forms/object_create.py:382 +#: extras/filtersets.py:425 ipam/forms/bulk_edit.py:210 +#: ipam/forms/bulk_edit.py:444 ipam/forms/bulk_edit.py:514 +#: ipam/forms/filtersets.py:217 ipam/forms/filtersets.py:412 +#: ipam/forms/filtersets.py:461 ipam/forms/model_forms.py:545 +#: virtualization/forms/bulk_edit.py:85 virtualization/forms/filtersets.py:68 +#: virtualization/forms/filtersets.py:134 +#: virtualization/forms/model_forms.py:101 +msgid "Site group" +msgstr "Группа сайта" + +#: circuits/forms/filtersets.py:51 +msgid "ASN (legacy)" +msgstr "ASN (устаревшая версия)" + +#: circuits/forms/filtersets.py:65 circuits/forms/filtersets.py:83 +#: circuits/forms/filtersets.py:102 circuits/forms/filtersets.py:117 +#: core/forms/filtersets.py:63 dcim/forms/bulk_edit.py:718 +#: dcim/forms/filtersets.py:164 dcim/forms/filtersets.py:196 +#: dcim/forms/filtersets.py:825 dcim/forms/filtersets.py:920 +#: dcim/forms/filtersets.py:1044 dcim/forms/filtersets.py:1152 +#: dcim/forms/filtersets.py:1174 dcim/forms/filtersets.py:1196 +#: dcim/forms/filtersets.py:1213 dcim/forms/filtersets.py:1230 +#: dcim/forms/filtersets.py:1341 dcim/forms/filtersets.py:1363 +#: dcim/forms/filtersets.py:1384 dcim/forms/filtersets.py:1399 +#: dcim/forms/filtersets.py:1410 extras/forms/filtersets.py:40 +#: extras/forms/filtersets.py:111 extras/forms/filtersets.py:142 +#: extras/forms/filtersets.py:182 extras/forms/filtersets.py:198 +#: extras/forms/filtersets.py:229 extras/forms/filtersets.py:253 +#: extras/forms/filtersets.py:450 extras/forms/filtersets.py:491 +#: ipam/forms/filtersets.py:98 ipam/forms/filtersets.py:255 +#: ipam/forms/filtersets.py:294 ipam/forms/filtersets.py:368 +#: ipam/forms/filtersets.py:449 ipam/forms/filtersets.py:508 +#: ipam/forms/filtersets.py:526 netbox/tables/tables.py:250 +#: virtualization/forms/filtersets.py:44 +#: virtualization/forms/filtersets.py:100 +#: virtualization/forms/filtersets.py:190 +#: virtualization/forms/filtersets.py:235 vpn/forms/filtersets.py:210 +#: wireless/forms/filtersets.py:33 wireless/forms/filtersets.py:73 +msgid "Attributes" +msgstr "Атрибуты" + +#: circuits/forms/filtersets.py:73 circuits/tables/circuits.py:60 +#: circuits/tables/providers.py:66 templates/circuits/circuit.html:23 +#: templates/circuits/provideraccount.html:25 +msgid "Account" +msgstr "Аккаунт" + +#: circuits/forms/model_forms.py:64 +#: templates/circuits/circuittermination_edit.html:23 +#: templates/circuits/inc/circuit_termination.html:89 +#: templates/circuits/providernetwork.html:18 +msgid "Provider Network" +msgstr "Сеть провайдеров" + +#: circuits/forms/model_forms.py:78 templates/circuits/circuittype.html:20 +msgid "Circuit Type" +msgstr "Тип цепи" + +#: circuits/models/circuits.py:25 dcim/models/cables.py:67 +#: dcim/models/device_component_templates.py:491 +#: dcim/models/device_component_templates.py:591 +#: dcim/models/device_components.py:976 dcim/models/device_components.py:1050 +#: dcim/models/device_components.py:1166 dcim/models/devices.py:467 +#: dcim/models/racks.py:43 extras/models/tags.py:28 +msgid "color" +msgstr "цвет" + +#: circuits/models/circuits.py:34 +msgid "circuit type" +msgstr "тип схемы" + +#: circuits/models/circuits.py:35 +msgid "circuit types" +msgstr "типы цепей" + +#: circuits/models/circuits.py:46 +msgid "circuit ID" +msgstr "идентификатор цепи" + +#: circuits/models/circuits.py:47 +msgid "Unique circuit ID" +msgstr "Уникальный идентификатор схемы" + +#: circuits/models/circuits.py:67 core/models/data.py:54 +#: core/models/jobs.py:85 dcim/models/cables.py:49 dcim/models/devices.py:641 +#: dcim/models/devices.py:1165 dcim/models/devices.py:1374 +#: dcim/models/power.py:95 dcim/models/racks.py:97 dcim/models/sites.py:154 +#: dcim/models/sites.py:266 ipam/models/ip.py:252 ipam/models/ip.py:521 +#: ipam/models/ip.py:729 ipam/models/vlans.py:175 +#: virtualization/models/clusters.py:74 +#: virtualization/models/virtualmachines.py:82 vpn/models/tunnels.py:40 +#: wireless/models.py:94 wireless/models.py:158 +msgid "status" +msgstr "статус" + +#: circuits/models/circuits.py:82 +msgid "installed" +msgstr "установлены" + +#: circuits/models/circuits.py:87 +msgid "terminates" +msgstr "завершаясь" + +#: circuits/models/circuits.py:92 +msgid "commit rate (Kbps)" +msgstr "скорость коммитирования (Кбит/с)" + +#: circuits/models/circuits.py:93 +msgid "Committed rate" +msgstr "Подтвержденная ставка" + +#: circuits/models/circuits.py:135 +msgid "circuit" +msgstr "схема" + +#: circuits/models/circuits.py:136 +msgid "circuits" +msgstr "схемы" + +#: circuits/models/circuits.py:169 +msgid "termination" +msgstr "прекращение" + +#: circuits/models/circuits.py:186 +msgid "port speed (Kbps)" +msgstr "скорость порта (Кбит/с)" + +#: circuits/models/circuits.py:189 +msgid "Physical circuit speed" +msgstr "Физическая скорость цепи" + +#: circuits/models/circuits.py:194 +msgid "upstream speed (Kbps)" +msgstr "скорость восходящего потока (Кбит/с)" + +#: circuits/models/circuits.py:195 +msgid "Upstream speed, if different from port speed" +msgstr "Скорость восходящего потока, если она отличается от скорости порта" + +#: circuits/models/circuits.py:200 +msgid "cross-connect ID" +msgstr "идентификатор кросс-соединения" + +#: circuits/models/circuits.py:201 +msgid "ID of the local cross-connect" +msgstr "Идентификатор локального кросс-соединения" + +#: circuits/models/circuits.py:206 +msgid "patch panel/port(s)" +msgstr "патч-панель/порт (ы)" + +#: circuits/models/circuits.py:207 +msgid "Patch panel ID and port number(s)" +msgstr "Идентификатор патч-панели и номера портов" + +#: circuits/models/circuits.py:210 +#: dcim/models/device_component_templates.py:61 +#: dcim/models/device_components.py:69 dcim/models/racks.py:537 +#: extras/models/configs.py:45 extras/models/configs.py:219 +#: extras/models/customfields.py:122 extras/models/models.py:58 +#: extras/models/models.py:188 extras/models/models.py:426 +#: extras/models/models.py:541 extras/models/staging.py:31 +#: extras/models/tags.py:32 netbox/models/__init__.py:109 +#: netbox/models/__init__.py:144 netbox/models/__init__.py:190 +#: users/models.py:273 users/models.py:348 +#: virtualization/models/virtualmachines.py:282 +msgid "description" +msgstr "описание" + +#: circuits/models/circuits.py:223 +msgid "circuit termination" +msgstr "прекращение цепи" + +#: circuits/models/circuits.py:224 +msgid "circuit terminations" +msgstr "концевые разъемы" + +#: circuits/models/providers.py:22 circuits/models/providers.py:66 +#: circuits/models/providers.py:104 core/models/data.py:41 +#: core/models/jobs.py:46 dcim/models/device_component_templates.py:43 +#: dcim/models/device_components.py:54 dcim/models/devices.py:581 +#: dcim/models/devices.py:1305 dcim/models/devices.py:1370 +#: dcim/models/power.py:39 dcim/models/power.py:91 dcim/models/racks.py:62 +#: dcim/models/sites.py:138 extras/models/configs.py:36 +#: extras/models/configs.py:215 extras/models/customfields.py:89 +#: extras/models/models.py:53 extras/models/models.py:183 +#: extras/models/models.py:326 extras/models/models.py:422 +#: extras/models/models.py:531 extras/models/models.py:626 +#: extras/models/staging.py:26 ipam/models/asns.py:18 ipam/models/fhrp.py:25 +#: ipam/models/services.py:52 ipam/models/services.py:88 +#: ipam/models/vlans.py:26 ipam/models/vlans.py:164 ipam/models/vrfs.py:22 +#: ipam/models/vrfs.py:79 netbox/models/__init__.py:136 +#: netbox/models/__init__.py:180 tenancy/models/contacts.py:64 +#: tenancy/models/tenants.py:20 tenancy/models/tenants.py:45 +#: users/models.py:344 virtualization/models/clusters.py:57 +#: virtualization/models/virtualmachines.py:70 +#: virtualization/models/virtualmachines.py:272 vpn/models/crypto.py:24 +#: vpn/models/crypto.py:71 vpn/models/crypto.py:119 vpn/models/crypto.py:171 +#: vpn/models/crypto.py:209 vpn/models/l2vpn.py:22 vpn/models/tunnels.py:35 +#: wireless/models.py:50 +msgid "name" +msgstr "имя" + +#: circuits/models/providers.py:25 +msgid "Full name of the provider" +msgstr "Полное имя провайдера" + +#: circuits/models/providers.py:28 dcim/models/devices.py:86 +#: dcim/models/sites.py:149 extras/models/models.py:536 ipam/models/asns.py:23 +#: ipam/models/vlans.py:30 netbox/models/__init__.py:140 +#: netbox/models/__init__.py:185 tenancy/models/tenants.py:25 +#: tenancy/models/tenants.py:49 vpn/models/l2vpn.py:27 wireless/models.py:55 +msgid "slug" +msgstr "слизень" + +#: circuits/models/providers.py:42 +msgid "provider" +msgstr "поставщика" + +#: circuits/models/providers.py:43 +msgid "providers" +msgstr "провайдеры" + +#: circuits/models/providers.py:63 +msgid "account ID" +msgstr "идентификатор учетной записи" + +#: circuits/models/providers.py:86 +msgid "provider account" +msgstr "учетная запись провайдера" + +#: circuits/models/providers.py:87 +msgid "provider accounts" +msgstr "учетные записи поставщиков" + +#: circuits/models/providers.py:115 +msgid "service ID" +msgstr "идентификатор сервиса" + +#: circuits/models/providers.py:126 +msgid "provider network" +msgstr "сеть провайдеров" + +#: circuits/models/providers.py:127 +msgid "provider networks" +msgstr "сети провайдеров" + +#: circuits/tables/circuits.py:29 circuits/tables/providers.py:18 +#: circuits/tables/providers.py:69 circuits/tables/providers.py:99 +#: core/tables/data.py:16 core/tables/jobs.py:14 dcim/forms/filtersets.py:60 +#: dcim/forms/object_create.py:42 dcim/tables/devices.py:88 +#: dcim/tables/devices.py:125 dcim/tables/devices.py:167 +#: dcim/tables/devices.py:318 dcim/tables/devices.py:395 +#: dcim/tables/devices.py:439 dcim/tables/devices.py:491 +#: dcim/tables/devices.py:543 dcim/tables/devices.py:663 +#: dcim/tables/devices.py:744 dcim/tables/devices.py:794 +#: dcim/tables/devices.py:860 dcim/tables/devices.py:975 +#: dcim/tables/devices.py:995 dcim/tables/devices.py:1024 +#: dcim/tables/devices.py:1054 dcim/tables/devicetypes.py:32 +#: dcim/tables/power.py:22 dcim/tables/power.py:62 dcim/tables/racks.py:23 +#: dcim/tables/racks.py:53 dcim/tables/sites.py:24 dcim/tables/sites.py:51 +#: dcim/tables/sites.py:78 dcim/tables/sites.py:125 +#: extras/forms/filtersets.py:190 extras/tables/tables.py:40 +#: extras/tables/tables.py:83 extras/tables/tables.py:115 +#: extras/tables/tables.py:139 extras/tables/tables.py:204 +#: extras/tables/tables.py:251 extras/tables/tables.py:274 +#: extras/tables/tables.py:319 extras/tables/tables.py:371 +#: extras/tables/tables.py:394 ipam/forms/bulk_edit.py:390 +#: ipam/forms/filtersets.py:372 ipam/tables/asn.py:16 ipam/tables/ip.py:85 +#: ipam/tables/ip.py:159 ipam/tables/services.py:15 ipam/tables/services.py:40 +#: ipam/tables/vlans.py:64 ipam/tables/vlans.py:110 ipam/tables/vrfs.py:26 +#: ipam/tables/vrfs.py:67 templates/circuits/circuittype.html:25 +#: templates/circuits/provideraccount.html:29 +#: templates/circuits/providernetwork.html:27 +#: templates/core/datasource.html:35 templates/core/job.html:31 +#: templates/dcim/consoleport.html:31 templates/dcim/consoleserverport.html:31 +#: templates/dcim/devicebay.html:27 templates/dcim/devicerole.html:29 +#: templates/dcim/frontport.html:31 +#: templates/dcim/inc/interface_vlans_table.html:5 +#: templates/dcim/inc/panels/inventory_items.html:10 +#: templates/dcim/interface.html:39 templates/dcim/interface.html:171 +#: templates/dcim/inventoryitem.html:29 +#: templates/dcim/inventoryitemrole.html:19 templates/dcim/location.html:32 +#: templates/dcim/manufacturer.html:39 templates/dcim/modulebay.html:27 +#: templates/dcim/platform.html:32 templates/dcim/poweroutlet.html:31 +#: templates/dcim/powerport.html:31 templates/dcim/rackrole.html:25 +#: templates/dcim/rearport.html:31 templates/dcim/region.html:30 +#: templates/dcim/sitegroup.html:30 +#: templates/dcim/virtualdevicecontext.html:21 +#: templates/extras/admin/plugins_list.html:22 +#: templates/extras/configcontext.html:14 +#: templates/extras/configtemplate.html:14 +#: templates/extras/customfield.html:16 templates/extras/customlink.html:14 +#: templates/extras/eventrule.html:16 templates/extras/exporttemplate.html:21 +#: templates/extras/report_list.html:46 templates/extras/savedfilter.html:14 +#: templates/extras/script_list.html:52 templates/extras/tag.html:17 +#: templates/extras/webhook.html:16 templates/ipam/asnrange.html:16 +#: templates/ipam/fhrpgroup.html:31 templates/ipam/rir.html:25 +#: templates/ipam/role.html:25 templates/ipam/routetarget.html:14 +#: templates/ipam/service.html:27 templates/ipam/servicetemplate.html:16 +#: templates/ipam/vlan.html:38 templates/ipam/vlangroup.html:31 +#: templates/tenancy/contact.html:26 templates/tenancy/contactgroup.html:24 +#: templates/tenancy/contactrole.html:19 templates/tenancy/tenantgroup.html:32 +#: templates/users/group.html:18 templates/users/objectpermission.html:18 +#: templates/virtualization/cluster.html:16 +#: templates/virtualization/clustergroup.html:25 +#: templates/virtualization/clustertype.html:25 +#: templates/virtualization/virtualdisk.html:26 +#: templates/virtualization/virtualmachine.html:18 +#: templates/virtualization/vminterface.html:28 +#: templates/vpn/ikepolicy.html:14 templates/vpn/ikeproposal.html:14 +#: templates/vpn/ipsecpolicy.html:14 templates/vpn/ipsecprofile.html:14 +#: templates/vpn/ipsecprofile.html:39 templates/vpn/ipsecprofile.html:74 +#: templates/vpn/ipsecproposal.html:14 templates/vpn/l2vpn.html:15 +#: templates/vpn/tunnel.html:22 templates/vpn/tunnelgroup.html:29 +#: templates/wireless/wirelesslangroup.html:30 tenancy/tables/contacts.py:19 +#: tenancy/tables/contacts.py:41 tenancy/tables/contacts.py:56 +#: tenancy/tables/tenants.py:16 tenancy/tables/tenants.py:38 +#: users/tables.py:62 users/tables.py:79 +#: virtualization/forms/bulk_create.py:20 +#: virtualization/forms/object_create.py:13 +#: virtualization/forms/object_create.py:23 +#: virtualization/tables/clusters.py:17 virtualization/tables/clusters.py:39 +#: virtualization/tables/clusters.py:62 +#: virtualization/tables/virtualmachines.py:45 +#: virtualization/tables/virtualmachines.py:119 +#: virtualization/tables/virtualmachines.py:172 vpn/tables/crypto.py:18 +#: vpn/tables/crypto.py:57 vpn/tables/crypto.py:93 vpn/tables/crypto.py:129 +#: vpn/tables/crypto.py:158 vpn/tables/l2vpn.py:23 vpn/tables/tunnels.py:18 +#: vpn/tables/tunnels.py:40 wireless/tables/wirelesslan.py:18 +#: wireless/tables/wirelesslan.py:79 +msgid "Name" +msgstr "Имя" + +#: circuits/tables/circuits.py:38 circuits/tables/providers.py:45 +#: circuits/tables/providers.py:79 netbox/navigation/menu.py:254 +#: netbox/navigation/menu.py:258 netbox/navigation/menu.py:260 +#: templates/circuits/provider.html:61 +#: templates/circuits/provideraccount.html:46 +#: templates/circuits/providernetwork.html:54 +msgid "Circuits" +msgstr "Схемы" + +#: circuits/tables/circuits.py:52 templates/circuits/circuit.html:27 +msgid "Circuit ID" +msgstr "Идентификатор цепи" + +#: circuits/tables/circuits.py:65 wireless/forms/model_forms.py:157 +msgid "Side A" +msgstr "Сторона А" + +#: circuits/tables/circuits.py:69 +msgid "Side Z" +msgstr "Сторона Z" + +#: circuits/tables/circuits.py:72 templates/circuits/circuit.html:56 +msgid "Commit Rate" +msgstr "Процент коммитов" + +#: circuits/tables/circuits.py:75 circuits/tables/providers.py:48 +#: circuits/tables/providers.py:82 circuits/tables/providers.py:107 +#: dcim/tables/devices.py:1037 dcim/tables/devicetypes.py:92 +#: dcim/tables/modules.py:29 dcim/tables/modules.py:72 dcim/tables/power.py:39 +#: dcim/tables/power.py:96 dcim/tables/racks.py:76 dcim/tables/racks.py:156 +#: dcim/tables/sites.py:103 extras/forms/bulk_edit.py:320 +#: extras/tables/tables.py:485 ipam/tables/asn.py:69 ipam/tables/fhrp.py:34 +#: ipam/tables/ip.py:135 ipam/tables/ip.py:272 ipam/tables/ip.py:325 +#: ipam/tables/ip.py:392 ipam/tables/services.py:24 ipam/tables/services.py:54 +#: ipam/tables/vlans.py:141 ipam/tables/vrfs.py:46 ipam/tables/vrfs.py:71 +#: templates/dcim/cable_edit.html:85 templates/generic/bulk_edit.html:102 +#: templates/inc/panels/comments.html:6 tenancy/tables/contacts.py:68 +#: tenancy/tables/tenants.py:46 utilities/forms/fields/fields.py:29 +#: virtualization/tables/clusters.py:91 +#: virtualization/tables/virtualmachines.py:68 vpn/tables/crypto.py:37 +#: vpn/tables/crypto.py:74 vpn/tables/crypto.py:109 vpn/tables/crypto.py:140 +#: vpn/tables/crypto.py:173 vpn/tables/l2vpn.py:37 vpn/tables/tunnels.py:57 +#: wireless/tables/wirelesslan.py:27 wireless/tables/wirelesslan.py:58 +msgid "Comments" +msgstr "Комментарии" + +#: circuits/tables/providers.py:23 +msgid "Accounts" +msgstr "Счета" + +#: circuits/tables/providers.py:29 +msgid "Account Count" +msgstr "Количество учетных записей" + +#: circuits/tables/providers.py:39 dcim/tables/sites.py:100 +msgid "ASN Count" +msgstr "Количество ASN" + +#: core/choices.py:18 +msgid "New" +msgstr "Новое" + +#: core/choices.py:19 +msgid "Queued" +msgstr "В очереди" + +#: core/choices.py:20 +msgid "Syncing" +msgstr "Синхронизация" + +#: core/choices.py:21 core/choices.py:57 core/tables/jobs.py:41 +#: extras/choices.py:210 templates/core/job.html:75 +msgid "Completed" +msgstr "Завершено" + +#: core/choices.py:22 core/choices.py:59 dcim/choices.py:176 +#: dcim/choices.py:222 dcim/choices.py:1496 extras/choices.py:212 +#: virtualization/choices.py:47 +msgid "Failed" +msgstr "Не удалось" + +#: core/choices.py:35 netbox/navigation/menu.py:330 +#: templates/extras/script/base.html:14 templates/extras/script_list.html:6 +#: templates/extras/script_list.html:20 templates/extras/script_result.html:18 +msgid "Scripts" +msgstr "Сценарии" + +#: core/choices.py:36 netbox/navigation/menu.py:324 +#: templates/extras/report/base.html:13 templates/extras/report_list.html:7 +#: templates/extras/report_list.html:12 +msgid "Reports" +msgstr "Отчеты" + +#: core/choices.py:54 extras/choices.py:207 +msgid "Pending" +msgstr "В ожидании" + +#: core/choices.py:55 core/tables/jobs.py:32 extras/choices.py:208 +#: templates/core/job.html:62 +msgid "Scheduled" +msgstr "Запланировано" + +#: core/choices.py:56 extras/choices.py:209 +msgid "Running" +msgstr "Бег" + +#: core/choices.py:58 extras/choices.py:211 +msgid "Errored" +msgstr "Ошибка" + +#: core/data_backends.py:29 templates/dcim/interface.html:224 +msgid "Local" +msgstr "Местный" + +#: core/data_backends.py:47 extras/tables/tables.py:431 +#: templates/account/profile.html:16 templates/users/user.html:18 +#: users/tables.py:31 +msgid "Username" +msgstr "Имя пользователя" + +#: core/data_backends.py:49 core/data_backends.py:55 +msgid "Only used for cloning with HTTP(S)" +msgstr "Используется только для клонирования с помощью HTTP (S)" + +#: core/data_backends.py:53 templates/account/base.html:17 +#: templates/account/password.html:11 users/forms/model_forms.py:171 +msgid "Password" +msgstr "Пароль" + +#: core/data_backends.py:59 +msgid "Branch" +msgstr "Ветка" + +#: core/data_backends.py:118 +msgid "AWS access key ID" +msgstr "Идентификатор ключа доступа AWS" + +#: core/data_backends.py:122 +msgid "AWS secret access key" +msgstr "Секретный ключ доступа AWS" + +#: core/filtersets.py:49 extras/filtersets.py:203 extras/filtersets.py:538 +#: extras/filtersets.py:566 +msgid "Data source (ID)" +msgstr "Источник данных (ID)" + +#: core/filtersets.py:55 +msgid "Data source (name)" +msgstr "Источник данных (имя)" + +#: core/forms/bulk_edit.py:24 ipam/forms/bulk_edit.py:47 +msgid "Enforce unique space" +msgstr "Обеспечьте уникальное пространство" + +#: core/forms/bulk_edit.py:33 extras/forms/model_forms.py:202 +#: templates/extras/savedfilter.html:57 vpn/forms/filtersets.py:95 +#: vpn/forms/filtersets.py:124 vpn/forms/filtersets.py:148 +#: vpn/forms/filtersets.py:167 vpn/forms/model_forms.py:294 +#: vpn/forms/model_forms.py:315 vpn/forms/model_forms.py:329 +#: vpn/forms/model_forms.py:350 vpn/forms/model_forms.py:373 +msgid "Parameters" +msgstr "параметры" + +#: core/forms/bulk_edit.py:37 templates/core/datasource.html:69 +msgid "Ignore rules" +msgstr "Игнорируйте правила" + +#: core/forms/filtersets.py:26 core/forms/model_forms.py:95 +#: extras/forms/model_forms.py:165 extras/forms/model_forms.py:455 +#: extras/forms/model_forms.py:508 extras/tables/tables.py:149 +#: extras/tables/tables.py:363 extras/tables/tables.py:398 +#: templates/core/datasource.html:31 +#: templates/dcim/device/render_config.html:19 +#: templates/extras/configcontext.html:30 +#: templates/extras/configtemplate.html:22 +#: templates/extras/exporttemplate.html:41 +#: templates/virtualization/virtualmachine/render_config.html:19 +msgid "Data Source" +msgstr "Источник данных" + +#: core/forms/filtersets.py:39 core/tables/data.py:26 +#: dcim/forms/bulk_edit.py:1012 dcim/forms/bulk_edit.py:1285 +#: dcim/forms/filtersets.py:1270 dcim/tables/devices.py:568 +#: dcim/tables/devicetypes.py:221 extras/forms/bulk_edit.py:97 +#: extras/forms/bulk_edit.py:161 extras/forms/bulk_edit.py:220 +#: extras/forms/filtersets.py:119 extras/forms/filtersets.py:206 +#: extras/forms/filtersets.py:267 extras/tables/tables.py:122 +#: extras/tables/tables.py:211 extras/tables/tables.py:284 +#: templates/core/datasource.html:43 templates/dcim/interface.html:62 +#: templates/extras/customlink.html:18 templates/extras/eventrule.html:20 +#: templates/extras/savedfilter.html:26 +#: templates/users/objectpermission.html:26 +#: templates/virtualization/vminterface.html:32 users/forms/bulk_edit.py:69 +#: users/forms/filtersets.py:71 users/tables.py:86 +#: virtualization/forms/bulk_edit.py:216 +#: virtualization/forms/filtersets.py:207 +msgid "Enabled" +msgstr "Включено" + +#: core/forms/filtersets.py:51 core/forms/mixins.py:21 +msgid "File" +msgstr "Файл" + +#: core/forms/filtersets.py:56 core/forms/mixins.py:16 +#: extras/forms/filtersets.py:147 extras/forms/filtersets.py:336 +#: extras/forms/filtersets.py:422 +msgid "Data source" +msgstr "Источник данных" + +#: core/forms/filtersets.py:64 extras/forms/filtersets.py:449 +msgid "Creation" +msgstr "Творчество" + +#: core/forms/filtersets.py:70 extras/forms/filtersets.py:473 +#: extras/forms/filtersets.py:519 extras/tables/tables.py:474 +#: templates/core/job.html:25 templates/extras/objectchange.html:56 +#: tenancy/tables/contacts.py:90 vpn/tables/l2vpn.py:59 +msgid "Object Type" +msgstr "Тип объекта" + +#: core/forms/filtersets.py:80 +msgid "Created after" +msgstr "Создано после" + +#: core/forms/filtersets.py:85 +msgid "Created before" +msgstr "Создано ранее" + +#: core/forms/filtersets.py:90 +msgid "Scheduled after" +msgstr "Запланировано позже" + +#: core/forms/filtersets.py:95 +msgid "Scheduled before" +msgstr "Запланировано ранее" + +#: core/forms/filtersets.py:100 +msgid "Started after" +msgstr "Началось после" + +#: core/forms/filtersets.py:105 +msgid "Started before" +msgstr "Начиналось раньше" + +#: core/forms/filtersets.py:110 +msgid "Completed after" +msgstr "Завершено после" + +#: core/forms/filtersets.py:115 +msgid "Completed before" +msgstr "Выполнено ранее" + +#: core/forms/filtersets.py:122 dcim/forms/bulk_edit.py:359 +#: dcim/forms/filtersets.py:352 dcim/forms/filtersets.py:396 +#: dcim/forms/model_forms.py:251 extras/forms/filtersets.py:465 +#: extras/forms/filtersets.py:511 templates/dcim/rackreservation.html:65 +#: templates/extras/objectchange.html:40 templates/extras/savedfilter.html:22 +#: templates/users/token.html:22 templates/users/user.html:6 +#: templates/users/user.html:14 users/filtersets.py:74 users/filtersets.py:134 +#: users/forms/filtersets.py:85 users/forms/filtersets.py:126 +#: users/forms/model_forms.py:156 users/forms/model_forms.py:194 +#: users/tables.py:19 +msgid "User" +msgstr "Пользователь" + +#: core/forms/model_forms.py:52 core/tables/data.py:46 +#: templates/core/datafile.html:36 templates/extras/report/base.html:33 +#: templates/extras/script/base.html:32 templates/extras/script_result.html:45 +msgid "Source" +msgstr "Источник" + +#: core/forms/model_forms.py:56 +msgid "Backend Parameters" +msgstr "Параметры бэкенда" + +#: core/forms/model_forms.py:94 +msgid "File Upload" +msgstr "Загрузка файла" + +#: core/forms/model_forms.py:147 templates/core/configrevision.html:43 +#: templates/dcim/rack_elevation_list.html:6 +msgid "Rack Elevations" +msgstr "Высота стеллажей" + +#: core/forms/model_forms.py:148 dcim/choices.py:1407 +#: dcim/forms/bulk_edit.py:859 dcim/forms/bulk_edit.py:1242 +#: dcim/forms/bulk_edit.py:1260 dcim/tables/racks.py:89 +#: netbox/navigation/menu.py:276 netbox/navigation/menu.py:280 +msgid "Power" +msgstr "Мощность" + +#: core/forms/model_forms.py:149 netbox/navigation/menu.py:142 +#: templates/core/configrevision.html:79 +msgid "IPAM" +msgstr "ИПАМ" + +#: core/forms/model_forms.py:150 netbox/navigation/menu.py:218 +#: templates/core/configrevision.html:95 vpn/forms/bulk_edit.py:76 +#: vpn/forms/filtersets.py:42 vpn/forms/model_forms.py:60 +#: vpn/forms/model_forms.py:145 +msgid "Security" +msgstr "Охрана" + +#: core/forms/model_forms.py:151 templates/core/configrevision.html:107 +msgid "Banners" +msgstr "Баннеры" + +#: core/forms/model_forms.py:152 templates/core/configrevision.html:131 +msgid "Pagination" +msgstr "Разбивка на страницы" + +#: core/forms/model_forms.py:153 extras/forms/model_forms.py:63 +#: templates/core/configrevision.html:147 +msgid "Validation" +msgstr "Валидация" + +#: core/forms/model_forms.py:154 templates/account/preferences.html:6 +#: templates/core/configrevision.html:175 +msgid "User Preferences" +msgstr "Пользовательские предпочтения" + +#: core/forms/model_forms.py:155 dcim/forms/filtersets.py:658 +#: templates/core/configrevision.html:193 users/forms/model_forms.py:63 +msgid "Miscellaneous" +msgstr "Разное" + +#: core/forms/model_forms.py:158 +msgid "Config Revision" +msgstr "Редакция конфигурации" + +#: core/forms/model_forms.py:197 +msgid "This parameter has been defined statically and cannot be modified." +msgstr "Этот параметр определен статически и не может быть изменен." + +#: core/forms/model_forms.py:205 +#, python-brace-format +msgid "Current value: {value}" +msgstr "Текущее значение: {value}" + +#: core/forms/model_forms.py:207 +msgid " (default)" +msgstr " (по умолчанию)" + +#: core/models/config.py:18 core/models/data.py:259 core/models/files.py:27 +#: core/models/jobs.py:50 extras/models/models.py:760 +#: netbox/models/features.py:52 users/models.py:248 +msgid "created" +msgstr "созданный" + +#: core/models/config.py:22 +msgid "comment" +msgstr "комментарий" + +#: core/models/config.py:29 +msgid "configuration data" +msgstr "конфигурационные данные" + +#: core/models/config.py:36 +msgid "config revision" +msgstr "ревизия конфигурации" + +#: core/models/config.py:37 +msgid "config revisions" +msgstr "ревизии конфигурации" + +#: core/models/config.py:41 +msgid "Default configuration" +msgstr "Конфигурация по умолчанию" + +#: core/models/config.py:43 +msgid "Current configuration" +msgstr "Текущая конфигурация" + +#: core/models/config.py:44 +#, python-brace-format +msgid "Config revision #{id}" +msgstr "Версия конфигурации #{id}" + +#: core/models/data.py:46 dcim/models/cables.py:43 +#: dcim/models/device_component_templates.py:177 +#: dcim/models/device_component_templates.py:211 +#: dcim/models/device_component_templates.py:246 +#: dcim/models/device_component_templates.py:308 +#: dcim/models/device_component_templates.py:387 +#: dcim/models/device_component_templates.py:486 +#: dcim/models/device_component_templates.py:586 +#: dcim/models/device_components.py:284 dcim/models/device_components.py:313 +#: dcim/models/device_components.py:346 dcim/models/device_components.py:464 +#: dcim/models/device_components.py:606 dcim/models/device_components.py:971 +#: dcim/models/device_components.py:1045 dcim/models/power.py:101 +#: dcim/models/racks.py:127 extras/models/customfields.py:75 +#: extras/models/search.py:43 virtualization/models/clusters.py:61 +#: vpn/models/l2vpn.py:32 +msgid "type" +msgstr "типа" + +#: core/models/data.py:51 extras/choices.py:34 extras/models/models.py:194 +#: templates/core/datasource.html:59 +msgid "URL" +msgstr "URL" + +#: core/models/data.py:61 dcim/models/device_component_templates.py:392 +#: dcim/models/device_components.py:513 extras/models/models.py:88 +#: extras/models/models.py:331 extras/models/models.py:556 users/models.py:353 +msgid "enabled" +msgstr "включен" + +#: core/models/data.py:65 +msgid "ignore rules" +msgstr "игнорировать правила" + +#: core/models/data.py:67 +msgid "Patterns (one per line) matching files to ignore when syncing" +msgstr "" +"Шаблоны (по одному в строке), соответствующие файлам, которые следует " +"игнорировать при синхронизации" + +#: core/models/data.py:70 extras/models/models.py:564 +msgid "parameters" +msgstr "параметры" + +#: core/models/data.py:75 +msgid "last synced" +msgstr "последняя синхронизация" + +#: core/models/data.py:83 +msgid "data source" +msgstr "источник данных" + +#: core/models/data.py:84 +msgid "data sources" +msgstr "источники данных" + +#: core/models/data.py:124 +#, python-brace-format +msgid "Unknown backend type: {type}" +msgstr "Неизвестный тип бэкэнда: {type}" + +#: core/models/data.py:263 core/models/files.py:31 +#: netbox/models/features.py:58 +msgid "last updated" +msgstr "последнее обновление" + +#: core/models/data.py:273 dcim/models/cables.py:430 +msgid "path" +msgstr "дорожка" + +#: core/models/data.py:276 +msgid "File path relative to the data source's root" +msgstr "Путь к файлу относительно корня источника данных" + +#: core/models/data.py:280 ipam/models/ip.py:502 +msgid "size" +msgstr "размер" + +#: core/models/data.py:283 +msgid "hash" +msgstr "нарубить" + +#: core/models/data.py:287 +msgid "Length must be 64 hexadecimal characters." +msgstr "Длина должна быть 64 шестнадцатеричных символа." + +#: core/models/data.py:289 +msgid "SHA256 hash of the file data" +msgstr "Хэш SHA256 данных файла" + +#: core/models/data.py:306 +msgid "data file" +msgstr "файл данных" + +#: core/models/data.py:307 +msgid "data files" +msgstr "файлы данных" + +#: core/models/data.py:393 +msgid "auto sync record" +msgstr "запись автоматической синхронизации" + +#: core/models/data.py:394 +msgid "auto sync records" +msgstr "автоматическая синхронизация записей" + +#: core/models/files.py:37 +msgid "file root" +msgstr "корень файла" + +#: core/models/files.py:42 +msgid "file path" +msgstr "путь к файлу" + +#: core/models/files.py:44 +msgid "File path relative to the designated root path" +msgstr "Путь к файлу относительно указанного корневого пути" + +#: core/models/files.py:61 +msgid "managed file" +msgstr "управляемый файл" + +#: core/models/files.py:62 +msgid "managed files" +msgstr "управляемые файлы" + +#: core/models/jobs.py:54 +msgid "scheduled" +msgstr "по расписанию" + +#: core/models/jobs.py:59 +msgid "interval" +msgstr "интервал" + +#: core/models/jobs.py:65 +msgid "Recurrence interval (in minutes)" +msgstr "Интервал повторения (в минутах)" + +#: core/models/jobs.py:68 +msgid "started" +msgstr "начали" + +#: core/models/jobs.py:73 +msgid "completed" +msgstr "завершил" + +#: core/models/jobs.py:91 extras/models/models.py:123 +#: extras/models/staging.py:87 +msgid "data" +msgstr "данные" + +#: core/models/jobs.py:96 +msgid "error" +msgstr "ошибка" + +#: core/models/jobs.py:101 +msgid "job ID" +msgstr "идентификатор задания" + +#: core/models/jobs.py:112 +msgid "job" +msgstr "задание" + +#: core/models/jobs.py:113 +msgid "jobs" +msgstr "рабочие места" + +#: core/models/jobs.py:135 +#, python-brace-format +msgid "Jobs cannot be assigned to this object type ({type})." +msgstr "Задания нельзя присвоить этому типу объектов ({type})." + +#: core/tables/config.py:21 users/forms/filtersets.py:45 users/tables.py:39 +msgid "Is Active" +msgstr "Активен" + +#: core/tables/data.py:50 templates/core/datafile.html:40 +msgid "Path" +msgstr "Путь" + +#: core/tables/data.py:54 templates/extras/inc/result_pending.html:7 +msgid "Last updated" +msgstr "Последнее обновление" + +#: core/tables/jobs.py:10 dcim/tables/devicetypes.py:161 +#: extras/tables/tables.py:174 extras/tables/tables.py:340 +#: netbox/tables/tables.py:184 templates/dcim/virtualchassis_edit.html:53 +#: wireless/tables/wirelesslink.py:16 +msgid "ID" +msgstr "ИДЕНТИФИКАТОР" + +#: core/tables/jobs.py:21 extras/choices.py:38 extras/tables/tables.py:236 +#: extras/tables/tables.py:350 extras/tables/tables.py:448 +#: extras/tables/tables.py:479 netbox/tables/tables.py:238 +#: templates/extras/eventrule.html:99 +#: templates/extras/htmx/report_result.html:45 +#: templates/extras/journalentry.html:21 templates/extras/objectchange.html:62 +#: tenancy/tables/contacts.py:93 vpn/tables/l2vpn.py:64 +msgid "Object" +msgstr "Объект" + +#: core/tables/jobs.py:35 +msgid "Interval" +msgstr "Интервал" + +#: core/tables/jobs.py:38 templates/core/job.html:71 +#: templates/extras/htmx/report_result.html:7 +#: templates/extras/htmx/script_result.html:8 +msgid "Started" +msgstr "Запущено" + +#: dcim/api/serializers.py:205 templates/dcim/rack.html:33 +msgid "Facility ID" +msgstr "Идентификатор объекта" + +#: dcim/api/serializers.py:321 dcim/api/serializers.py:680 +msgid "Position (U)" +msgstr "Позиция (U)" + +#: dcim/choices.py:21 virtualization/choices.py:21 +msgid "Staging" +msgstr "Инсценировка" + +#: dcim/choices.py:23 dcim/choices.py:178 dcim/choices.py:223 +#: dcim/choices.py:1420 virtualization/choices.py:23 +#: virtualization/choices.py:48 +msgid "Decommissioning" +msgstr "Вывод из эксплуатации" + +#: dcim/choices.py:24 +msgid "Retired" +msgstr "В отставке" + +#: dcim/choices.py:65 +msgid "2-post frame" +msgstr "2-стоечная рама" + +#: dcim/choices.py:66 +msgid "4-post frame" +msgstr "4-стоечная рама" + +#: dcim/choices.py:67 +msgid "4-post cabinet" +msgstr "Шкаф с 4 стойками" + +#: dcim/choices.py:68 +msgid "Wall-mounted frame" +msgstr "Настенная рама" + +#: dcim/choices.py:69 +msgid "Wall-mounted frame (vertical)" +msgstr "Настенная рама (вертикальная)" + +#: dcim/choices.py:70 +msgid "Wall-mounted cabinet" +msgstr "Настенный шкаф" + +#: dcim/choices.py:71 +msgid "Wall-mounted cabinet (vertical)" +msgstr "Настенный шкаф (вертикальный)" + +#: dcim/choices.py:83 dcim/choices.py:84 dcim/choices.py:85 dcim/choices.py:86 +#, python-brace-format +msgid "{n} inches" +msgstr "{n} дюймов" + +#: dcim/choices.py:100 ipam/choices.py:32 ipam/choices.py:50 +#: ipam/choices.py:70 ipam/choices.py:155 wireless/choices.py:26 +msgid "Reserved" +msgstr "Зарезервировано" + +#: dcim/choices.py:101 templates/dcim/device.html:262 +msgid "Available" +msgstr "Доступно" + +#: dcim/choices.py:104 ipam/choices.py:33 ipam/choices.py:51 +#: ipam/choices.py:71 ipam/choices.py:156 wireless/choices.py:28 +msgid "Deprecated" +msgstr "Устарело" + +#: dcim/choices.py:114 templates/dcim/rack.html:128 +msgid "Millimeters" +msgstr "Миллиметры" + +#: dcim/choices.py:115 dcim/choices.py:1442 +msgid "Inches" +msgstr "Дюймы" + +#: dcim/choices.py:140 dcim/forms/bulk_edit.py:66 dcim/forms/bulk_edit.py:85 +#: dcim/forms/bulk_edit.py:171 dcim/forms/bulk_edit.py:1290 +#: dcim/forms/bulk_import.py:59 dcim/forms/bulk_import.py:73 +#: dcim/forms/bulk_import.py:136 dcim/forms/bulk_import.py:503 +#: dcim/forms/bulk_import.py:770 dcim/forms/bulk_import.py:1021 +#: dcim/forms/filtersets.py:226 dcim/forms/model_forms.py:73 +#: dcim/forms/model_forms.py:94 dcim/forms/model_forms.py:172 +#: dcim/forms/model_forms.py:955 dcim/forms/model_forms.py:1296 +#: dcim/forms/object_import.py:181 dcim/tables/devices.py:671 +#: dcim/tables/devices.py:955 extras/tables/tables.py:181 +#: ipam/tables/fhrp.py:59 ipam/tables/ip.py:374 ipam/tables/services.py:44 +#: templates/dcim/interface.html:105 templates/dcim/interface.html:321 +#: templates/dcim/location.html:44 templates/dcim/region.html:38 +#: templates/dcim/sitegroup.html:38 templates/ipam/service.html:31 +#: templates/tenancy/contactgroup.html:32 +#: templates/tenancy/tenantgroup.html:40 +#: templates/virtualization/vminterface.html:42 +#: templates/wireless/wirelesslangroup.html:38 tenancy/forms/bulk_edit.py:26 +#: tenancy/forms/bulk_edit.py:60 tenancy/forms/bulk_import.py:24 +#: tenancy/forms/bulk_import.py:58 tenancy/forms/model_forms.py:24 +#: tenancy/forms/model_forms.py:69 virtualization/forms/bulk_edit.py:206 +#: virtualization/forms/bulk_import.py:151 +#: virtualization/tables/virtualmachines.py:142 wireless/forms/bulk_edit.py:23 +#: wireless/forms/bulk_import.py:21 wireless/forms/model_forms.py:20 +msgid "Parent" +msgstr "Родитель" + +#: dcim/choices.py:141 +msgid "Child" +msgstr "Ребенок" + +#: dcim/choices.py:155 templates/dcim/device.html:345 +#: templates/dcim/rack.html:181 templates/dcim/rack_elevation_list.html:22 +#: templates/dcim/rackreservation.html:84 +msgid "Front" +msgstr "Передняя" + +#: dcim/choices.py:156 templates/dcim/device.html:351 +#: templates/dcim/rack.html:187 templates/dcim/rack_elevation_list.html:23 +#: templates/dcim/rackreservation.html:90 +msgid "Rear" +msgstr "Задний" + +#: dcim/choices.py:175 dcim/choices.py:221 virtualization/choices.py:46 +msgid "Staged" +msgstr "Поставил" + +#: dcim/choices.py:177 +msgid "Inventory" +msgstr "Инвентарь" + +#: dcim/choices.py:193 +msgid "Front to rear" +msgstr "Спереди назад" + +#: dcim/choices.py:194 +msgid "Rear to front" +msgstr "Сзади вперед" + +#: dcim/choices.py:195 +msgid "Left to right" +msgstr "Слева направо" + +#: dcim/choices.py:196 +msgid "Right to left" +msgstr "Справа налево" + +#: dcim/choices.py:197 +msgid "Side to rear" +msgstr "Бок назад" + +#: dcim/choices.py:198 dcim/choices.py:1215 +msgid "Passive" +msgstr "Пассивный" + +#: dcim/choices.py:199 +msgid "Mixed" +msgstr "Смешанный" + +#: dcim/choices.py:443 dcim/choices.py:680 +msgid "NEMA (Non-locking)" +msgstr "NEMA (без блокировки)" + +#: dcim/choices.py:465 dcim/choices.py:702 +msgid "NEMA (Locking)" +msgstr "NEMA (блокировка)" + +#: dcim/choices.py:488 dcim/choices.py:725 +msgid "California Style" +msgstr "Калифорнийский стиль" + +#: dcim/choices.py:496 +msgid "International/ITA" +msgstr "Международная/ITA" + +#: dcim/choices.py:526 dcim/choices.py:755 +msgid "Proprietary" +msgstr "Собственный" + +#: dcim/choices.py:534 dcim/choices.py:764 dcim/choices.py:1131 +#: dcim/choices.py:1133 dcim/choices.py:1338 dcim/choices.py:1340 +#: netbox/navigation/menu.py:188 +msgid "Other" +msgstr "Другой" + +#: dcim/choices.py:733 +msgid "ITA/International" +msgstr "ITA/Международный" + +#: dcim/choices.py:794 +msgid "Physical" +msgstr "Физический" + +#: dcim/choices.py:795 dcim/choices.py:949 +msgid "Virtual" +msgstr "Виртуальный" + +#: dcim/choices.py:796 dcim/choices.py:1019 dcim/forms/bulk_edit.py:1398 +#: dcim/forms/filtersets.py:1233 dcim/forms/model_forms.py:881 +#: dcim/forms/model_forms.py:1190 netbox/navigation/menu.py:128 +#: netbox/navigation/menu.py:132 templates/dcim/interface.html:217 +msgid "Wireless" +msgstr "Беспроводная" + +#: dcim/choices.py:947 +msgid "Virtual interfaces" +msgstr "Виртуальные интерфейсы" + +#: dcim/choices.py:950 dcim/forms/bulk_edit.py:1295 +#: dcim/forms/bulk_import.py:777 dcim/forms/model_forms.py:869 +#: dcim/tables/devices.py:675 templates/dcim/interface.html:109 +#: templates/virtualization/vminterface.html:46 +#: virtualization/forms/bulk_edit.py:211 +#: virtualization/forms/bulk_import.py:158 +#: virtualization/tables/virtualmachines.py:146 +msgid "Bridge" +msgstr "Мост" + +#: dcim/choices.py:951 +msgid "Link Aggregation Group (LAG)" +msgstr "Группа агрегации каналов (LAG)" + +#: dcim/choices.py:955 +msgid "Ethernet (fixed)" +msgstr "Ethernet (стационарный)" + +#: dcim/choices.py:969 +msgid "Ethernet (modular)" +msgstr "Ethernet (модульный)" + +#: dcim/choices.py:1005 +msgid "Ethernet (backplane)" +msgstr "Ethernet (объединительная плата)" + +#: dcim/choices.py:1033 +msgid "Cellular" +msgstr "Сотовая связь" + +#: dcim/choices.py:1080 dcim/forms/filtersets.py:302 +#: dcim/forms/filtersets.py:736 dcim/forms/filtersets.py:876 +#: dcim/forms/filtersets.py:1426 templates/dcim/inventoryitem.html:53 +#: templates/dcim/virtualchassis_edit.html:55 +msgid "Serial" +msgstr "Серийный" + +#: dcim/choices.py:1095 +msgid "Coaxial" +msgstr "Коаксиальный" + +#: dcim/choices.py:1112 +msgid "Stacking" +msgstr "Штабелирование" + +#: dcim/choices.py:1162 +msgid "Half" +msgstr "Половина" + +#: dcim/choices.py:1163 +msgid "Full" +msgstr "Полный" + +#: dcim/choices.py:1164 wireless/choices.py:480 +msgid "Auto" +msgstr "авто" + +#: dcim/choices.py:1175 +msgid "Access" +msgstr "Доступ" + +#: dcim/choices.py:1176 ipam/tables/vlans.py:168 ipam/tables/vlans.py:213 +#: templates/dcim/inc/interface_vlans_table.html:7 +msgid "Tagged" +msgstr "Помеченные" + +#: dcim/choices.py:1177 +msgid "Tagged (All)" +msgstr "С метками (все)" + +#: dcim/choices.py:1206 +msgid "IEEE Standard" +msgstr "Стандарт IEEE" + +#: dcim/choices.py:1217 +msgid "Passive 24V (2-pair)" +msgstr "Пассивный режим 24 В (2 пары)" + +#: dcim/choices.py:1218 +msgid "Passive 24V (4-pair)" +msgstr "Пассивное напряжение 24 В (4 пары)" + +#: dcim/choices.py:1219 +msgid "Passive 48V (2-pair)" +msgstr "Пассивное напряжение 48 В (2 пары)" + +#: dcim/choices.py:1220 +msgid "Passive 48V (4-pair)" +msgstr "Пассивное напряжение 48 В (4 пары)" + +#: dcim/choices.py:1282 dcim/choices.py:1378 +msgid "Copper" +msgstr "Медь" + +#: dcim/choices.py:1305 +msgid "Fiber Optic" +msgstr "Оптоволоконное" + +#: dcim/choices.py:1394 +msgid "Fiber" +msgstr "волокно" + +#: dcim/choices.py:1418 dcim/forms/filtersets.py:1140 +msgid "Connected" +msgstr "Подключено" + +#: dcim/choices.py:1437 +msgid "Kilometers" +msgstr "Километры" + +#: dcim/choices.py:1438 templates/dcim/cable_trace.html:62 +msgid "Meters" +msgstr "Счетчики" + +#: dcim/choices.py:1439 +msgid "Centimeters" +msgstr "Сантиметры" + +#: dcim/choices.py:1440 +msgid "Miles" +msgstr "Мили" + +#: dcim/choices.py:1441 templates/dcim/cable_trace.html:63 +msgid "Feet" +msgstr "Ноги" + +#: dcim/choices.py:1457 templates/dcim/device.html:332 +#: templates/dcim/rack.html:157 +msgid "Kilograms" +msgstr "Килограммы" + +#: dcim/choices.py:1458 +msgid "Grams" +msgstr "Граммы" + +#: dcim/choices.py:1459 templates/dcim/rack.html:158 +msgid "Pounds" +msgstr "Фунты" + +#: dcim/choices.py:1460 +msgid "Ounces" +msgstr "Унции" + +#: dcim/choices.py:1506 tenancy/choices.py:17 +msgid "Primary" +msgstr "Начальное" + +#: dcim/choices.py:1507 +msgid "Redundant" +msgstr "Резервный" + +#: dcim/choices.py:1528 +msgid "Single phase" +msgstr "Однофазный" + +#: dcim/choices.py:1529 +msgid "Three-phase" +msgstr "Трехфазный" + +#: dcim/filtersets.py:80 +msgid "Parent region (ID)" +msgstr "Родительский регион (ID)" + +#: dcim/filtersets.py:86 +msgid "Parent region (slug)" +msgstr "Родительский регион (пуля)" + +#: dcim/filtersets.py:97 +msgid "Parent site group (ID)" +msgstr "Родительская группа сайтов (ID)" + +#: dcim/filtersets.py:103 +msgid "Parent site group (slug)" +msgstr "Родительская группа сайтов (slug)" + +#: dcim/filtersets.py:132 ipam/filtersets.py:797 ipam/filtersets.py:930 +msgid "Group (ID)" +msgstr "Группа (ID)" + +#: dcim/filtersets.py:138 +msgid "Group (slug)" +msgstr "Группа (слизень)" + +#: dcim/filtersets.py:144 dcim/filtersets.py:149 +msgid "AS (ID)" +msgstr "КАК (ID)" + +#: dcim/filtersets.py:217 dcim/filtersets.py:292 dcim/filtersets.py:390 +#: dcim/filtersets.py:917 dcim/filtersets.py:1213 dcim/filtersets.py:1881 +msgid "Location (ID)" +msgstr "Местонахождение (ID)" + +#: dcim/filtersets.py:224 dcim/filtersets.py:299 dcim/filtersets.py:397 +#: dcim/filtersets.py:1219 extras/filtersets.py:447 +msgid "Location (slug)" +msgstr "Местоположение (пуля)" + +#: dcim/filtersets.py:313 dcim/filtersets.py:764 dcim/filtersets.py:854 +#: dcim/filtersets.py:1619 ipam/filtersets.py:347 ipam/filtersets.py:459 +#: ipam/filtersets.py:940 virtualization/filtersets.py:209 +msgid "Role (ID)" +msgstr "Роль (идентификатор)" + +#: dcim/filtersets.py:319 dcim/filtersets.py:770 dcim/filtersets.py:860 +#: dcim/filtersets.py:1625 extras/filtersets.py:463 ipam/filtersets.py:353 +#: ipam/filtersets.py:465 ipam/filtersets.py:946 +#: virtualization/filtersets.py:215 +msgid "Role (slug)" +msgstr "Роль (пуля)" + +#: dcim/filtersets.py:347 dcim/filtersets.py:922 dcim/filtersets.py:1224 +#: dcim/filtersets.py:1942 +msgid "Rack (ID)" +msgstr "Стеллаж (ID)" + +#: dcim/filtersets.py:401 extras/filtersets.py:234 extras/filtersets.py:278 +#: extras/filtersets.py:318 extras/filtersets.py:613 +msgid "User (ID)" +msgstr "Пользователь (ID)" + +#: dcim/filtersets.py:407 extras/filtersets.py:240 extras/filtersets.py:284 +#: extras/filtersets.py:324 users/filtersets.py:80 users/filtersets.py:140 +msgid "User (name)" +msgstr "Пользователь (имя)" + +#: dcim/filtersets.py:435 dcim/filtersets.py:561 dcim/filtersets.py:754 +#: dcim/filtersets.py:805 dcim/filtersets.py:833 dcim/filtersets.py:1116 +#: dcim/filtersets.py:1609 +msgid "Manufacturer (ID)" +msgstr "Производитель (ID)" + +#: dcim/filtersets.py:441 dcim/filtersets.py:567 dcim/filtersets.py:760 +#: dcim/filtersets.py:811 dcim/filtersets.py:839 dcim/filtersets.py:1122 +#: dcim/filtersets.py:1615 +msgid "Manufacturer (slug)" +msgstr "Производитель (slug)" + +#: dcim/filtersets.py:445 +msgid "Default platform (ID)" +msgstr "Платформа по умолчанию (ID)" + +#: dcim/filtersets.py:451 +msgid "Default platform (slug)" +msgstr "Платформа по умолчанию (slug)" + +#: dcim/filtersets.py:454 dcim/forms/filtersets.py:452 +msgid "Has a front image" +msgstr "Имеет фронтальное изображение" + +#: dcim/filtersets.py:458 dcim/forms/filtersets.py:459 +msgid "Has a rear image" +msgstr "Имеет изображение сзади" + +#: dcim/filtersets.py:463 dcim/filtersets.py:571 dcim/filtersets.py:975 +#: dcim/forms/filtersets.py:466 dcim/forms/filtersets.py:563 +#: dcim/forms/filtersets.py:775 +msgid "Has console ports" +msgstr "Имеет консольные порты" + +#: dcim/filtersets.py:467 dcim/filtersets.py:575 dcim/filtersets.py:979 +#: dcim/forms/filtersets.py:473 dcim/forms/filtersets.py:570 +#: dcim/forms/filtersets.py:782 +msgid "Has console server ports" +msgstr "Имеет порты консольного сервера" + +#: dcim/filtersets.py:471 dcim/filtersets.py:579 dcim/filtersets.py:983 +#: dcim/forms/filtersets.py:480 dcim/forms/filtersets.py:577 +#: dcim/forms/filtersets.py:789 +msgid "Has power ports" +msgstr "Имеет порты питания" + +#: dcim/filtersets.py:475 dcim/filtersets.py:583 dcim/filtersets.py:987 +#: dcim/forms/filtersets.py:487 dcim/forms/filtersets.py:584 +#: dcim/forms/filtersets.py:796 +msgid "Has power outlets" +msgstr "Имеет розетки" + +#: dcim/filtersets.py:479 dcim/filtersets.py:587 dcim/filtersets.py:991 +#: dcim/forms/filtersets.py:494 dcim/forms/filtersets.py:591 +#: dcim/forms/filtersets.py:803 +msgid "Has interfaces" +msgstr "Имеет интерфейсы" + +#: dcim/filtersets.py:483 dcim/filtersets.py:591 dcim/filtersets.py:995 +#: dcim/forms/filtersets.py:501 dcim/forms/filtersets.py:598 +#: dcim/forms/filtersets.py:810 +msgid "Has pass-through ports" +msgstr "Имеет сквозные порты" + +#: dcim/filtersets.py:487 dcim/filtersets.py:999 dcim/forms/filtersets.py:515 +msgid "Has module bays" +msgstr "Имеет отсеки для модулей" + +#: dcim/filtersets.py:491 dcim/filtersets.py:1003 dcim/forms/filtersets.py:508 +msgid "Has device bays" +msgstr "Имеет отсеки для устройств" + +#: dcim/filtersets.py:495 dcim/forms/filtersets.py:522 +msgid "Has inventory items" +msgstr "Имеет инвентарь" + +#: dcim/filtersets.py:638 dcim/filtersets.py:849 dcim/filtersets.py:1245 +msgid "Device type (ID)" +msgstr "Тип устройства (ID)" + +#: dcim/filtersets.py:651 dcim/filtersets.py:1127 +msgid "Module type (ID)" +msgstr "Тип модуля (ID)" + +#: dcim/filtersets.py:750 dcim/filtersets.py:1605 +msgid "Parent inventory item (ID)" +msgstr "Родительский инвентарь (ID)" + +#: dcim/filtersets.py:793 dcim/filtersets.py:815 dcim/filtersets.py:971 +#: virtualization/filtersets.py:237 +msgid "Config template (ID)" +msgstr "Шаблон конфигурации (ID)" + +#: dcim/filtersets.py:845 +msgid "Device type (slug)" +msgstr "Тип устройства (заглушка)" + +#: dcim/filtersets.py:865 +msgid "Parent Device (ID)" +msgstr "Родительское устройство (ID)" + +#: dcim/filtersets.py:869 virtualization/filtersets.py:219 +msgid "Platform (ID)" +msgstr "Платформа (ID)" + +#: dcim/filtersets.py:875 extras/filtersets.py:474 +#: virtualization/filtersets.py:225 +msgid "Platform (slug)" +msgstr "Платформа (пуля)" + +#: dcim/filtersets.py:911 dcim/filtersets.py:1208 dcim/filtersets.py:1703 +#: dcim/filtersets.py:1875 dcim/filtersets.py:1933 +msgid "Site name (slug)" +msgstr "Название сайта (slug)" + +#: dcim/filtersets.py:926 +msgid "VM cluster (ID)" +msgstr "Кластер виртуальных машин (ID)" + +#: dcim/filtersets.py:932 +msgid "Device model (slug)" +msgstr "Модель устройства (заглушка)" + +#: dcim/filtersets.py:943 dcim/forms/bulk_edit.py:421 +msgid "Is full depth" +msgstr "Это полная глубина" + +#: dcim/filtersets.py:947 dcim/forms/common.py:18 dcim/forms/filtersets.py:745 +#: dcim/forms/filtersets.py:1285 dcim/models/device_components.py:519 +#: virtualization/filtersets.py:229 virtualization/filtersets.py:295 +#: virtualization/forms/filtersets.py:168 +#: virtualization/forms/filtersets.py:215 +msgid "MAC address" +msgstr "MAC-адрес" + +#: dcim/filtersets.py:954 dcim/forms/filtersets.py:754 +#: dcim/forms/filtersets.py:841 virtualization/filtersets.py:233 +#: virtualization/forms/filtersets.py:172 +msgid "Has a primary IP" +msgstr "Имеет основной IP-адрес" + +#: dcim/filtersets.py:958 +msgid "Has an out-of-band IP" +msgstr "Имеет внеполосный IP-адрес" + +#: dcim/filtersets.py:963 +msgid "Virtual chassis (ID)" +msgstr "Виртуальное шасси (ID)" + +#: dcim/filtersets.py:967 +msgid "Is a virtual chassis member" +msgstr "Является виртуальным членом шасси" + +#: dcim/filtersets.py:1008 +msgid "OOB IP (ID)" +msgstr "ПОДГУЗНИК (ID)" + +#: dcim/filtersets.py:1133 +msgid "Module type (model)" +msgstr "Тип модуля (модель)" + +#: dcim/filtersets.py:1139 +msgid "Module Bay (ID)" +msgstr "Отсек для модулей (ID)" + +#: dcim/filtersets.py:1143 dcim/filtersets.py:1234 ipam/filtersets.py:577 +#: ipam/filtersets.py:807 ipam/filtersets.py:1015 +#: virtualization/filtersets.py:160 vpn/filtersets.py:351 +msgid "Device (ID)" +msgstr "Устройство (идентификатор)" + +#: dcim/filtersets.py:1230 +msgid "Rack (name)" +msgstr "Стеллаж (название)" + +#: dcim/filtersets.py:1240 ipam/filtersets.py:572 ipam/filtersets.py:802 +#: ipam/filtersets.py:1021 vpn/filtersets.py:346 +msgid "Device (name)" +msgstr "Устройство (имя)" + +#: dcim/filtersets.py:1251 +msgid "Device type (model)" +msgstr "Тип устройства (модель)" + +#: dcim/filtersets.py:1256 dcim/filtersets.py:1279 +msgid "Device role (ID)" +msgstr "Роль устройства (ID)" + +#: dcim/filtersets.py:1262 dcim/filtersets.py:1285 +msgid "Device role (slug)" +msgstr "Роль устройства (slug)" + +#: dcim/filtersets.py:1267 +msgid "Virtual Chassis (ID)" +msgstr "Виртуальное шасси (ID)" + +#: dcim/filtersets.py:1273 dcim/forms/filtersets.py:106 +#: dcim/tables/devices.py:235 netbox/navigation/menu.py:67 +#: templates/dcim/device.html:123 templates/dcim/device_edit.html:93 +#: templates/dcim/virtualchassis.html:20 +#: templates/dcim/virtualchassis_add.html:8 +#: templates/dcim/virtualchassis_edit.html:25 +msgid "Virtual Chassis" +msgstr "Виртуальное шасси" + +#: dcim/filtersets.py:1305 +msgid "Module (ID)" +msgstr "Модуль (идентификатор)" + +#: dcim/filtersets.py:1409 ipam/forms/bulk_import.py:188 +#: vpn/forms/bulk_import.py:303 +msgid "Assigned VLAN" +msgstr "Назначенная VLAN" + +#: dcim/filtersets.py:1413 +msgid "Assigned VID" +msgstr "Назначенный VID" + +#: dcim/filtersets.py:1418 dcim/forms/bulk_edit.py:1374 +#: dcim/forms/bulk_import.py:828 dcim/forms/filtersets.py:1328 +#: dcim/forms/model_forms.py:1175 dcim/models/device_components.py:712 +#: dcim/tables/devices.py:637 ipam/filtersets.py:282 ipam/filtersets.py:293 +#: ipam/filtersets.py:449 ipam/filtersets.py:550 ipam/filtersets.py:561 +#: ipam/forms/bulk_edit.py:226 ipam/forms/bulk_edit.py:281 +#: ipam/forms/bulk_edit.py:323 ipam/forms/bulk_import.py:156 +#: ipam/forms/bulk_import.py:242 ipam/forms/bulk_import.py:278 +#: ipam/forms/filtersets.py:66 ipam/forms/filtersets.py:167 +#: ipam/forms/filtersets.py:295 ipam/forms/model_forms.py:59 +#: ipam/forms/model_forms.py:203 ipam/forms/model_forms.py:246 +#: ipam/forms/model_forms.py:290 ipam/forms/model_forms.py:412 +#: ipam/forms/model_forms.py:426 ipam/forms/model_forms.py:440 +#: ipam/models/ip.py:232 ipam/models/ip.py:511 ipam/models/ip.py:719 +#: ipam/models/vrfs.py:62 ipam/tables/ip.py:241 ipam/tables/ip.py:306 +#: ipam/tables/ip.py:356 ipam/tables/ip.py:445 +#: templates/dcim/interface.html:138 templates/ipam/ipaddress.html:21 +#: templates/ipam/iprange.html:43 templates/ipam/prefix.html:20 +#: templates/ipam/vrf.html:7 templates/ipam/vrf.html:14 +#: templates/virtualization/vminterface.html:50 +#: virtualization/forms/bulk_edit.py:260 +#: virtualization/forms/bulk_import.py:171 +#: virtualization/forms/filtersets.py:220 +#: virtualization/forms/model_forms.py:347 +#: virtualization/models/virtualmachines.py:348 +#: virtualization/tables/virtualmachines.py:123 +msgid "VRF" +msgstr "VRF" + +#: dcim/filtersets.py:1424 ipam/filtersets.py:288 ipam/filtersets.py:299 +#: ipam/filtersets.py:455 ipam/filtersets.py:556 ipam/filtersets.py:567 +msgid "VRF (RD)" +msgstr "VRF (КРАСНЫЙ)" + +#: dcim/filtersets.py:1429 ipam/filtersets.py:963 vpn/filtersets.py:314 +msgid "L2VPN (ID)" +msgstr "L2VPN (ИДЕНТИФИКАТОР)" + +#: dcim/filtersets.py:1435 dcim/forms/filtersets.py:1333 +#: dcim/tables/devices.py:585 ipam/filtersets.py:969 +#: ipam/forms/filtersets.py:499 ipam/tables/vlans.py:133 +#: templates/dcim/interface.html:94 templates/ipam/vlan.html:69 +#: templates/vpn/l2vpntermination.html:15 +#: virtualization/forms/filtersets.py:225 vpn/forms/bulk_import.py:275 +#: vpn/forms/filtersets.py:242 vpn/forms/model_forms.py:402 +#: vpn/forms/model_forms.py:420 vpn/models/l2vpn.py:63 vpn/tables/l2vpn.py:55 +msgid "L2VPN" +msgstr "L2VPN" + +#: dcim/filtersets.py:1467 +msgid "Virtual Chassis Interfaces for Device" +msgstr "Интерфейсы виртуального корпуса для устройства" + +#: dcim/filtersets.py:1472 +msgid "Virtual Chassis Interfaces for Device (ID)" +msgstr "Интерфейсы виртуального корпуса для устройства (ID)" + +#: dcim/filtersets.py:1476 +msgid "Kind of interface" +msgstr "Вид интерфейса" + +#: dcim/filtersets.py:1481 virtualization/filtersets.py:287 +msgid "Parent interface (ID)" +msgstr "Родительский интерфейс (ID)" + +#: dcim/filtersets.py:1486 virtualization/filtersets.py:292 +msgid "Bridged interface (ID)" +msgstr "Мостовой интерфейс (ID)" + +#: dcim/filtersets.py:1491 +msgid "LAG interface (ID)" +msgstr "Интерфейс LAG (ID)" + +#: dcim/filtersets.py:1660 +msgid "Master (ID)" +msgstr "Мастер (удостоверение личности)" + +#: dcim/filtersets.py:1666 +msgid "Master (name)" +msgstr "Мастер (имя)" + +#: dcim/filtersets.py:1708 tenancy/filtersets.py:220 +msgid "Tenant (ID)" +msgstr "Арендатор (ID)" + +#: dcim/filtersets.py:1714 extras/filtersets.py:523 tenancy/filtersets.py:226 +msgid "Tenant (slug)" +msgstr "Арендатор (пуля)" + +#: dcim/filtersets.py:1749 dcim/forms/filtersets.py:990 +msgid "Unterminated" +msgstr "Нерасторгнутый" + +#: dcim/filtersets.py:1937 +msgid "Power panel (ID)" +msgstr "Панель питания (ID)" + +#: dcim/forms/bulk_create.py:40 extras/forms/filtersets.py:410 +#: extras/forms/model_forms.py:444 extras/forms/model_forms.py:495 +#: netbox/forms/base.py:71 netbox/forms/mixins.py:79 +#: netbox/tables/columns.py:448 +#: templates/circuits/inc/circuit_termination.html:119 +#: templates/generic/bulk_edit.html:81 templates/inc/panels/tags.html:5 +#: utilities/forms/fields/fields.py:81 +msgid "Tags" +msgstr "Теги" + +#: dcim/forms/bulk_create.py:112 dcim/forms/filtersets.py:1390 +#: dcim/forms/model_forms.py:422 dcim/forms/model_forms.py:468 +#: dcim/forms/object_create.py:196 dcim/forms/object_create.py:352 +#: dcim/tables/devices.py:198 dcim/tables/devices.py:720 +#: dcim/tables/devicetypes.py:242 templates/dcim/device.html:45 +#: templates/dcim/device.html:129 templates/dcim/modulebay.html:35 +#: templates/dcim/virtualchassis.html:59 +#: templates/dcim/virtualchassis_edit.html:56 +msgid "Position" +msgstr "Должность" + +#: dcim/forms/bulk_create.py:114 +msgid "" +"Alphanumeric ranges are supported. (Must match the number of names being " +"created.)" +msgstr "" +"Поддерживаются алфавитно-цифровые диапазоны. (Должно совпадать с количеством" +" создаваемых имен.)" + +#: dcim/forms/bulk_edit.py:115 dcim/forms/bulk_import.py:99 +#: dcim/forms/model_forms.py:120 dcim/tables/sites.py:89 +#: ipam/filtersets.py:936 ipam/forms/bulk_edit.py:528 +#: ipam/forms/bulk_import.py:444 ipam/forms/model_forms.py:509 +#: ipam/tables/fhrp.py:67 ipam/tables/vlans.py:118 ipam/tables/vlans.py:221 +#: templates/dcim/interface.html:294 templates/dcim/site.html:37 +#: templates/ipam/inc/panels/fhrp_groups.html:10 templates/ipam/vlan.html:30 +#: templates/tenancy/contact.html:22 templates/tenancy/tenant.html:21 +#: templates/users/group.html:6 templates/users/group.html:14 +#: templates/virtualization/cluster.html:32 templates/vpn/tunnel.html:30 +#: templates/wireless/wirelesslan.html:19 tenancy/forms/bulk_edit.py:42 +#: tenancy/forms/bulk_edit.py:93 tenancy/forms/bulk_import.py:40 +#: tenancy/forms/bulk_import.py:81 tenancy/forms/filtersets.py:47 +#: tenancy/forms/filtersets.py:77 tenancy/forms/filtersets.py:96 +#: tenancy/forms/model_forms.py:46 tenancy/forms/model_forms.py:102 +#: tenancy/forms/model_forms.py:124 tenancy/tables/contacts.py:60 +#: tenancy/tables/contacts.py:107 tenancy/tables/tenants.py:42 +#: users/filtersets.py:42 users/filtersets.py:145 users/forms/filtersets.py:32 +#: users/forms/filtersets.py:38 users/forms/filtersets.py:80 +#: virtualization/forms/bulk_edit.py:64 virtualization/forms/bulk_import.py:47 +#: virtualization/forms/filtersets.py:84 +#: virtualization/forms/model_forms.py:69 virtualization/tables/clusters.py:70 +#: vpn/forms/bulk_edit.py:111 vpn/forms/bulk_import.py:157 +#: vpn/forms/filtersets.py:113 vpn/tables/crypto.py:31 +#: wireless/forms/bulk_edit.py:47 wireless/forms/bulk_import.py:36 +#: wireless/forms/filtersets.py:45 wireless/forms/model_forms.py:41 +#: wireless/tables/wirelesslan.py:48 +msgid "Group" +msgstr "Группа" + +#: dcim/forms/bulk_edit.py:130 +msgid "Contact name" +msgstr "Имя контактного лица" + +#: dcim/forms/bulk_edit.py:135 +msgid "Contact phone" +msgstr "Контактный телефон" + +#: dcim/forms/bulk_edit.py:141 +msgid "Contact E-mail" +msgstr "Контактный адрес электронной почты" + +#: dcim/forms/bulk_edit.py:144 dcim/forms/bulk_import.py:122 +#: dcim/forms/model_forms.py:131 +msgid "Time zone" +msgstr "Часовой пояс" + +#: dcim/forms/bulk_edit.py:266 dcim/forms/bulk_edit.py:1152 +#: dcim/forms/bulk_edit.py:1539 dcim/forms/bulk_import.py:199 +#: dcim/forms/bulk_import.py:1009 dcim/forms/filtersets.py:299 +#: dcim/forms/filtersets.py:704 dcim/forms/filtersets.py:1417 +#: dcim/forms/model_forms.py:224 dcim/forms/model_forms.py:963 +#: dcim/forms/model_forms.py:1304 dcim/forms/object_import.py:186 +#: dcim/tables/devices.py:202 dcim/tables/devices.py:828 +#: dcim/tables/devices.py:939 dcim/tables/devicetypes.py:300 +#: dcim/tables/racks.py:69 extras/filtersets.py:457 +#: ipam/forms/bulk_edit.py:245 ipam/forms/bulk_edit.py:294 +#: ipam/forms/bulk_edit.py:342 ipam/forms/bulk_edit.py:546 +#: ipam/forms/bulk_import.py:196 ipam/forms/bulk_import.py:261 +#: ipam/forms/bulk_import.py:297 ipam/forms/bulk_import.py:463 +#: ipam/forms/filtersets.py:232 ipam/forms/filtersets.py:278 +#: ipam/forms/filtersets.py:346 ipam/forms/filtersets.py:490 +#: ipam/forms/model_forms.py:187 ipam/forms/model_forms.py:222 +#: ipam/forms/model_forms.py:249 ipam/forms/model_forms.py:647 +#: ipam/tables/ip.py:257 ipam/tables/ip.py:313 ipam/tables/ip.py:363 +#: ipam/tables/vlans.py:126 ipam/tables/vlans.py:230 +#: templates/dcim/device.html:187 +#: templates/dcim/inc/panels/inventory_items.html:12 +#: templates/dcim/interface.html:231 templates/dcim/inventoryitem.html:37 +#: templates/dcim/rack.html:50 templates/ipam/ipaddress.html:44 +#: templates/ipam/iprange.html:53 templates/ipam/prefix.html:78 +#: templates/ipam/role.html:20 templates/ipam/vlan.html:55 +#: templates/virtualization/virtualmachine.html:26 +#: templates/vpn/tunneltermination.html:18 +#: templates/wireless/inc/wirelesslink_interface.html:20 +#: tenancy/forms/bulk_edit.py:141 tenancy/forms/filtersets.py:106 +#: tenancy/forms/model_forms.py:139 tenancy/tables/contacts.py:102 +#: virtualization/forms/bulk_edit.py:144 +#: virtualization/forms/bulk_import.py:106 +#: virtualization/forms/filtersets.py:153 +#: virtualization/forms/model_forms.py:198 +#: virtualization/tables/virtualmachines.py:65 vpn/forms/bulk_edit.py:86 +#: vpn/forms/bulk_import.py:81 vpn/forms/filtersets.py:84 +#: vpn/forms/model_forms.py:77 vpn/forms/model_forms.py:112 +#: vpn/tables/tunnels.py:78 +msgid "Role" +msgstr "Роль" + +#: dcim/forms/bulk_edit.py:273 dcim/forms/bulk_edit.py:605 +#: dcim/forms/bulk_edit.py:654 templates/dcim/device.html:106 +#: templates/dcim/module.html:75 templates/dcim/modulebay.html:69 +#: templates/dcim/rack.html:58 +msgid "Serial Number" +msgstr "Серийный номер" + +#: dcim/forms/bulk_edit.py:276 dcim/forms/filtersets.py:306 +#: dcim/forms/filtersets.py:740 dcim/forms/filtersets.py:880 +#: dcim/forms/filtersets.py:1430 +msgid "Asset tag" +msgstr "Тег актива" + +#: dcim/forms/bulk_edit.py:286 dcim/forms/bulk_import.py:212 +#: dcim/forms/filtersets.py:291 templates/dcim/rack.html:91 +#: templates/dcim/rack_edit.html:48 +msgid "Width" +msgstr "Ширина" + +#: dcim/forms/bulk_edit.py:292 +msgid "Height (U)" +msgstr "Высота (U)" + +#: dcim/forms/bulk_edit.py:297 +msgid "Descending units" +msgstr "Единицы по убыванию" + +#: dcim/forms/bulk_edit.py:300 +msgid "Outer width" +msgstr "Наружная ширина" + +#: dcim/forms/bulk_edit.py:305 +msgid "Outer depth" +msgstr "Внешняя глубина" + +#: dcim/forms/bulk_edit.py:310 dcim/forms/bulk_import.py:217 +msgid "Outer unit" +msgstr "Внешний блок" + +#: dcim/forms/bulk_edit.py:315 +msgid "Mounting depth" +msgstr "Глубина крепления" + +#: dcim/forms/bulk_edit.py:320 dcim/forms/bulk_edit.py:349 +#: dcim/forms/bulk_edit.py:434 dcim/forms/bulk_edit.py:457 +#: dcim/forms/bulk_edit.py:473 dcim/forms/bulk_edit.py:493 +#: dcim/forms/bulk_import.py:324 dcim/forms/bulk_import.py:350 +#: dcim/forms/filtersets.py:250 dcim/forms/filtersets.py:311 +#: dcim/forms/filtersets.py:335 dcim/forms/filtersets.py:423 +#: dcim/forms/filtersets.py:529 dcim/forms/filtersets.py:548 +#: dcim/forms/filtersets.py:605 dcim/forms/model_forms.py:337 +#: dcim/tables/devicetypes.py:103 dcim/tables/modules.py:35 +#: dcim/tables/racks.py:103 extras/forms/bulk_edit.py:45 +#: extras/forms/bulk_edit.py:107 extras/forms/bulk_edit.py:157 +#: extras/forms/bulk_edit.py:277 extras/forms/filtersets.py:60 +#: extras/forms/filtersets.py:133 extras/forms/filtersets.py:220 +#: ipam/forms/bulk_edit.py:187 templates/dcim/device.html:329 +#: templates/dcim/devicetype.html:52 templates/dcim/moduletype.html:31 +#: templates/dcim/rack_edit.html:60 templates/dcim/rack_edit.html:63 +#: templates/extras/configcontext.html:18 templates/extras/customlink.html:26 +#: templates/extras/savedfilter.html:34 templates/ipam/role.html:33 +msgid "Weight" +msgstr "Вес" + +#: dcim/forms/bulk_edit.py:325 dcim/forms/filtersets.py:316 +msgid "Max weight" +msgstr "Максимальный вес" + +#: dcim/forms/bulk_edit.py:330 dcim/forms/bulk_edit.py:439 +#: dcim/forms/bulk_edit.py:478 dcim/forms/bulk_import.py:223 +#: dcim/forms/bulk_import.py:329 dcim/forms/bulk_import.py:355 +#: dcim/forms/filtersets.py:321 dcim/forms/filtersets.py:533 +#: dcim/forms/filtersets.py:609 +msgid "Weight unit" +msgstr "Весовая единица" + +#: dcim/forms/bulk_edit.py:344 dcim/forms/bulk_edit.py:800 +#: dcim/forms/bulk_import.py:262 dcim/forms/bulk_import.py:265 +#: dcim/forms/bulk_import.py:490 dcim/forms/bulk_import.py:1286 +#: dcim/forms/bulk_import.py:1290 dcim/forms/filtersets.py:101 +#: dcim/forms/filtersets.py:339 dcim/forms/filtersets.py:353 +#: dcim/forms/filtersets.py:391 dcim/forms/filtersets.py:699 +#: dcim/forms/filtersets.py:948 dcim/forms/filtersets.py:1080 +#: dcim/forms/model_forms.py:241 dcim/forms/model_forms.py:413 +#: dcim/forms/model_forms.py:662 dcim/forms/object_create.py:399 +#: dcim/tables/devices.py:194 dcim/tables/power.py:70 dcim/tables/racks.py:148 +#: ipam/forms/bulk_edit.py:464 ipam/forms/filtersets.py:427 +#: ipam/forms/model_forms.py:571 templates/dcim/device.html:30 +#: templates/dcim/inc/cable_termination.html:16 +#: templates/dcim/powerfeed.html:31 templates/dcim/rack.html:14 +#: templates/dcim/rack/base.html:4 templates/dcim/rack_edit.html:8 +#: templates/dcim/rackreservation.html:20 +#: templates/dcim/rackreservation.html:39 +#: virtualization/forms/model_forms.py:116 +msgid "Rack" +msgstr "Стеллаж" + +#: dcim/forms/bulk_edit.py:346 dcim/forms/bulk_edit.py:623 +#: dcim/forms/filtersets.py:247 dcim/forms/filtersets.py:332 +#: dcim/forms/filtersets.py:417 dcim/forms/filtersets.py:543 +#: dcim/forms/filtersets.py:652 dcim/forms/filtersets.py:853 +#: dcim/forms/model_forms.py:589 dcim/forms/model_forms.py:1374 +#: templates/dcim/device_edit.html:20 +#: templates/dcim/inventoryitem_edit.html:23 +msgid "Hardware" +msgstr "аппаратное обеспечение" + +#: dcim/forms/bulk_edit.py:400 dcim/forms/bulk_edit.py:464 +#: dcim/forms/bulk_edit.py:528 dcim/forms/bulk_edit.py:552 +#: dcim/forms/bulk_edit.py:633 dcim/forms/bulk_edit.py:1157 +#: dcim/forms/bulk_edit.py:1544 dcim/forms/bulk_import.py:311 +#: dcim/forms/bulk_import.py:345 dcim/forms/bulk_import.py:387 +#: dcim/forms/bulk_import.py:423 dcim/forms/bulk_import.py:1015 +#: dcim/forms/filtersets.py:429 dcim/forms/filtersets.py:554 +#: dcim/forms/filtersets.py:631 dcim/forms/filtersets.py:709 +#: dcim/forms/filtersets.py:858 dcim/forms/filtersets.py:1423 +#: dcim/forms/model_forms.py:274 dcim/forms/model_forms.py:288 +#: dcim/forms/model_forms.py:330 dcim/forms/model_forms.py:370 +#: dcim/forms/model_forms.py:968 dcim/forms/model_forms.py:1309 +#: dcim/forms/object_import.py:192 dcim/tables/devices.py:129 +#: dcim/tables/devices.py:205 dcim/tables/devices.py:942 +#: dcim/tables/devicetypes.py:81 dcim/tables/devicetypes.py:304 +#: dcim/tables/modules.py:20 dcim/tables/modules.py:60 +#: templates/dcim/devicetype.html:17 templates/dcim/inventoryitem.html:45 +#: templates/dcim/manufacturer.html:34 templates/dcim/modulebay.html:61 +#: templates/dcim/moduletype.html:15 templates/dcim/platform.html:40 +msgid "Manufacturer" +msgstr "Изготовитель" + +#: dcim/forms/bulk_edit.py:405 dcim/forms/bulk_import.py:317 +#: dcim/forms/filtersets.py:434 dcim/forms/model_forms.py:292 +msgid "Default platform" +msgstr "Платформа по умолчанию" + +#: dcim/forms/bulk_edit.py:410 dcim/forms/bulk_edit.py:469 +#: dcim/forms/filtersets.py:437 dcim/forms/filtersets.py:558 +msgid "Part number" +msgstr "номер детали" + +#: dcim/forms/bulk_edit.py:414 +msgid "U height" +msgstr "Высота U" + +#: dcim/forms/bulk_edit.py:426 +msgid "Exclude from utilization" +msgstr "Исключить из использования" + +#: dcim/forms/bulk_edit.py:429 dcim/forms/bulk_edit.py:598 +#: dcim/forms/bulk_import.py:517 dcim/forms/filtersets.py:446 +#: dcim/forms/filtersets.py:731 templates/dcim/device.html:100 +#: templates/dcim/devicetype.html:68 +msgid "Airflow" +msgstr "Воздушный поток" + +#: dcim/forms/bulk_edit.py:453 dcim/forms/model_forms.py:303 +#: dcim/tables/devicetypes.py:78 templates/dcim/device.html:90 +#: templates/dcim/devicebay.html:59 templates/dcim/module.html:59 +msgid "Device Type" +msgstr "Тип устройства" + +#: dcim/forms/bulk_edit.py:492 dcim/forms/model_forms.py:336 +#: dcim/tables/modules.py:17 dcim/tables/modules.py:65 +#: templates/dcim/module.html:63 templates/dcim/modulebay.html:65 +#: templates/dcim/moduletype.html:11 +msgid "Module Type" +msgstr "Тип модуля" + +#: dcim/forms/bulk_edit.py:506 dcim/models/devices.py:472 +msgid "VM role" +msgstr "Роль виртуальной машины" + +#: dcim/forms/bulk_edit.py:509 dcim/forms/bulk_edit.py:533 +#: dcim/forms/bulk_edit.py:613 dcim/forms/bulk_import.py:368 +#: dcim/forms/bulk_import.py:372 dcim/forms/bulk_import.py:394 +#: dcim/forms/bulk_import.py:398 dcim/forms/bulk_import.py:523 +#: dcim/forms/bulk_import.py:527 dcim/forms/filtersets.py:620 +#: dcim/forms/filtersets.py:636 dcim/forms/filtersets.py:750 +#: dcim/forms/model_forms.py:349 dcim/forms/model_forms.py:375 +#: dcim/forms/model_forms.py:477 virtualization/forms/bulk_import.py:132 +#: virtualization/forms/bulk_import.py:133 +#: virtualization/forms/filtersets.py:180 +#: virtualization/forms/model_forms.py:218 +msgid "Config template" +msgstr "Шаблон конфигурации" + +#: dcim/forms/bulk_edit.py:557 dcim/forms/bulk_edit.py:951 +#: dcim/forms/bulk_import.py:429 dcim/forms/filtersets.py:111 +#: dcim/forms/model_forms.py:435 dcim/forms/model_forms.py:776 +#: dcim/forms/model_forms.py:790 extras/filtersets.py:452 +msgid "Device type" +msgstr "Тип устройства" + +#: dcim/forms/bulk_edit.py:565 dcim/forms/bulk_import.py:410 +#: dcim/forms/filtersets.py:116 dcim/forms/model_forms.py:440 +msgid "Device role" +msgstr "Роль устройства" + +#: dcim/forms/bulk_edit.py:588 dcim/forms/bulk_import.py:435 +#: dcim/forms/filtersets.py:723 dcim/forms/model_forms.py:385 +#: dcim/forms/model_forms.py:444 extras/filtersets.py:468 +#: templates/dcim/device.html:191 templates/dcim/platform.html:27 +#: templates/virtualization/virtualmachine.html:30 +#: virtualization/forms/bulk_edit.py:159 +#: virtualization/forms/bulk_import.py:122 +#: virtualization/forms/filtersets.py:164 +#: virtualization/forms/model_forms.py:206 +msgid "Platform" +msgstr "Платформа" + +#: dcim/forms/bulk_edit.py:621 dcim/forms/bulk_edit.py:1171 +#: dcim/forms/bulk_edit.py:1534 dcim/forms/bulk_edit.py:1580 +#: dcim/forms/bulk_import.py:578 dcim/forms/bulk_import.py:640 +#: dcim/forms/bulk_import.py:666 dcim/forms/bulk_import.py:692 +#: dcim/forms/bulk_import.py:712 dcim/forms/bulk_import.py:765 +#: dcim/forms/bulk_import.py:879 dcim/forms/bulk_import.py:927 +#: dcim/forms/bulk_import.py:944 dcim/forms/bulk_import.py:956 +#: dcim/forms/bulk_import.py:1004 dcim/forms/bulk_import.py:1350 +#: dcim/forms/connections.py:23 dcim/forms/filtersets.py:128 +#: dcim/forms/filtersets.py:831 dcim/forms/filtersets.py:964 +#: dcim/forms/filtersets.py:1154 dcim/forms/filtersets.py:1176 +#: dcim/forms/filtersets.py:1198 dcim/forms/filtersets.py:1215 +#: dcim/forms/filtersets.py:1235 dcim/forms/filtersets.py:1343 +#: dcim/forms/filtersets.py:1365 dcim/forms/filtersets.py:1386 +#: dcim/forms/filtersets.py:1401 dcim/forms/filtersets.py:1412 +#: dcim/forms/filtersets.py:1476 dcim/forms/filtersets.py:1500 +#: dcim/forms/filtersets.py:1524 dcim/forms/model_forms.py:555 +#: dcim/forms/model_forms.py:753 dcim/forms/model_forms.py:1004 +#: dcim/forms/model_forms.py:1453 dcim/forms/object_create.py:256 +#: dcim/tables/connections.py:22 dcim/tables/connections.py:41 +#: dcim/tables/connections.py:60 dcim/tables/devices.py:314 +#: dcim/tables/devices.py:374 dcim/tables/devices.py:418 +#: dcim/tables/devices.py:463 dcim/tables/devices.py:517 +#: dcim/tables/devices.py:609 dcim/tables/devices.py:710 +#: dcim/tables/devices.py:770 dcim/tables/devices.py:820 +#: dcim/tables/devices.py:880 dcim/tables/devices.py:932 +#: dcim/tables/devices.py:1058 dcim/tables/modules.py:52 +#: extras/forms/filtersets.py:329 ipam/forms/bulk_import.py:303 +#: ipam/forms/bulk_import.py:489 ipam/forms/filtersets.py:532 +#: ipam/forms/model_forms.py:685 ipam/tables/vlans.py:176 +#: templates/dcim/consoleport.html:23 templates/dcim/consoleserverport.html:23 +#: templates/dcim/device.html:14 templates/dcim/device.html:128 +#: templates/dcim/device_edit.html:10 templates/dcim/devicebay.html:23 +#: templates/dcim/devicebay.html:55 templates/dcim/frontport.html:23 +#: templates/dcim/interface.html:31 templates/dcim/interface.html:167 +#: templates/dcim/inventoryitem.html:21 templates/dcim/module.html:55 +#: templates/dcim/modulebay.html:21 templates/dcim/poweroutlet.html:23 +#: templates/dcim/powerport.html:23 templates/dcim/rearport.html:23 +#: templates/dcim/virtualchassis.html:58 +#: templates/dcim/virtualchassis_edit.html:52 +#: templates/dcim/virtualdevicecontext.html:25 +#: templates/ipam/ipaddress_edit.html:42 templates/ipam/service_create.html:17 +#: templates/ipam/service_edit.html:16 +#: templates/virtualization/virtualmachine.html:115 +#: templates/vpn/l2vpntermination_edit.html:22 +#: templates/vpn/tunneltermination.html:24 +#: templates/wireless/inc/wirelesslink_interface.html:6 +#: virtualization/filtersets.py:166 virtualization/forms/bulk_edit.py:136 +#: virtualization/forms/bulk_import.py:99 +#: virtualization/forms/filtersets.py:124 +#: virtualization/forms/model_forms.py:188 +#: virtualization/tables/virtualmachines.py:61 vpn/choices.py:44 +#: vpn/forms/bulk_import.py:86 vpn/forms/bulk_import.py:278 +#: vpn/forms/filtersets.py:271 vpn/forms/model_forms.py:89 +#: vpn/forms/model_forms.py:124 vpn/forms/model_forms.py:237 +#: wireless/forms/model_forms.py:100 wireless/forms/model_forms.py:140 +#: wireless/tables/wirelesslan.py:75 +msgid "Device" +msgstr "Устройство" + +#: dcim/forms/bulk_edit.py:624 netbox/navigation/menu.py:441 +#: templates/extras/dashboard/widget_config.html:7 +msgid "Configuration" +msgstr "Конфигурация" + +#: dcim/forms/bulk_edit.py:638 dcim/forms/bulk_import.py:590 +#: dcim/forms/model_forms.py:569 dcim/forms/model_forms.py:795 +msgid "Module type" +msgstr "Тип модуля" + +#: dcim/forms/bulk_edit.py:689 dcim/forms/bulk_edit.py:874 +#: dcim/forms/bulk_edit.py:893 dcim/forms/bulk_edit.py:916 +#: dcim/forms/bulk_edit.py:958 dcim/forms/bulk_edit.py:1002 +#: dcim/forms/bulk_edit.py:1053 dcim/forms/bulk_edit.py:1080 +#: dcim/forms/bulk_edit.py:1107 dcim/forms/bulk_edit.py:1125 +#: dcim/forms/bulk_edit.py:1143 dcim/forms/filtersets.py:64 +#: dcim/forms/object_create.py:45 templates/dcim/cable.html:33 +#: templates/dcim/consoleport.html:35 templates/dcim/consoleserverport.html:35 +#: templates/dcim/devicebay.html:31 templates/dcim/frontport.html:35 +#: templates/dcim/inc/panels/inventory_items.html:11 +#: templates/dcim/interface.html:43 templates/dcim/inventoryitem.html:33 +#: templates/dcim/modulebay.html:31 templates/dcim/poweroutlet.html:35 +#: templates/dcim/powerport.html:35 templates/dcim/rearport.html:35 +#: templates/extras/customfield.html:27 templates/generic/bulk_import.html:155 +msgid "Label" +msgstr "Этикетка" + +#: dcim/forms/bulk_edit.py:698 dcim/forms/filtersets.py:981 +#: templates/dcim/cable.html:51 +msgid "Length" +msgstr "Длина" + +#: dcim/forms/bulk_edit.py:703 dcim/forms/bulk_import.py:1158 +#: dcim/forms/bulk_import.py:1161 dcim/forms/filtersets.py:985 +msgid "Length unit" +msgstr "Единица длины" + +#: dcim/forms/bulk_edit.py:727 templates/dcim/virtualchassis.html:24 +msgid "Domain" +msgstr "Домен" + +#: dcim/forms/bulk_edit.py:795 dcim/forms/bulk_import.py:1273 +#: dcim/forms/filtersets.py:1071 dcim/forms/model_forms.py:657 +msgid "Power panel" +msgstr "Панель питания" + +#: dcim/forms/bulk_edit.py:817 dcim/forms/bulk_import.py:1309 +#: dcim/forms/filtersets.py:1093 templates/dcim/powerfeed.html:90 +msgid "Supply" +msgstr "Снабжение" + +#: dcim/forms/bulk_edit.py:823 dcim/forms/bulk_import.py:1314 +#: dcim/forms/filtersets.py:1098 templates/dcim/powerfeed.html:102 +msgid "Phase" +msgstr "Фаза" + +#: dcim/forms/bulk_edit.py:829 dcim/forms/filtersets.py:1103 +#: templates/dcim/powerfeed.html:94 +msgid "Voltage" +msgstr "Напряжение" + +#: dcim/forms/bulk_edit.py:833 dcim/forms/filtersets.py:1107 +#: templates/dcim/powerfeed.html:98 +msgid "Amperage" +msgstr "Сила тока" + +#: dcim/forms/bulk_edit.py:837 dcim/forms/filtersets.py:1111 +msgid "Max utilization" +msgstr "Максимальное использование" + +#: dcim/forms/bulk_edit.py:841 dcim/forms/bulk_edit.py:1200 +#: dcim/forms/bulk_edit.py:1217 dcim/forms/bulk_edit.py:1234 +#: dcim/forms/bulk_edit.py:1252 dcim/forms/bulk_edit.py:1340 +#: dcim/forms/bulk_edit.py:1478 dcim/forms/bulk_edit.py:1495 +msgid "Mark connected" +msgstr "Отметить подключение" + +#: dcim/forms/bulk_edit.py:926 +msgid "Maximum draw" +msgstr "Максимальная ничья" + +#: dcim/forms/bulk_edit.py:929 dcim/models/device_component_templates.py:256 +#: dcim/models/device_components.py:357 +msgid "Maximum power draw (watts)" +msgstr "Максимальная потребляемая мощность (Вт)" + +#: dcim/forms/bulk_edit.py:932 +msgid "Allocated draw" +msgstr "Распределенная ничья" + +#: dcim/forms/bulk_edit.py:935 dcim/models/device_component_templates.py:263 +#: dcim/models/device_components.py:364 +msgid "Allocated power draw (watts)" +msgstr "Распределенная потребляемая мощность (Вт)" + +#: dcim/forms/bulk_edit.py:968 dcim/forms/bulk_import.py:723 +#: dcim/forms/model_forms.py:848 dcim/forms/model_forms.py:1076 +#: dcim/forms/model_forms.py:1361 dcim/forms/object_import.py:60 +msgid "Power port" +msgstr "Порт питания" + +#: dcim/forms/bulk_edit.py:973 +msgid "Feed leg" +msgstr "Кормовая ножка" + +#: dcim/forms/bulk_edit.py:1019 dcim/forms/bulk_edit.py:1325 +msgid "Management only" +msgstr "Только управление" + +#: dcim/forms/bulk_edit.py:1029 dcim/forms/bulk_edit.py:1331 +#: dcim/forms/bulk_import.py:813 dcim/forms/filtersets.py:1294 +#: dcim/forms/object_import.py:95 +#: dcim/models/device_component_templates.py:411 +#: dcim/models/device_components.py:671 +msgid "PoE mode" +msgstr "Режим PoE" + +#: dcim/forms/bulk_edit.py:1035 dcim/forms/bulk_edit.py:1337 +#: dcim/forms/bulk_import.py:819 dcim/forms/filtersets.py:1299 +#: dcim/forms/object_import.py:100 +#: dcim/models/device_component_templates.py:417 +#: dcim/models/device_components.py:677 +msgid "PoE type" +msgstr "Тип PoE" + +#: dcim/forms/bulk_edit.py:1041 dcim/forms/filtersets.py:1304 +#: dcim/forms/object_import.py:105 +msgid "Wireless role" +msgstr "Роль беспроводной связи" + +#: dcim/forms/bulk_edit.py:1178 dcim/forms/model_forms.py:588 +#: dcim/forms/model_forms.py:1019 dcim/tables/devices.py:337 +#: templates/dcim/consoleport.html:27 templates/dcim/consoleserverport.html:27 +#: templates/dcim/frontport.html:27 templates/dcim/interface.html:35 +#: templates/dcim/module.html:51 templates/dcim/modulebay.html:57 +#: templates/dcim/poweroutlet.html:27 templates/dcim/powerport.html:27 +#: templates/dcim/rearport.html:27 +msgid "Module" +msgstr "Модуль" + +#: dcim/forms/bulk_edit.py:1305 dcim/tables/devices.py:680 +#: templates/dcim/interface.html:113 +msgid "LAG" +msgstr "ОТСТАВАТЬ" + +#: dcim/forms/bulk_edit.py:1310 dcim/forms/model_forms.py:1103 +msgid "Virtual device contexts" +msgstr "Контексты виртуальных устройств" + +#: dcim/forms/bulk_edit.py:1316 dcim/forms/bulk_import.py:651 +#: dcim/forms/bulk_import.py:677 dcim/forms/filtersets.py:1163 +#: dcim/forms/filtersets.py:1185 dcim/forms/filtersets.py:1258 +#: dcim/tables/devices.py:621 +#: templates/circuits/inc/circuit_termination.html:94 +#: templates/dcim/consoleport.html:43 templates/dcim/consoleserverport.html:43 +msgid "Speed" +msgstr "Скорость" + +#: dcim/forms/bulk_edit.py:1345 dcim/forms/bulk_import.py:822 +#: templates/vpn/ikepolicy.html:26 templates/vpn/ipsecprofile.html:22 +#: templates/vpn/ipsecprofile.html:51 virtualization/forms/bulk_edit.py:232 +#: virtualization/forms/bulk_import.py:165 vpn/forms/bulk_edit.py:145 +#: vpn/forms/bulk_edit.py:233 vpn/forms/bulk_import.py:175 +#: vpn/forms/bulk_import.py:229 vpn/forms/filtersets.py:132 +#: vpn/forms/filtersets.py:175 vpn/forms/filtersets.py:189 +#: vpn/tables/crypto.py:64 vpn/tables/crypto.py:162 +msgid "Mode" +msgstr "Режим" + +#: dcim/forms/bulk_edit.py:1353 dcim/forms/model_forms.py:1152 +#: ipam/forms/bulk_import.py:177 ipam/forms/filtersets.py:479 +#: ipam/models/vlans.py:84 virtualization/forms/bulk_edit.py:239 +#: virtualization/forms/model_forms.py:324 +msgid "VLAN group" +msgstr "Группа VLAN" + +#: dcim/forms/bulk_edit.py:1361 dcim/forms/model_forms.py:1157 +#: dcim/tables/devices.py:594 virtualization/forms/bulk_edit.py:247 +#: virtualization/forms/model_forms.py:329 +msgid "Untagged VLAN" +msgstr "VLAN без тегов" + +#: dcim/forms/bulk_edit.py:1369 dcim/forms/model_forms.py:1166 +#: dcim/tables/devices.py:600 virtualization/forms/bulk_edit.py:255 +#: virtualization/forms/model_forms.py:338 +msgid "Tagged VLANs" +msgstr "VLAN с тегами" + +#: dcim/forms/bulk_edit.py:1379 dcim/forms/model_forms.py:1139 +msgid "Wireless LAN group" +msgstr "Группа беспроводной локальной сети" + +#: dcim/forms/bulk_edit.py:1384 dcim/forms/model_forms.py:1144 +#: dcim/tables/devices.py:630 netbox/navigation/menu.py:134 +#: templates/dcim/interface.html:289 wireless/tables/wirelesslan.py:24 +msgid "Wireless LANs" +msgstr "Беспроводные локальные сети" + +#: dcim/forms/bulk_edit.py:1393 dcim/forms/filtersets.py:1231 +#: dcim/forms/model_forms.py:1185 ipam/forms/bulk_edit.py:270 +#: ipam/forms/bulk_edit.py:361 ipam/forms/filtersets.py:166 +#: templates/dcim/interface.html:126 templates/ipam/prefix.html:96 +#: virtualization/forms/model_forms.py:352 +msgid "Addressing" +msgstr "Адресация" + +#: dcim/forms/bulk_edit.py:1394 dcim/forms/filtersets.py:651 +#: dcim/forms/model_forms.py:1186 virtualization/forms/model_forms.py:353 +msgid "Operation" +msgstr "Операция" + +#: dcim/forms/bulk_edit.py:1395 dcim/forms/filtersets.py:1232 +#: dcim/forms/model_forms.py:880 dcim/forms/model_forms.py:1188 +msgid "PoE" +msgstr "PoE" + +#: dcim/forms/bulk_edit.py:1396 dcim/forms/model_forms.py:1187 +#: templates/dcim/interface.html:101 virtualization/forms/bulk_edit.py:266 +#: virtualization/forms/model_forms.py:354 +msgid "Related Interfaces" +msgstr "Связанные интерфейсы" + +#: dcim/forms/bulk_edit.py:1397 dcim/forms/model_forms.py:1189 +#: virtualization/forms/bulk_edit.py:267 +#: virtualization/forms/model_forms.py:355 +msgid "802.1Q Switching" +msgstr "Коммутация 802.1Q" + +#: dcim/forms/bulk_edit.py:1458 dcim/forms/bulk_edit.py:1460 +msgid "Interface mode must be specified to assign VLANs" +msgstr "Для назначения VLAN необходимо указать режим интерфейса" + +#: dcim/forms/bulk_edit.py:1465 dcim/forms/common.py:50 +msgid "An access interface cannot have tagged VLANs assigned." +msgstr "Интерфейсу доступа нельзя назначать VLAN с тегами." + +#: dcim/forms/bulk_import.py:63 +msgid "Name of parent region" +msgstr "Название родительского региона" + +#: dcim/forms/bulk_import.py:77 +msgid "Name of parent site group" +msgstr "Имя родительской группы сайтов" + +#: dcim/forms/bulk_import.py:96 +msgid "Assigned region" +msgstr "Назначенный регион" + +#: dcim/forms/bulk_import.py:103 tenancy/forms/bulk_import.py:44 +#: tenancy/forms/bulk_import.py:85 wireless/forms/bulk_import.py:40 +msgid "Assigned group" +msgstr "Назначенная группа" + +#: dcim/forms/bulk_import.py:122 +msgid "available options" +msgstr "доступные опции" + +#: dcim/forms/bulk_import.py:133 dcim/forms/bulk_import.py:480 +#: dcim/forms/bulk_import.py:1270 ipam/forms/bulk_import.py:174 +#: ipam/forms/bulk_import.py:441 virtualization/forms/bulk_import.py:63 +#: virtualization/forms/bulk_import.py:89 +msgid "Assigned site" +msgstr "Назначенный сайт" + +#: dcim/forms/bulk_import.py:140 +msgid "Parent location" +msgstr "Местонахождение родителей" + +#: dcim/forms/bulk_import.py:142 +msgid "Location not found." +msgstr "Местоположение не найдено." + +#: dcim/forms/bulk_import.py:191 +msgid "Name of assigned tenant" +msgstr "Имя назначенного арендатора" + +#: dcim/forms/bulk_import.py:203 +msgid "Name of assigned role" +msgstr "Название назначенной роли" + +#: dcim/forms/bulk_import.py:209 +msgid "Rack type" +msgstr "Тип стеллажа" + +#: dcim/forms/bulk_import.py:214 +msgid "Rail-to-rail width (in inches)" +msgstr "Ширина от рельса до рельса (в дюймах)" + +#: dcim/forms/bulk_import.py:220 +msgid "Unit for outer dimensions" +msgstr "Единица измерения внешних размеров" + +#: dcim/forms/bulk_import.py:226 +msgid "Unit for rack weights" +msgstr "Устройство для стоечных весов" + +#: dcim/forms/bulk_import.py:252 +msgid "Parent site" +msgstr "Родительский сайт" + +#: dcim/forms/bulk_import.py:259 dcim/forms/bulk_import.py:1283 +msgid "Rack's location (if any)" +msgstr "Местоположение стойки (если есть)" + +#: dcim/forms/bulk_import.py:268 dcim/forms/model_forms.py:246 +#: dcim/tables/racks.py:153 templates/dcim/rackreservation.html:12 +#: templates/dcim/rackreservation.html:52 +msgid "Units" +msgstr "Единицы" + +#: dcim/forms/bulk_import.py:271 +msgid "Comma-separated list of individual unit numbers" +msgstr "Список отдельных номеров объектов, разделенных запятыми" + +#: dcim/forms/bulk_import.py:314 +msgid "The manufacturer which produces this device type" +msgstr "Производитель, выпускающий этот тип устройства" + +#: dcim/forms/bulk_import.py:321 +msgid "The default platform for devices of this type (optional)" +msgstr "Платформа по умолчанию для устройств этого типа (опционально)" + +#: dcim/forms/bulk_import.py:326 +msgid "Device weight" +msgstr "Вес устройства" + +#: dcim/forms/bulk_import.py:332 +msgid "Unit for device weight" +msgstr "Единица измерения веса устройства" + +#: dcim/forms/bulk_import.py:352 +msgid "Module weight" +msgstr "Вес модуля" + +#: dcim/forms/bulk_import.py:358 +msgid "Unit for module weight" +msgstr "Единица измерения веса модуля" + +#: dcim/forms/bulk_import.py:391 +msgid "Limit platform assignments to this manufacturer" +msgstr "Ограничьте назначение платформ этому производителю" + +#: dcim/forms/bulk_import.py:413 tenancy/forms/bulk_import.py:106 +msgid "Assigned role" +msgstr "Назначенная роль" + +#: dcim/forms/bulk_import.py:426 +msgid "Device type manufacturer" +msgstr "Производитель типа устройства" + +#: dcim/forms/bulk_import.py:432 +msgid "Device type model" +msgstr "Тип устройства, модель" + +#: dcim/forms/bulk_import.py:439 virtualization/forms/bulk_import.py:126 +msgid "Assigned platform" +msgstr "Назначенная платформа" + +#: dcim/forms/bulk_import.py:447 dcim/forms/bulk_import.py:451 +#: dcim/forms/model_forms.py:461 +msgid "Virtual chassis" +msgstr "Виртуальное шасси" + +#: dcim/forms/bulk_import.py:454 dcim/forms/model_forms.py:450 +#: dcim/tables/devices.py:231 extras/filtersets.py:501 +#: extras/forms/filtersets.py:330 ipam/forms/bulk_edit.py:478 +#: ipam/forms/model_forms.py:588 templates/dcim/device.html:239 +#: templates/virtualization/cluster.html:11 +#: templates/virtualization/virtualmachine.html:92 +#: templates/virtualization/virtualmachine.html:102 +#: virtualization/filtersets.py:156 virtualization/filtersets.py:271 +#: virtualization/forms/bulk_edit.py:128 +#: virtualization/forms/bulk_import.py:92 +#: virtualization/forms/filtersets.py:98 +#: virtualization/forms/filtersets.py:119 +#: virtualization/forms/filtersets.py:196 +#: virtualization/forms/model_forms.py:82 +#: virtualization/forms/model_forms.py:179 +#: virtualization/tables/virtualmachines.py:57 +msgid "Cluster" +msgstr "Кластер" + +#: dcim/forms/bulk_import.py:458 +msgid "Virtualization cluster" +msgstr "Кластер виртуализации" + +#: dcim/forms/bulk_import.py:487 +msgid "Assigned location (if any)" +msgstr "Назначенное местоположение (если есть)" + +#: dcim/forms/bulk_import.py:494 +msgid "Assigned rack (if any)" +msgstr "Назначенная стойка (если есть)" + +#: dcim/forms/bulk_import.py:497 +msgid "Face" +msgstr "Лицо" + +#: dcim/forms/bulk_import.py:500 +msgid "Mounted rack face" +msgstr "Смонтированная поверхность стойки" + +#: dcim/forms/bulk_import.py:507 +msgid "Parent device (for child devices)" +msgstr "Родительское устройство (для дочерних устройств)" + +#: dcim/forms/bulk_import.py:510 +msgid "Device bay" +msgstr "Отсек для устройств" + +#: dcim/forms/bulk_import.py:514 +msgid "Device bay in which this device is installed (for child devices)" +msgstr "" +"Отсек для устройств, в котором установлено данное устройство (для детских " +"устройств)" + +#: dcim/forms/bulk_import.py:520 +msgid "Airflow direction" +msgstr "Направление воздушного потока" + +#: dcim/forms/bulk_import.py:581 +msgid "The device in which this module is installed" +msgstr "Устройство, в котором установлен данный модуль" + +#: dcim/forms/bulk_import.py:584 dcim/forms/model_forms.py:562 +msgid "Module bay" +msgstr "Отсек для модулей" + +#: dcim/forms/bulk_import.py:587 +msgid "The module bay in which this module is installed" +msgstr "Отсек для модулей, в котором установлен данный модуль" + +#: dcim/forms/bulk_import.py:593 +msgid "The type of module" +msgstr "Тип модуля" + +#: dcim/forms/bulk_import.py:601 dcim/forms/model_forms.py:575 +msgid "Replicate components" +msgstr "Репликация компонентов" + +#: dcim/forms/bulk_import.py:603 +msgid "" +"Automatically populate components associated with this module type (enabled " +"by default)" +msgstr "" +"Автоматическое заполнение компонентов, связанных с этим типом модуля " +"(включено по умолчанию)" + +#: dcim/forms/bulk_import.py:606 dcim/forms/model_forms.py:581 +msgid "Adopt components" +msgstr "Применяйте компоненты" + +#: dcim/forms/bulk_import.py:608 dcim/forms/model_forms.py:584 +msgid "Adopt already existing components" +msgstr "Используйте уже существующие компоненты" + +#: dcim/forms/bulk_import.py:648 dcim/forms/bulk_import.py:674 +#: dcim/forms/bulk_import.py:700 +msgid "Port type" +msgstr "Тип порта" + +#: dcim/forms/bulk_import.py:656 dcim/forms/bulk_import.py:682 +msgid "Port speed in bps" +msgstr "Скорость порта в бит/с" + +#: dcim/forms/bulk_import.py:720 +msgid "Outlet type" +msgstr "Тип розетки" + +#: dcim/forms/bulk_import.py:727 +msgid "Local power port which feeds this outlet" +msgstr "Локальный порт питания, питающий эту розетку" + +#: dcim/forms/bulk_import.py:730 +msgid "Feed lag" +msgstr "Задержка подачи" + +#: dcim/forms/bulk_import.py:733 +msgid "Electrical phase (for three-phase circuits)" +msgstr "Электрическая фаза (для трехфазных цепей)" + +#: dcim/forms/bulk_import.py:774 dcim/forms/model_forms.py:1114 +#: virtualization/forms/bulk_import.py:155 +#: virtualization/forms/model_forms.py:308 +msgid "Parent interface" +msgstr "Родительский интерфейс" + +#: dcim/forms/bulk_import.py:781 dcim/forms/model_forms.py:1122 +#: virtualization/forms/bulk_import.py:162 +#: virtualization/forms/model_forms.py:316 +msgid "Bridged interface" +msgstr "Мостовой интерфейс" + +#: dcim/forms/bulk_import.py:784 +msgid "Lag" +msgstr "Отставание" + +#: dcim/forms/bulk_import.py:788 +msgid "Parent LAG interface" +msgstr "Родительский интерфейс LAG" + +#: dcim/forms/bulk_import.py:791 +msgid "Vdcs" +msgstr "Видеомагнитофоны" + +#: dcim/forms/bulk_import.py:796 +msgid "VDC names separated by commas, encased with double quotes. Example:" +msgstr "Имена VDC разделены запятыми и заключены в двойные кавычки. Пример:" + +#: dcim/forms/bulk_import.py:802 +msgid "Physical medium" +msgstr "Физическая среда" + +#: dcim/forms/bulk_import.py:805 dcim/forms/filtersets.py:1265 +msgid "Duplex" +msgstr "Двухуровневый" + +#: dcim/forms/bulk_import.py:810 +msgid "Poe mode" +msgstr "Режим Poe" + +#: dcim/forms/bulk_import.py:816 +msgid "Poe type" +msgstr "Тип Poe" + +#: dcim/forms/bulk_import.py:825 virtualization/forms/bulk_import.py:168 +msgid "IEEE 802.1Q operational mode (for L2 interfaces)" +msgstr "Рабочий режим IEEE 802.1Q (для интерфейсов L2)" + +#: dcim/forms/bulk_import.py:832 ipam/forms/bulk_import.py:160 +#: ipam/forms/bulk_import.py:246 ipam/forms/bulk_import.py:282 +#: ipam/forms/filtersets.py:196 ipam/forms/filtersets.py:266 +#: ipam/forms/filtersets.py:322 virtualization/forms/bulk_import.py:175 +msgid "Assigned VRF" +msgstr "Назначенный VRF" + +#: dcim/forms/bulk_import.py:835 +msgid "Rf role" +msgstr "Роль Rf" + +#: dcim/forms/bulk_import.py:838 +msgid "Wireless role (AP/station)" +msgstr "Роль беспроводной сети (точка доступа/станция)" + +#: dcim/forms/bulk_import.py:884 dcim/forms/model_forms.py:893 +#: dcim/forms/model_forms.py:1369 dcim/forms/object_import.py:122 +msgid "Rear port" +msgstr "Задний порт" + +#: dcim/forms/bulk_import.py:887 +msgid "Corresponding rear port" +msgstr "Соответствующий задний порт" + +#: dcim/forms/bulk_import.py:892 dcim/forms/bulk_import.py:933 +#: dcim/forms/bulk_import.py:1148 +msgid "Physical medium classification" +msgstr "Классификация физических сред" + +#: dcim/forms/bulk_import.py:961 dcim/tables/devices.py:841 +msgid "Installed device" +msgstr "Установленное устройство" + +#: dcim/forms/bulk_import.py:965 +msgid "Child device installed within this bay" +msgstr "Детское устройство, установленное в этом отсеке" + +#: dcim/forms/bulk_import.py:967 +msgid "Child device not found." +msgstr "Детское устройство не найдено." + +#: dcim/forms/bulk_import.py:1025 +msgid "Parent inventory item" +msgstr "Предмет родительского инвентаря" + +#: dcim/forms/bulk_import.py:1028 +msgid "Component type" +msgstr "Тип компонента" + +#: dcim/forms/bulk_import.py:1032 +msgid "Component Type" +msgstr "Тип компонента" + +#: dcim/forms/bulk_import.py:1035 +msgid "Compnent name" +msgstr "Имя компонента" + +#: dcim/forms/bulk_import.py:1037 +msgid "Component Name" +msgstr "Имя компонента" + +#: dcim/forms/bulk_import.py:1103 +msgid "Side A device" +msgstr "Устройство на стороне А" + +#: dcim/forms/bulk_import.py:1106 dcim/forms/bulk_import.py:1124 +msgid "Device name" +msgstr "Имя устройства" + +#: dcim/forms/bulk_import.py:1109 +msgid "Side A type" +msgstr "Сторона типа А" + +#: dcim/forms/bulk_import.py:1112 dcim/forms/bulk_import.py:1130 +msgid "Termination type" +msgstr "Тип прекращения" + +#: dcim/forms/bulk_import.py:1115 +msgid "Side A name" +msgstr "Название стороны А" + +#: dcim/forms/bulk_import.py:1116 dcim/forms/bulk_import.py:1134 +msgid "Termination name" +msgstr "Название увольнения" + +#: dcim/forms/bulk_import.py:1121 +msgid "Side B device" +msgstr "Устройство на стороне B" + +#: dcim/forms/bulk_import.py:1127 +msgid "Side B type" +msgstr "Тип стороны B" + +#: dcim/forms/bulk_import.py:1133 +msgid "Side B name" +msgstr "Название стороны B" + +#: dcim/forms/bulk_import.py:1142 wireless/forms/bulk_import.py:86 +msgid "Connection status" +msgstr "Состояние подключения" + +#: dcim/forms/bulk_import.py:1221 dcim/forms/model_forms.py:689 +#: dcim/tables/devices.py:1028 templates/dcim/device.html:130 +#: templates/dcim/virtualchassis.html:28 templates/dcim/virtualchassis.html:60 +msgid "Master" +msgstr "Мастер" + +#: dcim/forms/bulk_import.py:1225 +msgid "Master device" +msgstr "Мастер-устройство" + +#: dcim/forms/bulk_import.py:1242 +msgid "Name of parent site" +msgstr "Название родительского сайта" + +#: dcim/forms/bulk_import.py:1276 +msgid "Upstream power panel" +msgstr "Панель питания в восходящем направлении" + +#: dcim/forms/bulk_import.py:1306 +msgid "Primary or redundant" +msgstr "Основное или резервное" + +#: dcim/forms/bulk_import.py:1311 +msgid "Supply type (AC/DC)" +msgstr "Тип питания (AC/DC)" + +#: dcim/forms/bulk_import.py:1316 +msgid "Single or three-phase" +msgstr "Однофазный или трехфазный" + +#: dcim/forms/common.py:24 dcim/models/device_components.py:528 +#: templates/dcim/interface.html:58 +#: templates/virtualization/vminterface.html:58 +#: virtualization/forms/bulk_edit.py:224 +msgid "MTU" +msgstr "МАТУ" + +#: dcim/forms/common.py:65 +#, python-brace-format +msgid "" +"The tagged VLANs ({vlans}) must belong to the same site as the interface's " +"parent device/VM, or they must be global" +msgstr "" +"VLAN с тегами ({vlans}) должны принадлежать тому же сайту, что и " +"родительское устройство/виртуальная машина интерфейса, или они должны быть " +"глобальными" + +#: dcim/forms/common.py:110 +msgid "" +"Cannot install module with placeholder values in a module bay with no " +"position defined." +msgstr "" +"Невозможно установить модуль со значениями-заполнителями в модульном отсеке " +"без определенного положения." + +#: dcim/forms/common.py:119 +#, python-brace-format +msgid "Cannot adopt {model} {name} as it already belongs to a module" +msgstr "" +"Невозможно усыновить {model} {name} поскольку оно уже принадлежит модулю" + +#: dcim/forms/common.py:128 +#, python-brace-format +msgid "A {model} named {name} already exists" +msgstr "A {model} названный {name} уже существует" + +#: dcim/forms/connections.py:45 dcim/tables/power.py:66 +#: templates/dcim/inc/cable_termination.html:37 +#: templates/dcim/powerfeed.html:27 templates/dcim/powerpanel.html:19 +#: templates/dcim/trace/powerpanel.html:4 +msgid "Power Panel" +msgstr "Панель питания" + +#: dcim/forms/connections.py:54 dcim/forms/model_forms.py:670 +#: templates/dcim/powerfeed.html:22 templates/dcim/powerport.html:84 +msgid "Power Feed" +msgstr "Подача питания" + +#: dcim/forms/connections.py:74 +msgid "Side" +msgstr "Сторона" + +#: dcim/forms/filtersets.py:141 +msgid "Parent region" +msgstr "Родительский регион" + +#: dcim/forms/filtersets.py:155 tenancy/forms/bulk_import.py:28 +#: tenancy/forms/bulk_import.py:62 tenancy/forms/filtersets.py:32 +#: tenancy/forms/filtersets.py:61 wireless/forms/bulk_import.py:25 +#: wireless/forms/filtersets.py:24 +msgid "Parent group" +msgstr "Родительская группа" + +#: dcim/forms/filtersets.py:246 dcim/forms/filtersets.py:331 +msgid "Function" +msgstr "Функция" + +#: dcim/forms/filtersets.py:418 dcim/forms/model_forms.py:308 +#: templates/inc/panels/image_attachments.html:5 +msgid "Images" +msgstr "Изображения" + +#: dcim/forms/filtersets.py:419 dcim/forms/filtersets.py:544 +#: dcim/forms/filtersets.py:655 +msgid "Components" +msgstr "Компоненты" + +#: dcim/forms/filtersets.py:441 +msgid "Subdevice role" +msgstr "Роль подустройства" + +#: dcim/forms/filtersets.py:717 +msgid "Model" +msgstr "модель" + +#: dcim/forms/filtersets.py:768 +msgid "Virtual chassis member" +msgstr "Элемент виртуального шасси" + +#: dcim/forms/filtersets.py:1123 +msgid "Cabled" +msgstr "Кабельный" + +#: dcim/forms/filtersets.py:1130 +msgid "Occupied" +msgstr "Оккупированный" + +#: dcim/forms/filtersets.py:1155 dcim/forms/filtersets.py:1177 +#: dcim/forms/filtersets.py:1199 dcim/forms/filtersets.py:1216 +#: dcim/forms/filtersets.py:1236 dcim/tables/devices.py:367 +#: templates/dcim/consoleport.html:59 templates/dcim/consoleserverport.html:59 +#: templates/dcim/frontport.html:74 templates/dcim/interface.html:146 +#: templates/dcim/powerfeed.html:118 templates/dcim/poweroutlet.html:63 +#: templates/dcim/powerport.html:63 templates/dcim/rearport.html:70 +msgid "Connection" +msgstr "Подключение" + +#: dcim/forms/filtersets.py:1245 dcim/forms/model_forms.py:1477 +#: templates/dcim/virtualdevicecontext.html:16 +msgid "Virtual Device Context" +msgstr "Контекст виртуального устройства" + +#: dcim/forms/filtersets.py:1248 extras/forms/bulk_edit.py:315 +#: extras/forms/bulk_import.py:239 extras/forms/filtersets.py:479 +#: extras/forms/model_forms.py:548 extras/tables/tables.py:482 +#: templates/extras/journalentry.html:33 +msgid "Kind" +msgstr "Добрый" + +#: dcim/forms/filtersets.py:1277 +msgid "Mgmt only" +msgstr "Только менеджмент" + +#: dcim/forms/filtersets.py:1289 dcim/forms/model_forms.py:1180 +#: dcim/models/device_components.py:630 templates/dcim/interface.html:134 +msgid "WWN" +msgstr "ЛЕБЕДЬ" + +#: dcim/forms/filtersets.py:1309 +msgid "Wireless channel" +msgstr "Беспроводной канал" + +#: dcim/forms/filtersets.py:1313 +msgid "Channel frequency (MHz)" +msgstr "Частота канала (МГц)" + +#: dcim/forms/filtersets.py:1317 +msgid "Channel width (MHz)" +msgstr "Ширина канала (МГц)" + +#: dcim/forms/filtersets.py:1321 templates/dcim/interface.html:86 +msgid "Transmit power (dBm)" +msgstr "Мощность передачи (дБм)" + +#: dcim/forms/filtersets.py:1344 dcim/forms/filtersets.py:1366 +#: dcim/tables/devices.py:344 templates/dcim/cable.html:12 +#: templates/dcim/cable_edit.html:46 templates/dcim/cable_trace.html:43 +#: templates/dcim/frontport.html:84 +#: templates/dcim/inc/connection_endpoints.html:4 +#: templates/dcim/rearport.html:80 templates/dcim/trace/cable.html:7 +msgid "Cable" +msgstr "Кабель" + +#: dcim/forms/filtersets.py:1434 dcim/tables/devices.py:951 +msgid "Discovered" +msgstr "Обнаружено" + +#: dcim/forms/formsets.py:20 +#, python-brace-format +msgid "A virtual chassis member already exists in position {vc_position}." +msgstr "Виртуальный элемент шасси уже находится на месте {vc_position}." + +#: dcim/forms/model_forms.py:101 dcim/tables/devices.py:183 +#: templates/dcim/sitegroup.html:26 +msgid "Site Group" +msgstr "Группа сайтов" + +#: dcim/forms/model_forms.py:142 +msgid "Contact Info" +msgstr "Контактная информация" + +#: dcim/forms/model_forms.py:197 templates/dcim/rackrole.html:20 +msgid "Rack Role" +msgstr "Роль стойки" + +#: dcim/forms/model_forms.py:248 +msgid "" +"Comma-separated list of numeric unit IDs. A range may be specified using a " +"hyphen." +msgstr "" +"Список идентификаторов числовых единиц, разделенных запятыми. Диапазон можно" +" указать с помощью дефиса." + +#: dcim/forms/model_forms.py:259 dcim/tables/racks.py:133 +msgid "Reservation" +msgstr "Резервирование" + +#: dcim/forms/model_forms.py:297 dcim/forms/model_forms.py:380 +#: utilities/forms/fields/fields.py:47 +msgid "Slug" +msgstr "Пуля" + +#: dcim/forms/model_forms.py:304 templates/dcim/devicetype.html:12 +msgid "Chassis" +msgstr "Шасси" + +#: dcim/forms/model_forms.py:356 templates/dcim/devicerole.html:24 +msgid "Device Role" +msgstr "Роль устройства" + +#: dcim/forms/model_forms.py:424 dcim/models/devices.py:632 +msgid "The lowest-numbered unit occupied by the device" +msgstr "Устройство с наименьшим номером, занимаемое устройством" + +#: dcim/forms/model_forms.py:469 +msgid "The position in the virtual chassis this device is identified by" +msgstr "Положение в виртуальном корпусе этого устройства определяется по" + +#: dcim/forms/model_forms.py:473 templates/dcim/device.html:131 +#: templates/dcim/virtualchassis.html:61 +#: templates/dcim/virtualchassis_edit.html:57 +#: templates/ipam/inc/panels/fhrp_groups.html:13 +#: tenancy/forms/bulk_edit.py:146 tenancy/forms/filtersets.py:109 +msgid "Priority" +msgstr "Приоритет" + +#: dcim/forms/model_forms.py:474 +msgid "The priority of the device in the virtual chassis" +msgstr "Приоритет устройства в виртуальном шасси" + +#: dcim/forms/model_forms.py:578 +msgid "Automatically populate components associated with this module type" +msgstr "Автоматическое заполнение компонентов, связанных с этим типом модуля" + +#: dcim/forms/model_forms.py:623 +msgid "Maximum length is 32767 (any unit)" +msgstr "Максимальная длина 32767 (любая единица измерения)" + +#: dcim/forms/model_forms.py:671 +msgid "Characteristics" +msgstr "Характеристики" + +#: dcim/forms/model_forms.py:1130 +msgid "LAG interface" +msgstr "Интерфейс LAG" + +#: dcim/forms/model_forms.py:1184 dcim/forms/model_forms.py:1345 +#: dcim/tables/connections.py:65 ipam/forms/bulk_import.py:317 +#: ipam/forms/model_forms.py:270 ipam/forms/model_forms.py:279 +#: ipam/tables/fhrp.py:64 ipam/tables/ip.py:368 ipam/tables/vlans.py:165 +#: templates/circuits/inc/circuit_termination.html:78 +#: templates/dcim/frontport.html:113 templates/dcim/interface.html:27 +#: templates/dcim/interface.html:190 templates/dcim/interface.html:322 +#: templates/dcim/inventoryitem_edit.html:54 templates/dcim/rearport.html:109 +#: templates/ipam/fhrpgroupassignment_edit.html:11 +#: templates/virtualization/vminterface.html:19 +#: templates/vpn/tunneltermination.html:32 +#: templates/wireless/inc/wirelesslink_interface.html:10 +#: templates/wireless/wirelesslink.html:10 +#: templates/wireless/wirelesslink.html:49 +#: virtualization/forms/model_forms.py:351 vpn/forms/bulk_import.py:292 +#: vpn/forms/model_forms.py:94 vpn/forms/model_forms.py:129 +#: vpn/forms/model_forms.py:241 vpn/forms/model_forms.py:430 +#: vpn/forms/model_forms.py:439 vpn/tables/tunnels.py:87 +#: wireless/forms/model_forms.py:112 wireless/forms/model_forms.py:152 +msgid "Interface" +msgstr "Интерфейс" + +#: dcim/forms/model_forms.py:1278 +msgid "Child Device" +msgstr "Детское устройство" + +#: dcim/forms/model_forms.py:1279 +msgid "" +"Child devices must first be created and assigned to the site and rack of the" +" parent device." +msgstr "" +"Сначала необходимо создать дочерние устройства и назначить их сайту и стойке" +" родительского устройства." + +#: dcim/forms/model_forms.py:1321 +msgid "Console port" +msgstr "Консольный порт" + +#: dcim/forms/model_forms.py:1329 +msgid "Console server port" +msgstr "Порт консольного сервера" + +#: dcim/forms/model_forms.py:1337 +msgid "Front port" +msgstr "Передний порт" + +#: dcim/forms/model_forms.py:1353 +msgid "Power outlet" +msgstr "Розетка питания" + +#: dcim/forms/model_forms.py:1373 templates/dcim/inventoryitem.html:17 +#: templates/dcim/inventoryitem_edit.html:10 +msgid "Inventory Item" +msgstr "Предмет инвентаря" + +#: dcim/forms/model_forms.py:1425 +msgid "An InventoryItem can only be assigned to a single component." +msgstr "InventoryItem можно присвоить только одному компоненту." + +#: dcim/forms/model_forms.py:1439 templates/dcim/inventoryitemrole.html:15 +msgid "Inventory Item Role" +msgstr "Роль инвентарного предмета" + +#: dcim/forms/model_forms.py:1459 templates/dcim/device.html:195 +#: templates/dcim/virtualdevicecontext.html:33 +#: templates/virtualization/virtualmachine.html:51 +msgid "Primary IPv4" +msgstr "Основной IPv4" + +#: dcim/forms/model_forms.py:1468 templates/dcim/device.html:211 +#: templates/dcim/virtualdevicecontext.html:44 +#: templates/virtualization/virtualmachine.html:67 +msgid "Primary IPv6" +msgstr "Основной IPv6" + +#: dcim/forms/object_create.py:47 dcim/forms/object_create.py:198 +#: dcim/forms/object_create.py:354 +msgid "" +"Alphanumeric ranges are supported. (Must match the number of objects being " +"created.)" +msgstr "" +"Поддерживаются алфавитно-цифровые диапазоны. (Количество создаваемых " +"объектов должно соответствовать количеству создаваемых объектов.)" + +#: dcim/forms/object_create.py:67 +#, python-brace-format +msgid "" +"The provided pattern specifies {value_count} values, but {pattern_count} are" +" expected." +msgstr "" +"Предоставленный шаблон определяет {value_count} ценности, но {pattern_count}" +" ожидаются." + +#: dcim/forms/object_create.py:109 dcim/forms/object_create.py:270 +#: dcim/tables/devices.py:281 +msgid "Rear ports" +msgstr "Задние порты" + +#: dcim/forms/object_create.py:110 dcim/forms/object_create.py:271 +msgid "Select one rear port assignment for each front port being created." +msgstr "" +"Выберите одно назначение заднего порта для каждого создаваемого переднего " +"порта." + +#: dcim/forms/object_create.py:163 +#, python-brace-format +msgid "" +"The number of front port templates to be created ({frontport_count}) must " +"match the selected number of rear port positions ({rearport_count})." +msgstr "" +"Количество создаваемых шаблонов фронтальных портов ({frontport_count}) " +"должно соответствовать выбранному количеству положений задних портов " +"({rearport_count})." + +#: dcim/forms/object_create.py:250 +#, python-brace-format +msgid "" +"The string {module} will be replaced with the position of the " +"assigned module, if any." +msgstr "" +"Струна {module} будет заменено позицией назначенного модуля, " +"если таковая имеется." + +#: dcim/forms/object_create.py:319 +#, python-brace-format +msgid "" +"The number of front ports to be created ({frontport_count}) must match the " +"selected number of rear port positions ({rearport_count})." +msgstr "" +"Количество создаваемых фронтальных портов ({frontport_count}) должно " +"соответствовать выбранному количеству положений задних портов " +"({rearport_count})." + +#: dcim/forms/object_create.py:408 dcim/tables/devices.py:1034 +#: ipam/tables/fhrp.py:31 templates/dcim/virtualchassis.html:54 +#: templates/dcim/virtualchassis_edit.html:48 templates/ipam/fhrpgroup.html:39 +msgid "Members" +msgstr "Члены" + +#: dcim/forms/object_create.py:417 +msgid "Initial position" +msgstr "Исходное положение" + +#: dcim/forms/object_create.py:420 +msgid "" +"Position of the first member device. Increases by one for each additional " +"member." +msgstr "" +"Положение первого элементного устройства. Увеличивается на единицу за каждый" +" дополнительный элемент." + +#: dcim/forms/object_create.py:434 +msgid "A position must be specified for the first VC member." +msgstr "Должность должна быть указана для первого члена VC." + +#: dcim/models/cables.py:62 dcim/models/device_component_templates.py:55 +#: dcim/models/device_components.py:63 extras/models/customfields.py:108 +msgid "label" +msgstr "бирка" + +#: dcim/models/cables.py:71 +msgid "length" +msgstr "длина" + +#: dcim/models/cables.py:78 +msgid "length unit" +msgstr "единица длины" + +#: dcim/models/cables.py:93 +msgid "cable" +msgstr "кабель" + +#: dcim/models/cables.py:94 +msgid "cables" +msgstr "кабели" + +#: dcim/models/cables.py:190 +msgid "A and B terminations cannot connect to the same object." +msgstr "Терминалы A и B не могут подключаться к одному и тому же объекту." + +#: dcim/models/cables.py:257 ipam/models/asns.py:37 +msgid "end" +msgstr "конец" + +#: dcim/models/cables.py:310 +msgid "cable termination" +msgstr "заделение кабеля" + +#: dcim/models/cables.py:311 +msgid "cable terminations" +msgstr "кабельные концевые разъемы" + +#: dcim/models/cables.py:434 extras/models/configs.py:50 +msgid "is active" +msgstr "активен" + +#: dcim/models/cables.py:438 +msgid "is complete" +msgstr "завершен" + +#: dcim/models/cables.py:442 +msgid "is split" +msgstr "разделен" + +#: dcim/models/cables.py:450 +msgid "cable path" +msgstr "кабельная трасса" + +#: dcim/models/cables.py:451 +msgid "cable paths" +msgstr "кабельные трассы" + +#: dcim/models/device_component_templates.py:46 +#, python-brace-format +msgid "" +"{module} is accepted as a substitution for the module bay position when " +"attached to a module type." +msgstr "" +"{module} принимается в качестве замены положения отсека для модулей при " +"подключении к модулю того или иного типа." + +#: dcim/models/device_component_templates.py:58 +#: dcim/models/device_components.py:66 +msgid "Physical label" +msgstr "Физическая этикетка" + +#: dcim/models/device_component_templates.py:103 +msgid "Component templates cannot be moved to a different device type." +msgstr "Шаблоны компонентов нельзя перемещать на устройства другого типа." + +#: dcim/models/device_component_templates.py:154 +msgid "" +"A component template cannot be associated with both a device type and a " +"module type." +msgstr "" +"Шаблон компонента нельзя связать как с типом устройства, так и с типом " +"модуля." + +#: dcim/models/device_component_templates.py:158 +msgid "" +"A component template must be associated with either a device type or a " +"module type." +msgstr "" +"Шаблон компонента должен быть связан с типом устройства или типом модуля." + +#: dcim/models/device_component_templates.py:186 +msgid "console port template" +msgstr "шаблон консольного порта" + +#: dcim/models/device_component_templates.py:187 +msgid "console port templates" +msgstr "шаблоны консольных портов" + +#: dcim/models/device_component_templates.py:220 +msgid "console server port template" +msgstr "шаблон порта консольного сервера" + +#: dcim/models/device_component_templates.py:221 +msgid "console server port templates" +msgstr "шаблоны портов консольного сервера" + +#: dcim/models/device_component_templates.py:252 +#: dcim/models/device_components.py:353 +msgid "maximum draw" +msgstr "максимальная ничья" + +#: dcim/models/device_component_templates.py:259 +#: dcim/models/device_components.py:360 +msgid "allocated draw" +msgstr "назначенная ничья" + +#: dcim/models/device_component_templates.py:269 +msgid "power port template" +msgstr "шаблон порта питания" + +#: dcim/models/device_component_templates.py:270 +msgid "power port templates" +msgstr "шаблоны портов питания" + +#: dcim/models/device_component_templates.py:289 +#: dcim/models/device_components.py:383 +#, python-brace-format +msgid "Allocated draw cannot exceed the maximum draw ({maximum_draw}W)." +msgstr "" +"Выделенная ничья не может превышать максимальное количество розыгрышей " +"({maximum_draw}Ж)." + +#: dcim/models/device_component_templates.py:321 +#: dcim/models/device_components.py:478 +msgid "feed leg" +msgstr "кормовая ножка" + +#: dcim/models/device_component_templates.py:325 +#: dcim/models/device_components.py:482 +msgid "Phase (for three-phase feeds)" +msgstr "Фаза (для трехфазных кормов)" + +#: dcim/models/device_component_templates.py:331 +msgid "power outlet template" +msgstr "шаблон розетки" + +#: dcim/models/device_component_templates.py:332 +msgid "power outlet templates" +msgstr "шаблоны розеток" + +#: dcim/models/device_component_templates.py:341 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same device type" +msgstr "" +"Родительский порт питания ({power_port}) должно принадлежать к тому же типу " +"устройства" + +#: dcim/models/device_component_templates.py:345 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same module type" +msgstr "" +"Родительский порт питания ({power_port}) должен принадлежать к одному типу " +"модулей" + +#: dcim/models/device_component_templates.py:397 +#: dcim/models/device_components.py:612 +msgid "management only" +msgstr "только управление" + +#: dcim/models/device_component_templates.py:405 +#: dcim/models/device_components.py:551 +msgid "bridge interface" +msgstr "интерфейс моста" + +#: dcim/models/device_component_templates.py:423 +#: dcim/models/device_components.py:637 +msgid "wireless role" +msgstr "роль беспроводной сети" + +#: dcim/models/device_component_templates.py:429 +msgid "interface template" +msgstr "шаблон интерфейса" + +#: dcim/models/device_component_templates.py:430 +msgid "interface templates" +msgstr "шаблоны интерфейсов" + +#: dcim/models/device_component_templates.py:437 +#: dcim/models/device_components.py:805 +#: virtualization/models/virtualmachines.py:398 +msgid "An interface cannot be bridged to itself." +msgstr "Интерфейс не может быть подключен к самому себе." + +#: dcim/models/device_component_templates.py:440 +#, python-brace-format +msgid "Bridge interface ({bridge}) must belong to the same device type" +msgstr "" +"Интерфейс моста ({bridge}) должно принадлежать к тому же типу устройства" + +#: dcim/models/device_component_templates.py:444 +#, python-brace-format +msgid "Bridge interface ({bridge}) must belong to the same module type" +msgstr "Интерфейс моста ({bridge}) должен принадлежать к одному типу модулей" + +#: dcim/models/device_component_templates.py:500 +#: dcim/models/device_components.py:985 +msgid "rear port position" +msgstr "положение заднего порта" + +#: dcim/models/device_component_templates.py:525 +msgid "front port template" +msgstr "шаблон переднего порта" + +#: dcim/models/device_component_templates.py:526 +msgid "front port templates" +msgstr "шаблоны передних портов" + +#: dcim/models/device_component_templates.py:536 +#, python-brace-format +msgid "Rear port ({name}) must belong to the same device type" +msgstr "Задний порт ({name}) должно принадлежать к тому же типу устройства" + +#: dcim/models/device_component_templates.py:542 +#, python-brace-format +msgid "" +"Invalid rear port position ({position}); rear port {name} has only {count} " +"positions" +msgstr "" +"Неверное положение заднего порта ({position}); задний порт {name} имеет " +"только {count} позиции" + +#: dcim/models/device_component_templates.py:595 +#: dcim/models/device_components.py:1054 +msgid "positions" +msgstr "позиции" + +#: dcim/models/device_component_templates.py:606 +msgid "rear port template" +msgstr "шаблон заднего порта" + +#: dcim/models/device_component_templates.py:607 +msgid "rear port templates" +msgstr "шаблоны задних портов" + +#: dcim/models/device_component_templates.py:636 +#: dcim/models/device_components.py:1095 +msgid "position" +msgstr "позиция" + +#: dcim/models/device_component_templates.py:639 +#: dcim/models/device_components.py:1098 +msgid "Identifier to reference when renaming installed components" +msgstr "" +"Идентификатор, на который следует ссылаться при переименовании установленных" +" компонентов" + +#: dcim/models/device_component_templates.py:645 +msgid "module bay template" +msgstr "шаблон модульного отсека" + +#: dcim/models/device_component_templates.py:646 +msgid "module bay templates" +msgstr "шаблоны модульных отсеков" + +#: dcim/models/device_component_templates.py:673 +msgid "device bay template" +msgstr "шаблон отсека для устройств" + +#: dcim/models/device_component_templates.py:674 +msgid "device bay templates" +msgstr "шаблоны отсеков для устройств" + +#: dcim/models/device_component_templates.py:687 +#, python-brace-format +msgid "" +"Subdevice role of device type ({device_type}) must be set to \"parent\" to " +"allow device bays." +msgstr "" +"Роль подустройства типа устройства ({device_type}) должно быть установлено " +"значение «родительский», чтобы разрешить отсеки для устройств." + +#: dcim/models/device_component_templates.py:742 +#: dcim/models/device_components.py:1224 +msgid "part ID" +msgstr "идентификатор детали" + +#: dcim/models/device_component_templates.py:744 +#: dcim/models/device_components.py:1226 +msgid "Manufacturer-assigned part identifier" +msgstr "Идентификатор детали, присвоенный производителем" + +#: dcim/models/device_component_templates.py:761 +msgid "inventory item template" +msgstr "шаблон инвентарного товара" + +#: dcim/models/device_component_templates.py:762 +msgid "inventory item templates" +msgstr "шаблоны товаров инвентаря" + +#: dcim/models/device_components.py:106 +msgid "Components cannot be moved to a different device." +msgstr "Компоненты нельзя перемещать на другое устройство." + +#: dcim/models/device_components.py:145 +msgid "cable end" +msgstr "конец кабеля" + +#: dcim/models/device_components.py:151 +msgid "mark connected" +msgstr "отметка подключена" + +#: dcim/models/device_components.py:153 +msgid "Treat as if a cable is connected" +msgstr "Обращайтесь так, как будто кабель подключен" + +#: dcim/models/device_components.py:171 +msgid "Must specify cable end (A or B) when attaching a cable." +msgstr "При подключении кабеля необходимо указать конец кабеля (A или B)." + +#: dcim/models/device_components.py:175 +msgid "Cable end must not be set without a cable." +msgstr "Конец кабеля нельзя устанавливать без кабеля." + +#: dcim/models/device_components.py:179 +msgid "Cannot mark as connected with a cable attached." +msgstr "Невозможно пометить как подключенный к подключенному кабелю." + +#: dcim/models/device_components.py:203 +#, python-brace-format +msgid "{class_name} models must declare a parent_object property" +msgstr "{class_name} модели должны объявить свойство parent_object" + +#: dcim/models/device_components.py:288 dcim/models/device_components.py:317 +#: dcim/models/device_components.py:350 dcim/models/device_components.py:468 +msgid "Physical port type" +msgstr "Тип физического порта" + +#: dcim/models/device_components.py:291 dcim/models/device_components.py:320 +msgid "speed" +msgstr "скорость" + +#: dcim/models/device_components.py:295 dcim/models/device_components.py:324 +msgid "Port speed in bits per second" +msgstr "Скорость порта в битах в секунду" + +#: dcim/models/device_components.py:301 +msgid "console port" +msgstr "консольный порт" + +#: dcim/models/device_components.py:302 +msgid "console ports" +msgstr "консольные порты" + +#: dcim/models/device_components.py:330 +msgid "console server port" +msgstr "порт консольного сервера" + +#: dcim/models/device_components.py:331 +msgid "console server ports" +msgstr "порты консольного сервера" + +#: dcim/models/device_components.py:370 +msgid "power port" +msgstr "порт питания" + +#: dcim/models/device_components.py:371 +msgid "power ports" +msgstr "порты питания" + +#: dcim/models/device_components.py:488 +msgid "power outlet" +msgstr "розетка" + +#: dcim/models/device_components.py:489 +msgid "power outlets" +msgstr "розетки" + +#: dcim/models/device_components.py:500 +#, python-brace-format +msgid "Parent power port ({power_port}) must belong to the same device" +msgstr "" +"Родительский порт питания ({power_port}) должно принадлежать одному и тому " +"же устройству" + +#: dcim/models/device_components.py:531 vpn/models/crypto.py:81 +#: vpn/models/crypto.py:214 +msgid "mode" +msgstr "режим" + +#: dcim/models/device_components.py:535 +msgid "IEEE 802.1Q tagging strategy" +msgstr "Стратегия маркировки IEEE 802.1Q" + +#: dcim/models/device_components.py:543 +msgid "parent interface" +msgstr "родительский интерфейс" + +#: dcim/models/device_components.py:603 +msgid "parent LAG" +msgstr "родительский LAG" + +#: dcim/models/device_components.py:613 +msgid "This interface is used only for out-of-band management" +msgstr "Этот интерфейс используется только для внеполосного управления" + +#: dcim/models/device_components.py:618 +msgid "speed (Kbps)" +msgstr "скорость (Кбит/с)" + +#: dcim/models/device_components.py:621 +msgid "duplex" +msgstr "двойной" + +#: dcim/models/device_components.py:631 +msgid "64-bit World Wide Name" +msgstr "64-битное всемирное имя" + +#: dcim/models/device_components.py:643 +msgid "wireless channel" +msgstr "беспроводной канал" + +#: dcim/models/device_components.py:650 +msgid "channel frequency (MHz)" +msgstr "частота канала (МГц)" + +#: dcim/models/device_components.py:651 dcim/models/device_components.py:659 +msgid "Populated by selected channel (if set)" +msgstr "Заполнено выбранным каналом (если задано)" + +#: dcim/models/device_components.py:665 +msgid "transmit power (dBm)" +msgstr "мощность передачи (дБм)" + +#: dcim/models/device_components.py:690 wireless/models.py:116 +msgid "wireless LANs" +msgstr "беспроводные локальные сети" + +#: dcim/models/device_components.py:698 +#: virtualization/models/virtualmachines.py:328 +msgid "untagged VLAN" +msgstr "VLAN без тегов" + +#: dcim/models/device_components.py:704 +#: virtualization/models/virtualmachines.py:334 +msgid "tagged VLANs" +msgstr "помеченные VLAN" + +#: dcim/models/device_components.py:746 +#: virtualization/models/virtualmachines.py:370 +msgid "interface" +msgstr "интерфейс" + +#: dcim/models/device_components.py:747 +#: virtualization/models/virtualmachines.py:371 +msgid "interfaces" +msgstr "интерфейсов" + +#: dcim/models/device_components.py:758 +#, python-brace-format +msgid "{display_type} interfaces cannot have a cable attached." +msgstr "{display_type} к интерфейсам нельзя подключать кабель." + +#: dcim/models/device_components.py:766 +#, python-brace-format +msgid "{display_type} interfaces cannot be marked as connected." +msgstr "{display_type} интерфейсы нельзя пометить как подключенные." + +#: dcim/models/device_components.py:775 +#: virtualization/models/virtualmachines.py:383 +msgid "An interface cannot be its own parent." +msgstr "Интерфейс не может быть собственным родителем." + +#: dcim/models/device_components.py:779 +msgid "Only virtual interfaces may be assigned to a parent interface." +msgstr "" +"Родительскому интерфейсу могут быть назначены только виртуальные интерфейсы." + +#: dcim/models/device_components.py:786 +#, python-brace-format +msgid "" +"The selected parent interface ({interface}) belongs to a different device " +"({device})" +msgstr "" +"Выбранный родительский интерфейс ({interface}) принадлежит другому " +"устройству ({device})" + +#: dcim/models/device_components.py:792 +#, python-brace-format +msgid "" +"The selected parent interface ({interface}) belongs to {device}, which is " +"not part of virtual chassis {virtual_chassis}." +msgstr "" +"Выбранный родительский интерфейс ({interface}) принадлежит {device}, который" +" не является частью виртуального шасси {virtual_chassis}." + +#: dcim/models/device_components.py:812 +#, python-brace-format +msgid "" +"The selected bridge interface ({bridge}) belongs to a different device " +"({device})." +msgstr "" +"Выбранный интерфейс моста ({bridge}) принадлежит другому устройству " +"({device})." + +#: dcim/models/device_components.py:818 +#, python-brace-format +msgid "" +"The selected bridge interface ({interface}) belongs to {device}, which is " +"not part of virtual chassis {virtual_chassis}." +msgstr "" +"Выбранный интерфейс моста ({interface}) принадлежит {device}, который не " +"является частью виртуального шасси {virtual_chassis}." + +#: dcim/models/device_components.py:829 +msgid "Virtual interfaces cannot have a parent LAG interface." +msgstr "Виртуальные интерфейсы не могут иметь родительский интерфейс LAG." + +#: dcim/models/device_components.py:833 +msgid "A LAG interface cannot be its own parent." +msgstr "Интерфейс LAG не может быть собственным родителем." + +#: dcim/models/device_components.py:840 +#, python-brace-format +msgid "" +"The selected LAG interface ({lag}) belongs to a different device ({device})." +msgstr "" +"Выбранный интерфейс LAG ({lag}) принадлежит другому устройству ({device})." + +#: dcim/models/device_components.py:846 +#, python-brace-format +msgid "" +"The selected LAG interface ({lag}) belongs to {device}, which is not part of" +" virtual chassis {virtual_chassis}." +msgstr "" +"Выбранный интерфейс LAG ({lag}) принадлежит {device}, который не является " +"частью виртуального шасси {virtual_chassis}." + +#: dcim/models/device_components.py:857 +msgid "Virtual interfaces cannot have a PoE mode." +msgstr "Виртуальные интерфейсы не могут иметь режим PoE." + +#: dcim/models/device_components.py:861 +msgid "Virtual interfaces cannot have a PoE type." +msgstr "Виртуальные интерфейсы не могут иметь тип PoE." + +#: dcim/models/device_components.py:867 +msgid "Must specify PoE mode when designating a PoE type." +msgstr "При назначении типа PoE необходимо указать режим PoE." + +#: dcim/models/device_components.py:874 +msgid "Wireless role may be set only on wireless interfaces." +msgstr "" +"Роль беспроводной связи может быть установлена только на беспроводных " +"интерфейсах." + +#: dcim/models/device_components.py:876 +msgid "Channel may be set only on wireless interfaces." +msgstr "Канал можно настроить только на беспроводных интерфейсах." + +#: dcim/models/device_components.py:882 +msgid "Channel frequency may be set only on wireless interfaces." +msgstr "" +"Частота канала может быть установлена только на беспроводных интерфейсах." + +#: dcim/models/device_components.py:886 +msgid "Cannot specify custom frequency with channel selected." +msgstr "Невозможно указать собственную частоту при выбранном канале." + +#: dcim/models/device_components.py:892 +msgid "Channel width may be set only on wireless interfaces." +msgstr "" +"Ширина канала может быть установлена только на беспроводных интерфейсах." + +#: dcim/models/device_components.py:894 +msgid "Cannot specify custom width with channel selected." +msgstr "Невозможно указать произвольную ширину при выбранном канале." + +#: dcim/models/device_components.py:902 +#, python-brace-format +msgid "" +"The untagged VLAN ({untagged_vlan}) must belong to the same site as the " +"interface's parent device, or it must be global." +msgstr "" +"VLAN без тегов ({untagged_vlan}) должно принадлежать тому же сайту, что и " +"родительское устройство интерфейса, или оно должно быть глобальным." + +#: dcim/models/device_components.py:991 +msgid "Mapped position on corresponding rear port" +msgstr "Нанесенное на карту положение на соответствующем заднем порту" + +#: dcim/models/device_components.py:1007 +msgid "front port" +msgstr "передний порт" + +#: dcim/models/device_components.py:1008 +msgid "front ports" +msgstr "передние порты" + +#: dcim/models/device_components.py:1022 +#, python-brace-format +msgid "Rear port ({rear_port}) must belong to the same device" +msgstr "" +"Задний порт ({rear_port}) должно принадлежать одному и тому же устройству" + +#: dcim/models/device_components.py:1030 +#, python-brace-format +msgid "" +"Invalid rear port position ({rear_port_position}): Rear port {name} has only" +" {positions} positions." +msgstr "" +"Неверное положение заднего порта ({rear_port_position}): Задний порт {name} " +"имеет только {positions} позиции." + +#: dcim/models/device_components.py:1060 +msgid "Number of front ports which may be mapped" +msgstr "Количество передних портов, которые можно сопоставить" + +#: dcim/models/device_components.py:1065 +msgid "rear port" +msgstr "задний порт" + +#: dcim/models/device_components.py:1066 +msgid "rear ports" +msgstr "задние порты" + +#: dcim/models/device_components.py:1080 +#, python-brace-format +msgid "" +"The number of positions cannot be less than the number of mapped front ports" +" ({frontport_count})" +msgstr "" +"Количество позиций не может быть меньше количества сопоставленных передних " +"портов ({frontport_count})" + +#: dcim/models/device_components.py:1104 +msgid "module bay" +msgstr "модульный отсек" + +#: dcim/models/device_components.py:1105 +msgid "module bays" +msgstr "отсеки для модулей" + +#: dcim/models/device_components.py:1118 +msgid "parent_bay" +msgstr "родитель_ребенок" + +#: dcim/models/device_components.py:1126 +msgid "device bay" +msgstr "отсек для устройств" + +#: dcim/models/device_components.py:1127 +msgid "device bays" +msgstr "отсеки для устройств" + +#: dcim/models/device_components.py:1137 +#, python-brace-format +msgid "This type of device ({device_type}) does not support device bays." +msgstr "" +"Этот тип устройства ({device_type}) не поддерживает отсеки для устройств." + +#: dcim/models/device_components.py:1143 +msgid "Cannot install a device into itself." +msgstr "Невозможно установить устройство в само по себе." + +#: dcim/models/device_components.py:1151 +#, python-brace-format +msgid "" +"Cannot install the specified device; device is already installed in {bay}." +msgstr "" +"Невозможно установить указанное устройство; устройство уже установлено в " +"{bay}." + +#: dcim/models/device_components.py:1172 +msgid "inventory item role" +msgstr "роль инвентарного товара" + +#: dcim/models/device_components.py:1173 +msgid "inventory item roles" +msgstr "роли предметов инвентаря" + +#: dcim/models/device_components.py:1230 dcim/models/devices.py:595 +#: dcim/models/devices.py:1173 dcim/models/racks.py:113 +msgid "serial number" +msgstr "серийный номер" + +#: dcim/models/device_components.py:1238 dcim/models/devices.py:603 +#: dcim/models/devices.py:1180 dcim/models/racks.py:120 +msgid "asset tag" +msgstr "тег актива" + +#: dcim/models/device_components.py:1239 +msgid "A unique tag used to identify this item" +msgstr "Уникальный тег, используемый для идентификации этого товара" + +#: dcim/models/device_components.py:1242 +msgid "discovered" +msgstr "обнаружил" + +#: dcim/models/device_components.py:1244 +msgid "This item was automatically discovered" +msgstr "Этот предмет был обнаружен автоматически" + +#: dcim/models/device_components.py:1262 +msgid "inventory item" +msgstr "инвентарный предмет" + +#: dcim/models/device_components.py:1263 +msgid "inventory items" +msgstr "предметы инвентаря" + +#: dcim/models/device_components.py:1274 +msgid "Cannot assign self as parent." +msgstr "Невозможно назначить себя родителем." + +#: dcim/models/device_components.py:1282 +msgid "Parent inventory item does not belong to the same device." +msgstr "" +"Предмет родительского инвентаря не принадлежит одному и тому же устройству." + +#: dcim/models/device_components.py:1288 +msgid "Cannot move an inventory item with dependent children" +msgstr "Невозможно переместить инвентарь вместе с детьми-иждивенцами" + +#: dcim/models/device_components.py:1296 +msgid "Cannot assign inventory item to component on another device" +msgstr "" +"Невозможно присвоить инвентарный предмет компоненту на другом устройстве" + +#: dcim/models/devices.py:54 +msgid "manufacturer" +msgstr "производитель" + +#: dcim/models/devices.py:55 +msgid "manufacturers" +msgstr "производителей" + +#: dcim/models/devices.py:82 dcim/models/devices.py:381 +msgid "model" +msgstr "модель" + +#: dcim/models/devices.py:95 +msgid "default platform" +msgstr "платформа по умолчанию" + +#: dcim/models/devices.py:98 dcim/models/devices.py:385 +msgid "part number" +msgstr "номер детали" + +#: dcim/models/devices.py:101 dcim/models/devices.py:388 +msgid "Discrete part number (optional)" +msgstr "Дискретный номер детали (опционально)" + +#: dcim/models/devices.py:107 dcim/models/racks.py:137 +msgid "height (U)" +msgstr "высота (U)" + +#: dcim/models/devices.py:111 +msgid "exclude from utilization" +msgstr "исключить из использования" + +#: dcim/models/devices.py:112 +msgid "Devices of this type are excluded when calculating rack utilization." +msgstr "Устройства этого типа исключаются при расчете использования стоек." + +#: dcim/models/devices.py:116 +msgid "is full depth" +msgstr "полная глубина" + +#: dcim/models/devices.py:117 +msgid "Device consumes both front and rear rack faces." +msgstr "Устройство потребляет как переднюю, так и заднюю поверхности стойки." + +#: dcim/models/devices.py:123 +msgid "parent/child status" +msgstr "статус родителя/ребенка" + +#: dcim/models/devices.py:124 +msgid "" +"Parent devices house child devices in device bays. Leave blank if this " +"device type is neither a parent nor a child." +msgstr "" +"На родительских устройствах дочерние устройства размещены в отсеках для " +"устройств. Оставьте поле пустым, если этот тип устройства не относится ни к " +"родительскому, ни к дочернему." + +#: dcim/models/devices.py:128 dcim/models/devices.py:647 +msgid "airflow" +msgstr "расход воздуха" + +#: dcim/models/devices.py:204 +msgid "device type" +msgstr "тип устройства" + +#: dcim/models/devices.py:205 +msgid "device types" +msgstr "типы устройств" + +#: dcim/models/devices.py:289 +msgid "U height must be in increments of 0.5 rack units." +msgstr "Высота U должна быть с шагом 0,5 единицы стойки." + +#: dcim/models/devices.py:306 +#, python-brace-format +msgid "" +"Device {device} in rack {rack} does not have sufficient space to accommodate" +" a height of {height}U" +msgstr "" +"Устройство {device} в стойке {rack} не имеет достаточного места для " +"размещения на высоте {height}У" + +#: dcim/models/devices.py:321 +#, python-brace-format +msgid "" +"Unable to set 0U height: Found {racked_instance_count} " +"instances already mounted within racks." +msgstr "" +"Невозможно установить высоту 0U: найдено {racked_instance_count} экземпляры уже смонтирован в " +"стойках." + +#: dcim/models/devices.py:330 +msgid "" +"Must delete all device bay templates associated with this device before " +"declassifying it as a parent device." +msgstr "" +"Необходимо удалить все шаблоны отсеков устройств, связанные с этим " +"устройством, прежде чем рассекретить его как родительское устройство." + +#: dcim/models/devices.py:336 +msgid "Child device types must be 0U." +msgstr "Типы дочерних устройств должны быть 0U." + +#: dcim/models/devices.py:404 +msgid "module type" +msgstr "тип модуля" + +#: dcim/models/devices.py:405 +msgid "module types" +msgstr "типы модулей" + +#: dcim/models/devices.py:473 +msgid "Virtual machines may be assigned to this role" +msgstr "Эта роль может быть назначена виртуальным машинам." + +#: dcim/models/devices.py:485 +msgid "device role" +msgstr "роль устройства" + +#: dcim/models/devices.py:486 +msgid "device roles" +msgstr "роли устройств" + +#: dcim/models/devices.py:503 +msgid "Optionally limit this platform to devices of a certain manufacturer" +msgstr "" +"Опционально ограничьте эту платформу устройствами определенного " +"производителя" + +#: dcim/models/devices.py:515 +msgid "platform" +msgstr "платформы" + +#: dcim/models/devices.py:516 +msgid "platforms" +msgstr "платформ" + +#: dcim/models/devices.py:564 +msgid "The function this device serves" +msgstr "Функция, которую выполняет это устройство" + +#: dcim/models/devices.py:596 +msgid "Chassis serial number, assigned by the manufacturer" +msgstr "Серийный номер корпуса, присвоенный производителем" + +#: dcim/models/devices.py:604 dcim/models/devices.py:1181 +msgid "A unique tag used to identify this device" +msgstr "Уникальный тег, используемый для идентификации этого устройства" + +#: dcim/models/devices.py:631 +msgid "position (U)" +msgstr "положение (U)" + +#: dcim/models/devices.py:638 +msgid "rack face" +msgstr "лицевая сторона стойки" + +#: dcim/models/devices.py:658 dcim/models/devices.py:1390 +#: virtualization/models/virtualmachines.py:98 +msgid "primary IPv4" +msgstr "основной IPv4" + +#: dcim/models/devices.py:666 dcim/models/devices.py:1398 +#: virtualization/models/virtualmachines.py:106 +msgid "primary IPv6" +msgstr "основной IPv6" + +#: dcim/models/devices.py:674 +msgid "out-of-band IP" +msgstr "внеполосный IP-адрес" + +#: dcim/models/devices.py:691 +msgid "VC position" +msgstr "Позиция VC" + +#: dcim/models/devices.py:695 +msgid "Virtual chassis position" +msgstr "Положение виртуального шасси" + +#: dcim/models/devices.py:698 +msgid "VC priority" +msgstr "Приоритет VC" + +#: dcim/models/devices.py:702 +msgid "Virtual chassis master election priority" +msgstr "Приоритет выбора основного виртуального шасси" + +#: dcim/models/devices.py:705 dcim/models/sites.py:207 +msgid "latitude" +msgstr "широта" + +#: dcim/models/devices.py:710 dcim/models/devices.py:718 +#: dcim/models/sites.py:212 dcim/models/sites.py:220 +msgid "GPS coordinate in decimal format (xx.yyyyyy)" +msgstr "Координата GPS в десятичном формате (xx.yyyyyy)" + +#: dcim/models/devices.py:713 dcim/models/sites.py:215 +msgid "longitude" +msgstr "долгота" + +#: dcim/models/devices.py:786 +msgid "Device name must be unique per site." +msgstr "Имя устройства должно быть уникальным для каждого сайта." + +#: dcim/models/devices.py:797 ipam/models/services.py:75 +msgid "device" +msgstr "устройство" + +#: dcim/models/devices.py:798 +msgid "devices" +msgstr "приборы" + +#: dcim/models/devices.py:838 +#, python-brace-format +msgid "Rack {rack} does not belong to site {site}." +msgstr "Стеллаж {rack} не принадлежит сайту {site}." + +#: dcim/models/devices.py:843 +#, python-brace-format +msgid "Location {location} does not belong to site {site}." +msgstr "Местоположение {location} не принадлежит сайту {site}." + +#: dcim/models/devices.py:849 +#, python-brace-format +msgid "Rack {rack} does not belong to location {location}." +msgstr "Стеллаж {rack} не принадлежит локации {location}." + +#: dcim/models/devices.py:856 +msgid "Cannot select a rack face without assigning a rack." +msgstr "Невозможно выбрать грань стойки без назначения стойки." + +#: dcim/models/devices.py:860 +msgid "Cannot select a rack position without assigning a rack." +msgstr "Невозможно выбрать положение стойки без назначения стойки." + +#: dcim/models/devices.py:866 +msgid "Position must be in increments of 0.5 rack units." +msgstr "Положение должно быть с шагом 0,5 единицы стойки." + +#: dcim/models/devices.py:870 +msgid "Must specify rack face when defining rack position." +msgstr "При определении положения стойки необходимо указать грань стойки." + +#: dcim/models/devices.py:878 +#, python-brace-format +msgid "" +"A U0 device type ({device_type}) cannot be assigned to a rack position." +msgstr "Тип устройства U0 ({device_type}) не может быть отнесено к стойке." + +#: dcim/models/devices.py:889 +msgid "" +"Child device types cannot be assigned to a rack face. This is an attribute " +"of the parent device." +msgstr "" +"Типы дочерних устройств нельзя присвоить поверхности стойки. Это атрибут " +"родительского устройства." + +#: dcim/models/devices.py:896 +msgid "" +"Child device types cannot be assigned to a rack position. This is an " +"attribute of the parent device." +msgstr "" +"Типы детских устройств нельзя отнести к позиции в стойке. Это атрибут " +"родительского устройства." + +#: dcim/models/devices.py:910 +#, python-brace-format +msgid "" +"U{position} is already occupied or does not have sufficient space to " +"accommodate this device type: {device_type} ({u_height}U)" +msgstr "" +"U{position} уже занят или в нем недостаточно места для размещения этого типа" +" устройств: {device_type} ({u_height}U)" + +#: dcim/models/devices.py:925 +#, python-brace-format +msgid "{ip} is not an IPv4 address." +msgstr "{ip} не является адресом IPv4." + +#: dcim/models/devices.py:934 dcim/models/devices.py:949 +#, python-brace-format +msgid "The specified IP address ({ip}) is not assigned to this device." +msgstr "Указанный IP-адрес ({ip}) не назначено этому устройству." + +#: dcim/models/devices.py:940 +#, python-brace-format +msgid "{ip} is not an IPv6 address." +msgstr "{ip} не является адресом IPv6." + +#: dcim/models/devices.py:967 +#, python-brace-format +msgid "" +"The assigned platform is limited to {platform_manufacturer} device types, " +"but this device's type belongs to {devicetype_manufacturer}." +msgstr "" +"Назначенная платформа ограничена {platform_manufacturer} типы устройств, но " +"данный тип устройства относится к {devicetype_manufacturer}." + +#: dcim/models/devices.py:978 +#, python-brace-format +msgid "The assigned cluster belongs to a different site ({site})" +msgstr "Назначенный кластер принадлежит другому сайту ({site})" + +#: dcim/models/devices.py:986 +msgid "A device assigned to a virtual chassis must have its position defined." +msgstr "" +"Положение устройства, назначенного виртуальному шасси, должно быть " +"определено." + +#: dcim/models/devices.py:1188 +msgid "module" +msgstr "модуль" + +#: dcim/models/devices.py:1189 +msgid "modules" +msgstr "модулей" + +#: dcim/models/devices.py:1205 +#, python-brace-format +msgid "" +"Module must be installed within a module bay belonging to the assigned " +"device ({device})." +msgstr "" +"Модуль должен быть установлен в модульном отсеке, принадлежащем назначенному" +" устройству ({device})." + +#: dcim/models/devices.py:1309 +msgid "domain" +msgstr "сфера" + +#: dcim/models/devices.py:1322 dcim/models/devices.py:1323 +msgid "virtual chassis" +msgstr "виртуальное шасси" + +#: dcim/models/devices.py:1338 +#, python-brace-format +msgid "" +"The selected master ({master}) is not assigned to this virtual chassis." +msgstr "Выбранный мастер ({master}) не назначено этому виртуальному шасси." + +#: dcim/models/devices.py:1354 +#, python-brace-format +msgid "" +"Unable to delete virtual chassis {self}. There are member interfaces which " +"form a cross-chassis LAG interfaces." +msgstr "" +"Невозможно удалить виртуальное шасси {self}. Существуют интерфейсы-члены, " +"которые образуют межкорпусные интерфейсы LAG." + +#: dcim/models/devices.py:1379 vpn/models/l2vpn.py:37 +msgid "identifier" +msgstr "идентификатор" + +#: dcim/models/devices.py:1380 +msgid "Numeric identifier unique to the parent device" +msgstr "Цифровой идентификатор, уникальный для родительского устройства" + +#: dcim/models/devices.py:1408 extras/models/models.py:129 +#: extras/models/models.py:724 netbox/models/__init__.py:114 +msgid "comments" +msgstr "комментарии" + +#: dcim/models/devices.py:1424 +msgid "virtual device context" +msgstr "контекст виртуального устройства" + +#: dcim/models/devices.py:1425 +msgid "virtual device contexts" +msgstr "контексты виртуальных устройств" + +#: dcim/models/devices.py:1457 +#, python-brace-format +msgid "{ip} is not an IPv{family} address." +msgstr "{ip} не является IPV{family} адрес." + +#: dcim/models/devices.py:1463 +msgid "Primary IP address must belong to an interface on the assigned device." +msgstr "" +"Основной IP-адрес должен принадлежать интерфейсу на назначенном устройстве." + +#: dcim/models/mixins.py:15 extras/models/configs.py:41 +#: extras/models/models.py:343 extras/models/models.py:552 +#: extras/models/search.py:50 ipam/models/ip.py:193 +msgid "weight" +msgstr "вес" + +#: dcim/models/mixins.py:22 +msgid "weight unit" +msgstr "весовая единица" + +#: dcim/models/mixins.py:51 +msgid "Must specify a unit when setting a weight" +msgstr "При установке веса необходимо указать единицу измерения" + +#: dcim/models/power.py:55 +msgid "power panel" +msgstr "панель питания" + +#: dcim/models/power.py:56 +msgid "power panels" +msgstr "панели питания" + +#: dcim/models/power.py:70 +#, python-brace-format +msgid "" +"Location {location} ({location_site}) is in a different site than {site}" +msgstr "" +"Местоположение {location} ({location_site}) находится на другом сайте, чем " +"{site}" + +#: dcim/models/power.py:107 +msgid "supply" +msgstr "запас" + +#: dcim/models/power.py:113 +msgid "phase" +msgstr "фаза" + +#: dcim/models/power.py:119 +msgid "voltage" +msgstr "напряжение" + +#: dcim/models/power.py:124 +msgid "amperage" +msgstr "сила тока" + +#: dcim/models/power.py:129 +msgid "max utilization" +msgstr "максимальное использование" + +#: dcim/models/power.py:132 +msgid "Maximum permissible draw (percentage)" +msgstr "Максимально допустимая ничья (в процентах)" + +#: dcim/models/power.py:135 +msgid "available power" +msgstr "доступная мощность" + +#: dcim/models/power.py:163 +msgid "power feed" +msgstr "подача питания" + +#: dcim/models/power.py:164 +msgid "power feeds" +msgstr "источники питания" + +#: dcim/models/power.py:178 +#, python-brace-format +msgid "" +"Rack {rack} ({rack_site}) and power panel {powerpanel} ({powerpanel_site}) " +"are in different sites." +msgstr "" +"Стеллаж {rack} ({rack_site}) и панель питания {powerpanel} " +"({powerpanel_site}) находятся на разных сайтах." + +#: dcim/models/power.py:189 +msgid "Voltage cannot be negative for AC supply" +msgstr "Напряжение питания переменного тока не может быть отрицательным" + +#: dcim/models/racks.py:49 +msgid "rack role" +msgstr "роль стойки" + +#: dcim/models/racks.py:50 +msgid "rack roles" +msgstr "роли стеллажей" + +#: dcim/models/racks.py:74 +msgid "facility ID" +msgstr "идентификатор объекта" + +#: dcim/models/racks.py:75 +msgid "Locally-assigned identifier" +msgstr "Локально назначенный идентификатор" + +#: dcim/models/racks.py:108 ipam/forms/bulk_import.py:200 +#: ipam/forms/bulk_import.py:265 ipam/forms/bulk_import.py:300 +#: ipam/forms/bulk_import.py:467 virtualization/forms/bulk_import.py:112 +msgid "Functional role" +msgstr "Функциональная роль" + +#: dcim/models/racks.py:121 +msgid "A unique tag used to identify this rack" +msgstr "Уникальный тег, используемый для идентификации этой стойки" + +#: dcim/models/racks.py:132 +msgid "width" +msgstr "ширина" + +#: dcim/models/racks.py:133 +msgid "Rail-to-rail width" +msgstr "Ширина от рельса до рельса" + +#: dcim/models/racks.py:139 +msgid "Height in rack units" +msgstr "Высота в стеллажах" + +#: dcim/models/racks.py:143 +msgid "starting unit" +msgstr "пусковой блок" + +#: dcim/models/racks.py:145 +msgid "Starting unit for rack" +msgstr "Пусковой блок для стойки" + +#: dcim/models/racks.py:149 +msgid "descending units" +msgstr "единицы по убыванию" + +#: dcim/models/racks.py:150 +msgid "Units are numbered top-to-bottom" +msgstr "Единицы нумеруются сверху вниз" + +#: dcim/models/racks.py:153 +msgid "outer width" +msgstr "внешняя ширина" + +#: dcim/models/racks.py:156 +msgid "Outer dimension of rack (width)" +msgstr "Наружный размер стойки (ширина)" + +#: dcim/models/racks.py:159 +msgid "outer depth" +msgstr "внешняя глубина" + +#: dcim/models/racks.py:162 +msgid "Outer dimension of rack (depth)" +msgstr "Внешний размер стойки (глубина)" + +#: dcim/models/racks.py:165 +msgid "outer unit" +msgstr "внешний блок" + +#: dcim/models/racks.py:171 +msgid "max weight" +msgstr "максимальный вес" + +#: dcim/models/racks.py:174 +msgid "Maximum load capacity for the rack" +msgstr "Максимальная грузоподъемность стеллажа" + +#: dcim/models/racks.py:182 +msgid "mounting depth" +msgstr "глубина монтажа" + +#: dcim/models/racks.py:186 +msgid "" +"Maximum depth of a mounted device, in millimeters. For four-post racks, this" +" is the distance between the front and rear rails." +msgstr "" +"Максимальная глубина установленного устройства в миллиметрах. Для " +"четырехстоечных стоек это расстояние между передними и задними " +"направляющими." + +#: dcim/models/racks.py:220 +msgid "rack" +msgstr "стеллаж" + +#: dcim/models/racks.py:221 +msgid "racks" +msgstr "стойки" + +#: dcim/models/racks.py:236 +#, python-brace-format +msgid "Assigned location must belong to parent site ({site})." +msgstr "" +"Назначенное местоположение должно принадлежать родительскому сайту ({site})." + +#: dcim/models/racks.py:240 +msgid "Must specify a unit when setting an outer width/depth" +msgstr "" +"При настройке внешней ширины/глубины необходимо указать единицу измерения" + +#: dcim/models/racks.py:244 +msgid "Must specify a unit when setting a maximum weight" +msgstr "При установке максимального веса необходимо указать единицу измерения" + +#: dcim/models/racks.py:254 +#, python-brace-format +msgid "" +"Rack must be at least {min_height}U tall to house currently installed " +"devices." +msgstr "" +"Стеллаж должен быть не менее {min_height}Я разговариваю с домом, " +"установленными в настоящее время устройствами." + +#: dcim/models/racks.py:261 +#, python-brace-format +msgid "" +"Rack unit numbering must begin at {position} or less to house currently " +"installed devices." +msgstr "" +"Нумерация стеллажей должна начинаться с {position} или меньше для размещения" +" установленных в настоящее время устройств." + +#: dcim/models/racks.py:269 +#, python-brace-format +msgid "Location must be from the same site, {site}." +msgstr "Местоположение должно быть с того же сайта, {site}." + +#: dcim/models/racks.py:522 +msgid "units" +msgstr "единиц" + +#: dcim/models/racks.py:548 +msgid "rack reservation" +msgstr "бронирование стеллажей" + +#: dcim/models/racks.py:549 +msgid "rack reservations" +msgstr "бронирование стеллажей" + +#: dcim/models/racks.py:566 +#, python-brace-format +msgid "Invalid unit(s) for {height}U rack: {unit_list}" +msgstr "Неверные единицы измерения для {height}U-образная стойка: {unit_list}" + +#: dcim/models/racks.py:579 +#, python-brace-format +msgid "The following units have already been reserved: {unit_list}" +msgstr "Следующие номера уже зарезервированы: {unit_list}" + +#: dcim/models/sites.py:49 +msgid "A top-level region with this name already exists." +msgstr "Регион верхнего уровня с таким названием уже существует." + +#: dcim/models/sites.py:59 +msgid "A top-level region with this slug already exists." +msgstr "Регион верхнего уровня с этим слагнем уже существует." + +#: dcim/models/sites.py:62 +msgid "region" +msgstr "область, край" + +#: dcim/models/sites.py:63 +msgid "regions" +msgstr "районы" + +#: dcim/models/sites.py:102 +msgid "A top-level site group with this name already exists." +msgstr "Группа сайтов верхнего уровня с таким именем уже существует." + +#: dcim/models/sites.py:112 +msgid "A top-level site group with this slug already exists." +msgstr "Группа сайтов верхнего уровня с этим слайгом уже существует." + +#: dcim/models/sites.py:115 +msgid "site group" +msgstr "группа сайта" + +#: dcim/models/sites.py:116 +msgid "site groups" +msgstr "группы сайтов" + +#: dcim/models/sites.py:141 +msgid "Full name of the site" +msgstr "Полное название сайта" + +#: dcim/models/sites.py:181 +msgid "facility" +msgstr "объект" + +#: dcim/models/sites.py:184 +msgid "Local facility ID or description" +msgstr "Идентификатор или описание местного объекта" + +#: dcim/models/sites.py:195 +msgid "physical address" +msgstr "физический адрес" + +#: dcim/models/sites.py:198 +msgid "Physical location of the building" +msgstr "Физическое местоположение здания" + +#: dcim/models/sites.py:201 +msgid "shipping address" +msgstr "адрес доставки" + +#: dcim/models/sites.py:204 +msgid "If different from the physical address" +msgstr "Если отличается от физического адреса" + +#: dcim/models/sites.py:238 +msgid "site" +msgstr "место" + +#: dcim/models/sites.py:239 +msgid "sites" +msgstr "сайтов" + +#: dcim/models/sites.py:303 +msgid "A location with this name already exists within the specified site." +msgstr "Местоположение с таким именем уже существует на указанном сайте." + +#: dcim/models/sites.py:313 +msgid "A location with this slug already exists within the specified site." +msgstr "Местоположение с этим слайгом уже существует на указанном сайте." + +#: dcim/models/sites.py:316 +msgid "location" +msgstr "расположение" + +#: dcim/models/sites.py:317 +msgid "locations" +msgstr "локаций" + +#: dcim/models/sites.py:331 +#, python-brace-format +msgid "Parent location ({parent}) must belong to the same site ({site})." +msgstr "" +"Местонахождение родителя ({parent}) должен принадлежать тому же сайту " +"({site})." + +#: dcim/tables/cables.py:54 +msgid "Termination A" +msgstr "Прекращение действия A" + +#: dcim/tables/cables.py:59 +msgid "Termination B" +msgstr "Прекращение В" + +#: dcim/tables/cables.py:65 wireless/tables/wirelesslink.py:22 +msgid "Device A" +msgstr "Устройство A" + +#: dcim/tables/cables.py:71 wireless/tables/wirelesslink.py:31 +msgid "Device B" +msgstr "Устройство B" + +#: dcim/tables/cables.py:77 +msgid "Location A" +msgstr "Местоположение A" + +#: dcim/tables/cables.py:83 +msgid "Location B" +msgstr "Местоположение B" + +#: dcim/tables/cables.py:89 +msgid "Rack A" +msgstr "Стеллаж A" + +#: dcim/tables/cables.py:95 +msgid "Rack B" +msgstr "Стеллаж B" + +#: dcim/tables/cables.py:101 +msgid "Site A" +msgstr "Сайт A" + +#: dcim/tables/cables.py:107 +msgid "Site B" +msgstr "Сайт B" + +#: dcim/tables/connections.py:27 templates/dcim/consoleport.html:18 +#: templates/dcim/consoleserverport.html:75 templates/dcim/frontport.html:119 +#: templates/dcim/inventoryitem_edit.html:39 +msgid "Console Port" +msgstr "Консольный порт" + +#: dcim/tables/connections.py:31 dcim/tables/connections.py:50 +#: dcim/tables/connections.py:71 +#: templates/dcim/inc/connection_endpoints.html:16 +msgid "Reachable" +msgstr "Доступен" + +#: dcim/tables/connections.py:46 dcim/tables/devices.py:524 +#: templates/dcim/inventoryitem_edit.html:64 +#: templates/dcim/poweroutlet.html:47 templates/dcim/powerport.html:18 +msgid "Power Port" +msgstr "Порт питания" + +#: dcim/tables/devices.py:94 dcim/tables/devices.py:139 +#: dcim/tables/racks.py:81 dcim/tables/sites.py:143 +#: netbox/navigation/menu.py:57 netbox/navigation/menu.py:61 +#: netbox/navigation/menu.py:63 virtualization/forms/model_forms.py:125 +#: virtualization/tables/clusters.py:83 virtualization/views.py:211 +msgid "Devices" +msgstr "Устройства" + +#: dcim/tables/devices.py:99 dcim/tables/devices.py:144 +#: virtualization/tables/clusters.py:88 +msgid "VMs" +msgstr "виртуальные машины" + +#: dcim/tables/devices.py:133 dcim/tables/devices.py:245 +#: extras/forms/model_forms.py:506 templates/dcim/device.html:114 +#: templates/dcim/device/render_config.html:11 +#: templates/dcim/device/render_config.html:15 +#: templates/dcim/devicerole.html:47 templates/dcim/platform.html:44 +#: templates/extras/configtemplate.html:10 +#: templates/virtualization/virtualmachine.html:47 +#: templates/virtualization/virtualmachine/render_config.html:11 +#: templates/virtualization/virtualmachine/render_config.html:15 +#: virtualization/tables/virtualmachines.py:93 +msgid "Config Template" +msgstr "Шаблон конфигурации" + +#: dcim/tables/devices.py:216 dcim/tables/devices.py:1069 +#: ipam/forms/bulk_import.py:511 ipam/forms/model_forms.py:296 +#: ipam/tables/ip.py:352 ipam/tables/ip.py:418 ipam/tables/ip.py:441 +#: templates/ipam/ipaddress.html:12 templates/ipam/ipaddress_edit.html:14 +#: virtualization/tables/virtualmachines.py:81 +msgid "IP Address" +msgstr "IP-адрес" + +#: dcim/tables/devices.py:220 dcim/tables/devices.py:1073 +#: virtualization/tables/virtualmachines.py:72 +msgid "IPv4 Address" +msgstr "Адрес IPv4" + +#: dcim/tables/devices.py:224 dcim/tables/devices.py:1077 +#: virtualization/tables/virtualmachines.py:76 +msgid "IPv6 Address" +msgstr "Адрес IPv6" + +#: dcim/tables/devices.py:239 +msgid "VC Position" +msgstr "Позиция VC" + +#: dcim/tables/devices.py:242 +msgid "VC Priority" +msgstr "Приоритет VC" + +#: dcim/tables/devices.py:249 templates/dcim/device_edit.html:38 +#: templates/dcim/devicebay_populate.html:16 +msgid "Parent Device" +msgstr "Родительское устройство" + +#: dcim/tables/devices.py:254 +msgid "Position (Device Bay)" +msgstr "Положение (отсек для устройств)" + +#: dcim/tables/devices.py:263 +msgid "Console ports" +msgstr "Консольные порты" + +#: dcim/tables/devices.py:266 +msgid "Console server ports" +msgstr "Порты консольного сервера" + +#: dcim/tables/devices.py:269 +msgid "Power ports" +msgstr "Порты питания" + +#: dcim/tables/devices.py:272 +msgid "Power outlets" +msgstr "Розетки питания" + +#: dcim/tables/devices.py:275 dcim/tables/devices.py:1082 +#: dcim/tables/devicetypes.py:125 dcim/views.py:1002 dcim/views.py:1241 +#: dcim/views.py:1927 netbox/navigation/menu.py:82 +#: netbox/navigation/menu.py:238 templates/dcim/device/base.html:37 +#: templates/dcim/device_list.html:43 templates/dcim/devicetype/base.html:34 +#: templates/dcim/module.html:34 templates/dcim/moduletype/base.html:34 +#: templates/dcim/virtualdevicecontext.html:64 +#: templates/dcim/virtualdevicecontext.html:85 +#: templates/virtualization/virtualmachine/base.html:27 +#: templates/virtualization/virtualmachine_list.html:14 +#: virtualization/tables/virtualmachines.py:87 virtualization/views.py:368 +#: wireless/tables/wirelesslan.py:55 +msgid "Interfaces" +msgstr "Интерфейсы" + +#: dcim/tables/devices.py:278 +msgid "Front ports" +msgstr "Передние порты" + +#: dcim/tables/devices.py:284 +msgid "Device bays" +msgstr "Отсеки для устройств" + +#: dcim/tables/devices.py:287 +msgid "Module bays" +msgstr "Отсеки для модулей" + +#: dcim/tables/devices.py:290 +msgid "Inventory items" +msgstr "Инвентарные предметы" + +#: dcim/tables/devices.py:329 dcim/tables/modules.py:56 +#: templates/dcim/modulebay.html:17 +msgid "Module Bay" +msgstr "Модульный отсек" + +#: dcim/tables/devices.py:350 +msgid "Cable Color" +msgstr "Цвет кабеля" + +#: dcim/tables/devices.py:356 +msgid "Link Peers" +msgstr "Узлы ссылок" + +#: dcim/tables/devices.py:359 +msgid "Mark Connected" +msgstr "Отметить подключение" + +#: dcim/tables/devices.py:470 +msgid "Maximum draw (W)" +msgstr "Максимальная потребляемая мощность (Вт)" + +#: dcim/tables/devices.py:473 +msgid "Allocated draw (W)" +msgstr "Распределенная жеребьевка (W)" + +#: dcim/tables/devices.py:573 ipam/forms/model_forms.py:707 +#: ipam/tables/fhrp.py:28 ipam/views.py:597 ipam/views.py:671 +#: netbox/navigation/menu.py:146 netbox/navigation/menu.py:148 +#: templates/dcim/interface.html:351 templates/ipam/ipaddress_bulk_add.html:15 +#: templates/ipam/service.html:43 templates/virtualization/vminterface.html:88 +#: vpn/tables/tunnels.py:94 +msgid "IP Addresses" +msgstr "IP-адреса" + +#: dcim/tables/devices.py:579 netbox/navigation/menu.py:190 +#: templates/ipam/inc/panels/fhrp_groups.html:5 +msgid "FHRP Groups" +msgstr "Группы FHRP" + +#: dcim/tables/devices.py:591 templates/dcim/interface.html:90 +#: templates/virtualization/vminterface.html:70 templates/vpn/tunnel.html:18 +#: templates/vpn/tunneltermination.html:14 vpn/forms/bulk_edit.py:75 +#: vpn/forms/bulk_import.py:76 vpn/forms/filtersets.py:41 +#: vpn/forms/filtersets.py:81 vpn/forms/model_forms.py:59 +#: vpn/forms/model_forms.py:144 vpn/tables/tunnels.py:74 +msgid "Tunnel" +msgstr "Туннель" + +#: dcim/tables/devices.py:616 dcim/tables/devicetypes.py:224 +#: templates/dcim/interface.html:66 +msgid "Management Only" +msgstr "Только управление" + +#: dcim/tables/devices.py:624 +msgid "Wireless link" +msgstr "Беспроводная связь" + +#: dcim/tables/devices.py:634 +msgid "VDCs" +msgstr "VDC" + +#: dcim/tables/devices.py:642 dcim/tables/devicetypes.py:48 +#: dcim/tables/devicetypes.py:140 dcim/views.py:1077 dcim/views.py:2020 +#: netbox/navigation/menu.py:91 templates/dcim/device/base.html:52 +#: templates/dcim/device_list.html:71 templates/dcim/devicetype/base.html:49 +#: templates/dcim/inc/panels/inventory_items.html:5 +#: templates/dcim/inventoryitemrole.html:33 +msgid "Inventory Items" +msgstr "Предметы инвентаря" + +#: dcim/tables/devices.py:723 +#: templates/circuits/inc/circuit_termination.html:80 +#: templates/dcim/consoleport.html:81 templates/dcim/consoleserverport.html:81 +#: templates/dcim/frontport.html:53 templates/dcim/frontport.html:125 +#: templates/dcim/interface.html:196 templates/dcim/inventoryitem_edit.html:69 +#: templates/dcim/rearport.html:18 templates/dcim/rearport.html:115 +msgid "Rear Port" +msgstr "Задний порт" + +#: dcim/tables/devices.py:888 templates/dcim/modulebay.html:51 +msgid "Installed Module" +msgstr "Установленный модуль" + +#: dcim/tables/devices.py:891 +msgid "Module Serial" +msgstr "Серийный номер модуля" + +#: dcim/tables/devices.py:895 +msgid "Module Asset Tag" +msgstr "Тег активов модуля" + +#: dcim/tables/devices.py:904 +msgid "Module Status" +msgstr "Состояние модуля" + +#: dcim/tables/devices.py:946 dcim/tables/devicetypes.py:308 +#: templates/dcim/inventoryitem.html:41 +msgid "Component" +msgstr "Компонент" + +#: dcim/tables/devices.py:1001 +msgid "Items" +msgstr "Предметы" + +#: dcim/tables/devicetypes.py:38 netbox/navigation/menu.py:72 +#: netbox/navigation/menu.py:74 +msgid "Device Types" +msgstr "Типы устройств" + +#: dcim/tables/devicetypes.py:43 netbox/navigation/menu.py:75 +msgid "Module Types" +msgstr "Типы модулей" + +#: dcim/tables/devicetypes.py:53 extras/forms/filtersets.py:379 +#: extras/forms/model_forms.py:414 netbox/navigation/menu.py:66 +msgid "Platforms" +msgstr "Платформы" + +#: dcim/tables/devicetypes.py:85 templates/dcim/devicetype.html:32 +msgid "Default Platform" +msgstr "Платформа по умолчанию" + +#: dcim/tables/devicetypes.py:89 templates/dcim/devicetype.html:48 +msgid "Full Depth" +msgstr "Полная глубина" + +#: dcim/tables/devicetypes.py:98 +msgid "U Height" +msgstr "Высота U" + +#: dcim/tables/devicetypes.py:110 dcim/tables/modules.py:26 +msgid "Instances" +msgstr "Инстансы" + +#: dcim/tables/devicetypes.py:113 dcim/views.py:942 dcim/views.py:1181 +#: dcim/views.py:1867 netbox/navigation/menu.py:85 +#: templates/dcim/device/base.html:25 templates/dcim/device_list.html:15 +#: templates/dcim/devicetype/base.html:22 templates/dcim/module.html:22 +#: templates/dcim/moduletype/base.html:22 +msgid "Console Ports" +msgstr "Порты консоли" + +#: dcim/tables/devicetypes.py:116 dcim/views.py:957 dcim/views.py:1196 +#: dcim/views.py:1882 netbox/navigation/menu.py:86 +#: templates/dcim/device/base.html:28 templates/dcim/device_list.html:22 +#: templates/dcim/devicetype/base.html:25 templates/dcim/module.html:25 +#: templates/dcim/moduletype/base.html:25 +msgid "Console Server Ports" +msgstr "Порты консольного сервера" + +#: dcim/tables/devicetypes.py:119 dcim/views.py:972 dcim/views.py:1211 +#: dcim/views.py:1897 netbox/navigation/menu.py:87 +#: templates/dcim/device/base.html:31 templates/dcim/device_list.html:29 +#: templates/dcim/devicetype/base.html:28 templates/dcim/module.html:28 +#: templates/dcim/moduletype/base.html:28 +msgid "Power Ports" +msgstr "Порты питания" + +#: dcim/tables/devicetypes.py:122 dcim/views.py:987 dcim/views.py:1226 +#: dcim/views.py:1912 netbox/navigation/menu.py:88 +#: templates/dcim/device/base.html:34 templates/dcim/device_list.html:36 +#: templates/dcim/devicetype/base.html:31 templates/dcim/module.html:31 +#: templates/dcim/moduletype/base.html:31 +msgid "Power Outlets" +msgstr "Розетки питания" + +#: dcim/tables/devicetypes.py:128 dcim/views.py:1017 dcim/views.py:1256 +#: dcim/views.py:1948 netbox/navigation/menu.py:83 +#: templates/dcim/device/base.html:40 templates/dcim/devicetype/base.html:37 +#: templates/dcim/module.html:37 templates/dcim/moduletype/base.html:37 +msgid "Front Ports" +msgstr "Передние порты" + +#: dcim/tables/devicetypes.py:131 dcim/views.py:1032 dcim/views.py:1271 +#: dcim/views.py:1963 netbox/navigation/menu.py:84 +#: templates/dcim/device/base.html:43 templates/dcim/device_list.html:50 +#: templates/dcim/devicetype/base.html:40 templates/dcim/module.html:40 +#: templates/dcim/moduletype/base.html:40 +msgid "Rear Ports" +msgstr "Задние порты" + +#: dcim/tables/devicetypes.py:134 dcim/views.py:1062 dcim/views.py:2001 +#: netbox/navigation/menu.py:90 templates/dcim/device/base.html:49 +#: templates/dcim/device_list.html:57 templates/dcim/devicetype/base.html:46 +msgid "Device Bays" +msgstr "Отсеки для устройств" + +#: dcim/tables/devicetypes.py:137 dcim/views.py:1047 dcim/views.py:1982 +#: netbox/navigation/menu.py:89 templates/dcim/device/base.html:46 +#: templates/dcim/device_list.html:64 templates/dcim/devicetype/base.html:43 +msgid "Module Bays" +msgstr "Отсеки для модулей" + +#: dcim/tables/power.py:36 netbox/navigation/menu.py:282 +#: templates/core/configrevision.html:59 templates/dcim/powerpanel.html:53 +msgid "Power Feeds" +msgstr "Источники питания" + +#: dcim/tables/power.py:80 templates/dcim/powerfeed.html:106 +msgid "Max Utilization" +msgstr "Максимальное использование" + +#: dcim/tables/power.py:84 +msgid "Available Power (VA)" +msgstr "Доступная мощность (ВА)" + +#: dcim/tables/racks.py:29 dcim/tables/sites.py:138 +#: netbox/navigation/menu.py:25 netbox/navigation/menu.py:27 +msgid "Racks" +msgstr "Стеллажи" + +#: dcim/tables/racks.py:73 templates/dcim/device.html:323 +#: templates/dcim/rack.html:95 +msgid "Height" +msgstr "Высота" + +#: dcim/tables/racks.py:85 +msgid "Space" +msgstr "Космос" + +#: dcim/tables/racks.py:96 templates/dcim/rack.html:105 +msgid "Outer Width" +msgstr "Внешняя ширина" + +#: dcim/tables/racks.py:100 templates/dcim/rack.html:115 +msgid "Outer Depth" +msgstr "Внешняя глубина" + +#: dcim/tables/racks.py:108 +msgid "Max Weight" +msgstr "Максимальный вес" + +#: dcim/tables/sites.py:30 dcim/tables/sites.py:57 +#: extras/forms/filtersets.py:359 extras/forms/model_forms.py:394 +#: ipam/forms/bulk_edit.py:128 ipam/forms/model_forms.py:152 +#: ipam/tables/asn.py:66 netbox/navigation/menu.py:16 +#: netbox/navigation/menu.py:18 +msgid "Sites" +msgstr "Сайты" + +#: dcim/views.py:131 +#, python-brace-format +msgid "Disconnected {count} {type}" +msgstr "Отключен {count} {type}" + +#: dcim/views.py:692 netbox/navigation/menu.py:29 +msgid "Reservations" +msgstr "Бронирование" + +#: dcim/views.py:711 +msgid "Non-Racked Devices" +msgstr "Устройства без стоек" + +#: dcim/views.py:2033 extras/forms/model_forms.py:454 +#: templates/extras/configcontext.html:10 +#: virtualization/forms/model_forms.py:228 virtualization/views.py:408 +msgid "Config Context" +msgstr "Контекст конфигурации" + +#: dcim/views.py:2043 virtualization/views.py:418 +msgid "Render Config" +msgstr "Конфигурация рендера" + +#: dcim/views.py:2971 ipam/tables/ip.py:233 +msgid "Children" +msgstr "Дети" + +#: extras/choices.py:27 extras/forms/misc.py:14 +msgid "Text" +msgstr "Текст" + +#: extras/choices.py:28 +msgid "Text (long)" +msgstr "Текст (длинный)" + +#: extras/choices.py:29 +msgid "Integer" +msgstr "Целое число" + +#: extras/choices.py:30 +msgid "Decimal" +msgstr "Десятичный" + +#: extras/choices.py:31 +msgid "Boolean (true/false)" +msgstr "Логическое значение (истинно/ложь)" + +#: extras/choices.py:32 +msgid "Date" +msgstr "Дата" + +#: extras/choices.py:33 +msgid "Date & time" +msgstr "Дата и время" + +#: extras/choices.py:35 +msgid "JSON" +msgstr "JSON" + +#: extras/choices.py:36 +msgid "Selection" +msgstr "Отбор" + +#: extras/choices.py:37 +msgid "Multiple selection" +msgstr "Множественный выбор" + +#: extras/choices.py:39 +msgid "Multiple objects" +msgstr "Несколько объектов" + +#: extras/choices.py:50 templates/extras/customfield.html:69 vpn/choices.py:20 +#: wireless/choices.py:27 +msgid "Disabled" +msgstr "Инвалид" + +#: extras/choices.py:51 +msgid "Loose" +msgstr "Свободный" + +#: extras/choices.py:52 +msgid "Exact" +msgstr "Точный" + +#: extras/choices.py:63 +msgid "Always" +msgstr "Всегда" + +#: extras/choices.py:64 +msgid "If set" +msgstr "Если установлено" + +#: extras/choices.py:65 extras/choices.py:78 +msgid "Hidden" +msgstr "Скрытый" + +#: extras/choices.py:76 +msgid "Yes" +msgstr "Да" + +#: extras/choices.py:77 +msgid "No" +msgstr "Нет" + +#: extras/choices.py:105 templates/tenancy/contact.html:58 +#: tenancy/forms/bulk_edit.py:117 wireless/forms/model_forms.py:159 +msgid "Link" +msgstr "Ссылка" + +#: extras/choices.py:119 +msgid "Newest" +msgstr "Новейший" + +#: extras/choices.py:120 +msgid "Oldest" +msgstr "Самый старый" + +#: extras/choices.py:136 templates/generic/object.html:51 +msgid "Updated" +msgstr "Обновлено" + +#: extras/choices.py:137 +msgid "Deleted" +msgstr "Удалено" + +#: extras/choices.py:154 extras/choices.py:176 +msgid "Info" +msgstr "Информация" + +#: extras/choices.py:155 extras/choices.py:175 +msgid "Success" +msgstr "Успех" + +#: extras/choices.py:156 extras/choices.py:177 +msgid "Warning" +msgstr "Предупреждение" + +#: extras/choices.py:157 +msgid "Danger" +msgstr "Опасность" + +#: extras/choices.py:174 utilities/choices.py:190 +msgid "Default" +msgstr "По умолчанию" + +#: extras/choices.py:178 +msgid "Failure" +msgstr "Неудача" + +#: extras/choices.py:185 +msgid "Hourly" +msgstr "Ежечасно" + +#: extras/choices.py:186 +msgid "12 hours" +msgstr "12 часов" + +#: extras/choices.py:187 +msgid "Daily" +msgstr "Ежедневно" + +#: extras/choices.py:188 +msgid "Weekly" +msgstr "Еженедельно" + +#: extras/choices.py:189 +msgid "30 days" +msgstr "30 дней" + +#: extras/choices.py:254 extras/tables/tables.py:287 +#: templates/dcim/virtualchassis_edit.html:108 +#: templates/extras/eventrule.html:51 +#: templates/generic/bulk_add_component.html:56 +#: templates/generic/object_edit.html:29 templates/generic/object_edit.html:70 +#: templates/ipam/inc/ipaddress_edit_header.html:10 +msgid "Create" +msgstr "Создайте" + +#: extras/choices.py:255 extras/tables/tables.py:290 +#: templates/extras/eventrule.html:55 +msgid "Update" +msgstr "Обновить" + +#: extras/choices.py:256 extras/tables/tables.py:293 +#: templates/circuits/inc/circuit_termination.html:22 +#: templates/dcim/devicetype/component_templates.html:24 +#: templates/dcim/inc/panels/inventory_items.html:29 +#: templates/dcim/moduletype/component_templates.html:24 +#: templates/dcim/powerpanel.html:71 templates/extras/eventrule.html:59 +#: templates/extras/report_list.html:34 templates/extras/script_list.html:33 +#: templates/generic/bulk_delete.html:18 templates/generic/bulk_delete.html:45 +#: templates/generic/object_delete.html:15 templates/htmx/delete_form.html:57 +#: templates/ipam/inc/panels/fhrp_groups.html:35 +#: templates/users/objectpermission.html:49 +#: utilities/templates/buttons/delete.html:9 +msgid "Delete" +msgstr "Удалить" + +#: extras/choices.py:280 utilities/choices.py:143 utilities/choices.py:191 +msgid "Blue" +msgstr "голубой" + +#: extras/choices.py:281 utilities/choices.py:142 utilities/choices.py:192 +msgid "Indigo" +msgstr "Индиго" + +#: extras/choices.py:282 utilities/choices.py:140 utilities/choices.py:193 +msgid "Purple" +msgstr "Пурпурный" + +#: extras/choices.py:283 utilities/choices.py:137 utilities/choices.py:194 +msgid "Pink" +msgstr "Розовый" + +#: extras/choices.py:284 utilities/choices.py:136 utilities/choices.py:195 +msgid "Red" +msgstr "Красный" + +#: extras/choices.py:285 utilities/choices.py:154 utilities/choices.py:196 +msgid "Orange" +msgstr "оранжевый" + +#: extras/choices.py:286 utilities/choices.py:152 utilities/choices.py:197 +msgid "Yellow" +msgstr "Желтый" + +#: extras/choices.py:287 utilities/choices.py:149 utilities/choices.py:198 +msgid "Green" +msgstr "Зелёный" + +#: extras/choices.py:288 utilities/choices.py:146 utilities/choices.py:199 +msgid "Teal" +msgstr "чирок" + +#: extras/choices.py:289 utilities/choices.py:145 utilities/choices.py:200 +msgid "Cyan" +msgstr "Голубой" + +#: extras/choices.py:290 utilities/choices.py:201 +msgid "Gray" +msgstr "Серый" + +#: extras/choices.py:291 utilities/choices.py:160 utilities/choices.py:202 +msgid "Black" +msgstr "Черный" + +#: extras/choices.py:292 utilities/choices.py:161 utilities/choices.py:203 +msgid "White" +msgstr "белый" + +#: extras/choices.py:306 extras/forms/model_forms.py:233 +#: extras/forms/model_forms.py:321 templates/extras/webhook.html:11 +msgid "Webhook" +msgstr "Вебхук" + +#: extras/choices.py:307 templates/extras/script/base.html:29 +msgid "Script" +msgstr "Сценарий" + +#: extras/dashboard/forms.py:38 +msgid "Widget type" +msgstr "Тип виджета" + +#: extras/dashboard/widgets.py:148 +msgid "Note" +msgstr "Примечание" + +#: extras/dashboard/widgets.py:149 +msgid "Display some arbitrary custom content. Markdown is supported." +msgstr "" +"Отобразите произвольный пользовательский контент. Поддерживается Markdown." + +#: extras/dashboard/widgets.py:162 +msgid "Object Counts" +msgstr "Количество объектов" + +#: extras/dashboard/widgets.py:163 +msgid "" +"Display a set of NetBox models and the number of objects created for each " +"type." +msgstr "" +"Отобразите набор моделей NetBox и количество объектов, созданных для каждого" +" типа." + +#: extras/dashboard/widgets.py:173 +msgid "Filters to apply when counting the number of objects" +msgstr "Фильтры, применяемые при подсчете количества объектов" + +#: extras/dashboard/widgets.py:209 +msgid "Object List" +msgstr "Список объектов" + +#: extras/dashboard/widgets.py:210 +msgid "Display an arbitrary list of objects." +msgstr "Отобразите произвольный список объектов." + +#: extras/dashboard/widgets.py:223 +msgid "The default number of objects to display" +msgstr "Количество отображаемых объектов по умолчанию" + +#: extras/dashboard/widgets.py:270 +msgid "RSS Feed" +msgstr "RSS-канал" + +#: extras/dashboard/widgets.py:275 +msgid "Embed an RSS feed from an external website." +msgstr "Вставьте RSS-канал с внешнего веб-сайта." + +#: extras/dashboard/widgets.py:282 +msgid "Feed URL" +msgstr "URL-адрес ленты" + +#: extras/dashboard/widgets.py:287 +msgid "The maximum number of objects to display" +msgstr "Максимальное количество отображаемых объектов" + +#: extras/dashboard/widgets.py:292 +msgid "How long to stored the cached content (in seconds)" +msgstr "Как долго хранить кэшированный контент (в секундах)" + +#: extras/dashboard/widgets.py:344 templates/account/base.html:10 +#: templates/account/bookmarks.html:7 templates/inc/profile_button.html:29 +msgid "Bookmarks" +msgstr "Закладки" + +#: extras/dashboard/widgets.py:348 +msgid "Show your personal bookmarks" +msgstr "Покажите свои личные закладки" + +#: extras/filtersets.py:207 extras/filtersets.py:542 extras/filtersets.py:570 +msgid "Data file (ID)" +msgstr "Файл данных (ID)" + +#: extras/filtersets.py:479 virtualization/forms/filtersets.py:114 +msgid "Cluster type" +msgstr "Тип кластера" + +#: extras/filtersets.py:485 virtualization/filtersets.py:95 +#: virtualization/filtersets.py:146 +msgid "Cluster type (slug)" +msgstr "Тип кластера (слизень)" + +#: extras/filtersets.py:490 ipam/forms/bulk_edit.py:475 +#: ipam/forms/model_forms.py:585 virtualization/forms/filtersets.py:108 +msgid "Cluster group" +msgstr "Кластерная группа" + +#: extras/filtersets.py:496 virtualization/filtersets.py:135 +msgid "Cluster group (slug)" +msgstr "Кластерная группа (slug)" + +#: extras/filtersets.py:506 tenancy/forms/forms.py:16 +#: tenancy/forms/forms.py:39 +msgid "Tenant group" +msgstr "Группа арендаторов" + +#: extras/filtersets.py:512 tenancy/filtersets.py:163 +#: tenancy/filtersets.py:183 +msgid "Tenant group (slug)" +msgstr "Группа арендаторов (slug)" + +#: extras/filtersets.py:528 templates/extras/tag.html:12 +msgid "Tag" +msgstr "Тег" + +#: extras/filtersets.py:534 +msgid "Tag (slug)" +msgstr "Тег (пуля)" + +#: extras/filtersets.py:594 extras/forms/filtersets.py:438 +msgid "Has local config context data" +msgstr "Имеет локальные контекстные данные конфигурации" + +#: extras/filtersets.py:619 +msgid "User name" +msgstr "Имя пользователя" + +#: extras/forms/bulk_edit.py:32 extras/forms/filtersets.py:56 +msgid "Group name" +msgstr "Название группы" + +#: extras/forms/bulk_edit.py:40 extras/forms/filtersets.py:64 +#: extras/tables/tables.py:47 templates/extras/customfield.html:39 +#: templates/generic/bulk_import.html:116 +msgid "Required" +msgstr "Требуется" + +#: extras/forms/bulk_edit.py:53 extras/forms/bulk_import.py:57 +#: extras/forms/filtersets.py:78 extras/models/customfields.py:193 +msgid "UI visible" +msgstr "Видимый пользовательский интерфейс" + +#: extras/forms/bulk_edit.py:58 extras/forms/bulk_import.py:63 +#: extras/forms/filtersets.py:83 extras/models/customfields.py:200 +msgid "UI editable" +msgstr "Редактируемый пользовательский интерфейс" + +#: extras/forms/bulk_edit.py:63 extras/forms/filtersets.py:86 +msgid "Is cloneable" +msgstr "Можно клонировать" + +#: extras/forms/bulk_edit.py:102 extras/forms/filtersets.py:126 +msgid "New window" +msgstr "Новое окно" + +#: extras/forms/bulk_edit.py:111 +msgid "Button class" +msgstr "Класс кнопки" + +#: extras/forms/bulk_edit.py:128 extras/forms/filtersets.py:164 +#: extras/models/models.py:439 +msgid "MIME type" +msgstr "Тип MIME" + +#: extras/forms/bulk_edit.py:133 extras/forms/filtersets.py:167 +msgid "File extension" +msgstr "Расширение файла" + +#: extras/forms/bulk_edit.py:138 extras/forms/filtersets.py:171 +msgid "As attachment" +msgstr "В качестве вложения" + +#: extras/forms/bulk_edit.py:166 extras/forms/filtersets.py:213 +#: extras/tables/tables.py:214 templates/extras/savedfilter.html:30 +msgid "Shared" +msgstr "Общий" + +#: extras/forms/bulk_edit.py:189 extras/forms/filtersets.py:242 +#: extras/models/models.py:204 +msgid "HTTP method" +msgstr "Метод HTTP" + +#: extras/forms/bulk_edit.py:193 extras/forms/filtersets.py:236 +#: templates/extras/webhook.html:37 +msgid "Payload URL" +msgstr "URL-адрес полезной нагрузки" + +#: extras/forms/bulk_edit.py:198 extras/models/models.py:244 +msgid "SSL verification" +msgstr "Проверка SSL" + +#: extras/forms/bulk_edit.py:201 templates/extras/webhook.html:45 +msgid "Secret" +msgstr "Секрет" + +#: extras/forms/bulk_edit.py:206 +msgid "CA file path" +msgstr "Путь к файлу CA" + +#: extras/forms/bulk_edit.py:225 +msgid "On create" +msgstr "При создании" + +#: extras/forms/bulk_edit.py:230 +msgid "On update" +msgstr "При обновлении" + +#: extras/forms/bulk_edit.py:235 +msgid "On delete" +msgstr "При удалении" + +#: extras/forms/bulk_edit.py:240 +msgid "On job start" +msgstr "При начале работы" + +#: extras/forms/bulk_edit.py:245 +msgid "On job end" +msgstr "По окончании работы" + +#: extras/forms/bulk_edit.py:282 +msgid "Is active" +msgstr "Активен" + +#: extras/forms/bulk_import.py:34 extras/forms/bulk_import.py:115 +#: extras/forms/bulk_import.py:130 extras/forms/bulk_import.py:153 +#: extras/forms/bulk_import.py:177 extras/forms/filtersets.py:114 +#: extras/forms/filtersets.py:160 extras/forms/filtersets.py:201 +#: extras/forms/model_forms.py:43 extras/forms/model_forms.py:127 +#: extras/forms/model_forms.py:154 extras/forms/model_forms.py:195 +#: extras/forms/model_forms.py:251 +msgid "Content types" +msgstr "Типы контента" + +#: extras/forms/bulk_import.py:36 extras/forms/bulk_import.py:117 +#: extras/forms/bulk_import.py:132 extras/forms/bulk_import.py:155 +#: extras/forms/bulk_import.py:179 tenancy/forms/bulk_import.py:96 +msgid "One or more assigned object types" +msgstr "Один или несколько назначенных типов объектов" + +#: extras/forms/bulk_import.py:41 +msgid "Field data type (e.g. text, integer, etc.)" +msgstr "Тип данных поля (например, текст, целое число и т. д.)" + +#: extras/forms/bulk_import.py:44 extras/forms/filtersets.py:48 +#: extras/forms/filtersets.py:259 extras/forms/model_forms.py:47 +#: extras/forms/model_forms.py:221 tenancy/forms/filtersets.py:91 +msgid "Object type" +msgstr "Тип объекта" + +#: extras/forms/bulk_import.py:47 +msgid "Object type (for object or multi-object fields)" +msgstr "" +"Тип объекта (для полей объектов или полей, состоящих из нескольких объектов)" + +#: extras/forms/bulk_import.py:50 extras/forms/filtersets.py:73 +msgid "Choice set" +msgstr "Набор для выбора" + +#: extras/forms/bulk_import.py:54 +msgid "Choice set (for selection fields)" +msgstr "Набор вариантов (для полей выбора)" + +#: extras/forms/bulk_import.py:60 +msgid "Whether the custom field is displayed in the UI" +msgstr "Отображается ли настраиваемое поле в пользовательском интерфейсе" + +#: extras/forms/bulk_import.py:66 +msgid "Whether the custom field is editable in the UI" +msgstr "" +"Доступно ли редактирование настраиваемого поля в пользовательском интерфейсе" + +#: extras/forms/bulk_import.py:82 +msgid "The base set of predefined choices to use (if any)" +msgstr "Базовый набор стандартных вариантов для использования (если есть)" + +#: extras/forms/bulk_import.py:88 +msgid "" +"Quoted string of comma-separated field choices with optional labels " +"separated by colon: \"choice1:First Choice,choice2:Second Choice\"" +msgstr "" +"Цитируемая строка с вариантами выбора полей, разделенных запятыми, с " +"дополнительными метками, разделенными двоеточием: «Choice1:First Choice, " +"Choice2:Second Choice»" + +#: extras/forms/bulk_import.py:182 +msgid "Action object" +msgstr "Объект действия" + +#: extras/forms/bulk_import.py:184 +msgid "Webhook name or script as dotted path module.Class" +msgstr "Имя веб-хука или скрипт в виде пунктирного пути module.Class" + +#: extras/forms/bulk_import.py:236 +msgid "Assigned object type" +msgstr "Назначенный тип объекта" + +#: extras/forms/bulk_import.py:241 +msgid "The classification of entry" +msgstr "Классификация записей" + +#: extras/forms/filtersets.py:53 +msgid "Field type" +msgstr "Тип поля" + +#: extras/forms/filtersets.py:97 extras/tables/tables.py:65 +#: templates/generic/bulk_import.html:148 +msgid "Choices" +msgstr "Варианты" + +#: extras/forms/filtersets.py:141 extras/forms/filtersets.py:327 +#: extras/forms/filtersets.py:417 extras/forms/model_forms.py:449 +#: templates/core/job.html:86 templates/extras/configcontext.html:86 +#: templates/extras/eventrule.html:111 +msgid "Data" +msgstr "Данные" + +#: extras/forms/filtersets.py:152 extras/forms/filtersets.py:341 +#: extras/forms/filtersets.py:427 utilities/choices.py:219 +#: utilities/forms/bulk_import.py:27 +msgid "Data file" +msgstr "Файл данных" + +#: extras/forms/filtersets.py:185 +msgid "Content type" +msgstr "Тип контента" + +#: extras/forms/filtersets.py:232 extras/models/models.py:209 +msgid "HTTP content type" +msgstr "Тип содержимого HTTP" + +#: extras/forms/filtersets.py:254 extras/forms/model_forms.py:269 +#: templates/extras/eventrule.html:46 +msgid "Events" +msgstr "События" + +#: extras/forms/filtersets.py:264 +msgid "Action type" +msgstr "Тип действия" + +#: extras/forms/filtersets.py:278 +msgid "Object creations" +msgstr "Создание объектов" + +#: extras/forms/filtersets.py:285 +msgid "Object updates" +msgstr "Обновления объектов" + +#: extras/forms/filtersets.py:292 +msgid "Object deletions" +msgstr "Удаление объектов" + +#: extras/forms/filtersets.py:299 +msgid "Job starts" +msgstr "Задание начинается" + +#: extras/forms/filtersets.py:306 extras/forms/model_forms.py:289 +msgid "Job terminations" +msgstr "Прекращение работы" + +#: extras/forms/filtersets.py:315 +msgid "Tagged object type" +msgstr "Тип объекта с тегами" + +#: extras/forms/filtersets.py:320 +msgid "Allowed object type" +msgstr "Разрешенный тип объекта" + +#: extras/forms/filtersets.py:349 extras/forms/model_forms.py:384 +#: netbox/navigation/menu.py:19 +msgid "Regions" +msgstr "Регионы" + +#: extras/forms/filtersets.py:354 extras/forms/model_forms.py:389 +msgid "Site groups" +msgstr "Группы сайтов" + +#: extras/forms/filtersets.py:364 extras/forms/model_forms.py:399 +#: netbox/navigation/menu.py:21 +msgid "Locations" +msgstr "Местоположения" + +#: extras/forms/filtersets.py:369 extras/forms/model_forms.py:404 +msgid "Device types" +msgstr "Типы устройств" + +#: extras/forms/filtersets.py:374 extras/forms/model_forms.py:409 +msgid "Roles" +msgstr "Роли" + +#: extras/forms/filtersets.py:384 extras/forms/model_forms.py:419 +msgid "Cluster types" +msgstr "Типы кластеров" + +#: extras/forms/filtersets.py:390 extras/forms/model_forms.py:424 +msgid "Cluster groups" +msgstr "Кластерные группы" + +#: extras/forms/filtersets.py:395 extras/forms/model_forms.py:429 +#: netbox/navigation/menu.py:243 netbox/navigation/menu.py:245 +#: templates/virtualization/clustertype.html:33 +#: virtualization/tables/clusters.py:23 virtualization/tables/clusters.py:45 +msgid "Clusters" +msgstr "Кластеры" + +#: extras/forms/filtersets.py:400 extras/forms/model_forms.py:434 +msgid "Tenant groups" +msgstr "Группы арендаторов" + +#: extras/forms/filtersets.py:454 extras/forms/filtersets.py:495 +msgid "After" +msgstr "После" + +#: extras/forms/filtersets.py:459 extras/forms/filtersets.py:500 +msgid "Before" +msgstr "До" + +#: extras/forms/filtersets.py:490 extras/tables/tables.py:426 +#: templates/extras/htmx/report_result.html:43 +#: templates/extras/objectchange.html:34 +msgid "Time" +msgstr "Время" + +#: extras/forms/filtersets.py:504 extras/forms/model_forms.py:271 +#: extras/tables/tables.py:440 templates/extras/eventrule.html:90 +#: templates/extras/objectchange.html:50 +msgid "Action" +msgstr "Действие" + +#: extras/forms/model_forms.py:50 +msgid "Type of the related object (for object/multi-object fields only)" +msgstr "" +"Тип связанного объекта (только для полей объектов/нескольких объектов)" + +#: extras/forms/model_forms.py:58 templates/extras/customfield.html:11 +msgid "Custom Field" +msgstr "Настраиваемое поле" + +#: extras/forms/model_forms.py:61 templates/extras/customfield.html:60 +msgid "Behavior" +msgstr "Поведение" + +#: extras/forms/model_forms.py:62 +msgid "Values" +msgstr "Ценности" + +#: extras/forms/model_forms.py:71 +msgid "" +"The type of data stored in this field. For object/multi-object fields, " +"select the related object type below." +msgstr "" +"Тип данных, хранящихся в этом поле. Для полей объектов или полей, состоящих " +"из нескольких объектов, выберите соответствующий тип объекта ниже." + +#: extras/forms/model_forms.py:74 +msgid "" +"This will be displayed as help text for the form field. Markdown is " +"supported." +msgstr "" +"Это будет отображаться в виде справочного текста для поля формы. " +"Поддерживается функция Markdown." + +#: extras/forms/model_forms.py:91 +msgid "" +"Enter one choice per line. An optional label may be specified for each " +"choice by appending it with a colon. Example:" +msgstr "" +"Введите по одному варианту в строке. Для каждого варианта можно указать " +"дополнительную метку, добавив ее двоеточием. Пример:" + +#: extras/forms/model_forms.py:132 templates/extras/customlink.html:10 +msgid "Custom Link" +msgstr "Настраиваемая ссылка" + +#: extras/forms/model_forms.py:133 +msgid "Templates" +msgstr "Шаблоны" + +#: extras/forms/model_forms.py:145 +msgid "" +"Jinja2 template code for the link text. Reference the object as {{ " +"object }}. Links which render as empty text will not be displayed." +msgstr "" + +#: extras/forms/model_forms.py:148 +msgid "" +"Jinja2 template code for the link URL. Reference the object as {{ " +"object }}." +msgstr "" + +#: extras/forms/model_forms.py:158 extras/forms/model_forms.py:500 +msgid "Template code" +msgstr "Код шаблона" + +#: extras/forms/model_forms.py:164 templates/extras/exporttemplate.html:17 +msgid "Export Template" +msgstr "Шаблон экспорта" + +#: extras/forms/model_forms.py:166 +msgid "Rendering" +msgstr "Рендеринг" + +#: extras/forms/model_forms.py:180 extras/forms/model_forms.py:525 +msgid "Template content is populated from the remote source selected below." +msgstr "" +"Содержимое шаблона заполняется из удаленного источника, выбранного ниже." + +#: extras/forms/model_forms.py:187 extras/forms/model_forms.py:532 +msgid "Must specify either local content or a data file" +msgstr "Необходимо указать локальное содержимое или файл данных" + +#: extras/forms/model_forms.py:201 netbox/forms/mixins.py:68 +#: templates/extras/savedfilter.html:10 +msgid "Saved Filter" +msgstr "Сохраненный фильтр" + +#: extras/forms/model_forms.py:234 templates/extras/webhook.html:28 +msgid "HTTP Request" +msgstr "HTTP-запрос" + +#: extras/forms/model_forms.py:237 templates/extras/webhook.html:53 +msgid "SSL" +msgstr "SSL" + +#: extras/forms/model_forms.py:255 +msgid "Action choice" +msgstr "Выбор действия" + +#: extras/forms/model_forms.py:260 +msgid "Enter conditions in JSON format." +msgstr "Введите условия в JSON формат." + +#: extras/forms/model_forms.py:264 +msgid "" +"Enter parameters to pass to the action in JSON format." +msgstr "" +"Введите параметры для перехода к действию в JSON формат." + +#: extras/forms/model_forms.py:268 templates/extras/eventrule.html:11 +msgid "Event Rule" +msgstr "Правило мероприятия" + +#: extras/forms/model_forms.py:270 templates/extras/eventrule.html:78 +msgid "Conditions" +msgstr "условия" + +#: extras/forms/model_forms.py:285 +msgid "Creations" +msgstr "Творения" + +#: extras/forms/model_forms.py:286 +msgid "Updates" +msgstr "Обновления" + +#: extras/forms/model_forms.py:287 +msgid "Deletions" +msgstr "Удаления" + +#: extras/forms/model_forms.py:288 +msgid "Job executions" +msgstr "Выполнение заданий" + +#: extras/forms/model_forms.py:366 users/forms/model_forms.py:285 +msgid "Object types" +msgstr "Типы объектов" + +#: extras/forms/model_forms.py:439 netbox/navigation/menu.py:40 +#: tenancy/tables/tenants.py:22 +msgid "Tenants" +msgstr "Арендаторы" + +#: extras/forms/model_forms.py:456 ipam/forms/filtersets.py:141 +#: ipam/forms/filtersets.py:527 templates/extras/configcontext.html:62 +#: templates/ipam/ipaddress.html:62 templates/ipam/vlan_edit.html:30 +#: tenancy/forms/filtersets.py:86 users/forms/model_forms.py:323 +msgid "Assignment" +msgstr "Задание" + +#: extras/forms/model_forms.py:482 +msgid "Data is populated from the remote source selected below." +msgstr "Данные заполняются из удаленного источника, выбранного ниже." + +#: extras/forms/model_forms.py:488 +msgid "Must specify either local data or a data file" +msgstr "Необходимо указать локальные данные или файл данных" + +#: extras/forms/model_forms.py:507 templates/core/datafile.html:65 +msgid "Content" +msgstr "Контент" + +#: extras/forms/reports.py:18 extras/forms/scripts.py:24 +msgid "Schedule at" +msgstr "Расписание на" + +#: extras/forms/reports.py:19 +msgid "Schedule execution of report to a set time" +msgstr "Запланировать выполнение отчета на установленное время" + +#: extras/forms/reports.py:24 extras/forms/scripts.py:30 +msgid "Recurs every" +msgstr "Повторяется каждый" + +#: extras/forms/reports.py:28 +msgid "Interval at which this report is re-run (in minutes)" +msgstr "Интервал повторного запуска отчета (в минутах)" + +#: extras/forms/reports.py:36 extras/forms/scripts.py:42 +#, python-brace-format +msgid " (current time: {now})" +msgstr " (текущее время: {now})" + +#: extras/forms/reports.py:46 extras/forms/scripts.py:52 +msgid "Scheduled time must be in the future." +msgstr "Запланированное время должно быть в будущем." + +#: extras/forms/scripts.py:18 +msgid "Commit changes" +msgstr "Зафиксируйте изменения" + +#: extras/forms/scripts.py:19 +msgid "Commit changes to the database (uncheck for a dry-run)" +msgstr "" +"Зафиксируйте изменения в базе данных (снимите флажок для пробного запуска)" + +#: extras/forms/scripts.py:25 +msgid "Schedule execution of script to a set time" +msgstr "Запланируйте выполнение скрипта на заданное время" + +#: extras/forms/scripts.py:34 +msgid "Interval at which this script is re-run (in minutes)" +msgstr "Интервал повторного запуска этого скрипта (в минутах)" + +#: extras/models/change_logging.py:24 +msgid "time" +msgstr "время" + +#: extras/models/change_logging.py:37 +msgid "user name" +msgstr "имя пользователя" + +#: extras/models/change_logging.py:42 +msgid "request ID" +msgstr "идентификатор запроса" + +#: extras/models/change_logging.py:47 extras/models/staging.py:69 +msgid "action" +msgstr "действие" + +#: extras/models/change_logging.py:81 +msgid "pre-change data" +msgstr "данные перед изменением" + +#: extras/models/change_logging.py:87 +msgid "post-change data" +msgstr "данные после изменений" + +#: extras/models/change_logging.py:101 +msgid "object change" +msgstr "изменение объекта" + +#: extras/models/change_logging.py:102 +msgid "object changes" +msgstr "изменения объекта" + +#: extras/models/change_logging.py:118 +#, python-brace-format +msgid "Change logging is not supported for this object type ({type})." +msgstr "" +"Ведение журнала изменений не поддерживается для этого типа объектов " +"({type})." + +#: extras/models/configs.py:130 +msgid "config context" +msgstr "контекст конфигурации" + +#: extras/models/configs.py:131 +msgid "config contexts" +msgstr "контексты конфигурации" + +#: extras/models/configs.py:149 extras/models/configs.py:205 +msgid "JSON data must be in object form. Example:" +msgstr "Данные JSON должны быть в форме объекта. Пример:" + +#: extras/models/configs.py:169 +msgid "" +"Local config context data takes precedence over source contexts in the final" +" rendered config context" +msgstr "" +"Данные контекста локальной конфигурации имеют приоритет над исходными " +"контекстами в окончательном визуализированном контексте конфигурации" + +#: extras/models/configs.py:224 +msgid "template code" +msgstr "код шаблона" + +#: extras/models/configs.py:225 +msgid "Jinja2 template code." +msgstr "Код шаблона Jinja2." + +#: extras/models/configs.py:228 +msgid "environment parameters" +msgstr "параметры окружения" + +#: extras/models/configs.py:233 +msgid "" +"Any additional" +" parameters to pass when constructing the Jinja2 environment." +msgstr "" +"Любое дополнительные" +" параметры пройти тест при построении среды Jinja2." + +#: extras/models/configs.py:240 +msgid "config template" +msgstr "шаблон конфигурации" + +#: extras/models/configs.py:241 +msgid "config templates" +msgstr "шаблоны конфигураций" + +#: extras/models/customfields.py:72 +msgid "The object(s) to which this field applies." +msgstr "Объекты, к которым относится это поле." + +#: extras/models/customfields.py:79 +msgid "The type of data this custom field holds" +msgstr "Тип данных, которые содержит это настраиваемое поле" + +#: extras/models/customfields.py:86 +msgid "The type of NetBox object this field maps to (for object fields)" +msgstr "" +"Тип объекта NetBox, которому соответствует это поле (для полей объектов)" + +#: extras/models/customfields.py:92 +msgid "Internal field name" +msgstr "Имя внутреннего поля" + +#: extras/models/customfields.py:96 +msgid "Only alphanumeric characters and underscores are allowed." +msgstr "Допустимы только буквенно-цифровые символы и символы подчеркивания." + +#: extras/models/customfields.py:101 +msgid "Double underscores are not permitted in custom field names." +msgstr "" +"В именах настраиваемых полей недопустимо использовать двойное подчеркивание." + +#: extras/models/customfields.py:112 +msgid "" +"Name of the field as displayed to users (if not provided, 'the field's name " +"will be used)" +msgstr "" +"Имя поля, отображаемое пользователям (если оно не указано, будет " +"использовано имя поля)" + +#: extras/models/customfields.py:116 extras/models/models.py:347 +msgid "group name" +msgstr "имя группы" + +#: extras/models/customfields.py:119 +msgid "Custom fields within the same group will be displayed together" +msgstr "Настраиваемые поля в одной группе будут отображаться вместе" + +#: extras/models/customfields.py:127 +msgid "required" +msgstr "требуется" + +#: extras/models/customfields.py:129 +msgid "" +"If true, this field is required when creating new objects or editing an " +"existing object." +msgstr "" +"Если это правда, это поле обязательно для создания новых объектов или " +"редактирования существующего объекта." + +#: extras/models/customfields.py:132 +msgid "search weight" +msgstr "вес поиска" + +#: extras/models/customfields.py:135 +msgid "" +"Weighting for search. Lower values are considered more important. Fields " +"with a search weight of zero will be ignored." +msgstr "" +"Взвешивание для поиска. Более низкие значения считаются более важными. Поля " +"с нулевым весом поиска будут проигнорированы." + +#: extras/models/customfields.py:140 +msgid "filter logic" +msgstr "логика фильтрации" + +#: extras/models/customfields.py:144 +msgid "" +"Loose matches any instance of a given string; exact matches the entire " +"field." +msgstr "" +"Loose соответствует любому экземпляру заданной строки; точно соответствует " +"всему полю." + +#: extras/models/customfields.py:147 +msgid "default" +msgstr "дефолт" + +#: extras/models/customfields.py:151 +msgid "" +"Default value for the field (must be a JSON value). Encapsulate strings with" +" double quotes (e.g. \"Foo\")." +msgstr "" +"Значение по умолчанию для поля (должно быть JSON-значением). Заключайте " +"строки в двойные кавычки (например, «Foo»)." + +#: extras/models/customfields.py:156 +msgid "display weight" +msgstr "вес дисплея" + +#: extras/models/customfields.py:157 +msgid "Fields with higher weights appear lower in a form." +msgstr "Поля с большим весом отображаются в форме ниже." + +#: extras/models/customfields.py:162 +msgid "minimum value" +msgstr "минимальное значение" + +#: extras/models/customfields.py:163 +msgid "Minimum allowed value (for numeric fields)" +msgstr "Минимальное допустимое значение (для числовых полей)" + +#: extras/models/customfields.py:168 +msgid "maximum value" +msgstr "максимальное значение" + +#: extras/models/customfields.py:169 +msgid "Maximum allowed value (for numeric fields)" +msgstr "Максимально допустимое значение (для числовых полей)" + +#: extras/models/customfields.py:175 +msgid "validation regex" +msgstr "регулярное выражение валидации" + +#: extras/models/customfields.py:177 +#, python-brace-format +msgid "" +"Regular expression to enforce on text field values. Use ^ and $ to force " +"matching of entire string. For example, ^[A-Z]{3}$ will limit " +"values to exactly three uppercase letters." +msgstr "" +"Регулярное выражение для применения к значениям текстовых полей. Используйте" +" ^ и $ для принудительного сопоставления всей строки. Например, ^ " +"[A-Z]{3}$ ограничит значения ровно тремя заглавными буквами." + +#: extras/models/customfields.py:185 +msgid "choice set" +msgstr "набор для выбора" + +#: extras/models/customfields.py:194 +msgid "Specifies whether the custom field is displayed in the UI" +msgstr "" +"Указывает, отображается ли настраиваемое поле в пользовательском интерфейсе" + +#: extras/models/customfields.py:201 +msgid "Specifies whether the custom field value can be edited in the UI" +msgstr "" +"Указывает, можно ли редактировать значение настраиваемого поля в " +"пользовательском интерфейсе" + +#: extras/models/customfields.py:205 +msgid "is cloneable" +msgstr "клонируется" + +#: extras/models/customfields.py:206 +msgid "Replicate this value when cloning objects" +msgstr "Реплицируйте это значение при клонировании объектов" + +#: extras/models/customfields.py:219 +msgid "custom field" +msgstr "настраиваемое поле" + +#: extras/models/customfields.py:220 +msgid "custom fields" +msgstr "настраиваемые поля" + +#: extras/models/customfields.py:309 +#, python-brace-format +msgid "Invalid default value \"{value}\": {error}" +msgstr "Неверное значение по умолчанию»{value}«: {error}" + +#: extras/models/customfields.py:316 +msgid "A minimum value may be set only for numeric fields" +msgstr "Минимальное значение может быть установлено только для числовых полей" + +#: extras/models/customfields.py:318 +msgid "A maximum value may be set only for numeric fields" +msgstr "" +"Максимальное значение может быть установлено только для числовых полей" + +#: extras/models/customfields.py:328 +msgid "" +"Regular expression validation is supported only for text and URL fields" +msgstr "" +"Проверка регулярных выражений поддерживается только для текстовых полей и " +"полей URL" + +#: extras/models/customfields.py:338 +msgid "Selection fields must specify a set of choices." +msgstr "В полях выбора должен быть указан набор вариантов." + +#: extras/models/customfields.py:342 +msgid "Choices may be set only on selection fields." +msgstr "Варианты могут быть заданы только в полях выбора." + +#: extras/models/customfields.py:349 +msgid "Object fields must define an object type." +msgstr "Поля объекта должны определять тип объекта." + +#: extras/models/customfields.py:354 +#, python-brace-format +msgid "{type} fields may not define an object type." +msgstr "{type} поля не могут определять тип объекта." + +#: extras/models/customfields.py:434 +msgid "True" +msgstr "Верно" + +#: extras/models/customfields.py:435 +msgid "False" +msgstr "Ложь" + +#: extras/models/customfields.py:517 +#, python-brace-format +msgid "Values must match this regex: {regex}" +msgstr "" +"Значения должны соответствовать этому регулярному вырагу: " +"{regex}" + +#: extras/models/customfields.py:612 +msgid "Value must be a string." +msgstr "Значение должно быть строкой." + +#: extras/models/customfields.py:614 +#, python-brace-format +msgid "Value must match regex '{regex}'" +msgstr "Значение должно совпадать с регулярным выраженностью '{regex}'" + +#: extras/models/customfields.py:619 +msgid "Value must be an integer." +msgstr "Значение должно быть целым числом." + +#: extras/models/customfields.py:622 extras/models/customfields.py:637 +#, python-brace-format +msgid "Value must be at least {minimum}" +msgstr "Значение должно быть не менее {minimum}" + +#: extras/models/customfields.py:626 extras/models/customfields.py:641 +#, python-brace-format +msgid "Value must not exceed {maximum}" +msgstr "Значение не должно превышать {maximum}" + +#: extras/models/customfields.py:634 +msgid "Value must be a decimal." +msgstr "Значение должно быть десятичным." + +#: extras/models/customfields.py:646 +msgid "Value must be true or false." +msgstr "Значение должно быть истинным или ложным." + +#: extras/models/customfields.py:654 +msgid "Date values must be in ISO 8601 format (YYYY-MM-DD)." +msgstr "Значения дат должны быть в формате ISO 8601 (YYYY-MM-DD)." + +#: extras/models/customfields.py:663 +msgid "Date and time values must be in ISO 8601 format (YYYY-MM-DD HH:MM:SS)." +msgstr "" +"Значения даты и времени должны быть в формате ISO 8601 (YYYY-MM-DD " +"HH:MM:SS)." + +#: extras/models/customfields.py:670 +#, python-brace-format +msgid "Invalid choice ({value}) for choice set {choiceset}." +msgstr "Неверный выбор ({value}2) для выбора набора {choiceset}." + +#: extras/models/customfields.py:680 +#, python-brace-format +msgid "Invalid choice(s) ({value}) for choice set {choiceset}." +msgstr "Неверный выбор (ы){value}2) для выбора набора {choiceset}." + +#: extras/models/customfields.py:689 +#, python-brace-format +msgid "Value must be an object ID, not {type}" +msgstr "Значение должно быть идентификатором объекта, а не {type}" + +#: extras/models/customfields.py:695 +#, python-brace-format +msgid "Value must be a list of object IDs, not {type}" +msgstr "Значение должно быть списком идентификаторов объектов, а не {type}" + +#: extras/models/customfields.py:699 +#, python-brace-format +msgid "Found invalid object ID: {id}" +msgstr "Обнаружен неправильный идентификатор объекта: {id}" + +#: extras/models/customfields.py:702 +msgid "Required field cannot be empty." +msgstr "Обязательное поле не может быть пустым." + +#: extras/models/customfields.py:721 +msgid "Base set of predefined choices (optional)" +msgstr "Базовый набор предопределенных вариантов (опционально)" + +#: extras/models/customfields.py:733 +msgid "Choices are automatically ordered alphabetically" +msgstr "Варианты автоматически упорядочены в алфавитном порядке" + +#: extras/models/customfields.py:740 +msgid "custom field choice set" +msgstr "набор вариантов настраиваемых полей" + +#: extras/models/customfields.py:741 +msgid "custom field choice sets" +msgstr "настраиваемые наборы для выбора полей" + +#: extras/models/customfields.py:777 +msgid "Must define base or extra choices." +msgstr "Должен определить базовые или дополнительные варианты." + +#: extras/models/dashboard.py:19 +msgid "layout" +msgstr "макет" + +#: extras/models/dashboard.py:23 +msgid "config" +msgstr "конфигурации" + +#: extras/models/dashboard.py:28 +msgid "dashboard" +msgstr "панель управления" + +#: extras/models/dashboard.py:29 +msgid "dashboards" +msgstr "щитки" + +#: extras/models/models.py:49 +msgid "object types" +msgstr "типы объектов" + +#: extras/models/models.py:50 +msgid "The object(s) to which this rule applies." +msgstr "Объект (объекты), к которым применяется данное правило." + +#: extras/models/models.py:63 +msgid "on create" +msgstr "при создании" + +#: extras/models/models.py:65 +msgid "Triggers when a matching object is created." +msgstr "Срабатывает при создании совпадающего объекта." + +#: extras/models/models.py:68 +msgid "on update" +msgstr "при обновлении" + +#: extras/models/models.py:70 +msgid "Triggers when a matching object is updated." +msgstr "Срабатывает при обновлении совпадающего объекта." + +#: extras/models/models.py:73 +msgid "on delete" +msgstr "при удалении" + +#: extras/models/models.py:75 +msgid "Triggers when a matching object is deleted." +msgstr "Срабатывает при удалении совпадающего объекта." + +#: extras/models/models.py:78 +msgid "on job start" +msgstr "при начале работы" + +#: extras/models/models.py:80 +msgid "Triggers when a job for a matching object is started." +msgstr "Срабатывает при запуске задания для совпадающего объекта." + +#: extras/models/models.py:83 +msgid "on job end" +msgstr "по окончании работы" + +#: extras/models/models.py:85 +msgid "Triggers when a job for a matching object terminates." +msgstr "Срабатывает, когда задание на совпадающий объект завершается." + +#: extras/models/models.py:92 +msgid "conditions" +msgstr "условия" + +#: extras/models/models.py:95 +msgid "" +"A set of conditions which determine whether the event will be generated." +msgstr "Набор условий, определяющих, будет ли создано событие." + +#: extras/models/models.py:103 +msgid "action type" +msgstr "тип действия" + +#: extras/models/models.py:126 +msgid "Additional data to pass to the action object" +msgstr "Дополнительные данные для передачи объекту действия" + +#: extras/models/models.py:138 +msgid "event rule" +msgstr "правило события" + +#: extras/models/models.py:139 +msgid "event rules" +msgstr "правила мероприятия" + +#: extras/models/models.py:155 +msgid "" +"At least one event type must be selected: create, update, delete, job start," +" and/or job end." +msgstr "" +"Необходимо выбрать хотя бы один тип события: создание, обновление, удаление," +" начало задания и/или завершение задания." + +#: extras/models/models.py:196 +msgid "" +"This URL will be called using the HTTP method defined when the webhook is " +"called. Jinja2 template processing is supported with the same context as the" +" request body." +msgstr "" +"Этот URL-адрес будет вызываться с помощью метода HTTP, определенного при " +"вызове веб-хука. Обработка шаблона Jinja2 поддерживается в том же контексте," +" что и тело запроса." + +#: extras/models/models.py:211 +msgid "" +"The complete list of official content types is available here." +msgstr "" +"Доступен полный список официальных типов контента здесь." + +#: extras/models/models.py:216 +msgid "additional headers" +msgstr "дополнительные заголовки" + +#: extras/models/models.py:219 +msgid "" +"User-supplied HTTP headers to be sent with the request in addition to the " +"HTTP content type. Headers should be defined in the format Name: " +"Value. Jinja2 template processing is supported with the same context " +"as the request body (below)." +msgstr "" +"Заголовки HTTP, предоставляемые пользователем, которые будут отправлены " +"вместе с запросом в дополнение к типу содержимого HTTP. Заголовки должны " +"быть определены в формате Название: Значение. Обработка шаблона" +" Jinja2 поддерживается в том же контексте, что и тело запроса (см. ниже)." + +#: extras/models/models.py:225 +msgid "body template" +msgstr "шаблон тела" + +#: extras/models/models.py:228 +msgid "" +"Jinja2 template for a custom request body. If blank, a JSON object " +"representing the change will be included. Available context data includes: " +"event, model, timestamp, " +"username, request_id, and data." +msgstr "" +"Шаблон Jinja2 для настраиваемого тела запроса. Если поле пусто, будет " +"добавлен объект JSON, представляющий изменение. Доступные контекстные данные" +" включают: событие, модель, отметка " +"времени, имя пользователя, идентификатор " +"запроса, и данные." + +#: extras/models/models.py:234 +msgid "secret" +msgstr "секретный" + +#: extras/models/models.py:238 +msgid "" +"When provided, the request will include a X-Hook-Signature " +"header containing a HMAC hex digest of the payload body using the secret as " +"the key. The secret is not transmitted in the request." +msgstr "" +"Если запрос будет предоставлен, он будет включать Подпись " +"X-Hook заголовок, содержащий шестнадцатеричный дайджест тела полезной" +" нагрузки в формате HMAC, в котором в качестве ключа используется секрет. " +"Секрет не передается в запросе." + +#: extras/models/models.py:245 +msgid "Enable SSL certificate verification. Disable with caution!" +msgstr "Включите проверку сертификата SSL. Отключайте с осторожностью!" + +#: extras/models/models.py:251 templates/extras/webhook.html:62 +msgid "CA File Path" +msgstr "Путь к файлу CA" + +#: extras/models/models.py:253 +msgid "" +"The specific CA certificate file to use for SSL verification. Leave blank to" +" use the system defaults." +msgstr "" +"Конкретный файл сертификата CA, используемый для проверки SSL. Оставьте поле" +" пустым, чтобы использовать системные настройки по умолчанию." + +#: extras/models/models.py:264 +msgid "webhook" +msgstr "вебхук" + +#: extras/models/models.py:265 +msgid "webhooks" +msgstr "вебхуки" + +#: extras/models/models.py:283 +msgid "Do not specify a CA certificate file if SSL verification is disabled." +msgstr "Не указывайте файл сертификата CA, если проверка SSL отключена." + +#: extras/models/models.py:323 +msgid "The object type(s) to which this link applies." +msgstr "Тип (ы) объекта, к которому относится эта ссылка." + +#: extras/models/models.py:335 +msgid "link text" +msgstr "текст ссылки" + +#: extras/models/models.py:336 +msgid "Jinja2 template code for link text" +msgstr "Код шаблона Jinja2 для текста ссылки" + +#: extras/models/models.py:339 +msgid "link URL" +msgstr "URL-адрес ссылки" + +#: extras/models/models.py:340 +msgid "Jinja2 template code for link URL" +msgstr "Код шаблона Jinja2 для URL-адреса ссылки" + +#: extras/models/models.py:350 +msgid "Links with the same group will appear as a dropdown menu" +msgstr "Ссылки с той же группой появятся в выпадающем меню" + +#: extras/models/models.py:353 +msgid "button class" +msgstr "класс кнопок" + +#: extras/models/models.py:357 +msgid "" +"The class of the first link in a group will be used for the dropdown button" +msgstr "" +"Класс первой ссылки в группе будет использоваться для кнопки раскрывающегося" +" списка" + +#: extras/models/models.py:360 +msgid "new window" +msgstr "новое окно" + +#: extras/models/models.py:362 +msgid "Force link to open in a new window" +msgstr "Принудительно открыть ссылку в новом окне" + +#: extras/models/models.py:371 +msgid "custom link" +msgstr "настраиваемая ссылка" + +#: extras/models/models.py:372 +msgid "custom links" +msgstr "настраиваемые ссылки" + +#: extras/models/models.py:419 +msgid "The object type(s) to which this template applies." +msgstr "Тип (типы) объектов, к которым применим этот шаблон." + +#: extras/models/models.py:432 +msgid "" +"Jinja2 template code. The list of objects being exported is passed as a " +"context variable named queryset." +msgstr "" +"Код шаблона Jinja2. Список экспортируемых объектов передается в виде " +"контекстной переменной с именем набор запросов." + +#: extras/models/models.py:440 +msgid "Defaults to text/plain; charset=utf-8" +msgstr "По умолчанию текстовый/обычный; кодировка=utf-8" + +#: extras/models/models.py:443 +msgid "file extension" +msgstr "расширение файла" + +#: extras/models/models.py:446 +msgid "Extension to append to the rendered filename" +msgstr "Расширение для добавления к отображаемому имени файла" + +#: extras/models/models.py:449 +msgid "as attachment" +msgstr "в качестве вложения" + +#: extras/models/models.py:451 +msgid "Download file as attachment" +msgstr "Загрузить файл в виде вложения" + +#: extras/models/models.py:460 +msgid "export template" +msgstr "шаблон экспорта" + +#: extras/models/models.py:461 +msgid "export templates" +msgstr "шаблоны экспорта" + +#: extras/models/models.py:478 +#, python-brace-format +msgid "\"{name}\" is a reserved name. Please choose a different name." +msgstr "«{name}\"— зарезервированное имя. Пожалуйста, выберите другое имя." + +#: extras/models/models.py:528 +msgid "The object type(s) to which this filter applies." +msgstr "Тип (типы) объектов, к которым применяется этот фильтр." + +#: extras/models/models.py:560 +msgid "shared" +msgstr "общий" + +#: extras/models/models.py:573 +msgid "saved filter" +msgstr "сохраненный фильтр" + +#: extras/models/models.py:574 +msgid "saved filters" +msgstr "сохраненные фильтры" + +#: extras/models/models.py:592 +msgid "Filter parameters must be stored as a dictionary of keyword arguments." +msgstr "" +"Параметры фильтра должны храниться в виде словаря аргументов ключевых слов." + +#: extras/models/models.py:620 +msgid "image height" +msgstr "высота изображения" + +#: extras/models/models.py:623 +msgid "image width" +msgstr "ширина изображения" + +#: extras/models/models.py:640 +msgid "image attachment" +msgstr "вложение изображения" + +#: extras/models/models.py:641 +msgid "image attachments" +msgstr "вложения изображений" + +#: extras/models/models.py:655 +#, python-brace-format +msgid "Image attachments cannot be assigned to this object type ({type})." +msgstr "Вложенные изображения нельзя присвоить этому типу объекта ({type})." + +#: extras/models/models.py:718 +msgid "kind" +msgstr "добрый" + +#: extras/models/models.py:732 +msgid "journal entry" +msgstr "запись в журнале" + +#: extras/models/models.py:733 +msgid "journal entries" +msgstr "записи в журнале" + +#: extras/models/models.py:748 +#, python-brace-format +msgid "Journaling is not supported for this object type ({type})." +msgstr "Ведение журнала не поддерживается для этого типа объектов ({type})." + +#: extras/models/models.py:790 +msgid "bookmark" +msgstr "закладка" + +#: extras/models/models.py:791 +msgid "bookmarks" +msgstr "закладки" + +#: extras/models/models.py:804 +#, python-brace-format +msgid "Bookmarks cannot be assigned to this object type ({type})." +msgstr "Закладки нельзя присвоить этому типу объекта ({type})." + +#: extras/models/reports.py:46 +msgid "report module" +msgstr "модуль отчетов" + +#: extras/models/reports.py:47 +msgid "report modules" +msgstr "модули отчетов" + +#: extras/models/scripts.py:46 +msgid "script module" +msgstr "скриптовый модуль" + +#: extras/models/scripts.py:47 +msgid "script modules" +msgstr "скриптовые модули" + +#: extras/models/search.py:24 +msgid "timestamp" +msgstr "отметка времени" + +#: extras/models/search.py:39 +msgid "field" +msgstr "сфера" + +#: extras/models/search.py:47 +msgid "value" +msgstr "значение" + +#: extras/models/search.py:58 +msgid "cached value" +msgstr "кэшированное значение" + +#: extras/models/search.py:59 +msgid "cached values" +msgstr "кэшированные значения" + +#: extras/models/staging.py:44 +msgid "branch" +msgstr "филиал" + +#: extras/models/staging.py:45 +msgid "branches" +msgstr "ветвей" + +#: extras/models/staging.py:97 +msgid "staged change" +msgstr "поэтапное изменение" + +#: extras/models/staging.py:98 +msgid "staged changes" +msgstr "поэтапные изменения" + +#: extras/models/tags.py:40 +msgid "The object type(s) to which this this tag can be applied." +msgstr "Тип (ы) объекта, к которому можно применить этот тег." + +#: extras/models/tags.py:49 +msgid "tag" +msgstr "тег" + +#: extras/models/tags.py:50 +msgid "tags" +msgstr "ярлыки" + +#: extras/models/tags.py:78 +msgid "tagged item" +msgstr "помеченный товар" + +#: extras/models/tags.py:79 +msgid "tagged items" +msgstr "помеченные товары" + +#: extras/signals.py:221 +#, python-brace-format +msgid "Deletion is prevented by a protection rule: {message}" +msgstr "Удаление предотвращается правилом защиты: {message}" + +#: extras/tables/tables.py:44 extras/tables/tables.py:119 +#: extras/tables/tables.py:143 extras/tables/tables.py:208 +#: extras/tables/tables.py:281 +msgid "Content Types" +msgstr "Типы контента" + +#: extras/tables/tables.py:50 +msgid "Visible" +msgstr "Видимый" + +#: extras/tables/tables.py:53 +msgid "Editable" +msgstr "Редактируемый" + +#: extras/tables/tables.py:60 templates/extras/customfield.html:48 +msgid "Choice Set" +msgstr "Набор для выбора" + +#: extras/tables/tables.py:68 +msgid "Is Cloneable" +msgstr "Можно ли клонировать" + +#: extras/tables/tables.py:98 +msgid "Count" +msgstr "Сосчитайте" + +#: extras/tables/tables.py:101 +msgid "Order Alphabetically" +msgstr "Упорядочить в алфавитном порядке" + +#: extras/tables/tables.py:125 templates/extras/customlink.html:34 +msgid "New Window" +msgstr "Новое окно" + +#: extras/tables/tables.py:146 +msgid "As Attachment" +msgstr "В качестве вложения" + +#: extras/tables/tables.py:153 extras/tables/tables.py:367 +#: extras/tables/tables.py:402 templates/core/datafile.html:32 +#: templates/dcim/device/render_config.html:23 +#: templates/extras/configcontext.html:40 +#: templates/extras/configtemplate.html:32 +#: templates/extras/exporttemplate.html:51 +#: templates/generic/bulk_import.html:30 +#: templates/virtualization/virtualmachine/render_config.html:23 +msgid "Data File" +msgstr "Файл данных" + +#: extras/tables/tables.py:158 extras/tables/tables.py:379 +#: extras/tables/tables.py:407 +msgid "Synced" +msgstr "Синхронизировано" + +#: extras/tables/tables.py:178 +msgid "Content Type" +msgstr "Тип контента" + +#: extras/tables/tables.py:185 +msgid "Image" +msgstr "Изображение" + +#: extras/tables/tables.py:190 +msgid "Size (Bytes)" +msgstr "Размер (байты)" + +#: extras/tables/tables.py:233 extras/tables/tables.py:326 +#: templates/extras/customfield.html:96 templates/extras/eventrule.html:32 +#: templates/users/objectpermission.html:68 users/tables.py:83 +msgid "Object Types" +msgstr "Типы объектов" + +#: extras/tables/tables.py:255 +msgid "SSL Validation" +msgstr "Валидация SSL" + +#: extras/tables/tables.py:278 +msgid "Action Type" +msgstr "Тип действия" + +#: extras/tables/tables.py:296 +msgid "Job Start" +msgstr "Начало работы" + +#: extras/tables/tables.py:299 +msgid "Job End" +msgstr "Завершение задания" + +#: extras/tables/tables.py:436 templates/account/profile.html:20 +#: templates/users/user.html:22 +msgid "Full Name" +msgstr "Полное имя" + +#: extras/tables/tables.py:453 templates/extras/objectchange.html:72 +msgid "Request ID" +msgstr "Идентификатор запроса" + +#: extras/tables/tables.py:490 +msgid "Comments (Short)" +msgstr "Комментарии (короткие)" + +#: extras/validators.py:13 +#, python-format +msgid "Ensure this value is equal to %(limit_value)s." +msgstr "Убедитесь, что это значение равно %(limit_value)s." + +#: extras/validators.py:24 +#, python-format +msgid "Ensure this value does not equal %(limit_value)s." +msgstr "Убедитесь, что это значение не равно %(limit_value)s." + +#: extras/validators.py:35 +msgid "This field must be empty." +msgstr "Это поле должно быть пустым." + +#: extras/validators.py:50 +msgid "This field must not be empty." +msgstr "Это поле не должно быть пустым." + +#: extras/views.py:880 +msgid "Your dashboard has been reset." +msgstr "Панель управления была перезагружена." + +#: ipam/api/field_serializers.py:17 +msgid "Enter a valid IPv4 or IPv6 address with optional mask." +msgstr "Введите действительный адрес IPv4 или IPv6 с дополнительной маской." + +#: ipam/api/field_serializers.py:24 +#, python-brace-format +msgid "Invalid IP address format: {data}" +msgstr "Неверный формат IP-адреса: {data}" + +#: ipam/api/field_serializers.py:37 +msgid "Enter a valid IPv4 or IPv6 prefix and mask in CIDR notation." +msgstr "Введите действительный префикс и маску IPv4 или IPv6 в нотации CIDR." + +#: ipam/api/field_serializers.py:44 +#, python-brace-format +msgid "Invalid IP prefix format: {data}" +msgstr "Неверный формат IP-префикса: {data}" + +#: ipam/choices.py:30 +msgid "Container" +msgstr "Контейнер" + +#: ipam/choices.py:72 +msgid "DHCP" +msgstr "DHCP" + +#: ipam/choices.py:73 +msgid "SLAAC" +msgstr "СЛАБАК" + +#: ipam/choices.py:89 +msgid "Loopback" +msgstr "Обратная петля" + +#: ipam/choices.py:90 tenancy/choices.py:18 +msgid "Secondary" +msgstr "Вторичный" + +#: ipam/choices.py:91 +msgid "Anycast" +msgstr "Anycast" + +#: ipam/choices.py:115 +msgid "Standard" +msgstr "Стандарт" + +#: ipam/choices.py:120 +msgid "CheckPoint" +msgstr "Контрольная точка" + +#: ipam/choices.py:123 +msgid "Cisco" +msgstr "Cisco" + +#: ipam/choices.py:137 +msgid "Plaintext" +msgstr "Обычный текст" + +#: ipam/filtersets.py:47 vpn/filtersets.py:276 +msgid "Import target" +msgstr "Цель импорта" + +#: ipam/filtersets.py:53 vpn/filtersets.py:282 +msgid "Import target (name)" +msgstr "Цель импорта (имя)" + +#: ipam/filtersets.py:58 vpn/filtersets.py:287 +msgid "Export target" +msgstr "Цель экспорта" + +#: ipam/filtersets.py:64 vpn/filtersets.py:293 +msgid "Export target (name)" +msgstr "Цель экспорта (имя)" + +#: ipam/filtersets.py:85 +msgid "Importing VRF" +msgstr "Импорт VRF" + +#: ipam/filtersets.py:91 +msgid "Import VRF (RD)" +msgstr "Импорт VRF (RD)" + +#: ipam/filtersets.py:96 +msgid "Exporting VRF" +msgstr "Экспорт VRF" + +#: ipam/filtersets.py:102 +msgid "Export VRF (RD)" +msgstr "Экспорт VRF (RD)" + +#: ipam/filtersets.py:132 ipam/filtersets.py:247 ipam/forms/model_forms.py:229 +#: ipam/tables/ip.py:211 templates/ipam/prefix.html:12 +msgid "Prefix" +msgstr "Префикс" + +#: ipam/filtersets.py:136 ipam/filtersets.py:175 ipam/filtersets.py:198 +msgid "RIR (ID)" +msgstr "RIR (ID)" + +#: ipam/filtersets.py:142 ipam/filtersets.py:181 ipam/filtersets.py:204 +msgid "RIR (slug)" +msgstr "RIR (пуля)" + +#: ipam/filtersets.py:251 +msgid "Within prefix" +msgstr "В префиксе" + +#: ipam/filtersets.py:255 +msgid "Within and including prefix" +msgstr "В префиксе и включительно" + +#: ipam/filtersets.py:259 +msgid "Prefixes which contain this prefix or IP" +msgstr "Префиксы, содержащие этот префикс или IP-адрес" + +#: ipam/filtersets.py:270 ipam/filtersets.py:538 ipam/forms/bulk_edit.py:326 +#: ipam/forms/filtersets.py:191 ipam/forms/filtersets.py:317 +msgid "Mask length" +msgstr "Длина маски" + +#: ipam/filtersets.py:339 vpn/filtersets.py:399 +msgid "VLAN (ID)" +msgstr "VLAN (ID)" + +#: ipam/filtersets.py:343 vpn/filtersets.py:394 +msgid "VLAN number (1-4094)" +msgstr "Номер VLAN (1-4094)" + +#: ipam/filtersets.py:437 ipam/filtersets.py:441 ipam/filtersets.py:533 +#: ipam/forms/model_forms.py:444 templates/tenancy/contact.html:54 +#: tenancy/forms/bulk_edit.py:112 +msgid "Address" +msgstr "Адрес" + +#: ipam/filtersets.py:445 +msgid "Ranges which contain this prefix or IP" +msgstr "Диапазоны, содержащие этот префикс или IP-адрес" + +#: ipam/filtersets.py:473 ipam/filtersets.py:529 +msgid "Parent prefix" +msgstr "Родительский префикс" + +#: ipam/filtersets.py:582 ipam/filtersets.py:812 ipam/filtersets.py:1031 +#: vpn/filtersets.py:357 +msgid "Virtual machine (name)" +msgstr "Виртуальная машина (имя)" + +#: ipam/filtersets.py:587 ipam/filtersets.py:817 ipam/filtersets.py:1025 +#: virtualization/filtersets.py:276 virtualization/filtersets.py:315 +#: vpn/filtersets.py:362 +msgid "Virtual machine (ID)" +msgstr "Виртуальная машина (ID)" + +#: ipam/filtersets.py:593 vpn/filtersets.py:97 vpn/filtersets.py:368 +msgid "Interface (name)" +msgstr "Интерфейс (имя)" + +#: ipam/filtersets.py:598 vpn/filtersets.py:102 vpn/filtersets.py:373 +msgid "Interface (ID)" +msgstr "Интерфейс (ID)" + +#: ipam/filtersets.py:604 vpn/filtersets.py:108 vpn/filtersets.py:379 +msgid "VM interface (name)" +msgstr "Интерфейс виртуальной машины (имя)" + +#: ipam/filtersets.py:609 vpn/filtersets.py:113 +msgid "VM interface (ID)" +msgstr "Интерфейс виртуальной машины (ID)" + +#: ipam/filtersets.py:614 +msgid "FHRP group (ID)" +msgstr "Группа FHRP (идентификатор)" + +#: ipam/filtersets.py:618 +msgid "Is assigned to an interface" +msgstr "Присваивается интерфейсу" + +#: ipam/filtersets.py:622 +msgid "Is assigned" +msgstr "Назначено" + +#: ipam/filtersets.py:1036 +msgid "IP address (ID)" +msgstr "IP-адрес (ID)" + +#: ipam/filtersets.py:1042 ipam/models/ip.py:787 +msgid "IP address" +msgstr "IP-адрес" + +#: ipam/filtersets.py:1068 +msgid "Primary IPv4 (ID)" +msgstr "Основной IPv4 (ID)" + +#: ipam/filtersets.py:1073 +msgid "Primary IPv6 (ID)" +msgstr "Основной IPv6 (ID)" + +#: ipam/forms/bulk_create.py:14 +msgid "Address pattern" +msgstr "Шаблон адреса" + +#: ipam/forms/bulk_edit.py:85 +msgid "Is private" +msgstr "Является частным" + +#: ipam/forms/bulk_edit.py:106 ipam/forms/bulk_edit.py:135 +#: ipam/forms/bulk_edit.py:160 ipam/forms/bulk_import.py:88 +#: ipam/forms/bulk_import.py:108 ipam/forms/bulk_import.py:128 +#: ipam/forms/filtersets.py:109 ipam/forms/filtersets.py:124 +#: ipam/forms/filtersets.py:147 ipam/forms/model_forms.py:93 +#: ipam/forms/model_forms.py:108 ipam/forms/model_forms.py:130 +#: ipam/forms/model_forms.py:148 ipam/models/asns.py:31 +#: ipam/models/asns.py:103 ipam/models/ip.py:70 ipam/models/ip.py:89 +#: ipam/tables/asn.py:20 ipam/tables/asn.py:45 +#: templates/ipam/aggregate.html:19 templates/ipam/asn.html:28 +#: templates/ipam/asnrange.html:20 templates/ipam/rir.html:20 +msgid "RIR" +msgstr "ВСАДНИКИ" + +#: ipam/forms/bulk_edit.py:168 +msgid "Date added" +msgstr "Дата добавления" + +#: ipam/forms/bulk_edit.py:229 +msgid "Prefix length" +msgstr "Длина префикса" + +#: ipam/forms/bulk_edit.py:252 ipam/forms/filtersets.py:236 +#: templates/ipam/prefix.html:86 +msgid "Is a pool" +msgstr "Это бассейн" + +#: ipam/forms/bulk_edit.py:257 ipam/forms/bulk_edit.py:301 +#: ipam/models/ip.py:271 ipam/models/ip.py:538 +#, python-format +msgid "Treat as 100% utilized" +msgstr "Отнестись к использованию на 100%" + +#: ipam/forms/bulk_edit.py:349 ipam/models/ip.py:771 +msgid "DNS name" +msgstr "DNS-имя" + +#: ipam/forms/bulk_edit.py:370 ipam/forms/bulk_edit.py:569 +#: ipam/forms/bulk_import.py:393 ipam/forms/bulk_import.py:477 +#: ipam/forms/bulk_import.py:503 ipam/forms/filtersets.py:376 +#: ipam/forms/filtersets.py:511 templates/ipam/fhrpgroup.html:23 +#: templates/ipam/inc/panels/fhrp_groups.html:11 +#: templates/ipam/service.html:35 templates/ipam/servicetemplate.html:20 +msgid "Protocol" +msgstr "протокол" + +#: ipam/forms/bulk_edit.py:377 ipam/forms/filtersets.py:383 +#: ipam/tables/fhrp.py:22 templates/ipam/fhrpgroup.html:27 +msgid "Group ID" +msgstr "Идентификатор группы" + +#: ipam/forms/bulk_edit.py:382 ipam/forms/filtersets.py:388 +#: wireless/forms/bulk_edit.py:67 wireless/forms/bulk_edit.py:114 +#: wireless/forms/bulk_import.py:62 wireless/forms/bulk_import.py:65 +#: wireless/forms/bulk_import.py:104 wireless/forms/bulk_import.py:107 +#: wireless/forms/filtersets.py:53 wireless/forms/filtersets.py:87 +msgid "Authentication type" +msgstr "Тип аутентификации" + +#: ipam/forms/bulk_edit.py:387 ipam/forms/filtersets.py:392 +msgid "Authentication key" +msgstr "Ключ аутентификации" + +#: ipam/forms/bulk_edit.py:404 ipam/forms/filtersets.py:369 +#: ipam/forms/model_forms.py:455 netbox/navigation/menu.py:376 +#: templates/ipam/fhrpgroup.html:51 +#: templates/wireless/inc/authentication_attrs.html:5 +#: wireless/forms/bulk_edit.py:90 wireless/forms/bulk_edit.py:137 +#: wireless/forms/filtersets.py:35 wireless/forms/filtersets.py:75 +#: wireless/forms/model_forms.py:56 wireless/forms/model_forms.py:161 +msgid "Authentication" +msgstr "аутентификация" + +#: ipam/forms/bulk_edit.py:414 +msgid "Minimum child VLAN VID" +msgstr "Минимальное количество VLAN VID для детей" + +#: ipam/forms/bulk_edit.py:420 +msgid "Maximum child VLAN VID" +msgstr "Максимальное количество идентификаторов VLAN для детей" + +#: ipam/forms/bulk_edit.py:428 ipam/forms/model_forms.py:527 +msgid "Scope type" +msgstr "Тип прицела" + +#: ipam/forms/bulk_edit.py:489 ipam/forms/model_forms.py:600 +#: ipam/tables/vlans.py:71 templates/ipam/vlangroup.html:39 +msgid "Scope" +msgstr "Область применения" + +#: ipam/forms/bulk_edit.py:560 +msgid "Site & Group" +msgstr "Сайт и группа" + +#: ipam/forms/bulk_edit.py:574 ipam/forms/model_forms.py:663 +#: ipam/forms/model_forms.py:697 ipam/tables/services.py:19 +#: ipam/tables/services.py:49 templates/ipam/service.html:39 +#: templates/ipam/servicetemplate.html:24 +msgid "Ports" +msgstr "Порты" + +#: ipam/forms/bulk_import.py:47 +msgid "Import route targets" +msgstr "Импортируйте цели маршрута" + +#: ipam/forms/bulk_import.py:53 +msgid "Export route targets" +msgstr "Экспортные цели маршрута" + +#: ipam/forms/bulk_import.py:91 ipam/forms/bulk_import.py:111 +#: ipam/forms/bulk_import.py:131 +msgid "Assigned RIR" +msgstr "Назначенный RIR" + +#: ipam/forms/bulk_import.py:181 +msgid "VLAN's group (if any)" +msgstr "Группа VLAN (если есть)" + +#: ipam/forms/bulk_import.py:184 ipam/forms/model_forms.py:219 +#: ipam/models/vlans.py:214 ipam/tables/ip.py:254 +#: templates/ipam/prefix.html:61 templates/ipam/vlan.html:13 +#: templates/ipam/vlan/base.html:6 templates/ipam/vlan_edit.html:10 +#: templates/vpn/l2vpntermination_edit.html:17 +#: templates/wireless/wirelesslan.html:31 vpn/forms/bulk_import.py:299 +#: vpn/forms/filtersets.py:280 vpn/forms/model_forms.py:427 +#: wireless/forms/bulk_edit.py:54 wireless/forms/bulk_import.py:48 +#: wireless/forms/model_forms.py:49 wireless/models.py:101 +msgid "VLAN" +msgstr "VLAN" + +#: ipam/forms/bulk_import.py:307 +msgid "Parent device of assigned interface (if any)" +msgstr "Родительское устройство назначенного интерфейса (если есть)" + +#: ipam/forms/bulk_import.py:310 ipam/forms/bulk_import.py:496 +#: ipam/forms/model_forms.py:691 virtualization/filtersets.py:282 +#: virtualization/filtersets.py:321 virtualization/forms/bulk_edit.py:199 +#: virtualization/forms/bulk_edit.py:325 +#: virtualization/forms/bulk_import.py:146 +#: virtualization/forms/bulk_import.py:207 +#: virtualization/forms/filtersets.py:204 +#: virtualization/forms/filtersets.py:240 +#: virtualization/forms/model_forms.py:291 vpn/forms/bulk_import.py:93 +#: vpn/forms/bulk_import.py:285 +msgid "Virtual machine" +msgstr "Виртуальная машина" + +#: ipam/forms/bulk_import.py:314 +msgid "Parent VM of assigned interface (if any)" +msgstr "Родительская виртуальная машина назначенного интерфейса (если есть)" + +#: ipam/forms/bulk_import.py:321 +msgid "Assigned interface" +msgstr "Назначенный интерфейс" + +#: ipam/forms/bulk_import.py:324 +msgid "Is primary" +msgstr "Является основным" + +#: ipam/forms/bulk_import.py:325 +msgid "Make this the primary IP for the assigned device" +msgstr "Сделайте этот IP-адрес основным для назначенного устройства" + +#: ipam/forms/bulk_import.py:364 +msgid "No device or virtual machine specified; cannot set as primary IP" +msgstr "" +"Не указано устройство или виртуальная машина; невозможно установить в " +"качестве основного IP-адреса" + +#: ipam/forms/bulk_import.py:368 +msgid "No interface specified; cannot set as primary IP" +msgstr "" +"Интерфейс не указан; невозможно установить в качестве основного IP-адреса" + +#: ipam/forms/bulk_import.py:397 +msgid "Auth type" +msgstr "Тип авторизации" + +#: ipam/forms/bulk_import.py:412 +msgid "Scope type (app & model)" +msgstr "Тип прицела (приложение и модель)" + +#: ipam/forms/bulk_import.py:418 +#, python-brace-format +msgid "Minimum child VLAN VID (default: {minimum})" +msgstr "" +"Минимальное количество идентификаторов VLAN для детей (по умолчанию): " +"{minimum})" + +#: ipam/forms/bulk_import.py:424 +#, python-brace-format +msgid "Maximum child VLAN VID (default: {maximum})" +msgstr "" +"Максимальное количество идентификаторов VLAN для детей (по умолчанию): " +"{maximum})" + +#: ipam/forms/bulk_import.py:448 +msgid "Assigned VLAN group" +msgstr "Назначенная группа VLAN" + +#: ipam/forms/bulk_import.py:479 ipam/forms/bulk_import.py:505 +msgid "IP protocol" +msgstr "протокол IP" + +#: ipam/forms/bulk_import.py:493 +msgid "Required if not assigned to a VM" +msgstr "Требуется, если не назначено виртуальной машине" + +#: ipam/forms/bulk_import.py:500 +msgid "Required if not assigned to a device" +msgstr "Требуется, если не назначено устройству" + +#: ipam/forms/bulk_import.py:525 +#, python-brace-format +msgid "{ip} is not assigned to this device/VM." +msgstr "{ip} не назначено этому устройству/виртуальной машине." + +#: ipam/forms/filtersets.py:46 ipam/forms/model_forms.py:60 +#: netbox/navigation/menu.py:177 vpn/forms/model_forms.py:403 +msgid "Route Targets" +msgstr "Цели маршрута" + +#: ipam/forms/filtersets.py:52 ipam/forms/model_forms.py:47 +#: vpn/forms/filtersets.py:221 vpn/forms/model_forms.py:390 +msgid "Import targets" +msgstr "Цели импорта" + +#: ipam/forms/filtersets.py:57 ipam/forms/model_forms.py:52 +#: vpn/forms/filtersets.py:226 vpn/forms/model_forms.py:395 +msgid "Export targets" +msgstr "Экспортные цели" + +#: ipam/forms/filtersets.py:72 +msgid "Imported by VRF" +msgstr "Импортировано компанией VRF" + +#: ipam/forms/filtersets.py:77 +msgid "Exported by VRF" +msgstr "Экспортируется компанией VRF" + +#: ipam/forms/filtersets.py:86 ipam/tables/ip.py:89 templates/ipam/rir.html:33 +msgid "Private" +msgstr "Частное" + +#: ipam/forms/filtersets.py:104 ipam/forms/filtersets.py:186 +#: ipam/forms/filtersets.py:261 ipam/forms/filtersets.py:312 +msgid "Address family" +msgstr "Семейство адресов" + +#: ipam/forms/filtersets.py:118 templates/ipam/asnrange.html:26 +msgid "Range" +msgstr "Ассортимент" + +#: ipam/forms/filtersets.py:127 +msgid "Start" +msgstr "Начните" + +#: ipam/forms/filtersets.py:131 +msgid "End" +msgstr "Конец" + +#: ipam/forms/filtersets.py:181 +msgid "Search within" +msgstr "Поиск внутри" + +#: ipam/forms/filtersets.py:202 ipam/forms/filtersets.py:328 +msgid "Present in VRF" +msgstr "Присутствует в VRF" + +#: ipam/forms/filtersets.py:243 ipam/forms/filtersets.py:282 +#, python-format +msgid "Marked as 100% utilized" +msgstr "Отмечено как использовано на 100%" + +#: ipam/forms/filtersets.py:297 +msgid "Device/VM" +msgstr "Устройство/виртуальная машина" + +#: ipam/forms/filtersets.py:333 +msgid "Assigned Device" +msgstr "Назначенное устройство" + +#: ipam/forms/filtersets.py:338 +msgid "Assigned VM" +msgstr "назначенная виртуальная машина" + +#: ipam/forms/filtersets.py:352 +msgid "Assigned to an interface" +msgstr "Назначено интерфейсу" + +#: ipam/forms/filtersets.py:359 templates/ipam/ipaddress.html:54 +msgid "DNS Name" +msgstr "DNS-имя" + +#: ipam/forms/filtersets.py:401 ipam/forms/filtersets.py:494 +#: ipam/models/vlans.py:156 templates/ipam/vlan.html:34 +msgid "VLAN ID" +msgstr "ИДЕНТИФИКАТОР КЛАНА" + +#: ipam/forms/filtersets.py:433 +msgid "Minimum VID" +msgstr "Минимальный VID" + +#: ipam/forms/filtersets.py:439 +msgid "Maximum VID" +msgstr "Максимальное значение VID" + +#: ipam/forms/filtersets.py:516 +msgid "Port" +msgstr "Порт" + +#: ipam/forms/filtersets.py:537 ipam/tables/vlans.py:191 +#: templates/ipam/ipaddress_edit.html:47 templates/ipam/service_create.html:22 +#: templates/ipam/service_edit.html:21 +#: templates/virtualization/virtualdisk.html:22 +#: templates/virtualization/virtualmachine.html:13 +#: templates/virtualization/vminterface.html:24 +#: templates/vpn/l2vpntermination_edit.html:27 +#: templates/vpn/tunneltermination.html:26 +#: virtualization/forms/filtersets.py:189 +#: virtualization/forms/filtersets.py:234 +#: virtualization/forms/model_forms.py:223 +#: virtualization/tables/virtualmachines.py:115 +#: virtualization/tables/virtualmachines.py:168 vpn/choices.py:45 +#: vpn/forms/filtersets.py:289 vpn/forms/model_forms.py:161 +#: vpn/forms/model_forms.py:172 vpn/forms/model_forms.py:269 +msgid "Virtual Machine" +msgstr "Виртуальная машина" + +#: ipam/forms/model_forms.py:113 ipam/tables/ip.py:116 +#: templates/ipam/aggregate.html:11 templates/ipam/prefix.html:39 +msgid "Aggregate" +msgstr "агрегат" + +#: ipam/forms/model_forms.py:134 templates/ipam/asnrange.html:12 +msgid "ASN Range" +msgstr "Диапазон ASN" + +#: ipam/forms/model_forms.py:230 +msgid "Site/VLAN Assignment" +msgstr "Назначение сайта/VLAN" + +#: ipam/forms/model_forms.py:256 templates/ipam/iprange.html:11 +msgid "IP Range" +msgstr "Диапазон IP-адресов" + +#: ipam/forms/model_forms.py:285 ipam/forms/model_forms.py:454 +#: templates/ipam/fhrpgroup.html:19 templates/ipam/ipaddress_edit.html:52 +msgid "FHRP Group" +msgstr "Группа компаний FHRP" + +#: ipam/forms/model_forms.py:300 +msgid "Make this the primary IP for the device/VM" +msgstr "Сделайте этот IP-адрес основным для устройства/виртуальной машины" + +#: ipam/forms/model_forms.py:351 +msgid "An IP address can only be assigned to a single object." +msgstr "IP-адрес можно присвоить только одному объекту." + +#: ipam/forms/model_forms.py:357 ipam/models/ip.py:878 +msgid "" +"Cannot reassign IP address while it is designated as the primary IP for the " +"parent object" +msgstr "" +"Невозможно переназначить IP-адрес, если он назначен основным IP-адресом " +"родительского объекта" + +#: ipam/forms/model_forms.py:367 +msgid "" +"Only IP addresses assigned to an interface can be designated as primary IPs." +msgstr "" +"В качестве основных IP-адресов можно назначить только IP-адреса, назначенные" +" интерфейсу." + +#: ipam/forms/model_forms.py:373 +#, python-brace-format +msgid "{ip} is a network ID, which may not be assigned to an interface." +msgstr "" +"{ip} это сетевой идентификатор, который не может быть присвоен интерфейсу." + +#: ipam/forms/model_forms.py:379 +#, python-brace-format +msgid "" +"{ip} is a broadcast address, which may not be assigned to an interface." +msgstr "" +"{ip} это широковещательный адрес, который может не быть присвоен интерфейсу." + +#: ipam/forms/model_forms.py:456 +msgid "Virtual IP Address" +msgstr "Виртуальный IP-адрес" + +#: ipam/forms/model_forms.py:598 ipam/forms/model_forms.py:637 +#: ipam/tables/ip.py:250 templates/ipam/vlan_edit.html:37 +#: templates/ipam/vlangroup.html:27 +msgid "VLAN Group" +msgstr "Группа VLAN" + +#: ipam/forms/model_forms.py:599 +msgid "Child VLANs" +msgstr "Детские сети VLAN" + +#: ipam/forms/model_forms.py:668 ipam/forms/model_forms.py:702 +msgid "" +"Comma-separated list of one or more port numbers. A range may be specified " +"using a hyphen." +msgstr "" +"Список одного или нескольких номеров портов, разделенных запятыми. Диапазон " +"можно указать с помощью дефиса." + +#: ipam/forms/model_forms.py:673 templates/ipam/servicetemplate.html:12 +msgid "Service Template" +msgstr "Шаблон услуги" + +#: ipam/forms/model_forms.py:724 +msgid "Service template" +msgstr "Шаблон услуги" + +#: ipam/models/asns.py:34 +msgid "start" +msgstr "начните" + +#: ipam/models/asns.py:51 +msgid "ASN range" +msgstr "Диапазон ASN" + +#: ipam/models/asns.py:52 +msgid "ASN ranges" +msgstr "Диапазоны ASN" + +#: ipam/models/asns.py:72 +#, python-brace-format +msgid "Starting ASN ({start}) must be lower than ending ASN ({end})." +msgstr "Запуск ASN ({start}) должно быть меньше, чем конечный ASN ({end})." + +#: ipam/models/asns.py:104 +msgid "Regional Internet Registry responsible for this AS number space" +msgstr "" +"Региональный интернет-реестр, отвечающий за это номерное пространство AS" + +#: ipam/models/asns.py:109 +msgid "16- or 32-bit autonomous system number" +msgstr "16- или 32-разрядный номер автономной системы" + +#: ipam/models/fhrp.py:22 +msgid "group ID" +msgstr "идентификатор группы" + +#: ipam/models/fhrp.py:30 ipam/models/services.py:22 +msgid "protocol" +msgstr "протокол" + +#: ipam/models/fhrp.py:38 wireless/models.py:27 +msgid "authentication type" +msgstr "тип аутентификации" + +#: ipam/models/fhrp.py:43 +msgid "authentication key" +msgstr "ключ аутентификации" + +#: ipam/models/fhrp.py:56 +msgid "FHRP group" +msgstr "Группа FHRP" + +#: ipam/models/fhrp.py:57 +msgid "FHRP groups" +msgstr "Группы FHRP" + +#: ipam/models/fhrp.py:93 tenancy/models/contacts.py:134 +msgid "priority" +msgstr "приоритет" + +#: ipam/models/fhrp.py:113 +msgid "FHRP group assignment" +msgstr "Групповое назначение FHRP" + +#: ipam/models/fhrp.py:114 +msgid "FHRP group assignments" +msgstr "Групповые задания FHRP" + +#: ipam/models/ip.py:64 +msgid "private" +msgstr "частного" + +#: ipam/models/ip.py:65 +msgid "IP space managed by this RIR is considered private" +msgstr "IP-пространство, управляемое этим RIR, считается частным" + +#: ipam/models/ip.py:71 netbox/navigation/menu.py:170 +msgid "RIRs" +msgstr "РИР" + +#: ipam/models/ip.py:83 +msgid "IPv4 or IPv6 network" +msgstr "Сеть IPv4 или IPv6" + +#: ipam/models/ip.py:90 +msgid "Regional Internet Registry responsible for this IP space" +msgstr "Региональный реестр Интернета, отвечающий за это IP-пространство" + +#: ipam/models/ip.py:100 +msgid "date added" +msgstr "дата добавления" + +#: ipam/models/ip.py:114 +msgid "aggregate" +msgstr "совокупный" + +#: ipam/models/ip.py:115 +msgid "aggregates" +msgstr "сводные показатели" + +#: ipam/models/ip.py:131 +msgid "Cannot create aggregate with /0 mask." +msgstr "Невозможно создать агрегат с маской /0." + +#: ipam/models/ip.py:143 +#, python-brace-format +msgid "" +"Aggregates cannot overlap. {prefix} is already covered by an existing " +"aggregate ({aggregate})." +msgstr "" +"Агрегаты не могут перекрываться. {prefix} уже покрывается существующим " +"агрегатом ({aggregate})." + +#: ipam/models/ip.py:157 +#, python-brace-format +msgid "" +"Prefixes cannot overlap aggregates. {prefix} covers an existing aggregate " +"({aggregate})." +msgstr "" +"Префиксы не могут перекрывать агрегаты. {prefix} охватывает существующий " +"агрегат ({aggregate})." + +#: ipam/models/ip.py:199 ipam/models/ip.py:736 vpn/models/tunnels.py:114 +msgid "role" +msgstr "роль" + +#: ipam/models/ip.py:200 +msgid "roles" +msgstr "ролей" + +#: ipam/models/ip.py:216 ipam/models/ip.py:292 +msgid "prefix" +msgstr "приставка" + +#: ipam/models/ip.py:217 +msgid "IPv4 or IPv6 network with mask" +msgstr "Сеть IPv4 или IPv6 с маской" + +#: ipam/models/ip.py:253 +msgid "Operational status of this prefix" +msgstr "Рабочий статус этого префикса" + +#: ipam/models/ip.py:261 +msgid "The primary function of this prefix" +msgstr "Основная функция этого префикса" + +#: ipam/models/ip.py:264 +msgid "is a pool" +msgstr "это бассейн" + +#: ipam/models/ip.py:266 +msgid "All IP addresses within this prefix are considered usable" +msgstr "Все IP-адреса в этом префиксе считаются пригодными для использования" + +#: ipam/models/ip.py:269 ipam/models/ip.py:536 +msgid "mark utilized" +msgstr "использованная марка" + +#: ipam/models/ip.py:293 +msgid "prefixes" +msgstr "префиксы" + +#: ipam/models/ip.py:316 +msgid "Cannot create prefix with /0 mask." +msgstr "Невозможно создать префикс с маской /0." + +#: ipam/models/ip.py:323 ipam/models/ip.py:854 +#, python-brace-format +msgid "VRF {vrf}" +msgstr "VRF {vrf}" + +#: ipam/models/ip.py:323 ipam/models/ip.py:854 +msgid "global table" +msgstr "глобальная таблица" + +#: ipam/models/ip.py:325 +#, python-brace-format +msgid "Duplicate prefix found in {table}: {prefix}" +msgstr "Дубликат префикса обнаружен в {table}: {prefix}" + +#: ipam/models/ip.py:494 +msgid "start address" +msgstr "начальный адрес" + +#: ipam/models/ip.py:495 ipam/models/ip.py:499 ipam/models/ip.py:711 +msgid "IPv4 or IPv6 address (with mask)" +msgstr "Адрес IPv4 или IPv6 (с маской)" + +#: ipam/models/ip.py:498 +msgid "end address" +msgstr "конечный адрес" + +#: ipam/models/ip.py:525 +msgid "Operational status of this range" +msgstr "Эксплуатационное состояние этой линейки" + +#: ipam/models/ip.py:533 +msgid "The primary function of this range" +msgstr "Основная функция этого диапазона" + +#: ipam/models/ip.py:547 +msgid "IP range" +msgstr "Диапазон IP-адресов" + +#: ipam/models/ip.py:548 +msgid "IP ranges" +msgstr "Диапазоны IP-адресов" + +#: ipam/models/ip.py:564 +msgid "Starting and ending IP address versions must match" +msgstr "Начальная и конечная версии IP-адресов должны совпадать" + +#: ipam/models/ip.py:570 +msgid "Starting and ending IP address masks must match" +msgstr "Маски начального и конечного IP-адресов должны совпадать" + +#: ipam/models/ip.py:577 +#, python-brace-format +msgid "" +"Ending address must be lower than the starting address ({start_address})" +msgstr "Конечный адрес должен быть ниже начального ({start_address})" + +#: ipam/models/ip.py:589 +#, python-brace-format +msgid "Defined addresses overlap with range {overlapping_range} in VRF {vrf}" +msgstr "" +"Определенные адреса пересекаются с диапазоном {overlapping_range} в формате " +"VRF {vrf}" + +#: ipam/models/ip.py:598 +#, python-brace-format +msgid "Defined range exceeds maximum supported size ({max_size})" +msgstr "" +"Заданный диапазон превышает максимальный поддерживаемый размер ({max_size})" + +#: ipam/models/ip.py:710 tenancy/models/contacts.py:82 +msgid "address" +msgstr "адрес" + +#: ipam/models/ip.py:733 +msgid "The operational status of this IP" +msgstr "Рабочий статус этого IP-адреса" + +#: ipam/models/ip.py:740 +msgid "The functional role of this IP" +msgstr "Функциональная роль этого IP" + +#: ipam/models/ip.py:764 templates/ipam/ipaddress.html:75 +msgid "NAT (inside)" +msgstr "NAT (внутри)" + +#: ipam/models/ip.py:765 +msgid "The IP for which this address is the \"outside\" IP" +msgstr "IP-адрес, для которого этот адрес является «внешним»" + +#: ipam/models/ip.py:772 +msgid "Hostname or FQDN (not case-sensitive)" +msgstr "Имя хоста или полное доменное имя (без учета регистра)" + +#: ipam/models/ip.py:788 ipam/models/services.py:94 +msgid "IP addresses" +msgstr "IP-адреса" + +#: ipam/models/ip.py:844 +msgid "Cannot create IP address with /0 mask." +msgstr "Невозможно создать IP-адрес с маской /0." + +#: ipam/models/ip.py:856 +#, python-brace-format +msgid "Duplicate IP address found in {table}: {ipaddress}" +msgstr "Дубликат IP-адреса обнаружен в {table}: {ipaddress}" + +#: ipam/models/ip.py:885 +msgid "Only IPv6 addresses can be assigned SLAAC status" +msgstr "Только адресам IPv6 можно присвоить статус SLAAC" + +#: ipam/models/services.py:33 +msgid "port numbers" +msgstr "номера портов" + +#: ipam/models/services.py:59 +msgid "service template" +msgstr "шаблон сервиса" + +#: ipam/models/services.py:60 +msgid "service templates" +msgstr "шаблоны сервисов" + +#: ipam/models/services.py:95 +msgid "The specific IP addresses (if any) to which this service is bound" +msgstr "Конкретные IP-адреса (если есть), к которым привязана эта служба" + +#: ipam/models/services.py:102 +msgid "service" +msgstr "служба" + +#: ipam/models/services.py:103 +msgid "services" +msgstr "услуги" + +#: ipam/models/services.py:117 +msgid "" +"A service cannot be associated with both a device and a virtual machine." +msgstr "Службу нельзя связать как с устройством, так и с виртуальной машиной." + +#: ipam/models/services.py:119 +msgid "" +"A service must be associated with either a device or a virtual machine." +msgstr "Служба должна быть связана с устройством или виртуальной машиной." + +#: ipam/models/vlans.py:49 +msgid "minimum VLAN ID" +msgstr "минимальный идентификатор VLAN" + +#: ipam/models/vlans.py:55 +msgid "Lowest permissible ID of a child VLAN" +msgstr "Наименьший допустимый идентификатор дочерней VLAN" + +#: ipam/models/vlans.py:58 +msgid "maximum VLAN ID" +msgstr "максимальный идентификатор VLAN" + +#: ipam/models/vlans.py:64 +msgid "Highest permissible ID of a child VLAN" +msgstr "Максимально допустимый идентификатор детской VLAN" + +#: ipam/models/vlans.py:85 +msgid "VLAN groups" +msgstr "Группы VLAN" + +#: ipam/models/vlans.py:95 +msgid "Cannot set scope_type without scope_id." +msgstr "Невозможно установить scope_type без scope_id." + +#: ipam/models/vlans.py:97 +msgid "Cannot set scope_id without scope_type." +msgstr "Невозможно установить scope_id без scope_type." + +#: ipam/models/vlans.py:102 +msgid "Maximum child VID must be greater than or equal to minimum child VID" +msgstr "" +"Максимальное количество детских VID должно быть больше или равно " +"минимальному детскому VID" + +#: ipam/models/vlans.py:145 +msgid "The specific site to which this VLAN is assigned (if any)" +msgstr "Конкретный сайт, которому назначена эта VLAN (если есть)" + +#: ipam/models/vlans.py:153 +msgid "VLAN group (optional)" +msgstr "Группа VLAN (опционально)" + +#: ipam/models/vlans.py:161 +msgid "Numeric VLAN ID (1-4094)" +msgstr "Цифровой идентификатор VLAN (1-4094)" + +#: ipam/models/vlans.py:179 +msgid "Operational status of this VLAN" +msgstr "Рабочее состояние этой VLAN" + +#: ipam/models/vlans.py:187 +msgid "The primary function of this VLAN" +msgstr "Основная функция этой VLAN" + +#: ipam/models/vlans.py:215 ipam/tables/ip.py:175 ipam/tables/vlans.py:78 +#: ipam/views.py:940 netbox/navigation/menu.py:181 +#: netbox/navigation/menu.py:183 +msgid "VLANs" +msgstr "VLAN" + +#: ipam/models/vlans.py:230 +#, python-brace-format +msgid "" +"VLAN is assigned to group {group} (scope: {scope}); cannot also assign to " +"site {site}." +msgstr "" +"VLAN назначена группе {group} (область применения: {scope}); также не может " +"быть присвоено сайту {site}." + +#: ipam/models/vlans.py:238 +#, python-brace-format +msgid "VID must be between {minimum} and {maximum} for VLANs in group {group}" +msgstr "" +"VID должен быть между {minimum} а также {maximum} для виртуальных локальных " +"сетей в группе {group}" + +#: ipam/models/vrfs.py:30 +msgid "route distinguisher" +msgstr "разграничитель маршрута" + +#: ipam/models/vrfs.py:31 +msgid "Unique route distinguisher (as defined in RFC 4364)" +msgstr "Уникальный отличитель маршрута (как определено в RFC 4364)" + +#: ipam/models/vrfs.py:42 +msgid "enforce unique space" +msgstr "создайте уникальное пространство" + +#: ipam/models/vrfs.py:43 +msgid "Prevent duplicate prefixes/IP addresses within this VRF" +msgstr "Предотвращение дублирования префиксов/IP-адресов в этом VRF" + +#: ipam/models/vrfs.py:63 netbox/navigation/menu.py:174 +#: netbox/navigation/menu.py:176 +msgid "VRFs" +msgstr "VRF" + +#: ipam/models/vrfs.py:82 +msgid "Route target value (formatted in accordance with RFC 4360)" +msgstr "Целевое значение маршрута (отформатировано в соответствии с RFC 4360)" + +#: ipam/models/vrfs.py:94 +msgid "route target" +msgstr "цель маршрута" + +#: ipam/models/vrfs.py:95 +msgid "route targets" +msgstr "цели маршрута" + +#: ipam/tables/asn.py:52 +msgid "ASDOT" +msgstr "АСДОТ" + +#: ipam/tables/asn.py:57 +msgid "Site Count" +msgstr "Количество сайтов" + +#: ipam/tables/asn.py:62 +msgid "Provider Count" +msgstr "Количество провайдеров" + +#: ipam/tables/ip.py:94 netbox/navigation/menu.py:167 +#: netbox/navigation/menu.py:169 +msgid "Aggregates" +msgstr "Агрегаты" + +#: ipam/tables/ip.py:124 +msgid "Added" +msgstr "Добавлено" + +#: ipam/tables/ip.py:127 ipam/tables/ip.py:165 ipam/tables/vlans.py:138 +#: ipam/views.py:349 netbox/navigation/menu.py:153 +#: netbox/navigation/menu.py:155 templates/ipam/vlan.html:87 +msgid "Prefixes" +msgstr "Префиксы" + +#: ipam/tables/ip.py:130 ipam/tables/ip.py:267 ipam/tables/ip.py:320 +#: ipam/tables/vlans.py:82 templates/dcim/device.html:263 +#: templates/ipam/aggregate.html:25 templates/ipam/iprange.html:32 +#: templates/ipam/prefix.html:100 +msgid "Utilization" +msgstr "Использование" + +#: ipam/tables/ip.py:170 netbox/navigation/menu.py:149 +msgid "IP Ranges" +msgstr "Диапазоны IP-адресов" + +#: ipam/tables/ip.py:220 +msgid "Prefix (Flat)" +msgstr "Префикс (плоский)" + +#: ipam/tables/ip.py:224 templates/dcim/rack_edit.html:52 +msgid "Depth" +msgstr "Глубина" + +#: ipam/tables/ip.py:261 +msgid "Pool" +msgstr "Бассейн" + +#: ipam/tables/ip.py:264 ipam/tables/ip.py:317 +msgid "Marked Utilized" +msgstr "Отмечено как использованный" + +#: ipam/tables/ip.py:301 +msgid "Start address" +msgstr "Начальный адрес" + +#: ipam/tables/ip.py:379 +msgid "NAT (Inside)" +msgstr "NAT (внутри)" + +#: ipam/tables/ip.py:384 +msgid "NAT (Outside)" +msgstr "NAT (за пределами сети)" + +#: ipam/tables/ip.py:389 +msgid "Assigned" +msgstr "Назначено" + +#: ipam/tables/ip.py:424 templates/vpn/l2vpntermination.html:19 +#: vpn/forms/filtersets.py:235 +msgid "Assigned Object" +msgstr "Назначенный объект" + +#: ipam/tables/vlans.py:68 +msgid "Scope Type" +msgstr "Тип прицела" + +#: ipam/tables/vlans.py:107 ipam/tables/vlans.py:210 +#: templates/dcim/inc/interface_vlans_table.html:4 +msgid "VID" +msgstr "ВИДЕО" + +#: ipam/tables/vrfs.py:30 +msgid "RD" +msgstr "КРАСНЫЙ" + +#: ipam/tables/vrfs.py:33 +msgid "Unique" +msgstr "Уникальный" + +#: ipam/tables/vrfs.py:36 vpn/tables/l2vpn.py:27 +msgid "Import Targets" +msgstr "Цели импорта" + +#: ipam/tables/vrfs.py:41 vpn/tables/l2vpn.py:32 +msgid "Export Targets" +msgstr "Цели экспорта" + +#: ipam/views.py:536 +msgid "Child Prefixes" +msgstr "Дочерние префиксы" + +#: ipam/views.py:571 +msgid "Child Ranges" +msgstr "Детские диапазоны" + +#: ipam/views.py:868 +msgid "Related IPs" +msgstr "Связанные IP-адреса" + +#: ipam/views.py:1091 +msgid "Device Interfaces" +msgstr "Интерфейсы устройств" + +#: ipam/views.py:1109 +msgid "VM Interfaces" +msgstr "Интерфейсы виртуальных машин" + +#: netbox/config/parameters.py:22 templates/core/configrevision.html:111 +msgid "Login banner" +msgstr "Баннер для входа" + +#: netbox/config/parameters.py:24 +msgid "Additional content to display on the login page" +msgstr "Дополнительный контент для отображения на странице входа" + +#: netbox/config/parameters.py:33 templates/core/configrevision.html:115 +msgid "Maintenance banner" +msgstr "Баннер технического обслуживания" + +#: netbox/config/parameters.py:35 +msgid "Additional content to display when in maintenance mode" +msgstr "Дополнительный контент для отображения в режиме обслуживания" + +#: netbox/config/parameters.py:44 templates/core/configrevision.html:119 +msgid "Top banner" +msgstr "Верхний баннер" + +#: netbox/config/parameters.py:46 +msgid "Additional content to display at the top of every page" +msgstr "" +"Дополнительный контент для отображения в верхней части каждой страницы" + +#: netbox/config/parameters.py:55 templates/core/configrevision.html:123 +msgid "Bottom banner" +msgstr "Нижний баннер" + +#: netbox/config/parameters.py:57 +msgid "Additional content to display at the bottom of every page" +msgstr "Дополнительный контент для отображения внизу каждой страницы" + +#: netbox/config/parameters.py:68 +msgid "Globally unique IP space" +msgstr "Уникальное в глобальном масштабе IP-пространство" + +#: netbox/config/parameters.py:70 +msgid "Enforce unique IP addressing within the global table" +msgstr "Обеспечьте уникальную IP-адресацию в глобальной таблице" + +#: netbox/config/parameters.py:75 templates/core/configrevision.html:87 +msgid "Prefer IPv4" +msgstr "Предпочитаю IPv4" + +#: netbox/config/parameters.py:77 +msgid "Prefer IPv4 addresses over IPv6" +msgstr "Предпочитайте адреса IPv4, а не IPv6" + +#: netbox/config/parameters.py:84 +msgid "Rack unit height" +msgstr "Высота стеллажа" + +#: netbox/config/parameters.py:86 +msgid "Default unit height for rendered rack elevations" +msgstr "" +"Высота единиц измерения по умолчанию для визуализированных высот стеллажей" + +#: netbox/config/parameters.py:91 +msgid "Rack unit width" +msgstr "Ширина стеллажа" + +#: netbox/config/parameters.py:93 +msgid "Default unit width for rendered rack elevations" +msgstr "" +"Ширина единиц измерения по умолчанию для визуализированных высот стеллажей" + +#: netbox/config/parameters.py:100 +msgid "Powerfeed voltage" +msgstr "Напряжение питания" + +#: netbox/config/parameters.py:102 +msgid "Default voltage for powerfeeds" +msgstr "Напряжение по умолчанию для источников питания" + +#: netbox/config/parameters.py:107 +msgid "Powerfeed amperage" +msgstr "Сила тока в питающей сети" + +#: netbox/config/parameters.py:109 +msgid "Default amperage for powerfeeds" +msgstr "Сила тока по умолчанию для источников питания" + +#: netbox/config/parameters.py:114 +msgid "Powerfeed max utilization" +msgstr "Максимальное использование Powerfeed" + +#: netbox/config/parameters.py:116 +msgid "Default max utilization for powerfeeds" +msgstr "Максимальное использование по умолчанию для Powerfeeds" + +#: netbox/config/parameters.py:123 templates/core/configrevision.html:99 +msgid "Allowed URL schemes" +msgstr "Разрешенные схемы URL-адресов" + +#: netbox/config/parameters.py:128 +msgid "Permitted schemes for URLs in user-provided content" +msgstr "" +"Разрешенные схемы URL-адресов в предоставляемом пользователем контенте" + +#: netbox/config/parameters.py:136 +msgid "Default page size" +msgstr "Размер страницы по умолчанию" + +#: netbox/config/parameters.py:142 +msgid "Maximum page size" +msgstr "Максимальный размер страницы" + +#: netbox/config/parameters.py:150 templates/core/configrevision.html:151 +msgid "Custom validators" +msgstr "Настраиваемые валидаторы" + +#: netbox/config/parameters.py:152 +msgid "Custom validation rules (JSON)" +msgstr "Настраиваемые правила проверки (JSON)" + +#: netbox/config/parameters.py:160 templates/core/configrevision.html:161 +msgid "Protection rules" +msgstr "Правила защиты" + +#: netbox/config/parameters.py:162 +msgid "Deletion protection rules (JSON)" +msgstr "Правила защиты от удаления (JSON)" + +#: netbox/config/parameters.py:172 +msgid "Default preferences" +msgstr "Настройки по умолчанию" + +#: netbox/config/parameters.py:174 +msgid "Default preferences for new users" +msgstr "Настройки по умолчанию для новых пользователей" + +#: netbox/config/parameters.py:181 templates/core/configrevision.html:197 +msgid "Maintenance mode" +msgstr "Режим обслуживания" + +#: netbox/config/parameters.py:183 +msgid "Enable maintenance mode" +msgstr "Включить режим обслуживания" + +#: netbox/config/parameters.py:188 templates/core/configrevision.html:201 +msgid "GraphQL enabled" +msgstr "GraphQL включен" + +#: netbox/config/parameters.py:190 +msgid "Enable the GraphQL API" +msgstr "Включите API GraphQL" + +#: netbox/config/parameters.py:195 templates/core/configrevision.html:205 +msgid "Changelog retention" +msgstr "Хранение журнала изменений" + +#: netbox/config/parameters.py:197 +msgid "Days to retain changelog history (set to zero for unlimited)" +msgstr "" +"Количество дней для хранения истории изменений (равно нулю без ограничений)" + +#: netbox/config/parameters.py:202 +msgid "Job result retention" +msgstr "Сохранение результатов работы" + +#: netbox/config/parameters.py:204 +msgid "Days to retain job result history (set to zero for unlimited)" +msgstr "" +"Количество дней для хранения истории результатов работы (нулевое значение не" +" ограничено)" + +#: netbox/config/parameters.py:209 templates/core/configrevision.html:213 +msgid "Maps URL" +msgstr "URL-адрес карты" + +#: netbox/config/parameters.py:211 +msgid "Base URL for mapping geographic locations" +msgstr "Базовый URL-адрес для картографирования географических местоположений" + +#: netbox/forms/__init__.py:13 +msgid "Partial match" +msgstr "Частичное совпадение" + +#: netbox/forms/__init__.py:14 +msgid "Exact match" +msgstr "Точное совпадение" + +#: netbox/forms/__init__.py:15 +msgid "Starts with" +msgstr "Начинается с" + +#: netbox/forms/__init__.py:16 +msgid "Ends with" +msgstr "Заканчивается на" + +#: netbox/forms/__init__.py:17 +msgid "Regex" +msgstr "Regex" + +#: netbox/forms/__init__.py:35 +msgid "Object type(s)" +msgstr "Тип (ы) объекта" + +#: netbox/forms/base.py:66 +msgid "Id" +msgstr "Я" + +#: netbox/forms/base.py:105 +msgid "Add tags" +msgstr "Добавить теги" + +#: netbox/forms/base.py:110 +msgid "Remove tags" +msgstr "Удалить теги" + +#: netbox/models/features.py:434 +msgid "Remote data source" +msgstr "Удаленный источник данных" + +#: netbox/models/features.py:444 +msgid "data path" +msgstr "путь к данным" + +#: netbox/models/features.py:448 +msgid "Path to remote file (relative to data source root)" +msgstr "Путь к удаленному файлу (относительно корня источника данных)" + +#: netbox/models/features.py:451 +msgid "auto sync enabled" +msgstr "автоматическая синхронизация включена" + +#: netbox/models/features.py:453 +msgid "Enable automatic synchronization of data when the data file is updated" +msgstr "" +"Включить автоматическую синхронизацию данных при обновлении файла данных" + +#: netbox/models/features.py:456 +msgid "date synced" +msgstr "дата синхронизирована" + +#: netbox/navigation/menu.py:12 +msgid "Organization" +msgstr "Организация" + +#: netbox/navigation/menu.py:20 +msgid "Site Groups" +msgstr "Группы сайтов" + +#: netbox/navigation/menu.py:28 +msgid "Rack Roles" +msgstr "Роли стоек" + +#: netbox/navigation/menu.py:32 +msgid "Elevations" +msgstr "Возвышения" + +#: netbox/navigation/menu.py:41 +msgid "Tenant Groups" +msgstr "Группы арендаторов" + +#: netbox/navigation/menu.py:48 +msgid "Contact Groups" +msgstr "Контактные группы" + +#: netbox/navigation/menu.py:49 templates/tenancy/contactrole.html:8 +msgid "Contact Roles" +msgstr "Роли контактов" + +#: netbox/navigation/menu.py:50 +msgid "Contact Assignments" +msgstr "Назначения контактов" + +#: netbox/navigation/menu.py:64 +msgid "Modules" +msgstr "Модули" + +#: netbox/navigation/menu.py:65 templates/dcim/devicerole.html:8 +msgid "Device Roles" +msgstr "Роли устройств" + +#: netbox/navigation/menu.py:68 templates/dcim/device.html:162 +#: templates/dcim/virtualdevicecontext.html:8 +msgid "Virtual Device Contexts" +msgstr "Контексты виртуальных устройств" + +#: netbox/navigation/menu.py:76 +msgid "Manufacturers" +msgstr "Производители" + +#: netbox/navigation/menu.py:80 +msgid "Device Components" +msgstr "Компоненты устройства" + +#: netbox/navigation/menu.py:92 templates/dcim/inventoryitemrole.html:8 +msgid "Inventory Item Roles" +msgstr "Роли предметов инвентаря" + +#: netbox/navigation/menu.py:99 netbox/navigation/menu.py:103 +msgid "Connections" +msgstr "Подключения" + +#: netbox/navigation/menu.py:105 +msgid "Cables" +msgstr "Кабели" + +#: netbox/navigation/menu.py:106 +msgid "Wireless Links" +msgstr "Беспроводные каналы" + +#: netbox/navigation/menu.py:109 +msgid "Interface Connections" +msgstr "Интерфейсные подключения" + +#: netbox/navigation/menu.py:114 +msgid "Console Connections" +msgstr "Подключения к консоли" + +#: netbox/navigation/menu.py:119 +msgid "Power Connections" +msgstr "Подключения питания" + +#: netbox/navigation/menu.py:135 +msgid "Wireless LAN Groups" +msgstr "Группы беспроводных локальных сетей" + +#: netbox/navigation/menu.py:156 +msgid "Prefix & VLAN Roles" +msgstr "Роли префиксов и VLAN" + +#: netbox/navigation/menu.py:162 +msgid "ASN Ranges" +msgstr "Диапазоны ASN" + +#: netbox/navigation/menu.py:184 +msgid "VLAN Groups" +msgstr "Группы VLAN" + +#: netbox/navigation/menu.py:191 +msgid "Service Templates" +msgstr "Шаблоны услуг" + +#: netbox/navigation/menu.py:192 templates/dcim/device.html:304 +#: templates/ipam/ipaddress.html:122 +#: templates/virtualization/virtualmachine.html:157 +msgid "Services" +msgstr "Сервисы" + +#: netbox/navigation/menu.py:199 +msgid "VPN" +msgstr "VPN" + +#: netbox/navigation/menu.py:203 netbox/navigation/menu.py:205 +#: vpn/tables/tunnels.py:24 +msgid "Tunnels" +msgstr "Тоннели" + +#: netbox/navigation/menu.py:206 templates/vpn/tunnelgroup.html:8 +msgid "Tunnel Groups" +msgstr "Группы туннелей" + +#: netbox/navigation/menu.py:207 +msgid "Tunnel Terminations" +msgstr "Окончание туннелей" + +#: netbox/navigation/menu.py:211 netbox/navigation/menu.py:213 +#: vpn/models/l2vpn.py:64 +msgid "L2VPNs" +msgstr "VPN-сервисы L2P" + +#: netbox/navigation/menu.py:214 templates/vpn/l2vpn.html:57 +#: templates/vpn/tunnel.html:73 vpn/tables/tunnels.py:54 +msgid "Terminations" +msgstr "Прекращения" + +#: netbox/navigation/menu.py:220 +msgid "IKE Proposals" +msgstr "Предложения IKE" + +#: netbox/navigation/menu.py:221 templates/vpn/ikeproposal.html:42 +msgid "IKE Policies" +msgstr "Политики IKE" + +#: netbox/navigation/menu.py:222 +msgid "IPSec Proposals" +msgstr "Предложения IPsec" + +#: netbox/navigation/menu.py:223 templates/vpn/ipsecproposal.html:38 +msgid "IPSec Policies" +msgstr "Политики IPsec" + +#: netbox/navigation/menu.py:224 templates/vpn/ikepolicy.html:39 +#: templates/vpn/ipsecpolicy.html:26 +msgid "IPSec Profiles" +msgstr "Профили IPsec" + +#: netbox/navigation/menu.py:231 templates/dcim/device_edit.html:78 +msgid "Virtualization" +msgstr "Виртуализация" + +#: netbox/navigation/menu.py:235 netbox/navigation/menu.py:237 +#: virtualization/views.py:186 +msgid "Virtual Machines" +msgstr "Виртуальные машины" + +#: netbox/navigation/menu.py:239 +#: templates/virtualization/virtualmachine.html:177 +#: templates/virtualization/virtualmachine/base.html:32 +#: templates/virtualization/virtualmachine_list.html:21 +#: virtualization/tables/virtualmachines.py:90 virtualization/views.py:389 +msgid "Virtual Disks" +msgstr "Виртуальные диски" + +#: netbox/navigation/menu.py:246 +msgid "Cluster Types" +msgstr "Типы кластеров" + +#: netbox/navigation/menu.py:247 +msgid "Cluster Groups" +msgstr "Кластерные группы" + +#: netbox/navigation/menu.py:261 +msgid "Circuit Types" +msgstr "Типы цепей" + +#: netbox/navigation/menu.py:265 netbox/navigation/menu.py:267 +msgid "Providers" +msgstr "Поставщики" + +#: netbox/navigation/menu.py:268 templates/circuits/provider.html:53 +msgid "Provider Accounts" +msgstr "Учетные записи поставщиков" + +#: netbox/navigation/menu.py:269 +msgid "Provider Networks" +msgstr "Сети провайдеров" + +#: netbox/navigation/menu.py:283 +msgid "Power Panels" +msgstr "Панели питания" + +#: netbox/navigation/menu.py:294 +msgid "Configurations" +msgstr "Конфигурации" + +#: netbox/navigation/menu.py:296 +msgid "Config Contexts" +msgstr "Контексты конфигурации" + +#: netbox/navigation/menu.py:297 +msgid "Config Templates" +msgstr "Шаблоны конфигурации" + +#: netbox/navigation/menu.py:304 netbox/navigation/menu.py:308 +msgid "Customization" +msgstr "Настройка" + +#: netbox/navigation/menu.py:310 +#: templates/circuits/circuittermination_edit.html:53 +#: templates/dcim/cable_edit.html:77 templates/dcim/device_edit.html:103 +#: templates/dcim/inventoryitem_edit.html:102 templates/dcim/rack_edit.html:81 +#: templates/dcim/virtualchassis_add.html:31 +#: templates/dcim/virtualchassis_edit.html:41 +#: templates/generic/bulk_edit.html:92 templates/htmx/form.html:32 +#: templates/inc/panels/custom_fields.html:7 +#: templates/ipam/ipaddress_bulk_add.html:35 +#: templates/ipam/ipaddress_edit.html:88 templates/ipam/service_create.html:75 +#: templates/ipam/service_edit.html:62 templates/ipam/vlan_edit.html:63 +#: templates/tenancy/contactassignment_edit.html:31 +#: templates/vpn/l2vpntermination_edit.html:51 +msgid "Custom Fields" +msgstr "Настраиваемые поля" + +#: netbox/navigation/menu.py:311 +msgid "Custom Field Choices" +msgstr "Выбор настраиваемых полей" + +#: netbox/navigation/menu.py:312 +msgid "Custom Links" +msgstr "Настраиваемые ссылки" + +#: netbox/navigation/menu.py:313 +msgid "Export Templates" +msgstr "Шаблоны экспорта" + +#: netbox/navigation/menu.py:314 +msgid "Saved Filters" +msgstr "Сохраненные фильтры" + +#: netbox/navigation/menu.py:316 +msgid "Image Attachments" +msgstr "Вложения изображений" + +#: netbox/navigation/menu.py:320 +msgid "Reports & Scripts" +msgstr "Отчеты и сценарии" + +#: netbox/navigation/menu.py:340 +msgid "Operations" +msgstr "Операции" + +#: netbox/navigation/menu.py:344 +msgid "Integrations" +msgstr "Интеграции" + +#: netbox/navigation/menu.py:346 +msgid "Data Sources" +msgstr "Источники данных" + +#: netbox/navigation/menu.py:347 +msgid "Event Rules" +msgstr "Правила мероприятия" + +#: netbox/navigation/menu.py:348 +msgid "Webhooks" +msgstr "Вебхуки" + +#: netbox/navigation/menu.py:352 netbox/navigation/menu.py:356 +#: netbox/views/generic/feature_views.py:151 +#: templates/extras/report/base.html:37 templates/extras/script/base.html:36 +msgid "Jobs" +msgstr "Вакансии" + +#: netbox/navigation/menu.py:362 +msgid "Logging" +msgstr "Ведение журнала" + +#: netbox/navigation/menu.py:364 +msgid "Journal Entries" +msgstr "Записи в журнале" + +#: netbox/navigation/menu.py:365 templates/extras/objectchange.html:8 +#: templates/extras/objectchange_list.html:4 +msgid "Change Log" +msgstr "Журнал изменений" + +#: netbox/navigation/menu.py:372 templates/inc/profile_button.html:18 +msgid "Admin" +msgstr "Администратор" + +#: netbox/navigation/menu.py:381 templates/users/group.html:27 +#: users/forms/model_forms.py:242 users/forms/model_forms.py:255 +#: users/forms/model_forms.py:309 users/tables.py:105 +msgid "Users" +msgstr "Пользователи" + +#: netbox/navigation/menu.py:404 users/forms/model_forms.py:182 +#: users/forms/model_forms.py:195 users/forms/model_forms.py:314 +#: users/tables.py:35 users/tables.py:109 +msgid "Groups" +msgstr "Группы" + +#: netbox/navigation/menu.py:426 templates/account/base.html:21 +#: templates/inc/profile_button.html:39 +msgid "API Tokens" +msgstr "Токены API" + +#: netbox/navigation/menu.py:433 users/forms/model_forms.py:188 +#: users/forms/model_forms.py:197 users/forms/model_forms.py:248 +#: users/forms/model_forms.py:256 +msgid "Permissions" +msgstr "Разрешения" + +#: netbox/navigation/menu.py:445 +msgid "Current Config" +msgstr "Текущая конфигурация" + +#: netbox/navigation/menu.py:451 +msgid "Config Revisions" +msgstr "Ревизии конфигурации" + +#: netbox/navigation/menu.py:491 templates/500.html:35 +#: templates/account/preferences.html:29 +msgid "Plugins" +msgstr "Плагины" + +#: netbox/preferences.py:17 +msgid "Color mode" +msgstr "Цветовой режим" + +#: netbox/preferences.py:25 +msgid "Page length" +msgstr "Длина страницы" + +#: netbox/preferences.py:27 +msgid "The default number of objects to display per page" +msgstr "Количество объектов, отображаемых на странице по умолчанию" + +#: netbox/preferences.py:31 +msgid "Paginator placement" +msgstr "Размещение пагинатора" + +#: netbox/preferences.py:37 +msgid "Where the paginator controls will be displayed relative to a table" +msgstr "" +"Где элементы управления пагинатором будут отображаться относительно таблицы" + +#: netbox/preferences.py:43 +msgid "Data format" +msgstr "Формат данных" + +#: netbox/tables/columns.py:175 +msgid "Toggle all" +msgstr "Переключить все" + +#: netbox/tables/columns.py:277 templates/inc/profile_button.html:56 +msgid "Toggle Dropdown" +msgstr "Переключить выпадающий список" + +#: netbox/tables/columns.py:542 templates/core/job.html:40 +msgid "Error" +msgstr "Ошибка" + +#: netbox/tables/tables.py:243 templates/generic/bulk_import.html:115 +msgid "Field" +msgstr "Поле" + +#: netbox/tables/tables.py:246 +msgid "Value" +msgstr "Ценность" + +#: netbox/tables/tables.py:259 +msgid "No results found" +msgstr "Результаты не найдены" + +#: netbox/tests/dummy_plugin/navigation.py:29 +msgid "Dummy Plugin" +msgstr "Фиктивный плагин" + +#: netbox/views/generic/feature_views.py:38 +msgid "Changelog" +msgstr "Журнал изменений" + +#: netbox/views/generic/feature_views.py:91 +msgid "Journal" +msgstr "журнал" + +#: templates/403.html:4 +msgid "Access Denied" +msgstr "Отказано в доступе" + +#: templates/403.html:9 +msgid "You do not have permission to access this page" +msgstr "У вас нет разрешения на доступ к этой странице" + +#: templates/404.html:4 +msgid "Page Not Found" +msgstr "Страница не найдена" + +#: templates/404.html:9 +msgid "The requested page does not exist" +msgstr "Запрошенная страница не существует" + +#: templates/500.html:7 templates/500.html:18 +msgid "Server Error" +msgstr "Ошибка сервера" + +#: templates/500.html:23 +msgid "There was a problem with your request. Please contact an administrator" +msgstr "С вашим запросом возникла проблема. Обратитесь к администратору" + +#: templates/500.html:28 +msgid "The complete exception is provided below" +msgstr "Полное исключение приведено ниже" + +#: templates/500.html:33 +msgid "Python version" +msgstr "Версия для Python" + +#: templates/500.html:34 +msgid "NetBox version" +msgstr "Версия NetBox" + +#: templates/500.html:36 +msgid "None installed" +msgstr "Ничего не установлено" + +#: templates/500.html:39 +msgid "If further assistance is required, please post to the" +msgstr "Если требуется дополнительная помощь, отправьте сообщение по адресу" + +#: templates/500.html:39 +msgid "NetBox discussion forum" +msgstr "Дискуссионный форум NetBox" + +#: templates/500.html:39 +msgid "on GitHub" +msgstr "на GitHub" + +#: templates/500.html:42 templates/base/40x.html:17 +msgid "Home Page" +msgstr "Домашняя страница" + +#: templates/account/base.html:7 templates/inc/profile_button.html:24 +#: vpn/forms/bulk_edit.py:256 vpn/forms/filtersets.py:186 +#: vpn/forms/model_forms.py:372 +msgid "Profile" +msgstr "Профиль" + +#: templates/account/base.html:13 templates/inc/profile_button.html:34 +msgid "Preferences" +msgstr "Предпочтения" + +#: templates/account/password.html:5 +msgid "Change Password" +msgstr "Изменить пароль" + +#: templates/account/password.html:17 templates/account/preferences.html:82 +#: templates/core/configrevision_restore.html:80 +#: templates/dcim/devicebay_populate.html:34 +#: templates/dcim/virtualchassis_add_member.html:24 +#: templates/dcim/virtualchassis_edit.html:104 +#: templates/extras/object_journal.html:26 templates/extras/script.html:36 +#: templates/generic/bulk_add_component.html:55 +#: templates/generic/bulk_delete.html:46 templates/generic/bulk_edit.html:125 +#: templates/generic/bulk_import.html:53 templates/generic/bulk_import.html:75 +#: templates/generic/bulk_import.html:97 templates/generic/bulk_remove.html:42 +#: templates/generic/bulk_rename.html:44 +#: templates/generic/confirmation_form.html:20 +#: templates/generic/object_edit.html:76 templates/htmx/delete_form.html:53 +#: templates/htmx/delete_form.html:55 templates/ipam/ipaddress_assign.html:31 +#: templates/virtualization/cluster_add_devices.html:30 +msgid "Cancel" +msgstr "Отменить" + +#: templates/account/password.html:18 templates/account/preferences.html:83 +#: templates/dcim/devicebay_populate.html:35 +#: templates/dcim/virtualchassis_add_member.html:26 +#: templates/dcim/virtualchassis_edit.html:106 +#: templates/extras/dashboard/widget_add.html:26 +#: templates/extras/dashboard/widget_config.html:19 +#: templates/extras/object_journal.html:27 +#: templates/generic/object_edit.html:66 +#: utilities/templates/helpers/applied_filters.html:16 +#: utilities/templates/helpers/table_config_form.html:40 +msgid "Save" +msgstr "Сохранить" + +#: templates/account/preferences.html:41 +msgid "Table Configurations" +msgstr "Конфигурации таблиц" + +#: templates/account/preferences.html:46 +msgid "Clear table preferences" +msgstr "Очистить настройки таблицы" + +#: templates/account/preferences.html:53 +msgid "Toggle All" +msgstr "Переключить все" + +#: templates/account/preferences.html:55 +msgid "Table" +msgstr "Таблица" + +#: templates/account/preferences.html:56 +msgid "Ordering" +msgstr "Заказ" + +#: templates/account/preferences.html:57 +msgid "Columns" +msgstr "Колонны" + +#: templates/account/preferences.html:76 templates/dcim/cable_trace.html:113 +#: templates/extras/object_configcontext.html:55 +msgid "None found" +msgstr "Ничего не найдено" + +#: templates/account/profile.html:6 +msgid "User Profile" +msgstr "Профиль пользователя" + +#: templates/account/profile.html:12 +msgid "Account Details" +msgstr "Сведения об учетной записи" + +#: templates/account/profile.html:30 templates/tenancy/contact.html:44 +#: templates/users/user.html:26 tenancy/forms/bulk_edit.py:108 +msgid "Email" +msgstr "Электронная почта" + +#: templates/account/profile.html:34 templates/users/user.html:30 +msgid "Account Created" +msgstr "Учетная запись создана" + +#: templates/account/profile.html:38 templates/users/user.html:42 +msgid "Superuser" +msgstr "Суперпользователь" + +#: templates/account/profile.html:42 +msgid "Admin Access" +msgstr "Доступ администратора" + +#: templates/account/profile.html:51 templates/users/objectpermission.html:86 +#: templates/users/user.html:51 +msgid "Assigned Groups" +msgstr "Назначенные группы" + +#: templates/account/profile.html:56 +#: templates/circuits/circuit_terminations_swap.html:18 +#: templates/circuits/circuit_terminations_swap.html:26 +#: templates/circuits/inc/circuit_termination.html:154 +#: templates/dcim/devicebay.html:66 +#: templates/dcim/inc/panels/inventory_items.html:37 +#: templates/dcim/interface.html:306 templates/dcim/modulebay.html:79 +#: templates/extras/configcontext.html:73 templates/extras/eventrule.html:84 +#: templates/extras/htmx/script_result.html:54 +#: templates/extras/object_configcontext.html:28 +#: templates/extras/objectchange.html:128 +#: templates/extras/objectchange.html:145 templates/extras/webhook.html:79 +#: templates/extras/webhook.html:91 templates/inc/panel_table.html:12 +#: templates/inc/panels/comments.html:12 +#: templates/ipam/inc/panels/fhrp_groups.html:43 templates/users/group.html:32 +#: templates/users/group.html:42 templates/users/objectpermission.html:81 +#: templates/users/objectpermission.html:91 templates/users/user.html:56 +#: templates/users/user.html:66 +msgid "None" +msgstr "Нет" + +#: templates/account/profile.html:66 templates/users/user.html:76 +msgid "Recent Activity" +msgstr "Недавняя активность" + +#: templates/account/token.html:8 templates/account/token_list.html:6 +msgid "My API Tokens" +msgstr "Мои токены API" + +#: templates/account/token.html:11 templates/account/token.html:19 +#: templates/users/token.html:6 templates/users/token.html:14 +#: users/forms/filtersets.py:121 +msgid "Token" +msgstr "Токен" + +#: templates/account/token.html:40 templates/users/token.html:32 +#: users/forms/bulk_edit.py:87 +msgid "Write enabled" +msgstr "Запись включена" + +#: templates/account/token.html:52 templates/users/token.html:44 +msgid "Last used" +msgstr "Последний раз использованный" + +#: templates/account/token_list.html:12 +msgid "Add a Token" +msgstr "Добавить токен" + +#: templates/admin/index.html:10 +msgid "System" +msgstr "система" + +#: templates/admin/index.html:14 +msgid "Background Tasks" +msgstr "Фоновые задачи" + +#: templates/admin/index.html:19 +msgid "Installed plugins" +msgstr "Установленные плагины" + +#: templates/base/base.html:28 templates/extras/admin/plugins_list.html:8 +#: templates/home.html:24 +msgid "Home" +msgstr "Главная" + +#: templates/base/layout.html:27 templates/base/layout.html:37 +#: templates/login.html:34 +msgid "NetBox logo" +msgstr "Логотип NetBox" + +#: templates/base/layout.html:76 +msgid "Debug mode is enabled" +msgstr "Включен режим отладки" + +#: templates/base/layout.html:77 +msgid "" +"Performance may be limited. Debugging should never be enabled on a " +"production system" +msgstr "" +"Производительность может быть ограничена. В производственной системе ни в " +"коем случае нельзя включать отладку" + +#: templates/base/layout.html:83 +msgid "Maintenance Mode" +msgstr "Режим обслуживания" + +#: templates/base/layout.html:134 +msgid "Docs" +msgstr "Документы" + +#: templates/base/layout.html:139 templates/rest_framework/api.html:10 +msgid "REST API" +msgstr "ОСТАЛЬНОЕ API" + +#: templates/base/layout.html:144 +msgid "REST API documentation" +msgstr "Документация по REST API" + +#: templates/base/layout.html:150 +msgid "GraphQL API" +msgstr "API GraphQL" + +#: templates/base/layout.html:156 +msgid "Source Code" +msgstr "Исходный код" + +#: templates/base/layout.html:161 +msgid "Community" +msgstr "Сообщество" + +#: templates/base/sidenav.html:12 templates/base/sidenav.html:17 +msgid "NetBox Logo" +msgstr "Логотип NetBox" + +#: templates/circuits/circuit.html:48 +msgid "Install Date" +msgstr "Дата установки" + +#: templates/circuits/circuit.html:52 +msgid "Termination Date" +msgstr "Дата увольнения" + +#: templates/circuits/circuit_terminations_swap.html:4 +msgid "Swap Circuit Terminations" +msgstr "Прерывания цепей Swap" + +#: templates/circuits/circuit_terminations_swap.html:8 +#, python-format +msgid "Swap these terminations for circuit %(circuit)s?" +msgstr "Замените эти разъемы на схему %(circuit)s?" + +#: templates/circuits/circuit_terminations_swap.html:14 +msgid "A side" +msgstr "Сторона" + +#: templates/circuits/circuit_terminations_swap.html:22 +msgid "Z side" +msgstr "Сторона Z" + +#: templates/circuits/circuittermination_edit.html:9 +#: templates/circuits/inc/circuit_termination.html:81 +#: templates/dcim/frontport.html:128 templates/dcim/interface.html:199 +#: templates/dcim/rearport.html:118 +msgid "Circuit Termination" +msgstr "Прекращение цепи" + +#: templates/circuits/circuittermination_edit.html:41 +msgid "Termination Details" +msgstr "Сведения об увольнении" + +#: templates/circuits/circuittype.html:10 +msgid "Add Circuit" +msgstr "Добавить цепь" + +#: templates/circuits/inc/circuit_termination.html:9 +#: templates/dcim/devicetype/component_templates.html:30 +#: templates/dcim/manufacturer.html:11 +#: templates/dcim/moduletype/component_templates.html:30 +#: templates/generic/bulk_add_component.html:8 +#: templates/users/objectpermission.html:41 +#: utilities/templates/buttons/add.html:4 +#: utilities/templates/helpers/table_config_form.html:20 +msgid "Add" +msgstr "Добавить" + +#: templates/circuits/inc/circuit_termination.html:14 +#: templates/circuits/inc/circuit_termination.html:63 +#: templates/dcim/devicetype/component_templates.html:21 +#: templates/dcim/inc/panels/inventory_items.html:24 +#: templates/dcim/moduletype/component_templates.html:21 +#: templates/dcim/powerpanel.html:61 templates/generic/object_edit.html:29 +#: templates/ipam/inc/ipaddress_edit_header.html:10 +#: templates/ipam/inc/panels/fhrp_groups.html:30 +#: utilities/templates/buttons/edit.html:3 +msgid "Edit" +msgstr "Редактировать" + +#: templates/circuits/inc/circuit_termination.html:17 +msgid "Swap" +msgstr "Обмен" + +#: templates/circuits/inc/circuit_termination.html:26 +#, python-format +msgid "Termination %(side)s" +msgstr "Прекращение %(side)s" + +#: templates/circuits/inc/circuit_termination.html:42 +#: templates/dcim/cable.html:70 templates/dcim/cable.html:76 +#: vpn/forms/bulk_import.py:100 vpn/forms/filtersets.py:76 +msgid "Termination" +msgstr "Прекращение" + +#: templates/circuits/inc/circuit_termination.html:46 +#: templates/dcim/consoleport.html:62 templates/dcim/consoleserverport.html:62 +#: templates/dcim/powerfeed.html:122 +msgid "Marked as connected" +msgstr "Отмечено как подключенное" + +#: templates/circuits/inc/circuit_termination.html:48 +msgid "to" +msgstr "к" + +#: templates/circuits/inc/circuit_termination.html:58 +#: templates/circuits/inc/circuit_termination.html:59 +#: templates/dcim/frontport.html:87 +#: templates/dcim/inc/connection_endpoints.html:7 +#: templates/dcim/interface.html:160 templates/dcim/rearport.html:83 +msgid "Trace" +msgstr "Следить" + +#: templates/circuits/inc/circuit_termination.html:62 +msgid "Edit cable" +msgstr "Редактирование кабеля" + +#: templates/circuits/inc/circuit_termination.html:67 +msgid "Remove cable" +msgstr "Извлеките кабель" + +#: templates/circuits/inc/circuit_termination.html:68 +#: templates/dcim/bulk_disconnect.html:5 +#: templates/dcim/device/consoleports.html:12 +#: templates/dcim/device/consoleserverports.html:12 +#: templates/dcim/device/frontports.html:12 +#: templates/dcim/device/interfaces.html:16 +#: templates/dcim/device/poweroutlets.html:12 +#: templates/dcim/device/powerports.html:12 +#: templates/dcim/device/rearports.html:12 templates/dcim/powerpanel.html:66 +msgid "Disconnect" +msgstr "Отключить" + +#: templates/circuits/inc/circuit_termination.html:75 +#: templates/dcim/consoleport.html:71 templates/dcim/consoleserverport.html:71 +#: templates/dcim/frontport.html:109 templates/dcim/interface.html:186 +#: templates/dcim/interface.html:206 templates/dcim/powerfeed.html:136 +#: templates/dcim/poweroutlet.html:75 templates/dcim/poweroutlet.html:76 +#: templates/dcim/powerport.html:77 templates/dcim/rearport.html:105 +msgid "Connect" +msgstr "Подключить" + +#: templates/circuits/inc/circuit_termination.html:79 +#: templates/dcim/consoleport.html:78 templates/dcim/consoleserverport.html:78 +#: templates/dcim/frontport.html:18 templates/dcim/frontport.html:122 +#: templates/dcim/interface.html:193 templates/dcim/inventoryitem_edit.html:49 +#: templates/dcim/rearport.html:112 +msgid "Front Port" +msgstr "Передний порт" + +#: templates/circuits/inc/circuit_termination.html:97 +msgid "Downstream" +msgstr "Ниже по течению" + +#: templates/circuits/inc/circuit_termination.html:98 +msgid "Upstream" +msgstr "Вверх по течению" + +#: templates/circuits/inc/circuit_termination.html:107 +msgid "Cross-Connect" +msgstr "Кросс-коннект" + +#: templates/circuits/inc/circuit_termination.html:111 +msgid "Patch Panel/Port" +msgstr "Патч-панель/порт" + +#: templates/circuits/provider.html:11 +msgid "Add circuit" +msgstr "Добавить цепь" + +#: templates/circuits/provideraccount.html:17 +msgid "Provider Account" +msgstr "Учетная запись поставщика" + +#: templates/core/configrevision.html:47 +msgid "Default unit height" +msgstr "Высота единицы измерения по умолчанию" + +#: templates/core/configrevision.html:51 +msgid "Default unit width" +msgstr "Ширина блока по умолчанию" + +#: templates/core/configrevision.html:63 +msgid "Default voltage" +msgstr "Напряжение по умолчанию" + +#: templates/core/configrevision.html:67 +msgid "Default amperage" +msgstr "Сила тока по умолчанию" + +#: templates/core/configrevision.html:71 +msgid "Default max utilization" +msgstr "Максимальное использование по умолчанию" + +#: templates/core/configrevision.html:83 +msgid "Enforce global unique" +msgstr "Обеспечьте глобальную уникальность" + +#: templates/core/configrevision.html:135 +msgid "Paginate count" +msgstr "Количество страниц" + +#: templates/core/configrevision.html:139 +msgid "Max page size" +msgstr "Максимальный размер страницы" + +#: templates/core/configrevision.html:179 +msgid "Default user preferences" +msgstr "Пользовательские настройки по умолчанию" + +#: templates/core/configrevision.html:209 +msgid "Job retention" +msgstr "Сохранение рабочих мест" + +#: templates/core/configrevision.html:221 +msgid "Comment" +msgstr "Комментарий" + +#: templates/core/configrevision_restore.html:8 +#: templates/core/configrevision_restore.html:43 +#: templates/core/configrevision_restore.html:79 +msgid "Restore" +msgstr "Восстановить" + +#: templates/core/configrevision_restore.html:21 +msgid "Config revisions" +msgstr "Ревизии конфигурации" + +#: templates/core/configrevision_restore.html:54 +msgid "Parameter" +msgstr "Параметр" + +#: templates/core/configrevision_restore.html:55 +msgid "Current Value" +msgstr "Текущее значение" + +#: templates/core/configrevision_restore.html:56 +msgid "New Value" +msgstr "Новое значение" + +#: templates/core/configrevision_restore.html:66 +msgid "Changed" +msgstr "Изменено" + +#: templates/core/datafile.html:47 +msgid "Last Updated" +msgstr "Последнее обновление" + +#: templates/core/datafile.html:51 templates/ipam/iprange.html:28 +#: templates/virtualization/virtualdisk.html:30 +msgid "Size" +msgstr "Размер" + +#: templates/core/datafile.html:52 +msgid "bytes" +msgstr "байтов" + +#: templates/core/datafile.html:55 +msgid "SHA256 Hash" +msgstr "Хэш SHA256" + +#: templates/core/datasource.html:14 templates/core/datasource.html:20 +#: utilities/templates/buttons/sync.html:5 +msgid "Sync" +msgstr "Синхронизация" + +#: templates/core/datasource.html:51 +msgid "Last synced" +msgstr "Последняя синхронизация" + +#: templates/core/datasource.html:86 +msgid "Backend" +msgstr "Серверная часть" + +#: templates/core/datasource.html:102 +msgid "No parameters defined" +msgstr "Параметры не определены" + +#: templates/core/datasource.html:118 +msgid "Files" +msgstr "файлы" + +#: templates/core/job.html:21 +msgid "Job" +msgstr "Задание" + +#: templates/core/job.html:45 templates/extras/journalentry.html:29 +msgid "Created By" +msgstr "Создано" + +#: templates/core/job.html:54 +msgid "Scheduling" +msgstr "Планирование" + +#: templates/core/job.html:66 +#, python-format +msgid "every %(interval)s seconds" +msgstr "каждый %(interval)s секунды" + +#: templates/dcim/bulk_disconnect.html:9 +#, python-format +msgid "" +"Are you sure you want to disconnect these %(count)s %(obj_type_plural)s?" +msgstr "Вы действительно хотите отключить их? %(count)s %(obj_type_plural)s?" + +#: templates/dcim/cable_edit.html:12 +msgid "A Side" +msgstr "Сторона «А»" + +#: templates/dcim/cable_edit.html:29 +msgid "B Side" +msgstr "Сторона «Б»" + +#: templates/dcim/cable_trace.html:6 +#, python-format +msgid "Cable Trace for %(object_type)s %(object)s" +msgstr "Трассировка кабелей для %(object_type)s %(object)s" + +#: templates/dcim/cable_trace.html:21 templates/dcim/inc/rack_elevation.html:7 +msgid "Download SVG" +msgstr "Загрузить SVG" + +#: templates/dcim/cable_trace.html:27 +msgid "Asymmetric Path" +msgstr "Асимметричный путь" + +#: templates/dcim/cable_trace.html:28 +msgid "The nodes below have no links and result in an asymmetric path" +msgstr "" +"Приведенные ниже узлы не имеют ссылок и обеспечивают асимметричный путь" + +#: templates/dcim/cable_trace.html:35 +msgid "Path split" +msgstr "Разделение путей" + +#: templates/dcim/cable_trace.html:36 +msgid "Select a node below to continue" +msgstr "Выберите узел ниже, чтобы продолжить" + +#: templates/dcim/cable_trace.html:52 +msgid "Trace Completed" +msgstr "Трассировка завершена" + +#: templates/dcim/cable_trace.html:55 +msgid "Total segments" +msgstr "Всего сегментов" + +#: templates/dcim/cable_trace.html:59 +msgid "Total length" +msgstr "Общая длина" + +#: templates/dcim/cable_trace.html:74 +msgid "No paths found" +msgstr "Пути не найдены" + +#: templates/dcim/cable_trace.html:83 +msgid "Related Paths" +msgstr "Связанные пути" + +#: templates/dcim/cable_trace.html:89 +msgid "Origin" +msgstr "Происхождение" + +#: templates/dcim/cable_trace.html:90 +msgid "Destination" +msgstr "Пункт назначения" + +#: templates/dcim/cable_trace.html:91 +msgid "Segments" +msgstr "Сегменты" + +#: templates/dcim/cable_trace.html:104 +msgid "Incomplete" +msgstr "Неполный" + +#: templates/dcim/component_list.html:14 +msgid "Rename Selected" +msgstr "Переименовать выбранное" + +#: templates/dcim/consoleport.html:67 templates/dcim/consoleserverport.html:67 +#: templates/dcim/frontport.html:105 templates/dcim/interface.html:182 +#: templates/dcim/poweroutlet.html:73 templates/dcim/powerport.html:73 +msgid "Not Connected" +msgstr "Не подключено" + +#: templates/dcim/consoleport.html:75 templates/dcim/consoleserverport.html:18 +#: templates/dcim/frontport.html:116 templates/dcim/inventoryitem_edit.html:44 +msgid "Console Server Port" +msgstr "Порт консольного сервера" + +#: templates/dcim/device.html:35 +msgid "Highlight device" +msgstr "Выделите устройство" + +#: templates/dcim/device.html:57 +msgid "Not racked" +msgstr "Не треснул" + +#: templates/dcim/device.html:64 templates/dcim/site.html:96 +msgid "GPS Coordinates" +msgstr "Координаты GPS" + +#: templates/dcim/device.html:70 templates/dcim/site.html:102 +msgid "Map It" +msgstr "Нанесите на карту" + +#: templates/dcim/device.html:110 templates/dcim/inventoryitem.html:57 +#: templates/dcim/module.html:79 templates/dcim/modulebay.html:73 +#: templates/dcim/rack.html:62 +msgid "Asset Tag" +msgstr "Тег актива" + +#: templates/dcim/device.html:153 +msgid "View Virtual Chassis" +msgstr "Смотреть виртуальное шасси" + +#: templates/dcim/device.html:170 +msgid "Create VDC" +msgstr "Создайте VDC" + +#: templates/dcim/device.html:179 templates/dcim/device_edit.html:64 +#: virtualization/forms/model_forms.py:226 +msgid "Management" +msgstr "Управление" + +#: templates/dcim/device.html:200 templates/dcim/device.html:216 +#: templates/virtualization/virtualmachine.html:56 +#: templates/virtualization/virtualmachine.html:72 +msgid "NAT for" +msgstr "NAT для" + +#: templates/dcim/device.html:202 templates/dcim/device.html:218 +#: templates/virtualization/virtualmachine.html:58 +#: templates/virtualization/virtualmachine.html:74 +msgid "NAT" +msgstr "КОТ" + +#: templates/dcim/device.html:254 templates/dcim/rack.html:70 +msgid "Power Utilization" +msgstr "Использование энергии" + +#: templates/dcim/device.html:259 +msgid "Input" +msgstr "Ввод" + +#: templates/dcim/device.html:260 +msgid "Outlets" +msgstr "Торговые точки" + +#: templates/dcim/device.html:261 +msgid "Allocated" +msgstr "Выделено" + +#: templates/dcim/device.html:270 templates/dcim/device.html:272 +#: templates/dcim/device.html:288 templates/dcim/powerfeed.html:70 +msgid "VA" +msgstr "ВА" + +#: templates/dcim/device.html:282 +msgctxt "Leg of a power feed" +msgid "Leg" +msgstr "Ножка" + +#: templates/dcim/device.html:312 +#: templates/virtualization/virtualmachine.html:165 +msgid "Add a service" +msgstr "Добавить услугу" + +#: templates/dcim/device.html:319 templates/dcim/rack.html:77 +#: templates/dcim/rack_edit.html:38 +msgid "Dimensions" +msgstr "Габариты" + +#: templates/dcim/device/base.html:21 templates/dcim/device_list.html:9 +#: templates/dcim/devicetype/base.html:18 templates/dcim/module.html:18 +#: templates/dcim/moduletype/base.html:18 +#: templates/virtualization/virtualmachine/base.html:22 +#: templates/virtualization/virtualmachine_list.html:8 +msgid "Add Components" +msgstr "Добавить компоненты" + +#: templates/dcim/device/consoleports.html:24 +msgid "Add Console Ports" +msgstr "Добавить консольные порты" + +#: templates/dcim/device/consoleserverports.html:24 +msgid "Add Console Server Ports" +msgstr "Добавить порты консольного сервера" + +#: templates/dcim/device/devicebays.html:10 +msgid "Add Device Bays" +msgstr "Добавить отсеки для устройств" + +#: templates/dcim/device/frontports.html:24 +msgid "Add Front Ports" +msgstr "Добавить передние порты" + +#: templates/dcim/device/inc/interface_table_controls.html:9 +msgid "Hide Enabled" +msgstr "Скрыть включено" + +#: templates/dcim/device/inc/interface_table_controls.html:10 +msgid "Hide Disabled" +msgstr "Скрыть отключено" + +#: templates/dcim/device/inc/interface_table_controls.html:11 +msgid "Hide Virtual" +msgstr "Скрыть виртуальное" + +#: templates/dcim/device/inc/interface_table_controls.html:12 +msgid "Hide Disconnected" +msgstr "Скрыть отключено" + +#: templates/dcim/device/interfaces.html:28 +msgid "Add Interfaces" +msgstr "Добавить интерфейсы" + +#: templates/dcim/device/inventory.html:10 +#: templates/dcim/inc/panels/inventory_items.html:46 +msgid "Add Inventory Item" +msgstr "Добавить инвентарь" + +#: templates/dcim/device/modulebays.html:10 +msgid "Add Module Bays" +msgstr "Добавить отсеки для модулей" + +#: templates/dcim/device/poweroutlets.html:24 +msgid "Add Power Outlets" +msgstr "Добавить розетки" + +#: templates/dcim/device/powerports.html:24 +msgid "Add Power Port" +msgstr "Добавить порт питания" + +#: templates/dcim/device/rearports.html:24 +msgid "Add Rear Ports" +msgstr "Добавить задние порты" + +#: templates/dcim/device/render_config.html:5 +#: templates/virtualization/virtualmachine/render_config.html:5 +msgid "Config" +msgstr "Конфигурация" + +#: templates/dcim/device/render_config.html:37 +#: templates/virtualization/virtualmachine/render_config.html:37 +msgid "Context Data" +msgstr "Контекстные данные" + +#: templates/dcim/device/render_config.html:57 +#: templates/virtualization/virtualmachine/render_config.html:57 +msgid "Download" +msgstr "Загрузить" + +#: templates/dcim/device/render_config.html:60 +#: templates/virtualization/virtualmachine/render_config.html:60 +msgid "Rendered Config" +msgstr "Отображенная конфигурация" + +#: templates/dcim/device/render_config.html:65 +#: templates/virtualization/virtualmachine/render_config.html:65 +msgid "No configuration template found" +msgstr "Шаблон конфигурации не найден" + +#: templates/dcim/device_edit.html:44 +msgid "Parent Bay" +msgstr "Родительский залив" + +#: templates/dcim/device_edit.html:48 +#: utilities/templates/form_helpers/render_field.html:20 +msgid "Regenerate Slug" +msgstr "Регенерирующий слизень" + +#: templates/dcim/device_edit.html:49 templates/generic/bulk_remove.html:7 +#: utilities/templates/helpers/table_config_form.html:23 +msgid "Remove" +msgstr "Удалить" + +#: templates/dcim/device_edit.html:110 +msgid "Local Config Context Data" +msgstr "Контекстные данные локальной конфигурации" + +#: templates/dcim/device_list.html:82 +#: templates/dcim/devicetype/component_templates.html:18 +#: templates/dcim/moduletype/component_templates.html:18 +#: templates/generic/bulk_rename.html:34 +#: templates/virtualization/virtualmachine/interfaces.html:11 +#: templates/virtualization/virtualmachine/virtual_disks.html:11 +msgid "Rename" +msgstr "Переименовать" + +#: templates/dcim/devicebay.html:18 +msgid "Device Bay" +msgstr "Отсек для устройств" + +#: templates/dcim/devicebay.html:48 +msgid "Installed Device" +msgstr "Установленное устройство" + +#: templates/dcim/devicebay_delete.html:6 +#, python-format +msgid "Delete device bay %(devicebay)s?" +msgstr "Удалить отсек для устройств %(devicebay)s?" + +#: templates/dcim/devicebay_delete.html:11 +#, python-format +msgid "" +"Are you sure you want to delete this device bay from " +"%(device)s?" +msgstr "" +"Вы действительно хотите удалить этот отсек для устройства из " +"%(device)s?" + +#: templates/dcim/devicebay_depopulate.html:6 +#, python-format +msgid "Remove %(device)s from %(device_bay)s?" +msgstr "Удалить %(device)s из %(device_bay)s?" + +#: templates/dcim/devicebay_depopulate.html:13 +#, python-format +msgid "" +"Are you sure you want to remove %(device)s from " +"%(device_bay)s?" +msgstr "" +"Вы действительно хотите удалить %(device)s из " +"%(device_bay)s?" + +#: templates/dcim/devicebay_populate.html:13 +msgid "Populate" +msgstr "Заселить" + +#: templates/dcim/devicebay_populate.html:22 +msgid "Bay" +msgstr "залив" + +#: templates/dcim/devicerole.html:14 templates/dcim/platform.html:17 +msgid "Add Device" +msgstr "Добавить устройство" + +#: templates/dcim/devicerole.html:43 +msgid "VM Role" +msgstr "Роль виртуальной машины" + +#: templates/dcim/devicetype.html:21 templates/dcim/moduletype.html:19 +msgid "Model Name" +msgstr "Название модели" + +#: templates/dcim/devicetype.html:28 templates/dcim/moduletype.html:23 +msgid "Part Number" +msgstr "Номер детали" + +#: templates/dcim/devicetype.html:40 +msgid "Height (U" +msgstr "Высота (U)" + +#: templates/dcim/devicetype.html:44 +msgid "Exclude From Utilization" +msgstr "Исключить из использования" + +#: templates/dcim/devicetype.html:62 +msgid "Parent/Child" +msgstr "Родитель/ребенок" + +#: templates/dcim/devicetype.html:74 +msgid "Front Image" +msgstr "Изображение на передней панели" + +#: templates/dcim/devicetype.html:86 +msgid "Rear Image" +msgstr "Изображение сзади" + +#: templates/dcim/frontport.html:57 +msgid "Rear Port Position" +msgstr "Положение заднего порта" + +#: templates/dcim/frontport.html:79 templates/dcim/interface.html:150 +#: templates/dcim/poweroutlet.html:67 templates/dcim/powerport.html:67 +#: templates/dcim/rearport.html:75 +msgid "Marked as Connected" +msgstr "Отмечено как подключенное" + +#: templates/dcim/frontport.html:93 templates/dcim/rearport.html:89 +msgid "Connection Status" +msgstr "Состояние подключения" + +#: templates/dcim/inc/cable_termination.html:65 +msgid "No termination" +msgstr "Без увольнения" + +#: templates/dcim/inc/cable_toggle_buttons.html:4 +msgid "Mark Planned" +msgstr "Отметить как запланированное" + +#: templates/dcim/inc/cable_toggle_buttons.html:8 +msgid "Mark Installed" +msgstr "Отметить как установленное" + +#: templates/dcim/inc/connection_endpoints.html:13 +msgid "Path Status" +msgstr "Состояние пути" + +#: templates/dcim/inc/connection_endpoints.html:18 +msgid "Not Reachable" +msgstr "Недоступно" + +#: templates/dcim/inc/connection_endpoints.html:23 +msgid "Path Endpoints" +msgstr "Конечные точки пути" + +#: templates/dcim/inc/endpoint_connection.html:8 +#: templates/dcim/powerfeed.html:128 templates/dcim/rearport.html:101 +msgid "Not connected" +msgstr "Не подключен" + +#: templates/dcim/inc/interface_vlans_table.html:6 +msgid "Untagged" +msgstr "Без тегов" + +#: templates/dcim/inc/interface_vlans_table.html:37 +msgid "No VLANs Assigned" +msgstr "VLAN не назначены" + +#: templates/dcim/inc/interface_vlans_table.html:44 +#: templates/ipam/prefix_list.html:16 templates/ipam/prefix_list.html:33 +msgid "Clear" +msgstr "Чисто" + +#: templates/dcim/inc/interface_vlans_table.html:47 +msgid "Clear All" +msgstr "Очистить все" + +#: templates/dcim/interface.html:17 +msgid "Add Child Interface" +msgstr "Добавить дочерний интерфейс" + +#: templates/dcim/interface.html:51 +msgid "Speed/Duplex" +msgstr "Скорость/дуплекс" + +#: templates/dcim/interface.html:74 +msgid "PoE Mode" +msgstr "Режим PoE" + +#: templates/dcim/interface.html:78 +msgid "PoE Type" +msgstr "Тип PoE" + +#: templates/dcim/interface.html:82 +#: templates/virtualization/vminterface.html:66 +msgid "802.1Q Mode" +msgstr "Режим 802.1Q" + +#: templates/dcim/interface.html:130 +#: templates/virtualization/vminterface.html:62 +msgid "MAC Address" +msgstr "MAC-адрес" + +#: templates/dcim/interface.html:157 +msgid "Wireless Link" +msgstr "Беспроводная связь" + +#: templates/dcim/interface.html:226 vpn/choices.py:55 +msgid "Peer" +msgstr "сверстник" + +#: templates/dcim/interface.html:238 +#: templates/wireless/inc/wirelesslink_interface.html:26 +msgid "Channel" +msgstr "Канал" + +#: templates/dcim/interface.html:247 +#: templates/wireless/inc/wirelesslink_interface.html:32 +msgid "Channel Frequency" +msgstr "Частота канала" + +#: templates/dcim/interface.html:250 templates/dcim/interface.html:258 +#: templates/dcim/interface.html:269 templates/dcim/interface.html:277 +msgid "MHz" +msgstr "МГц" + +#: templates/dcim/interface.html:266 +#: templates/wireless/inc/wirelesslink_interface.html:42 +msgid "Channel Width" +msgstr "Ширина канала" + +#: templates/dcim/interface.html:295 templates/wireless/wirelesslan.html:15 +#: templates/wireless/wirelesslink.html:24 wireless/forms/bulk_edit.py:59 +#: wireless/forms/bulk_edit.py:101 wireless/forms/filtersets.py:39 +#: wireless/forms/filtersets.py:79 wireless/models.py:81 +#: wireless/models.py:155 wireless/tables/wirelesslan.py:44 +msgid "SSID" +msgstr "СКАЗАЛ" + +#: templates/dcim/interface.html:316 +msgid "LAG Members" +msgstr "Члены LAG" + +#: templates/dcim/interface.html:335 +msgid "No member interfaces" +msgstr "Нет интерфейсов участников" + +#: templates/dcim/interface.html:359 templates/ipam/fhrpgroup.html:80 +#: templates/ipam/iprange/ip_addresses.html:7 +#: templates/ipam/prefix/ip_addresses.html:7 +#: templates/virtualization/vminterface.html:96 +msgid "Add IP Address" +msgstr "Добавить IP-адрес" + +#: templates/dcim/inventoryitem.html:25 +msgid "Parent Item" +msgstr "Родительский товар" + +#: templates/dcim/inventoryitem.html:49 +msgid "Part ID" +msgstr "Идентификатор детали" + +#: templates/dcim/inventoryitem_bulk_delete.html:5 +msgid "This will also delete all child inventory items of those listed" +msgstr "" +"Это также приведет к удалению всего детского инвентаря из перечисленных" + +#: templates/dcim/inventoryitem_edit.html:33 +msgid "Component Assignment" +msgstr "Назначение компонентов" + +#: templates/dcim/inventoryitem_edit.html:59 +#: templates/dcim/poweroutlet.html:18 templates/dcim/powerport.html:81 +msgid "Power Outlet" +msgstr "Розетка питания" + +#: templates/dcim/location.html:17 +msgid "Add Child Location" +msgstr "Добавить местоположение ребенка" + +#: templates/dcim/location.html:76 +msgid "Child Locations" +msgstr "Местонахождение детей" + +#: templates/dcim/location.html:84 templates/dcim/site.html:137 +msgid "Add a Location" +msgstr "Добавить местоположение" + +#: templates/dcim/location.html:98 templates/dcim/site.html:151 +msgid "Add a Device" +msgstr "Добавить устройство" + +#: templates/dcim/manufacturer.html:16 +msgid "Add Device Type" +msgstr "Добавить тип устройства" + +#: templates/dcim/manufacturer.html:21 +msgid "Add Module Type" +msgstr "Добавить тип модуля" + +#: templates/dcim/powerfeed.html:56 +msgid "Connected Device" +msgstr "Подключенное устройство" + +#: templates/dcim/powerfeed.html:66 +msgid "Utilization (Allocated" +msgstr "Использование (распределенное)" + +#: templates/dcim/powerfeed.html:85 +msgid "Electrical Characteristics" +msgstr "Электрические характеристики" + +#: templates/dcim/powerfeed.html:95 +msgctxt "Abbreviation for volts" +msgid "V" +msgstr "V" + +#: templates/dcim/powerfeed.html:99 +msgctxt "Abbreviation for amperes" +msgid "A" +msgstr "A" + +#: templates/dcim/poweroutlet.html:51 +msgid "Feed Leg" +msgstr "Кормовая ножка" + +#: templates/dcim/powerpanel.html:77 +msgid "Add Power Feeds" +msgstr "Добавить каналы питания" + +#: templates/dcim/powerport.html:47 +msgid "Maximum Draw" +msgstr "Максимальная ничья" + +#: templates/dcim/powerport.html:51 +msgid "Allocated Draw" +msgstr "Распределенная ничья" + +#: templates/dcim/rack.html:66 +msgid "Space Utilization" +msgstr "Использование пространства" + +#: templates/dcim/rack.html:96 +msgid "descending" +msgstr "спускаясь" + +#: templates/dcim/rack.html:96 +msgid "ascending" +msgstr "по возрастанию" + +#: templates/dcim/rack.html:99 +msgid "Starting Unit" +msgstr "Пусковой блок" + +#: templates/dcim/rack.html:125 +msgid "Mounting Depth" +msgstr "Глубина монтажа" + +#: templates/dcim/rack.html:135 +msgid "Rack Weight" +msgstr "Вес стойки" + +#: templates/dcim/rack.html:145 templates/dcim/rack_edit.html:67 +msgid "Maximum Weight" +msgstr "Максимальный вес" + +#: templates/dcim/rack.html:155 +msgid "Total Weight" +msgstr "Общий вес" + +#: templates/dcim/rack.html:173 templates/dcim/rack_elevation_list.html:16 +msgid "Images and Labels" +msgstr "Изображения и этикетки" + +#: templates/dcim/rack.html:174 templates/dcim/rack_elevation_list.html:17 +msgid "Images only" +msgstr "Только изображения" + +#: templates/dcim/rack.html:175 templates/dcim/rack_elevation_list.html:18 +msgid "Labels only" +msgstr "Только этикетки" + +#: templates/dcim/rack/reservations.html:9 +msgid "Add reservation" +msgstr "Добавить бронирование" + +#: templates/dcim/rack_edit.html:21 +msgid "Inventory Control" +msgstr "Управление запасами" + +#: templates/dcim/rack_edit.html:45 +msgid "Outer Dimensions" +msgstr "Внешние размеры" + +#: templates/dcim/rack_edit.html:56 templates/dcim/rack_edit.html:71 +msgid "Unit" +msgstr "Единица" + +#: templates/dcim/rack_elevation_list.html:12 +msgid "View List" +msgstr "Показать список" + +#: templates/dcim/rack_elevation_list.html:27 +msgid "Sort By" +msgstr "Сортировать по" + +#: templates/dcim/rack_elevation_list.html:77 +msgid "No Racks Found" +msgstr "Стойки не найдены" + +#: templates/dcim/rack_list.html:8 +msgid "View Elevations" +msgstr "Просмотр высот" + +#: templates/dcim/rackreservation.html:47 +msgid "Reservation Details" +msgstr "Сведения о бронировании" + +#: templates/dcim/rackrole.html:10 +msgid "Add Rack" +msgstr "Добавить стойку" + +#: templates/dcim/rearport.html:53 +msgid "Positions" +msgstr "Позиции" + +#: templates/dcim/region.html:17 templates/dcim/sitegroup.html:17 +msgid "Add Site" +msgstr "Добавить сайт" + +#: templates/dcim/region.html:56 +msgid "Child Regions" +msgstr "Детские регионы" + +#: templates/dcim/region.html:64 +msgid "Add Region" +msgstr "Добавить регион" + +#: templates/dcim/site.html:56 +msgid "Facility" +msgstr "Объект" + +#: templates/dcim/site.html:64 +msgid "Time Zone" +msgstr "Часовой пояс" + +#: templates/dcim/site.html:67 +msgid "UTC" +msgstr "UTC" + +#: templates/dcim/site.html:68 +msgid "Site time" +msgstr "Время работы сайта" + +#: templates/dcim/site.html:75 +msgid "Physical Address" +msgstr "Физический адрес" + +#: templates/dcim/site.html:81 +msgid "Map" +msgstr "карта" + +#: templates/dcim/site.html:92 +msgid "Shipping Address" +msgstr "Адрес доставки" + +#: templates/dcim/sitegroup.html:56 templates/tenancy/contactgroup.html:49 +#: templates/tenancy/tenantgroup.html:58 +#: templates/wireless/wirelesslangroup.html:56 +msgid "Child Groups" +msgstr "Детские группы" + +#: templates/dcim/sitegroup.html:64 +msgid "Add Site Group" +msgstr "Добавить группу сайтов" + +#: templates/dcim/trace/attachment.html:5 +#: templates/extras/exporttemplate.html:37 +msgid "Attachment" +msgstr "Вложение" + +#: templates/dcim/virtualchassis.html:86 +msgid "Add Member" +msgstr "Добавить участника" + +#: templates/dcim/virtualchassis_add.html:18 +msgid "Member Devices" +msgstr "Устройства для участников" + +#: templates/dcim/virtualchassis_add_member.html:6 +#, python-format +msgid "Add New Member to Virtual Chassis %(virtual_chassis)s" +msgstr "Добавить нового участника в виртуальное шасси %(virtual_chassis)s" + +#: templates/dcim/virtualchassis_add_member.html:17 +msgid "Add New Member" +msgstr "Добавить нового участника" + +#: templates/dcim/virtualchassis_add_member.html:25 +msgid "Add Another" +msgstr "Добавить еще" + +#: templates/dcim/virtualchassis_edit.html:7 +#, python-format +msgid "Editing Virtual Chassis %(name)s" +msgstr "Редактирование виртуального корпуса %(name)s" + +#: templates/dcim/virtualchassis_edit.html:54 +msgid "Rack/Unit" +msgstr "Стойка/блок" + +#: templates/dcim/virtualchassis_remove_member.html:5 +msgid "Remove Virtual Chassis Member" +msgstr "Удалить элемент виртуального шасси" + +#: templates/dcim/virtualchassis_remove_member.html:9 +#, python-format +msgid "" +"Are you sure you want to remove %(device)s from virtual " +"chassis %(name)s?" +msgstr "" +"Вы действительно хотите удалить %(device)s из виртуального " +"шасси %(name)s?" + +#: templates/dcim/virtualdevicecontext.html:29 templates/vpn/l2vpn.html:19 +msgid "Identifier" +msgstr "Идентификатор" + +#: templates/exceptions/import_error.html:6 +msgid "" +"A module import error occurred during this request. Common causes include " +"the following:" +msgstr "" +"Во время этого запроса произошла ошибка импорта модуля. К распространенным " +"причинам относятся следующие:" + +#: templates/exceptions/import_error.html:10 +msgid "Missing required packages" +msgstr "Отсутствуют необходимые пакеты" + +#: templates/exceptions/import_error.html:11 +msgid "" +"This installation of NetBox might be missing one or more required Python " +"packages. These packages are listed in requirements.txt and " +"local_requirements.txt, and are normally installed as part of " +"the installation or upgrade process. To verify installed packages, run " +"pip freeze from the console and compare the output to the list " +"of required packages." +msgstr "" +"В этой установке NetBox может отсутствовать один или несколько необходимых " +"пакетов Python. Эти пакеты перечислены в requirements.txt а " +"также local_requirements.txt, и обычно устанавливаются в " +"процессе установки или обновления. Чтобы проверить установленные пакеты, " +"запустите замораживание губ из консоли и сравните выходные " +"данные со списком необходимых пакетов." + +#: templates/exceptions/import_error.html:20 +msgid "WSGI service not restarted after upgrade" +msgstr "Служба WSGI не перезапущена после обновления" + +#: templates/exceptions/import_error.html:21 +msgid "" +"If this installation has recently been upgraded, check that the WSGI service" +" (e.g. gunicorn or uWSGI) has been restarted. This ensures that the new code" +" is running." +msgstr "" +"Если эта установка была недавно обновлена, убедитесь, что служба WSGI " +"(например, gunicorn или uWSGI) перезапущена. Это гарантирует, что новый код " +"работает." + +#: templates/exceptions/permission_error.html:6 +msgid "" +"A file permission error was detected while processing this request. Common " +"causes include the following:" +msgstr "" +"При обработке этого запроса была обнаружена ошибка разрешения на доступ к " +"файлу. К распространенным причинам относятся следующие:" + +#: templates/exceptions/permission_error.html:10 +msgid "Insufficient write permission to the media root" +msgstr "Недостаточное разрешение на запись в корень носителя" + +#: templates/exceptions/permission_error.html:11 +#, python-format +msgid "" +"The configured media root is %(media_root)s. Ensure that the " +"user NetBox runs as has access to write files to all locations within this " +"path." +msgstr "" +"Настроенный корень носителя %(media_root)s. Убедитесь, что " +"пользователь NetBox, запущенный от имени пользователя, имеет доступ к записи" +" файлов во все места на этом пути." + +#: templates/exceptions/programming_error.html:6 +msgid "" +"A database programming error was detected while processing this request. " +"Common causes include the following:" +msgstr "" +"При обработке этого запроса была обнаружена ошибка программирования базы " +"данных. К распространенным причинам относятся следующие:" + +#: templates/exceptions/programming_error.html:10 +msgid "Database migrations missing" +msgstr "Отсутствует миграция баз данных" + +#: templates/exceptions/programming_error.html:11 +msgid "" +"When upgrading to a new NetBox release, the upgrade script must be run to " +"apply any new database migrations. You can run migrations manually by " +"executing python3 manage.py migrate from the command line." +msgstr "" +"При обновлении до новой версии NetBox необходимо запустить сценарий " +"обновления, чтобы применить любые новые миграции баз данных. Перенос можно " +"запустить вручную, выполнив Миграция manage.py на python3 из " +"командной строки." + +#: templates/exceptions/programming_error.html:18 +msgid "Unsupported PostgreSQL version" +msgstr "Неподдерживаемая версия PostgreSQL" + +#: templates/exceptions/programming_error.html:19 +msgid "" +"Ensure that PostgreSQL version 12 or later is in use. You can check this by " +"connecting to the database using NetBox's credentials and issuing a query " +"for SELECT VERSION()." +msgstr "" +"Убедитесь, что используется PostgreSQL версии 12 или более поздней. Вы " +"можете проверить это, подключившись к базе данных NetBox, и отправив запрос " +"на ВЫБЕРИТЕ ВЕРСИЮ ()." + +#: templates/extras/admin/plugins_list.html:4 +#: templates/extras/admin/plugins_list.html:9 +#: templates/extras/admin/plugins_list.html:13 +msgid "Installed Plugins" +msgstr "Установленные плагины" + +#: templates/extras/admin/plugins_list.html:23 +msgid "Package Name" +msgstr "Имя пакета" + +#: templates/extras/admin/plugins_list.html:24 +msgid "Author" +msgstr "Автор" + +#: templates/extras/admin/plugins_list.html:25 +msgid "Author Email" +msgstr "Электронная почта автора" + +#: templates/extras/admin/plugins_list.html:27 +#: templates/vpn/ipsecprofile.html:47 vpn/forms/bulk_edit.py:140 +#: vpn/forms/bulk_import.py:171 vpn/tables/crypto.py:61 +msgid "Version" +msgstr "Версия" + +#: templates/extras/configcontext.html:46 +#: templates/extras/configtemplate.html:38 +#: templates/extras/exporttemplate.html:57 +msgid "The data file associated with this object has been deleted" +msgstr "Файл данных, связанный с этим объектом, был удален" + +#: templates/extras/configcontext.html:55 +#: templates/extras/configtemplate.html:47 +#: templates/extras/exporttemplate.html:66 +msgid "Data Synced" +msgstr "Синхронизация данных" + +#: templates/extras/configcontext_list.html:7 +#: templates/extras/configtemplate_list.html:7 +#: templates/extras/exporttemplate_list.html:7 +msgid "Sync Data" +msgstr "Синхронизация данных" + +#: templates/extras/configtemplate.html:58 +msgid "Environment Parameters" +msgstr "Параметры окружающей среды" + +#: templates/extras/configtemplate.html:69 +#: templates/extras/exporttemplate.html:88 +msgid "Template" +msgstr "Шаблон" + +#: templates/extras/customfield.html:31 templates/extras/customlink.html:22 +msgid "Group Name" +msgstr "Название группы" + +#: templates/extras/customfield.html:43 +msgid "Cloneable" +msgstr "Клонируемый" + +#: templates/extras/customfield.html:53 +msgid "Default Value" +msgstr "Значение по умолчанию" + +#: templates/extras/customfield.html:64 +msgid "Search Weight" +msgstr "Вес поиска" + +#: templates/extras/customfield.html:74 +msgid "Filter Logic" +msgstr "Логика фильтрации" + +#: templates/extras/customfield.html:78 +msgid "Display Weight" +msgstr "Вес дисплея" + +#: templates/extras/customfield.html:82 +msgid "UI Visible" +msgstr "Видимый пользовательский интерфейс" + +#: templates/extras/customfield.html:86 +msgid "UI Editable" +msgstr "Редактируемый пользовательский интерфейс" + +#: templates/extras/customfield.html:108 +msgid "Validation Rules" +msgstr "Правила валидации" + +#: templates/extras/customfield.html:112 +msgid "Minimum Value" +msgstr "Минимальное значение" + +#: templates/extras/customfield.html:116 +msgid "Maximum Value" +msgstr "Максимальное значение" + +#: templates/extras/customfield.html:120 +msgid "Regular Expression" +msgstr "Регулярное выражение" + +#: templates/extras/customlink.html:30 +msgid "Button Class" +msgstr "Класс кнопок" + +#: templates/extras/customlink.html:41 templates/extras/exporttemplate.html:73 +#: templates/extras/savedfilter.html:41 +msgid "Assigned Models" +msgstr "Назначенные модели" + +#: templates/extras/customlink.html:57 +msgid "Link Text" +msgstr "Текст ссылки" + +#: templates/extras/customlink.html:65 +msgid "Link URL" +msgstr "URL-адрес ссылки" + +#: templates/extras/dashboard/reset.html:4 templates/home.html:63 +msgid "Reset Dashboard" +msgstr "Сбросить панель управления" + +#: templates/extras/dashboard/reset.html:8 +msgid "" +"This will remove all configured widgets and restore the " +"default dashboard configuration." +msgstr "" +"Это удалит все настроили виджеты и восстановите " +"конфигурацию панели управления по умолчанию." + +#: templates/extras/dashboard/reset.html:13 +msgid "" +"This change affects only your dashboard, and will not impact other " +"users." +msgstr "" +"Это изменение затрагивает только ваш панель управления и не повлияет " +"на других пользователей." + +#: templates/extras/dashboard/widget_add.html:7 +msgid "Add a Widget" +msgstr "Добавить виджет" + +#: templates/extras/dashboard/widgets/bookmarks.html:14 +msgid "No bookmarks have been added yet." +msgstr "Пока не добавлено ни одной закладки." + +#: templates/extras/dashboard/widgets/objectcounts.html:15 +msgid "No permission" +msgstr "Нет разрешения" + +#: templates/extras/dashboard/widgets/objectlist.html:6 +msgid "No permission to view this content" +msgstr "Нет разрешения на просмотр этого контента" + +#: templates/extras/dashboard/widgets/objectlist.html:10 +msgid "Unable to load content. Invalid view name" +msgstr "Невозможно загрузить содержимое. Неверное имя представления" + +#: templates/extras/dashboard/widgets/rssfeed.html:12 +msgid "No content found" +msgstr "Контент не найден" + +#: templates/extras/dashboard/widgets/rssfeed.html:18 +msgid "There was a problem fetching the RSS feed" +msgstr "Возникла проблема при загрузке RSS-канала" + +#: templates/extras/dashboard/widgets/rssfeed.html:21 +msgid "HTTP" +msgstr "HTTP" + +#: templates/extras/eventrule.html:63 +msgid "Job start" +msgstr "Начало работы" + +#: templates/extras/eventrule.html:67 +msgid "Job end" +msgstr "Завершение задания" + +#: templates/extras/exporttemplate.html:29 +msgid "MIME Type" +msgstr "Тип MIME" + +#: templates/extras/exporttemplate.html:33 +msgid "File Extension" +msgstr "Расширение файла" + +#: templates/extras/htmx/report_result.html:9 +#: templates/extras/htmx/script_result.html:10 +msgid "Scheduled for" +msgstr "Запланировано на" + +#: templates/extras/htmx/report_result.html:14 +#: templates/extras/htmx/script_result.html:15 +msgid "Duration" +msgstr "Продолжительность" + +#: templates/extras/htmx/report_result.html:20 +msgid "Report Methods" +msgstr "Методы отчета" + +#: templates/extras/htmx/report_result.html:38 +msgid "Report Results" +msgstr "Результаты отчета" + +#: templates/extras/htmx/report_result.html:44 +#: templates/extras/htmx/script_result.html:26 +msgid "Level" +msgstr "Уровень" + +#: templates/extras/htmx/report_result.html:46 +#: templates/extras/htmx/script_result.html:27 +msgid "Message" +msgstr "Послание" + +#: templates/extras/htmx/script_result.html:21 +msgid "Script Log" +msgstr "Журнал сценариев" + +#: templates/extras/htmx/script_result.html:25 +msgid "Line" +msgstr "Линия" + +#: templates/extras/htmx/script_result.html:38 +msgid "No log output" +msgstr "Нет вывода журнала" + +#: templates/extras/htmx/script_result.html:46 +msgid "Exec Time" +msgstr "Время работы" + +#: templates/extras/htmx/script_result.html:46 +msgctxt "Unit of time" +msgid "seconds" +msgstr "секунды" + +#: templates/extras/htmx/script_result.html:50 +msgid "Output" +msgstr "Вывод" + +#: templates/extras/inc/result_pending.html:4 +msgid "Loading" +msgstr "Загрузка" + +#: templates/extras/inc/result_pending.html:6 +msgid "Results pending" +msgstr "Результаты ожидаются" + +#: templates/extras/journalentry.html:16 +msgid "Journal Entry" +msgstr "Запись в журнале" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "Change log retention" +msgstr "Хранение журнала изменений" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "days" +msgstr "дни" + +#: templates/extras/object_changelog.html:15 +#: templates/extras/objectchange_list.html:9 +msgid "Indefinite" +msgstr "Бессрочно" + +#: templates/extras/object_configcontext.html:11 +msgid "Rendered Context" +msgstr "Отображаемый контекст" + +#: templates/extras/object_configcontext.html:22 +msgid "Local Context" +msgstr "Локальный контекст" + +#: templates/extras/object_configcontext.html:34 +msgid "The local config context overwrites all source contexts" +msgstr "Локальный контекст конфигурации перезаписывает все исходные контексты" + +#: templates/extras/object_configcontext.html:40 +msgid "Source Contexts" +msgstr "Исходные контексты" + +#: templates/extras/object_journal.html:18 +msgid "New Journal Entry" +msgstr "Новая запись в журнале" + +#: templates/extras/objectchange.html:29 +#: templates/users/objectpermission.html:45 +msgid "Change" +msgstr "Изменить" + +#: templates/extras/objectchange.html:84 +msgid "Difference" +msgstr "Разница" + +#: templates/extras/objectchange.html:87 +msgid "Previous" +msgstr "Предыдущее" + +#: templates/extras/objectchange.html:90 +msgid "Next" +msgstr "Следующий" + +#: templates/extras/objectchange.html:98 +msgid "Object Created" +msgstr "Объект создан" + +#: templates/extras/objectchange.html:100 +msgid "Object Deleted" +msgstr "Объект удален" + +#: templates/extras/objectchange.html:102 +msgid "No Changes" +msgstr "Без изменений" + +#: templates/extras/objectchange.html:117 +msgid "Pre-Change Data" +msgstr "Данные перед изменением" + +#: templates/extras/objectchange.html:126 +msgid "Warning: Comparing non-atomic change to previous change record" +msgstr "" +"Предупреждение: сравнение неатомарного изменения с предыдущей записью " +"изменений" + +#: templates/extras/objectchange.html:136 +msgid "Post-Change Data" +msgstr "Данные после изменений" + +#: templates/extras/objectchange.html:157 +#, python-format +msgid "See All %(count)s Changes" +msgstr "Показать все %(count)s Изменения" + +#: templates/extras/report.html:14 +msgid "This report is invalid and cannot be run." +msgstr "Этот отчет недействителен и не может быть запущен." + +#: templates/extras/report.html:23 templates/extras/report_list.html:88 +msgid "Run Again" +msgstr "Беги снова" + +#: templates/extras/report.html:25 templates/extras/report_list.html:90 +msgid "Run Report" +msgstr "Запустить отчет" + +#: templates/extras/report.html:36 +msgid "Last run" +msgstr "Последний забег" + +#: templates/extras/report/base.html:30 +msgid "Report" +msgstr "Отчет" + +#: templates/extras/report_list.html:48 templates/extras/script_list.html:54 +msgid "Last Run" +msgstr "Последний забег" + +#: templates/extras/report_list.html:70 templates/extras/script_list.html:77 +msgid "Never" +msgstr "Никогда" + +#: templates/extras/report_list.html:75 +msgid "Report has no test methods" +msgstr "В отчете нет методов тестирования" + +#: templates/extras/report_list.html:76 +msgid "Invalid" +msgstr "Недействительный" + +#: templates/extras/report_list.html:125 +msgid "No Reports Found" +msgstr "Отчеты не найдены" + +#: templates/extras/report_list.html:128 +#, python-format +msgid "" +"Get started by creating a report from " +"an uploaded file or data source." +msgstr "" +"Начните с создание отчета из " +"загруженного файла или источника данных." + +#: templates/extras/script.html:13 +msgid "You do not have permission to run scripts" +msgstr "У вас нет разрешения на запуск сценариев" + +#: templates/extras/script.html:37 +msgid "Run Script" +msgstr "Запустить скрипт" + +#: templates/extras/script_list.html:44 +#, python-format +msgid "" +"Script file at %(file_path)s could not be " +"loaded." +msgstr "" +"Файл сценария по адресу %(file_path)s не удалось" +" загрузить." + +#: templates/extras/script_list.html:91 +msgid "No Scripts Found" +msgstr "Сценарии не найдены" + +#: templates/extras/script_list.html:94 +#, python-format +msgid "" +"Get started by creating a script from " +"an uploaded file or data source." +msgstr "" +"Начните с создание сценария из " +"загруженного файла или источника данных." + +#: templates/extras/script_result.html:42 +msgid "Log" +msgstr "журнал" + +#: templates/extras/tag.html:35 +msgid "Tagged Items" +msgstr "Помеченные товары" + +#: templates/extras/tag.html:47 +msgid "Allowed Object Types" +msgstr "Разрешенные типы объектов" + +#: templates/extras/tag.html:56 +msgid "Any" +msgstr "Любое" + +#: templates/extras/tag.html:63 +msgid "Tagged Item Types" +msgstr "Типы товаров с тегами" + +#: templates/extras/tag.html:89 +msgid "Tagged Objects" +msgstr "Объекты с тегами" + +#: templates/extras/webhook.html:33 +msgid "HTTP Method" +msgstr "Метод HTTP" + +#: templates/extras/webhook.html:41 +msgid "HTTP Content Type" +msgstr "Тип содержимого HTTP" + +#: templates/extras/webhook.html:58 +msgid "SSL Verification" +msgstr "Проверка SSL" + +#: templates/extras/webhook.html:73 +msgid "Additional Headers" +msgstr "Дополнительные заголовки" + +#: templates/extras/webhook.html:85 +msgid "Body Template" +msgstr "Шаблон тела" + +#: templates/generic/bulk_add_component.html:15 +msgid "Bulk Creation" +msgstr "Массовое создание" + +#: templates/generic/bulk_add_component.html:20 +#: templates/generic/bulk_edit.html:28 +msgid "Selected Objects" +msgstr "Выбранные объекты" + +#: templates/generic/bulk_add_component.html:46 +msgid "to Add" +msgstr "добавить" + +#: templates/generic/bulk_delete.html:24 +msgid "Confirm Bulk Deletion" +msgstr "Подтвердить массовое удаление" + +#: templates/generic/bulk_delete.html:26 +msgctxt "Noun" +msgid "Warning" +msgstr "Предупреждение" + +#: templates/generic/bulk_delete.html:27 +#, python-format +msgid "" +"The following operation will delete %(count)s " +"%(type_plural)s. Please carefully review the objects to be deleted and " +"confirm below." +msgstr "" +"Следующая операция удалит %(count)s %(type_plural)s. " +"Пожалуйста, внимательно просмотрите объекты, которые необходимо удалить, и " +"подтвердите их ниже." + +#: templates/generic/bulk_edit.html:16 templates/generic/object_edit.html:17 +msgid "Editing" +msgstr "Редактирование" + +#: templates/generic/bulk_edit.html:23 +msgid "Bulk Edit" +msgstr "Массовое редактирование" + +#: templates/generic/bulk_edit.html:124 templates/generic/bulk_rename.html:42 +msgid "Apply" +msgstr "Подать заявку" + +#: templates/generic/bulk_import.html:14 +msgid "Bulk Import" +msgstr "Массовый импорт" + +#: templates/generic/bulk_import.html:20 +msgid "Direct Import" +msgstr "Прямой импорт" + +#: templates/generic/bulk_import.html:25 +msgid "Upload File" +msgstr "Загрузить файл" + +#: templates/generic/bulk_import.html:51 templates/generic/bulk_import.html:73 +#: templates/generic/bulk_import.html:95 +msgid "Submit" +msgstr "Отправить" + +#: templates/generic/bulk_import.html:110 +msgid "Field Options" +msgstr "Опции полей" + +#: templates/generic/bulk_import.html:117 +msgid "Accessor" +msgstr "Аксессор" + +#: templates/generic/bulk_import.html:154 +msgid "Import Value" +msgstr "Стоимость импорта" + +#: templates/generic/bulk_import.html:181 +msgid "Format: YYYY-MM-DD" +msgstr "Формат: ГГГГ-ММ-ДД" + +#: templates/generic/bulk_import.html:183 +msgid "Specify true or false" +msgstr "Укажите истину или ложь" + +#: templates/generic/bulk_import.html:195 +msgid "Required fields must be specified for all objects." +msgstr "" +"Обязательные поля должен должно быть указано для всех " +"объектов." + +#: templates/generic/bulk_import.html:201 +#, python-format +msgid "" +"Related objects may be referenced by any unique attribute. For example, " +"%(example)s would identify a VRF by its route distinguisher." +msgstr "" +"На связанные объекты можно ссылаться с помощью любого уникального атрибута. " +"Например, %(example)s будет идентифицировать VRF по " +"идентификатору маршрута." + +#: templates/generic/bulk_remove.html:13 +msgid "Confirm Bulk Removal" +msgstr "Подтвердите массовое удаление" + +#: templates/generic/bulk_remove.html:15 +#, python-format +msgid "" +"Warning: The following operation will remove %(count)s " +"%(obj_type_plural)s from %(parent_obj)s." +msgstr "" +"Предупреждение: Следующая операция приведет к удалению " +"%(count)s %(obj_type_plural)s из %(parent_obj)s." + +#: templates/generic/bulk_remove.html:21 +#, python-format +msgid "" +"Please carefully review the %(obj_type_plural)s to be removed and confirm " +"below." +msgstr "" +"Пожалуйста, внимательно ознакомьтесь с %(obj_type_plural)s должно быть " +"удалено и подтверждено ниже." + +#: templates/generic/bulk_remove.html:38 +#, python-format +msgid "Delete these %(count)s %(obj_type_plural)s" +msgstr "Удалите эти %(count)s %(obj_type_plural)s" + +#: templates/generic/bulk_rename.html:7 +msgid "Renaming" +msgstr "Переименование" + +#: templates/generic/bulk_rename.html:16 +msgid "Current Name" +msgstr "Текущее имя" + +#: templates/generic/bulk_rename.html:17 +msgid "New Name" +msgstr "Новое имя" + +#: templates/generic/bulk_rename.html:40 +#: utilities/templates/widgets/markdown_input.html:11 +msgid "Preview" +msgstr "Предварительный просмотр" + +#: templates/generic/confirmation_form.html:16 +msgid "Are you sure" +msgstr "Вы уверены" + +#: templates/generic/confirmation_form.html:19 +msgid "Confirm" +msgstr "Подтвердить" + +#: templates/generic/object.html:51 +msgid "ago" +msgstr "тому назад" + +#: templates/generic/object_children.html:27 +#: utilities/templates/buttons/bulk_edit.html:4 +msgid "Edit Selected" +msgstr "Изменить выбранное" + +#: templates/generic/object_children.html:41 +#: utilities/templates/buttons/bulk_delete.html:4 +msgid "Delete Selected" +msgstr "Удалить выбранное" + +#: templates/generic/object_edit.html:19 +#, python-format +msgid "Add a new %(object_type)s" +msgstr "Добавить новое %(object_type)s" + +#: templates/generic/object_edit.html:47 +msgid "View model documentation" +msgstr "Смотреть документацию по модели" + +#: templates/generic/object_edit.html:48 +msgid "Help" +msgstr "Помощь" + +#: templates/generic/object_edit.html:73 +msgid "Create & Add Another" +msgstr "Создайте и добавьте еще" + +#: templates/generic/object_list.html:48 templates/search.html:13 +msgid "Results" +msgstr "Результаты" + +#: templates/generic/object_list.html:54 +msgid "Filters" +msgstr "Фильтры" + +#: templates/generic/object_list.html:94 +#, python-format +msgid "" +"Select all %(count)s %(object_type_plural)s matching query" +msgstr "" +"Выберите все %(count)s %(object_type_plural)s " +"соответствующий запрос" + +#: templates/home.html:12 +msgid "New Release Available" +msgstr "Доступен новый релиз" + +#: templates/home.html:14 +msgid "is available" +msgstr "доступен" + +#: templates/home.html:17 +msgctxt "Document title" +msgid "Upgrade Instructions" +msgstr "Инструкции по обновлению" + +#: templates/home.html:37 +msgid "Unlock Dashboard" +msgstr "Разблокируйте панель управления" + +#: templates/home.html:46 +msgid "Lock Dashboard" +msgstr "Заблокировать панель управления" + +#: templates/home.html:57 +msgid "Add Widget" +msgstr "Добавить виджет" + +#: templates/home.html:60 +msgid "Save Layout" +msgstr "Сохранить макет" + +#: templates/htmx/delete_form.html:7 +msgid "Confirm Deletion" +msgstr "Подтвердить удаление" + +#: templates/htmx/delete_form.html:11 +#, python-format +msgid "" +"Are you sure you want to delete " +"%(object_type)s %(object)s?" +msgstr "" +"Вы уверены, что хотите удалить " +"%(object_type)s %(object)s?" + +#: templates/htmx/delete_form.html:17 +msgid "The following objects will be deleted as a result of this action." +msgstr "В результате этого действия следующие объекты будут удалены." + +#: templates/htmx/object_selector.html:5 +msgid "Select" +msgstr "Выберите" + +#: templates/inc/filter_list.html:50 +#: utilities/templates/helpers/table_config_form.html:39 +msgid "Reset" +msgstr "Сбросить" + +#: templates/inc/missing_prerequisites.html:7 +#, python-format +msgid "" +"Before you can add a %(model)s you must first create a " +"%(prerequisite_model)s." +msgstr "" +"Прежде чем вы сможете добавить %(model)s вы должны сначала создать " +"%(prerequisite_model)s." + +#: templates/inc/paginator.html:38 templates/inc/paginator_htmx.html:53 +msgid "Per Page" +msgstr "На страницу" + +#: templates/inc/paginator.html:49 templates/inc/paginator_htmx.html:69 +#, python-format +msgid "Showing %(start)s-%(end)s of %(total)s" +msgstr "показывая %(start)s-%(end)s из %(total)s" + +#: templates/inc/panels/image_attachments.html:10 +msgid "Attach an image" +msgstr "Прикрепите изображение" + +#: templates/inc/panels/related_objects.html:5 +msgid "Related Objects" +msgstr "Связанные объекты" + +#: templates/inc/panels/tags.html:11 +msgid "No tags assigned" +msgstr "Теги не назначены" + +#: templates/inc/profile_button.html:12 templates/inc/profile_button.html:62 +msgid "Dark Mode" +msgstr "Темный режим" + +#: templates/inc/profile_button.html:45 +msgid "Log Out" +msgstr "Выйти из системы" + +#: templates/inc/profile_button.html:53 +msgid "Log In" +msgstr "Войти" + +#: templates/inc/sync_warning.html:7 +msgid "Data is out of sync with upstream file" +msgstr "Данные не синхронизированы с вышестоящим файлом" + +#: templates/inc/table_controls_htmx.html:16 +#: templates/inc/table_controls_htmx.html:18 +msgid "Configure Table" +msgstr "Настроить таблицу" + +#: templates/ipam/aggregate.html:15 templates/ipam/ipaddress.html:17 +#: templates/ipam/iprange.html:16 templates/ipam/prefix.html:16 +msgid "Family" +msgstr "Семья" + +#: templates/ipam/aggregate.html:40 +msgid "Date Added" +msgstr "Дата добавления" + +#: templates/ipam/aggregate/prefixes.html:8 +#: templates/ipam/prefix/prefixes.html:8 templates/ipam/role.html:10 +msgid "Add Prefix" +msgstr "Добавить префикс" + +#: templates/ipam/asn.html:24 +msgid "AS Number" +msgstr "Номер AS" + +#: templates/ipam/fhrpgroup.html:55 +msgid "Authentication Type" +msgstr "Тип аутентификации" + +#: templates/ipam/fhrpgroup.html:59 +msgid "Authentication Key" +msgstr "Ключ аутентификации" + +#: templates/ipam/fhrpgroup.html:72 +msgid "Virtual IP Addresses" +msgstr "Виртуальные IP-адреса" + +#: templates/ipam/fhrpgroupassignment_edit.html:8 +msgid "FHRP Group Assignment" +msgstr "Групповое назначение FHRP" + +#: templates/ipam/inc/ipaddress_edit_header.html:19 +msgid "Assign IP" +msgstr "Назначить IP-адрес" + +#: templates/ipam/inc/ipaddress_edit_header.html:28 +msgid "Bulk Create" +msgstr "Массовое создание" + +#: templates/ipam/inc/panels/fhrp_groups.html:12 +msgid "Virtual IPs" +msgstr "Виртуальные IP-адреса" + +#: templates/ipam/inc/panels/fhrp_groups.html:52 +msgid "Create Group" +msgstr "Создать группу" + +#: templates/ipam/inc/panels/fhrp_groups.html:57 +msgid "Assign Group" +msgstr "Назначить группу" + +#: templates/ipam/inc/toggle_available.html:7 +msgid "Show Assigned" +msgstr "Показать назначенное" + +#: templates/ipam/inc/toggle_available.html:10 +msgid "Show Available" +msgstr "Показать доступные" + +#: templates/ipam/inc/toggle_available.html:13 +msgid "Show All" +msgstr "Показать все" + +#: templates/ipam/ipaddress.html:26 templates/ipam/iprange.html:48 +#: templates/ipam/prefix.html:25 +msgid "Global" +msgstr "Глобальный" + +#: templates/ipam/ipaddress.html:88 +msgid "NAT (outside)" +msgstr "NAT (снаружи)" + +#: templates/ipam/ipaddress_assign.html:8 +msgid "Assign an IP Address" +msgstr "Назначьте IP-адрес" + +#: templates/ipam/ipaddress_assign.html:23 +msgid "Select IP Address" +msgstr "Выберите IP-адрес" + +#: templates/ipam/ipaddress_assign.html:39 +msgid "Search Results" +msgstr "Результаты поиска" + +#: templates/ipam/ipaddress_bulk_add.html:6 +msgid "Bulk Add IP Addresses" +msgstr "Массовое добавление IP-адресов" + +#: templates/ipam/ipaddress_edit.html:35 +msgid "Interface Assignment" +msgstr "Назначение интерфейса" + +#: templates/ipam/ipaddress_edit.html:74 +msgid "NAT IP (Inside" +msgstr "NAT IP (внутренний)" + +#: templates/ipam/iprange.html:20 +msgid "Starting Address" +msgstr "Начальный адрес" + +#: templates/ipam/iprange.html:24 +msgid "Ending Address" +msgstr "Конечный адрес" + +#: templates/ipam/iprange.html:36 templates/ipam/prefix.html:104 +msgid "Marked fully utilized" +msgstr "Отмечено как полностью использованное" + +#: templates/ipam/prefix.html:112 +msgid "Child IPs" +msgstr "Детские IP-адреса" + +#: templates/ipam/prefix.html:120 +msgid "Available IPs" +msgstr "Доступные IP-адреса" + +#: templates/ipam/prefix.html:132 +msgid "First available IP" +msgstr "Первый доступный IP-адрес" + +#: templates/ipam/prefix.html:151 +msgid "Addressing Details" +msgstr "Детали адресации" + +#: templates/ipam/prefix.html:181 +msgid "Prefix Details" +msgstr "Детали префикса" + +#: templates/ipam/prefix.html:187 +msgid "Network Address" +msgstr "Сетевой адрес" + +#: templates/ipam/prefix.html:191 +msgid "Network Mask" +msgstr "Сетевая маска" + +#: templates/ipam/prefix.html:195 +msgid "Wildcard Mask" +msgstr "Маска подстановочных знаков" + +#: templates/ipam/prefix.html:199 +msgid "Broadcast Address" +msgstr "Адрес вещания" + +#: templates/ipam/prefix/ip_ranges.html:7 +msgid "Add IP Range" +msgstr "Добавить диапазон IP-адресов" + +#: templates/ipam/prefix_list.html:7 +msgid "Hide Depth Indicators" +msgstr "Скрыть индикаторы глубины" + +#: templates/ipam/prefix_list.html:11 +msgid "Max Depth" +msgstr "Максимальная глубина" + +#: templates/ipam/prefix_list.html:28 +msgid "Max Length" +msgstr "Максимальная длина" + +#: templates/ipam/rir.html:10 +msgid "Add Aggregate" +msgstr "Добавить агрегат" + +#: templates/ipam/routetarget.html:10 +msgid "Route Target" +msgstr "Цель маршрута" + +#: templates/ipam/routetarget.html:40 +msgid "Importing VRFs" +msgstr "Импорт VRF" + +#: templates/ipam/routetarget.html:49 +msgid "Exporting VRFs" +msgstr "Экспорт файлов VRF" + +#: templates/ipam/routetarget.html:60 +msgid "Importing L2VPNs" +msgstr "Импорт L2VPN" + +#: templates/ipam/routetarget.html:69 +msgid "Exporting L2VPNs" +msgstr "Экспорт L2VPN" + +#: templates/ipam/service.html:22 templates/ipam/service_create.html:8 +#: templates/ipam/service_edit.html:8 +msgid "Service" +msgstr "Услуга" + +#: templates/ipam/service_create.html:43 +msgid "From Template" +msgstr "Из шаблона" + +#: templates/ipam/service_create.html:48 +msgid "Custom" +msgstr "Обычай" + +#: templates/ipam/service_edit.html:37 +msgid "Port(s)" +msgstr "Порт (ы)" + +#: templates/ipam/vlan.html:95 +msgid "Add a Prefix" +msgstr "Добавить префикс" + +#: templates/ipam/vlangroup.html:18 +msgid "Add VLAN" +msgstr "Добавить VLAN" + +#: templates/ipam/vlangroup.html:43 +msgid "Permitted VIDs" +msgstr "Разрешенные видео" + +#: templates/ipam/vrf.html:19 +msgid "Route Distinguisher" +msgstr "Дифференцировщик маршрута" + +#: templates/ipam/vrf.html:32 +msgid "Unique IP Space" +msgstr "Уникальное IP-пространство" + +#: templates/login.html:20 +#: utilities/templates/form_helpers/render_errors.html:7 +msgid "Errors" +msgstr "Ошибки" + +#: templates/login.html:48 +msgid "Sign In" +msgstr "Войти" + +#: templates/login.html:54 +msgid "Or use a single sign-on (SSO) provider" +msgstr "Или воспользуйтесь услугой единого входа (SSO)" + +#: templates/login.html:68 +msgid "Toggle Color Mode" +msgstr "Переключить цветовой режим" + +#: templates/media_failure.html:7 +msgid "Static Media Failure - NetBox" +msgstr "Сбой статического носителя - NetBox" + +#: templates/media_failure.html:21 +msgid "Static Media Failure" +msgstr "Сбой статического носителя" + +#: templates/media_failure.html:23 +msgid "The following static media file failed to load" +msgstr "Не удалось загрузить следующий статический медиафайл" + +#: templates/media_failure.html:26 +msgid "Check the following" +msgstr "Проверьте следующее" + +#: templates/media_failure.html:29 +msgid "" +"manage.py collectstatic was run during the most recent upgrade." +" This installs the most recent iteration of each static file into the static" +" root path." +msgstr "" +"manage.py собирает статические данные был запущен во время " +"последнего обновления. При этом последняя итерация каждого статического " +"файла устанавливается в статический корневой путь." + +#: templates/media_failure.html:35 +#, python-format +msgid "" +"The HTTP service (e.g. nginx or Apache) is configured to serve files from " +"the STATIC_ROOT path. Refer to the " +"installation documentation for further guidance." +msgstr "" +"Служба HTTP (например, nginx или Apache) настроена на обслуживание файлов из" +" СТАТИЧЕСКИЙ КОРЕНЬ путь. Обратитесь к документация по установке для получения " +"дополнительных рекомендаций." + +#: templates/media_failure.html:47 +#, python-format +msgid "" +"The file %(filename)s exists in the static root directory and " +"is readable by the HTTP server." +msgstr "" +"Файл %(filename)s существует в статическом корневом каталоге и " +"доступен для чтения HTTP-сервером." + +#: templates/media_failure.html:55 +#, python-format +msgid "Click here to attempt loading NetBox again." +msgstr "" +"Нажмите здесь чтобы снова попытаться загрузить " +"NetBox." + +#: templates/tenancy/contact.html:18 tenancy/filtersets.py:135 +#: tenancy/forms/bulk_edit.py:136 tenancy/forms/filtersets.py:101 +#: tenancy/forms/forms.py:56 tenancy/forms/model_forms.py:109 +#: tenancy/forms/model_forms.py:132 tenancy/tables/contacts.py:98 +msgid "Contact" +msgstr "Связаться" + +#: templates/tenancy/contact.html:30 tenancy/forms/bulk_edit.py:98 +msgid "Title" +msgstr "Заголовок" + +#: templates/tenancy/contact.html:34 tenancy/forms/bulk_edit.py:103 +#: tenancy/tables/contacts.py:64 +msgid "Phone" +msgstr "Телефон" + +#: templates/tenancy/contact.html:86 tenancy/tables/contacts.py:73 +msgid "Assignments" +msgstr "Задания" + +#: templates/tenancy/contactassignment_edit.html:12 +msgid "Contact Assignment" +msgstr "Назначение контакта" + +#: templates/tenancy/contactgroup.html:19 tenancy/forms/forms.py:66 +#: tenancy/forms/model_forms.py:76 +msgid "Contact Group" +msgstr "Контактная группа" + +#: templates/tenancy/contactgroup.html:57 +msgid "Add Contact Group" +msgstr "Добавить контактную группу" + +#: templates/tenancy/contactrole.html:15 tenancy/filtersets.py:140 +#: tenancy/forms/forms.py:61 tenancy/forms/model_forms.py:90 +msgid "Contact Role" +msgstr "Роль контакта" + +#: templates/tenancy/object_contacts.html:9 +msgid "Add a contact" +msgstr "Добавить контакт" + +#: templates/tenancy/tenantgroup.html:17 +msgid "Add Tenant" +msgstr "Добавить арендатора" + +#: templates/tenancy/tenantgroup.html:27 tenancy/forms/model_forms.py:31 +#: tenancy/tables/columns.py:51 tenancy/tables/columns.py:61 +msgid "Tenant Group" +msgstr "Группа арендаторов" + +#: templates/tenancy/tenantgroup.html:66 +msgid "Add Tenant Group" +msgstr "Добавить группу арендаторов" + +#: templates/users/group.html:37 templates/users/user.html:61 +msgid "Assigned Permissions" +msgstr "Назначенные разрешения" + +#: templates/users/objectpermission.html:6 +#: templates/users/objectpermission.html:14 users/forms/filtersets.py:67 +msgid "Permission" +msgstr "Разрешение" + +#: templates/users/objectpermission.html:33 users/forms/filtersets.py:68 +#: users/forms/model_forms.py:321 +msgid "Actions" +msgstr "Действия" + +#: templates/users/objectpermission.html:37 +msgid "View" +msgstr "Вид" + +#: templates/users/objectpermission.html:56 users/forms/model_forms.py:324 +msgid "Constraints" +msgstr "Ограничения" + +#: templates/users/objectpermission.html:76 +msgid "Assigned Users" +msgstr "Назначенные пользователи" + +#: templates/users/user.html:38 +msgid "Staff" +msgstr "Персонал" + +#: templates/virtualization/cluster.html:56 +msgid "Allocated Resources" +msgstr "Выделенные ресурсы" + +#: templates/virtualization/cluster.html:60 +#: templates/virtualization/virtualmachine.html:128 +msgid "Virtual CPUs" +msgstr "Виртуальные процессоры" + +#: templates/virtualization/cluster.html:64 +#: templates/virtualization/virtualmachine.html:132 +msgid "Memory" +msgstr "Память" + +#: templates/virtualization/cluster.html:74 +#: templates/virtualization/virtualmachine.html:143 +msgid "Disk Space" +msgstr "Дисковое пространство" + +#: templates/virtualization/cluster.html:77 +#: templates/virtualization/virtualdisk.html:33 +#: templates/virtualization/virtualmachine.html:147 +msgctxt "Abbreviation for gigabyte" +msgid "GB" +msgstr "ГИГАБАЙТ" + +#: templates/virtualization/cluster/base.html:18 +msgid "Add Virtual Machine" +msgstr "Добавить виртуальную машину" + +#: templates/virtualization/cluster/base.html:24 +msgid "Assign Device" +msgstr "Назначить устройство" + +#: templates/virtualization/cluster/devices.html:10 +msgid "Remove Selected" +msgstr "Удалить выбранное" + +#: templates/virtualization/cluster_add_devices.html:9 +#, python-format +msgid "Add Device to Cluster %(cluster)s" +msgstr "Добавить устройство в кластер %(cluster)s" + +#: templates/virtualization/cluster_add_devices.html:23 +msgid "Device Selection" +msgstr "Выбор устройства" + +#: templates/virtualization/cluster_add_devices.html:31 +msgid "Add Devices" +msgstr "Добавить устройства" + +#: templates/virtualization/clustergroup.html:10 +#: templates/virtualization/clustertype.html:10 +msgid "Add Cluster" +msgstr "Добавить кластер" + +#: templates/virtualization/clustergroup.html:20 +#: virtualization/forms/model_forms.py:51 +msgid "Cluster Group" +msgstr "Кластерная группа" + +#: templates/virtualization/clustertype.html:20 +#: templates/virtualization/virtualmachine.html:111 +#: virtualization/forms/model_forms.py:35 +msgid "Cluster Type" +msgstr "Тип кластера" + +#: templates/virtualization/virtualdisk.html:18 +msgid "Virtual Disk" +msgstr "Виртуальный диск" + +#: templates/virtualization/virtualmachine.html:124 +#: virtualization/forms/bulk_edit.py:189 +#: virtualization/forms/model_forms.py:227 +msgid "Resources" +msgstr "Ресурсы" + +#: templates/virtualization/virtualmachine.html:185 +msgid "Add Virtual Disk" +msgstr "Добавить виртуальный диск" + +#: templates/vpn/ikepolicy.html:10 templates/vpn/ipsecprofile.html:35 +#: vpn/tables/crypto.py:166 +msgid "IKE Policy" +msgstr "Политика IKE" + +#: templates/vpn/ikepolicy.html:22 +msgid "IKE Version" +msgstr "Версия IKE" + +#: templates/vpn/ikepolicy.html:30 +msgid "Pre-Shared Key" +msgstr "Предварительный общий ключ" + +#: templates/vpn/ikepolicy.html:34 +#: templates/wireless/inc/authentication_attrs.html:21 +msgid "Show Secret" +msgstr "Показать секрет" + +#: templates/vpn/ikepolicy.html:59 templates/vpn/ipsecpolicy.html:47 +#: templates/vpn/ipsecprofile.html:55 templates/vpn/ipsecprofile.html:82 +#: vpn/forms/model_forms.py:310 vpn/forms/model_forms.py:345 +#: vpn/tables/crypto.py:68 vpn/tables/crypto.py:134 +msgid "Proposals" +msgstr "Предложения" + +#: templates/vpn/ikeproposal.html:10 +msgid "IKE Proposal" +msgstr "Предложение IKE" + +#: templates/vpn/ikeproposal.html:22 vpn/forms/bulk_edit.py:96 +#: vpn/forms/bulk_import.py:145 vpn/forms/filtersets.py:98 +msgid "Authentication method" +msgstr "Метод аутентификации" + +#: templates/vpn/ikeproposal.html:26 templates/vpn/ipsecproposal.html:22 +#: vpn/forms/bulk_edit.py:101 vpn/forms/bulk_edit.py:173 +#: vpn/forms/bulk_import.py:149 vpn/forms/bulk_import.py:193 +#: vpn/forms/filtersets.py:103 vpn/forms/filtersets.py:151 +msgid "Encryption algorithm" +msgstr "Алгоритм шифрования" + +#: templates/vpn/ikeproposal.html:30 templates/vpn/ipsecproposal.html:26 +#: vpn/forms/bulk_edit.py:106 vpn/forms/bulk_edit.py:178 +#: vpn/forms/bulk_import.py:153 vpn/forms/bulk_import.py:197 +#: vpn/forms/filtersets.py:108 vpn/forms/filtersets.py:156 +msgid "Authentication algorithm" +msgstr "Алгоритм аутентификации" + +#: templates/vpn/ikeproposal.html:34 +msgid "DH group" +msgstr "Группа DH" + +#: templates/vpn/ikeproposal.html:38 templates/vpn/ipsecproposal.html:30 +#: vpn/forms/bulk_edit.py:183 vpn/models/crypto.py:134 +msgid "SA lifetime (seconds)" +msgstr "Срок службы SA (в секундах)" + +#: templates/vpn/ipsecpolicy.html:10 templates/vpn/ipsecprofile.html:70 +#: vpn/tables/crypto.py:170 +msgid "IPSec Policy" +msgstr "Политика IPsec" + +#: templates/vpn/ipsecpolicy.html:22 vpn/forms/bulk_edit.py:211 +#: vpn/models/crypto.py:181 +msgid "PFS group" +msgstr "Группа PFS" + +#: templates/vpn/ipsecprofile.html:10 vpn/forms/model_forms.py:53 +msgid "IPSec Profile" +msgstr "Профиль IPsec" + +#: templates/vpn/ipsecprofile.html:94 vpn/tables/crypto.py:137 +msgid "PFS Group" +msgstr "Группа компаний PFS" + +#: templates/vpn/ipsecproposal.html:10 +msgid "IPSec Proposal" +msgstr "Предложение IPsec" + +#: templates/vpn/ipsecproposal.html:34 vpn/forms/bulk_edit.py:187 +#: vpn/models/crypto.py:140 +msgid "SA lifetime (KB)" +msgstr "Срок службы (КБ)" + +#: templates/vpn/l2vpn.html:11 templates/vpn/l2vpntermination.html:10 +msgid "L2VPN Attributes" +msgstr "Атрибуты L2VPN" + +#: templates/vpn/l2vpn.html:65 templates/vpn/tunnel.html:81 +msgid "Add a Termination" +msgstr "Добавить увольнение" + +#: templates/vpn/l2vpntermination_edit.html:9 +msgid "L2VPN Termination" +msgstr "Прекращение действия L2VPN" + +#: templates/vpn/tunnel.html:9 +msgid "Add Termination" +msgstr "Добавить прекращение" + +#: templates/vpn/tunnel.html:38 vpn/forms/bulk_edit.py:48 +#: vpn/forms/bulk_import.py:48 vpn/forms/filtersets.py:56 +msgid "Encapsulation" +msgstr "Инкапсуляция" + +#: templates/vpn/tunnel.html:42 vpn/forms/bulk_edit.py:54 +#: vpn/forms/bulk_import.py:53 vpn/forms/filtersets.py:63 +#: vpn/models/crypto.py:238 vpn/tables/tunnels.py:47 +msgid "IPSec profile" +msgstr "Профиль IPsec" + +#: templates/vpn/tunnel.html:46 vpn/forms/bulk_edit.py:68 +#: vpn/forms/filtersets.py:67 +msgid "Tunnel ID" +msgstr "Идентификатор туннеля" + +#: templates/vpn/tunnelgroup.html:14 +msgid "Add Tunnel" +msgstr "Добавить туннель" + +#: templates/vpn/tunnelgroup.html:24 vpn/forms/model_forms.py:35 +#: vpn/forms/model_forms.py:48 +msgid "Tunnel Group" +msgstr "Туннельная группа" + +#: templates/vpn/tunneltermination.html:10 +msgid "Tunnel Termination" +msgstr "Прекращение туннеля" + +#: templates/vpn/tunneltermination.html:36 vpn/forms/bulk_import.py:107 +#: vpn/forms/model_forms.py:101 vpn/forms/model_forms.py:137 +#: vpn/forms/model_forms.py:248 vpn/tables/tunnels.py:97 +msgid "Outside IP" +msgstr "Внешний IP-адрес" + +#: templates/vpn/tunneltermination.html:53 +msgid "Peer Terminations" +msgstr "Прекращение контрактов со стороны коллег" + +#: templates/wireless/inc/authentication_attrs.html:13 +msgid "Cipher" +msgstr "Шифр" + +#: templates/wireless/inc/authentication_attrs.html:17 +msgid "PSK" +msgstr "ПСК" + +#: templates/wireless/inc/wirelesslink_interface.html:35 +#: templates/wireless/inc/wirelesslink_interface.html:45 +msgctxt "Abbreviation for megahertz" +msgid "MHz" +msgstr "МГц" + +#: templates/wireless/wirelesslan.html:11 wireless/forms/model_forms.py:54 +msgid "Wireless LAN" +msgstr "Беспроводная сеть" + +#: templates/wireless/wirelesslan.html:59 +msgid "Attached Interfaces" +msgstr "Подключенные интерфейсы" + +#: templates/wireless/wirelesslangroup.html:17 +msgid "Add Wireless LAN" +msgstr "Добавить беспроводную локальную сеть" + +#: templates/wireless/wirelesslangroup.html:26 +#: wireless/forms/model_forms.py:27 +msgid "Wireless LAN Group" +msgstr "Группа беспроводных локальных сетей" + +#: templates/wireless/wirelesslangroup.html:64 +msgid "Add Wireless LAN Group" +msgstr "Добавить группу беспроводной локальной сети" + +#: templates/wireless/wirelesslink.html:16 +msgid "Link Properties" +msgstr "Свойства ссылки" + +#: tenancy/choices.py:19 +msgid "Tertiary" +msgstr "Высшее образование" + +#: tenancy/choices.py:20 +msgid "Inactive" +msgstr "Неактивный" + +#: tenancy/filtersets.py:29 tenancy/filtersets.py:55 tenancy/filtersets.py:97 +msgid "Contact group (ID)" +msgstr "Контактная группа (ID)" + +#: tenancy/filtersets.py:35 tenancy/filtersets.py:62 tenancy/filtersets.py:104 +msgid "Contact group (slug)" +msgstr "Контактная группа (slug)" + +#: tenancy/filtersets.py:91 +msgid "Contact (ID)" +msgstr "Контактное лицо (ID)" + +#: tenancy/filtersets.py:108 +msgid "Contact role (ID)" +msgstr "Роль контакта (ID)" + +#: tenancy/filtersets.py:114 +msgid "Contact role (slug)" +msgstr "Контактная роль (пуля)" + +#: tenancy/filtersets.py:146 +msgid "Contact group" +msgstr "Контактная группа" + +#: tenancy/filtersets.py:157 tenancy/filtersets.py:176 +msgid "Tenant group (ID)" +msgstr "Группа арендаторов (ID)" + +#: tenancy/filtersets.py:209 +msgid "Tenant Group (ID)" +msgstr "Группа арендаторов (ID)" + +#: tenancy/filtersets.py:216 +msgid "Tenant Group (slug)" +msgstr "Группа арендаторов (slug)" + +#: tenancy/forms/bulk_edit.py:65 +msgid "Desciption" +msgstr "Описание" + +#: tenancy/forms/bulk_import.py:101 +msgid "Assigned contact" +msgstr "Назначенный контакт" + +#: tenancy/models/contacts.py:32 +msgid "contact group" +msgstr "контактная группа" + +#: tenancy/models/contacts.py:33 +msgid "contact groups" +msgstr "контактные группы" + +#: tenancy/models/contacts.py:48 +msgid "contact role" +msgstr "роль контакта" + +#: tenancy/models/contacts.py:49 +msgid "contact roles" +msgstr "контактные роли" + +#: tenancy/models/contacts.py:68 +msgid "title" +msgstr "титул" + +#: tenancy/models/contacts.py:73 +msgid "phone" +msgstr "телефон" + +#: tenancy/models/contacts.py:78 +msgid "email" +msgstr "письмо" + +#: tenancy/models/contacts.py:87 +msgid "link" +msgstr "ссылка на сайт" + +#: tenancy/models/contacts.py:103 +msgid "contact" +msgstr "контакт" + +#: tenancy/models/contacts.py:104 +msgid "contacts" +msgstr "контакты" + +#: tenancy/models/contacts.py:153 +msgid "contact assignment" +msgstr "назначение контакта" + +#: tenancy/models/contacts.py:154 +msgid "contact assignments" +msgstr "назначение контактов" + +#: tenancy/models/contacts.py:170 +#, python-brace-format +msgid "Contacts cannot be assigned to this object type ({type})." +msgstr "Контакты не могут быть присвоены этому типу объекта ({type})." + +#: tenancy/models/tenants.py:32 +msgid "tenant group" +msgstr "группа арендаторов" + +#: tenancy/models/tenants.py:33 +msgid "tenant groups" +msgstr "группы арендаторов" + +#: tenancy/models/tenants.py:70 +msgid "Tenant name must be unique per group." +msgstr "Имя арендатора должно быть уникальным для каждой группы." + +#: tenancy/models/tenants.py:80 +msgid "Tenant slug must be unique per group." +msgstr "Заголовок арендатора должен быть уникальным для каждой группы." + +#: tenancy/models/tenants.py:88 +msgid "tenant" +msgstr "арендатор" + +#: tenancy/models/tenants.py:89 +msgid "tenants" +msgstr "арендаторы" + +#: tenancy/tables/contacts.py:112 +msgid "Contact Title" +msgstr "Название контактного лица" + +#: tenancy/tables/contacts.py:116 +msgid "Contact Phone" +msgstr "Контактный телефон" + +#: tenancy/tables/contacts.py:120 +msgid "Contact Email" +msgstr "Контактный адрес электронной почты" + +#: tenancy/tables/contacts.py:124 +msgid "Contact Address" +msgstr "Контактный адрес" + +#: tenancy/tables/contacts.py:128 +msgid "Contact Link" +msgstr "Контактная ссылка" + +#: tenancy/tables/contacts.py:132 +msgid "Contact Description" +msgstr "Описание контакта" + +#: users/filtersets.py:48 users/filtersets.py:151 +msgid "Group (name)" +msgstr "Группа (название)" + +#: users/forms/bulk_edit.py:24 +msgid "First name" +msgstr "Имя" + +#: users/forms/bulk_edit.py:29 +msgid "Last name" +msgstr "Фамилия" + +#: users/forms/bulk_edit.py:41 +msgid "Staff status" +msgstr "Статус персонала" + +#: users/forms/bulk_edit.py:46 +msgid "Superuser status" +msgstr "Статус суперпользователя" + +#: users/forms/bulk_import.py:43 +msgid "If no key is provided, one will be generated automatically." +msgstr "Если ключ не указан, он будет сгенерирован автоматически." + +#: users/forms/filtersets.py:52 users/tables.py:42 +msgid "Is Staff" +msgstr "Является ли персонал" + +#: users/forms/filtersets.py:59 users/tables.py:45 +msgid "Is Superuser" +msgstr "Является суперпользователем" + +#: users/forms/filtersets.py:92 users/tables.py:89 +msgid "Can View" +msgstr "Может просматривать" + +#: users/forms/filtersets.py:99 users/tables.py:92 +msgid "Can Add" +msgstr "Можно добавить" + +#: users/forms/filtersets.py:106 users/tables.py:95 +msgid "Can Change" +msgstr "Может измениться" + +#: users/forms/filtersets.py:113 users/tables.py:98 +msgid "Can Delete" +msgstr "Можно удалить" + +#: users/forms/model_forms.py:58 +msgid "User Interface" +msgstr "Пользовательский интерфейс" + +#: users/forms/model_forms.py:115 +msgid "" +"Keys must be at least 40 characters in length. Be sure to record " +"your key prior to submitting this form, as it may no longer be " +"accessible once the token has been created." +msgstr "" +"Длина ключей должна быть не менее 40 символов. Обязательно запишите " +"свой ключ до отправки этой формы, так как после создания токена она" +" может быть недоступна." + +#: users/forms/model_forms.py:127 +msgid "" +"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" +" no restrictions. Example: " +"10.1.1.0/24,192.168.10.16/32,2001:db8:1::/64" +msgstr "" +"Разрешенные сети IPv4/IPv6, из которых можно использовать токен. Оставьте " +"поле пустым, чтобы не было ограничений. Пример: 10.1.1.0/24, " +"192.168.10.16/32, 2001 год: дБ 8:1:/64" + +#: users/forms/model_forms.py:176 +msgid "Confirm password" +msgstr "Подтвердите пароль" + +#: users/forms/model_forms.py:179 +msgid "Enter the same password as before, for verification." +msgstr "Введите тот же пароль, что и раньше, для проверки." + +#: users/forms/model_forms.py:237 +msgid "Passwords do not match! Please check your input and try again." +msgstr "" +"Пароли не совпадают! Пожалуйста, проверьте введенные данные и попробуйте " +"снова." + +#: users/forms/model_forms.py:303 +msgid "Additional actions" +msgstr "Дополнительные действия" + +#: users/forms/model_forms.py:306 +msgid "Actions granted in addition to those listed above" +msgstr "Действия, предпринятые в дополнение к перечисленным выше" + +#: users/forms/model_forms.py:322 +msgid "Objects" +msgstr "Объекты" + +#: users/forms/model_forms.py:334 +msgid "" +"JSON expression of a queryset filter that will return only permitted " +"objects. Leave null to match all objects of this type. A list of multiple " +"objects will result in a logical OR operation." +msgstr "" +"JSON-выражение фильтра queryset, возвращающее только разрешенные объекты. " +"Оставьте значение null для соответствия всем объектам этого типа. Список из " +"нескольких объектов приведет к логической операции ИЛИ." + +#: users/forms/model_forms.py:372 +msgid "At least one action must be selected." +msgstr "Должно быть выбрано хотя бы одно действие." + +#: users/forms/model_forms.py:389 +#, python-brace-format +msgid "Invalid filter for {model}: {error}" +msgstr "Неверный фильтр для {model}: {error}" + +#: users/models.py:54 +msgid "user" +msgstr "пользователя" + +#: users/models.py:55 +msgid "users" +msgstr "пользователей" + +#: users/models.py:66 +msgid "A user with this username already exists." +msgstr "Пользователь с таким именем уже существует." + +#: users/models.py:78 vpn/models/crypto.py:42 +msgid "group" +msgstr "группа" + +#: users/models.py:79 +msgid "groups" +msgstr "групп" + +#: users/models.py:106 users/models.py:107 +msgid "user preferences" +msgstr "пользовательские предпочтения" + +#: users/models.py:174 +#, python-brace-format +msgid "Key '{path}' is a leaf node; cannot assign new keys" +msgstr "Ключ '{path}'является листовым узлом; не может назначать новые ключи" + +#: users/models.py:186 +#, python-brace-format +msgid "Key '{path}' is a dictionary; cannot assign a non-dictionary value" +msgstr "" +"Ключ '{path}'— словарь; не может присвоить значение, отличное от словаря" + +#: users/models.py:252 +msgid "expires" +msgstr "истекает" + +#: users/models.py:257 +msgid "last used" +msgstr "последний раз использованный" + +#: users/models.py:262 +msgid "key" +msgstr "ключ" + +#: users/models.py:268 +msgid "write enabled" +msgstr "запись включена" + +#: users/models.py:270 +msgid "Permit create/update/delete operations using this key" +msgstr "" +"Разрешить операции создания/обновления/удаления с использованием этого ключа" + +#: users/models.py:281 +msgid "allowed IPs" +msgstr "разрешенные IP-адреса" + +#: users/models.py:283 +msgid "" +"Allowed IPv4/IPv6 networks from where the token can be used. Leave blank for" +" no restrictions. Ex: \"10.1.1.0/24, 192.168.10.16/32, 2001:DB8:1::/64\"" +msgstr "" +"Разрешенные сети IPv4/IPv6, из которых можно использовать токен. Оставьте " +"поле пустым, чтобы не было ограничений. Пример: «10.1.1.0/24, " +"192.168.10.16/32, 2001: БД 8:1: /64»" + +#: users/models.py:291 +msgid "token" +msgstr "токен" + +#: users/models.py:292 +msgid "tokens" +msgstr "токены" + +#: users/models.py:373 +msgid "The list of actions granted by this permission" +msgstr "Список действий, предусмотренных этим разрешением" + +#: users/models.py:378 +msgid "constraints" +msgstr "ограничения" + +#: users/models.py:379 +msgid "" +"Queryset filter matching the applicable objects of the selected type(s)" +msgstr "" +"Фильтр Queryset, соответствующий применимым объектам выбранного типа (типов)" + +#: users/models.py:386 +msgid "permission" +msgstr "разрешение" + +#: users/models.py:387 +msgid "permissions" +msgstr "разрешения" + +#: users/tables.py:101 +msgid "Custom Actions" +msgstr "Настраиваемые действия" + +#: utilities/choices.py:16 +#, python-brace-format +msgid "{name} has a key defined but CHOICES is not a list" +msgstr "{name} имеет определенный ключ, но CHOICES не является списком" + +#: utilities/choices.py:135 +msgid "Dark Red" +msgstr "Темно-красный" + +#: utilities/choices.py:138 +msgid "Rose" +msgstr "Роза" + +#: utilities/choices.py:139 +msgid "Fuchsia" +msgstr "фуксия" + +#: utilities/choices.py:141 +msgid "Dark Purple" +msgstr "Темно-фиолетовый" + +#: utilities/choices.py:144 +msgid "Light Blue" +msgstr "Светло-синий" + +#: utilities/choices.py:147 +msgid "Aqua" +msgstr "вода" + +#: utilities/choices.py:148 +msgid "Dark Green" +msgstr "Темно-зеленый" + +#: utilities/choices.py:150 +msgid "Light Green" +msgstr "Светло-зеленый" + +#: utilities/choices.py:151 +msgid "Lime" +msgstr "Лайм" + +#: utilities/choices.py:153 +msgid "Amber" +msgstr "янтарь" + +#: utilities/choices.py:155 +msgid "Dark Orange" +msgstr "Темно-оранжевый" + +#: utilities/choices.py:156 +msgid "Brown" +msgstr "коричневый" + +#: utilities/choices.py:157 +msgid "Light Grey" +msgstr "Светло-серый" + +#: utilities/choices.py:158 +msgid "Grey" +msgstr "Серый" + +#: utilities/choices.py:159 +msgid "Dark Grey" +msgstr "Темно-серый" + +#: utilities/choices.py:217 +msgid "Direct" +msgstr "Прямой" + +#: utilities/choices.py:218 +msgid "Upload" +msgstr "Загрузить" + +#: utilities/choices.py:230 utilities/choices.py:244 +msgid "Auto-detect" +msgstr "Автоматическое обнаружение" + +#: utilities/choices.py:245 +msgid "Comma" +msgstr "Запятая" + +#: utilities/choices.py:246 +msgid "Semicolon" +msgstr "Точка с запятой" + +#: utilities/choices.py:247 +msgid "Tab" +msgstr "Вкладка" + +#: utilities/error_handlers.py:20 +#, python-brace-format +msgid "" +"Unable to delete {objects}. {count} dependent objects were " +"found: " +msgstr "" +"Невозможно удалить {objects}. {count} найдены зависимые " +"объекты: " + +#: utilities/error_handlers.py:22 +msgid "More than 50" +msgstr "Более 50" + +#: utilities/fields.py:162 +#, python-format +msgid "" +"%s(%r) is invalid. to_model parameter to CounterCacheField must be a string " +"in the format 'app.model'" +msgstr "" +"%s(%r) недействителен. Параметр to_model для CounterCacheField должен быть " +"строкой в формате app.model" + +#: utilities/fields.py:172 +#, python-format +msgid "" +"%s(%r) is invalid. to_field parameter to CounterCacheField must be a string " +"in the format 'field'" +msgstr "" +"%s(%r) недействителен. Параметр to_field для CounterCacheField должен быть " +"строкой в формате «поле»" + +#: utilities/forms/bulk_import.py:24 +msgid "Enter object data in CSV, JSON or YAML format." +msgstr "Введите объектные данные в формате CSV, JSON или YAML." + +#: utilities/forms/bulk_import.py:37 +msgid "CSV delimiter" +msgstr "CSV-разделитель" + +#: utilities/forms/bulk_import.py:38 +msgid "The character which delimits CSV fields. Applies only to CSV format." +msgstr "Символ, ограничивающий поля CSV. Применяется только к формату CSV." + +#: utilities/forms/bulk_import.py:101 +msgid "Unable to detect data format. Please specify." +msgstr "Не удалось определить формат данных. Пожалуйста, укажите." + +#: utilities/forms/bulk_import.py:124 +msgid "Invalid CSV delimiter" +msgstr "Неверный разделитель CSV" + +#: utilities/forms/bulk_import.py:168 +msgid "" +"Invalid YAML data. Data must be in the form of multiple documents, or a " +"single document comprising a list of dictionaries." +msgstr "" +"Неверные данные YAML. Данные должны быть в форме нескольких документов или " +"одного документа, содержащего список словарей." + +#: utilities/forms/fields/array.py:17 +#, python-brace-format +msgid "" +"Invalid list ({value}). Must be numeric and ranges must be in ascending " +"order." +msgstr "" +"Неверный список ({value}). Должен быть числовым, а диапазоны — в порядке " +"возрастания." + +#: utilities/forms/fields/csv.py:44 +#, python-brace-format +msgid "Invalid value for a multiple choice field: {value}" +msgstr "Неверное значение для поля с несколькими вариантами ответов: {value}" + +#: utilities/forms/fields/csv.py:57 utilities/forms/fields/csv.py:74 +#, python-format +msgid "Object not found: %(value)s" +msgstr "Объект не найден: %(value)s" + +#: utilities/forms/fields/csv.py:65 +#, python-brace-format +msgid "" +"\"{value}\" is not a unique value for this field; multiple objects were " +"found" +msgstr "" +"«{value}\"не является уникальным значением для этого поля; найдено несколько" +" объектов" + +#: utilities/forms/fields/csv.py:97 +msgid "Object type must be specified as \".\"" +msgstr "Тип объекта должен быть указан как».»" + +#: utilities/forms/fields/csv.py:101 +msgid "Invalid object type" +msgstr "Неверный тип объекта" + +#: utilities/forms/fields/expandable.py:25 +msgid "" +"Alphanumeric ranges are supported for bulk creation. Mixed cases and types " +"within a single range are not supported (example: " +"[ge,xe]-0/0/[0-9])." +msgstr "" +"Для массового создания поддерживаются алфавитно-цифровые диапазоны. " +"Смешанные регистр и типы в одном диапазоне не поддерживаются (например: " +"[возраст, пол] -0/0/ [0-9])." + +#: utilities/forms/fields/expandable.py:46 +msgid "" +"Specify a numeric range to create multiple IPs.
    Example: " +"192.0.2.[1,5,100-254]/24" +msgstr "" +"Укажите числовой диапазон для создания нескольких IP-адресов.
    Пример: " +"192.0.2 [1,5,100-254] /24" + +#: utilities/forms/fields/fields.py:31 +#, python-brace-format +msgid "" +" Markdown syntax is supported" +msgstr "" +" Уценка поддерживается синтаксис" + +#: utilities/forms/fields/fields.py:48 +msgid "URL-friendly unique shorthand" +msgstr "Уникальное сокращение, удобное для URL-адресов" + +#: utilities/forms/fields/fields.py:99 +msgid "Enter context data in JSON format." +msgstr "" +"Введите контекстные данные в JSON формат." + +#: utilities/forms/fields/fields.py:117 +msgid "MAC address must be in EUI-48 format" +msgstr "MAC-адрес должен быть в формате EUI-48" + +#: utilities/forms/forms.py:53 +msgid "Use regular expressions" +msgstr "Используйте регулярные выражения" + +#: utilities/forms/forms.py:87 +#, python-brace-format +msgid "Unrecognized header: {name}" +msgstr "Неизвестный заголовок: {name}" + +#: utilities/forms/forms.py:113 +msgid "Available Columns" +msgstr "Доступные столбцы" + +#: utilities/forms/forms.py:121 +msgid "Selected Columns" +msgstr "Выбранные столбцы" + +#: utilities/forms/mixins.py:101 +msgid "" +"This object has been modified since the form was rendered. Please consult " +"the object's change log for details." +msgstr "" +"Этот объект был изменен с момента визуализации формы. Подробности см. в " +"журнале изменений объекта." + +#: utilities/templates/builtins/customfield_value.html:30 +msgid "Not defined" +msgstr "Не определено" + +#: utilities/templates/buttons/bookmark.html:9 +msgid "Unbookmark" +msgstr "Удалить закладки" + +#: utilities/templates/buttons/bookmark.html:13 +msgid "Bookmark" +msgstr "Закладка" + +#: utilities/templates/buttons/clone.html:4 +msgid "Clone" +msgstr "Клон" + +#: utilities/templates/buttons/export.html:4 +msgid "Export" +msgstr "Экспорт" + +#: utilities/templates/buttons/export.html:7 +msgid "Current View" +msgstr "Текущий вид" + +#: utilities/templates/buttons/export.html:8 +msgid "All Data" +msgstr "Все данные" + +#: utilities/templates/buttons/export.html:28 +msgid "Add export template" +msgstr "Добавить шаблон экспорта" + +#: utilities/templates/buttons/import.html:4 +msgid "Import" +msgstr "Импорт" + +#: utilities/templates/form_helpers/render_field.html:36 +msgid "Copy to clipboard" +msgstr "Скопировать в буфер обмена" + +#: utilities/templates/form_helpers/render_field.html:52 +msgid "This field is required" +msgstr "Это поле обязательно" + +#: utilities/templates/form_helpers/render_field.html:65 +msgid "Set Null" +msgstr "Установить значение Null" + +#: utilities/templates/helpers/applied_filters.html:11 +msgid "Clear all" +msgstr "Очистить все" + +#: utilities/templates/helpers/table_config_form.html:8 +msgid "Table Configuration" +msgstr "Конфигурация таблицы" + +#: utilities/templates/helpers/table_config_form.html:31 +msgid "Move Up" +msgstr "Двигаться вверх" + +#: utilities/templates/helpers/table_config_form.html:34 +msgid "Move Down" +msgstr "Переместить вниз" + +#: utilities/templates/widgets/apiselect.html:7 +msgid "Open selector" +msgstr "Открыть селектор" + +#: utilities/templates/widgets/clearable_file_input.html:12 +msgid "None assigned" +msgstr "Ничего не назначено" + +#: utilities/templates/widgets/markdown_input.html:6 +msgid "Write" +msgstr "Напишите" + +#: utilities/templates/widgets/markdown_input.html:20 +msgid "Testing" +msgstr "Тестирование" + +#: virtualization/filtersets.py:79 +msgid "Parent group (ID)" +msgstr "Родительская группа (ID)" + +#: virtualization/filtersets.py:85 +msgid "Parent group (slug)" +msgstr "Родительская группа (слизень)" + +#: virtualization/filtersets.py:89 virtualization/filtersets.py:140 +msgid "Cluster type (ID)" +msgstr "Тип кластера (ID)" + +#: virtualization/filtersets.py:129 +msgid "Cluster group (ID)" +msgstr "Кластерная группа (ID)" + +#: virtualization/filtersets.py:150 virtualization/filtersets.py:265 +msgid "Cluster (ID)" +msgstr "Кластер (ID)" + +#: virtualization/forms/bulk_edit.py:165 +#: virtualization/models/virtualmachines.py:113 +msgid "vCPUs" +msgstr "Виртуальные процессоры" + +#: virtualization/forms/bulk_edit.py:169 +msgid "Memory (MB)" +msgstr "Память (МБ)" + +#: virtualization/forms/bulk_edit.py:173 +msgid "Disk (GB)" +msgstr "Диск (ГБ)" + +#: virtualization/forms/bulk_edit.py:333 +#: virtualization/forms/filtersets.py:243 +msgid "Size (GB)" +msgstr "Размер (ГБ)" + +#: virtualization/forms/bulk_import.py:44 +msgid "Type of cluster" +msgstr "Тип кластера" + +#: virtualization/forms/bulk_import.py:51 +msgid "Assigned cluster group" +msgstr "Назначенная кластерная группа" + +#: virtualization/forms/bulk_import.py:96 +msgid "Assigned cluster" +msgstr "Назначенный кластер" + +#: virtualization/forms/bulk_import.py:103 +msgid "Assigned device within cluster" +msgstr "Назначенное устройство в кластере" + +#: virtualization/forms/model_forms.py:156 +#, python-brace-format +msgid "" +"{device} belongs to a different site ({device_site}) than the cluster " +"({cluster_site})" +msgstr "" +"{device} принадлежит другому сайту ({device_site}), чем кластер " +"({cluster_site})" + +#: virtualization/forms/model_forms.py:195 +msgid "Optionally pin this VM to a specific host device within the cluster" +msgstr "" +"Дополнительно подключите эту виртуальную машину к определенному хост-" +"устройству в кластере." + +#: virtualization/forms/model_forms.py:224 +msgid "Site/Cluster" +msgstr "Сайт/кластер" + +#: virtualization/forms/model_forms.py:247 +msgid "Disk size is managed via the attachment of virtual disks." +msgstr "Размер диска регулируется путем вложения виртуальных дисков." + +#: virtualization/forms/model_forms.py:375 +msgid "Disk" +msgstr "Диск" + +#: virtualization/models/clusters.py:25 +msgid "cluster type" +msgstr "тип кластера" + +#: virtualization/models/clusters.py:26 +msgid "cluster types" +msgstr "типы кластеров" + +#: virtualization/models/clusters.py:45 +msgid "cluster group" +msgstr "кластерная группа" + +#: virtualization/models/clusters.py:46 +msgid "cluster groups" +msgstr "кластерные группы" + +#: virtualization/models/clusters.py:121 +msgid "cluster" +msgstr "кластер" + +#: virtualization/models/clusters.py:122 +msgid "clusters" +msgstr "кластеры" + +#: virtualization/models/clusters.py:141 +#, python-brace-format +msgid "" +"{count} devices are assigned as hosts for this cluster but are not in site " +"{site}" +msgstr "" +"{count} устройства назначены в качестве хостов для этого кластера, но их нет" +" на сайте {site}" + +#: virtualization/models/virtualmachines.py:121 +msgid "memory (MB)" +msgstr "память (МБ)" + +#: virtualization/models/virtualmachines.py:126 +msgid "disk (GB)" +msgstr "диск (ГБ)" + +#: virtualization/models/virtualmachines.py:159 +msgid "Virtual machine name must be unique per cluster." +msgstr "Имя виртуальной машины должно быть уникальным для каждого кластера." + +#: virtualization/models/virtualmachines.py:162 +msgid "virtual machine" +msgstr "виртуальная машина" + +#: virtualization/models/virtualmachines.py:163 +msgid "virtual machines" +msgstr "виртуальные машины" + +#: virtualization/models/virtualmachines.py:177 +msgid "A virtual machine must be assigned to a site and/or cluster." +msgstr "Виртуальная машина должна быть назначена сайту и/или кластеру." + +#: virtualization/models/virtualmachines.py:184 +#, python-brace-format +msgid "" +"The selected cluster ({cluster}) is not assigned to this site ({site})." +msgstr "Выбранный кластер ({cluster}) не относится к этому сайту ({site})." + +#: virtualization/models/virtualmachines.py:191 +msgid "Must specify a cluster when assigning a host device." +msgstr "При назначении хост-устройства необходимо указать кластер." + +#: virtualization/models/virtualmachines.py:196 +#, python-brace-format +msgid "" +"The selected device ({device}) is not assigned to this cluster ({cluster})." +msgstr "" +"Выбранное устройство ({device}) не относится к этому кластеру ({cluster})." + +#: virtualization/models/virtualmachines.py:208 +#, python-brace-format +msgid "" +"The specified disk size ({size}) must match the aggregate size of assigned " +"virtual disks ({total_size})." +msgstr "" +"Указанный размер диска ({size}) должен соответствовать совокупному размеру " +"назначенных виртуальных дисков ({total_size})." + +#: virtualization/models/virtualmachines.py:222 +#, python-brace-format +msgid "Must be an IPv{family} address. ({ip} is an IPv{version} address.)" +msgstr "" +"Должен быть IPV{family} адрес. ({ip} является IP-адресом{version} адрес.)" + +#: virtualization/models/virtualmachines.py:231 +#, python-brace-format +msgid "The specified IP address ({ip}) is not assigned to this VM." +msgstr "Указанный IP-адрес ({ip}) не назначено этой виртуальной машине." + +#: virtualization/models/virtualmachines.py:389 +#, python-brace-format +msgid "" +"The selected parent interface ({parent}) belongs to a different virtual " +"machine ({virtual_machine})." +msgstr "" +"Выбранный родительский интерфейс ({parent}) принадлежит другой виртуальной " +"машине ({virtual_machine})." + +#: virtualization/models/virtualmachines.py:404 +#, python-brace-format +msgid "" +"The selected bridge interface ({bridge}) belongs to a different virtual " +"machine ({virtual_machine})." +msgstr "" +"Выбранный интерфейс моста ({bridge}) принадлежит другой виртуальной машине " +"({virtual_machine})." + +#: virtualization/models/virtualmachines.py:415 +#, python-brace-format +msgid "" +"The untagged VLAN ({untagged_vlan}) must belong to the same site as the " +"interface's parent virtual machine, or it must be global." +msgstr "" +"VLAN без тегов ({untagged_vlan}) должна принадлежать тому же сайту, что и " +"родительская виртуальная машина интерфейса, или она должна быть глобальной." + +#: virtualization/models/virtualmachines.py:427 +msgid "size (GB)" +msgstr "размер (ГБ)" + +#: virtualization/models/virtualmachines.py:431 +msgid "virtual disk" +msgstr "виртуальный диск" + +#: virtualization/models/virtualmachines.py:432 +msgid "virtual disks" +msgstr "виртуальные диски" + +#: vpn/choices.py:31 +msgid "IPsec - Transport" +msgstr "IPsec — транспорт" + +#: vpn/choices.py:32 +msgid "IPsec - Tunnel" +msgstr "IPsec — туннель" + +#: vpn/choices.py:33 +msgid "IP-in-IP" +msgstr "IP-адрес в IP-адресе" + +#: vpn/choices.py:34 +msgid "GRE" +msgstr "СЕРЫЙ" + +#: vpn/choices.py:56 +msgid "Hub" +msgstr "хаб" + +#: vpn/choices.py:57 +msgid "Spoke" +msgstr "Говорил" + +#: vpn/choices.py:80 +msgid "Aggressive" +msgstr "агрессивный" + +#: vpn/choices.py:81 +msgid "Main" +msgstr "Главная" + +#: vpn/choices.py:92 +msgid "Pre-shared keys" +msgstr "Предварительно общие ключи" + +#: vpn/choices.py:93 +msgid "Certificates" +msgstr "Сертификаты" + +#: vpn/choices.py:94 +msgid "RSA signatures" +msgstr "Подписи RSA" + +#: vpn/choices.py:95 +msgid "DSA signatures" +msgstr "Подписи DSA" + +#: vpn/choices.py:178 vpn/choices.py:179 vpn/choices.py:180 vpn/choices.py:181 +#: vpn/choices.py:182 vpn/choices.py:183 vpn/choices.py:184 vpn/choices.py:185 +#: vpn/choices.py:186 vpn/choices.py:187 vpn/choices.py:188 vpn/choices.py:189 +#: vpn/choices.py:190 vpn/choices.py:191 vpn/choices.py:192 vpn/choices.py:193 +#: vpn/choices.py:194 vpn/choices.py:195 vpn/choices.py:196 vpn/choices.py:197 +#: vpn/choices.py:198 vpn/choices.py:199 vpn/choices.py:200 +#, python-brace-format +msgid "Group {n}" +msgstr "Группа {n}" + +#: vpn/choices.py:240 +msgid "Ethernet Private LAN" +msgstr "Частная локальная сеть Ethernet" + +#: vpn/choices.py:241 +msgid "Ethernet Virtual Private LAN" +msgstr "Виртуальная частная локальная сеть Ethernet" + +#: vpn/choices.py:244 +msgid "Ethernet Private Tree" +msgstr "Частное дерево Ethernet" + +#: vpn/choices.py:245 +msgid "Ethernet Virtual Private Tree" +msgstr "Виртуальное частное дерево Ethernet" + +#: vpn/filtersets.py:41 +msgid "Tunnel group (ID)" +msgstr "Группа туннелей (ID)" + +#: vpn/filtersets.py:47 +msgid "Tunnel group (slug)" +msgstr "Туннельная группа (пуля)" + +#: vpn/filtersets.py:54 +msgid "IPSec profile (ID)" +msgstr "Профиль IPsec (ID)" + +#: vpn/filtersets.py:60 +msgid "IPSec profile (name)" +msgstr "Профиль IPsec (имя)" + +#: vpn/filtersets.py:81 +msgid "Tunnel (ID)" +msgstr "Туннель (ID)" + +#: vpn/filtersets.py:87 +msgid "Tunnel (name)" +msgstr "Туннель (название)" + +#: vpn/filtersets.py:118 +msgid "Outside IP (ID)" +msgstr "Внешний IP-адрес (ID)" + +#: vpn/filtersets.py:235 +msgid "IKE policy (ID)" +msgstr "Политика IKE (ID)" + +#: vpn/filtersets.py:241 +msgid "IKE policy (name)" +msgstr "Политика IKE (название)" + +#: vpn/filtersets.py:245 +msgid "IPSec policy (ID)" +msgstr "Политика IPsec (ID)" + +#: vpn/filtersets.py:251 +msgid "IPSec policy (name)" +msgstr "Политика IPsec (имя)" + +#: vpn/filtersets.py:320 +msgid "L2VPN (slug)" +msgstr "L2VPN (слаггер)" + +#: vpn/filtersets.py:384 +msgid "VM Interface (ID)" +msgstr "Интерфейс виртуальной машины (ID)" + +#: vpn/filtersets.py:390 +msgid "VLAN (name)" +msgstr "VLAN (название)" + +#: vpn/forms/bulk_edit.py:44 vpn/forms/bulk_import.py:42 +#: vpn/forms/filtersets.py:53 +msgid "Tunnel group" +msgstr "Группа туннелей" + +#: vpn/forms/bulk_edit.py:116 vpn/models/crypto.py:47 +msgid "SA lifetime" +msgstr "На всю жизнь" + +#: vpn/forms/bulk_edit.py:150 wireless/forms/bulk_edit.py:78 +#: wireless/forms/bulk_edit.py:125 wireless/forms/filtersets.py:63 +#: wireless/forms/filtersets.py:97 +msgid "Pre-shared key" +msgstr "Предварительный общий ключ" + +#: vpn/forms/bulk_edit.py:238 vpn/forms/bulk_import.py:234 +#: vpn/forms/filtersets.py:196 vpn/forms/model_forms.py:363 +#: vpn/models/crypto.py:103 +msgid "IKE policy" +msgstr "Политика IKE" + +#: vpn/forms/bulk_edit.py:243 vpn/forms/bulk_import.py:239 +#: vpn/forms/filtersets.py:201 vpn/forms/model_forms.py:367 +#: vpn/models/crypto.py:197 +msgid "IPSec policy" +msgstr "Политика IPsec" + +#: vpn/forms/bulk_import.py:50 +msgid "Tunnel encapsulation" +msgstr "Инкапсуляция туннелей" + +#: vpn/forms/bulk_import.py:83 +msgid "Operational role" +msgstr "Операционная роль" + +#: vpn/forms/bulk_import.py:90 +msgid "Parent device of assigned interface" +msgstr "Родительское устройство назначенного интерфейса" + +#: vpn/forms/bulk_import.py:97 +msgid "Parent VM of assigned interface" +msgstr "Родительская виртуальная машина назначенного интерфейса" + +#: vpn/forms/bulk_import.py:104 +msgid "Device or virtual machine interface" +msgstr "Интерфейс устройства или виртуальной машины" + +#: vpn/forms/bulk_import.py:181 +msgid "IKE proposal(s)" +msgstr "Предложение (предложения) IKE" + +#: vpn/forms/bulk_import.py:211 vpn/models/crypto.py:185 +msgid "Diffie-Hellman group for Perfect Forward Secrecy" +msgstr "Группа Диффи-Хеллмана за Perfect Forward Secrecy" + +#: vpn/forms/bulk_import.py:217 +msgid "IPSec proposal(s)" +msgstr "Предложение (предложения) IPsec" + +#: vpn/forms/bulk_import.py:231 +msgid "IPSec protocol" +msgstr "Протокол IPsec" + +#: vpn/forms/bulk_import.py:261 +msgid "L2VPN type" +msgstr "Тип L2VPN" + +#: vpn/forms/bulk_import.py:282 +msgid "Parent device (for interface)" +msgstr "Родительское устройство (для интерфейса)" + +#: vpn/forms/bulk_import.py:289 +msgid "Parent virtual machine (for interface)" +msgstr "Родительская виртуальная машина (для интерфейса)" + +#: vpn/forms/bulk_import.py:296 +msgid "Assigned interface (device or VM)" +msgstr "Назначенный интерфейс (устройство или виртуальная машина)" + +#: vpn/forms/bulk_import.py:329 +msgid "Cannot import device and VM interface terminations simultaneously." +msgstr "" +"Невозможно одновременно импортировать терминалы интерфейса устройства и " +"виртуальной машины." + +#: vpn/forms/bulk_import.py:331 +msgid "Each termination must specify either an interface or a VLAN." +msgstr "Каждое оконечное устройство должно указывать интерфейс или VLAN." + +#: vpn/forms/bulk_import.py:333 +msgid "Cannot assign both an interface and a VLAN." +msgstr "Невозможно назначить одновременно интерфейс и VLAN." + +#: vpn/forms/filtersets.py:127 +msgid "IKE version" +msgstr "Версия IKE" + +#: vpn/forms/filtersets.py:139 vpn/forms/filtersets.py:172 +#: vpn/forms/model_forms.py:293 vpn/forms/model_forms.py:328 +msgid "Proposal" +msgstr "Предложение" + +#: vpn/forms/filtersets.py:247 +msgid "Assigned Object Type" +msgstr "Назначенный тип объекта" + +#: vpn/forms/model_forms.py:147 +msgid "First Termination" +msgstr "Первое увольнение" + +#: vpn/forms/model_forms.py:151 +msgid "Second Termination" +msgstr "Второе расторжение" + +#: vpn/forms/model_forms.py:198 +msgid "This parameter is required when defining a termination." +msgstr "Этот параметр необходим при определении прекращения." + +#: vpn/forms/model_forms.py:314 vpn/forms/model_forms.py:349 +msgid "Policy" +msgstr "Политика" + +#: vpn/forms/model_forms.py:469 +msgid "A termination must specify an interface or VLAN." +msgstr "В терминации должен быть указан интерфейс или VLAN." + +#: vpn/forms/model_forms.py:471 +msgid "" +"A termination can only have one terminating object (an interface or VLAN)." +msgstr "" +"Терминал может иметь только один конечный объект (интерфейс или VLAN)." + +#: vpn/models/crypto.py:33 +msgid "encryption algorithm" +msgstr "алгоритм шифрования" + +#: vpn/models/crypto.py:37 +msgid "authentication algorithm" +msgstr "алгоритм аутентификации" + +#: vpn/models/crypto.py:44 +msgid "Diffie-Hellman group ID" +msgstr "Идентификатор группы Диффи-Хеллман" + +#: vpn/models/crypto.py:50 +msgid "Security association lifetime (in seconds)" +msgstr "Срок службы охранной ассоциации (в секундах)" + +#: vpn/models/crypto.py:59 +msgid "IKE proposal" +msgstr "Предложение IKE" + +#: vpn/models/crypto.py:60 +msgid "IKE proposals" +msgstr "Предложения IKE" + +#: vpn/models/crypto.py:76 +msgid "version" +msgstr "версия" + +#: vpn/models/crypto.py:87 vpn/models/crypto.py:178 +msgid "proposals" +msgstr "предложений" + +#: vpn/models/crypto.py:90 wireless/models.py:38 +msgid "pre-shared key" +msgstr "предварительный общий ключ" + +#: vpn/models/crypto.py:104 +msgid "IKE policies" +msgstr "Политики IKE" + +#: vpn/models/crypto.py:124 +msgid "encryption" +msgstr "шифрование" + +#: vpn/models/crypto.py:129 +msgid "authentication" +msgstr "аутентификация" + +#: vpn/models/crypto.py:137 +msgid "Security association lifetime (seconds)" +msgstr "Срок действия ассоциации безопасности (в секундах)" + +#: vpn/models/crypto.py:143 +msgid "Security association lifetime (in kilobytes)" +msgstr "Срок действия ассоциации безопасности (в килобайтах)" + +#: vpn/models/crypto.py:152 +msgid "IPSec proposal" +msgstr "Предложение IPsec" + +#: vpn/models/crypto.py:153 +msgid "IPSec proposals" +msgstr "Предложения IPsec" + +#: vpn/models/crypto.py:166 +msgid "Encryption and/or authentication algorithm must be defined" +msgstr "Необходимо определить алгоритм шифрования и/или аутентификации" + +#: vpn/models/crypto.py:198 +msgid "IPSec policies" +msgstr "Политики IPsec" + +#: vpn/models/crypto.py:239 +msgid "IPSec profiles" +msgstr "Профили IPsec" + +#: vpn/models/l2vpn.py:116 +msgid "L2VPN termination" +msgstr "Завершение работы L2VPN" + +#: vpn/models/l2vpn.py:117 +msgid "L2VPN terminations" +msgstr "Прекращения работы L2VPN" + +#: vpn/models/l2vpn.py:135 +#, python-brace-format +msgid "L2VPN Termination already assigned ({assigned_object})" +msgstr "Терминация L2VPN уже назначена ({assigned_object})" + +#: vpn/models/l2vpn.py:147 +#, python-brace-format +msgid "" +"{l2vpn_type} L2VPNs cannot have more than two terminations; found " +"{terminations_count} already defined." +msgstr "" +"{l2vpn_type} У L2VPN не может быть более двух терминаций; найдено " +"{terminations_count} уже определено." + +#: vpn/models/tunnels.py:26 +msgid "tunnel group" +msgstr "группа туннелей" + +#: vpn/models/tunnels.py:27 +msgid "tunnel groups" +msgstr "группы туннелей" + +#: vpn/models/tunnels.py:53 +msgid "encapsulation" +msgstr "инкапсуляция" + +#: vpn/models/tunnels.py:72 +msgid "tunnel ID" +msgstr "идентификатор туннеля" + +#: vpn/models/tunnels.py:94 +msgid "tunnel" +msgstr "тоннель" + +#: vpn/models/tunnels.py:95 +msgid "tunnels" +msgstr "туннели" + +#: vpn/models/tunnels.py:153 +msgid "An object may be terminated to only one tunnel at a time." +msgstr "Одновременно объект может быть отправлен только в один туннель." + +#: vpn/models/tunnels.py:156 +msgid "tunnel termination" +msgstr "завершение туннеля" + +#: vpn/models/tunnels.py:157 +msgid "tunnel terminations" +msgstr "терминалы туннелей" + +#: vpn/models/tunnels.py:174 +#, python-brace-format +msgid "{name} is already attached to a tunnel ({tunnel})." +msgstr "{name} уже подключен к туннелю ({tunnel})." + +#: vpn/tables/crypto.py:22 +msgid "Authentication Method" +msgstr "Метод аутентификации" + +#: vpn/tables/crypto.py:25 vpn/tables/crypto.py:97 +msgid "Encryption Algorithm" +msgstr "Алгоритм шифрования" + +#: vpn/tables/crypto.py:28 vpn/tables/crypto.py:100 +msgid "Authentication Algorithm" +msgstr "Алгоритм аутентификации" + +#: vpn/tables/crypto.py:34 +msgid "SA Lifetime" +msgstr "Срок службы" + +#: vpn/tables/crypto.py:71 +msgid "Pre-shared Key" +msgstr "Предварительный общий ключ" + +#: vpn/tables/crypto.py:103 +msgid "SA Lifetime (Seconds)" +msgstr "Срок службы SA (в секундах)" + +#: vpn/tables/crypto.py:106 +msgid "SA Lifetime (KB)" +msgstr "Срок службы SA (КБ)" + +#: vpn/tables/l2vpn.py:69 +msgid "Object Parent" +msgstr "Родитель объекта" + +#: vpn/tables/l2vpn.py:74 +msgid "Object Site" +msgstr "Объектный сайт" + +#: vpn/tables/tunnels.py:84 +msgid "Host" +msgstr "Хозяин" + +#: wireless/choices.py:11 +msgid "Access point" +msgstr "Точка доступа" + +#: wireless/choices.py:12 +msgid "Station" +msgstr "станция" + +#: wireless/choices.py:467 +msgid "Open" +msgstr "Открыть" + +#: wireless/choices.py:469 +msgid "WPA Personal (PSK)" +msgstr "Персонал WPA (PSK)" + +#: wireless/choices.py:470 +msgid "WPA Enterprise" +msgstr "Предприятие WPA" + +#: wireless/forms/bulk_edit.py:72 wireless/forms/bulk_edit.py:119 +#: wireless/forms/bulk_import.py:68 wireless/forms/bulk_import.py:71 +#: wireless/forms/bulk_import.py:110 wireless/forms/bulk_import.py:113 +#: wireless/forms/filtersets.py:58 wireless/forms/filtersets.py:92 +msgid "Authentication cipher" +msgstr "Шифр аутентификации" + +#: wireless/forms/bulk_import.py:52 +msgid "Bridged VLAN" +msgstr "Мостовая VLAN" + +#: wireless/forms/bulk_import.py:89 wireless/tables/wirelesslink.py:27 +msgid "Interface A" +msgstr "Интерфейс A" + +#: wireless/forms/bulk_import.py:93 wireless/tables/wirelesslink.py:36 +msgid "Interface B" +msgstr "Интерфейс B" + +#: wireless/forms/model_forms.py:158 +msgid "Side B" +msgstr "Сторона B" + +#: wireless/models.py:30 +msgid "authentication cipher" +msgstr "шифр аутентификации" + +#: wireless/models.py:68 +msgid "wireless LAN group" +msgstr "группа беспроводной локальной сети" + +#: wireless/models.py:69 +msgid "wireless LAN groups" +msgstr "группы беспроводной локальной сети" + +#: wireless/models.py:115 +msgid "wireless LAN" +msgstr "беспроводная локальная сеть" + +#: wireless/models.py:143 +msgid "interface A" +msgstr "интерфейс A" + +#: wireless/models.py:150 +msgid "interface B" +msgstr "интерфейс B" + +#: wireless/models.py:198 +msgid "wireless link" +msgstr "беспроводная связь" + +#: wireless/models.py:199 +msgid "wireless links" +msgstr "беспроводные ссылки" + +#: wireless/models.py:216 wireless/models.py:222 +#, python-brace-format +msgid "{type} is not a wireless interface." +msgstr "{type} не является беспроводным интерфейсом." diff --git a/netbox/users/api/serializers.py b/netbox/users/api/serializers.py index 1f4bf4ea0..c9775e39a 100644 --- a/netbox/users/api/serializers.py +++ b/netbox/users/api/serializers.py @@ -1,11 +1,12 @@ from django.conf import settings +from django.contrib.auth import authenticate from django.contrib.auth import get_user_model from django.contrib.auth.models import Group from django.contrib.contenttypes.models import ContentType from drf_spectacular.utils import extend_schema_field from drf_spectacular.types import OpenApiTypes from rest_framework import serializers -from rest_framework.exceptions import PermissionDenied +from rest_framework.exceptions import AuthenticationFailed, PermissionDenied from netbox.api.fields import ContentTypeField, IPNetworkSerializer, SerializedPKRelatedField from netbox.api.serializers import ValidatedModelSerializer @@ -51,6 +52,16 @@ class UserSerializer(ValidatedModelSerializer): return user + def update(self, instance, validated_data): + """ + Ensure proper updated password hash generation. + """ + password = validated_data.pop('password', None) + if password is not None: + instance.set_password(password) + + return super().update(instance, validated_data) + @extend_schema_field(OpenApiTypes.STR) def get_display(self, obj): if full_name := obj.get_full_name(): @@ -107,9 +118,42 @@ class TokenSerializer(ValidatedModelSerializer): return super().validate(data) -class TokenProvisionSerializer(serializers.Serializer): - username = serializers.CharField() - password = serializers.CharField() +class TokenProvisionSerializer(TokenSerializer): + user = NestedUserSerializer( + read_only=True + ) + username = serializers.CharField( + write_only=True + ) + password = serializers.CharField( + write_only=True + ) + last_used = serializers.DateTimeField( + read_only=True + ) + key = serializers.CharField( + read_only=True + ) + + class Meta: + model = Token + fields = ( + 'id', 'url', 'display', 'user', 'created', 'expires', 'last_used', 'key', 'write_enabled', 'description', + 'allowed_ips', 'username', 'password', + ) + + def validate(self, data): + # Validate the username and password + username = data.pop('username') + password = data.pop('password') + user = authenticate(request=self.context.get('request'), username=username, password=password) + if user is None: + raise AuthenticationFailed("Invalid username/password") + + # Inject the user into the validated data + data['user'] = user + + return data class ObjectPermissionSerializer(ValidatedModelSerializer): diff --git a/netbox/users/api/views.py b/netbox/users/api/views.py index c827089f1..62a32c71b 100644 --- a/netbox/users/api/views.py +++ b/netbox/users/api/views.py @@ -1,3 +1,4 @@ +import logging from django.contrib.auth import authenticate from django.contrib.auth import get_user_model from django.contrib.auth.models import Group @@ -60,31 +61,24 @@ class TokenProvisionView(APIView): """ permission_classes = [] - # @extend_schema(methods=["post"], responses={201: serializers.TokenSerializer}) + @extend_schema( + request=serializers.TokenProvisionSerializer, + responses={ + 201: serializers.TokenProvisionSerializer, + 401: OpenApiTypes.OBJECT, + } + ) def post(self, request): - serializer = serializers.TokenProvisionSerializer(data=request.data) - serializer.is_valid() + serializer = serializers.TokenProvisionSerializer(data=request.data, context={'request': request}) + serializer.is_valid(raise_exception=True) + self.perform_create(serializer) + return Response(serializer.data, status=HTTP_201_CREATED) - # Authenticate the user account based on the provided credentials - username = serializer.data.get('username') - password = serializer.data.get('password') - if not username or not password: - raise AuthenticationFailed("Username and password must be provided to provision a token.") - user = authenticate(request=request, username=username, password=password) - if user is None: - raise AuthenticationFailed("Invalid username/password") - - # Create a new Token for the User - token = Token(user=user) - token.save() - data = serializers.TokenSerializer(token, context={'request': request}).data - # Manually append the token key, which is normally write-only - data['key'] = token.key - - return Response(data, status=HTTP_201_CREATED) - - def get_serializer_class(self): - return serializers.TokenSerializer + def perform_create(self, serializer): + model = serializer.Meta.model + logger = logging.getLogger(f'netbox.api.views.TokenProvisionView') + logger.info(f"Creating new {model._meta.verbose_name}") + serializer.save() # diff --git a/netbox/users/constants.py b/netbox/users/constants.py index 1e6e7c71c..f891d5573 100644 --- a/netbox/users/constants.py +++ b/netbox/users/constants.py @@ -2,7 +2,7 @@ from django.db.models import Q OBJECTPERMISSION_OBJECT_TYPES = Q( - ~Q(app_label__in=['admin', 'auth', 'contenttypes', 'sessions', 'taggit', 'users']) | + ~Q(app_label__in=['account', 'admin', 'auth', 'contenttypes', 'sessions', 'taggit', 'users']) | Q(app_label='auth', model__in=['group', 'user']) | Q(app_label='users', model__in=['objectpermission', 'token']) ) diff --git a/netbox/users/forms/filtersets.py b/netbox/users/forms/filtersets.py index ff56cbc4c..4ae2bd729 100644 --- a/netbox/users/forms/filtersets.py +++ b/netbox/users/forms/filtersets.py @@ -1,14 +1,12 @@ from django import forms -from extras.forms.mixins import SavedFiltersMixin -from utilities.forms import FilterForm -from users.models import Token from django.contrib.auth import get_user_model from django.contrib.auth.models import Group from django.utils.translation import gettext_lazy as _ from netbox.forms import NetBoxModelFilterSetForm -from users.models import NetBoxGroup, NetBoxUser, ObjectPermission -from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES +from netbox.forms.mixins import SavedFiltersMixin +from users.models import NetBoxGroup, NetBoxUser, ObjectPermission, Token +from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES, FilterForm from utilities.forms.fields import DynamicModelMultipleChoiceField from utilities.forms.widgets import DateTimePicker diff --git a/netbox/users/forms/model_forms.py b/netbox/users/forms/model_forms.py index 5fe84ad5f..99320fa25 100644 --- a/netbox/users/forms/model_forms.py +++ b/netbox/users/forms/model_forms.py @@ -56,6 +56,7 @@ class UserConfigFormMetaclass(forms.models.ModelFormMetaclass): class UserConfigForm(BootstrapMixin, forms.ModelForm, metaclass=UserConfigFormMetaclass): fieldsets = ( (_('User Interface'), ( + 'locale.language', 'pagination.per_page', 'pagination.placement', 'ui.colormode', @@ -114,6 +115,9 @@ class UserTokenForm(BootstrapMixin, forms.ModelForm): help_text=_( 'Keys must be at least 40 characters in length. Be sure to record your key prior to ' 'submitting this form, as it may no longer be accessible once the token has been created.' + ), + widget=forms.TextInput( + attrs={'data-clipboard': 'true'} ) ) allowed_ips = SimpleArrayField( @@ -383,5 +387,5 @@ class ObjectPermissionForm(BootstrapMixin, forms.ModelForm): model.objects.filter(qs_filter_from_constraints(constraints, tokens)).exists() except FieldError as e: raise forms.ValidationError({ - 'constraints': _('Invalid filter for {model}: {e}').format(model=model, e=e) + 'constraints': _('Invalid filter for {model}: {error}').format(model=model, error=e) }) diff --git a/netbox/users/migrations/0001_squashed_0011.py b/netbox/users/migrations/0001_squashed_0011.py index 4c0f78bef..5efbcaec8 100644 --- a/netbox/users/migrations/0001_squashed_0011.py +++ b/netbox/users/migrations/0001_squashed_0011.py @@ -66,7 +66,7 @@ class Migration(migrations.Migration): ('actions', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), size=None)), ('constraints', models.JSONField(blank=True, null=True)), ('groups', models.ManyToManyField(blank=True, related_name='object_permissions', to='auth.Group')), - ('object_types', models.ManyToManyField(limit_choices_to=models.Q(models.Q(models.Q(('app_label__in', ['admin', 'auth', 'contenttypes', 'sessions', 'taggit', 'users']), _negated=True), models.Q(('app_label', 'auth'), ('model__in', ['group', 'user'])), models.Q(('app_label', 'users'), ('model__in', ['objectpermission', 'token'])), _connector='OR')), related_name='object_permissions', to='contenttypes.ContentType')), + ('object_types', models.ManyToManyField(limit_choices_to=models.Q(models.Q(models.Q(('app_label__in', ['account', 'admin', 'auth', 'contenttypes', 'sessions', 'taggit', 'users']), _negated=True), models.Q(('app_label', 'auth'), ('model__in', ['group', 'user'])), models.Q(('app_label', 'users'), ('model__in', ['objectpermission', 'token'])), _connector='OR')), related_name='object_permissions', to='contenttypes.ContentType')), ('users', models.ManyToManyField(blank=True, related_name='object_permissions', to=settings.AUTH_USER_MODEL)), ], options={ diff --git a/netbox/users/models.py b/netbox/users/models.py index 80fd0dd09..52ce55e6c 100644 --- a/netbox/users/models.py +++ b/netbox/users/models.py @@ -3,7 +3,6 @@ import os from django.conf import settings from django.contrib.auth.models import Group, GroupManager, User, UserManager -from django.contrib.contenttypes.models import ContentType from django.contrib.postgres.fields import ArrayField from django.core.exceptions import ValidationError from django.core.validators import MinLengthValidator @@ -15,6 +14,7 @@ from django.utils import timezone from django.utils.translation import gettext_lazy as _ from netaddr import IPNetwork +from core.models import ContentType from ipam.fields import IPNetworkField from netbox.config import get_config from utilities.querysets import RestrictedQuerySet @@ -99,6 +99,8 @@ class UserConfig(models.Model): default=dict ) + _netbox_private = True + class Meta: ordering = ['user'] verbose_name = _('user preferences') @@ -169,7 +171,7 @@ class UserConfig(models.Model): elif key in d: err_path = '.'.join(path.split('.')[:i + 1]) raise TypeError( - _("Key '{err_path}' is a leaf node; cannot assign new keys").format(err_path=err_path) + _("Key '{path}' is a leaf node; cannot assign new keys").format(path=err_path) ) else: d = d.setdefault(key, {}) @@ -218,6 +220,7 @@ class UserConfig(models.Model): @receiver(post_save, sender=User) +@receiver(post_save, sender=NetBoxUser) def create_userconfig(instance, created, raw=False, **kwargs): """ Automatically create a new UserConfig when a new User is created. Skip this if importing a user from a fixture. @@ -351,7 +354,7 @@ class ObjectPermission(models.Model): default=True ) object_types = models.ManyToManyField( - to=ContentType, + to='contenttypes.ContentType', limit_choices_to=OBJECTPERMISSION_OBJECT_TYPES, related_name='object_permissions' ) diff --git a/netbox/users/tables.py b/netbox/users/tables.py index 3b418715a..afb270568 100644 --- a/netbox/users/tables.py +++ b/netbox/users/tables.py @@ -52,7 +52,7 @@ class UserTable(NetBoxTable): model = NetBoxUser fields = ( 'pk', 'id', 'username', 'first_name', 'last_name', 'email', 'groups', 'is_active', 'is_staff', - 'is_superuser', + 'is_superuser', 'last_login', ) default_columns = ('pk', 'username', 'first_name', 'last_name', 'email', 'is_active') diff --git a/netbox/users/tests/test_api.py b/netbox/users/tests/test_api.py index 859dd0b83..090ccc263 100644 --- a/netbox/users/tests/test_api.py +++ b/netbox/users/tests/test_api.py @@ -54,6 +54,38 @@ class UserTest(APIViewTestCases.APIViewTestCase): ) User.objects.bulk_create(users) + def test_that_password_is_changed(self): + """ + Test that password is changed + """ + + obj_perm = ObjectPermission( + name='Test permission', + actions=['change'] + ) + obj_perm.save() + obj_perm.users.add(self.user) + obj_perm.object_types.add(ContentType.objects.get_for_model(self.model)) + + user_credentials = { + 'username': 'user1', + 'password': 'abc123', + } + user = User.objects.create_user(**user_credentials) + + data = { + 'password': 'newpassword' + } + url = reverse('users-api:user-detail', kwargs={'pk': user.id}) + + response = self.client.patch(url, data, format='json', **self.header) + + self.assertEqual(response.status_code, 200) + + updated_user = User.objects.get(id=user.id) + + self.assertTrue(updated_user.check_password(data['password'])) + class GroupTest(APIViewTestCases.APIViewTestCase): model = Group @@ -141,17 +173,25 @@ class TokenTest( """ Test the provisioning of a new REST API token given a valid username and password. """ - data = { + user_credentials = { 'username': 'user1', 'password': 'abc123', } - user = User.objects.create_user(**data) + user = User.objects.create_user(**user_credentials) + + data = { + **user_credentials, + 'description': 'My API token', + 'expires': '2099-12-31T23:59:59Z', + } url = reverse('users-api:token_provision') response = self.client.post(url, data, format='json', **self.header) self.assertEqual(response.status_code, 201) self.assertIn('key', response.data) self.assertEqual(len(response.data['key']), 40) + self.assertEqual(response.data['description'], data['description']) + self.assertEqual(response.data['expires'], data['expires']) token = Token.objects.get(user=user) self.assertEqual(token.key, response.data['key']) diff --git a/netbox/users/tests/test_filtersets.py b/netbox/users/tests/test_filtersets.py index 542b40b83..38a0df813 100644 --- a/netbox/users/tests/test_filtersets.py +++ b/netbox/users/tests/test_filtersets.py @@ -67,6 +67,10 @@ class UserTestCase(TestCase, BaseFilterSetTests): users[1].groups.set([groups[1]]) users[2].groups.set([groups[2]]) + def test_q(self): + params = {'q': 'user1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_username(self): params = {'username': ['User1', 'User2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -117,6 +121,10 @@ class GroupTestCase(TestCase, BaseFilterSetTests): ) Group.objects.bulk_create(groups) + def test_q(self): + params = {'q': 'group 1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Group 1', 'Group 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -164,6 +172,10 @@ class ObjectPermissionTestCase(TestCase, BaseFilterSetTests): permissions[i].users.set([users[i]]) permissions[i].object_types.set([object_types[i]]) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Permission 1', 'Permission 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -235,6 +247,10 @@ class TokenTestCase(TestCase, BaseFilterSetTests): ) Token.objects.bulk_create(tokens) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_user(self): users = User.objects.order_by('id')[:2] params = {'user_id': [users[0].pk, users[1].pk]} diff --git a/netbox/users/views.py b/netbox/users/views.py index 7ff9a8a4d..2e7a47c12 100644 --- a/netbox/users/views.py +++ b/netbox/users/views.py @@ -68,7 +68,7 @@ class UserView(generic.ObjectView): template_name = 'users/user.html' def get_extra_context(self, request, instance): - changelog = ObjectChange.objects.restrict(request.user, 'view').filter(user=request.user)[:20] + changelog = ObjectChange.objects.restrict(request.user, 'view').filter(user=instance)[:20] changelog_table = ObjectChangeTable(changelog) return { diff --git a/netbox/utilities/choices.py b/netbox/utilities/choices.py index b6f97e309..77bfc03ca 100644 --- a/netbox/utilities/choices.py +++ b/netbox/utilities/choices.py @@ -1,6 +1,8 @@ from django.conf import settings from django.utils.translation import gettext_lazy as _ +from .constants import CSV_DELIMITERS + class ChoiceSetMeta(type): """ @@ -230,3 +232,17 @@ class ImportFormatChoices(ChoiceSet): (JSON, 'JSON'), (YAML, 'YAML'), ] + + +class CSVDelimiterChoices(ChoiceSet): + AUTO = 'auto' + COMMA = CSV_DELIMITERS['comma'] + SEMICOLON = CSV_DELIMITERS['semicolon'] + TAB = CSV_DELIMITERS['tab'] + + CHOICES = [ + (AUTO, _('Auto-detect')), + (COMMA, _('Comma')), + (SEMICOLON, _('Semicolon')), + (TAB, _('Tab')), + ] diff --git a/netbox/utilities/constants.py b/netbox/utilities/constants.py index 366d8f796..345894065 100644 --- a/netbox/utilities/constants.py +++ b/netbox/utilities/constants.py @@ -20,7 +20,8 @@ FILTER_NUMERIC_BASED_LOOKUP_MAP = dict( lte='lte', lt='lt', gte='gte', - gt='gt' + gt='gt', + empty='isnull', ) FILTER_NEGATION_LOOKUP_MAP = dict( @@ -45,6 +46,10 @@ HTTP_REQUEST_META_SAFE_COPY = [ 'HTTP_REFERER', 'HTTP_USER_AGENT', 'HTTP_X_FORWARDED_FOR', + 'HTTP_X_FORWARDED_HOST', + 'HTTP_X_FORWARDED_PORT', + 'HTTP_X_FORWARDED_PROTO', + 'HTTP_X_REAL_IP', 'QUERY_STRING', 'REMOTE_ADDR', 'REMOTE_HOST', @@ -53,3 +58,14 @@ HTTP_REQUEST_META_SAFE_COPY = [ 'SERVER_NAME', 'SERVER_PORT', ] + + +# +# CSV-style format delimiters +# + +CSV_DELIMITERS = { + 'comma': ',', + 'semicolon': ';', + 'tab': '\t', +} diff --git a/netbox/utilities/counters.py b/netbox/utilities/counters.py index ee6865ca2..589dacbdb 100644 --- a/netbox/utilities/counters.py +++ b/netbox/utilities/counters.py @@ -1,6 +1,6 @@ from django.apps import apps -from django.db.models import F -from django.db.models.signals import post_delete, post_save +from django.db.models import F, Count, OuterRef, Subquery +from django.db.models.signals import post_delete, post_save, pre_delete from netbox.registry import registry from .fields import CounterCacheField @@ -23,27 +23,52 @@ def update_counter(model, pk, counter_name, value): ) +def update_counts(model, field_name, related_query): + """ + Perform a bulk update for the given model and counter field. For example, + + update_counts(Device, '_interface_count', 'interfaces') + + will effectively set + + Device.objects.update(_interface_count=Count('interfaces')) + """ + subquery = Subquery( + model.objects.filter(pk=OuterRef('pk')).annotate(_count=Count(related_query)).values('_count') + ) + return model.objects.update(**{ + field_name: subquery + }) + + # # Signal handlers # -def post_save_receiver(sender, instance, **kwargs): +def post_save_receiver(sender, instance, created, **kwargs): """ Update counter fields on related objects when a TrackingModelMixin subclass is created or modified. """ for field_name, counter_name in get_counters_for_model(sender): parent_model = sender._meta.get_field(field_name).related_model new_pk = getattr(instance, field_name, None) - old_pk = instance.tracker.get(field_name) if field_name in instance.tracker else None + has_old_field = field_name in instance.tracker + old_pk = instance.tracker.get(field_name) if has_old_field else None # Update the counters on the old and/or new parents as needed if old_pk is not None: update_counter(parent_model, old_pk, counter_name, -1) - if new_pk is not None: + if new_pk is not None and (has_old_field or created): update_counter(parent_model, new_pk, counter_name, 1) -def post_delete_receiver(sender, instance, **kwargs): +def pre_delete_receiver(sender, instance, origin, **kwargs): + model = instance._meta.model + if not model.objects.filter(pk=instance.pk).exists(): + instance._previously_removed = True + + +def post_delete_receiver(sender, instance, origin, **kwargs): """ Update counter fields on related objects when a TrackingModelMixin subclass is deleted. """ @@ -52,7 +77,7 @@ def post_delete_receiver(sender, instance, **kwargs): parent_pk = getattr(instance, field_name, None) # Decrement the parent's counter by one - if parent_pk is not None: + if parent_pk is not None and not hasattr(instance, "_previously_removed"): update_counter(parent_model, parent_pk, counter_name, -1) @@ -85,6 +110,12 @@ def connect_counters(*models): weak=False, dispatch_uid=f'{model._meta.label}.{field.name}' ) + pre_delete.connect( + pre_delete_receiver, + sender=to_model, + weak=False, + dispatch_uid=f'{model._meta.label}.{field.name}' + ) post_delete.connect( post_delete_receiver, sender=to_model, diff --git a/netbox/utilities/error_handlers.py b/netbox/utilities/error_handlers.py index 1d3bdbafd..9af12ac2e 100644 --- a/netbox/utilities/error_handlers.py +++ b/netbox/utilities/error_handlers.py @@ -1,16 +1,26 @@ from django.contrib import messages +from django.db.models import ProtectedError, RestrictedError from django.utils.html import escape from django.utils.safestring import mark_safe +from django.utils.translation import gettext_lazy as _ def handle_protectederror(obj_list, request, e): """ - Generate a user-friendly error message in response to a ProtectedError exception. + Generate a user-friendly error message in response to a ProtectedError or RestrictedError exception. """ - protected_objects = list(e.protected_objects) - protected_count = len(protected_objects) if len(protected_objects) <= 50 else 'More than 50' - err_message = f"Unable to delete {', '.join(str(obj) for obj in obj_list)}. " \ - f"{protected_count} dependent objects were found: " + if type(e) is ProtectedError: + protected_objects = list(e.protected_objects) + elif type(e) is RestrictedError: + protected_objects = list(e.restricted_objects) + else: + raise e + + # Formulate the error message + err_message = _("Unable to delete {objects}. {count} dependent objects were found: ").format( + objects=', '.join(str(obj) for obj in obj_list), + count=len(protected_objects) if len(protected_objects) <= 50 else _('More than 50') + ) # Append dependent objects to error message dependent_objects = [] diff --git a/netbox/utilities/fields.py b/netbox/utilities/fields.py index ca1342df7..65e01db81 100644 --- a/netbox/utilities/fields.py +++ b/netbox/utilities/fields.py @@ -105,6 +105,10 @@ class RestrictedGenericForeignKey(GenericForeignKey): # We avoid looking for values if either ct_id or fkey value is None ct_id = getattr(instance, ct_attname) if ct_id is not None: + # Check if the content type actually exists + if not self.get_content_type(id=ct_id, using=instance._state.db).model_class(): + continue + fk_val = getattr(instance, self.fk_field) if fk_val is not None: fk_dict[ct_id].add(fk_val) @@ -129,13 +133,14 @@ class RestrictedGenericForeignKey(GenericForeignKey): if ct_id is None: return None else: - model = self.get_content_type( + if model := self.get_content_type( id=ct_id, using=obj._state.db - ).model_class() - return ( - model._meta.pk.get_prep_value(getattr(obj, self.fk_field)), - model, - ) + ).model_class(): + return ( + model._meta.pk.get_prep_value(getattr(obj, self.fk_field)), + model, + ) + return None return ( ret_val, diff --git a/netbox/utilities/filters.py b/netbox/utilities/filters.py index 1bf17beae..72c9124a1 100644 --- a/netbox/utilities/filters.py +++ b/netbox/utilities/filters.py @@ -9,6 +9,7 @@ from drf_spectacular.types import OpenApiTypes __all__ = ( 'ContentTypeFilter', 'MACAddressFilter', + 'MultiValueArrayFilter', 'MultiValueCharFilter', 'MultiValueDateFilter', 'MultiValueDateTimeFilter', @@ -85,6 +86,21 @@ class MultiValueTimeFilter(django_filters.MultipleChoiceFilter): field_class = multivalue_field_factory(forms.TimeField) +@extend_schema_field(OpenApiTypes.STR) +class MultiValueArrayFilter(django_filters.MultipleChoiceFilter): + field_class = multivalue_field_factory(forms.CharField) + + def __init__(self, *args, lookup_expr='contains', **kwargs): + # Set default lookup_expr to 'contains' + super().__init__(*args, lookup_expr=lookup_expr, **kwargs) + + def get_filter_predicate(self, v): + # If filtering for null values, ignore lookup_expr + if v is None: + return {self.field_name: None} + return super().get_filter_predicate(v) + + class MACAddressFilter(django_filters.CharFilter): pass diff --git a/netbox/utilities/forms/bulk_import.py b/netbox/utilities/forms/bulk_import.py index 6bdfd5662..57362d3dd 100644 --- a/netbox/utilities/forms/bulk_import.py +++ b/netbox/utilities/forms/bulk_import.py @@ -7,10 +7,10 @@ from django import forms from django.utils.translation import gettext as _ from core.forms.mixins import SyncedDataMixin -from utilities.choices import ImportFormatChoices +from utilities.choices import CSVDelimiterChoices, ImportFormatChoices, ImportMethodChoices +from utilities.constants import CSV_DELIMITERS from utilities.forms.utils import parse_csv from .mixins import BootstrapMixin -from ..choices import ImportMethodChoices class BulkImportForm(BootstrapMixin, SyncedDataMixin, forms.Form): @@ -24,13 +24,20 @@ class BulkImportForm(BootstrapMixin, SyncedDataMixin, forms.Form): help_text=_("Enter object data in CSV, JSON or YAML format.") ) upload_file = forms.FileField( - label="Data file", + label=_("Data file"), required=False ) format = forms.ChoiceField( choices=ImportFormatChoices, initial=ImportFormatChoices.AUTO ) + csv_delimiter = forms.ChoiceField( + choices=CSVDelimiterChoices, + initial=CSVDelimiterChoices.AUTO, + label=_("CSV delimiter"), + help_text=_("The character which delimits CSV fields. Applies only to CSV format."), + required=False + ) data_field = 'data' @@ -54,13 +61,18 @@ class BulkImportForm(BootstrapMixin, SyncedDataMixin, forms.Form): # Determine the data format if self.cleaned_data['format'] == ImportFormatChoices.AUTO: - format = self._detect_format(data) + if self.cleaned_data['csv_delimiter'] != CSVDelimiterChoices.AUTO: + # Specifying the CSV delimiter implies CSV format + format = ImportFormatChoices.CSV + else: + format = self._detect_format(data) else: format = self.cleaned_data['format'] # Process data according to the selected format if format == ImportFormatChoices.CSV: - self.cleaned_data['data'] = self._clean_csv(data) + delimiter = self.cleaned_data.get('csv_delimiter', CSVDelimiterChoices.AUTO) + self.cleaned_data['data'] = self._clean_csv(data, delimiter=delimiter) elif format == ImportFormatChoices.JSON: self.cleaned_data['data'] = self._clean_json(data) elif format == ImportFormatChoices.YAML: @@ -78,7 +90,10 @@ class BulkImportForm(BootstrapMixin, SyncedDataMixin, forms.Form): return ImportFormatChoices.JSON if data.startswith('---') or data.startswith('- '): return ImportFormatChoices.YAML - if ',' in data.split('\n', 1)[0]: + # Look for any of the CSV delimiters in the first line (ignoring the default 'auto' choice) + first_line = data.split('\n', 1)[0] + csv_delimiters = CSV_DELIMITERS.values() + if any(x in first_line for x in csv_delimiters): return ImportFormatChoices.CSV except IndexError: pass @@ -86,15 +101,35 @@ class BulkImportForm(BootstrapMixin, SyncedDataMixin, forms.Form): 'format': _('Unable to detect data format. Please specify.') }) - def _clean_csv(self, data): + def _clean_csv(self, data, delimiter=CSVDelimiterChoices.AUTO): """ Clean CSV-formatted data. The first row will be treated as column headers. """ + # Determine the CSV dialect + if delimiter == CSVDelimiterChoices.AUTO: + # This uses a rough heuristic to detect the CSV dialect based on the presence of supported delimiting + # characters. If the data is malformed, we'll fall back to the default Excel dialect. + delimiters = ''.join(CSV_DELIMITERS.values()) + try: + dialect = csv.Sniffer().sniff(data.strip(), delimiters=delimiters) + except csv.Error: + dialect = csv.excel + elif delimiter in (CSVDelimiterChoices.COMMA, CSVDelimiterChoices.SEMICOLON): + dialect = csv.excel + dialect.delimiter = delimiter + elif delimiter == CSVDelimiterChoices.TAB: + dialect = csv.excel_tab + else: + raise forms.ValidationError({ + 'csv_delimiter': _('Invalid CSV delimiter'), + }) + stream = StringIO(data.strip()) - reader = csv.reader(stream) + reader = csv.reader(stream, dialect=dialect) headers, records = parse_csv(reader) # Set CSV headers for reference by the model form + headers.pop('id', None) self._csv_headers = headers return records diff --git a/netbox/utilities/forms/fields/dynamic.py b/netbox/utilities/forms/fields/dynamic.py index 94870451d..00a1f823e 100644 --- a/netbox/utilities/forms/fields/dynamic.py +++ b/netbox/utilities/forms/fields/dynamic.py @@ -43,7 +43,7 @@ class DynamicMultipleChoiceField(forms.MultipleChoiceField): if data is not None: self.choices = [ - choice for choice in self.choices if choice[0] in data + choice for choice in self.choices if choice[0] and choice[0] in data ] return bound_field diff --git a/netbox/utilities/forms/fields/fields.py b/netbox/utilities/forms/fields/fields.py index db5e4a30d..d4d4ae19b 100644 --- a/netbox/utilities/forms/fields/fields.py +++ b/netbox/utilities/forms/fields/fields.py @@ -103,7 +103,7 @@ class JSONField(_JSONField): def prepare_value(self, value): if isinstance(value, InvalidJSONInput): return value - if value is None: + if value in ('', None): return '' return json.dumps(value, sort_keys=True, indent=4) diff --git a/netbox/utilities/forms/forms.py b/netbox/utilities/forms/forms.py index 9f84e100f..54c9e41cb 100644 --- a/netbox/utilities/forms/forms.py +++ b/netbox/utilities/forms/forms.py @@ -40,8 +40,11 @@ class BulkRenameForm(BootstrapMixin, forms.Form): """ An extendable form to be used for renaming objects in bulk. """ - find = forms.CharField() + find = forms.CharField( + strip=False + ) replace = forms.CharField( + strip=False, required=False ) use_regex = forms.BooleanField( @@ -67,22 +70,24 @@ class CSVModelForm(forms.ModelForm): """ ModelForm used for the import of objects in CSV format. """ - def __init__(self, *args, headers=None, fields=None, **kwargs): - headers = headers or {} - fields = fields or [] + def __init__(self, *args, headers=None, **kwargs): + self.headers = headers or {} super().__init__(*args, **kwargs) # Modify the model form to accommodate any customized to_field_name properties - for field, to_field in headers.items(): + for field, to_field in self.headers.items(): if to_field is not None: self.fields[field].to_field_name = to_field - # Omit any fields not specified (e.g. because the form is being used to - # updated rather than create objects) - if fields: - for field in list(self.fields.keys()): - if field not in fields: - del self.fields[field] + def clean(self): + # Flag any invalid CSV headers + for header in self.headers: + if header not in self.fields: + raise forms.ValidationError( + _("Unrecognized header: {name}").format(name=header) + ) + + return super().clean() class FilterForm(BootstrapMixin, forms.Form): diff --git a/netbox/utilities/forms/utils.py b/netbox/utilities/forms/utils.py index 4d737f163..de8e22727 100644 --- a/netbox/utilities/forms/utils.py +++ b/netbox/utilities/forms/utils.py @@ -40,7 +40,7 @@ def parse_numeric_range(string, base=10): except ValueError: raise forms.ValidationError(f'Range "{dash_range}" is invalid.') values.extend(range(begin, end)) - return list(set(values)) + return sorted(set(values)) def parse_alphanumeric_range(string): @@ -128,10 +128,9 @@ def get_field_value(form, field_name): """ field = form.fields[field_name] - if form.is_bound: - if data := form.data.get(field_name): - if field.valid_value(data): - return data + if form.is_bound and (data := form.data.get(field_name)): + if hasattr(field, 'valid_value') and field.valid_value(data): + return data return form.get_initial_for_field(field, field_name) diff --git a/netbox/utilities/forms/widgets/misc.py b/netbox/utilities/forms/widgets/misc.py index 307031bd8..158b0e67e 100644 --- a/netbox/utilities/forms/widgets/misc.py +++ b/netbox/utilities/forms/widgets/misc.py @@ -65,5 +65,5 @@ class ChoicesWidget(forms.Textarea): if not value: return None if type(value) is list: - return '\n'.join([f'{k},{v}' for k, v in value]) + return '\n'.join([f'{k}:{v}' for k, v in value]) return value diff --git a/netbox/utilities/management/commands/calculate_cached_counts.py b/netbox/utilities/management/commands/calculate_cached_counts.py index 62354797c..f7810604f 100644 --- a/netbox/utilities/management/commands/calculate_cached_counts.py +++ b/netbox/utilities/management/commands/calculate_cached_counts.py @@ -4,6 +4,7 @@ from django.core.management.base import BaseCommand from django.db.models import Count, OuterRef, Subquery from netbox.registry import registry +from utilities.counters import update_counts class Command(BaseCommand): @@ -26,27 +27,9 @@ class Command(BaseCommand): return models - def update_counts(self, model, field_name, related_query): - """ - Perform a bulk update for the given model and counter field. For example, - - update_counts(Device, '_interface_count', 'interfaces') - - will effectively set - - Device.objects.update(_interface_count=Count('interfaces')) - """ - self.stdout.write(f'Updating {model.__name__} {field_name}...') - subquery = Subquery( - model.objects.filter(pk=OuterRef('pk')).annotate(_count=Count(related_query)).values('_count') - ) - return model.objects.update(**{ - field_name: subquery - }) - def handle(self, *model_names, **options): for model, mappings in self.collect_models().items(): for field_name, related_query in mappings.items(): - self.update_counts(model, field_name, related_query) + update_counts(model, field_name, related_query) self.stdout.write(self.style.SUCCESS('Finished.')) diff --git a/netbox/utilities/request.py b/netbox/utilities/request.py index 3b8e1edde..a5ca145e9 100644 --- a/netbox/utilities/request.py +++ b/netbox/utilities/request.py @@ -1,4 +1,5 @@ -from netaddr import IPAddress +from netaddr import AddrFormatError, IPAddress +from urllib.parse import urlparse __all__ = ( 'get_client_ip', @@ -17,11 +18,18 @@ def get_client_ip(request, additional_headers=()): ) for header in HTTP_HEADERS: if header in request.META: - client_ip = request.META[header].split(',')[0] + ip = request.META[header].split(',')[0].strip() try: - return IPAddress(client_ip) - except ValueError: - raise ValueError(f"Invalid IP address set for {header}: {client_ip}") + return IPAddress(ip) + except AddrFormatError: + # Parse the string with urlparse() to remove port number or any other cruft + ip = urlparse(f'//{ip}').hostname + + try: + return IPAddress(ip) + except AddrFormatError: + # We did our best + raise ValueError(f"Invalid IP address set for {header}: {ip}") # Could not determine the client IP address from request headers return None diff --git a/netbox/utilities/tables.py b/netbox/utilities/tables.py index bf6aa15a9..654eb02be 100644 --- a/netbox/utilities/tables.py +++ b/netbox/utilities/tables.py @@ -1,8 +1,27 @@ +from netbox.registry import registry + __all__ = ( + 'get_table_ordering', 'linkify_phone', + 'register_table_column' ) +def get_table_ordering(request, table): + """ + Given a request, return the prescribed table ordering, if any. This may be necessary to determine prior to rendering + the table itself. + """ + # Check for an explicit ordering + if 'sort' in request.GET: + return request.GET['sort'] or None + + # Check for a configured preference + if request.user.is_authenticated: + if preference := request.user.config.get(f'tables.{table.__name__}.ordering'): + return preference + + def linkify_phone(value): """ Render a telephone number as a hyperlink. @@ -10,3 +29,19 @@ def linkify_phone(value): if value is None: return None return f"tel:{value}" + + +def register_table_column(column, name, *tables): + """ + Register a custom column for use on one or more tables. + + Args: + column: The column instance to register + name: The name of the table column + tables: One or more table classes + """ + for table in tables: + reg = registry['tables'][table] + if name in reg: + raise ValueError(f"A column named {name} is already defined for table {table.__name__}") + reg[name] = column diff --git a/netbox/utilities/templates/builtins/copy_content.html b/netbox/utilities/templates/builtins/copy_content.html index 9025a71a1..4d9ad9431 100644 --- a/netbox/utilities/templates/builtins/copy_content.html +++ b/netbox/utilities/templates/builtins/copy_content.html @@ -1,3 +1,3 @@ - + diff --git a/netbox/utilities/templates/form_helpers/render_field.html b/netbox/utilities/templates/form_helpers/render_field.html index 379dcc021..e5a564a3d 100644 --- a/netbox/utilities/templates/form_helpers/render_field.html +++ b/netbox/utilities/templates/form_helpers/render_field.html @@ -29,6 +29,14 @@ {{ label }}
    + {# Include a copy-to-clipboard button #} + {% elif 'data-clipboard' in field.field.widget.attrs %} +
    + {{ field }} + +
    {# Default field rendering #} {% else %} {{ field }} diff --git a/netbox/utilities/templates/helpers/utilization_graph.html b/netbox/utilities/templates/helpers/utilization_graph.html index 967ac8a87..c642f4c34 100644 --- a/netbox/utilities/templates/helpers/utilization_graph.html +++ b/netbox/utilities/templates/helpers/utilization_graph.html @@ -1,3 +1,4 @@ +{% load l10n %}
    {% if utilization >= 35 %}{{ utilization|floatformat:1 }}%{% endif %}
    diff --git a/netbox/utilities/templatetags/builtins/filters.py b/netbox/utilities/templatetags/builtins/filters.py index a52a38116..d18524965 100644 --- a/netbox/utilities/templatetags/builtins/filters.py +++ b/netbox/utilities/templatetags/builtins/filters.py @@ -8,6 +8,7 @@ from django.contrib.contenttypes.models import ContentType from django.utils.html import escape from django.utils.safestring import mark_safe from markdown import markdown +from markdown.extensions.tables import TableExtension from netbox.config import get_config from utilities.markdown import StrikethroughExtension @@ -163,7 +164,12 @@ def render_markdown(value): return '' # Render Markdown - html = markdown(value, extensions=['def_list', 'fenced_code', 'tables', StrikethroughExtension()]) + html = markdown(value, extensions=[ + 'def_list', + 'fenced_code', + StrikethroughExtension(), + TableExtension(use_align_attribute=True), + ]) # If the string is not empty wrap it in rendered-markdown to style tables if html: diff --git a/netbox/utilities/templatetags/builtins/tags.py b/netbox/utilities/templatetags/builtins/tags.py index 35aec1000..dc5d75f48 100644 --- a/netbox/utilities/templatetags/builtins/tags.py +++ b/netbox/utilities/templatetags/builtins/tags.py @@ -1,6 +1,7 @@ from django import template from django.http import QueryDict +from extras.choices import CustomFieldTypeChoices from utilities.utils import dict_to_querydict __all__ = ( @@ -38,6 +39,11 @@ def customfield_value(customfield, value): customfield: A CustomField instance value: The custom field value applied to an object """ + if value: + if customfield.type == CustomFieldTypeChoices.TYPE_SELECT: + value = customfield.get_choice_label(value) + elif customfield.type == CustomFieldTypeChoices.TYPE_MULTISELECT: + value = [customfield.get_choice_label(v) for v in value] return { 'customfield': customfield, 'value': value, @@ -81,13 +87,14 @@ def checkmark(value, show_false=True, true='Yes', false='No'): @register.inclusion_tag('builtins/copy_content.html') -def copy_content(target, prefix=None, color='primary'): +def copy_content(target, prefix=None, color='primary', classes=None): """ Display a copy button to copy the content of a field. """ return { 'target': f'#{prefix or ""}{target}', - 'color': f'btn-{color}' + 'color': f'btn-{color}', + 'classes': classes or '', } diff --git a/netbox/utilities/templatetags/mptt.py b/netbox/utilities/templatetags/mptt.py new file mode 100644 index 000000000..783c2654f --- /dev/null +++ b/netbox/utilities/templatetags/mptt.py @@ -0,0 +1,20 @@ +from django import template +from django.utils.safestring import mark_safe + +register = template.Library() + + +@register.simple_tag() +def nested_tree(obj): + """ + Renders the entire hierarchy of a recursively-nested object (such as Region or SiteGroup). + """ + if not obj: + return mark_safe('—') + + nodes = obj.get_ancestors(include_self=True) + return mark_safe( + ' / '.join( + f'{node}' for node in nodes + ) + ) diff --git a/netbox/utilities/templatetags/navigation.py b/netbox/utilities/templatetags/navigation.py index 4a229e952..7534d7034 100644 --- a/netbox/utilities/templatetags/navigation.py +++ b/netbox/utilities/templatetags/navigation.py @@ -26,11 +26,14 @@ def nav(context: Context) -> Dict: for group in menu.groups: items = [] for item in group.items: - if user.has_perms(item.permissions): - buttons = [ - button for button in item.buttons if user.has_perms(button.permissions) - ] - items.append((item, buttons)) + if not user.has_perms(item.permissions): + continue + if item.staff_only and not user.is_staff: + continue + buttons = [ + button for button in item.buttons if user.has_perms(button.permissions) + ] + items.append((item, buttons)) if items: groups.append((group, items)) if groups: diff --git a/netbox/extras/templatetags/plugins.py b/netbox/utilities/templatetags/plugins.py similarity index 98% rename from netbox/extras/templatetags/plugins.py rename to netbox/utilities/templatetags/plugins.py index 560d15e01..c429bed5f 100644 --- a/netbox/extras/templatetags/plugins.py +++ b/netbox/utilities/templatetags/plugins.py @@ -2,7 +2,7 @@ from django import template as template_ from django.conf import settings from django.utils.safestring import mark_safe -from extras.plugins import PluginTemplateExtension +from netbox.plugins import PluginTemplateExtension from netbox.registry import registry register = template_.Library() diff --git a/netbox/utilities/testing/views.py b/netbox/utilities/testing/views.py index 3c2dc3c45..0a84c5d1b 100644 --- a/netbox/utilities/testing/views.py +++ b/netbox/utilities/testing/views.py @@ -11,7 +11,7 @@ from extras.choices import ObjectChangeActionChoices from extras.models import ObjectChange from netbox.models.features import ChangeLoggingMixin from users.models import ObjectPermission -from utilities.choices import ImportFormatChoices +from utilities.choices import CSVDelimiterChoices, ImportFormatChoices from .base import ModelTestCase from .utils import disable_warnings, post_data @@ -580,7 +580,8 @@ class ViewTestCases: def test_bulk_import_objects_without_permission(self): data = { 'data': self._get_csv_data(), - 'format': 'csv', + 'format': ImportFormatChoices.CSV, + 'csv_delimiter': CSVDelimiterChoices.AUTO, } # Test GET without permission @@ -597,7 +598,8 @@ class ViewTestCases: initial_count = self._get_queryset().count() data = { 'data': self._get_csv_data(), - 'format': 'csv', + 'format': ImportFormatChoices.CSV, + 'csv_delimiter': CSVDelimiterChoices.AUTO, } # Assign model-level permission @@ -626,6 +628,7 @@ class ViewTestCases: data = { 'format': ImportFormatChoices.CSV, 'data': csv_data, + 'csv_delimiter': CSVDelimiterChoices.AUTO, } # Assign model-level permission @@ -658,7 +661,8 @@ class ViewTestCases: initial_count = self._get_queryset().count() data = { 'data': self._get_csv_data(), - 'format': 'csv', + 'format': ImportFormatChoices.CSV, + 'csv_delimiter': CSVDelimiterChoices.AUTO, } # Assign constrained permission diff --git a/netbox/utilities/tests/test_counters.py b/netbox/utilities/tests/test_counters.py index e9561c91b..014c758e9 100644 --- a/netbox/utilities/tests/test_counters.py +++ b/netbox/utilities/tests/test_counters.py @@ -1,7 +1,11 @@ -from django.test import TestCase +from django.contrib.contenttypes.models import ContentType +from django.test import override_settings +from django.urls import reverse from dcim.models import * -from utilities.testing.utils import create_test_device +from users.models import ObjectPermission +from utilities.testing.base import TestCase +from utilities.testing.utils import create_test_device, create_test_user class CountersTest(TestCase): @@ -10,7 +14,6 @@ class CountersTest(TestCase): """ @classmethod def setUpTestData(cls): - # Create devices device1 = create_test_device('Device 1') device2 = create_test_device('Device 2') @@ -29,13 +32,25 @@ class CountersTest(TestCase): self.assertEqual(device1.interface_count, 2) self.assertEqual(device2.interface_count, 2) - Interface.objects.create(device=device1, name='Interface 5') + interface1 = Interface.objects.create(device=device1, name='Interface 5') Interface.objects.create(device=device2, name='Interface 6') device1.refresh_from_db() device2.refresh_from_db() self.assertEqual(device1.interface_count, 3) self.assertEqual(device2.interface_count, 3) + # test saving an existing object - counter should not change + interface1.save() + device1.refresh_from_db() + self.assertEqual(device1.interface_count, 3) + + # test save where tracked object FK back pointer is None + vc = VirtualChassis.objects.create(name='Virtual Chassis 1') + device1.virtual_chassis = vc + device1.save() + vc.refresh_from_db() + self.assertEqual(vc.member_count, 1) + def test_interface_count_deletion(self): """ When a tracked object (Interface) is deleted the tracking counter should be updated. @@ -67,3 +82,25 @@ class CountersTest(TestCase): device2.refresh_from_db() self.assertEqual(device1.interface_count, 1) self.assertEqual(device2.interface_count, 3) + + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*']) + def test_mptt_child_delete(self): + device1, device2 = Device.objects.all() + inventory_item1 = InventoryItem.objects.create(device=device1, name='Inventory Item 1') + inventory_item2 = InventoryItem.objects.create(device=device1, name='Inventory Item 2', parent=inventory_item1) + device1.refresh_from_db() + self.assertEqual(device1.inventory_item_count, 2) + + # Setup bulk_delete for the inventory items + self.add_permissions('dcim.delete_inventoryitem') + pk_list = device1.inventoryitems.values_list('pk', flat=True) + data = { + 'pk': pk_list, + 'confirm': True, + '_confirm': True, # Form button + } + + # Try POST with model-level permission + self.client.post(reverse("dcim:inventoryitem_bulk_delete"), data) + device1.refresh_from_db() + self.assertEqual(device1.inventory_item_count, 0) diff --git a/netbox/utilities/tests/test_filters.py b/netbox/utilities/tests/test_filters.py index 80d611375..6caeb9d14 100644 --- a/netbox/utilities/tests/test_filters.py +++ b/netbox/utilities/tests/test_filters.py @@ -86,6 +86,10 @@ class DummyModel(models.Model): charfield = models.CharField( max_length=10 ) + numberfield = models.IntegerField( + blank=True, + null=True + ) choicefield = models.IntegerField( choices=(('A', 1), ('B', 2), ('C', 3)) ) @@ -108,6 +112,7 @@ class BaseFilterSetTest(TestCase): """ class DummyFilterSet(BaseFilterSet): charfield = django_filters.CharFilter() + numberfield = django_filters.NumberFilter() macaddressfield = MACAddressFilter() modelchoicefield = django_filters.ModelChoiceFilter( field_name='integerfield', # We're pretending this is a ForeignKey field @@ -132,6 +137,7 @@ class BaseFilterSetTest(TestCase): model = DummyModel fields = ( 'charfield', + 'numberfield', 'choicefield', 'datefield', 'datetimefield', @@ -171,6 +177,25 @@ class BaseFilterSetTest(TestCase): self.assertEqual(self.filters['charfield__iew'].exclude, False) self.assertEqual(self.filters['charfield__niew'].lookup_expr, 'iendswith') self.assertEqual(self.filters['charfield__niew'].exclude, True) + self.assertEqual(self.filters['charfield__empty'].lookup_expr, 'empty') + self.assertEqual(self.filters['charfield__empty'].exclude, False) + + def test_number_filter(self): + self.assertIsInstance(self.filters['numberfield'], django_filters.NumberFilter) + self.assertEqual(self.filters['numberfield'].lookup_expr, 'exact') + self.assertEqual(self.filters['numberfield'].exclude, False) + self.assertEqual(self.filters['numberfield__n'].lookup_expr, 'exact') + self.assertEqual(self.filters['numberfield__n'].exclude, True) + self.assertEqual(self.filters['numberfield__lt'].lookup_expr, 'lt') + self.assertEqual(self.filters['numberfield__lt'].exclude, False) + self.assertEqual(self.filters['numberfield__lte'].lookup_expr, 'lte') + self.assertEqual(self.filters['numberfield__lte'].exclude, False) + self.assertEqual(self.filters['numberfield__gt'].lookup_expr, 'gt') + self.assertEqual(self.filters['numberfield__gt'].exclude, False) + self.assertEqual(self.filters['numberfield__gte'].lookup_expr, 'gte') + self.assertEqual(self.filters['numberfield__gte'].exclude, False) + self.assertEqual(self.filters['numberfield__empty'].lookup_expr, 'isnull') + self.assertEqual(self.filters['numberfield__empty'].exclude, False) def test_mac_address_filter(self): self.assertIsInstance(self.filters['macaddressfield'], MACAddressFilter) diff --git a/netbox/utilities/tests/test_forms.py b/netbox/utilities/tests/test_forms.py index 79ba3f4d8..d014d4bbd 100644 --- a/netbox/utilities/tests/test_forms.py +++ b/netbox/utilities/tests/test_forms.py @@ -3,6 +3,7 @@ from django.test import TestCase from utilities.choices import ImportFormatChoices from utilities.forms.bulk_import import BulkImportForm +from utilities.forms.forms import BulkRenameForm from utilities.forms.utils import expand_alphanumeric_pattern, expand_ipaddress_pattern @@ -331,3 +332,49 @@ class ImportFormTest(TestCase): form._detect_format('') with self.assertRaises(forms.ValidationError): form._detect_format('?') + + def test_csv_delimiters(self): + form = BulkImportForm() + + data = ( + "a,b,c\n" + "1,2,3\n" + "4,5,6\n" + ) + self.assertEqual(form._clean_csv(data, delimiter=','), [ + {'a': '1', 'b': '2', 'c': '3'}, + {'a': '4', 'b': '5', 'c': '6'}, + ]) + + data = ( + "a;b;c\n" + "1;2;3\n" + "4;5;6\n" + ) + self.assertEqual(form._clean_csv(data, delimiter=';'), [ + {'a': '1', 'b': '2', 'c': '3'}, + {'a': '4', 'b': '5', 'c': '6'}, + ]) + + data = ( + "a\tb\tc\n" + "1\t2\t3\n" + "4\t5\t6\n" + ) + self.assertEqual(form._clean_csv(data, delimiter='\t'), [ + {'a': '1', 'b': '2', 'c': '3'}, + {'a': '4', 'b': '5', 'c': '6'}, + ]) + + +class BulkRenameFormTest(TestCase): + def test_no_strip_whitespace(self): + # Tests to make sure Bulk Rename Form isn't stripping whitespaces + # See: https://github.com/netbox-community/netbox/issues/13791 + form = BulkRenameForm(data={ + "find": " hello ", + "replace": " world " + }) + self.assertTrue(form.is_valid()) + self.assertEqual(form.cleaned_data["find"], " hello ") + self.assertEqual(form.cleaned_data["replace"], " world ") diff --git a/netbox/utilities/tests/test_request.py b/netbox/utilities/tests/test_request.py new file mode 100644 index 000000000..69f677323 --- /dev/null +++ b/netbox/utilities/tests/test_request.py @@ -0,0 +1,28 @@ +from django.test import TestCase, RequestFactory + +from netaddr import IPAddress +from utilities.request import get_client_ip + + +class GetClientIPTests(TestCase): + def setUp(self): + self.factory = RequestFactory() + + def test_ipv4_address(self): + request = self.factory.get('/', HTTP_X_FORWARDED_FOR='192.168.1.1') + self.assertEqual(get_client_ip(request), IPAddress('192.168.1.1')) + request = self.factory.get('/', HTTP_X_FORWARDED_FOR='192.168.1.1:8080') + self.assertEqual(get_client_ip(request), IPAddress('192.168.1.1')) + + def test_ipv6_address(self): + request = self.factory.get('/', HTTP_X_FORWARDED_FOR='2001:db8::8a2e:370:7334') + self.assertEqual(get_client_ip(request), IPAddress('2001:db8::8a2e:370:7334')) + request = self.factory.get('/', HTTP_X_FORWARDED_FOR='[2001:db8::8a2e:370:7334]') + self.assertEqual(get_client_ip(request), IPAddress('2001:db8::8a2e:370:7334')) + request = self.factory.get('/', HTTP_X_FORWARDED_FOR='[2001:db8::8a2e:370:7334]:8080') + self.assertEqual(get_client_ip(request), IPAddress('2001:db8::8a2e:370:7334')) + + def test_invalid_ip_address(self): + request = self.factory.get('/', HTTP_X_FORWARDED_FOR='invalid_ip') + with self.assertRaises(ValueError): + get_client_ip(request) diff --git a/netbox/utilities/utils.py b/netbox/utilities/utils.py index 9524e242c..f3f8c7c50 100644 --- a/netbox/utilities/utils.py +++ b/netbox/utilities/utils.py @@ -8,7 +8,7 @@ from itertools import count, groupby import bleach from django.contrib.contenttypes.models import ContentType from django.core import serializers -from django.db.models import Count, OuterRef, Subquery +from django.db.models import Count, ManyToOneRel, OuterRef, Subquery from django.db.models.functions import Coalesce from django.http import QueryDict from django.utils import timezone @@ -19,9 +19,9 @@ from jinja2.sandbox import SandboxedEnvironment from mptt.models import MPTTModel from dcim.choices import CableLengthUnitChoices, WeightUnitChoices -from extras.plugins import PluginConfig from extras.utils import is_taggable from netbox.config import get_config +from netbox.plugins import PluginConfig from urllib.parse import urlencode from utilities.constants import HTTP_REQUEST_META_SAFE_COPY @@ -144,15 +144,23 @@ def count_related(model, field): return Coalesce(subquery, 0) -def serialize_object(obj, resolve_tags=True, extra=None): +def serialize_object(obj, resolve_tags=True, extra=None, exclude=None): """ Return a generic JSON representation of an object using Django's built-in serializer. (This is used for things like change logging, not the REST API.) Optionally include a dictionary to supplement the object data. A list of keys can be provided to exclude them from the returned dictionary. Private fields (prefaced with an underscore) are implicitly excluded. + + Args: + obj: The object to serialize + resolve_tags: If true, any assigned tags will be represented by their names + extra: Any additional data to include in the serialized output. Keys provided in this mapping will + override object attributes. + exclude: An iterable of attributes to exclude from the serialized output """ json_str = serializers.serialize('json', [obj]) data = json.loads(json_str)[0]['fields'] + exclude = exclude or [] # Exclude any MPTTModel fields if issubclass(obj.__class__, MPTTModel): @@ -169,16 +177,15 @@ def serialize_object(obj, resolve_tags=True, extra=None): tags = getattr(obj, '_tags', None) or obj.tags.all() data['tags'] = sorted([tag.name for tag in tags]) + # Skip excluded and private (prefixes with an underscore) attributes + for key in list(data.keys()): + if key in exclude or (isinstance(key, str) and key.startswith('_')): + data.pop(key) + # Append any extra data if extra is not None: data.update(extra) - # Copy keys to list to avoid 'dictionary changed size during iteration' exception - for key in list(data): - # Private fields shouldn't be logged in the object change - if isinstance(key, str) and key.startswith('_'): - data.pop(key) - return data @@ -567,3 +574,20 @@ def local_now(): Return the current date & time in the system timezone. """ return localtime(timezone.now()) + + +def get_related_models(model, ordered=True): + """ + Return a list of all models which have a ForeignKey to the given model and the name of the field. For example, + `get_related_models(Tenant)` will return all models which have a ForeignKey relationship to Tenant. + """ + related_models = [ + (field.related_model, field.remote_field.name) + for field in model._meta.related_objects + if type(field) is ManyToOneRel + ] + + if ordered: + return sorted(related_models, key=lambda x: x[0]._meta.verbose_name.lower()) + + return related_models diff --git a/netbox/virtualization/api/nested_serializers.py b/netbox/virtualization/api/nested_serializers.py index 8c3f57c1d..afb7e39a1 100644 --- a/netbox/virtualization/api/nested_serializers.py +++ b/netbox/virtualization/api/nested_serializers.py @@ -2,12 +2,13 @@ from drf_spectacular.utils import extend_schema_serializer from rest_framework import serializers from netbox.api.serializers import WritableNestedSerializer -from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface +from virtualization.models import * __all__ = [ 'NestedClusterGroupSerializer', 'NestedClusterSerializer', 'NestedClusterTypeSerializer', + 'NestedVirtualDiskSerializer', 'NestedVMInterfaceSerializer', 'NestedVirtualMachineSerializer', ] @@ -72,3 +73,12 @@ class NestedVMInterfaceSerializer(WritableNestedSerializer): class Meta: model = VMInterface fields = ['id', 'url', 'display', 'virtual_machine', 'name'] + + +class NestedVirtualDiskSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualdisk-detail') + virtual_machine = NestedVirtualMachineSerializer(read_only=True) + + class Meta: + model = VirtualDisk + fields = ['id', 'url', 'display', 'virtual_machine', 'name', 'size'] diff --git a/netbox/virtualization/api/serializers.py b/netbox/virtualization/api/serializers.py index c9fa559aa..7ed36388b 100644 --- a/netbox/virtualization/api/serializers.py +++ b/netbox/virtualization/api/serializers.py @@ -6,15 +6,14 @@ from dcim.api.nested_serializers import ( ) from dcim.choices import InterfaceModeChoices from extras.api.nested_serializers import NestedConfigTemplateSerializer -from ipam.api.nested_serializers import ( - NestedIPAddressSerializer, NestedL2VPNTerminationSerializer, NestedVLANSerializer, NestedVRFSerializer, -) +from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedVLANSerializer, NestedVRFSerializer from ipam.models import VLAN from netbox.api.fields import ChoiceField, SerializedPKRelatedField from netbox.api.serializers import NetBoxModelSerializer from tenancy.api.nested_serializers import NestedTenantSerializer from virtualization.choices import * -from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface +from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualDisk, VirtualMachine, VMInterface +from vpn.api.nested_serializers import NestedL2VPNTerminationSerializer from .nested_serializers import * @@ -84,6 +83,7 @@ class VirtualMachineSerializer(NetBoxModelSerializer): # Counter fields interface_count = serializers.IntegerField(read_only=True) + virtual_disk_count = serializers.IntegerField(read_only=True) class Meta: model = VirtualMachine @@ -91,7 +91,7 @@ class VirtualMachineSerializer(NetBoxModelSerializer): 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'comments', 'config_template', 'local_context_data', 'tags', 'custom_fields', 'created', 'last_updated', - 'interface_count', + 'interface_count', 'virtual_disk_count', ] validators = [] @@ -104,7 +104,7 @@ class VirtualMachineWithConfigContextSerializer(VirtualMachineSerializer): 'id', 'url', 'display', 'name', 'status', 'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'primary_ip', 'primary_ip4', 'primary_ip6', 'vcpus', 'memory', 'disk', 'description', 'comments', 'local_context_data', 'tags', 'custom_fields', 'config_context', 'created', 'last_updated', - 'interface_count', + 'interface_count', 'virtual_disk_count', ] @extend_schema_field(serializers.JSONField(allow_null=True)) @@ -159,3 +159,19 @@ class VMInterfaceSerializer(NetBoxModelSerializer): }) return super().validate(data) + + +# +# Virtual Disk +# + +class VirtualDiskSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='virtualization-api:virtualdisk-detail') + virtual_machine = NestedVirtualMachineSerializer() + + class Meta: + model = VirtualDisk + fields = [ + 'id', 'url', 'virtual_machine', 'name', 'description', 'size', 'tags', 'custom_fields', 'created', + 'last_updated', + ] diff --git a/netbox/virtualization/api/urls.py b/netbox/virtualization/api/urls.py index 2ceeb8ce6..ce71605a1 100644 --- a/netbox/virtualization/api/urls.py +++ b/netbox/virtualization/api/urls.py @@ -13,6 +13,7 @@ router.register('clusters', views.ClusterViewSet) # VirtualMachines router.register('virtual-machines', views.VirtualMachineViewSet) router.register('interfaces', views.VMInterfaceViewSet) +router.register('virtual-disks', views.VirtualDiskViewSet) app_name = 'virtualization-api' urlpatterns = router.urls diff --git a/netbox/virtualization/api/views.py b/netbox/virtualization/api/views.py index 5b9cf4117..3ba2bb97f 100644 --- a/netbox/virtualization/api/views.py +++ b/netbox/virtualization/api/views.py @@ -1,11 +1,12 @@ from rest_framework.routers import APIRootView from dcim.models import Device -from extras.api.mixins import ConfigContextQuerySetMixin +from extras.api.mixins import ConfigContextQuerySetMixin, RenderConfigMixin from netbox.api.viewsets import NetBoxModelViewSet +from utilities.query_functions import CollateAsChar from utilities.utils import count_related from virtualization import filtersets -from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface +from virtualization.models import * from . import serializers @@ -52,9 +53,10 @@ class ClusterViewSet(NetBoxModelViewSet): # Virtual machines # -class VirtualMachineViewSet(ConfigContextQuerySetMixin, NetBoxModelViewSet): +class VirtualMachineViewSet(ConfigContextQuerySetMixin, RenderConfigMixin, NetBoxModelViewSet): queryset = VirtualMachine.objects.prefetch_related( - 'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'primary_ip4', 'primary_ip6', 'tags' + 'site', 'cluster', 'device', 'role', 'tenant', 'platform', 'primary_ip4', 'primary_ip6', 'config_template', + 'tags', 'virtualdisks', ) filterset_class = filtersets.VirtualMachineFilterSet @@ -87,3 +89,16 @@ class VMInterfaceViewSet(NetBoxModelViewSet): serializer_class = serializers.VMInterfaceSerializer filterset_class = filtersets.VMInterfaceFilterSet brief_prefetch_fields = ['virtual_machine'] + + def get_bulk_destroy_queryset(self): + # Ensure child interfaces are deleted prior to their parents + return self.get_queryset().order_by('virtual_machine', 'parent', CollateAsChar('_name')) + + +class VirtualDiskViewSet(NetBoxModelViewSet): + queryset = VirtualDisk.objects.prefetch_related( + 'virtual_machine', 'tags', + ) + serializer_class = serializers.VirtualDiskSerializer + filterset_class = filtersets.VirtualDiskFilterSet + brief_prefetch_fields = ['virtual_machine'] diff --git a/netbox/virtualization/apps.py b/netbox/virtualization/apps.py index 8db943ea1..f0af9a163 100644 --- a/netbox/virtualization/apps.py +++ b/netbox/virtualization/apps.py @@ -5,7 +5,7 @@ class VirtualizationConfig(AppConfig): name = 'virtualization' def ready(self): - from . import search + from . import search, signals from .models import VirtualMachine from utilities.counters import connect_counters diff --git a/netbox/virtualization/filtersets.py b/netbox/virtualization/filtersets.py index 571dbe64b..78f6566d3 100644 --- a/netbox/virtualization/filtersets.py +++ b/netbox/virtualization/filtersets.py @@ -6,16 +6,18 @@ from dcim.filtersets import CommonInterfaceFilterSet from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup from extras.filtersets import LocalConfigContextFilterSet from extras.models import ConfigTemplate +from ipam.filtersets import PrimaryIPFilterSet from netbox.filtersets import OrganizationalModelFilterSet, NetBoxModelFilterSet from tenancy.filtersets import TenancyFilterSet, ContactModelFilterSet from utilities.filters import MultiValueCharFilter, MultiValueMACAddressFilter, TreeNodeMultipleChoiceFilter from .choices import * -from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface +from .models import * __all__ = ( 'ClusterFilterSet', 'ClusterGroupFilterSet', 'ClusterTypeFilterSet', + 'VirtualDiskFilterSet', 'VirtualMachineFilterSet', 'VMInterfaceFilterSet', ) @@ -99,13 +101,14 @@ class ClusterFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilte class Meta: model = Cluster - fields = ['id', 'name'] + fields = ['id', 'name', 'description'] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter( Q(name__icontains=value) | + Q(description__icontains=value) | Q(comments__icontains=value) ) @@ -114,7 +117,8 @@ class VirtualMachineFilterSet( NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilterSet, - LocalConfigContextFilterSet + LocalConfigContextFilterSet, + PrimaryIPFilterSet, ): status = django_filters.MultipleChoiceFilter( choices=VirtualMachineStatusChoices, @@ -236,13 +240,14 @@ class VirtualMachineFilterSet( class Meta: model = VirtualMachine - fields = ['id', 'cluster', 'vcpus', 'memory', 'disk'] + fields = ['id', 'cluster', 'vcpus', 'memory', 'disk', 'description'] def search(self, queryset, name, value): if not value.strip(): return queryset return queryset.filter( Q(name__icontains=value) | + Q(description__icontains=value) | Q(comments__icontains=value) | Q(primary_ip4__address__startswith=value) | Q(primary_ip6__address__startswith=value) @@ -303,3 +308,29 @@ class VMInterfaceFilterSet(NetBoxModelFilterSet, CommonInterfaceFilterSet): Q(name__icontains=value) | Q(description__icontains=value) ) + + +class VirtualDiskFilterSet(NetBoxModelFilterSet): + virtual_machine_id = django_filters.ModelMultipleChoiceFilter( + field_name='virtual_machine', + queryset=VirtualMachine.objects.all(), + label=_('Virtual machine (ID)'), + ) + virtual_machine = django_filters.ModelMultipleChoiceFilter( + field_name='virtual_machine__name', + queryset=VirtualMachine.objects.all(), + to_field_name='name', + label=_('Virtual machine'), + ) + + class Meta: + model = VirtualDisk + fields = ['id', 'name', 'size', 'description'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) + ) diff --git a/netbox/virtualization/forms/bulk_create.py b/netbox/virtualization/forms/bulk_create.py index 7153453ec..a4ad867d4 100644 --- a/netbox/virtualization/forms/bulk_create.py +++ b/netbox/virtualization/forms/bulk_create.py @@ -3,9 +3,10 @@ from django.utils.translation import gettext_lazy as _ from utilities.forms import BootstrapMixin, form_from_model from utilities.forms.fields import ExpandableNameField -from virtualization.models import VMInterface, VirtualMachine +from virtualization.models import VirtualDisk, VMInterface, VirtualMachine __all__ = ( + 'VirtualDiskBulkCreateForm', 'VMInterfaceBulkCreateForm', ) @@ -30,3 +31,10 @@ class VMInterfaceBulkCreateForm( VirtualMachineBulkAddComponentForm ): replication_fields = ('name',) + + +class VirtualDiskBulkCreateForm( + form_from_model(VirtualDisk, ['size', 'description', 'tags']), + VirtualMachineBulkAddComponentForm +): + replication_fields = ('name',) diff --git a/netbox/virtualization/forms/bulk_edit.py b/netbox/virtualization/forms/bulk_edit.py index a33ffac53..b76d8a160 100644 --- a/netbox/virtualization/forms/bulk_edit.py +++ b/netbox/virtualization/forms/bulk_edit.py @@ -18,6 +18,8 @@ __all__ = ( 'ClusterBulkEditForm', 'ClusterGroupBulkEditForm', 'ClusterTypeBulkEditForm', + 'VirtualDiskBulkEditForm', + 'VirtualDiskBulkRenameForm', 'VirtualMachineBulkEditForm', 'VMInterfaceBulkEditForm', 'VMInterfaceBulkRenameForm', @@ -294,9 +296,10 @@ class VMInterfaceBulkEditForm(NetBoxModelBulkEditForm): # Check interface sites. First interface should set site, further interfaces will either continue the # loop or reset back to no site and break the loop. for interface in interfaces: + vm_site = interface.virtual_machine.site or interface.virtual_machine.cluster.site if site is None: - site = interface.virtual_machine.cluster.site - elif interface.virtual_machine.cluster.site is not site: + site = vm_site + elif vm_site is not site: site = None break @@ -315,3 +318,35 @@ class VMInterfaceBulkRenameForm(BulkRenameForm): queryset=VMInterface.objects.all(), widget=forms.MultipleHiddenInput() ) + + +class VirtualDiskBulkEditForm(NetBoxModelBulkEditForm): + virtual_machine = forms.ModelChoiceField( + label=_('Virtual machine'), + queryset=VirtualMachine.objects.all(), + required=False, + disabled=True, + widget=forms.HiddenInput() + ) + size = forms.IntegerField( + required=False, + label=_('Size (GB)') + ) + description = forms.CharField( + label=_('Description'), + max_length=100, + required=False + ) + + model = VirtualDisk + fieldsets = ( + (None, ('size', 'description')), + ) + nullable_fields = ('description',) + + +class VirtualDiskBulkRenameForm(BulkRenameForm): + pk = forms.ModelMultipleChoiceField( + queryset=VirtualDisk.objects.all(), + widget=forms.MultipleHiddenInput() + ) diff --git a/netbox/virtualization/forms/bulk_import.py b/netbox/virtualization/forms/bulk_import.py index 04fe2d7ae..5d44ddceb 100644 --- a/netbox/virtualization/forms/bulk_import.py +++ b/netbox/virtualization/forms/bulk_import.py @@ -14,6 +14,7 @@ __all__ = ( 'ClusterImportForm', 'ClusterGroupImportForm', 'ClusterTypeImportForm', + 'VirtualDiskImportForm', 'VirtualMachineImportForm', 'VMInterfaceImportForm', ) @@ -199,3 +200,17 @@ class VMInterfaceImportForm(NetBoxModelImportForm): return True else: return self.cleaned_data['enabled'] + + +class VirtualDiskImportForm(NetBoxModelImportForm): + virtual_machine = CSVModelChoiceField( + label=_('Virtual machine'), + queryset=VirtualMachine.objects.all(), + to_field_name='name' + ) + + class Meta: + model = VirtualDisk + fields = ( + 'virtual_machine', 'name', 'size', 'description', 'tags' + ) diff --git a/netbox/virtualization/forms/filtersets.py b/netbox/virtualization/forms/filtersets.py index 99ac0cb77..5b0d097f8 100644 --- a/netbox/virtualization/forms/filtersets.py +++ b/netbox/virtualization/forms/filtersets.py @@ -4,18 +4,20 @@ from django.utils.translation import gettext_lazy as _ from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup from extras.forms import LocalConfigContextFilterForm from extras.models import ConfigTemplate -from ipam.models import L2VPN, VRF +from ipam.models import VRF from netbox.forms import NetBoxModelFilterSetForm from tenancy.forms import ContactModelFilterForm, TenancyFilterForm from utilities.forms import BOOLEAN_WITH_BLANK_CHOICES from utilities.forms.fields import DynamicModelMultipleChoiceField, TagFilterField from virtualization.choices import * from virtualization.models import * +from vpn.models import L2VPN __all__ = ( 'ClusterFilterForm', 'ClusterGroupFilterForm', 'ClusterTypeFilterForm', + 'VirtualDiskFilterForm', 'VirtualMachineFilterForm', 'VMInterfaceFilterForm', ) @@ -44,6 +46,7 @@ class ClusterFilterForm(TenancyFilterForm, ContactModelFilterForm, NetBoxModelFi (_('Tenant'), ('tenant_group_id', 'tenant_id')), (_('Contacts'), ('contact', 'contact_role', 'contact_group')), ) + selector_fields = ('filter_id', 'q', 'group_id') type_id = DynamicModelMultipleChoiceField( queryset=ClusterType.objects.all(), required=False, @@ -186,6 +189,7 @@ class VMInterfaceFilterForm(NetBoxModelFilterSetForm): (_('Virtual Machine'), ('cluster_id', 'virtual_machine_id')), (_('Attributes'), ('enabled', 'mac_address', 'vrf_id', 'l2vpn_id')), ) + selector_fields = ('filter_id', 'q', 'virtual_machine_id') cluster_id = DynamicModelMultipleChoiceField( queryset=Cluster.objects.all(), required=False, @@ -221,3 +225,23 @@ class VMInterfaceFilterForm(NetBoxModelFilterSetForm): label=_('L2VPN') ) tag = TagFilterField(model) + + +class VirtualDiskFilterForm(NetBoxModelFilterSetForm): + model = VirtualDisk + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Virtual Machine'), ('virtual_machine_id',)), + (_('Attributes'), ('size',)), + ) + virtual_machine_id = DynamicModelMultipleChoiceField( + queryset=VirtualMachine.objects.all(), + required=False, + label=_('Virtual machine') + ) + size = forms.IntegerField( + label=_('Size (GB)'), + required=False, + min_value=1 + ) + tag = TagFilterField(model) diff --git a/netbox/virtualization/forms/model_forms.py b/netbox/virtualization/forms/model_forms.py index 21dbc895a..cbbf5ea66 100644 --- a/netbox/virtualization/forms/model_forms.py +++ b/netbox/virtualization/forms/model_forms.py @@ -22,6 +22,7 @@ __all__ = ( 'ClusterGroupForm', 'ClusterRemoveDevicesForm', 'ClusterTypeForm', + 'VirtualDiskForm', 'VirtualMachineForm', 'VMInterfaceForm', ) @@ -151,8 +152,12 @@ class ClusterAddDevicesForm(BootstrapMixin, forms.Form): for device in self.cleaned_data.get('devices', []): if device.site != self.cluster.site: raise ValidationError({ - 'devices': _("{} belongs to a different site ({}) than the cluster ({})").format( - device, device.site, self.cluster.site + 'devices': _( + "{device} belongs to a different site ({device_site}) than the cluster ({cluster_site})" + ).format( + device=device, + device_site=device.site, + cluster_site=self.cluster.site ) }) @@ -200,7 +205,8 @@ class VirtualMachineForm(TenancyForm, NetBoxModelForm): platform = DynamicModelChoiceField( label=_('Platform'), queryset=Platform.objects.all(), - required=False + required=False, + selector=True ) local_context_data = JSONField( required=False, @@ -235,6 +241,11 @@ class VirtualMachineForm(TenancyForm, NetBoxModelForm): if self.instance.pk: + # Disable the disk field if one or more VirtualDisks have been created + if self.instance.virtualdisks.exists(): + self.fields['disk'].widget.attrs['disabled'] = True + self.fields['disk'].help_text = _("Disk size is managed via the attachment of virtual disks.") + # Compile list of choices for primary IPv4 and IPv6 addresses for family in [4, 6]: ip_choices = [(None, '---------')] @@ -271,12 +282,26 @@ class VirtualMachineForm(TenancyForm, NetBoxModelForm): self.fields['primary_ip6'].widget.attrs['readonly'] = True -class VMInterfaceForm(InterfaceCommonForm, NetBoxModelForm): +# +# Virtual machine components +# + +class VMComponentForm(NetBoxModelForm): virtual_machine = DynamicModelChoiceField( label=_('Virtual machine'), queryset=VirtualMachine.objects.all(), selector=True ) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Disable reassignment of VirtualMachine when editing an existing instance + if self.instance.pk: + self.fields['virtual_machine'].disabled = True + + +class VMInterfaceForm(InterfaceCommonForm, VMComponentForm): parent = DynamicModelChoiceField( queryset=VMInterface.objects.all(), required=False, @@ -343,9 +368,15 @@ class VMInterfaceForm(InterfaceCommonForm, NetBoxModelForm): 'mode': HTMXSelect(), } - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - # Disable reassignment of VirtualMachine when editing an existing instance - if self.instance.pk: - self.fields['virtual_machine'].disabled = True +class VirtualDiskForm(VMComponentForm): + + fieldsets = ( + (_('Disk'), ('virtual_machine', 'name', 'size', 'description', 'tags')), + ) + + class Meta: + model = VirtualDisk + fields = [ + 'virtual_machine', 'name', 'size', 'description', 'tags', + ] diff --git a/netbox/virtualization/forms/object_create.py b/netbox/virtualization/forms/object_create.py index 3ea374039..2f6844a5c 100644 --- a/netbox/virtualization/forms/object_create.py +++ b/netbox/virtualization/forms/object_create.py @@ -1,8 +1,9 @@ from django.utils.translation import gettext_lazy as _ from utilities.forms.fields import ExpandableNameField -from .model_forms import VMInterfaceForm +from .model_forms import VirtualDiskForm, VMInterfaceForm __all__ = ( + 'VirtualDiskCreateForm', 'VMInterfaceCreateForm', ) @@ -15,3 +16,13 @@ class VMInterfaceCreateForm(VMInterfaceForm): class Meta(VMInterfaceForm.Meta): exclude = ('name',) + + +class VirtualDiskCreateForm(VirtualDiskForm): + name = ExpandableNameField( + label=_('Name'), + ) + replication_fields = ('name',) + + class Meta(VirtualDiskForm.Meta): + exclude = ('name',) diff --git a/netbox/virtualization/graphql/schema.py b/netbox/virtualization/graphql/schema.py index 88e6aac64..1461faaeb 100644 --- a/netbox/virtualization/graphql/schema.py +++ b/netbox/virtualization/graphql/schema.py @@ -36,3 +36,9 @@ class VirtualizationQuery(graphene.ObjectType): def resolve_vm_interface_list(root, info, **kwargs): return gql_query_optimizer(models.VMInterface.objects.all(), info) + + virtual_disk = ObjectField(VirtualDiskType) + virtual_disk_list = ObjectListField(VirtualDiskType) + + def resolve_virtual_disk_list(root, info, **kwargs): + return gql_query_optimizer(models.VirtualDisk.objects.all(), info) diff --git a/netbox/virtualization/graphql/types.py b/netbox/virtualization/graphql/types.py index 96b0fc875..9b97e1dc9 100644 --- a/netbox/virtualization/graphql/types.py +++ b/netbox/virtualization/graphql/types.py @@ -8,6 +8,7 @@ __all__ = ( 'ClusterType', 'ClusterGroupType', 'ClusterTypeType', + 'VirtualDiskType', 'VirtualMachineType', 'VMInterfaceType', ) @@ -54,3 +55,14 @@ class VMInterfaceType(IPAddressesMixin, ComponentObjectType): def resolve_mode(self, info): return self.mode or None + + +class VirtualDiskType(ComponentObjectType): + + class Meta: + model = models.VirtualDisk + fields = '__all__' + filterset_class = filtersets.VirtualDiskFilterSet + + def resolve_mode(self, info): + return self.mode or None diff --git a/netbox/virtualization/migrations/0035_virtualmachine_interface_count.py b/netbox/virtualization/migrations/0035_virtualmachine_interface_count.py index 5f52d32e0..abed09d7e 100644 --- a/netbox/virtualization/migrations/0035_virtualmachine_interface_count.py +++ b/netbox/virtualization/migrations/0035_virtualmachine_interface_count.py @@ -2,17 +2,13 @@ from django.db import migrations from django.db.models import Count import utilities.fields +from utilities.counters import update_counts def populate_virtualmachine_counts(apps, schema_editor): VirtualMachine = apps.get_model('virtualization', 'VirtualMachine') - vms = list(VirtualMachine.objects.annotate(_interface_count=Count('interfaces', distinct=True))) - - for vm in vms: - vm.interface_count = vm._interface_count - - VirtualMachine.objects.bulk_update(vms, ['interface_count']) + update_counts(VirtualMachine, 'interface_count', 'interfaces') class Migration(migrations.Migration): diff --git a/netbox/virtualization/migrations/0037_protect_child_interfaces.py b/netbox/virtualization/migrations/0037_protect_child_interfaces.py new file mode 100644 index 000000000..ab6cf0cb3 --- /dev/null +++ b/netbox/virtualization/migrations/0037_protect_child_interfaces.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.6 on 2023-10-20 11:48 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('virtualization', '0036_virtualmachine_config_template'), + ] + + operations = [ + migrations.AlterField( + model_name='vminterface', + name='parent', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.RESTRICT, related_name='child_interfaces', to='virtualization.vminterface'), + ), + ] diff --git a/netbox/virtualization/migrations/0038_virtualdisk.py b/netbox/virtualization/migrations/0038_virtualdisk.py new file mode 100644 index 000000000..59d45c975 --- /dev/null +++ b/netbox/virtualization/migrations/0038_virtualdisk.py @@ -0,0 +1,50 @@ +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers +import utilities.fields +import utilities.json +import utilities.ordering +import utilities.query_functions +import utilities.tracking + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0099_cachedvalue_ordering'), + ('virtualization', '0037_protect_child_interfaces'), + ] + + operations = [ + migrations.AddField( + model_name='virtualmachine', + name='virtual_disk_count', + field=utilities.fields.CounterCacheField(default=0, editable=False, to_field='virtual_machine', to_model='virtualization.VirtualDisk'), + ), + migrations.CreateModel( + name='VirtualDisk', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('name', models.CharField(max_length=64)), + ('_name', utilities.fields.NaturalOrderingField('name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize_interface)), + ('description', models.CharField(blank=True, max_length=200)), + ('size', models.PositiveIntegerField()), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('virtual_machine', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(class)ss', to='virtualization.virtualmachine')), + ], + options={ + 'verbose_name': 'virtual disk', + 'verbose_name_plural': 'virtual disks', + 'ordering': ('virtual_machine', utilities.query_functions.CollateAsChar('_name')), + 'abstract': False, + }, + bases=(models.Model, utilities.tracking.TrackingModelMixin), + ), + migrations.AddConstraint( + model_name='virtualdisk', + constraint=models.UniqueConstraint(fields=('virtual_machine', 'name'), name='virtualization_virtualdisk_unique_virtual_machine_name'), + ), + ] diff --git a/netbox/virtualization/models/clusters.py b/netbox/virtualization/models/clusters.py index 6c8fd0c4b..f8acc4c36 100644 --- a/netbox/virtualization/models/clusters.py +++ b/netbox/virtualization/models/clusters.py @@ -135,10 +135,9 @@ class Cluster(ContactsMixin, PrimaryModel): # If the Cluster is assigned to a Site, verify that all host Devices belong to that Site. if self.pk and self.site: - nonsite_devices = Device.objects.filter(cluster=self).exclude(site=self.site).count() - if nonsite_devices: + if nonsite_devices := Device.objects.filter(cluster=self).exclude(site=self.site).count(): raise ValidationError({ - 'site': _("{} devices are assigned as hosts for this cluster but are not in site {}").format( - nonsite_devices, self.site - ) + 'site': _( + "{count} devices are assigned as hosts for this cluster but are not in site {site}" + ).format(count=nonsite_devices, site=self.site) }) diff --git a/netbox/virtualization/models/virtualmachines.py b/netbox/virtualization/models/virtualmachines.py index eb6c2a8b0..233d51d63 100644 --- a/netbox/virtualization/models/virtualmachines.py +++ b/netbox/virtualization/models/virtualmachines.py @@ -2,7 +2,7 @@ from django.contrib.contenttypes.fields import GenericRelation from django.core.exceptions import ValidationError from django.core.validators import MinValueValidator from django.db import models -from django.db.models import Q +from django.db.models import Q, Sum from django.db.models.functions import Lower from django.urls import reverse from django.utils.translation import gettext_lazy as _ @@ -21,6 +21,7 @@ from utilities.tracking import TrackingModelMixin from virtualization.choices import * __all__ = ( + 'VirtualDisk', 'VirtualMachine', 'VMInterface', ) @@ -130,6 +131,10 @@ class VirtualMachine(ContactsMixin, RenderConfigMixin, ConfigContextModel, Prima to_model='virtualization.VMInterface', to_field='virtual_machine' ) + virtual_disk_count = CounterCacheField( + to_model='virtualization.VirtualDisk', + to_field='virtual_machine' + ) objects = ConfigContextModelQuerySet.as_manager() @@ -192,6 +197,19 @@ class VirtualMachine(ContactsMixin, RenderConfigMixin, ConfigContextModel, Prima ).format(device=self.device, cluster=self.cluster) }) + # Validate aggregate disk size + if self.pk: + total_disk = self.virtualdisks.aggregate(Sum('size', default=0))['size__sum'] + if total_disk and self.disk is None: + self.disk = total_disk + elif total_disk and self.disk != total_disk: + raise ValidationError({ + 'disk': _( + "The specified disk size ({size}) must match the aggregate size of assigned virtual disks " + "({total_size})." + ).format(size=self.disk, total_size=total_disk) + }) + # Validate primary IP addresses interfaces = self.interfaces.all() if self.pk else None for family in (4, 6): @@ -236,11 +254,19 @@ class VirtualMachine(ContactsMixin, RenderConfigMixin, ConfigContextModel, Prima return None -class VMInterface(NetBoxModel, BaseInterface, TrackingModelMixin): +# +# VM components +# + + +class ComponentModel(NetBoxModel): + """ + An abstract model inherited by any model which has a parent VirtualMachine. + """ virtual_machine = models.ForeignKey( to='virtualization.VirtualMachine', on_delete=models.CASCADE, - related_name='interfaces' + related_name='%(class)ss' ) name = models.CharField( verbose_name=_('name'), @@ -257,6 +283,42 @@ class VMInterface(NetBoxModel, BaseInterface, TrackingModelMixin): max_length=200, blank=True ) + + class Meta: + abstract = True + ordering = ('virtual_machine', CollateAsChar('_name')) + constraints = ( + models.UniqueConstraint( + fields=('virtual_machine', 'name'), + name='%(app_label)s_%(class)s_unique_virtual_machine_name' + ), + ) + + def __str__(self): + return self.name + + def to_objectchange(self, action): + objectchange = super().to_objectchange(action) + objectchange.related_object = self.virtual_machine + return objectchange + + @property + def parent_object(self): + return self.virtual_machine + + +class VMInterface(ComponentModel, BaseInterface, TrackingModelMixin): + virtual_machine = models.ForeignKey( + to='virtualization.VirtualMachine', + on_delete=models.CASCADE, + related_name='interfaces' # Override ComponentModel + ) + _name = NaturalOrderingField( + target_field='name', + naturalize_function=naturalize_interface, + max_length=100, + blank=True + ) untagged_vlan = models.ForeignKey( to='ipam.VLAN', on_delete=models.SET_NULL, @@ -291,27 +353,23 @@ class VMInterface(NetBoxModel, BaseInterface, TrackingModelMixin): object_id_field='interface_id', related_query_name='+' ) + tunnel_terminations = GenericRelation( + to='vpn.TunnelTermination', + content_type_field='termination_type', + object_id_field='termination_id', + related_query_name='vminterface', + ) l2vpn_terminations = GenericRelation( - to='ipam.L2VPNTermination', + to='vpn.L2VPNTermination', content_type_field='assigned_object_type', object_id_field='assigned_object_id', related_query_name='vminterface', ) - class Meta: - ordering = ('virtual_machine', CollateAsChar('_name')) - constraints = ( - models.UniqueConstraint( - fields=('virtual_machine', 'name'), - name='%(app_label)s_%(class)s_unique_virtual_machine_name' - ), - ) + class Meta(ComponentModel.Meta): verbose_name = _('interface') verbose_name_plural = _('interfaces') - def __str__(self): - return self.name - def get_absolute_url(self): return reverse('virtualization:vminterface', kwargs={'pk': self.pk}) @@ -359,15 +417,19 @@ class VMInterface(NetBoxModel, BaseInterface, TrackingModelMixin): ).format(untagged_vlan=self.untagged_vlan) }) - def to_objectchange(self, action): - objectchange = super().to_objectchange(action) - objectchange.related_object = self.virtual_machine - return objectchange - - @property - def parent_object(self): - return self.virtual_machine - @property def l2vpn_termination(self): return self.l2vpn_terminations.first() + + +class VirtualDisk(ComponentModel, TrackingModelMixin): + size = models.PositiveIntegerField( + verbose_name=_('size (GB)'), + ) + + class Meta(ComponentModel.Meta): + verbose_name = _('virtual disk') + verbose_name_plural = _('virtual disks') + + def get_absolute_url(self): + return reverse('virtualization:virtualdisk', args=[self.pk]) diff --git a/netbox/virtualization/search.py b/netbox/virtualization/search.py index 643a9f6de..c72b3345b 100644 --- a/netbox/virtualization/search.py +++ b/netbox/virtualization/search.py @@ -10,6 +10,7 @@ class ClusterIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('type', 'group', 'status', 'tenant', 'site', 'description') @register_search @@ -20,6 +21,7 @@ class ClusterGroupIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -30,6 +32,7 @@ class ClusterTypeIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -40,6 +43,7 @@ class VirtualMachineIndex(SearchIndex): ('description', 500), ('comments', 5000), ) + display_attrs = ('site', 'cluster', 'device', 'tenant', 'platform', 'status', 'role', 'description') @register_search @@ -51,3 +55,14 @@ class VMInterfaceIndex(SearchIndex): ('description', 500), ('mtu', 2000), ) + display_attrs = ('virtual_machine', 'mac_address', 'description') + + +@register_search +class VirtualDiskIndex(SearchIndex): + model = models.VirtualDisk + fields = ( + ('name', 100), + ('description', 500), + ) + display_attrs = ('virtual_machine', 'size', 'description') diff --git a/netbox/virtualization/signals.py b/netbox/virtualization/signals.py new file mode 100644 index 000000000..06f172179 --- /dev/null +++ b/netbox/virtualization/signals.py @@ -0,0 +1,16 @@ +from django.db.models import Sum +from django.db.models.signals import post_delete, post_save +from django.dispatch import receiver + +from .models import VirtualDisk, VirtualMachine + + +@receiver((post_delete, post_save), sender=VirtualDisk) +def update_virtualmachine_disk(instance, **kwargs): + """ + When a VirtualDisk has been modified, update the aggregate disk_size value of its VM. + """ + vm = instance.virtual_machine + VirtualMachine.objects.filter(pk=vm.pk).update( + disk=vm.virtualdisks.aggregate(Sum('size'))['size__sum'] + ) diff --git a/netbox/virtualization/tables/virtualmachines.py b/netbox/virtualization/tables/virtualmachines.py index f8473df1e..632e6878a 100644 --- a/netbox/virtualization/tables/virtualmachines.py +++ b/netbox/virtualization/tables/virtualmachines.py @@ -4,10 +4,12 @@ from django.utils.translation import gettext_lazy as _ from dcim.tables.devices import BaseInterfaceTable from netbox.tables import NetBoxTable, columns from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin -from virtualization.models import VirtualMachine, VMInterface +from virtualization.models import VirtualDisk, VirtualMachine, VMInterface __all__ = ( + 'VirtualDiskTable', 'VirtualMachineTable', + 'VirtualMachineVirtualDiskTable', 'VirtualMachineVMInterfaceTable', 'VMInterfaceTable', ) @@ -22,8 +24,8 @@ VMINTERFACE_BUTTONS = """ {% if perms.ipam.add_ipaddress %}
  • IP Address
  • {% endif %} - {% if perms.ipam.add_l2vpntermination %} -
  • L2VPN Termination
  • + {% if perms.vpn.add_l2vpntermination %} +
  • L2VPN Termination
  • {% endif %} {% if perms.ipam.add_fhrpgroupassignment %}
  • Assign FHRP Group
  • @@ -84,6 +86,9 @@ class VirtualMachineTable(TenancyColumnsMixin, ContactsColumnMixin, NetBoxTable) interface_count = tables.Column( verbose_name=_('Interfaces') ) + virtual_disk_count = tables.Column( + verbose_name=_('Virtual Disks') + ) config_template = tables.Column( verbose_name=_('Config Template'), linkify=True @@ -126,7 +131,8 @@ class VMInterfaceTable(BaseInterfaceTable): model = VMInterface fields = ( 'pk', 'id', 'name', 'virtual_machine', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'tags', - 'vrf', 'l2vpn', 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'created', 'last_updated', + 'vrf', 'l2vpn', 'tunnel', 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'created', + 'last_updated', ) default_columns = ('pk', 'name', 'virtual_machine', 'enabled', 'description') @@ -149,9 +155,45 @@ class VirtualMachineVMInterfaceTable(VMInterfaceTable): model = VMInterface fields = ( 'pk', 'id', 'name', 'enabled', 'parent', 'bridge', 'mac_address', 'mtu', 'mode', 'description', 'tags', - 'vrf', 'l2vpn', 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'actions', + 'vrf', 'l2vpn', 'tunnel', 'ip_addresses', 'fhrp_groups', 'untagged_vlan', 'tagged_vlans', 'actions', ) default_columns = ('pk', 'name', 'enabled', 'mac_address', 'mtu', 'mode', 'description', 'ip_addresses') row_attrs = { 'data-name': lambda record: record.name, } + + +class VirtualDiskTable(NetBoxTable): + virtual_machine = tables.Column( + verbose_name=_('Virtual Machine'), + linkify=True + ) + name = tables.Column( + verbose_name=_('Name'), + linkify=True + ) + tags = columns.TagColumn( + url_name='virtualization:virtualdisk_list' + ) + + class Meta(NetBoxTable.Meta): + model = VirtualDisk + fields = ( + 'pk', 'id', 'virtual_machine', 'name', 'size', 'description', 'tags', + ) + default_columns = ('pk', 'name', 'virtual_machine', 'size', 'description') + row_attrs = { + 'data-name': lambda record: record.name, + } + + +class VirtualMachineVirtualDiskTable(VirtualDiskTable): + actions = columns.ActionsColumn( + actions=('edit', 'delete'), + ) + + class Meta(VirtualDiskTable.Meta): + fields = ( + 'pk', 'id', 'name', 'size', 'description', 'tags', 'actions', + ) + default_columns = ('pk', 'name', 'size', 'description') diff --git a/netbox/virtualization/tests/test_api.py b/netbox/virtualization/tests/test_api.py index b2ae68860..819ce54e4 100644 --- a/netbox/virtualization/tests/test_api.py +++ b/netbox/virtualization/tests/test_api.py @@ -3,10 +3,11 @@ from rest_framework import status from dcim.choices import InterfaceModeChoices from dcim.models import Site +from extras.models import ConfigTemplate from ipam.models import VLAN, VRF -from utilities.testing import APITestCase, APIViewTestCases, create_test_device +from utilities.testing import APITestCase, APIViewTestCases, create_test_device, create_test_virtualmachine from virtualization.choices import * -from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface +from virtualization.models import * class AppTest(APITestCase): @@ -228,6 +229,22 @@ class VirtualMachineTest(APIViewTestCases.APIViewTestCase): response = self.client.post(url, data, format='json', **self.header) self.assertHttpStatus(response, status.HTTP_400_BAD_REQUEST) + def test_render_config(self): + configtemplate = ConfigTemplate.objects.create( + name='Config Template 1', + template_code='Config for virtual machine {{ virtualmachine.name }}' + ) + + vm = VirtualMachine.objects.first() + vm.config_template = configtemplate + vm.save() + + self.add_permissions('virtualization.add_virtualmachine') + url = reverse('virtualization-api:virtualmachine-detail', kwargs={'pk': vm.pk}) + 'render-config/' + response = self.client.post(url, {}, format='json', **self.header) + self.assertHttpStatus(response, status.HTTP_200_OK) + self.assertEqual(response.data['content'], f'Config for virtual machine {vm.name}') + class VMInterfaceTest(APIViewTestCases.APIViewTestCase): model = VMInterface @@ -239,10 +256,7 @@ class VMInterfaceTest(APIViewTestCases.APIViewTestCase): @classmethod def setUpTestData(cls): - - clustertype = ClusterType.objects.create(name='Test Cluster Type 1', slug='test-cluster-type-1') - cluster = Cluster.objects.create(name='Test Cluster 1', type=clustertype) - virtualmachine = VirtualMachine.objects.create(cluster=cluster, name='Test VM 1') + virtualmachine = create_test_virtualmachine('Virtual Machine 1') interfaces = ( VMInterface(virtual_machine=virtualmachine, name='Interface 1'), @@ -293,3 +307,67 @@ class VMInterfaceTest(APIViewTestCases.APIViewTestCase): 'vrf': vrfs[2].pk, }, ] + + def test_bulk_delete_child_interfaces(self): + interface1 = VMInterface.objects.get(name='Interface 1') + virtual_machine = interface1.virtual_machine + self.add_permissions('virtualization.delete_vminterface') + + # Create a child interface + child = VMInterface.objects.create( + virtual_machine=virtual_machine, + name='Interface 1A', + parent=interface1 + ) + self.assertEqual(virtual_machine.interfaces.count(), 4) + + # Attempt to delete only the parent interface + url = self._get_detail_url(interface1) + self.client.delete(url, **self.header) + self.assertEqual(virtual_machine.interfaces.count(), 4) # Parent was not deleted + + # Attempt to bulk delete parent & child together + data = [ + {"id": interface1.pk}, + {"id": child.pk}, + ] + self.client.delete(self._get_list_url(), data, format='json', **self.header) + self.assertEqual(virtual_machine.interfaces.count(), 2) # Child & parent were both deleted + + +class VirtualDiskTest(APIViewTestCases.APIViewTestCase): + model = VirtualDisk + brief_fields = ['display', 'id', 'name', 'size', 'url', 'virtual_machine'] + bulk_update_data = { + 'size': 888, + } + graphql_base_name = 'virtual_disk' + + @classmethod + def setUpTestData(cls): + virtualmachine = create_test_virtualmachine('Virtual Machine 1') + + disks = ( + VirtualDisk(virtual_machine=virtualmachine, name='Disk 1', size=10), + VirtualDisk(virtual_machine=virtualmachine, name='Disk 2', size=20), + VirtualDisk(virtual_machine=virtualmachine, name='Disk 3', size=30), + ) + VirtualDisk.objects.bulk_create(disks) + + cls.create_data = [ + { + 'virtual_machine': virtualmachine.pk, + 'name': 'Disk 4', + 'size': 10, + }, + { + 'virtual_machine': virtualmachine.pk, + 'name': 'Disk 5', + 'size': 20, + }, + { + 'virtual_machine': virtualmachine.pk, + 'name': 'Disk 6', + 'size': 30, + }, + ] diff --git a/netbox/virtualization/tests/test_filtersets.py b/netbox/virtualization/tests/test_filtersets.py index d474af21a..5c020e1b2 100644 --- a/netbox/virtualization/tests/test_filtersets.py +++ b/netbox/virtualization/tests/test_filtersets.py @@ -6,7 +6,7 @@ from tenancy.models import Tenant, TenantGroup from utilities.testing import ChangeLoggedFilterSetTests, create_test_device from virtualization.choices import * from virtualization.filtersets import * -from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface +from virtualization.models import * class ClusterTypeTestCase(TestCase, ChangeLoggedFilterSetTests): @@ -17,12 +17,16 @@ class ClusterTypeTestCase(TestCase, ChangeLoggedFilterSetTests): def setUpTestData(cls): cluster_types = ( - ClusterType(name='Cluster Type 1', slug='cluster-type-1', description='A'), - ClusterType(name='Cluster Type 2', slug='cluster-type-2', description='B'), - ClusterType(name='Cluster Type 3', slug='cluster-type-3', description='C'), + ClusterType(name='Cluster Type 1', slug='cluster-type-1', description='foobar1'), + ClusterType(name='Cluster Type 2', slug='cluster-type-2', description='foobar2'), + ClusterType(name='Cluster Type 3', slug='cluster-type-3', description='foobar3'), ) ClusterType.objects.bulk_create(cluster_types) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Cluster Type 1', 'Cluster Type 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -32,7 +36,7 @@ class ClusterTypeTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -44,12 +48,16 @@ class ClusterGroupTestCase(TestCase, ChangeLoggedFilterSetTests): def setUpTestData(cls): cluster_groups = ( - ClusterGroup(name='Cluster Group 1', slug='cluster-group-1', description='A'), - ClusterGroup(name='Cluster Group 2', slug='cluster-group-2', description='B'), - ClusterGroup(name='Cluster Group 3', slug='cluster-group-3', description='C'), + ClusterGroup(name='Cluster Group 1', slug='cluster-group-1', description='foobar1'), + ClusterGroup(name='Cluster Group 2', slug='cluster-group-2', description='foobar2'), + ClusterGroup(name='Cluster Group 3', slug='cluster-group-3', description='foobar3'), ) ClusterGroup.objects.bulk_create(cluster_groups) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Cluster Group 1', 'Cluster Group 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -59,7 +67,7 @@ class ClusterGroupTestCase(TestCase, ChangeLoggedFilterSetTests): self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_description(self): - params = {'description': ['A', 'B']} + params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -123,16 +131,48 @@ class ClusterTestCase(TestCase, ChangeLoggedFilterSetTests): Tenant.objects.bulk_create(tenants) clusters = ( - Cluster(name='Cluster 1', type=cluster_types[0], group=cluster_groups[0], status=ClusterStatusChoices.STATUS_PLANNED, site=sites[0], tenant=tenants[0]), - Cluster(name='Cluster 2', type=cluster_types[1], group=cluster_groups[1], status=ClusterStatusChoices.STATUS_STAGING, site=sites[1], tenant=tenants[1]), - Cluster(name='Cluster 3', type=cluster_types[2], group=cluster_groups[2], status=ClusterStatusChoices.STATUS_ACTIVE, site=sites[2], tenant=tenants[2]), + Cluster( + name='Cluster 1', + type=cluster_types[0], + group=cluster_groups[0], + status=ClusterStatusChoices.STATUS_PLANNED, + site=sites[0], + tenant=tenants[0], + description='foobar1' + ), + Cluster( + name='Cluster 2', + type=cluster_types[1], + group=cluster_groups[1], + status=ClusterStatusChoices.STATUS_STAGING, + site=sites[1], + tenant=tenants[1], + description='foobar2' + ), + Cluster( + name='Cluster 3', + type=cluster_types[2], + group=cluster_groups[2], + status=ClusterStatusChoices.STATUS_ACTIVE, + site=sites[2], + tenant=tenants[2], + description='foobar3' + ), ) Cluster.objects.bulk_create(clusters) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Cluster 1', 'Cluster 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_region(self): regions = Region.objects.all()[:2] params = {'region_id': [regions[0].pk, regions[1].pk]} @@ -274,9 +314,49 @@ class VirtualMachineTestCase(TestCase, ChangeLoggedFilterSetTests): Tenant.objects.bulk_create(tenants) vms = ( - VirtualMachine(name='Virtual Machine 1', site=sites[0], cluster=clusters[0], device=devices[0], platform=platforms[0], role=roles[0], tenant=tenants[0], status=VirtualMachineStatusChoices.STATUS_ACTIVE, vcpus=1, memory=1, disk=1, local_context_data={"foo": 123}), - VirtualMachine(name='Virtual Machine 2', site=sites[1], cluster=clusters[1], device=devices[1], platform=platforms[1], role=roles[1], tenant=tenants[1], status=VirtualMachineStatusChoices.STATUS_STAGED, vcpus=2, memory=2, disk=2), - VirtualMachine(name='Virtual Machine 3', site=sites[2], cluster=clusters[2], device=devices[2], platform=platforms[2], role=roles[2], tenant=tenants[2], status=VirtualMachineStatusChoices.STATUS_OFFLINE, vcpus=3, memory=3, disk=3), + VirtualMachine( + name='Virtual Machine 1', + site=sites[0], + cluster=clusters[0], + device=devices[0], + platform=platforms[0], + role=roles[0], + tenant=tenants[0], + status=VirtualMachineStatusChoices.STATUS_ACTIVE, + vcpus=1, + memory=1, + disk=1, + description='foobar1', + local_context_data={"foo": 123} + ), + VirtualMachine( + name='Virtual Machine 2', + site=sites[1], + cluster=clusters[1], + device=devices[1], + platform=platforms[1], + role=roles[1], + tenant=tenants[1], + status=VirtualMachineStatusChoices.STATUS_STAGED, + vcpus=2, + memory=2, + disk=2, + description='foobar2' + ), + VirtualMachine( + name='Virtual Machine 3', + site=sites[2], + cluster=clusters[2], + device=devices[2], + platform=platforms[2], + role=roles[2], + tenant=tenants[2], + status=VirtualMachineStatusChoices.STATUS_OFFLINE, + vcpus=3, + memory=3, + disk=3, + description='foobar3' + ), ) VirtualMachine.objects.bulk_create(vms) @@ -291,10 +371,18 @@ class VirtualMachineTestCase(TestCase, ChangeLoggedFilterSetTests): ipaddresses = ( IPAddress(address='192.0.2.1/24', assigned_object=interfaces[0]), IPAddress(address='192.0.2.2/24', assigned_object=interfaces[1]), + IPAddress(address='192.0.2.3/24', assigned_object=None), + IPAddress(address='2001:db8::1/64', assigned_object=interfaces[0]), + IPAddress(address='2001:db8::2/64', assigned_object=interfaces[1]), + IPAddress(address='2001:db8::3/64', assigned_object=None), ) IPAddress.objects.bulk_create(ipaddresses) - VirtualMachine.objects.filter(pk=vms[0].pk).update(primary_ip4=ipaddresses[0]) - VirtualMachine.objects.filter(pk=vms[1].pk).update(primary_ip4=ipaddresses[1]) + VirtualMachine.objects.filter(pk=vms[0].pk).update(primary_ip4=ipaddresses[0], primary_ip6=ipaddresses[3]) + VirtualMachine.objects.filter(pk=vms[1].pk).update(primary_ip4=ipaddresses[1], primary_ip6=ipaddresses[4]) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) def test_name(self): params = {'name': ['Virtual Machine 1', 'Virtual Machine 2']} @@ -303,6 +391,10 @@ class VirtualMachineTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'name': ['VIRTUAL MACHINE 1', 'VIRTUAL MACHINE 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_vcpus(self): params = {'vcpus': [1, 2]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -412,6 +504,20 @@ class VirtualMachineTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'tenant_group': [tenant_groups[0].slug, tenant_groups[1].slug]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_primary_ip4(self): + addresses = IPAddress.objects.filter(address__family=4) + params = {'primary_ip4_id': [addresses[0].pk, addresses[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'primary_ip4_id': [addresses[2].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + + def test_primary_ip6(self): + addresses = IPAddress.objects.filter(address__family=6) + params = {'primary_ip6_id': [addresses[0].pk, addresses[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'primary_ip6_id': [addresses[2].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): queryset = VMInterface.objects.all() @@ -449,12 +555,40 @@ class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): VirtualMachine.objects.bulk_create(vms) interfaces = ( - VMInterface(virtual_machine=vms[0], name='Interface 1', enabled=True, mtu=100, mac_address='00-00-00-00-00-01', vrf=vrfs[0], description='foobar1'), - VMInterface(virtual_machine=vms[1], name='Interface 2', enabled=True, mtu=200, mac_address='00-00-00-00-00-02', vrf=vrfs[1], description='foobar2'), - VMInterface(virtual_machine=vms[2], name='Interface 3', enabled=False, mtu=300, mac_address='00-00-00-00-00-03', vrf=vrfs[2]), + VMInterface( + virtual_machine=vms[0], + name='Interface 1', + enabled=True, + mtu=100, + mac_address='00-00-00-00-00-01', + vrf=vrfs[0], + description='foobar1' + ), + VMInterface( + virtual_machine=vms[1], + name='Interface 2', + enabled=True, + mtu=200, + mac_address='00-00-00-00-00-02', + vrf=vrfs[1], + description='foobar2' + ), + VMInterface( + virtual_machine=vms[2], + name='Interface 3', + enabled=False, + mtu=300, + mac_address='00-00-00-00-00-03', + vrf=vrfs[2], + description='foobar3' + ), ) VMInterface.objects.bulk_create(interfaces) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Interface 1', 'Interface 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -516,3 +650,50 @@ class VMInterfaceTestCase(TestCase, ChangeLoggedFilterSetTests): def test_description(self): params = {'description': ['foobar1', 'foobar2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class VirtualDiskTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = VirtualDisk.objects.all() + filterset = VirtualDiskFilterSet + + @classmethod + def setUpTestData(cls): + cluster_type = ClusterType.objects.create(name='Cluster Type 1', slug='cluster-type-1') + cluster = Cluster.objects.create(name='Cluster 1', type=cluster_type) + + vms = ( + VirtualMachine(name='Virtual Machine 1', cluster=cluster), + VirtualMachine(name='Virtual Machine 2', cluster=cluster), + VirtualMachine(name='Virtual Machine 3', cluster=cluster), + ) + VirtualMachine.objects.bulk_create(vms) + + disks = ( + VirtualDisk(virtual_machine=vms[0], name='Disk 1', size=1, description='foobar1'), + VirtualDisk(virtual_machine=vms[1], name='Disk 2', size=2, description='foobar2'), + VirtualDisk(virtual_machine=vms[2], name='Disk 3', size=3, description='foobar3'), + ) + VirtualDisk.objects.bulk_create(disks) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_virtual_machine(self): + vms = VirtualMachine.objects.all()[:2] + params = {'virtual_machine_id': [vms[0].pk, vms[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'virtual_machine': [vms[0].name, vms[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_name(self): + params = {'name': ['Disk 1', 'Disk 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_size(self): + params = {'size': [1, 2]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/netbox/virtualization/tests/test_models.py b/netbox/virtualization/tests/test_models.py index 782b9f07f..c94ff930e 100644 --- a/netbox/virtualization/tests/test_models.py +++ b/netbox/virtualization/tests/test_models.py @@ -90,3 +90,28 @@ class VirtualMachineTestCase(TestCase): # Uniqueness validation for name should ignore case with self.assertRaises(ValidationError): vm2.full_clean() + + def test_disk_size(self): + vm = VirtualMachine( + cluster=Cluster.objects.first(), + name='Virtual Machine 1' + ) + vm.save() + vm.refresh_from_db() + self.assertEqual(vm.disk, None) + + # Create two VirtualDisks + VirtualDisk.objects.create(virtual_machine=vm, name='Virtual Disk 1', size=10) + VirtualDisk.objects.create(virtual_machine=vm, name='Virtual Disk 2', size=10) + vm.refresh_from_db() + self.assertEqual(vm.disk, 20) + + # Delete one VirtualDisk + VirtualDisk.objects.first().delete() + vm.refresh_from_db() + self.assertEqual(vm.disk, 10) + + # Attempt to manually overwrite the aggregate disk size + vm.disk = 30 + with self.assertRaises(ValidationError): + vm.full_clean() diff --git a/netbox/virtualization/tests/test_views.py b/netbox/virtualization/tests/test_views.py index a5d831d7e..ed6bef1e4 100644 --- a/netbox/virtualization/tests/test_views.py +++ b/netbox/virtualization/tests/test_views.py @@ -5,9 +5,9 @@ from netaddr import EUI from dcim.choices import InterfaceModeChoices from dcim.models import DeviceRole, Platform, Site from ipam.models import VLAN, VRF -from utilities.testing import ViewTestCases, create_tags, create_test_device +from utilities.testing import ViewTestCases, create_tags, create_test_device, create_test_virtualmachine from virtualization.choices import * -from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface +from virtualization.models import * class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): @@ -374,3 +374,83 @@ class VMInterfaceTestCase(ViewTestCases.DeviceComponentViewTestCase): 'untagged_vlan': vlans[0].pk, 'tagged_vlans': [v.pk for v in vlans[1:4]], } + + def test_bulk_delete_child_interfaces(self): + interface1 = VMInterface.objects.get(name='Interface 1') + virtual_machine = interface1.virtual_machine + self.add_permissions('virtualization.delete_vminterface') + + # Create a child interface + child = VMInterface.objects.create( + virtual_machine=virtual_machine, + name='Interface 1A', + parent=interface1 + ) + self.assertEqual(virtual_machine.interfaces.count(), 4) + + # Attempt to delete only the parent interface + data = { + 'confirm': True, + } + self.client.post(self._get_url('delete', interface1), data) + self.assertEqual(virtual_machine.interfaces.count(), 4) # Parent was not deleted + + # Attempt to bulk delete parent & child together + data = { + 'pk': [interface1.pk, child.pk], + 'confirm': True, + '_confirm': True, # Form button + } + self.client.post(self._get_url('bulk_delete'), data) + self.assertEqual(virtual_machine.interfaces.count(), 2) # Child & parent were both deleted + + +class VirtualDiskTestCase(ViewTestCases.DeviceComponentViewTestCase): + model = VirtualDisk + validation_excluded_fields = ('name',) + + @classmethod + def setUpTestData(cls): + virtualmachine = create_test_virtualmachine('Virtual Machine 1') + + disks = VirtualDisk.objects.bulk_create([ + VirtualDisk(virtual_machine=virtualmachine, name='Virtual Disk 1', size=10), + VirtualDisk(virtual_machine=virtualmachine, name='Virtual Disk 2', size=10), + VirtualDisk(virtual_machine=virtualmachine, name='Virtual Disk 3', size=10), + ]) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'virtual_machine': virtualmachine.pk, + 'name': 'Virtual Disk X', + 'size': 20, + 'description': 'New description', + 'tags': [t.pk for t in tags], + } + + cls.bulk_create_data = { + 'virtual_machine': virtualmachine.pk, + 'name': 'Virtual Disk [4-6]', + 'size': 10, + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + f"virtual_machine,name,size,description", + f"Virtual Machine 1,Disk 4,20,Fourth", + f"Virtual Machine 1,Disk 5,20,Fifth", + f"Virtual Machine 1,Disk 6,20,Sixth", + ) + + cls.csv_update_data = ( + f"id,name,size", + f"{disks[0].pk},disk1,20", + f"{disks[1].pk},disk2,20", + f"{disks[2].pk},disk3,20", + ) + + cls.bulk_edit_data = { + 'size': 30, + 'description': 'New description', + } diff --git a/netbox/virtualization/urls.py b/netbox/virtualization/urls.py index 9e5d5a670..78f88260a 100644 --- a/netbox/virtualization/urls.py +++ b/netbox/virtualization/urls.py @@ -48,4 +48,13 @@ urlpatterns = [ path('interfaces//', include(get_model_urls('virtualization', 'vminterface'))), path('virtual-machines/interfaces/add/', views.VirtualMachineBulkAddInterfaceView.as_view(), name='virtualmachine_bulk_add_vminterface'), + # Virtual disks + path('disks/', views.VirtualDiskListView.as_view(), name='virtualdisk_list'), + path('disks/add/', views.VirtualDiskCreateView.as_view(), name='virtualdisk_add'), + path('disks/import/', views.VirtualDiskBulkImportView.as_view(), name='virtualdisk_import'), + path('disks/edit/', views.VirtualDiskBulkEditView.as_view(), name='virtualdisk_bulk_edit'), + path('disks/rename/', views.VirtualDiskBulkRenameView.as_view(), name='virtualdisk_bulk_rename'), + path('disks/delete/', views.VirtualDiskBulkDeleteView.as_view(), name='virtualdisk_bulk_delete'), + path('disks//', include(get_model_urls('virtualization', 'virtualdisk'))), + path('virtual-machines/disks/add/', views.VirtualMachineBulkAddVirtualDiskView.as_view(), name='virtualmachine_bulk_add_virtualdisk'), ] diff --git a/netbox/virtualization/views.py b/netbox/virtualization/views.py index 9c7748cbd..6019fc227 100644 --- a/netbox/virtualization/views.py +++ b/netbox/virtualization/views.py @@ -1,5 +1,4 @@ import traceback -from collections import defaultdict from django.contrib import messages from django.db import transaction @@ -16,12 +15,14 @@ from dcim.tables import DeviceTable from extras.views import ObjectConfigContextView from ipam.models import IPAddress from ipam.tables import InterfaceVLANTable +from netbox.constants import DEFAULT_ACTION_PERMISSIONS from netbox.views import generic from tenancy.views import ObjectContactsView +from utilities.query_functions import CollateAsChar from utilities.utils import count_related from utilities.views import ViewTab, register_model_view from . import filtersets, forms, tables -from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface +from .models import * # @@ -199,13 +200,13 @@ class ClusterDevicesView(generic.ObjectChildrenView): table = DeviceTable filterset = DeviceFilterSet template_name = 'virtualization/cluster/devices.html' - actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_remove_devices') - action_perms = defaultdict(set, **{ + actions = { 'add': {'add'}, 'import': {'add'}, + 'export': {'view'}, 'bulk_edit': {'change'}, 'bulk_remove_devices': {'change'}, - }) + } tab = ViewTab( label=_('Devices'), badge=lambda obj: obj.devices.count(), @@ -359,20 +360,16 @@ class VirtualMachineInterfacesView(generic.ObjectChildrenView): table = tables.VirtualMachineVMInterfaceTable filterset = filtersets.VMInterfaceFilterSet template_name = 'virtualization/virtualmachine/interfaces.html' + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } tab = ViewTab( label=_('Interfaces'), badge=lambda obj: obj.interface_count, permission='virtualization.view_vminterface', weight=500 ) - actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete', 'bulk_rename') - action_perms = defaultdict(set, **{ - 'add': {'add'}, - 'import': {'add'}, - 'bulk_edit': {'change'}, - 'bulk_delete': {'delete'}, - 'bulk_rename': {'change'}, - }) def get_children(self, request, parent): return parent.interfaces.restrict(request.user, 'view').prefetch_related( @@ -381,13 +378,34 @@ class VirtualMachineInterfacesView(generic.ObjectChildrenView): ) +@register_model_view(VirtualMachine, 'disks') +class VirtualMachineVirtualDisksView(generic.ObjectChildrenView): + queryset = VirtualMachine.objects.all() + child_model = VirtualDisk + table = tables.VirtualMachineVirtualDiskTable + filterset = filtersets.VirtualDiskFilterSet + template_name = 'virtualization/virtualmachine/virtual_disks.html' + tab = ViewTab( + label=_('Virtual Disks'), + badge=lambda obj: obj.virtual_disk_count, + permission='virtualization.view_virtual_disk', + weight=500 + ) + actions = { + **DEFAULT_ACTION_PERMISSIONS, + 'bulk_rename': {'change'}, + } + + def get_children(self, request, parent): + return parent.virtualdisks.restrict(request.user, 'view').prefetch_related('tags') + + @register_model_view(VirtualMachine, 'configcontext', path='config-context') class VirtualMachineConfigContextView(ObjectConfigContextView): queryset = VirtualMachine.objects.annotate_config_context_data() base_template = 'virtualization/virtualmachine.html' tab = ViewTab( label=_('Config Context'), - permission='extras.view_configcontext', weight=2000 ) @@ -398,7 +416,6 @@ class VirtualMachineRenderConfigView(generic.ObjectView): template_name = 'virtualization/virtualmachine/render_config.html' tab = ViewTab( label=_('Render Config'), - permission='extras.view_configtemplate', weight=2100 ) @@ -555,11 +572,68 @@ class VMInterfaceBulkRenameView(generic.BulkRenameView): class VMInterfaceBulkDeleteView(generic.BulkDeleteView): - queryset = VMInterface.objects.all() + # Ensure child interfaces are deleted prior to their parents + queryset = VMInterface.objects.order_by('virtual_machine', 'parent', CollateAsChar('_name')) filterset = filtersets.VMInterfaceFilterSet table = tables.VMInterfaceTable +# +# Virtual disks +# + +class VirtualDiskListView(generic.ObjectListView): + queryset = VirtualDisk.objects.all() + filterset = filtersets.VirtualDiskFilterSet + filterset_form = forms.VirtualDiskFilterForm + table = tables.VirtualDiskTable + + +@register_model_view(VirtualDisk) +class VirtualDiskView(generic.ObjectView): + queryset = VirtualDisk.objects.all() + + +class VirtualDiskCreateView(generic.ComponentCreateView): + queryset = VirtualDisk.objects.all() + form = forms.VirtualDiskCreateForm + model_form = forms.VirtualDiskForm + + +@register_model_view(VirtualDisk, 'edit') +class VirtualDiskEditView(generic.ObjectEditView): + queryset = VirtualDisk.objects.all() + form = forms.VirtualDiskForm + + +@register_model_view(VirtualDisk, 'delete') +class VirtualDiskDeleteView(generic.ObjectDeleteView): + queryset = VirtualDisk.objects.all() + + +class VirtualDiskBulkImportView(generic.BulkImportView): + queryset = VirtualDisk.objects.all() + model_form = forms.VirtualDiskImportForm + + +class VirtualDiskBulkEditView(generic.BulkEditView): + queryset = VirtualDisk.objects.all() + filterset = filtersets.VirtualDiskFilterSet + table = tables.VirtualDiskTable + form = forms.VirtualDiskBulkEditForm + + +class VirtualDiskBulkRenameView(generic.BulkRenameView): + queryset = VirtualDisk.objects.all() + form = forms.VirtualDiskBulkRenameForm + + +class VirtualDiskBulkDeleteView(generic.BulkDeleteView): + queryset = VirtualDisk.objects.all() + filterset = filtersets.VirtualDiskFilterSet + table = tables.VirtualDiskTable + + # # Bulk Device component creation # @@ -576,3 +650,17 @@ class VirtualMachineBulkAddInterfaceView(generic.BulkComponentCreateView): def get_required_permission(self): return f'virtualization.add_vminterface' + + +class VirtualMachineBulkAddVirtualDiskView(generic.BulkComponentCreateView): + parent_model = VirtualMachine + parent_field = 'virtual_machine' + form = forms.VirtualDiskBulkCreateForm + queryset = VirtualDisk.objects.all() + model_form = forms.VirtualDiskForm + filterset = filtersets.VirtualMachineFilterSet + table = tables.VirtualMachineTable + default_return_url = 'virtualization:virtualmachine_list' + + def get_required_permission(self): + return f'virtualization.add_virtualdisk' diff --git a/netbox/vpn/__init__.py b/netbox/vpn/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/vpn/admin.py b/netbox/vpn/admin.py new file mode 100644 index 000000000..8c38f3f3d --- /dev/null +++ b/netbox/vpn/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/netbox/vpn/api/__init__.py b/netbox/vpn/api/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/vpn/api/nested_serializers.py b/netbox/vpn/api/nested_serializers.py new file mode 100644 index 000000000..1042b375e --- /dev/null +++ b/netbox/vpn/api/nested_serializers.py @@ -0,0 +1,125 @@ +from drf_spectacular.utils import extend_schema_serializer +from rest_framework import serializers + +from netbox.api.serializers import WritableNestedSerializer +from vpn import models + +__all__ = ( + 'NestedIKEPolicySerializer', + 'NestedIKEProposalSerializer', + 'NestedIPSecPolicySerializer', + 'NestedIPSecProfileSerializer', + 'NestedIPSecProposalSerializer', + 'NestedL2VPNSerializer', + 'NestedL2VPNTerminationSerializer', + 'NestedTunnelGroupSerializer', + 'NestedTunnelSerializer', + 'NestedTunnelTerminationSerializer', +) + + +@extend_schema_serializer( + exclude_fields=('tunnel_count',), +) +class NestedTunnelGroupSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='vpn-api:tunnelgroup-detail') + tunnel_count = serializers.IntegerField(read_only=True) + + class Meta: + model = models.TunnelGroup + fields = ['id', 'url', 'display', 'name', 'slug', 'tunnel_count'] + + +class NestedTunnelSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:tunnel-detail' + ) + + class Meta: + model = models.Tunnel + fields = ('id', 'url', 'display', 'name') + + +class NestedTunnelTerminationSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:tunneltermination-detail' + ) + + class Meta: + model = models.TunnelTermination + fields = ('id', 'url', 'display') + + +class NestedIKEProposalSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:ikeproposal-detail' + ) + + class Meta: + model = models.IKEProposal + fields = ('id', 'url', 'display', 'name') + + +class NestedIKEPolicySerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:ikepolicy-detail' + ) + + class Meta: + model = models.IKEPolicy + fields = ('id', 'url', 'display', 'name') + + +class NestedIPSecProposalSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:ipsecproposal-detail' + ) + + class Meta: + model = models.IPSecProposal + fields = ('id', 'url', 'display', 'name') + + +class NestedIPSecPolicySerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:ipsecpolicy-detail' + ) + + class Meta: + model = models.IPSecPolicy + fields = ('id', 'url', 'display', 'name') + + +class NestedIPSecProfileSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:ipsecprofile-detail' + ) + + class Meta: + model = models.IPSecProfile + fields = ('id', 'url', 'display', 'name') + + +# +# L2VPN +# + +class NestedL2VPNSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='vpn-api:l2vpn-detail') + + class Meta: + model = models.L2VPN + fields = [ + 'id', 'url', 'display', 'identifier', 'name', 'slug', 'type' + ] + + +class NestedL2VPNTerminationSerializer(WritableNestedSerializer): + url = serializers.HyperlinkedIdentityField(view_name='vpn-api:l2vpntermination-detail') + l2vpn = NestedL2VPNSerializer() + + class Meta: + model = models.L2VPNTermination + fields = [ + 'id', 'url', 'display', 'l2vpn' + ] diff --git a/netbox/vpn/api/serializers.py b/netbox/vpn/api/serializers.py new file mode 100644 index 000000000..dedcbfbf5 --- /dev/null +++ b/netbox/vpn/api/serializers.py @@ -0,0 +1,262 @@ +from django.contrib.contenttypes.models import ContentType +from drf_spectacular.utils import extend_schema_field +from rest_framework import serializers + +from ipam.api.nested_serializers import NestedIPAddressSerializer, NestedRouteTargetSerializer +from ipam.models import RouteTarget +from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField +from netbox.api.serializers import NetBoxModelSerializer +from netbox.constants import NESTED_SERIALIZER_PREFIX +from tenancy.api.nested_serializers import NestedTenantSerializer +from utilities.api import get_serializer_for_model +from vpn.choices import * +from vpn.models import * +from .nested_serializers import * + +__all__ = ( + 'IKEPolicySerializer', + 'IKEProposalSerializer', + 'IPSecPolicySerializer', + 'IPSecProfileSerializer', + 'IPSecProposalSerializer', + 'L2VPNSerializer', + 'L2VPNTerminationSerializer', + 'TunnelGroupSerializer', + 'TunnelSerializer', + 'TunnelTerminationSerializer', +) + + +class TunnelGroupSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='vpn-api:tunnelgroup-detail') + tunnel_count = serializers.IntegerField(read_only=True) + + class Meta: + model = TunnelGroup + fields = [ + 'id', 'url', 'display', 'name', 'slug', 'description', 'tags', 'custom_fields', 'created', 'last_updated', + 'tunnel_count', + ] + + +class TunnelSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:tunnel-detail' + ) + status = ChoiceField( + choices=TunnelStatusChoices + ) + group = NestedTunnelGroupSerializer() + encapsulation = ChoiceField( + choices=TunnelEncapsulationChoices + ) + ipsec_profile = NestedIPSecProfileSerializer( + required=False, + allow_null=True + ) + tenant = NestedTenantSerializer( + required=False, + allow_null=True + ) + + class Meta: + model = Tunnel + fields = ( + 'id', 'url', 'display', 'name', 'status', 'group', 'encapsulation', 'ipsec_profile', 'tenant', 'tunnel_id', + 'description', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', + ) + + +class TunnelTerminationSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:tunneltermination-detail' + ) + tunnel = NestedTunnelSerializer() + role = ChoiceField( + choices=TunnelTerminationRoleChoices + ) + termination_type = ContentTypeField( + queryset=ContentType.objects.all() + ) + termination = serializers.SerializerMethodField( + read_only=True + ) + outside_ip = NestedIPAddressSerializer( + required=False, + allow_null=True + ) + + class Meta: + model = TunnelTermination + fields = ( + 'id', 'url', 'display', 'tunnel', 'role', 'termination_type', 'termination_id', 'termination', 'outside_ip', + 'tags', 'custom_fields', 'created', 'last_updated', + ) + + @extend_schema_field(serializers.JSONField(allow_null=True)) + def get_termination(self, obj): + serializer = get_serializer_for_model(obj.termination, prefix=NESTED_SERIALIZER_PREFIX) + context = {'request': self.context['request']} + return serializer(obj.termination, context=context).data + + +class IKEProposalSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:ikeproposal-detail' + ) + authentication_method = ChoiceField( + choices=AuthenticationMethodChoices + ) + encryption_algorithm = ChoiceField( + choices=EncryptionAlgorithmChoices + ) + authentication_algorithm = ChoiceField( + choices=AuthenticationAlgorithmChoices + ) + group = ChoiceField( + choices=DHGroupChoices + ) + + class Meta: + model = IKEProposal + fields = ( + 'id', 'url', 'display', 'name', 'description', 'authentication_method', 'encryption_algorithm', + 'authentication_algorithm', 'group', 'sa_lifetime', 'comments', 'tags', 'custom_fields', 'created', + 'last_updated', + ) + + +class IKEPolicySerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:ikepolicy-detail' + ) + version = ChoiceField( + choices=IKEVersionChoices + ) + mode = ChoiceField( + choices=IKEModeChoices + ) + proposals = SerializedPKRelatedField( + queryset=IKEProposal.objects.all(), + serializer=NestedIKEProposalSerializer, + required=False, + many=True + ) + + class Meta: + model = IKEPolicy + fields = ( + 'id', 'url', 'display', 'name', 'description', 'version', 'mode', 'proposals', 'preshared_key', 'comments', + 'tags', 'custom_fields', 'created', 'last_updated', + ) + + +class IPSecProposalSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:ipsecproposal-detail' + ) + encryption_algorithm = ChoiceField( + choices=EncryptionAlgorithmChoices + ) + authentication_algorithm = ChoiceField( + choices=AuthenticationAlgorithmChoices + ) + + class Meta: + model = IPSecProposal + fields = ( + 'id', 'url', 'display', 'name', 'description', 'encryption_algorithm', 'authentication_algorithm', + 'sa_lifetime_seconds', 'sa_lifetime_data', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', + ) + + +class IPSecPolicySerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:ipsecpolicy-detail' + ) + proposals = SerializedPKRelatedField( + queryset=IPSecProposal.objects.all(), + serializer=NestedIPSecProposalSerializer, + required=False, + many=True + ) + pfs_group = ChoiceField( + choices=DHGroupChoices, + required=False + ) + + class Meta: + model = IPSecPolicy + fields = ( + 'id', 'url', 'display', 'name', 'description', 'proposals', 'pfs_group', 'comments', 'tags', + 'custom_fields', 'created', 'last_updated', + ) + + +class IPSecProfileSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField( + view_name='vpn-api:ipsecprofile-detail' + ) + mode = ChoiceField( + choices=IPSecModeChoices + ) + ike_policy = NestedIKEPolicySerializer() + ipsec_policy = NestedIPSecPolicySerializer() + + class Meta: + model = IPSecProfile + fields = ( + 'id', 'url', 'display', 'name', 'description', 'mode', 'ike_policy', 'ipsec_policy', 'comments', 'tags', + 'custom_fields', 'created', 'last_updated', + ) + + +# +# L2VPN +# + +class L2VPNSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='vpn-api:l2vpn-detail') + type = ChoiceField(choices=L2VPNTypeChoices, required=False) + import_targets = SerializedPKRelatedField( + queryset=RouteTarget.objects.all(), + serializer=NestedRouteTargetSerializer, + required=False, + many=True + ) + export_targets = SerializedPKRelatedField( + queryset=RouteTarget.objects.all(), + serializer=NestedRouteTargetSerializer, + required=False, + many=True + ) + tenant = NestedTenantSerializer(required=False, allow_null=True) + + class Meta: + model = L2VPN + fields = [ + 'id', 'url', 'display', 'identifier', 'name', 'slug', 'type', 'import_targets', 'export_targets', + 'description', 'comments', 'tenant', 'tags', 'custom_fields', 'created', 'last_updated' + ] + + +class L2VPNTerminationSerializer(NetBoxModelSerializer): + url = serializers.HyperlinkedIdentityField(view_name='vpn-api:l2vpntermination-detail') + l2vpn = NestedL2VPNSerializer() + assigned_object_type = ContentTypeField( + queryset=ContentType.objects.all() + ) + assigned_object = serializers.SerializerMethodField(read_only=True) + + class Meta: + model = L2VPNTermination + fields = [ + 'id', 'url', 'display', 'l2vpn', 'assigned_object_type', 'assigned_object_id', + 'assigned_object', 'tags', 'custom_fields', 'created', 'last_updated' + ] + + @extend_schema_field(serializers.JSONField(allow_null=True)) + def get_assigned_object(self, instance): + serializer = get_serializer_for_model(instance.assigned_object, prefix=NESTED_SERIALIZER_PREFIX) + context = {'request': self.context['request']} + return serializer(instance.assigned_object, context=context).data diff --git a/netbox/vpn/api/urls.py b/netbox/vpn/api/urls.py new file mode 100644 index 000000000..5358325f3 --- /dev/null +++ b/netbox/vpn/api/urls.py @@ -0,0 +1,18 @@ +from netbox.api.routers import NetBoxRouter +from . import views + +router = NetBoxRouter() +router.APIRootView = views.VPNRootView +router.register('ike-policies', views.IKEPolicyViewSet) +router.register('ike-proposals', views.IKEProposalViewSet) +router.register('ipsec-policies', views.IPSecPolicyViewSet) +router.register('ipsec-proposals', views.IPSecProposalViewSet) +router.register('ipsec-profiles', views.IPSecProfileViewSet) +router.register('tunnel-groups', views.TunnelGroupViewSet) +router.register('tunnels', views.TunnelViewSet) +router.register('tunnel-terminations', views.TunnelTerminationViewSet) +router.register('l2vpns', views.L2VPNViewSet) +router.register('l2vpn-terminations', views.L2VPNTerminationViewSet) + +app_name = 'vpn-api' +urlpatterns = router.urls diff --git a/netbox/vpn/api/views.py b/netbox/vpn/api/views.py new file mode 100644 index 000000000..58ad2f47d --- /dev/null +++ b/netbox/vpn/api/views.py @@ -0,0 +1,97 @@ +from rest_framework.routers import APIRootView + +from netbox.api.viewsets import NetBoxModelViewSet +from utilities.utils import count_related +from vpn import filtersets +from vpn.models import * +from . import serializers + +__all__ = ( + 'IKEPolicyViewSet', + 'IKEProposalViewSet', + 'IPSecPolicyViewSet', + 'IPSecProfileViewSet', + 'IPSecProposalViewSet', + 'L2VPNViewSet', + 'L2VPNTerminationViewSet', + 'TunnelGroupViewSet', + 'TunnelTerminationViewSet', + 'TunnelViewSet', + 'VPNRootView', +) + + +class VPNRootView(APIRootView): + """ + VPN API root view + """ + def get_view_name(self): + return 'VPN' + + +# +# Viewsets +# + +class TunnelGroupViewSet(NetBoxModelViewSet): + queryset = TunnelGroup.objects.annotate( + tunnel_count=count_related(Tunnel, 'group') + ) + serializer_class = serializers.TunnelGroupSerializer + filterset_class = filtersets.TunnelGroupFilterSet + + +class TunnelViewSet(NetBoxModelViewSet): + queryset = Tunnel.objects.prefetch_related('ipsec_profile', 'tenant').annotate( + terminations_count=count_related(TunnelTermination, 'tunnel') + ) + serializer_class = serializers.TunnelSerializer + filterset_class = filtersets.TunnelFilterSet + + +class TunnelTerminationViewSet(NetBoxModelViewSet): + queryset = TunnelTermination.objects.prefetch_related('tunnel') + serializer_class = serializers.TunnelTerminationSerializer + filterset_class = filtersets.TunnelTerminationFilterSet + + +class IKEProposalViewSet(NetBoxModelViewSet): + queryset = IKEProposal.objects.all() + serializer_class = serializers.IKEProposalSerializer + filterset_class = filtersets.IKEProposalFilterSet + + +class IKEPolicyViewSet(NetBoxModelViewSet): + queryset = IKEPolicy.objects.all() + serializer_class = serializers.IKEPolicySerializer + filterset_class = filtersets.IKEPolicyFilterSet + + +class IPSecProposalViewSet(NetBoxModelViewSet): + queryset = IPSecProposal.objects.all() + serializer_class = serializers.IPSecProposalSerializer + filterset_class = filtersets.IPSecProposalFilterSet + + +class IPSecPolicyViewSet(NetBoxModelViewSet): + queryset = IPSecPolicy.objects.all() + serializer_class = serializers.IPSecPolicySerializer + filterset_class = filtersets.IPSecPolicyFilterSet + + +class IPSecProfileViewSet(NetBoxModelViewSet): + queryset = IPSecProfile.objects.all() + serializer_class = serializers.IPSecProfileSerializer + filterset_class = filtersets.IPSecProfileFilterSet + + +class L2VPNViewSet(NetBoxModelViewSet): + queryset = L2VPN.objects.prefetch_related('import_targets', 'export_targets', 'tenant', 'tags') + serializer_class = serializers.L2VPNSerializer + filterset_class = filtersets.L2VPNFilterSet + + +class L2VPNTerminationViewSet(NetBoxModelViewSet): + queryset = L2VPNTermination.objects.prefetch_related('assigned_object') + serializer_class = serializers.L2VPNTerminationSerializer + filterset_class = filtersets.L2VPNTerminationFilterSet diff --git a/netbox/vpn/apps.py b/netbox/vpn/apps.py new file mode 100644 index 000000000..2254befd3 --- /dev/null +++ b/netbox/vpn/apps.py @@ -0,0 +1,9 @@ +from django.apps import AppConfig + + +class VPNConfig(AppConfig): + name = 'vpn' + verbose_name = 'VPN' + + def ready(self): + from . import search diff --git a/netbox/vpn/choices.py b/netbox/vpn/choices.py new file mode 100644 index 000000000..a272060e9 --- /dev/null +++ b/netbox/vpn/choices.py @@ -0,0 +1,254 @@ +from django.utils.translation import gettext_lazy as _ + +from utilities.choices import ChoiceSet + + +# +# Tunnels +# + +class TunnelStatusChoices(ChoiceSet): + key = 'Tunnel.status' + + STATUS_PLANNED = 'planned' + STATUS_ACTIVE = 'active' + STATUS_DISABLED = 'disabled' + + CHOICES = [ + (STATUS_PLANNED, _('Planned'), 'cyan'), + (STATUS_ACTIVE, _('Active'), 'green'), + (STATUS_DISABLED, _('Disabled'), 'red'), + ] + + +class TunnelEncapsulationChoices(ChoiceSet): + ENCAP_GRE = 'gre' + ENCAP_IP_IP = 'ip-ip' + ENCAP_IPSEC_TRANSPORT = 'ipsec-transport' + ENCAP_IPSEC_TUNNEL = 'ipsec-tunnel' + + CHOICES = [ + (ENCAP_IPSEC_TRANSPORT, _('IPsec - Transport')), + (ENCAP_IPSEC_TUNNEL, _('IPsec - Tunnel')), + (ENCAP_IP_IP, _('IP-in-IP')), + (ENCAP_GRE, _('GRE')), + ] + + +class TunnelTerminationTypeChoices(ChoiceSet): + # For TunnelCreateForm + TYPE_DEVICE = 'dcim.device' + TYPE_VIRUTALMACHINE = 'virtualization.virtualmachine' + + CHOICES = ( + (TYPE_DEVICE, _('Device')), + (TYPE_VIRUTALMACHINE, _('Virtual Machine')), + ) + + +class TunnelTerminationRoleChoices(ChoiceSet): + ROLE_PEER = 'peer' + ROLE_HUB = 'hub' + ROLE_SPOKE = 'spoke' + + CHOICES = [ + (ROLE_PEER, _('Peer'), 'green'), + (ROLE_HUB, _('Hub'), 'blue'), + (ROLE_SPOKE, _('Spoke'), 'orange'), + ] + + +# +# Crypto +# + +class IKEVersionChoices(ChoiceSet): + VERSION_1 = 1 + VERSION_2 = 2 + + CHOICES = ( + (VERSION_1, 'IKEv1'), + (VERSION_2, 'IKEv2'), + ) + + +class IKEModeChoices(ChoiceSet): + AGGRESSIVE = 'aggressive' + MAIN = 'main' + + CHOICES = ( + (AGGRESSIVE, _('Aggressive')), + (MAIN, _('Main')), + ) + + +class AuthenticationMethodChoices(ChoiceSet): + PRESHARED_KEYS = 'preshared-keys' + CERTIFICATES = 'certificates' + RSA_SIGNATURES = 'rsa-signatures' + DSA_SIGNATURES = 'dsa-signatures' + + CHOICES = ( + (PRESHARED_KEYS, _('Pre-shared keys')), + (CERTIFICATES, _('Certificates')), + (RSA_SIGNATURES, _('RSA signatures')), + (DSA_SIGNATURES, _('DSA signatures')), + ) + + +class IPSecModeChoices(ChoiceSet): + ESP = 'esp' + AH = 'ah' + + CHOICES = ( + (ESP, 'ESP'), + (AH, 'AH'), + ) + + +class EncryptionAlgorithmChoices(ChoiceSet): + ENCRYPTION_AES128_CBC = 'aes-128-cbc' + ENCRYPTION_AES128_GCM = 'aes-128-gcm' + ENCRYPTION_AES192_CBC = 'aes-192-cbc' + ENCRYPTION_AES192_GCM = 'aes-192-gcm' + ENCRYPTION_AES256_CBC = 'aes-256-cbc' + ENCRYPTION_AES256_GCM = 'aes-256-gcm' + ENCRYPTION_3DES = '3des-cbc' + ENCRYPTION_DES = 'des-cbc' + + CHOICES = ( + (ENCRYPTION_AES128_CBC, '128-bit AES (CBC)'), + (ENCRYPTION_AES128_GCM, '128-bit AES (GCM)'), + (ENCRYPTION_AES192_CBC, '192-bit AES (CBC)'), + (ENCRYPTION_AES192_GCM, '192-bit AES (GCM)'), + (ENCRYPTION_AES256_CBC, '256-bit AES (CBC)'), + (ENCRYPTION_AES256_GCM, '256-bit AES (GCM)'), + (ENCRYPTION_3DES, '3DES'), + (ENCRYPTION_3DES, 'DES'), + ) + + +class AuthenticationAlgorithmChoices(ChoiceSet): + AUTH_HMAC_SHA1 = 'hmac-sha1' + AUTH_HMAC_SHA256 = 'hmac-sha256' + AUTH_HMAC_SHA384 = 'hmac-sha384' + AUTH_HMAC_SHA512 = 'hmac-sha512' + AUTH_HMAC_MD5 = 'hmac-md5' + + CHOICES = ( + (AUTH_HMAC_SHA1, 'SHA-1 HMAC'), + (AUTH_HMAC_SHA256, 'SHA-256 HMAC'), + (AUTH_HMAC_SHA384, 'SHA-384 HMAC'), + (AUTH_HMAC_SHA512, 'SHA-512 HMAC'), + (AUTH_HMAC_MD5, 'MD5 HMAC'), + ) + + +class DHGroupChoices(ChoiceSet): + # https://www.iana.org/assignments/ikev2-parameters/ikev2-parameters.xhtml#ikev2-parameters-8 + GROUP_1 = 1 # 768-bit MODP + GROUP_2 = 2 # 1024-but MODP + # Groups 3-4 reserved + GROUP_5 = 5 # 1536-bit MODP + # Groups 6-13 unassigned + GROUP_14 = 14 # 2048-bit MODP + GROUP_15 = 15 # 3072-bit MODP + GROUP_16 = 16 # 4096-bit MODP + GROUP_17 = 17 # 6144-bit MODP + GROUP_18 = 18 # 8192-bit MODP + GROUP_19 = 19 # 256-bit random ECP + GROUP_20 = 20 # 384-bit random ECP + GROUP_21 = 21 # 521-bit random ECP (521 is not a typo) + GROUP_22 = 22 # 1024-bit MODP w/160-bit prime + GROUP_23 = 23 # 2048-bit MODP w/224-bit prime + GROUP_24 = 24 # 2048-bit MODP w/256-bit prime + GROUP_25 = 25 # 192-bit ECP + GROUP_26 = 26 # 224-bit ECP + GROUP_27 = 27 # brainpoolP224r1 + GROUP_28 = 28 # brainpoolP256r1 + GROUP_29 = 29 # brainpoolP384r1 + GROUP_30 = 30 # brainpoolP512r1 + GROUP_31 = 31 # Curve25519 + GROUP_32 = 32 # Curve448 + GROUP_33 = 33 # GOST3410_2012_256 + GROUP_34 = 34 # GOST3410_2012_512 + + CHOICES = ( + # Strings are formatted in this manner to optimize translations + (GROUP_1, _('Group {n}').format(n=1)), + (GROUP_2, _('Group {n}').format(n=2)), + (GROUP_5, _('Group {n}').format(n=5)), + (GROUP_14, _('Group {n}').format(n=14)), + (GROUP_16, _('Group {n}').format(n=16)), + (GROUP_17, _('Group {n}').format(n=17)), + (GROUP_18, _('Group {n}').format(n=18)), + (GROUP_19, _('Group {n}').format(n=19)), + (GROUP_20, _('Group {n}').format(n=20)), + (GROUP_21, _('Group {n}').format(n=21)), + (GROUP_22, _('Group {n}').format(n=22)), + (GROUP_23, _('Group {n}').format(n=23)), + (GROUP_24, _('Group {n}').format(n=24)), + (GROUP_25, _('Group {n}').format(n=25)), + (GROUP_26, _('Group {n}').format(n=26)), + (GROUP_27, _('Group {n}').format(n=27)), + (GROUP_28, _('Group {n}').format(n=28)), + (GROUP_29, _('Group {n}').format(n=29)), + (GROUP_30, _('Group {n}').format(n=30)), + (GROUP_31, _('Group {n}').format(n=31)), + (GROUP_32, _('Group {n}').format(n=32)), + (GROUP_33, _('Group {n}').format(n=33)), + (GROUP_34, _('Group {n}').format(n=34)), + ) + + +# +# L2VPN +# + +class L2VPNTypeChoices(ChoiceSet): + TYPE_VPLS = 'vpls' + TYPE_VPWS = 'vpws' + TYPE_EPL = 'epl' + TYPE_EVPL = 'evpl' + TYPE_EPLAN = 'ep-lan' + TYPE_EVPLAN = 'evp-lan' + TYPE_EPTREE = 'ep-tree' + TYPE_EVPTREE = 'evp-tree' + TYPE_VXLAN = 'vxlan' + TYPE_VXLAN_EVPN = 'vxlan-evpn' + TYPE_MPLS_EVPN = 'mpls-evpn' + TYPE_PBB_EVPN = 'pbb-evpn' + + CHOICES = ( + ('VPLS', ( + (TYPE_VPWS, 'VPWS'), + (TYPE_VPLS, 'VPLS'), + )), + ('VXLAN', ( + (TYPE_VXLAN, 'VXLAN'), + (TYPE_VXLAN_EVPN, 'VXLAN-EVPN'), + )), + ('L2VPN E-VPN', ( + (TYPE_MPLS_EVPN, 'MPLS EVPN'), + (TYPE_PBB_EVPN, 'PBB EVPN'), + )), + ('E-Line', ( + (TYPE_EPL, 'EPL'), + (TYPE_EVPL, 'EVPL'), + )), + ('E-LAN', ( + (TYPE_EPLAN, _('Ethernet Private LAN')), + (TYPE_EVPLAN, _('Ethernet Virtual Private LAN')), + )), + ('E-Tree', ( + (TYPE_EPTREE, _('Ethernet Private Tree')), + (TYPE_EVPTREE, _('Ethernet Virtual Private Tree')), + )), + ) + + P2P = ( + TYPE_VPWS, + TYPE_EPL, + TYPE_EPLAN, + TYPE_EPTREE + ) diff --git a/netbox/vpn/constants.py b/netbox/vpn/constants.py new file mode 100644 index 000000000..55e398dcd --- /dev/null +++ b/netbox/vpn/constants.py @@ -0,0 +1,7 @@ +from django.db.models import Q + +L2VPN_ASSIGNMENT_MODELS = Q( + Q(app_label='dcim', model='interface') | + Q(app_label='ipam', model='vlan') | + Q(app_label='virtualization', model='vminterface') +) diff --git a/netbox/vpn/filtersets.py b/netbox/vpn/filtersets.py new file mode 100644 index 000000000..0647838a8 --- /dev/null +++ b/netbox/vpn/filtersets.py @@ -0,0 +1,437 @@ +import django_filters +from django.db.models import Q +from django.utils.translation import gettext as _ + +from dcim.models import Device, Interface +from ipam.models import IPAddress, RouteTarget, VLAN +from netbox.filtersets import NetBoxModelFilterSet, OrganizationalModelFilterSet +from tenancy.filtersets import TenancyFilterSet +from utilities.filters import ContentTypeFilter, MultiValueCharFilter, MultiValueNumberFilter +from virtualization.models import VirtualMachine, VMInterface +from .choices import * +from .models import * + +__all__ = ( + 'IKEPolicyFilterSet', + 'IKEProposalFilterSet', + 'IPSecPolicyFilterSet', + 'IPSecProfileFilterSet', + 'IPSecProposalFilterSet', + 'L2VPNFilterSet', + 'L2VPNTerminationFilterSet', + 'TunnelFilterSet', + 'TunnelGroupFilterSet', + 'TunnelTerminationFilterSet', +) + + +class TunnelGroupFilterSet(OrganizationalModelFilterSet): + + class Meta: + model = TunnelGroup + fields = ['id', 'name', 'slug', 'description'] + + +class TunnelFilterSet(NetBoxModelFilterSet, TenancyFilterSet): + status = django_filters.MultipleChoiceFilter( + choices=TunnelStatusChoices + ) + group_id = django_filters.ModelMultipleChoiceFilter( + queryset=TunnelGroup.objects.all(), + label=_('Tunnel group (ID)'), + ) + group = django_filters.ModelMultipleChoiceFilter( + field_name='group__slug', + queryset=TunnelGroup.objects.all(), + to_field_name='slug', + label=_('Tunnel group (slug)'), + ) + encapsulation = django_filters.MultipleChoiceFilter( + choices=TunnelEncapsulationChoices + ) + ipsec_profile_id = django_filters.ModelMultipleChoiceFilter( + queryset=IPSecProfile.objects.all(), + label=_('IPSec profile (ID)'), + ) + ipsec_profile = django_filters.ModelMultipleChoiceFilter( + field_name='ipsec_profile__name', + queryset=IPSecProfile.objects.all(), + to_field_name='name', + label=_('IPSec profile (name)'), + ) + + class Meta: + model = Tunnel + fields = ['id', 'name', 'tunnel_id', 'description'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) | + Q(comments__icontains=value) + ) + + +class TunnelTerminationFilterSet(NetBoxModelFilterSet): + tunnel_id = django_filters.ModelMultipleChoiceFilter( + field_name='tunnel', + queryset=Tunnel.objects.all(), + label=_('Tunnel (ID)'), + ) + tunnel = django_filters.ModelMultipleChoiceFilter( + field_name='tunnel__name', + queryset=Tunnel.objects.all(), + to_field_name='name', + label=_('Tunnel (name)'), + ) + role = django_filters.MultipleChoiceFilter( + choices=TunnelTerminationRoleChoices + ) + termination_type = ContentTypeFilter() + interface = django_filters.ModelMultipleChoiceFilter( + field_name='interface__name', + queryset=Interface.objects.all(), + to_field_name='name', + label=_('Interface (name)'), + ) + interface_id = django_filters.ModelMultipleChoiceFilter( + field_name='interface', + queryset=Interface.objects.all(), + label=_('Interface (ID)'), + ) + vminterface = django_filters.ModelMultipleChoiceFilter( + field_name='vminterface__name', + queryset=VMInterface.objects.all(), + to_field_name='name', + label=_('VM interface (name)'), + ) + vminterface_id = django_filters.ModelMultipleChoiceFilter( + field_name='vminterface', + queryset=VMInterface.objects.all(), + label=_('VM interface (ID)'), + ) + outside_ip_id = django_filters.ModelMultipleChoiceFilter( + field_name='outside_ip', + queryset=IPAddress.objects.all(), + label=_('Outside IP (ID)'), + ) + + class Meta: + model = TunnelTermination + fields = ['id'] + + +class IKEProposalFilterSet(NetBoxModelFilterSet): + authentication_method = django_filters.MultipleChoiceFilter( + choices=AuthenticationMethodChoices + ) + encryption_algorithm = django_filters.MultipleChoiceFilter( + choices=EncryptionAlgorithmChoices + ) + authentication_algorithm = django_filters.MultipleChoiceFilter( + choices=AuthenticationAlgorithmChoices + ) + group = django_filters.MultipleChoiceFilter( + choices=DHGroupChoices + ) + + class Meta: + model = IKEProposal + fields = ['id', 'name', 'sa_lifetime', 'description'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) | + Q(comments__icontains=value) + ) + + +class IKEPolicyFilterSet(NetBoxModelFilterSet): + version = django_filters.MultipleChoiceFilter( + choices=IKEVersionChoices + ) + mode = django_filters.MultipleChoiceFilter( + choices=IKEModeChoices + ) + proposal_id = MultiValueNumberFilter( + field_name='proposals__id' + ) + proposal = MultiValueCharFilter( + field_name='proposals__name' + ) + + class Meta: + model = IKEPolicy + fields = ['id', 'name', 'preshared_key', 'description'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) | + Q(comments__icontains=value) + ) + + +class IPSecProposalFilterSet(NetBoxModelFilterSet): + encryption_algorithm = django_filters.MultipleChoiceFilter( + choices=EncryptionAlgorithmChoices + ) + authentication_algorithm = django_filters.MultipleChoiceFilter( + choices=AuthenticationAlgorithmChoices + ) + + class Meta: + model = IPSecProposal + fields = ['id', 'name', 'sa_lifetime_seconds', 'sa_lifetime_data', 'description'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) | + Q(comments__icontains=value) + ) + + +class IPSecPolicyFilterSet(NetBoxModelFilterSet): + pfs_group = django_filters.MultipleChoiceFilter( + choices=DHGroupChoices + ) + proposal_id = MultiValueNumberFilter( + field_name='proposals__id' + ) + proposal = MultiValueCharFilter( + field_name='proposals__name' + ) + + class Meta: + model = IPSecPolicy + fields = ['id', 'name', 'description'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) | + Q(comments__icontains=value) + ) + + +class IPSecProfileFilterSet(NetBoxModelFilterSet): + mode = django_filters.MultipleChoiceFilter( + choices=IPSecModeChoices + ) + ike_policy_id = django_filters.ModelMultipleChoiceFilter( + queryset=IKEPolicy.objects.all(), + label=_('IKE policy (ID)'), + ) + ike_policy = django_filters.ModelMultipleChoiceFilter( + field_name='ike_policy__name', + queryset=IKEPolicy.objects.all(), + to_field_name='name', + label=_('IKE policy (name)'), + ) + ipsec_policy_id = django_filters.ModelMultipleChoiceFilter( + queryset=IPSecPolicy.objects.all(), + label=_('IPSec policy (ID)'), + ) + ipsec_policy = django_filters.ModelMultipleChoiceFilter( + field_name='ipsec_policy__name', + queryset=IPSecPolicy.objects.all(), + to_field_name='name', + label=_('IPSec policy (name)'), + ) + + class Meta: + model = IPSecProfile + fields = ['id', 'name', 'description'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + return queryset.filter( + Q(name__icontains=value) | + Q(description__icontains=value) | + Q(comments__icontains=value) + ) + + +class L2VPNFilterSet(NetBoxModelFilterSet, TenancyFilterSet): + type = django_filters.MultipleChoiceFilter( + choices=L2VPNTypeChoices, + null_value=None + ) + import_target_id = django_filters.ModelMultipleChoiceFilter( + field_name='import_targets', + queryset=RouteTarget.objects.all(), + label=_('Import target'), + ) + import_target = django_filters.ModelMultipleChoiceFilter( + field_name='import_targets__name', + queryset=RouteTarget.objects.all(), + to_field_name='name', + label=_('Import target (name)'), + ) + export_target_id = django_filters.ModelMultipleChoiceFilter( + field_name='export_targets', + queryset=RouteTarget.objects.all(), + label=_('Export target'), + ) + export_target = django_filters.ModelMultipleChoiceFilter( + field_name='export_targets__name', + queryset=RouteTarget.objects.all(), + to_field_name='name', + label=_('Export target (name)'), + ) + + class Meta: + model = L2VPN + fields = ['id', 'identifier', 'name', 'slug', 'type', 'description'] + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + qs_filter = Q(name__icontains=value) | Q(description__icontains=value) + try: + qs_filter |= Q(identifier=int(value)) + except ValueError: + pass + return queryset.filter(qs_filter) + + +class L2VPNTerminationFilterSet(NetBoxModelFilterSet): + l2vpn_id = django_filters.ModelMultipleChoiceFilter( + queryset=L2VPN.objects.all(), + label=_('L2VPN (ID)'), + ) + l2vpn = django_filters.ModelMultipleChoiceFilter( + field_name='l2vpn__slug', + queryset=L2VPN.objects.all(), + to_field_name='slug', + label=_('L2VPN (slug)'), + ) + region = MultiValueCharFilter( + method='filter_region', + field_name='slug', + label=_('Region (slug)'), + ) + region_id = MultiValueNumberFilter( + method='filter_region', + field_name='pk', + label=_('Region (ID)'), + ) + site = MultiValueCharFilter( + method='filter_site', + field_name='slug', + label=_('Site (slug)'), + ) + site_id = MultiValueNumberFilter( + method='filter_site', + field_name='pk', + label=_('Site (ID)'), + ) + device = django_filters.ModelMultipleChoiceFilter( + field_name='interface__device__name', + queryset=Device.objects.all(), + to_field_name='name', + label=_('Device (name)'), + ) + device_id = django_filters.ModelMultipleChoiceFilter( + field_name='interface__device', + queryset=Device.objects.all(), + label=_('Device (ID)'), + ) + virtual_machine = django_filters.ModelMultipleChoiceFilter( + field_name='vminterface__virtual_machine__name', + queryset=VirtualMachine.objects.all(), + to_field_name='name', + label=_('Virtual machine (name)'), + ) + virtual_machine_id = django_filters.ModelMultipleChoiceFilter( + field_name='vminterface__virtual_machine', + queryset=VirtualMachine.objects.all(), + label=_('Virtual machine (ID)'), + ) + interface = django_filters.ModelMultipleChoiceFilter( + field_name='interface__name', + queryset=Interface.objects.all(), + to_field_name='name', + label=_('Interface (name)'), + ) + interface_id = django_filters.ModelMultipleChoiceFilter( + field_name='interface', + queryset=Interface.objects.all(), + label=_('Interface (ID)'), + ) + vminterface = django_filters.ModelMultipleChoiceFilter( + field_name='vminterface__name', + queryset=VMInterface.objects.all(), + to_field_name='name', + label=_('VM interface (name)'), + ) + vminterface_id = django_filters.ModelMultipleChoiceFilter( + field_name='vminterface', + queryset=VMInterface.objects.all(), + label=_('VM Interface (ID)'), + ) + vlan = django_filters.ModelMultipleChoiceFilter( + field_name='vlan__name', + queryset=VLAN.objects.all(), + to_field_name='name', + label=_('VLAN (name)'), + ) + vlan_vid = django_filters.NumberFilter( + field_name='vlan__vid', + label=_('VLAN number (1-4094)'), + ) + vlan_id = django_filters.ModelMultipleChoiceFilter( + field_name='vlan', + queryset=VLAN.objects.all(), + label=_('VLAN (ID)'), + ) + assigned_object_type = ContentTypeFilter() + + class Meta: + model = L2VPNTermination + fields = ('id', 'assigned_object_type_id') + + def search(self, queryset, name, value): + if not value.strip(): + return queryset + qs_filter = Q(l2vpn__name__icontains=value) + return queryset.filter(qs_filter) + + def filter_assigned_object(self, queryset, name, value): + qs = queryset.filter( + Q(**{'{}__in'.format(name): value}) + ) + return qs + + def filter_site(self, queryset, name, value): + qs = queryset.filter( + Q( + Q(**{'vlan__site__{}__in'.format(name): value}) | + Q(**{'interface__device__site__{}__in'.format(name): value}) | + Q(**{'vminterface__virtual_machine__site__{}__in'.format(name): value}) + ) + ) + return qs + + def filter_region(self, queryset, name, value): + qs = queryset.filter( + Q( + Q(**{'vlan__site__region__{}__in'.format(name): value}) | + Q(**{'interface__device__site__region__{}__in'.format(name): value}) | + Q(**{'vminterface__virtual_machine__site__region__{}__in'.format(name): value}) + ) + ) + return qs diff --git a/netbox/vpn/forms/__init__.py b/netbox/vpn/forms/__init__.py new file mode 100644 index 000000000..1499f98b2 --- /dev/null +++ b/netbox/vpn/forms/__init__.py @@ -0,0 +1,4 @@ +from .bulk_edit import * +from .bulk_import import * +from .filtersets import * +from .model_forms import * diff --git a/netbox/vpn/forms/bulk_edit.py b/netbox/vpn/forms/bulk_edit.py new file mode 100644 index 000000000..a976c5659 --- /dev/null +++ b/netbox/vpn/forms/bulk_edit.py @@ -0,0 +1,291 @@ +from django import forms +from django.utils.translation import gettext_lazy as _ + +from netbox.forms import NetBoxModelBulkEditForm +from tenancy.models import Tenant +from utilities.forms import add_blank_choice +from utilities.forms.fields import CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField +from vpn.choices import * +from vpn.models import * + +__all__ = ( + 'IKEPolicyBulkEditForm', + 'IKEProposalBulkEditForm', + 'IPSecPolicyBulkEditForm', + 'IPSecProfileBulkEditForm', + 'IPSecProposalBulkEditForm', + 'L2VPNBulkEditForm', + 'L2VPNTerminationBulkEditForm', + 'TunnelBulkEditForm', + 'TunnelGroupBulkEditForm', + 'TunnelTerminationBulkEditForm', +) + + +class TunnelGroupBulkEditForm(NetBoxModelBulkEditForm): + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + + model = TunnelGroup + nullable_fields = ('description',) + + +class TunnelBulkEditForm(NetBoxModelBulkEditForm): + status = forms.ChoiceField( + label=_('Status'), + choices=add_blank_choice(TunnelStatusChoices), + required=False + ) + group = DynamicModelChoiceField( + queryset=TunnelGroup.objects.all(), + label=_('Tunnel group'), + required=False + ) + encapsulation = forms.ChoiceField( + label=_('Encapsulation'), + choices=add_blank_choice(TunnelEncapsulationChoices), + required=False + ) + ipsec_profile = DynamicModelMultipleChoiceField( + queryset=IPSecProfile.objects.all(), + label=_('IPSec profile'), + required=False + ) + tenant = DynamicModelChoiceField( + label=_('Tenant'), + queryset=Tenant.objects.all(), + required=False + ) + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + tunnel_id = forms.IntegerField( + label=_('Tunnel ID'), + required=False + ) + comments = CommentField() + + model = Tunnel + fieldsets = ( + (_('Tunnel'), ('status', 'group', 'encapsulation', 'tunnel_id', 'description')), + (_('Security'), ('ipsec_profile',)), + (_('Tenancy'), ('tenant',)), + ) + nullable_fields = ( + 'group', 'ipsec_profile', 'tunnel_id', 'tenant', 'description', 'comments', + ) + + +class TunnelTerminationBulkEditForm(NetBoxModelBulkEditForm): + role = forms.ChoiceField( + label=_('Role'), + choices=add_blank_choice(TunnelTerminationRoleChoices), + required=False + ) + + model = TunnelTermination + + +class IKEProposalBulkEditForm(NetBoxModelBulkEditForm): + authentication_method = forms.ChoiceField( + label=_('Authentication method'), + choices=add_blank_choice(AuthenticationMethodChoices), + required=False + ) + encryption_algorithm = forms.ChoiceField( + label=_('Encryption algorithm'), + choices=add_blank_choice(EncryptionAlgorithmChoices), + required=False + ) + authentication_algorithm = forms.ChoiceField( + label=_('Authentication algorithm'), + choices=add_blank_choice(AuthenticationAlgorithmChoices), + required=False + ) + group = forms.ChoiceField( + label=_('Group'), + choices=add_blank_choice(DHGroupChoices), + required=False + ) + sa_lifetime = forms.IntegerField( + label=_('SA lifetime'), + required=False + ) + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + comments = CommentField() + + model = IKEProposal + fieldsets = ( + (None, ( + 'authentication_method', 'encryption_algorithm', 'authentication_algorithm', 'group', 'sa_lifetime', + 'description', + )), + ) + nullable_fields = ( + 'sa_lifetime', 'description', 'comments', + ) + + +class IKEPolicyBulkEditForm(NetBoxModelBulkEditForm): + version = forms.ChoiceField( + label=_('Version'), + choices=add_blank_choice(IKEVersionChoices), + required=False + ) + mode = forms.ChoiceField( + label=_('Mode'), + choices=add_blank_choice(IKEModeChoices), + required=False + ) + preshared_key = forms.CharField( + label=_('Pre-shared key'), + required=False + ) + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + comments = CommentField() + + model = IKEPolicy + fieldsets = ( + (None, ( + 'version', 'mode', 'preshared_key', 'description', + )), + ) + nullable_fields = ( + 'preshared_key', 'description', 'comments', + ) + + +class IPSecProposalBulkEditForm(NetBoxModelBulkEditForm): + encryption_algorithm = forms.ChoiceField( + label=_('Encryption algorithm'), + choices=add_blank_choice(EncryptionAlgorithmChoices), + required=False + ) + authentication_algorithm = forms.ChoiceField( + label=_('Authentication algorithm'), + choices=add_blank_choice(AuthenticationAlgorithmChoices), + required=False + ) + sa_lifetime_seconds = forms.IntegerField( + label=_('SA lifetime (seconds)'), + required=False + ) + sa_lifetime_data = forms.IntegerField( + label=_('SA lifetime (KB)'), + required=False + ) + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + comments = CommentField() + + model = IPSecProposal + fieldsets = ( + (None, ( + 'encryption_algorithm', 'authentication_algorithm', 'sa_lifetime_seconds', 'sa_lifetime_data', + 'description', + )), + ) + nullable_fields = ( + 'sa_lifetime_seconds', 'sa_lifetime_data', 'description', 'comments', + ) + + +class IPSecPolicyBulkEditForm(NetBoxModelBulkEditForm): + pfs_group = forms.ChoiceField( + label=_('PFS group'), + choices=add_blank_choice(DHGroupChoices), + required=False + ) + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + comments = CommentField() + + model = IPSecPolicy + fieldsets = ( + (None, ('pfs_group', 'description',)), + ) + nullable_fields = ( + 'pfs_group', 'description', 'comments', + ) + + +class IPSecProfileBulkEditForm(NetBoxModelBulkEditForm): + mode = forms.ChoiceField( + label=_('Mode'), + choices=add_blank_choice(IPSecModeChoices), + required=False + ) + ike_policy = DynamicModelChoiceField( + label=_('IKE policy'), + queryset=IKEPolicy.objects.all(), + required=False + ) + ipsec_policy = DynamicModelChoiceField( + label=_('IPSec policy'), + queryset=IPSecPolicy.objects.all(), + required=False + ) + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + comments = CommentField() + + model = IPSecProfile + fieldsets = ( + (_('Profile'), ( + 'mode', 'ike_policy', 'ipsec_policy', 'description', + )), + ) + nullable_fields = ( + 'description', 'comments', + ) + + +class L2VPNBulkEditForm(NetBoxModelBulkEditForm): + type = forms.ChoiceField( + label=_('Type'), + choices=add_blank_choice(L2VPNTypeChoices), + required=False + ) + tenant = DynamicModelChoiceField( + label=_('Tenant'), + queryset=Tenant.objects.all(), + required=False + ) + description = forms.CharField( + label=_('Description'), + max_length=200, + required=False + ) + comments = CommentField() + + model = L2VPN + fieldsets = ( + (None, ('type', 'tenant', 'description')), + ) + nullable_fields = ('tenant', 'description', 'comments') + + +class L2VPNTerminationBulkEditForm(NetBoxModelBulkEditForm): + model = L2VPN diff --git a/netbox/vpn/forms/bulk_import.py b/netbox/vpn/forms/bulk_import.py new file mode 100644 index 000000000..c5d53eb1d --- /dev/null +++ b/netbox/vpn/forms/bulk_import.py @@ -0,0 +1,337 @@ +from django.core.exceptions import ValidationError +from django.utils.translation import gettext_lazy as _ + +from dcim.models import Device, Interface +from ipam.models import IPAddress, VLAN +from netbox.forms import NetBoxModelImportForm +from tenancy.models import Tenant +from utilities.forms.fields import CSVChoiceField, CSVModelChoiceField, CSVModelMultipleChoiceField, SlugField +from virtualization.models import VirtualMachine, VMInterface +from vpn.choices import * +from vpn.models import * + +__all__ = ( + 'IKEPolicyImportForm', + 'IKEProposalImportForm', + 'IPSecPolicyImportForm', + 'IPSecProfileImportForm', + 'IPSecProposalImportForm', + 'L2VPNImportForm', + 'L2VPNTerminationImportForm', + 'TunnelImportForm', + 'TunnelGroupImportForm', + 'TunnelTerminationImportForm', +) + + +class TunnelGroupImportForm(NetBoxModelImportForm): + slug = SlugField() + + class Meta: + model = TunnelGroup + fields = ('name', 'slug', 'description', 'tags') + + +class TunnelImportForm(NetBoxModelImportForm): + status = CSVChoiceField( + label=_('Status'), + choices=TunnelStatusChoices, + help_text=_('Operational status') + ) + group = CSVModelChoiceField( + label=_('Tunnel group'), + queryset=TunnelGroup.objects.all(), + required=False, + to_field_name='name' + ) + encapsulation = CSVChoiceField( + label=_('Encapsulation'), + choices=TunnelEncapsulationChoices, + help_text=_('Tunnel encapsulation') + ) + ipsec_profile = CSVModelChoiceField( + label=_('IPSec profile'), + queryset=IPSecProfile.objects.all(), + required=False, + to_field_name='name' + ) + tenant = CSVModelChoiceField( + label=_('Tenant'), + queryset=Tenant.objects.all(), + required=False, + to_field_name='name', + help_text=_('Assigned tenant') + ) + + class Meta: + model = Tunnel + fields = ( + 'name', 'status', 'group', 'encapsulation', 'ipsec_profile', 'tenant', 'tunnel_id', 'description', + 'comments', 'tags', + ) + + +class TunnelTerminationImportForm(NetBoxModelImportForm): + tunnel = CSVModelChoiceField( + label=_('Tunnel'), + queryset=Tunnel.objects.all(), + to_field_name='name' + ) + role = CSVChoiceField( + label=_('Role'), + choices=TunnelTerminationRoleChoices, + help_text=_('Operational role') + ) + device = CSVModelChoiceField( + label=_('Device'), + queryset=Device.objects.all(), + required=False, + to_field_name='name', + help_text=_('Parent device of assigned interface') + ) + virtual_machine = CSVModelChoiceField( + label=_('Virtual machine'), + queryset=VirtualMachine.objects.all(), + required=False, + to_field_name='name', + help_text=_('Parent VM of assigned interface') + ) + termination = CSVModelChoiceField( + label=_('Termination'), + queryset=Interface.objects.none(), # Can also refer to VMInterface + required=False, + to_field_name='name', + help_text=_('Device or virtual machine interface') + ) + outside_ip = CSVModelChoiceField( + label=_('Outside IP'), + queryset=IPAddress.objects.all(), + required=False, + to_field_name='name' + ) + + class Meta: + model = TunnelTermination + fields = ( + 'tunnel', 'role', 'outside_ip', 'tags', + ) + + def __init__(self, data=None, *args, **kwargs): + super().__init__(data, *args, **kwargs) + + if data: + + # Limit termination queryset by assigned device/VM + if data.get('device'): + self.fields['termination'].queryset = Interface.objects.filter( + **{f"device__{self.fields['device'].to_field_name}": data['device']} + ) + elif data.get('virtual_machine'): + self.fields['termination'].queryset = VMInterface.objects.filter( + **{f"virtual_machine__{self.fields['virtual_machine'].to_field_name}": data['virtual_machine']} + ) + + def save(self, *args, **kwargs): + + # Assign termination object + if self.cleaned_data.get('termination'): + self.instance.termination = self.cleaned_data['termination'] + + return super().save(*args, **kwargs) + + +class IKEProposalImportForm(NetBoxModelImportForm): + authentication_method = CSVChoiceField( + label=_('Authentication method'), + choices=AuthenticationMethodChoices + ) + encryption_algorithm = CSVChoiceField( + label=_('Encryption algorithm'), + choices=EncryptionAlgorithmChoices + ) + authentication_algorithm = CSVChoiceField( + label=_('Authentication algorithm'), + choices=AuthenticationAlgorithmChoices + ) + group = CSVChoiceField( + label=_('Group'), + choices=DHGroupChoices + ) + + class Meta: + model = IKEProposal + fields = ( + 'name', 'description', 'authentication_method', 'encryption_algorithm', 'authentication_algorithm', + 'group', 'sa_lifetime', 'comments', 'tags', + ) + + +class IKEPolicyImportForm(NetBoxModelImportForm): + version = CSVChoiceField( + label=_('Version'), + choices=IKEVersionChoices + ) + mode = CSVChoiceField( + label=_('Mode'), + choices=IKEModeChoices + ) + proposals = CSVModelMultipleChoiceField( + queryset=IKEProposal.objects.all(), + to_field_name='name', + help_text=_('IKE proposal(s)'), + ) + + class Meta: + model = IKEPolicy + fields = ( + 'name', 'description', 'version', 'mode', 'proposals', 'preshared_key', 'comments', 'tags', + ) + + +class IPSecProposalImportForm(NetBoxModelImportForm): + encryption_algorithm = CSVChoiceField( + label=_('Encryption algorithm'), + choices=EncryptionAlgorithmChoices + ) + authentication_algorithm = CSVChoiceField( + label=_('Authentication algorithm'), + choices=AuthenticationAlgorithmChoices + ) + + class Meta: + model = IPSecProposal + fields = ( + 'name', 'description', 'encryption_algorithm', 'authentication_algorithm', 'sa_lifetime_seconds', + 'sa_lifetime_data', 'comments', 'tags', + ) + + +class IPSecPolicyImportForm(NetBoxModelImportForm): + pfs_group = CSVChoiceField( + label=_('Diffie-Hellman group for Perfect Forward Secrecy'), + choices=DHGroupChoices + ) + proposals = CSVModelMultipleChoiceField( + queryset=IPSecProposal.objects.all(), + to_field_name='name', + help_text=_('IPSec proposal(s)'), + ) + + class Meta: + model = IPSecPolicy + fields = ( + 'name', 'description', 'proposals', 'pfs_group', 'comments', 'tags', + ) + + +class IPSecProfileImportForm(NetBoxModelImportForm): + mode = CSVChoiceField( + label=_('Mode'), + choices=IPSecModeChoices, + help_text=_('IPSec protocol') + ) + ike_policy = CSVModelChoiceField( + label=_('IKE policy'), + queryset=IKEPolicy.objects.all(), + to_field_name='name' + ) + ipsec_policy = CSVModelChoiceField( + label=_('IPSec policy'), + queryset=IPSecPolicy.objects.all(), + to_field_name='name' + ) + + class Meta: + model = IPSecProfile + fields = ( + 'name', 'mode', 'ike_policy', 'ipsec_policy', 'description', 'comments', 'tags', + ) + + +class L2VPNImportForm(NetBoxModelImportForm): + tenant = CSVModelChoiceField( + label=_('Tenant'), + queryset=Tenant.objects.all(), + required=False, + to_field_name='name', + ) + type = CSVChoiceField( + label=_('Type'), + choices=L2VPNTypeChoices, + help_text=_('L2VPN type') + ) + + class Meta: + model = L2VPN + fields = ('identifier', 'name', 'slug', 'tenant', 'type', 'description', + 'comments', 'tags') + + +class L2VPNTerminationImportForm(NetBoxModelImportForm): + l2vpn = CSVModelChoiceField( + queryset=L2VPN.objects.all(), + required=True, + to_field_name='name', + label=_('L2VPN'), + ) + device = CSVModelChoiceField( + label=_('Device'), + queryset=Device.objects.all(), + required=False, + to_field_name='name', + help_text=_('Parent device (for interface)') + ) + virtual_machine = CSVModelChoiceField( + label=_('Virtual machine'), + queryset=VirtualMachine.objects.all(), + required=False, + to_field_name='name', + help_text=_('Parent virtual machine (for interface)') + ) + interface = CSVModelChoiceField( + label=_('Interface'), + queryset=Interface.objects.none(), # Can also refer to VMInterface + required=False, + to_field_name='name', + help_text=_('Assigned interface (device or VM)') + ) + vlan = CSVModelChoiceField( + label=_('VLAN'), + queryset=VLAN.objects.all(), + required=False, + to_field_name='name', + help_text=_('Assigned VLAN') + ) + + class Meta: + model = L2VPNTermination + fields = ('l2vpn', 'device', 'virtual_machine', 'interface', 'vlan', 'tags') + + def __init__(self, data=None, *args, **kwargs): + super().__init__(data, *args, **kwargs) + + if data: + + # Limit interface queryset by device or VM + if data.get('device'): + self.fields['interface'].queryset = Interface.objects.filter( + **{f"device__{self.fields['device'].to_field_name}": data['device']} + ) + elif data.get('virtual_machine'): + self.fields['interface'].queryset = VMInterface.objects.filter( + **{f"virtual_machine__{self.fields['virtual_machine'].to_field_name}": data['virtual_machine']} + ) + + def clean(self): + super().clean() + + if self.cleaned_data.get('device') and self.cleaned_data.get('virtual_machine'): + raise ValidationError(_('Cannot import device and VM interface terminations simultaneously.')) + if not self.instance and not (self.cleaned_data.get('interface') or self.cleaned_data.get('vlan')): + raise ValidationError(_('Each termination must specify either an interface or a VLAN.')) + if self.cleaned_data.get('interface') and self.cleaned_data.get('vlan'): + raise ValidationError(_('Cannot assign both an interface and a VLAN.')) + + # if this is an update we might not have interface or vlan in the form data + if self.cleaned_data.get('interface') or self.cleaned_data.get('vlan'): + self.instance.assigned_object = self.cleaned_data.get('interface') or self.cleaned_data.get('vlan') diff --git a/netbox/vpn/forms/filtersets.py b/netbox/vpn/forms/filtersets.py new file mode 100644 index 000000000..a9326c4bc --- /dev/null +++ b/netbox/vpn/forms/filtersets.py @@ -0,0 +1,290 @@ +from django import forms +from django.contrib.contenttypes.models import ContentType +from django.utils.translation import gettext as _ + +from dcim.models import Device, Region, Site +from ipam.models import RouteTarget, VLAN +from netbox.forms import NetBoxModelFilterSetForm +from tenancy.forms import TenancyFilterForm +from utilities.forms.fields import ( + ContentTypeMultipleChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, TagFilterField, +) +from utilities.forms.utils import add_blank_choice +from virtualization.models import VirtualMachine +from vpn.choices import * +from vpn.constants import L2VPN_ASSIGNMENT_MODELS +from vpn.models import * + +__all__ = ( + 'IKEPolicyFilterForm', + 'IKEProposalFilterForm', + 'IPSecPolicyFilterForm', + 'IPSecProfileFilterForm', + 'IPSecProposalFilterForm', + 'L2VPNFilterForm', + 'L2VPNTerminationFilterForm', + 'TunnelFilterForm', + 'TunnelGroupFilterForm', + 'TunnelTerminationFilterForm', +) + + +class TunnelGroupFilterForm(NetBoxModelFilterSetForm): + model = TunnelGroup + tag = TagFilterField(model) + + +class TunnelFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): + model = Tunnel + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Tunnel'), ('status', 'encapsulation', 'tunnel_id')), + (_('Security'), ('ipsec_profile_id',)), + (_('Tenancy'), ('tenant_group_id', 'tenant_id')), + ) + status = forms.MultipleChoiceField( + label=_('Status'), + choices=TunnelStatusChoices, + required=False + ) + group_id = DynamicModelMultipleChoiceField( + queryset=TunnelGroup.objects.all(), + required=False, + label=_('Tunnel group') + ) + encapsulation = forms.MultipleChoiceField( + label=_('Encapsulation'), + choices=TunnelEncapsulationChoices, + required=False + ) + ipsec_profile_id = DynamicModelMultipleChoiceField( + queryset=IPSecProfile.objects.all(), + required=False, + label=_('IPSec profile') + ) + tunnel_id = forms.IntegerField( + required=False, + label=_('Tunnel ID') + ) + tag = TagFilterField(model) + + +class TunnelTerminationFilterForm(NetBoxModelFilterSetForm): + model = TunnelTermination + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Termination'), ('tunnel_id', 'role')), + ) + tunnel_id = DynamicModelMultipleChoiceField( + queryset=Tunnel.objects.all(), + required=False, + label=_('Tunnel') + ) + role = forms.MultipleChoiceField( + label=_('Role'), + choices=TunnelTerminationRoleChoices, + required=False + ) + tag = TagFilterField(model) + + +class IKEProposalFilterForm(NetBoxModelFilterSetForm): + model = IKEProposal + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Parameters'), ('authentication_method', 'encryption_algorithm', 'authentication_algorithm', 'group')), + ) + authentication_method = forms.MultipleChoiceField( + label=_('Authentication method'), + choices=AuthenticationMethodChoices, + required=False + ) + encryption_algorithm = forms.MultipleChoiceField( + label=_('Encryption algorithm'), + choices=EncryptionAlgorithmChoices, + required=False + ) + authentication_algorithm = forms.MultipleChoiceField( + label=_('Authentication algorithm'), + choices=AuthenticationAlgorithmChoices, + required=False + ) + group = forms.MultipleChoiceField( + label=_('Group'), + choices=DHGroupChoices, + required=False + ) + tag = TagFilterField(model) + + +class IKEPolicyFilterForm(NetBoxModelFilterSetForm): + model = IKEPolicy + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Parameters'), ('version', 'mode', 'proposal_id')), + ) + version = forms.MultipleChoiceField( + label=_('IKE version'), + choices=IKEVersionChoices, + required=False + ) + mode = forms.MultipleChoiceField( + label=_('Mode'), + choices=IKEModeChoices, + required=False + ) + proposal_id = DynamicModelMultipleChoiceField( + queryset=IKEProposal.objects.all(), + required=False, + label=_('Proposal') + ) + tag = TagFilterField(model) + + +class IPSecProposalFilterForm(NetBoxModelFilterSetForm): + model = IPSecProposal + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Parameters'), ('encryption_algorithm', 'authentication_algorithm')), + ) + encryption_algorithm = forms.MultipleChoiceField( + label=_('Encryption algorithm'), + choices=EncryptionAlgorithmChoices, + required=False + ) + authentication_algorithm = forms.MultipleChoiceField( + label=_('Authentication algorithm'), + choices=AuthenticationAlgorithmChoices, + required=False + ) + tag = TagFilterField(model) + + +class IPSecPolicyFilterForm(NetBoxModelFilterSetForm): + model = IPSecPolicy + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Parameters'), ('proposal_id', 'pfs_group')), + ) + proposal_id = DynamicModelMultipleChoiceField( + queryset=IKEProposal.objects.all(), + required=False, + label=_('Proposal') + ) + pfs_group = forms.MultipleChoiceField( + label=_('Mode'), + choices=DHGroupChoices, + required=False + ) + tag = TagFilterField(model) + + +class IPSecProfileFilterForm(NetBoxModelFilterSetForm): + model = IPSecProfile + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Profile'), ('mode', 'ike_policy_id', 'ipsec_policy_id')), + ) + mode = forms.MultipleChoiceField( + label=_('Mode'), + choices=IPSecModeChoices, + required=False + ) + ike_policy_id = DynamicModelMultipleChoiceField( + queryset=IKEPolicy.objects.all(), + required=False, + label=_('IKE policy') + ) + ipsec_policy_id = DynamicModelMultipleChoiceField( + queryset=IPSecPolicy.objects.all(), + required=False, + label=_('IPSec policy') + ) + tag = TagFilterField(model) + + +class L2VPNFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm): + model = L2VPN + fieldsets = ( + (None, ('q', 'filter_id', 'tag')), + (_('Attributes'), ('type', 'import_target_id', 'export_target_id')), + (_('Tenant'), ('tenant_group_id', 'tenant_id')), + ) + type = forms.ChoiceField( + label=_('Type'), + choices=add_blank_choice(L2VPNTypeChoices), + required=False + ) + import_target_id = DynamicModelMultipleChoiceField( + queryset=RouteTarget.objects.all(), + required=False, + label=_('Import targets') + ) + export_target_id = DynamicModelMultipleChoiceField( + queryset=RouteTarget.objects.all(), + required=False, + label=_('Export targets') + ) + tag = TagFilterField(model) + + +class L2VPNTerminationFilterForm(NetBoxModelFilterSetForm): + model = L2VPNTermination + fieldsets = ( + (None, ('filter_id', 'l2vpn_id',)), + (_('Assigned Object'), ( + 'assigned_object_type_id', 'region_id', 'site_id', 'device_id', 'virtual_machine_id', 'vlan_id', + )), + ) + l2vpn_id = DynamicModelChoiceField( + queryset=L2VPN.objects.all(), + required=False, + label=_('L2VPN') + ) + assigned_object_type_id = ContentTypeMultipleChoiceField( + queryset=ContentType.objects.filter(L2VPN_ASSIGNMENT_MODELS), + required=False, + label=_('Assigned Object Type'), + limit_choices_to=L2VPN_ASSIGNMENT_MODELS + ) + region_id = DynamicModelMultipleChoiceField( + queryset=Region.objects.all(), + required=False, + label=_('Region') + ) + site_id = DynamicModelMultipleChoiceField( + queryset=Site.objects.all(), + required=False, + null_option='None', + query_params={ + 'region_id': '$region_id' + }, + label=_('Site') + ) + device_id = DynamicModelMultipleChoiceField( + queryset=Device.objects.all(), + required=False, + null_option='None', + query_params={ + 'site_id': '$site_id' + }, + label=_('Device') + ) + vlan_id = DynamicModelMultipleChoiceField( + queryset=VLAN.objects.all(), + required=False, + null_option='None', + query_params={ + 'site_id': '$site_id' + }, + label=_('VLAN') + ) + virtual_machine_id = DynamicModelMultipleChoiceField( + queryset=VirtualMachine.objects.all(), + required=False, + null_option='None', + query_params={ + 'site_id': '$site_id' + }, + label=_('Virtual Machine') + ) diff --git a/netbox/vpn/forms/model_forms.py b/netbox/vpn/forms/model_forms.py new file mode 100644 index 000000000..3068bfac2 --- /dev/null +++ b/netbox/vpn/forms/model_forms.py @@ -0,0 +1,473 @@ +from django import forms +from django.core.exceptions import ValidationError +from django.utils.translation import gettext_lazy as _ + +from dcim.models import Device, Interface +from ipam.models import IPAddress, RouteTarget, VLAN +from netbox.forms import NetBoxModelForm +from tenancy.forms import TenancyForm +from utilities.forms.fields import CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField +from utilities.forms.utils import add_blank_choice +from utilities.forms.widgets import HTMXSelect +from virtualization.models import VirtualMachine, VMInterface +from vpn.choices import * +from vpn.models import * + +__all__ = ( + 'IKEPolicyForm', + 'IKEProposalForm', + 'IPSecPolicyForm', + 'IPSecProfileForm', + 'IPSecProposalForm', + 'L2VPNForm', + 'L2VPNTerminationForm', + 'TunnelCreateForm', + 'TunnelForm', + 'TunnelGroupForm', + 'TunnelTerminationForm', +) + + +class TunnelGroupForm(NetBoxModelForm): + slug = SlugField() + + fieldsets = ( + (_('Tunnel Group'), ('name', 'slug', 'description', 'tags')), + ) + + class Meta: + model = TunnelGroup + fields = [ + 'name', 'slug', 'description', 'tags', + ] + + +class TunnelForm(TenancyForm, NetBoxModelForm): + group = DynamicModelChoiceField( + queryset=TunnelGroup.objects.all(), + label=_('Tunnel Group'), + required=False + ) + ipsec_profile = DynamicModelChoiceField( + queryset=IPSecProfile.objects.all(), + label=_('IPSec Profile'), + required=False + ) + comments = CommentField() + + fieldsets = ( + (_('Tunnel'), ('name', 'status', 'group', 'encapsulation', 'description', 'tunnel_id', 'tags')), + (_('Security'), ('ipsec_profile',)), + (_('Tenancy'), ('tenant_group', 'tenant')), + ) + + class Meta: + model = Tunnel + fields = [ + 'name', 'status', 'group', 'encapsulation', 'description', 'tunnel_id', 'ipsec_profile', 'tenant_group', + 'tenant', 'comments', 'tags', + ] + + +class TunnelCreateForm(TunnelForm): + # First termination + termination1_role = forms.ChoiceField( + choices=add_blank_choice(TunnelTerminationRoleChoices), + required=False, + label=_('Role') + ) + termination1_type = forms.ChoiceField( + choices=TunnelTerminationTypeChoices, + required=False, + widget=HTMXSelect(), + label=_('Type') + ) + termination1_parent = DynamicModelChoiceField( + queryset=Device.objects.all(), + required=False, + selector=True, + label=_('Device') + ) + termination1_termination = DynamicModelChoiceField( + queryset=Interface.objects.all(), + required=False, + label=_('Interface'), + query_params={ + 'device_id': '$termination1_parent', + } + ) + termination1_outside_ip = DynamicModelChoiceField( + queryset=IPAddress.objects.all(), + label=_('Outside IP'), + required=False, + query_params={ + 'device_id': '$termination1_parent', + } + ) + + # Second termination + termination2_role = forms.ChoiceField( + choices=add_blank_choice(TunnelTerminationRoleChoices), + required=False, + label=_('Role') + ) + termination2_type = forms.ChoiceField( + choices=TunnelTerminationTypeChoices, + required=False, + widget=HTMXSelect(), + label=_('Type') + ) + termination2_parent = DynamicModelChoiceField( + queryset=Device.objects.all(), + required=False, + selector=True, + label=_('Device') + ) + termination2_termination = DynamicModelChoiceField( + queryset=Interface.objects.all(), + required=False, + label=_('Interface'), + query_params={ + 'device_id': '$termination2_parent', + } + ) + termination2_outside_ip = DynamicModelChoiceField( + queryset=IPAddress.objects.all(), + required=False, + label=_('Outside IP'), + query_params={ + 'device_id': '$termination2_parent', + } + ) + + fieldsets = ( + (_('Tunnel'), ('name', 'status', 'encapsulation', 'description', 'tunnel_id', 'tags')), + (_('Security'), ('ipsec_profile',)), + (_('Tenancy'), ('tenant_group', 'tenant')), + (_('First Termination'), ( + 'termination1_role', 'termination1_type', 'termination1_parent', 'termination1_termination', + 'termination1_outside_ip', + )), + (_('Second Termination'), ( + 'termination2_role', 'termination2_type', 'termination2_parent', 'termination2_termination', + 'termination2_outside_ip', + )), + ) + + def __init__(self, *args, initial=None, **kwargs): + super().__init__(*args, initial=initial, **kwargs) + + if initial and initial.get('termination1_type') == TunnelTerminationTypeChoices.TYPE_VIRUTALMACHINE: + self.fields['termination1_parent'].label = _('Virtual Machine') + self.fields['termination1_parent'].queryset = VirtualMachine.objects.all() + self.fields['termination1_termination'].queryset = VMInterface.objects.all() + self.fields['termination1_termination'].widget.add_query_params({ + 'virtual_machine_id': '$termination1_parent', + }) + self.fields['termination1_outside_ip'].widget.add_query_params({ + 'virtual_machine_id': '$termination1_parent', + }) + + if initial and initial.get('termination2_type') == TunnelTerminationTypeChoices.TYPE_VIRUTALMACHINE: + self.fields['termination2_parent'].label = _('Virtual Machine') + self.fields['termination2_parent'].queryset = VirtualMachine.objects.all() + self.fields['termination2_termination'].queryset = VMInterface.objects.all() + self.fields['termination2_termination'].widget.add_query_params({ + 'virtual_machine_id': '$termination2_parent', + }) + self.fields['termination2_outside_ip'].widget.add_query_params({ + 'virtual_machine_id': '$termination2_parent', + }) + + def clean(self): + super().clean() + + # Validate attributes for each termination (if any) + for term in ('termination1', 'termination2'): + required_parameters = ( + f'{term}_role', f'{term}_parent', f'{term}_termination', + ) + parameters = ( + *required_parameters, + f'{term}_outside_ip', + ) + if any([self.cleaned_data[param] for param in parameters]): + for param in required_parameters: + if not self.cleaned_data[param]: + raise forms.ValidationError({ + param: _("This parameter is required when defining a termination.") + }) + + def save(self, *args, **kwargs): + instance = super().save(*args, **kwargs) + + # Create first termination + if self.cleaned_data['termination1_termination']: + TunnelTermination.objects.create( + tunnel=instance, + role=self.cleaned_data['termination1_role'], + termination=self.cleaned_data['termination1_termination'], + outside_ip=self.cleaned_data['termination1_outside_ip'], + ) + + # Create second termination, if defined + if self.cleaned_data['termination2_termination']: + TunnelTermination.objects.create( + tunnel=instance, + role=self.cleaned_data['termination2_role'], + termination=self.cleaned_data['termination2_termination'], + outside_ip=self.cleaned_data.get('termination2_outside_ip'), + ) + + return instance + + +class TunnelTerminationForm(NetBoxModelForm): + tunnel = DynamicModelChoiceField( + queryset=Tunnel.objects.all() + ) + type = forms.ChoiceField( + choices=TunnelTerminationTypeChoices, + widget=HTMXSelect(), + label=_('Type') + ) + parent = DynamicModelChoiceField( + queryset=Device.objects.all(), + selector=True, + label=_('Device') + ) + termination = DynamicModelChoiceField( + queryset=Interface.objects.all(), + label=_('Interface'), + query_params={ + 'device_id': '$parent', + } + ) + outside_ip = DynamicModelChoiceField( + queryset=IPAddress.objects.all(), + label=_('Outside IP'), + required=False, + query_params={ + 'device_id': '$parent', + } + ) + + fieldsets = ( + (None, ('tunnel', 'role', 'type', 'parent', 'termination', 'outside_ip', 'tags')), + ) + + class Meta: + model = TunnelTermination + fields = [ + 'tunnel', 'role', 'termination', 'outside_ip', 'tags', + ] + + def __init__(self, *args, initial=None, **kwargs): + super().__init__(*args, initial=initial, **kwargs) + + if initial and initial.get('type') == TunnelTerminationTypeChoices.TYPE_VIRUTALMACHINE: + self.fields['parent'].label = _('Virtual Machine') + self.fields['parent'].queryset = VirtualMachine.objects.all() + self.fields['termination'].queryset = VMInterface.objects.all() + self.fields['termination'].widget.add_query_params({ + 'virtual_machine_id': '$parent', + }) + self.fields['outside_ip'].widget.add_query_params({ + 'virtual_machine_id': '$parent', + }) + + if self.instance.pk: + self.fields['parent'].initial = self.instance.termination.parent_object + self.fields['termination'].initial = self.instance.termination + + def clean(self): + super().clean() + + # Set the terminated object + self.instance.termination = self.cleaned_data.get('termination') + + +class IKEProposalForm(NetBoxModelForm): + + fieldsets = ( + (_('Proposal'), ('name', 'description', 'tags')), + (_('Parameters'), ( + 'authentication_method', 'encryption_algorithm', 'authentication_algorithm', 'group', 'sa_lifetime', + )), + ) + + class Meta: + model = IKEProposal + fields = [ + 'name', 'description', 'authentication_method', 'encryption_algorithm', 'authentication_algorithm', 'group', + 'sa_lifetime', 'comments', 'tags', + ] + + +class IKEPolicyForm(NetBoxModelForm): + proposals = DynamicModelMultipleChoiceField( + queryset=IKEProposal.objects.all(), + label=_('Proposals') + ) + + fieldsets = ( + (_('Policy'), ('name', 'description', 'tags')), + (_('Parameters'), ('version', 'mode', 'proposals', 'preshared_key')), + ) + + class Meta: + model = IKEPolicy + fields = [ + 'name', 'description', 'version', 'mode', 'proposals', 'preshared_key', 'comments', 'tags', + ] + + +class IPSecProposalForm(NetBoxModelForm): + + fieldsets = ( + (_('Proposal'), ('name', 'description', 'tags')), + (_('Parameters'), ( + 'encryption_algorithm', 'authentication_algorithm', 'sa_lifetime_seconds', 'sa_lifetime_data', + )), + ) + + class Meta: + model = IPSecProposal + fields = [ + 'name', 'description', 'encryption_algorithm', 'authentication_algorithm', 'sa_lifetime_seconds', + 'sa_lifetime_data', 'comments', 'tags', + ] + + +class IPSecPolicyForm(NetBoxModelForm): + proposals = DynamicModelMultipleChoiceField( + queryset=IPSecProposal.objects.all(), + label=_('Proposals') + ) + + fieldsets = ( + (_('Policy'), ('name', 'description', 'tags')), + (_('Parameters'), ('proposals', 'pfs_group')), + ) + + class Meta: + model = IPSecPolicy + fields = [ + 'name', 'description', 'proposals', 'pfs_group', 'comments', 'tags', + ] + + +class IPSecProfileForm(NetBoxModelForm): + ike_policy = DynamicModelChoiceField( + queryset=IKEPolicy.objects.all(), + label=_('IKE policy') + ) + ipsec_policy = DynamicModelChoiceField( + queryset=IPSecPolicy.objects.all(), + label=_('IPSec policy') + ) + comments = CommentField() + + fieldsets = ( + (_('Profile'), ('name', 'description', 'tags')), + (_('Parameters'), ('mode', 'ike_policy', 'ipsec_policy')), + ) + + class Meta: + model = IPSecProfile + fields = [ + 'name', 'description', 'mode', 'ike_policy', 'ipsec_policy', 'description', 'comments', 'tags', + ] + + +# +# L2VPN +# + +class L2VPNForm(TenancyForm, NetBoxModelForm): + slug = SlugField() + import_targets = DynamicModelMultipleChoiceField( + label=_('Import targets'), + queryset=RouteTarget.objects.all(), + required=False + ) + export_targets = DynamicModelMultipleChoiceField( + label=_('Export targets'), + queryset=RouteTarget.objects.all(), + required=False + ) + comments = CommentField() + + fieldsets = ( + (_('L2VPN'), ('name', 'slug', 'type', 'identifier', 'description', 'tags')), + (_('Route Targets'), ('import_targets', 'export_targets')), + (_('Tenancy'), ('tenant_group', 'tenant')), + ) + + class Meta: + model = L2VPN + fields = ( + 'name', 'slug', 'type', 'identifier', 'import_targets', 'export_targets', 'tenant', 'description', + 'comments', 'tags' + ) + + +class L2VPNTerminationForm(NetBoxModelForm): + l2vpn = DynamicModelChoiceField( + queryset=L2VPN.objects.all(), + required=True, + query_params={}, + label=_('L2VPN'), + fetch_trigger='open' + ) + vlan = DynamicModelChoiceField( + queryset=VLAN.objects.all(), + required=False, + selector=True, + label=_('VLAN') + ) + interface = DynamicModelChoiceField( + label=_('Interface'), + queryset=Interface.objects.all(), + required=False, + selector=True + ) + vminterface = DynamicModelChoiceField( + queryset=VMInterface.objects.all(), + required=False, + selector=True, + label=_('Interface') + ) + + class Meta: + model = L2VPNTermination + fields = ('l2vpn', 'tags') + + def __init__(self, *args, **kwargs): + instance = kwargs.get('instance') + initial = kwargs.get('initial', {}).copy() + + if instance: + if type(instance.assigned_object) is Interface: + initial['interface'] = instance.assigned_object + elif type(instance.assigned_object) is VLAN: + initial['vlan'] = instance.assigned_object + elif type(instance.assigned_object) is VMInterface: + initial['vminterface'] = instance.assigned_object + kwargs['initial'] = initial + + super().__init__(*args, **kwargs) + + def clean(self): + super().clean() + + interface = self.cleaned_data.get('interface') + vminterface = self.cleaned_data.get('vminterface') + vlan = self.cleaned_data.get('vlan') + + if not (interface or vminterface or vlan): + raise ValidationError(_('A termination must specify an interface or VLAN.')) + if len([x for x in (interface, vminterface, vlan) if x]) > 1: + raise ValidationError(_('A termination can only have one terminating object (an interface or VLAN).')) + + self.instance.assigned_object = interface or vminterface or vlan diff --git a/netbox/vpn/graphql/__init__.py b/netbox/vpn/graphql/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/vpn/graphql/gfk_mixins.py b/netbox/vpn/graphql/gfk_mixins.py new file mode 100644 index 000000000..72272f7ad --- /dev/null +++ b/netbox/vpn/graphql/gfk_mixins.py @@ -0,0 +1,30 @@ +import graphene + +from dcim.graphql.types import InterfaceType +from dcim.models import Interface +from ipam.graphql.types import VLANType +from ipam.models import VLAN +from virtualization.graphql.types import VMInterfaceType +from virtualization.models import VMInterface + +__all__ = ( + 'L2VPNAssignmentType', +) + + +class L2VPNAssignmentType(graphene.Union): + class Meta: + types = ( + InterfaceType, + VLANType, + VMInterfaceType, + ) + + @classmethod + def resolve_type(cls, instance, info): + if type(instance) is Interface: + return InterfaceType + if type(instance) is VLAN: + return VLANType + if type(instance) is VMInterface: + return VMInterfaceType diff --git a/netbox/vpn/graphql/schema.py b/netbox/vpn/graphql/schema.py new file mode 100644 index 000000000..6737957d4 --- /dev/null +++ b/netbox/vpn/graphql/schema.py @@ -0,0 +1,69 @@ +import graphene + +from netbox.graphql.fields import ObjectField, ObjectListField +from utilities.graphql_optimizer import gql_query_optimizer +from vpn import models +from .types import * + + +class VPNQuery(graphene.ObjectType): + + ike_policy = ObjectField(IKEPolicyType) + ike_policy_list = ObjectListField(IKEPolicyType) + + def resolve_ike_policy_list(root, info, **kwargs): + return gql_query_optimizer(models.IKEPolicy.objects.all(), info) + + ike_proposal = ObjectField(IKEProposalType) + ike_proposal_list = ObjectListField(IKEProposalType) + + def resolve_ike_proposal_list(root, info, **kwargs): + return gql_query_optimizer(models.IKEProposal.objects.all(), info) + + ipsec_policy = ObjectField(IPSecPolicyType) + ipsec_policy_list = ObjectListField(IPSecPolicyType) + + def resolve_ipsec_policy_list(root, info, **kwargs): + return gql_query_optimizer(models.IPSecPolicy.objects.all(), info) + + ipsec_profile = ObjectField(IPSecProfileType) + ipsec_profile_list = ObjectListField(IPSecProfileType) + + def resolve_ipsec_profile_list(root, info, **kwargs): + return gql_query_optimizer(models.IPSecProfile.objects.all(), info) + + ipsec_proposal = ObjectField(IPSecProposalType) + ipsec_proposal_list = ObjectListField(IPSecProposalType) + + def resolve_ipsec_proposal_list(root, info, **kwargs): + return gql_query_optimizer(models.IPSecProposal.objects.all(), info) + + l2vpn = ObjectField(L2VPNType) + l2vpn_list = ObjectListField(L2VPNType) + + def resolve_l2vpn_list(root, info, **kwargs): + return gql_query_optimizer(models.L2VPN.objects.all(), info) + + l2vpn_termination = ObjectField(L2VPNTerminationType) + l2vpn_termination_list = ObjectListField(L2VPNTerminationType) + + def resolve_l2vpn_termination_list(root, info, **kwargs): + return gql_query_optimizer(models.L2VPNTermination.objects.all(), info) + + tunnel = ObjectField(TunnelType) + tunnel_list = ObjectListField(TunnelType) + + def resolve_tunnel_list(root, info, **kwargs): + return gql_query_optimizer(models.Tunnel.objects.all(), info) + + tunnel_group = ObjectField(TunnelGroupType) + tunnel_group_list = ObjectListField(TunnelGroupType) + + def resolve_tunnel_group_list(root, info, **kwargs): + return gql_query_optimizer(models.TunnelGroup.objects.all(), info) + + tunnel_termination = ObjectField(TunnelTerminationType) + tunnel_termination_list = ObjectListField(TunnelTerminationType) + + def resolve_tunnel_termination_list(root, info, **kwargs): + return gql_query_optimizer(models.TunnelTermination.objects.all(), info) diff --git a/netbox/vpn/graphql/types.py b/netbox/vpn/graphql/types.py new file mode 100644 index 000000000..0bfebb441 --- /dev/null +++ b/netbox/vpn/graphql/types.py @@ -0,0 +1,98 @@ +import graphene + +from extras.graphql.mixins import ContactsMixin, CustomFieldsMixin, TagsMixin +from netbox.graphql.types import ObjectType, OrganizationalObjectType, NetBoxObjectType +from vpn import filtersets, models + +__all__ = ( + 'IKEPolicyType', + 'IKEProposalType', + 'IPSecPolicyType', + 'IPSecProfileType', + 'IPSecProposalType', + 'L2VPNType', + 'L2VPNTerminationType', + 'TunnelGroupType', + 'TunnelTerminationType', + 'TunnelType', +) + + +class TunnelGroupType(OrganizationalObjectType): + + class Meta: + model = models.TunnelGroup + fields = '__all__' + filterset_class = filtersets.TunnelGroupFilterSet + + +class TunnelTerminationType(CustomFieldsMixin, TagsMixin, ObjectType): + + class Meta: + model = models.TunnelTermination + fields = '__all__' + filterset_class = filtersets.TunnelTerminationFilterSet + + +class TunnelType(NetBoxObjectType): + + class Meta: + model = models.Tunnel + fields = '__all__' + filterset_class = filtersets.TunnelFilterSet + + +class IKEProposalType(OrganizationalObjectType): + + class Meta: + model = models.IKEProposal + fields = '__all__' + filterset_class = filtersets.IKEProposalFilterSet + + +class IKEPolicyType(OrganizationalObjectType): + + class Meta: + model = models.IKEPolicy + fields = '__all__' + filterset_class = filtersets.IKEPolicyFilterSet + + +class IPSecProposalType(OrganizationalObjectType): + + class Meta: + model = models.IPSecProposal + fields = '__all__' + filterset_class = filtersets.IPSecProposalFilterSet + + +class IPSecPolicyType(OrganizationalObjectType): + + class Meta: + model = models.IPSecPolicy + fields = '__all__' + filterset_class = filtersets.IPSecPolicyFilterSet + + +class IPSecProfileType(OrganizationalObjectType): + + class Meta: + model = models.IPSecProfile + fields = '__all__' + filterset_class = filtersets.IPSecProfileFilterSet + + +class L2VPNType(ContactsMixin, NetBoxObjectType): + class Meta: + model = models.L2VPN + fields = '__all__' + filtersets_class = filtersets.L2VPNFilterSet + + +class L2VPNTerminationType(NetBoxObjectType): + assigned_object = graphene.Field('vpn.graphql.gfk_mixins.L2VPNAssignmentType') + + class Meta: + model = models.L2VPNTermination + exclude = ('assigned_object_type', 'assigned_object_id') + filtersets_class = filtersets.L2VPNTerminationFilterSet diff --git a/netbox/vpn/migrations/0001_initial.py b/netbox/vpn/migrations/0001_initial.py new file mode 100644 index 000000000..681474837 --- /dev/null +++ b/netbox/vpn/migrations/0001_initial.py @@ -0,0 +1,230 @@ +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers +import utilities.json + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('extras', '0099_cachedvalue_ordering'), + ('ipam', '0067_ipaddress_index_host'), + ('tenancy', '0012_contactassignment_custom_fields'), + ] + + operations = [ + # IKE + migrations.CreateModel( + name='IKEProposal', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('description', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ('name', models.CharField(max_length=100, unique=True)), + ('authentication_method', models.CharField()), + ('encryption_algorithm', models.CharField()), + ('authentication_algorithm', models.CharField(blank=True)), + ('group', models.PositiveSmallIntegerField()), + ('sa_lifetime', models.PositiveIntegerField(blank=True, null=True)), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ], + options={ + 'verbose_name': 'IKE proposal', + 'verbose_name_plural': 'IKE proposals', + 'ordering': ('name',), + }, + ), + migrations.CreateModel( + name='IKEPolicy', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('description', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ('name', models.CharField(max_length=100, unique=True)), + ('version', models.PositiveSmallIntegerField(default=2)), + ('mode', models.CharField()), + ('preshared_key', models.TextField(blank=True)), + ], + options={ + 'verbose_name': 'IKE policy', + 'verbose_name_plural': 'IKE policies', + 'ordering': ('name',), + }, + ), + migrations.AddField( + model_name='ikepolicy', + name='proposals', + field=models.ManyToManyField(related_name='ike_policies', to='vpn.ikeproposal'), + ), + migrations.AddField( + model_name='ikepolicy', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + + # IPSec + migrations.CreateModel( + name='IPSecProposal', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('description', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ('name', models.CharField(max_length=100, unique=True)), + ('encryption_algorithm', models.CharField(blank=True)), + ('authentication_algorithm', models.CharField(blank=True)), + ('sa_lifetime_seconds', models.PositiveIntegerField(blank=True, null=True)), + ('sa_lifetime_data', models.PositiveIntegerField(blank=True, null=True)), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ], + options={ + 'verbose_name': 'IPSec proposal', + 'verbose_name_plural': 'IPSec proposals', + 'ordering': ('name',), + }, + ), + migrations.CreateModel( + name='IPSecPolicy', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('description', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ('name', models.CharField(max_length=100, unique=True)), + ('pfs_group', models.PositiveSmallIntegerField(blank=True, null=True)), + ], + options={ + 'verbose_name': 'IPSec policy', + 'verbose_name_plural': 'IPSec policies', + 'ordering': ('name',), + }, + ), + migrations.AddField( + model_name='ipsecpolicy', + name='proposals', + field=models.ManyToManyField(related_name='ipsec_policies', to='vpn.ipsecproposal'), + ), + migrations.AddField( + model_name='ipsecpolicy', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.CreateModel( + name='IPSecProfile', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('description', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ('name', models.CharField(max_length=100, unique=True)), + ('mode', models.CharField()), + ('ike_policy', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ipsec_profiles', to='vpn.ikepolicy')), + ('ipsec_policy', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ipsec_profiles', to='vpn.ipsecpolicy')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ], + options={ + 'verbose_name': 'IPSec profile', + 'verbose_name_plural': 'IPSec profiles', + 'ordering': ('name',), + }, + ), + + # Tunnels + migrations.CreateModel( + name='TunnelGroup', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('description', models.CharField(blank=True, max_length=200)), + ], + options={ + 'verbose_name': 'tunnel group', + 'verbose_name_plural': 'tunnel groups', + 'ordering': ('name',), + }, + ), + migrations.AddField( + model_name='tunnelgroup', + name='tags', + field=taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag'), + ), + migrations.CreateModel( + name='Tunnel', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('description', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ('name', models.CharField(max_length=100, unique=True)), + ('status', models.CharField(default='active', max_length=50)), + ('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='tunnels', to='vpn.tunnelgroup')), + ('encapsulation', models.CharField(max_length=50)), + ('tunnel_id', models.PositiveBigIntegerField(blank=True, null=True)), + ('ipsec_profile', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='tunnels', to='vpn.ipsecprofile')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='tunnels', to='tenancy.tenant')), + ], + options={ + 'verbose_name': 'tunnel', + 'verbose_name_plural': 'tunnels', + 'ordering': ('name',), + }, + ), + migrations.AddConstraint( + model_name='tunnel', + constraint=models.UniqueConstraint(fields=('group', 'name'), name='vpn_tunnel_group_name'), + ), + migrations.AddConstraint( + model_name='tunnel', + constraint=models.UniqueConstraint(condition=models.Q(('group__isnull', True)), fields=('name',), name='vpn_tunnel_name'), + ), + migrations.CreateModel( + name='TunnelTermination', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('role', models.CharField(default='peer', max_length=50)), + ('termination_id', models.PositiveBigIntegerField(blank=True, null=True)), + ('termination_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.contenttype')), + ('outside_ip', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='tunnel_termination', to='ipam.ipaddress')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('tunnel', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='terminations', to='vpn.tunnel')), + ], + options={ + 'verbose_name': 'tunnel termination', + 'verbose_name_plural': 'tunnel terminations', + 'ordering': ('tunnel', 'role', 'pk'), + }, + ), + migrations.AddIndex( + model_name='tunneltermination', + index=models.Index(fields=['termination_type', 'termination_id'], name='vpn_tunnelt_termina_c1f04b_idx'), + ), + migrations.AddConstraint( + model_name='tunneltermination', + constraint=models.UniqueConstraint(fields=('termination_type', 'termination_id'), name='vpn_tunneltermination_termination', violation_error_message='An object may be terminated to only one tunnel at a time.'), + ), + ] diff --git a/netbox/vpn/migrations/0002_move_l2vpn.py b/netbox/vpn/migrations/0002_move_l2vpn.py new file mode 100644 index 000000000..b83ea4655 --- /dev/null +++ b/netbox/vpn/migrations/0002_move_l2vpn.py @@ -0,0 +1,77 @@ +from django.db import migrations, models +import django.db.models.deletion +import taggit.managers +import utilities.json + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0099_cachedvalue_ordering'), + ('contenttypes', '0002_remove_content_type_name'), + ('tenancy', '0012_contactassignment_custom_fields'), + ('ipam', '0068_move_l2vpn'), + ('vpn', '0001_initial'), + ] + + operations = [ + migrations.SeparateDatabaseAndState( + state_operations=[ + migrations.CreateModel( + name='L2VPN', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('description', models.CharField(blank=True, max_length=200)), + ('comments', models.TextField(blank=True)), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('type', models.CharField(max_length=50)), + ('identifier', models.BigIntegerField(blank=True, null=True)), + ('export_targets', models.ManyToManyField(blank=True, related_name='exporting_l2vpns', to='ipam.routetarget')), + ('import_targets', models.ManyToManyField(blank=True, related_name='importing_l2vpns', to='ipam.routetarget')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='l2vpns', to='tenancy.tenant')), + ], + options={ + 'verbose_name': 'L2VPN', + 'verbose_name_plural': 'L2VPNs', + 'ordering': ('name', 'identifier'), + }, + ), + migrations.CreateModel( + name='L2VPNTermination', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), + ('created', models.DateTimeField(auto_now_add=True, null=True)), + ('last_updated', models.DateTimeField(auto_now=True, null=True)), + ('custom_field_data', models.JSONField(blank=True, default=dict, encoder=utilities.json.CustomFieldJSONEncoder)), + ('assigned_object_id', models.PositiveBigIntegerField()), + ('assigned_object_type', models.ForeignKey(limit_choices_to=models.Q(models.Q(models.Q(('app_label', 'dcim'), ('model', 'interface')), models.Q(('app_label', 'ipam'), ('model', 'vlan')), models.Q(('app_label', 'virtualization'), ('model', 'vminterface')), _connector='OR')), on_delete=django.db.models.deletion.PROTECT, related_name='+', to='contenttypes.contenttype')), + ('l2vpn', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='terminations', to='vpn.l2vpn')), + ('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')), + ], + options={ + 'verbose_name': 'L2VPN termination', + 'verbose_name_plural': 'L2VPN terminations', + 'ordering': ('l2vpn',), + }, + ), + ], + # Tables have been renamed from ipam + database_operations=[], + ), + migrations.AddConstraint( + model_name='l2vpntermination', + constraint=models.UniqueConstraint( + fields=('assigned_object_type', 'assigned_object_id'), + name='vpn_l2vpntermination_assigned_object' + ), + ), + migrations.AddIndex( + model_name='l2vpntermination', + index=models.Index(fields=['assigned_object_type', 'assigned_object_id'], name='vpn_l2vpnte_assigne_9c55f8_idx'), + ), + ] diff --git a/netbox/vpn/migrations/__init__.py b/netbox/vpn/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/vpn/models/__init__.py b/netbox/vpn/models/__init__.py new file mode 100644 index 000000000..2e76b980b --- /dev/null +++ b/netbox/vpn/models/__init__.py @@ -0,0 +1,3 @@ +from .crypto import * +from .l2vpn import * +from .tunnels import * diff --git a/netbox/vpn/models/crypto.py b/netbox/vpn/models/crypto.py new file mode 100644 index 000000000..f89c555e4 --- /dev/null +++ b/netbox/vpn/models/crypto.py @@ -0,0 +1,245 @@ +from django.core.exceptions import ValidationError +from django.db import models +from django.urls import reverse +from django.utils.translation import gettext_lazy as _ + +from netbox.models import PrimaryModel +from vpn.choices import * + +__all__ = ( + 'IKEPolicy', + 'IKEProposal', + 'IPSecPolicy', + 'IPSecProfile', + 'IPSecProposal', +) + + +# +# IKE +# + +class IKEProposal(PrimaryModel): + name = models.CharField( + verbose_name=_('name'), + max_length=100, + unique=True + ) + authentication_method = models.CharField( + verbose_name=('authentication method'), + choices=AuthenticationMethodChoices + ) + encryption_algorithm = models.CharField( + verbose_name=_('encryption algorithm'), + choices=EncryptionAlgorithmChoices + ) + authentication_algorithm = models.CharField( + verbose_name=_('authentication algorithm'), + choices=AuthenticationAlgorithmChoices, + blank=True + ) + group = models.PositiveSmallIntegerField( + verbose_name=_('group'), + choices=DHGroupChoices, + help_text=_('Diffie-Hellman group ID') + ) + sa_lifetime = models.PositiveIntegerField( + verbose_name=_('SA lifetime'), + blank=True, + null=True, + help_text=_('Security association lifetime (in seconds)') + ) + + clone_fields = ( + 'authentication_method', 'encryption_algorithm', 'authentication_algorithm', 'group', 'sa_lifetime', + ) + + class Meta: + ordering = ('name',) + verbose_name = _('IKE proposal') + verbose_name_plural = _('IKE proposals') + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('vpn:ikeproposal', args=[self.pk]) + + +class IKEPolicy(PrimaryModel): + name = models.CharField( + verbose_name=_('name'), + max_length=100, + unique=True + ) + version = models.PositiveSmallIntegerField( + verbose_name=_('version'), + choices=IKEVersionChoices, + default=IKEVersionChoices.VERSION_2 + ) + mode = models.CharField( + verbose_name=_('mode'), + choices=IKEModeChoices + ) + proposals = models.ManyToManyField( + to='vpn.IKEProposal', + related_name='ike_policies', + verbose_name=_('proposals') + ) + preshared_key = models.TextField( + verbose_name=_('pre-shared key'), + blank=True + ) + + clone_fields = ( + 'version', 'mode', 'proposals', + ) + prerequisite_models = ( + 'vpn.IKEProposal', + ) + + class Meta: + ordering = ('name',) + verbose_name = _('IKE policy') + verbose_name_plural = _('IKE policies') + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('vpn:ikepolicy', args=[self.pk]) + + +# +# IPSec +# + +class IPSecProposal(PrimaryModel): + name = models.CharField( + verbose_name=_('name'), + max_length=100, + unique=True + ) + encryption_algorithm = models.CharField( + verbose_name=_('encryption'), + choices=EncryptionAlgorithmChoices, + blank=True + ) + authentication_algorithm = models.CharField( + verbose_name=_('authentication'), + choices=AuthenticationAlgorithmChoices, + blank=True + ) + sa_lifetime_seconds = models.PositiveIntegerField( + verbose_name=_('SA lifetime (seconds)'), + blank=True, + null=True, + help_text=_('Security association lifetime (seconds)') + ) + sa_lifetime_data = models.PositiveIntegerField( + verbose_name=_('SA lifetime (KB)'), + blank=True, + null=True, + help_text=_('Security association lifetime (in kilobytes)') + ) + + clone_fields = ( + 'encryption_algorithm', 'authentication_algorithm', 'sa_lifetime_seconds', 'sa_lifetime_data', + ) + + class Meta: + ordering = ('name',) + verbose_name = _('IPSec proposal') + verbose_name_plural = _('IPSec proposals') + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('vpn:ipsecproposal', args=[self.pk]) + + def clean(self): + super().clean() + + # Encryption and/or authentication algorithm must be defined + if not self.encryption_algorithm and not self.authentication_algorithm: + raise ValidationError(_("Encryption and/or authentication algorithm must be defined")) + + +class IPSecPolicy(PrimaryModel): + name = models.CharField( + verbose_name=_('name'), + max_length=100, + unique=True + ) + proposals = models.ManyToManyField( + to='vpn.IPSecProposal', + related_name='ipsec_policies', + verbose_name=_('proposals') + ) + pfs_group = models.PositiveSmallIntegerField( + verbose_name=_('PFS group'), + choices=DHGroupChoices, + blank=True, + null=True, + help_text=_('Diffie-Hellman group for Perfect Forward Secrecy') + ) + + clone_fields = ( + 'proposals', 'pfs_group', + ) + prerequisite_models = ( + 'vpn.IPSecProposal', + ) + + class Meta: + ordering = ('name',) + verbose_name = _('IPSec policy') + verbose_name_plural = _('IPSec policies') + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('vpn:ipsecpolicy', args=[self.pk]) + + +class IPSecProfile(PrimaryModel): + name = models.CharField( + verbose_name=_('name'), + max_length=100, + unique=True + ) + mode = models.CharField( + verbose_name=_('mode'), + choices=IPSecModeChoices + ) + ike_policy = models.ForeignKey( + to='vpn.IKEPolicy', + on_delete=models.PROTECT, + related_name='ipsec_profiles' + ) + ipsec_policy = models.ForeignKey( + to='vpn.IPSecPolicy', + on_delete=models.PROTECT, + related_name='ipsec_profiles' + ) + + clone_fields = ( + 'mode', 'ike_policy', 'ipsec_policy', + ) + prerequisite_models = ( + 'vpn.IKEPolicy', + 'vpn.IPSecPolicy', + ) + + class Meta: + ordering = ('name',) + verbose_name = _('IPSec profile') + verbose_name_plural = _('IPSec profiles') + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('vpn:ipsecprofile', args=[self.pk]) diff --git a/netbox/ipam/models/l2vpn.py b/netbox/vpn/models/l2vpn.py similarity index 90% rename from netbox/ipam/models/l2vpn.py rename to netbox/vpn/models/l2vpn.py index 3072fc6c3..31d267113 100644 --- a/netbox/ipam/models/l2vpn.py +++ b/netbox/vpn/models/l2vpn.py @@ -1,15 +1,15 @@ from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ -from ipam.choices import L2VPNTypeChoices -from ipam.constants import L2VPN_ASSIGNMENT_MODELS +from core.models import ContentType from netbox.models import NetBoxModel, PrimaryModel from netbox.models.features import ContactsMixin +from vpn.choices import L2VPNTypeChoices +from vpn.constants import L2VPN_ASSIGNMENT_MODELS __all__ = ( 'L2VPN', @@ -69,7 +69,7 @@ class L2VPN(ContactsMixin, PrimaryModel): return f'{self.name}' def get_absolute_url(self): - return reverse('ipam:l2vpn', args=[self.pk]) + return reverse('vpn:l2vpn', args=[self.pk]) @cached_property def can_add_termination(self): @@ -81,12 +81,12 @@ class L2VPN(ContactsMixin, PrimaryModel): class L2VPNTermination(NetBoxModel): l2vpn = models.ForeignKey( - to='ipam.L2VPN', + to='vpn.L2VPN', on_delete=models.CASCADE, related_name='terminations' ) assigned_object_type = models.ForeignKey( - to=ContentType, + to='contenttypes.ContentType', limit_choices_to=L2VPN_ASSIGNMENT_MODELS, on_delete=models.PROTECT, related_name='+' @@ -99,15 +99,18 @@ class L2VPNTermination(NetBoxModel): clone_fields = ('l2vpn',) prerequisite_models = ( - 'ipam.L2VPN', + 'vpn.L2VPN', ) class Meta: ordering = ('l2vpn',) + indexes = ( + models.Index(fields=('assigned_object_type', 'assigned_object_id')), + ) constraints = ( models.UniqueConstraint( fields=('assigned_object_type', 'assigned_object_id'), - name='ipam_l2vpntermination_assigned_object' + name='vpn_l2vpntermination_assigned_object' ), ) verbose_name = _('L2VPN termination') @@ -119,7 +122,7 @@ class L2VPNTermination(NetBoxModel): return super().__str__() def get_absolute_url(self): - return reverse('ipam:l2vpntermination', args=[self.pk]) + return reverse('vpn:l2vpntermination', args=[self.pk]) def clean(self): # Only check is assigned_object is set. Required otherwise we have an Integrity Error thrown. diff --git a/netbox/vpn/models/tunnels.py b/netbox/vpn/models/tunnels.py new file mode 100644 index 000000000..be1e40142 --- /dev/null +++ b/netbox/vpn/models/tunnels.py @@ -0,0 +1,183 @@ +from django.contrib.contenttypes.fields import GenericForeignKey +from django.core.exceptions import ValidationError +from django.db import models +from django.db.models import Q +from django.urls import reverse +from django.utils.translation import gettext_lazy as _ + +from netbox.models import ChangeLoggedModel, OrganizationalModel, PrimaryModel +from netbox.models.features import CustomFieldsMixin, CustomLinksMixin, TagsMixin +from vpn.choices import * + +__all__ = ( + 'Tunnel', + 'TunnelGroup', + 'TunnelTermination', +) + + +class TunnelGroup(OrganizationalModel): + """ + An administrative grouping of Tunnels. This can be used to correlate peer-to-peer tunnels which form a mesh, + for example. + """ + class Meta: + ordering = ('name',) + verbose_name = _('tunnel group') + verbose_name_plural = _('tunnel groups') + + def get_absolute_url(self): + return reverse('vpn:tunnelgroup', args=[self.pk]) + + +class Tunnel(PrimaryModel): + name = models.CharField( + verbose_name=_('name'), + max_length=100, + unique=True + ) + status = models.CharField( + verbose_name=_('status'), + max_length=50, + choices=TunnelStatusChoices, + default=TunnelStatusChoices.STATUS_ACTIVE + ) + group = models.ForeignKey( + to='vpn.TunnelGroup', + on_delete=models.PROTECT, + related_name='tunnels', + blank=True, + null=True + ) + encapsulation = models.CharField( + verbose_name=_('encapsulation'), + max_length=50, + choices=TunnelEncapsulationChoices + ) + ipsec_profile = models.ForeignKey( + to='vpn.IPSecProfile', + on_delete=models.PROTECT, + related_name='tunnels', + blank=True, + null=True + ) + tenant = models.ForeignKey( + to='tenancy.Tenant', + on_delete=models.PROTECT, + related_name='tunnels', + blank=True, + null=True + ) + tunnel_id = models.PositiveBigIntegerField( + verbose_name=_('tunnel ID'), + blank=True, + null=True + ) + + clone_fields = ( + 'status', 'encapsulation', 'ipsec_profile', 'tenant', + ) + + class Meta: + ordering = ('name',) + constraints = ( + models.UniqueConstraint( + fields=('group', 'name'), + name='%(app_label)s_%(class)s_group_name' + ), + models.UniqueConstraint( + fields=('name',), + name='%(app_label)s_%(class)s_name', + condition=Q(group__isnull=True) + ), + ) + verbose_name = _('tunnel') + verbose_name_plural = _('tunnels') + + def __str__(self): + return self.name + + def get_absolute_url(self): + return reverse('vpn:tunnel', args=[self.pk]) + + def get_status_color(self): + return TunnelStatusChoices.colors.get(self.status) + + +class TunnelTermination(CustomFieldsMixin, CustomLinksMixin, TagsMixin, ChangeLoggedModel): + tunnel = models.ForeignKey( + to='vpn.Tunnel', + on_delete=models.CASCADE, + related_name='terminations' + ) + role = models.CharField( + verbose_name=_('role'), + max_length=50, + choices=TunnelTerminationRoleChoices, + default=TunnelTerminationRoleChoices.ROLE_PEER + ) + termination_type = models.ForeignKey( + to='contenttypes.ContentType', + on_delete=models.PROTECT, + related_name='+' + ) + termination_id = models.PositiveBigIntegerField( + blank=True, + null=True + ) + termination = GenericForeignKey( + ct_field='termination_type', + fk_field='termination_id' + ) + outside_ip = models.OneToOneField( + to='ipam.IPAddress', + on_delete=models.PROTECT, + related_name='tunnel_termination', + blank=True, + null=True + ) + + prerequisite_models = ( + 'vpn.Tunnel', + ) + + class Meta: + ordering = ('tunnel', 'role', 'pk') + indexes = ( + models.Index(fields=('termination_type', 'termination_id')), + ) + constraints = ( + models.UniqueConstraint( + fields=('termination_type', 'termination_id'), + name='%(app_label)s_%(class)s_termination', + violation_error_message=_("An object may be terminated to only one tunnel at a time.") + ), + ) + verbose_name = _('tunnel termination') + verbose_name_plural = _('tunnel terminations') + + def __str__(self): + return f'{self.tunnel}: Termination {self.pk}' + + def get_absolute_url(self): + return reverse('vpn:tunneltermination', args=[self.pk]) + + def get_role_color(self): + return TunnelTerminationRoleChoices.colors.get(self.role) + + def clean(self): + super().clean() + + # Check that the selected termination object is not already attached to a Tunnel + if getattr(self.termination, 'tunnel_termination', None) and self.termination.tunnel_termination.pk != self.pk: + raise ValidationError({ + 'termination': _("{name} is already attached to a tunnel ({tunnel}).").format( + name=self.termination.name, + tunnel=self.termination.tunnel_termination.tunnel + ) + }) + + def to_objectchange(self, action): + objectchange = super().to_objectchange(action) + objectchange.related_object = self.tunnel + return objectchange diff --git a/netbox/vpn/search.py b/netbox/vpn/search.py new file mode 100644 index 000000000..066bc68bb --- /dev/null +++ b/netbox/vpn/search.py @@ -0,0 +1,81 @@ +from netbox.search import SearchIndex, register_search +from . import models + + +@register_search +class TunnelIndex(SearchIndex): + model = models.Tunnel + fields = ( + ('name', 100), + ('tunnel_id', 300), + ('description', 500), + ('comments', 5000), + ) + display_attrs = ('group', 'status', 'encapsulation', 'tenant', 'tunnel_id', 'description') + + +@register_search +class IKEProposalIndex(SearchIndex): + model = models.IKEProposal + fields = ( + ('name', 100), + ('description', 500), + ('comments', 5000), + ) + display_attrs = ('description',) + + +@register_search +class IKEPolicyIndex(SearchIndex): + model = models.IKEPolicy + fields = ( + ('name', 100), + ('description', 500), + ('comments', 5000), + ) + display_attrs = ('description',) + + +@register_search +class IPSecProposalIndex(SearchIndex): + model = models.IPSecProposal + fields = ( + ('name', 100), + ('description', 500), + ('comments', 5000), + ) + display_attrs = ('description',) + + +@register_search +class IPSecPolicyIndex(SearchIndex): + model = models.IPSecPolicy + fields = ( + ('name', 100), + ('description', 500), + ('comments', 5000), + ) + display_attrs = ('description',) + + +@register_search +class IPSecProfileIndex(SearchIndex): + model = models.IPSecProfile + fields = ( + ('name', 100), + ('description', 500), + ('comments', 5000), + ) + display_attrs = ('description',) + + +@register_search +class L2VPNIndex(SearchIndex): + model = models.L2VPN + fields = ( + ('name', 100), + ('slug', 110), + ('description', 500), + ('comments', 5000), + ) + display_attrs = ('type', 'identifier', 'tenant', 'description') diff --git a/netbox/vpn/tables/__init__.py b/netbox/vpn/tables/__init__.py new file mode 100644 index 000000000..2e76b980b --- /dev/null +++ b/netbox/vpn/tables/__init__.py @@ -0,0 +1,3 @@ +from .crypto import * +from .l2vpn import * +from .tunnels import * diff --git a/netbox/vpn/tables/crypto.py b/netbox/vpn/tables/crypto.py new file mode 100644 index 000000000..5e102db24 --- /dev/null +++ b/netbox/vpn/tables/crypto.py @@ -0,0 +1,185 @@ +import django_tables2 as tables +from django.utils.translation import gettext_lazy as _ + +from netbox.tables import NetBoxTable, columns +from vpn.models import * + +__all__ = ( + 'IKEPolicyTable', + 'IKEProposalTable', + 'IPSecPolicyTable', + 'IPSecProposalTable', + 'IPSecProfileTable', +) + + +class IKEProposalTable(NetBoxTable): + name = tables.Column( + verbose_name=_('Name'), + linkify=True + ) + authentication_method = tables.Column( + verbose_name=_('Authentication Method') + ) + encryption_algorithm = tables.Column( + verbose_name=_('Encryption Algorithm') + ) + authentication_algorithm = tables.Column( + verbose_name=_('Authentication Algorithm') + ) + group = tables.Column( + verbose_name=_('Group') + ) + sa_lifetime = tables.Column( + verbose_name=_('SA Lifetime') + ) + comments = columns.MarkdownColumn( + verbose_name=_('Comments'), + ) + tags = columns.TagColumn( + url_name='vpn:ikeproposal_list' + ) + + class Meta(NetBoxTable.Meta): + model = IKEProposal + fields = ( + 'pk', 'id', 'name', 'authentication_method', 'encryption_algorithm', 'authentication_algorithm', + 'group', 'sa_lifetime', 'description', 'comments', 'tags', 'created', 'last_updated', + ) + default_columns = ( + 'pk', 'name', 'authentication_method', 'encryption_algorithm', 'authentication_algorithm', 'group', + 'sa_lifetime', 'description', + ) + + +class IKEPolicyTable(NetBoxTable): + name = tables.Column( + verbose_name=_('Name'), + linkify=True + ) + version = tables.Column( + verbose_name=_('Version') + ) + mode = tables.Column( + verbose_name=_('Mode') + ) + proposals = tables.ManyToManyColumn( + linkify_item=True, + verbose_name=_('Proposals') + ) + preshared_key = tables.Column( + verbose_name=_('Pre-shared Key') + ) + comments = columns.MarkdownColumn( + verbose_name=_('Comments'), + ) + tags = columns.TagColumn( + url_name='vpn:ikepolicy_list' + ) + + class Meta(NetBoxTable.Meta): + model = IKEPolicy + fields = ( + 'pk', 'id', 'name', 'version', 'mode', 'proposals', 'preshared_key', 'description', 'comments', 'tags', + 'created', 'last_updated', + ) + default_columns = ( + 'pk', 'name', 'version', 'mode', 'proposals', 'description', + ) + + +class IPSecProposalTable(NetBoxTable): + name = tables.Column( + verbose_name=_('Name'), + linkify=True + ) + encryption_algorithm = tables.Column( + verbose_name=_('Encryption Algorithm') + ) + authentication_algorithm = tables.Column( + verbose_name=_('Authentication Algorithm') + ) + sa_lifetime_seconds = tables.Column( + verbose_name=_('SA Lifetime (Seconds)') + ) + sa_lifetime_data = tables.Column( + verbose_name=_('SA Lifetime (KB)') + ) + comments = columns.MarkdownColumn( + verbose_name=_('Comments'), + ) + tags = columns.TagColumn( + url_name='vpn:ipsecproposal_list' + ) + + class Meta(NetBoxTable.Meta): + model = IPSecProposal + fields = ( + 'pk', 'id', 'name', 'encryption_algorithm', 'authentication_algorithm', 'sa_lifetime_seconds', + 'sa_lifetime_data', 'description', 'comments', 'tags', 'created', 'last_updated', + ) + default_columns = ( + 'pk', 'name', 'encryption_algorithm', 'authentication_algorithm', 'sa_lifetime_seconds', + 'sa_lifetime_data', 'description', + ) + + +class IPSecPolicyTable(NetBoxTable): + name = tables.Column( + verbose_name=_('Name'), + linkify=True + ) + proposals = tables.ManyToManyColumn( + linkify_item=True, + verbose_name=_('Proposals') + ) + pfs_group = tables.Column( + verbose_name=_('PFS Group') + ) + comments = columns.MarkdownColumn( + verbose_name=_('Comments'), + ) + tags = columns.TagColumn( + url_name='vpn:ipsecpolicy_list' + ) + + class Meta(NetBoxTable.Meta): + model = IPSecPolicy + fields = ( + 'pk', 'id', 'name', 'proposals', 'pfs_group', 'description', 'comments', 'tags', 'created', 'last_updated', + ) + default_columns = ( + 'pk', 'name', 'proposals', 'pfs_group', 'description', + ) + + +class IPSecProfileTable(NetBoxTable): + name = tables.Column( + verbose_name=_('Name'), + linkify=True + ) + mode = tables.Column( + verbose_name=_('Mode') + ) + ike_policy = tables.Column( + linkify=True, + verbose_name=_('IKE Policy') + ) + ipsec_policy = tables.Column( + linkify=True, + verbose_name=_('IPSec Policy') + ) + comments = columns.MarkdownColumn( + verbose_name=_('Comments'), + ) + tags = columns.TagColumn( + url_name='vpn:ipsecprofile_list' + ) + + class Meta(NetBoxTable.Meta): + model = IPSecProfile + fields = ( + 'pk', 'id', 'name', 'mode', 'ike_policy', 'ipsec_policy', 'description', 'comments', 'tags', 'created', + 'last_updated', + ) + default_columns = ('pk', 'name', 'mode', 'ike_policy', 'ipsec_policy', 'description') diff --git a/netbox/ipam/tables/l2vpn.py b/netbox/vpn/tables/l2vpn.py similarity index 92% rename from netbox/ipam/tables/l2vpn.py rename to netbox/vpn/tables/l2vpn.py index 8635ab62a..91fddbd66 100644 --- a/netbox/ipam/tables/l2vpn.py +++ b/netbox/vpn/tables/l2vpn.py @@ -1,9 +1,9 @@ -from django.utils.translation import gettext_lazy as _ import django_tables2 as tables +from django.utils.translation import gettext_lazy as _ -from ipam.models import L2VPN, L2VPNTermination from netbox.tables import NetBoxTable, columns from tenancy.tables import TenancyColumnsMixin +from vpn.models import L2VPN, L2VPNTermination __all__ = ( 'L2VPNTable', @@ -37,7 +37,7 @@ class L2VPNTable(TenancyColumnsMixin, NetBoxTable): verbose_name=_('Comments'), ) tags = columns.TagColumn( - url_name='ipam:l2vpn_list' + url_name='vpn:l2vpn_list' ) class Meta(NetBoxTable.Meta): @@ -73,12 +73,15 @@ class L2VPNTerminationTable(NetBoxTable): orderable=False, verbose_name=_('Object Site') ) + tags = columns.TagColumn( + url_name='ipam:l2vpntermination_list' + ) class Meta(NetBoxTable.Meta): model = L2VPNTermination fields = ( 'pk', 'l2vpn', 'assigned_object_type', 'assigned_object', 'assigned_object_parent', 'assigned_object_site', - 'actions', + 'tags', 'actions', ) default_columns = ( 'pk', 'l2vpn', 'assigned_object_type', 'assigned_object_parent', 'assigned_object', 'actions', diff --git a/netbox/vpn/tables/tunnels.py b/netbox/vpn/tables/tunnels.py new file mode 100644 index 000000000..c10985733 --- /dev/null +++ b/netbox/vpn/tables/tunnels.py @@ -0,0 +1,112 @@ +import django_tables2 as tables +from django.utils.translation import gettext_lazy as _ +from django_tables2.utils import Accessor + +from netbox.tables import NetBoxTable, columns +from tenancy.tables import TenancyColumnsMixin +from vpn.models import * + +__all__ = ( + 'TunnelTable', + 'TunnelGroupTable', + 'TunnelTerminationTable', +) + + +class TunnelGroupTable(NetBoxTable): + name = tables.Column( + verbose_name=_('Name'), + linkify=True + ) + tunnel_count = columns.LinkedCountColumn( + viewname='vpn:tunnel_list', + url_params={'group_id': 'pk'}, + verbose_name=_('Tunnels') + ) + tags = columns.TagColumn( + url_name='vpn:tunnelgroup_list' + ) + + class Meta(NetBoxTable.Meta): + model = TunnelGroup + fields = ( + 'pk', 'id', 'name', 'tunnel_count', 'description', 'slug', 'tags', 'actions', 'created', 'last_updated', + ) + default_columns = ('pk', 'name', 'tunnel_count', 'description') + + +class TunnelTable(TenancyColumnsMixin, NetBoxTable): + name = tables.Column( + verbose_name=_('Name'), + linkify=True + ) + status = columns.ChoiceFieldColumn( + verbose_name=_('Status') + ) + ipsec_profile = tables.Column( + verbose_name=_('IPSec profile'), + linkify=True + ) + terminations_count = columns.LinkedCountColumn( + accessor=Accessor('count_terminations'), + viewname='vpn:tunneltermination_list', + url_params={'tunnel_id': 'pk'}, + verbose_name=_('Terminations') + ) + comments = columns.MarkdownColumn( + verbose_name=_('Comments'), + ) + tags = columns.TagColumn( + url_name='vpn:tunnel_list' + ) + + class Meta(NetBoxTable.Meta): + model = Tunnel + fields = ( + 'pk', 'id', 'name', 'status', 'encapsulation', 'ipsec_profile', 'tenant', 'tenant_group', 'tunnel_id', + 'termination_count', 'description', 'comments', 'tags', 'created', 'last_updated', + ) + default_columns = ('pk', 'name', 'status', 'encapsulation', 'tenant', 'terminations_count') + + +class TunnelTerminationTable(TenancyColumnsMixin, NetBoxTable): + tunnel = tables.Column( + verbose_name=_('Tunnel'), + linkify=True + ) + role = columns.ChoiceFieldColumn( + verbose_name=_('Role') + ) + termination_parent = tables.Column( + accessor='termination__parent_object', + linkify=True, + orderable=False, + verbose_name=_('Host') + ) + termination = tables.Column( + verbose_name=_('Interface'), + linkify=True + ) + ip_addresses = tables.ManyToManyColumn( + accessor=tables.A('termination__ip_addresses'), + orderable=False, + linkify_item=True, + verbose_name=_('IP Addresses') + ) + outside_ip = tables.Column( + verbose_name=_('Outside IP'), + linkify=True + ) + tags = columns.TagColumn( + url_name='vpn:tunneltermination_list' + ) + + class Meta(NetBoxTable.Meta): + model = TunnelTermination + fields = ( + 'pk', 'id', 'tunnel', 'role', 'termination_parent', 'termination', 'ip_addresses', 'outside_ip', 'tags', + 'created', 'last_updated', + ) + default_columns = ( + 'pk', 'id', 'tunnel', 'role', 'termination_parent', 'termination', 'ip_addresses', 'outside_ip', + ) diff --git a/netbox/vpn/tests/__init__.py b/netbox/vpn/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/netbox/vpn/tests/test_api.py b/netbox/vpn/tests/test_api.py new file mode 100644 index 000000000..eb0520c8b --- /dev/null +++ b/netbox/vpn/tests/test_api.py @@ -0,0 +1,611 @@ +from django.urls import reverse + +from dcim.choices import InterfaceTypeChoices +from dcim.models import Interface +from ipam.models import VLAN +from utilities.testing import APITestCase, APIViewTestCases, create_test_device +from vpn.choices import * +from vpn.models import * + + +class AppTest(APITestCase): + + def test_root(self): + url = reverse('vpn-api:api-root') + response = self.client.get('{}?format=api'.format(url), **self.header) + + self.assertEqual(response.status_code, 200) + + +class TunnelGroupTest(APIViewTestCases.APIViewTestCase): + model = TunnelGroup + brief_fields = ['display', 'id', 'name', 'slug', 'tunnel_count', 'url'] + create_data = ( + { + 'name': 'Tunnel Group 4', + 'slug': 'tunnel-group-4', + }, + { + 'name': 'Tunnel Group 5', + 'slug': 'tunnel-group-5', + }, + { + 'name': 'Tunnel Group 6', + 'slug': 'tunnel-group-6', + }, + ) + bulk_update_data = { + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + + tunnel_groups = ( + TunnelGroup(name='Tunnel Group 1', slug='tunnel-group-1'), + TunnelGroup(name='Tunnel Group 2', slug='tunnel-group-2'), + TunnelGroup(name='Tunnel Group 3', slug='tunnel-group-3'), + ) + TunnelGroup.objects.bulk_create(tunnel_groups) + + +class TunnelTest(APIViewTestCases.APIViewTestCase): + model = Tunnel + brief_fields = ['display', 'id', 'name', 'url'] + bulk_update_data = { + 'status': TunnelStatusChoices.STATUS_PLANNED, + 'encapsulation': TunnelEncapsulationChoices.ENCAP_GRE, + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + + tunnel_groups = ( + TunnelGroup(name='Tunnel Group 1', slug='tunnel-group-1'), + TunnelGroup(name='Tunnel Group 2', slug='tunnel-group-2'), + ) + TunnelGroup.objects.bulk_create(tunnel_groups) + + tunnels = ( + Tunnel( + name='Tunnel 1', + status=TunnelStatusChoices.STATUS_ACTIVE, + group=tunnel_groups[0], + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ), + Tunnel( + name='Tunnel 2', + status=TunnelStatusChoices.STATUS_ACTIVE, + group=tunnel_groups[0], + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ), + Tunnel( + name='Tunnel 3', + status=TunnelStatusChoices.STATUS_ACTIVE, + group=tunnel_groups[0], + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ), + ) + Tunnel.objects.bulk_create(tunnels) + + cls.create_data = [ + { + 'name': 'Tunnel 4', + 'status': TunnelStatusChoices.STATUS_DISABLED, + 'group': tunnel_groups[1].pk, + 'encapsulation': TunnelEncapsulationChoices.ENCAP_GRE, + }, + { + 'name': 'Tunnel 5', + 'status': TunnelStatusChoices.STATUS_DISABLED, + 'group': tunnel_groups[1].pk, + 'encapsulation': TunnelEncapsulationChoices.ENCAP_GRE, + }, + { + 'name': 'Tunnel 6', + 'status': TunnelStatusChoices.STATUS_DISABLED, + 'group': tunnel_groups[1].pk, + 'encapsulation': TunnelEncapsulationChoices.ENCAP_GRE, + }, + ] + + +class TunnelTerminationTest(APIViewTestCases.APIViewTestCase): + model = TunnelTermination + brief_fields = ['display', 'id', 'url'] + bulk_update_data = { + 'role': TunnelTerminationRoleChoices.ROLE_PEER, + } + + @classmethod + def setUpTestData(cls): + device = create_test_device('Device 1') + interfaces = ( + Interface(device=device, name='Interface 1', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 2', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 3', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 4', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 5', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 6', type=InterfaceTypeChoices.TYPE_VIRTUAL), + ) + Interface.objects.bulk_create(interfaces) + + tunnel = Tunnel.objects.create( + name='Tunnel 1', + status=TunnelStatusChoices.STATUS_ACTIVE, + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ) + + tunnel_terminations = ( + TunnelTermination( + tunnel=tunnel, + role=TunnelTerminationRoleChoices.ROLE_HUB, + termination=interfaces[0] + ), + TunnelTermination( + tunnel=tunnel, + role=TunnelTerminationRoleChoices.ROLE_HUB, + termination=interfaces[1] + ), + TunnelTermination( + tunnel=tunnel, + role=TunnelTerminationRoleChoices.ROLE_HUB, + termination=interfaces[2] + ), + ) + TunnelTermination.objects.bulk_create(tunnel_terminations) + + cls.create_data = [ + { + 'tunnel': tunnel.pk, + 'role': TunnelTerminationRoleChoices.ROLE_PEER, + 'termination_type': 'dcim.interface', + 'termination_id': interfaces[3].pk, + }, + { + 'tunnel': tunnel.pk, + 'role': TunnelTerminationRoleChoices.ROLE_PEER, + 'termination_type': 'dcim.interface', + 'termination_id': interfaces[4].pk, + }, + { + 'tunnel': tunnel.pk, + 'role': TunnelTerminationRoleChoices.ROLE_PEER, + 'termination_type': 'dcim.interface', + 'termination_id': interfaces[5].pk, + }, + ] + + +class IKEProposalTest(APIViewTestCases.APIViewTestCase): + model = IKEProposal + brief_fields = ['display', 'id', 'name', 'url'] + bulk_update_data = { + 'authentication_method': AuthenticationMethodChoices.CERTIFICATES, + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES192_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_MD5, + 'group': DHGroupChoices.GROUP_19, + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + + ike_proposals = ( + IKEProposal( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + IKEProposal( + name='IKE Proposal 2', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + IKEProposal( + name='IKE Proposal 3', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + ) + IKEProposal.objects.bulk_create(ike_proposals) + + cls.create_data = [ + { + 'name': 'IKE Proposal 4', + 'authentication_method': AuthenticationMethodChoices.CERTIFICATES, + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES256_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + 'group': DHGroupChoices.GROUP_19, + }, + { + 'name': 'IKE Proposal 5', + 'authentication_method': AuthenticationMethodChoices.CERTIFICATES, + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES256_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + 'group': DHGroupChoices.GROUP_19, + }, + { + 'name': 'IKE Proposal 6', + 'authentication_method': AuthenticationMethodChoices.CERTIFICATES, + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES256_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + 'group': DHGroupChoices.GROUP_19, + }, + ] + + +class IKEPolicyTest(APIViewTestCases.APIViewTestCase): + model = IKEPolicy + brief_fields = ['display', 'id', 'name', 'url'] + bulk_update_data = { + 'version': IKEVersionChoices.VERSION_1, + 'mode': IKEModeChoices.AGGRESSIVE, + 'description': 'New description', + 'preshared_key': 'New key', + } + + @classmethod + def setUpTestData(cls): + + ike_proposals = ( + IKEProposal( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + IKEProposal( + name='IKE Proposal 2', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + ) + IKEProposal.objects.bulk_create(ike_proposals) + + ike_policies = ( + IKEPolicy( + name='IKE Policy 1', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + IKEPolicy( + name='IKE Policy 2', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + IKEPolicy( + name='IKE Policy 3', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + ) + IKEPolicy.objects.bulk_create(ike_policies) + for ike_policy in ike_policies: + ike_policy.proposals.set(ike_proposals) + + cls.create_data = [ + { + 'name': 'IKE Policy 4', + 'version': IKEVersionChoices.VERSION_1, + 'mode': IKEModeChoices.MAIN, + 'proposals': [ike_proposals[0].pk, ike_proposals[1].pk], + }, + { + 'name': 'IKE Policy 5', + 'version': IKEVersionChoices.VERSION_1, + 'mode': IKEModeChoices.MAIN, + 'proposals': [ike_proposals[0].pk, ike_proposals[1].pk], + }, + { + 'name': 'IKE Policy 6', + 'version': IKEVersionChoices.VERSION_1, + 'mode': IKEModeChoices.MAIN, + 'proposals': [ike_proposals[0].pk, ike_proposals[1].pk], + }, + ] + + +class IPSecProposalTest(APIViewTestCases.APIViewTestCase): + model = IPSecProposal + brief_fields = ['display', 'id', 'name', 'url'] + bulk_update_data = { + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES192_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_MD5, + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + + ipsec_proposals = ( + IPSecProposal( + name='IPSec Proposal 1', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ), + IPSecProposal( + name='IPSec Proposal 2', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ), + IPSecProposal( + name='IPSec Proposal 3', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ), + ) + IPSecProposal.objects.bulk_create(ipsec_proposals) + + cls.create_data = [ + { + 'name': 'IPSec Proposal 4', + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES256_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + }, + { + 'name': 'IPSec Proposal 5', + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES256_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + }, + { + 'name': 'IPSec Proposal 6', + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES256_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + }, + ] + + +class IPSecPolicyTest(APIViewTestCases.APIViewTestCase): + model = IPSecPolicy + brief_fields = ['display', 'id', 'name', 'url'] + bulk_update_data = { + 'pfs_group': DHGroupChoices.GROUP_5, + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + + ipsec_proposals = ( + IPSecProposal( + name='IPSec Policy 1', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ), + IPSecProposal( + name='IPSec Proposal 2', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ), + ) + IPSecProposal.objects.bulk_create(ipsec_proposals) + + ipsec_policies = ( + IPSecPolicy( + name='IPSec Policy 1', + pfs_group=DHGroupChoices.GROUP_14 + ), + IPSecPolicy( + name='IPSec Policy 2', + pfs_group=DHGroupChoices.GROUP_14 + ), + IPSecPolicy( + name='IPSec Policy 3', + pfs_group=DHGroupChoices.GROUP_14 + ), + ) + IPSecPolicy.objects.bulk_create(ipsec_policies) + for ipsec_policy in ipsec_policies: + ipsec_policy.proposals.set(ipsec_proposals) + + cls.create_data = [ + { + 'name': 'IPSec Policy 4', + 'pfs_group': DHGroupChoices.GROUP_16, + 'proposals': [ipsec_proposals[0].pk, ipsec_proposals[1].pk], + }, + { + 'name': 'IPSec Policy 5', + 'pfs_group': DHGroupChoices.GROUP_16, + 'proposals': [ipsec_proposals[0].pk, ipsec_proposals[1].pk], + }, + { + 'name': 'IPSec Policy 6', + 'pfs_group': DHGroupChoices.GROUP_16, + 'proposals': [ipsec_proposals[0].pk, ipsec_proposals[1].pk], + }, + ] + + +class IPSecProfileTest(APIViewTestCases.APIViewTestCase): + model = IPSecProfile + brief_fields = ['display', 'id', 'name', 'url'] + + @classmethod + def setUpTestData(cls): + + ike_proposal = IKEProposal.objects.create( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ) + + ipsec_proposal = IPSecProposal.objects.create( + name='IPSec Proposal 1', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ) + + ike_policies = ( + IKEPolicy( + name='IKE Policy 1', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + IKEPolicy( + name='IKE Policy 2', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + ) + IKEPolicy.objects.bulk_create(ike_policies) + for ike_policy in ike_policies: + ike_policy.proposals.add(ike_proposal) + + ipsec_policies = ( + IPSecPolicy( + name='IPSec Policy 1', + pfs_group=DHGroupChoices.GROUP_14 + ), + IPSecPolicy( + name='IPSec Policy 2', + pfs_group=DHGroupChoices.GROUP_14 + ), + ) + IPSecPolicy.objects.bulk_create(ipsec_policies) + for ipsec_policy in ipsec_policies: + ipsec_policy.proposals.add(ipsec_proposal) + + ipsec_profiles = ( + IPSecProfile( + name='IPSec Profile 1', + mode=IPSecModeChoices.ESP, + ike_policy=ike_policies[0], + ipsec_policy=ipsec_policies[0] + ), + IPSecProfile( + name='IPSec Profile 2', + mode=IPSecModeChoices.ESP, + ike_policy=ike_policies[0], + ipsec_policy=ipsec_policies[0] + ), + IPSecProfile( + name='IPSec Profile 3', + mode=IPSecModeChoices.ESP, + ike_policy=ike_policies[0], + ipsec_policy=ipsec_policies[0] + ), + ) + IPSecProfile.objects.bulk_create(ipsec_profiles) + + cls.create_data = [ + { + 'name': 'IPSec Profile 4', + 'mode': IPSecModeChoices.AH, + 'ike_policy': ike_policies[1].pk, + 'ipsec_policy': ipsec_policies[1].pk, + }, + ] + + cls.bulk_update_data = { + 'mode': IPSecModeChoices.AH, + 'ike_policy': ike_policies[1].pk, + 'ipsec_policy': ipsec_policies[1].pk, + 'description': 'New description', + } + + +class L2VPNTest(APIViewTestCases.APIViewTestCase): + model = L2VPN + brief_fields = ['display', 'id', 'identifier', 'name', 'slug', 'type', 'url'] + create_data = [ + { + 'name': 'L2VPN 4', + 'slug': 'l2vpn-4', + 'type': 'vxlan', + 'identifier': 33343344 + }, + { + 'name': 'L2VPN 5', + 'slug': 'l2vpn-5', + 'type': 'vxlan', + 'identifier': 33343345 + }, + { + 'name': 'L2VPN 6', + 'slug': 'l2vpn-6', + 'type': 'vpws', + 'identifier': 33343346 + }, + ] + bulk_update_data = { + 'description': 'New description', + } + + @classmethod + def setUpTestData(cls): + + l2vpns = ( + L2VPN(name='L2VPN 1', slug='l2vpn-1', type='vxlan', identifier=650001), + L2VPN(name='L2VPN 2', slug='l2vpn-2', type='vpws', identifier=650002), + L2VPN(name='L2VPN 3', slug='l2vpn-3', type='vpls'), # No RD + ) + L2VPN.objects.bulk_create(l2vpns) + + +class L2VPNTerminationTest(APIViewTestCases.APIViewTestCase): + model = L2VPNTermination + brief_fields = ['display', 'id', 'l2vpn', 'url'] + + @classmethod + def setUpTestData(cls): + + vlans = ( + VLAN(name='VLAN 1', vid=651), + VLAN(name='VLAN 2', vid=652), + VLAN(name='VLAN 3', vid=653), + VLAN(name='VLAN 4', vid=654), + VLAN(name='VLAN 5', vid=655), + VLAN(name='VLAN 6', vid=656), + VLAN(name='VLAN 7', vid=657) + ) + VLAN.objects.bulk_create(vlans) + + l2vpns = ( + L2VPN(name='L2VPN 1', slug='l2vpn-1', type='vxlan', identifier=650001), + L2VPN(name='L2VPN 2', slug='l2vpn-2', type='vpws', identifier=650002), + L2VPN(name='L2VPN 3', slug='l2vpn-3', type='vpls'), # No RD + ) + L2VPN.objects.bulk_create(l2vpns) + + l2vpnterminations = ( + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[0]), + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[1]), + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[2]) + ) + L2VPNTermination.objects.bulk_create(l2vpnterminations) + + cls.create_data = [ + { + 'l2vpn': l2vpns[0].pk, + 'assigned_object_type': 'ipam.vlan', + 'assigned_object_id': vlans[3].pk, + }, + { + 'l2vpn': l2vpns[0].pk, + 'assigned_object_type': 'ipam.vlan', + 'assigned_object_id': vlans[4].pk, + }, + { + 'l2vpn': l2vpns[0].pk, + 'assigned_object_type': 'ipam.vlan', + 'assigned_object_id': vlans[5].pk, + }, + ] + + cls.bulk_update_data = { + 'l2vpn': l2vpns[2].pk + } diff --git a/netbox/vpn/tests/test_filtersets.py b/netbox/vpn/tests/test_filtersets.py new file mode 100644 index 000000000..d4e80750d --- /dev/null +++ b/netbox/vpn/tests/test_filtersets.py @@ -0,0 +1,891 @@ +from django.contrib.contenttypes.models import ContentType +from django.test import TestCase + +from dcim.choices import InterfaceTypeChoices +from dcim.models import Device, Interface, Site +from ipam.models import IPAddress, VLAN, RouteTarget +from utilities.testing import ChangeLoggedFilterSetTests, create_test_device, create_test_virtualmachine +from virtualization.models import VirtualMachine, VMInterface +from vpn.choices import * +from vpn.filtersets import * +from vpn.models import * + + +class TunnelGroupTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = TunnelGroup.objects.all() + filterset = TunnelGroupFilterSet + + @classmethod + def setUpTestData(cls): + + TunnelGroup.objects.bulk_create(( + TunnelGroup(name='Tunnel Group 1', slug='tunnel-group-1', description='foobar1'), + TunnelGroup(name='Tunnel Group 2', slug='tunnel-group-2', description='foobar2'), + TunnelGroup(name='Tunnel Group 3', slug='tunnel-group-3'), + )) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['Tunnel Group 1']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_slug(self): + params = {'slug': ['tunnel-group-1']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class TunnelTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = Tunnel.objects.all() + filterset = TunnelFilterSet + + @classmethod + def setUpTestData(cls): + ike_proposal = IKEProposal.objects.create( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ) + ike_policy = IKEPolicy.objects.create( + name='IKE Policy 1', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ) + ike_policy.proposals.add(ike_proposal) + ipsec_proposal = IPSecProposal.objects.create( + name='IPSec Proposal 1', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ) + ipsec_policy = IPSecPolicy.objects.create( + name='IPSec Policy 1', + pfs_group=DHGroupChoices.GROUP_14 + ) + ipsec_policy.proposals.add(ipsec_proposal) + ipsec_profiles = ( + IPSecProfile( + name='IPSec Profile 1', + mode=IPSecModeChoices.ESP, + ike_policy=ike_policy, + ipsec_policy=ipsec_policy + ), + IPSecProfile( + name='IPSec Profile 2', + mode=IPSecModeChoices.ESP, + ike_policy=ike_policy, + ipsec_policy=ipsec_policy + ), + ) + IPSecProfile.objects.bulk_create(ipsec_profiles) + + tunnel_groups = ( + TunnelGroup(name='Tunnel Group 1', slug='tunnel-group-1'), + TunnelGroup(name='Tunnel Group 2', slug='tunnel-group-2'), + TunnelGroup(name='Tunnel Group 3', slug='tunnel-group-3'), + ) + TunnelGroup.objects.bulk_create(tunnel_groups) + + tunnels = ( + Tunnel( + name='Tunnel 1', + status=TunnelStatusChoices.STATUS_ACTIVE, + group=tunnel_groups[0], + encapsulation=TunnelEncapsulationChoices.ENCAP_GRE, + ipsec_profile=ipsec_profiles[0], + tunnel_id=100, + description='foobar1' + ), + Tunnel( + name='Tunnel 2', + status=TunnelStatusChoices.STATUS_PLANNED, + group=tunnel_groups[1], + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP, + ipsec_profile=ipsec_profiles[0], + tunnel_id=200, + description='foobar2' + ), + Tunnel( + name='Tunnel 3', + status=TunnelStatusChoices.STATUS_DISABLED, + group=tunnel_groups[2], + encapsulation=TunnelEncapsulationChoices.ENCAP_IPSEC_TUNNEL, + ipsec_profile=None, + tunnel_id=300, + description='foobar3' + ), + ) + Tunnel.objects.bulk_create(tunnels) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['Tunnel 1', 'Tunnel 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_status(self): + params = {'status': [TunnelStatusChoices.STATUS_ACTIVE, TunnelStatusChoices.STATUS_PLANNED]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_group(self): + tunnel_groups = TunnelGroup.objects.all()[:2] + params = {'group_id': [tunnel_groups[0].pk, tunnel_groups[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'group': [tunnel_groups[0].slug, tunnel_groups[1].slug]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_encapsulation(self): + params = {'encapsulation': [TunnelEncapsulationChoices.ENCAP_GRE, TunnelEncapsulationChoices.ENCAP_IP_IP]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_ipsec_profile(self): + ipsec_profiles = IPSecProfile.objects.all()[:2] + params = {'ipsec_profile_id': [ipsec_profiles[0].pk, ipsec_profiles[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'ipsec_profile': [ipsec_profiles[0].name, ipsec_profiles[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_tunnel_id(self): + params = {'tunnel_id': [100, 200]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class TunnelTerminationTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = TunnelTermination.objects.all() + filterset = TunnelTerminationFilterSet + + @classmethod + def setUpTestData(cls): + device = create_test_device('Device 1') + interfaces = ( + Interface(device=device, name='Interface 1', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 2', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 3', type=InterfaceTypeChoices.TYPE_VIRTUAL), + ) + Interface.objects.bulk_create(interfaces) + + virtual_machine = create_test_virtualmachine('Virtual Machine 1') + vm_interfaces = ( + VMInterface(virtual_machine=virtual_machine, name='Interface 1'), + VMInterface(virtual_machine=virtual_machine, name='Interface 2'), + VMInterface(virtual_machine=virtual_machine, name='Interface 3'), + ) + VMInterface.objects.bulk_create(vm_interfaces) + + ip_addresses = ( + IPAddress(address='192.168.0.1/32'), + IPAddress(address='192.168.0.2/32'), + IPAddress(address='192.168.0.3/32'), + IPAddress(address='192.168.0.4/32'), + IPAddress(address='192.168.0.5/32'), + IPAddress(address='192.168.0.6/32'), + ) + IPAddress.objects.bulk_create(ip_addresses) + + tunnels = ( + Tunnel( + name='Tunnel 1', + status=TunnelStatusChoices.STATUS_ACTIVE, + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ), + Tunnel( + name='Tunnel 2', + status=TunnelStatusChoices.STATUS_ACTIVE, + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ), + Tunnel( + name='Tunnel 3', + status=TunnelStatusChoices.STATUS_ACTIVE, + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ), + ) + Tunnel.objects.bulk_create(tunnels) + + tunnel_terminations = ( + # Tunnel 1 + TunnelTermination( + tunnel=tunnels[0], + role=TunnelTerminationRoleChoices.ROLE_HUB, + termination=interfaces[0], + outside_ip=ip_addresses[0] + ), + TunnelTermination( + tunnel=tunnels[0], + role=TunnelTerminationRoleChoices.ROLE_SPOKE, + termination=vm_interfaces[0], + outside_ip=ip_addresses[1] + ), + # Tunnel 2 + TunnelTermination( + tunnel=tunnels[1], + role=TunnelTerminationRoleChoices.ROLE_HUB, + termination=interfaces[1], + outside_ip=ip_addresses[2] + ), + TunnelTermination( + tunnel=tunnels[1], + role=TunnelTerminationRoleChoices.ROLE_SPOKE, + termination=vm_interfaces[1], + outside_ip=ip_addresses[3] + ), + # Tunnel 3 + TunnelTermination( + tunnel=tunnels[2], + role=TunnelTerminationRoleChoices.ROLE_PEER, + termination=interfaces[2], + outside_ip=ip_addresses[4] + ), + TunnelTermination( + tunnel=tunnels[2], + role=TunnelTerminationRoleChoices.ROLE_PEER, + termination=vm_interfaces[2], + outside_ip=ip_addresses[5] + ), + ) + TunnelTermination.objects.bulk_create(tunnel_terminations) + + def test_tunnel(self): + tunnels = Tunnel.objects.all()[:2] + params = {'tunnel_id': [tunnels[0].pk, tunnels[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + params = {'tunnel': [tunnels[0].name, tunnels[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + + def test_role(self): + params = {'role': [TunnelTerminationRoleChoices.ROLE_HUB, TunnelTerminationRoleChoices.ROLE_SPOKE]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4) + + def test_termination_type(self): + params = {'termination_type': 'dcim.interface'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + params = {'termination_type': 'virtualization.vminterface'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + + def test_interface(self): + interfaces = Interface.objects.all()[:2] + params = {'interface_id': [interfaces[0].pk, interfaces[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'interface': [interfaces[0].name, interfaces[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_vminterface(self): + vm_interfaces = VMInterface.objects.all()[:2] + params = {'vminterface_id': [vm_interfaces[0].pk, vm_interfaces[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'vminterface': [vm_interfaces[0].name, vm_interfaces[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_outside_ip(self): + ip_addresses = IPAddress.objects.all()[:2] + params = {'outside_ip_id': [ip_addresses[0].pk, ip_addresses[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class IKEProposalTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = IKEProposal.objects.all() + filterset = IKEProposalFilterSet + + @classmethod + def setUpTestData(cls): + ike_proposals = ( + IKEProposal( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_1, + sa_lifetime=1000, + description='foobar1' + ), + IKEProposal( + name='IKE Proposal 2', + authentication_method=AuthenticationMethodChoices.CERTIFICATES, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES192_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + group=DHGroupChoices.GROUP_2, + sa_lifetime=2000, + description='foobar2' + ), + IKEProposal( + name='IKE Proposal 3', + authentication_method=AuthenticationMethodChoices.RSA_SIGNATURES, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES256_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA512, + group=DHGroupChoices.GROUP_5, + sa_lifetime=3000, + description='foobar3' + ), + ) + IKEProposal.objects.bulk_create(ike_proposals) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['IKE Proposal 1', 'IKE Proposal 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_authentication_method(self): + params = {'authentication_method': [ + AuthenticationMethodChoices.PRESHARED_KEYS, AuthenticationMethodChoices.CERTIFICATES + ]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_encryption_algorithm(self): + params = {'encryption_algorithm': [ + EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, EncryptionAlgorithmChoices.ENCRYPTION_AES192_CBC + ]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_authentication_algorithm(self): + params = {'authentication_algorithm': [ + AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256 + ]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_group(self): + params = {'group': [DHGroupChoices.GROUP_1, DHGroupChoices.GROUP_2]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_sa_lifetime(self): + params = {'sa_lifetime': [1000, 2000]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class IKEPolicyTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = IKEPolicy.objects.all() + filterset = IKEPolicyFilterSet + + @classmethod + def setUpTestData(cls): + ike_proposals = ( + IKEProposal( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + IKEProposal( + name='IKE Proposal 2', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + IKEProposal( + name='IKE Proposal 3', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + ) + IKEProposal.objects.bulk_create(ike_proposals) + + ike_policies = ( + IKEPolicy( + name='IKE Policy 1', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + description='foobar1' + ), + IKEPolicy( + name='IKE Policy 2', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + description='foobar2' + ), + IKEPolicy( + name='IKE Policy 3', + version=IKEVersionChoices.VERSION_2, + mode=IKEModeChoices.AGGRESSIVE, + description='foobar3' + ), + ) + IKEPolicy.objects.bulk_create(ike_policies) + ike_policies[0].proposals.add(ike_proposals[0]) + ike_policies[1].proposals.add(ike_proposals[1]) + ike_policies[2].proposals.add(ike_proposals[2]) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['IKE Policy 1', 'IKE Policy 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_version(self): + params = {'version': [IKEVersionChoices.VERSION_1]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_mode(self): + params = {'mode': [IKEModeChoices.MAIN]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_proposal(self): + proposals = IKEProposal.objects.all()[:2] + params = {'proposal_id': [proposals[0].pk, proposals[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'proposal': [proposals[0].name, proposals[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class IPSecProposalTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = IPSecProposal.objects.all() + filterset = IPSecProposalFilterSet + + @classmethod + def setUpTestData(cls): + ipsec_proposals = ( + IPSecProposal( + name='IPSec Proposal 1', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + sa_lifetime_seconds=1000, + sa_lifetime_data=1000, + description='foobar1' + ), + IPSecProposal( + name='IPSec Proposal 2', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES192_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + sa_lifetime_seconds=2000, + sa_lifetime_data=2000, + description='foobar2' + ), + IPSecProposal( + name='IPSec Proposal 3', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES256_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA512, + sa_lifetime_seconds=3000, + sa_lifetime_data=3000, + description='foobar3' + ), + ) + IPSecProposal.objects.bulk_create(ipsec_proposals) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['IPSec Proposal 1', 'IPSec Proposal 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_encryption_algorithm(self): + params = {'encryption_algorithm': [ + EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, EncryptionAlgorithmChoices.ENCRYPTION_AES192_CBC + ]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_authentication_algorithm(self): + params = {'authentication_algorithm': [ + AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256 + ]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_sa_lifetime_seconds(self): + params = {'sa_lifetime_seconds': [1000, 2000]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_sa_lifetime_data(self): + params = {'sa_lifetime_data': [1000, 2000]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class IPSecPolicyTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = IPSecPolicy.objects.all() + filterset = IPSecPolicyFilterSet + + @classmethod + def setUpTestData(cls): + ipsec_proposals = ( + IPSecProposal( + name='IPSec Policy 1', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ), + IPSecProposal( + name='IPSec Proposal 2', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ), + IPSecProposal( + name='IPSec Proposal 3', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ), + ) + IPSecProposal.objects.bulk_create(ipsec_proposals) + + ipsec_policies = ( + IPSecPolicy( + name='IPSec Policy 1', + pfs_group=DHGroupChoices.GROUP_1, + description='foobar1' + ), + IPSecPolicy( + name='IPSec Policy 2', + pfs_group=DHGroupChoices.GROUP_2, + description='foobar2' + ), + IPSecPolicy( + name='IPSec Policy 3', + pfs_group=DHGroupChoices.GROUP_5, + description='foobar3' + ), + ) + IPSecPolicy.objects.bulk_create(ipsec_policies) + ipsec_policies[0].proposals.add(ipsec_proposals[0]) + ipsec_policies[1].proposals.add(ipsec_proposals[1]) + ipsec_policies[2].proposals.add(ipsec_proposals[2]) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['IPSec Policy 1', 'IPSec Policy 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_pfs_group(self): + params = {'pfs_group': [DHGroupChoices.GROUP_1, DHGroupChoices.GROUP_2]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_proposal(self): + proposals = IPSecProposal.objects.all()[:2] + params = {'proposal_id': [proposals[0].pk, proposals[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'proposal': [proposals[0].name, proposals[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class IPSecProfileTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = IPSecProfile.objects.all() + filterset = IPSecProfileFilterSet + + @classmethod + def setUpTestData(cls): + ike_proposal = IKEProposal.objects.create( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ) + ipsec_proposal = IPSecProposal.objects.create( + name='IPSec Proposal 1', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ) + + ike_policies = ( + IKEPolicy( + name='IKE Policy 1', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + IKEPolicy( + name='IKE Policy 2', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + IKEPolicy( + name='IKE Policy 3', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + ) + IKEPolicy.objects.bulk_create(ike_policies) + for ike_policy in ike_policies: + ike_policy.proposals.add(ike_proposal) + + ipsec_policies = ( + IPSecPolicy( + name='IPSec Policy 1', + pfs_group=DHGroupChoices.GROUP_14 + ), + IPSecPolicy( + name='IPSec Policy 2', + pfs_group=DHGroupChoices.GROUP_14 + ), + IPSecPolicy( + name='IPSec Policy 3', + pfs_group=DHGroupChoices.GROUP_14 + ), + ) + IPSecPolicy.objects.bulk_create(ipsec_policies) + for ipsec_policy in ipsec_policies: + ipsec_policy.proposals.add(ipsec_proposal) + + ipsec_profiles = ( + IPSecProfile( + name='IPSec Profile 1', + mode=IPSecModeChoices.ESP, + ike_policy=ike_policies[0], + ipsec_policy=ipsec_policies[0], + description='foobar1' + ), + IPSecProfile( + name='IPSec Profile 2', + mode=IPSecModeChoices.ESP, + ike_policy=ike_policies[1], + ipsec_policy=ipsec_policies[1], + description='foobar2' + ), + IPSecProfile( + name='IPSec Profile 3', + mode=IPSecModeChoices.AH, + ike_policy=ike_policies[2], + ipsec_policy=ipsec_policies[2], + description='foobar3' + ), + ) + IPSecProfile.objects.bulk_create(ipsec_profiles) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['IPSec Profile 1', 'IPSec Profile 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_mode(self): + params = {'mode': [IPSecModeChoices.ESP]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_ike_policy(self): + ike_policies = IKEPolicy.objects.all()[:2] + params = {'ike_policy_id': [ike_policies[0].pk, ike_policies[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'ike_policy': [ike_policies[0].name, ike_policies[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_ipsec_policy(self): + ipsec_policies = IPSecPolicy.objects.all()[:2] + params = {'ipsec_policy_id': [ipsec_policies[0].pk, ipsec_policies[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'ipsec_policy': [ipsec_policies[0].name, ipsec_policies[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class L2VPNTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = L2VPN.objects.all() + filterset = L2VPNFilterSet + + @classmethod + def setUpTestData(cls): + + route_targets = ( + RouteTarget(name='1:1'), + RouteTarget(name='1:2'), + RouteTarget(name='1:3'), + RouteTarget(name='2:1'), + RouteTarget(name='2:2'), + RouteTarget(name='2:3'), + ) + RouteTarget.objects.bulk_create(route_targets) + + l2vpns = ( + L2VPN( + name='L2VPN 1', + slug='l2vpn-1', + type=L2VPNTypeChoices.TYPE_VXLAN, + identifier=65001, + description='foobar1' + ), + L2VPN( + name='L2VPN 2', + slug='l2vpn-2', + type=L2VPNTypeChoices.TYPE_VPWS, + identifier=65002, + description='foobar2' + ), + L2VPN( + name='L2VPN 3', + slug='l2vpn-3', + type=L2VPNTypeChoices.TYPE_VPLS, + description='foobar3' + ), + ) + L2VPN.objects.bulk_create(l2vpns) + l2vpns[0].import_targets.add(route_targets[0]) + l2vpns[1].import_targets.add(route_targets[1]) + l2vpns[2].import_targets.add(route_targets[2]) + l2vpns[0].export_targets.add(route_targets[3]) + l2vpns[1].export_targets.add(route_targets[4]) + l2vpns[2].export_targets.add(route_targets[5]) + + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + + def test_name(self): + params = {'name': ['L2VPN 1', 'L2VPN 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_slug(self): + params = {'slug': ['l2vpn-1', 'l2vpn-2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_identifier(self): + params = {'identifier': ['65001', '65002']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_type(self): + params = {'type': [L2VPNTypeChoices.TYPE_VXLAN, L2VPNTypeChoices.TYPE_VPWS]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_import_targets(self): + route_targets = RouteTarget.objects.filter(name__in=['1:1', '1:2']) + params = {'import_target_id': [route_targets[0].pk, route_targets[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'import_target': [route_targets[0].name, route_targets[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_export_targets(self): + route_targets = RouteTarget.objects.filter(name__in=['2:1', '2:2']) + params = {'export_target_id': [route_targets[0].pk, route_targets[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'export_target': [route_targets[0].name, route_targets[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + +class L2VPNTerminationTestCase(TestCase, ChangeLoggedFilterSetTests): + queryset = L2VPNTermination.objects.all() + filterset = L2VPNTerminationFilterSet + + @classmethod + def setUpTestData(cls): + device = create_test_device('Device 1') + interfaces = ( + Interface(name='Interface 1', device=device, type=InterfaceTypeChoices.TYPE_1GE_FIXED), + Interface(name='Interface 2', device=device, type=InterfaceTypeChoices.TYPE_1GE_FIXED), + Interface(name='Interface 3', device=device, type=InterfaceTypeChoices.TYPE_1GE_FIXED), + ) + Interface.objects.bulk_create(interfaces) + + vm = create_test_virtualmachine('Virtual Machine 1') + vminterfaces = ( + VMInterface(name='Interface 1', virtual_machine=vm), + VMInterface(name='Interface 2', virtual_machine=vm), + VMInterface(name='Interface 3', virtual_machine=vm), + ) + VMInterface.objects.bulk_create(vminterfaces) + + vlans = ( + VLAN(name='VLAN 1', vid=101), + VLAN(name='VLAN 2', vid=102), + VLAN(name='VLAN 3', vid=103), + ) + VLAN.objects.bulk_create(vlans) + + l2vpns = ( + L2VPN(name='L2VPN 1', slug='l2vpn-1', type='vxlan', identifier=65001), + L2VPN(name='L2VPN 2', slug='l2vpn-2', type='vpws', identifier=65002), + L2VPN(name='L2VPN 3', slug='l2vpn-3', type='vpls'), # No RD, + ) + L2VPN.objects.bulk_create(l2vpns) + + l2vpnterminations = ( + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[0]), + L2VPNTermination(l2vpn=l2vpns[1], assigned_object=vlans[1]), + L2VPNTermination(l2vpn=l2vpns[2], assigned_object=vlans[2]), + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=interfaces[0]), + L2VPNTermination(l2vpn=l2vpns[1], assigned_object=interfaces[1]), + L2VPNTermination(l2vpn=l2vpns[2], assigned_object=interfaces[2]), + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vminterfaces[0]), + L2VPNTermination(l2vpn=l2vpns[1], assigned_object=vminterfaces[1]), + L2VPNTermination(l2vpn=l2vpns[2], assigned_object=vminterfaces[2]), + ) + L2VPNTermination.objects.bulk_create(l2vpnterminations) + + def test_l2vpn(self): + l2vpns = L2VPN.objects.all()[:2] + params = {'l2vpn_id': [l2vpns[0].pk, l2vpns[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + params = {'l2vpn': [l2vpns[0].slug, l2vpns[1].slug]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + + def test_content_type(self): + params = {'assigned_object_type_id': ContentType.objects.get(model='vlan').pk} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + + def test_interface(self): + interfaces = Interface.objects.all()[:2] + params = {'interface_id': [interfaces[0].pk, interfaces[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_vminterface(self): + vminterfaces = VMInterface.objects.all()[:2] + params = {'vminterface_id': [vminterfaces[0].pk, vminterfaces[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_vlan(self): + vlans = VLAN.objects.all()[:2] + params = {'vlan_id': [vlans[0].pk, vlans[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'vlan': ['VLAN 1', 'VLAN 2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_site(self): + site = Site.objects.all().first() + params = {'site_id': [site.pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + params = {'site': ['site-1']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + + def test_device(self): + device = Device.objects.all().first() + params = {'device_id': [device.pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + params = {'device': ['Device 1']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + + def test_virtual_machine(self): + virtual_machine = VirtualMachine.objects.all().first() + params = {'virtual_machine_id': [virtual_machine.pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) + params = {'virtual_machine': ['Virtual Machine 1']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) diff --git a/netbox/vpn/tests/test_models.py b/netbox/vpn/tests/test_models.py new file mode 100644 index 000000000..e464dccd9 --- /dev/null +++ b/netbox/vpn/tests/test_models.py @@ -0,0 +1,79 @@ +from django.core.exceptions import ValidationError +from django.test import TestCase + +from dcim.models import Interface, Device, DeviceRole, DeviceType, Manufacturer, Site +from ipam.models import VLAN +from vpn.models import * + + +class TestL2VPNTermination(TestCase): + + @classmethod + def setUpTestData(cls): + + site = Site.objects.create(name='Site 1') + manufacturer = Manufacturer.objects.create(name='Manufacturer 1') + device_type = DeviceType.objects.create(model='Device Type 1', manufacturer=manufacturer) + role = DeviceRole.objects.create(name='Switch') + device = Device.objects.create( + name='Device 1', + site=site, + device_type=device_type, + role=role, + status='active' + ) + + interfaces = ( + Interface(name='Interface 1', device=device, type='1000baset'), + Interface(name='Interface 2', device=device, type='1000baset'), + Interface(name='Interface 3', device=device, type='1000baset'), + Interface(name='Interface 4', device=device, type='1000baset'), + Interface(name='Interface 5', device=device, type='1000baset'), + ) + + Interface.objects.bulk_create(interfaces) + + vlans = ( + VLAN(name='VLAN 1', vid=651), + VLAN(name='VLAN 2', vid=652), + VLAN(name='VLAN 3', vid=653), + VLAN(name='VLAN 4', vid=654), + VLAN(name='VLAN 5', vid=655), + VLAN(name='VLAN 6', vid=656), + VLAN(name='VLAN 7', vid=657) + ) + + VLAN.objects.bulk_create(vlans) + + l2vpns = ( + L2VPN(name='L2VPN 1', slug='l2vpn-1', type='vxlan', identifier=650001), + L2VPN(name='L2VPN 2', slug='l2vpn-2', type='vpws', identifier=650002), + L2VPN(name='L2VPN 3', slug='l2vpn-3', type='vpls'), # No RD + ) + L2VPN.objects.bulk_create(l2vpns) + + l2vpnterminations = ( + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[0]), + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[1]), + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[2]) + ) + + L2VPNTermination.objects.bulk_create(l2vpnterminations) + + def test_duplicate_interface_terminations(self): + device = Device.objects.first() + interface = Interface.objects.filter(device=device).first() + l2vpn = L2VPN.objects.first() + + L2VPNTermination.objects.create(l2vpn=l2vpn, assigned_object=interface) + duplicate = L2VPNTermination(l2vpn=l2vpn, assigned_object=interface) + + self.assertRaises(ValidationError, duplicate.clean) + + def test_duplicate_vlan_terminations(self): + vlan = Interface.objects.first() + l2vpn = L2VPN.objects.first() + + L2VPNTermination.objects.create(l2vpn=l2vpn, assigned_object=vlan) + duplicate = L2VPNTermination(l2vpn=l2vpn, assigned_object=vlan) + self.assertRaises(ValidationError, duplicate.clean) diff --git a/netbox/vpn/tests/test_views.py b/netbox/vpn/tests/test_views.py new file mode 100644 index 000000000..ab797d9fd --- /dev/null +++ b/netbox/vpn/tests/test_views.py @@ -0,0 +1,702 @@ +from dcim.choices import InterfaceTypeChoices +from dcim.models import Interface +from ipam.models import RouteTarget, VLAN +from utilities.testing import ViewTestCases, create_tags, create_test_device +from vpn.choices import * +from vpn.models import * + + +class TunnelGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase): + model = TunnelGroup + + @classmethod + def setUpTestData(cls): + + tunnel_groups = ( + TunnelGroup(name='Tunnel Group 1', slug='tunnel-group-1'), + TunnelGroup(name='Tunnel Group 2', slug='tunnel-group-2'), + TunnelGroup(name='Tunnel Group 3', slug='tunnel-group-3'), + ) + TunnelGroup.objects.bulk_create(tunnel_groups) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'name': 'Tunnel Group X', + 'slug': 'tunnel-group-x', + 'description': 'A new Tunnel Group', + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + "name,slug", + "Tunnel Group 4,tunnel-group-4", + "Tunnel Group 5,tunnel-group-5", + "Tunnel Group 6,tunnel-group-6", + ) + + cls.csv_update_data = ( + "id,name,description", + f"{tunnel_groups[0].pk},Tunnel Group 7,New description7", + f"{tunnel_groups[1].pk},Tunnel Group 8,New description8", + f"{tunnel_groups[2].pk},Tunnel Group 9,New description9", + ) + + cls.bulk_edit_data = { + 'description': 'Foo', + } + + +class TunnelTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = Tunnel + + @classmethod + def setUpTestData(cls): + + tunnel_groups = ( + TunnelGroup(name='Tunnel Group 1', slug='tunnel-group-1'), + TunnelGroup(name='Tunnel Group 2', slug='tunnel-group-2'), + TunnelGroup(name='Tunnel Group 3', slug='tunnel-group-3'), + TunnelGroup(name='Tunnel Group 4', slug='tunnel-group-4'), + ) + TunnelGroup.objects.bulk_create(tunnel_groups) + + tunnels = ( + Tunnel( + name='Tunnel 1', + status=TunnelStatusChoices.STATUS_ACTIVE, + group=tunnel_groups[0], + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ), + Tunnel( + name='Tunnel 2', + status=TunnelStatusChoices.STATUS_ACTIVE, + group=tunnel_groups[1], + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ), + Tunnel( + name='Tunnel 3', + status=TunnelStatusChoices.STATUS_ACTIVE, + group=tunnel_groups[2], + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ), + ) + Tunnel.objects.bulk_create(tunnels) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'name': 'Tunnel X', + 'description': 'New tunnel', + 'status': TunnelStatusChoices.STATUS_PLANNED, + 'group': tunnel_groups[3].pk, + 'encapsulation': TunnelEncapsulationChoices.ENCAP_GRE, + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + "name,status,group,encapsulation", + "Tunnel 4,planned,Tunnel Group 1,gre", + "Tunnel 5,planned,Tunnel Group 2,gre", + "Tunnel 6,planned,Tunnel Group 3,gre", + ) + + cls.csv_update_data = ( + "id,status,group,encapsulation", + f"{tunnels[0].pk},active,Tunnel Group 4,ip-ip", + f"{tunnels[1].pk},active,Tunnel Group 4,ip-ip", + f"{tunnels[2].pk},active,Tunnel Group 4,ip-ip", + ) + + cls.bulk_edit_data = { + 'description': 'New description', + 'group': tunnel_groups[3].pk, + 'status': TunnelStatusChoices.STATUS_DISABLED, + 'encapsulation': TunnelEncapsulationChoices.ENCAP_GRE, + } + + +class TunnelTerminationTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = TunnelTermination + # TODO: Workaround for conflict between form field and GFK + validation_excluded_fields = ('termination',) + + @classmethod + def setUpTestData(cls): + device = create_test_device('Device 1') + interfaces = ( + Interface(device=device, name='Interface 1', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 2', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 3', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 4', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 5', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 6', type=InterfaceTypeChoices.TYPE_VIRTUAL), + Interface(device=device, name='Interface 7', type=InterfaceTypeChoices.TYPE_VIRTUAL), + ) + Interface.objects.bulk_create(interfaces) + + tunnel = Tunnel.objects.create( + name='Tunnel 1', + status=TunnelStatusChoices.STATUS_ACTIVE, + encapsulation=TunnelEncapsulationChoices.ENCAP_IP_IP + ) + + tunnel_terminations = ( + TunnelTermination( + tunnel=tunnel, + role=TunnelTerminationRoleChoices.ROLE_HUB, + termination=interfaces[0] + ), + TunnelTermination( + tunnel=tunnel, + role=TunnelTerminationRoleChoices.ROLE_SPOKE, + termination=interfaces[1] + ), + TunnelTermination( + tunnel=tunnel, + role=TunnelTerminationRoleChoices.ROLE_SPOKE, + termination=interfaces[2] + ), + ) + TunnelTermination.objects.bulk_create(tunnel_terminations) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'tunnel': tunnel.pk, + 'role': TunnelTerminationRoleChoices.ROLE_PEER, + 'type': TunnelTerminationTypeChoices.TYPE_DEVICE, + 'parent': device.pk, + 'termination': interfaces[6].pk, + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + "tunnel,role,device,termination", + "Tunnel 1,peer,Device 1,Interface 4", + "Tunnel 1,peer,Device 1,Interface 5", + "Tunnel 1,peer,Device 1,Interface 6", + ) + + cls.csv_update_data = ( + "id,role", + f"{tunnel_terminations[0].pk},peer", + f"{tunnel_terminations[1].pk},peer", + f"{tunnel_terminations[2].pk},peer", + ) + + cls.bulk_edit_data = { + 'role': TunnelTerminationRoleChoices.ROLE_PEER, + } + + +class IKEProposalTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = IKEProposal + + @classmethod + def setUpTestData(cls): + + ike_proposals = ( + IKEProposal( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + IKEProposal( + name='IKE Proposal 2', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + IKEProposal( + name='IKE Proposal 3', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + ) + IKEProposal.objects.bulk_create(ike_proposals) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'name': 'IKE Proposal X', + 'authentication_method': AuthenticationMethodChoices.CERTIFICATES, + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES192_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + 'group': DHGroupChoices.GROUP_19, + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + "name,authentication_method,encryption_algorithm,authentication_algorithm,group", + "IKE Proposal 4,preshared-keys,aes-128-cbc,hmac-sha1,14", + "IKE Proposal 5,preshared-keys,aes-128-cbc,hmac-sha1,14", + "IKE Proposal 6,preshared-keys,aes-128-cbc,hmac-sha1,14", + ) + + cls.csv_update_data = ( + "id,description", + f"{ike_proposals[0].pk},New description", + f"{ike_proposals[1].pk},New description", + f"{ike_proposals[2].pk},New description", + ) + + cls.bulk_edit_data = { + 'description': 'New description', + 'authentication_method': AuthenticationMethodChoices.CERTIFICATES, + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES192_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + 'group': DHGroupChoices.GROUP_19 + } + + +class IKEPolicyTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = IKEPolicy + + @classmethod + def setUpTestData(cls): + + ike_proposals = ( + IKEProposal( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + IKEProposal( + name='IKE Proposal 2', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ), + ) + IKEProposal.objects.bulk_create(ike_proposals) + + ike_policies = ( + IKEPolicy( + name='IKE Policy 1', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + IKEPolicy( + name='IKE Policy 2', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + IKEPolicy( + name='IKE Policy 3', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + ) + IKEPolicy.objects.bulk_create(ike_policies) + for ike_policy in ike_policies: + ike_policy.proposals.set(ike_proposals) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'name': 'IKE Policy X', + 'version': IKEVersionChoices.VERSION_2, + 'mode': IKEModeChoices.AGGRESSIVE, + 'proposals': [p.pk for p in ike_proposals], + 'tags': [t.pk for t in tags], + } + + ike_proposal_names = ','.join([p.name for p in ike_proposals]) + cls.csv_data = ( + "name,version,mode,proposals", + f"IKE Proposal 4,2,aggressive,\"{ike_proposal_names}\"", + f"IKE Proposal 5,2,aggressive,\"{ike_proposal_names}\"", + f"IKE Proposal 6,2,aggressive,\"{ike_proposal_names}\"", + ) + + cls.csv_update_data = ( + "id,description", + f"{ike_policies[0].pk},New description", + f"{ike_policies[1].pk},New description", + f"{ike_policies[2].pk},New description", + ) + + cls.bulk_edit_data = { + 'description': 'New description', + 'version': IKEVersionChoices.VERSION_2, + 'mode': IKEModeChoices.AGGRESSIVE, + } + + +class IPSecProposalTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = IPSecProposal + + @classmethod + def setUpTestData(cls): + + ipsec_proposals = ( + IPSecProposal( + name='IPSec Proposal 1', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + ), + IPSecProposal( + name='IPSec Proposal 2', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + ), + IPSecProposal( + name='IPSec Proposal 3', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + ), + ) + IPSecProposal.objects.bulk_create(ipsec_proposals) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'name': 'IPSec Proposal X', + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES192_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + 'sa_lifetime_seconds': 3600, + 'sa_lifetime_data': 1000000, + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + "name,encryption_algorithm,authentication_algorithm,sa_lifetime_seconds,sa_lifetime_data", + "IKE Proposal 4,aes-128-cbc,hmac-sha1,3600,1000000", + "IKE Proposal 5,aes-128-cbc,hmac-sha1,3600,1000000", + "IKE Proposal 6,aes-128-cbc,hmac-sha1,3600,1000000", + ) + + cls.csv_update_data = ( + "id,description", + f"{ipsec_proposals[0].pk},New description", + f"{ipsec_proposals[1].pk},New description", + f"{ipsec_proposals[2].pk},New description", + ) + + cls.bulk_edit_data = { + 'description': 'New description', + 'encryption_algorithm': EncryptionAlgorithmChoices.ENCRYPTION_AES192_CBC, + 'authentication_algorithm': AuthenticationAlgorithmChoices.AUTH_HMAC_SHA256, + 'sa_lifetime_seconds': 3600, + 'sa_lifetime_data': 1000000, + } + + +class IPSecPolicyTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = IPSecPolicy + + @classmethod + def setUpTestData(cls): + + ipsec_proposals = ( + IPSecProposal( + name='IPSec Policy 1', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ), + IPSecProposal( + name='IPSec Proposal 2', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ), + ) + IPSecProposal.objects.bulk_create(ipsec_proposals) + + ipsec_policies = ( + IPSecPolicy( + name='IPSec Policy 1', + pfs_group=DHGroupChoices.GROUP_14 + ), + IPSecPolicy( + name='IPSec Policy 2', + pfs_group=DHGroupChoices.GROUP_14 + ), + IPSecPolicy( + name='IPSec Policy 3', + pfs_group=DHGroupChoices.GROUP_14 + ), + ) + IPSecPolicy.objects.bulk_create(ipsec_policies) + for ipsec_policy in ipsec_policies: + ipsec_policy.proposals.set(ipsec_proposals) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'name': 'IPSec Policy X', + 'pfs_group': DHGroupChoices.GROUP_5, + 'proposals': [p.pk for p in ipsec_proposals], + 'tags': [t.pk for t in tags], + } + + ipsec_proposal_names = ','.join([p.name for p in ipsec_proposals]) + cls.csv_data = ( + "name,pfs_group,proposals", + f"IKE Proposal 4,19,\"{ipsec_proposal_names}\"", + f"IKE Proposal 5,19,\"{ipsec_proposal_names}\"", + f"IKE Proposal 6,19,\"{ipsec_proposal_names}\"", + ) + + cls.csv_update_data = ( + "id,description", + f"{ipsec_policies[0].pk},New description", + f"{ipsec_policies[1].pk},New description", + f"{ipsec_policies[2].pk},New description", + ) + + cls.bulk_edit_data = { + 'description': 'New description', + 'pfs_group': DHGroupChoices.GROUP_5, + } + + +class IPSecProfileTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = IPSecProfile + + @classmethod + def setUpTestData(cls): + + ike_proposal = IKEProposal.objects.create( + name='IKE Proposal 1', + authentication_method=AuthenticationMethodChoices.PRESHARED_KEYS, + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1, + group=DHGroupChoices.GROUP_14 + ) + + ipsec_proposal = IPSecProposal.objects.create( + name='IPSec Proposal 1', + encryption_algorithm=EncryptionAlgorithmChoices.ENCRYPTION_AES128_CBC, + authentication_algorithm=AuthenticationAlgorithmChoices.AUTH_HMAC_SHA1 + ) + + ike_policies = ( + IKEPolicy( + name='IKE Policy 1', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + IKEPolicy( + name='IKE Policy 2', + version=IKEVersionChoices.VERSION_1, + mode=IKEModeChoices.MAIN, + ), + ) + IKEPolicy.objects.bulk_create(ike_policies) + for ike_policy in ike_policies: + ike_policy.proposals.add(ike_proposal) + + ipsec_policies = ( + IPSecPolicy( + name='IPSec Policy 1', + pfs_group=DHGroupChoices.GROUP_14 + ), + IPSecPolicy( + name='IPSec Policy 2', + pfs_group=DHGroupChoices.GROUP_14 + ), + ) + IPSecPolicy.objects.bulk_create(ipsec_policies) + for ipsec_policy in ipsec_policies: + ipsec_policy.proposals.add(ipsec_proposal) + + ipsec_profiles = ( + IPSecProfile( + name='IPSec Profile 1', + mode=IPSecModeChoices.ESP, + ike_policy=ike_policies[0], + ipsec_policy=ipsec_policies[0] + ), + IPSecProfile( + name='IPSec Profile 2', + mode=IPSecModeChoices.ESP, + ike_policy=ike_policies[0], + ipsec_policy=ipsec_policies[0] + ), + IPSecProfile( + name='IPSec Profile 3', + mode=IPSecModeChoices.ESP, + ike_policy=ike_policies[0], + ipsec_policy=ipsec_policies[0] + ), + ) + IPSecProfile.objects.bulk_create(ipsec_profiles) + + tags = create_tags('Alpha', 'Bravo', 'Charlie') + + cls.form_data = { + 'name': 'IPSec Profile X', + 'mode': IPSecModeChoices.AH, + 'ike_policy': ike_policies[1].pk, + 'ipsec_policy': ipsec_policies[1].pk, + 'tags': [t.pk for t in tags], + } + + cls.csv_data = ( + "name,mode,ike_policy,ipsec_policy", + f"IKE Proposal 4,ah,IKE Policy 2,IPSec Policy 2", + f"IKE Proposal 5,ah,IKE Policy 2,IPSec Policy 2", + f"IKE Proposal 6,ah,IKE Policy 2,IPSec Policy 2", + ) + + cls.csv_update_data = ( + "id,description", + f"{ipsec_profiles[0].pk},New description", + f"{ipsec_profiles[1].pk},New description", + f"{ipsec_profiles[2].pk},New description", + ) + + cls.bulk_edit_data = { + 'description': 'New description', + 'mode': IPSecModeChoices.AH, + 'ike_policy': ike_policies[1].pk, + 'ipsec_policy': ipsec_policies[1].pk, + } + + +class L2VPNTestCase(ViewTestCases.PrimaryObjectViewTestCase): + model = L2VPN + + @classmethod + def setUpTestData(cls): + rts = ( + RouteTarget(name='64534:123'), + RouteTarget(name='64534:321') + ) + RouteTarget.objects.bulk_create(rts) + + l2vpns = ( + L2VPN(name='L2VPN 1', slug='l2vpn-1', type=L2VPNTypeChoices.TYPE_VXLAN, identifier='650001'), + L2VPN(name='L2VPN 2', slug='l2vpn-2', type=L2VPNTypeChoices.TYPE_VXLAN, identifier='650002'), + L2VPN(name='L2VPN 3', slug='l2vpn-3', type=L2VPNTypeChoices.TYPE_VXLAN, identifier='650003') + ) + L2VPN.objects.bulk_create(l2vpns) + + cls.csv_data = ( + 'name,slug,type,identifier', + 'L2VPN 5,l2vpn-5,vxlan,456', + 'L2VPN 6,l2vpn-6,vxlan,444', + ) + + cls.csv_update_data = ( + 'id,name,description', + f'{l2vpns[0].pk},L2VPN 7,New description 7', + f'{l2vpns[1].pk},L2VPN 8,New description 8', + ) + + cls.bulk_edit_data = { + 'description': 'New Description', + } + + cls.form_data = { + 'name': 'L2VPN 8', + 'slug': 'l2vpn-8', + 'type': L2VPNTypeChoices.TYPE_VXLAN, + 'identifier': 123, + 'description': 'Description', + 'import_targets': [rts[0].pk], + 'export_targets': [rts[1].pk] + } + + +class L2VPNTerminationTestCase( + ViewTestCases.GetObjectViewTestCase, + ViewTestCases.GetObjectChangelogViewTestCase, + ViewTestCases.CreateObjectViewTestCase, + ViewTestCases.EditObjectViewTestCase, + ViewTestCases.DeleteObjectViewTestCase, + ViewTestCases.ListObjectsViewTestCase, + ViewTestCases.BulkImportObjectsViewTestCase, + ViewTestCases.BulkDeleteObjectsViewTestCase, +): + + model = L2VPNTermination + + @classmethod + def setUpTestData(cls): + device = create_test_device('Device 1') + interface = Interface.objects.create(name='Interface 1', device=device, type='1000baset') + l2vpns = ( + L2VPN(name='L2VPN 1', slug='l2vpn-1', type=L2VPNTypeChoices.TYPE_VXLAN, identifier=650001), + L2VPN(name='L2VPN 2', slug='l2vpn-2', type=L2VPNTypeChoices.TYPE_VXLAN, identifier=650002), + ) + L2VPN.objects.bulk_create(l2vpns) + + vlans = ( + VLAN(name='Vlan 1', vid=1001), + VLAN(name='Vlan 2', vid=1002), + VLAN(name='Vlan 3', vid=1003), + VLAN(name='Vlan 4', vid=1004), + VLAN(name='Vlan 5', vid=1005), + VLAN(name='Vlan 6', vid=1006) + ) + VLAN.objects.bulk_create(vlans) + + terminations = ( + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[0]), + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[1]), + L2VPNTermination(l2vpn=l2vpns[0], assigned_object=vlans[2]) + ) + L2VPNTermination.objects.bulk_create(terminations) + + cls.form_data = { + 'l2vpn': l2vpns[0].pk, + 'device': device.pk, + 'interface': interface.pk, + } + + cls.csv_data = ( + "l2vpn,vlan", + "L2VPN 1,Vlan 4", + "L2VPN 1,Vlan 5", + "L2VPN 1,Vlan 6", + ) + + cls.csv_update_data = ( + f"id,l2vpn", + f"{terminations[0].pk},{l2vpns[0].name}", + f"{terminations[1].pk},{l2vpns[0].name}", + f"{terminations[2].pk},{l2vpns[0].name}", + ) + + cls.bulk_edit_data = {} + + # TODO: Fix L2VPNTerminationImportForm validation to support bulk updates + def test_bulk_update_objects_with_permission(self): + pass + + # + # Custom assertions + # + + # TODO: Remove this + def assertInstanceEqual(self, instance, data, exclude=None, api=False): + """ + Override parent + """ + if exclude is None: + exclude = [] + + fields = [k for k in data.keys() if k not in exclude] + model_dict = self.model_to_dict(instance, fields=fields, api=api) + + # Omit any dictionary keys which are not instance attributes or have been excluded + relevant_data = { + k: v for k, v in data.items() if hasattr(instance, k) and k not in exclude + } + + # Handle relations on the model + for k, v in model_dict.items(): + if isinstance(v, object) and hasattr(v, 'first'): + model_dict[k] = v.first().pk + + self.assertDictEqual(model_dict, relevant_data) diff --git a/netbox/vpn/urls.py b/netbox/vpn/urls.py new file mode 100644 index 000000000..552f0e185 --- /dev/null +++ b/netbox/vpn/urls.py @@ -0,0 +1,89 @@ +from django.urls import include, path + +from utilities.urls import get_model_urls +from . import views + +app_name = 'vpn' +urlpatterns = [ + + # Tunnel groups + path('tunnel-groups/', views.TunnelGroupListView.as_view(), name='tunnelgroup_list'), + path('tunnel-groups/add/', views.TunnelGroupEditView.as_view(), name='tunnelgroup_add'), + path('tunnel-groups/import/', views.TunnelGroupBulkImportView.as_view(), name='tunnelgroup_import'), + path('tunnel-groups/edit/', views.TunnelGroupBulkEditView.as_view(), name='tunnelgroup_bulk_edit'), + path('tunnel-groups/delete/', views.TunnelGroupBulkDeleteView.as_view(), name='tunnelgroup_bulk_delete'), + path('tunnel-groups//', include(get_model_urls('vpn', 'tunnelgroup'))), + + # Tunnels + path('tunnels/', views.TunnelListView.as_view(), name='tunnel_list'), + path('tunnels/add/', views.TunnelEditView.as_view(), name='tunnel_add'), + path('tunnels/import/', views.TunnelBulkImportView.as_view(), name='tunnel_import'), + path('tunnels/edit/', views.TunnelBulkEditView.as_view(), name='tunnel_bulk_edit'), + path('tunnels/delete/', views.TunnelBulkDeleteView.as_view(), name='tunnel_bulk_delete'), + path('tunnels//', include(get_model_urls('vpn', 'tunnel'))), + + # Tunnel terminations + path('tunnel-terminations/', views.TunnelTerminationListView.as_view(), name='tunneltermination_list'), + path('tunnel-terminations/add/', views.TunnelTerminationEditView.as_view(), name='tunneltermination_add'), + path('tunnel-terminations/import/', views.TunnelTerminationBulkImportView.as_view(), name='tunneltermination_import'), + path('tunnel-terminations/edit/', views.TunnelTerminationBulkEditView.as_view(), name='tunneltermination_bulk_edit'), + path('tunnel-terminations/delete/', views.TunnelTerminationBulkDeleteView.as_view(), name='tunneltermination_bulk_delete'), + path('tunnel-terminations//', include(get_model_urls('vpn', 'tunneltermination'))), + + # IKE proposals + path('ike-proposals/', views.IKEProposalListView.as_view(), name='ikeproposal_list'), + path('ike-proposals/add/', views.IKEProposalEditView.as_view(), name='ikeproposal_add'), + path('ike-proposals/import/', views.IKEProposalBulkImportView.as_view(), name='ikeproposal_import'), + path('ike-proposals/edit/', views.IKEProposalBulkEditView.as_view(), name='ikeproposal_bulk_edit'), + path('ike-proposals/delete/', views.IKEProposalBulkDeleteView.as_view(), name='ikeproposal_bulk_delete'), + path('ike-proposals//', include(get_model_urls('vpn', 'ikeproposal'))), + + # IKE policies + path('ike-policies/', views.IKEPolicyListView.as_view(), name='ikepolicy_list'), + path('ike-policies/add/', views.IKEPolicyEditView.as_view(), name='ikepolicy_add'), + path('ike-policies/import/', views.IKEPolicyBulkImportView.as_view(), name='ikepolicy_import'), + path('ike-policies/edit/', views.IKEPolicyBulkEditView.as_view(), name='ikepolicy_bulk_edit'), + path('ike-policies/delete/', views.IKEPolicyBulkDeleteView.as_view(), name='ikepolicy_bulk_delete'), + path('ike-policies//', include(get_model_urls('vpn', 'ikepolicy'))), + + # IPSec proposals + path('ipsec-proposals/', views.IPSecProposalListView.as_view(), name='ipsecproposal_list'), + path('ipsec-proposals/add/', views.IPSecProposalEditView.as_view(), name='ipsecproposal_add'), + path('ipsec-proposals/import/', views.IPSecProposalBulkImportView.as_view(), name='ipsecproposal_import'), + path('ipsec-proposals/edit/', views.IPSecProposalBulkEditView.as_view(), name='ipsecproposal_bulk_edit'), + path('ipsec-proposals/delete/', views.IPSecProposalBulkDeleteView.as_view(), name='ipsecproposal_bulk_delete'), + path('ipsec-proposals//', include(get_model_urls('vpn', 'ipsecproposal'))), + + # IPSec policies + path('ipsec-policies/', views.IPSecPolicyListView.as_view(), name='ipsecpolicy_list'), + path('ipsec-policies/add/', views.IPSecPolicyEditView.as_view(), name='ipsecpolicy_add'), + path('ipsec-policies/import/', views.IPSecPolicyBulkImportView.as_view(), name='ipsecpolicy_import'), + path('ipsec-policies/edit/', views.IPSecPolicyBulkEditView.as_view(), name='ipsecpolicy_bulk_edit'), + path('ipsec-policies/delete/', views.IPSecPolicyBulkDeleteView.as_view(), name='ipsecpolicy_bulk_delete'), + path('ipsec-policies//', include(get_model_urls('vpn', 'ipsecpolicy'))), + + # IPSec profiles + path('ipsec-profiles/', views.IPSecProfileListView.as_view(), name='ipsecprofile_list'), + path('ipsec-profiles/add/', views.IPSecProfileEditView.as_view(), name='ipsecprofile_add'), + path('ipsec-profiles/import/', views.IPSecProfileBulkImportView.as_view(), name='ipsecprofile_import'), + path('ipsec-profiles/edit/', views.IPSecProfileBulkEditView.as_view(), name='ipsecprofile_bulk_edit'), + path('ipsec-profiles/delete/', views.IPSecProfileBulkDeleteView.as_view(), name='ipsecprofile_bulk_delete'), + path('ipsec-profiles//', include(get_model_urls('vpn', 'ipsecprofile'))), + + # L2VPN + path('l2vpns/', views.L2VPNListView.as_view(), name='l2vpn_list'), + path('l2vpns/add/', views.L2VPNEditView.as_view(), name='l2vpn_add'), + path('l2vpns/import/', views.L2VPNBulkImportView.as_view(), name='l2vpn_import'), + path('l2vpns/edit/', views.L2VPNBulkEditView.as_view(), name='l2vpn_bulk_edit'), + path('l2vpns/delete/', views.L2VPNBulkDeleteView.as_view(), name='l2vpn_bulk_delete'), + path('l2vpns//', include(get_model_urls('vpn', 'l2vpn'))), + + # L2VPN terminations + path('l2vpn-terminations/', views.L2VPNTerminationListView.as_view(), name='l2vpntermination_list'), + path('l2vpn-terminations/add/', views.L2VPNTerminationEditView.as_view(), name='l2vpntermination_add'), + path('l2vpn-terminations/import/', views.L2VPNTerminationBulkImportView.as_view(), name='l2vpntermination_import'), + path('l2vpn-terminations/edit/', views.L2VPNTerminationBulkEditView.as_view(), name='l2vpntermination_bulk_edit'), + path('l2vpn-terminations/delete/', views.L2VPNTerminationBulkDeleteView.as_view(), name='l2vpntermination_bulk_delete'), + path('l2vpn-terminations//', include(get_model_urls('vpn', 'l2vpntermination'))), + +] diff --git a/netbox/vpn/views.py b/netbox/vpn/views.py new file mode 100644 index 000000000..9bf424af9 --- /dev/null +++ b/netbox/vpn/views.py @@ -0,0 +1,505 @@ +from ipam.tables import RouteTargetTable +from netbox.views import generic +from tenancy.views import ObjectContactsView +from utilities.utils import count_related +from utilities.views import register_model_view +from . import filtersets, forms, tables +from .models import * + + +# +# Tunnel groups +# + +class TunnelGroupListView(generic.ObjectListView): + queryset = TunnelGroup.objects.annotate( + tunnel_count=count_related(Tunnel, 'group') + ) + filterset = filtersets.TunnelGroupFilterSet + filterset_form = forms.TunnelGroupFilterForm + table = tables.TunnelGroupTable + + +@register_model_view(TunnelGroup) +class TunnelGroupView(generic.ObjectView): + queryset = TunnelGroup.objects.all() + + def get_extra_context(self, request, instance): + related_models = ( + (Tunnel.objects.restrict(request.user, 'view').filter(group=instance), 'group_id'), + ) + + return { + 'related_models': related_models, + } + + +@register_model_view(TunnelGroup, 'edit') +class TunnelGroupEditView(generic.ObjectEditView): + queryset = TunnelGroup.objects.all() + form = forms.TunnelGroupForm + + +@register_model_view(TunnelGroup, 'delete') +class TunnelGroupDeleteView(generic.ObjectDeleteView): + queryset = TunnelGroup.objects.all() + + +class TunnelGroupBulkImportView(generic.BulkImportView): + queryset = TunnelGroup.objects.all() + model_form = forms.TunnelGroupImportForm + + +class TunnelGroupBulkEditView(generic.BulkEditView): + queryset = TunnelGroup.objects.annotate( + tunnel_count=count_related(Tunnel, 'group') + ) + filterset = filtersets.TunnelGroupFilterSet + table = tables.TunnelGroupTable + form = forms.TunnelGroupBulkEditForm + + +class TunnelGroupBulkDeleteView(generic.BulkDeleteView): + queryset = TunnelGroup.objects.annotate( + tunnel_count=count_related(Tunnel, 'group') + ) + filterset = filtersets.TunnelGroupFilterSet + table = tables.TunnelGroupTable + + +# +# Tunnels +# + +class TunnelListView(generic.ObjectListView): + queryset = Tunnel.objects.annotate( + count_terminations=count_related(TunnelTermination, 'tunnel') + ) + filterset = filtersets.TunnelFilterSet + filterset_form = forms.TunnelFilterForm + table = tables.TunnelTable + + +@register_model_view(Tunnel) +class TunnelView(generic.ObjectView): + queryset = Tunnel.objects.all() + + +@register_model_view(Tunnel, 'edit') +class TunnelEditView(generic.ObjectEditView): + queryset = Tunnel.objects.all() + form = forms.TunnelForm + + def dispatch(self, request, *args, **kwargs): + + # If creating a new Tunnel, use the creation form + if 'pk' not in kwargs: + self.form = forms.TunnelCreateForm + + return super().dispatch(request, *args, **kwargs) + + +@register_model_view(Tunnel, 'delete') +class TunnelDeleteView(generic.ObjectDeleteView): + queryset = Tunnel.objects.all() + + +class TunnelBulkImportView(generic.BulkImportView): + queryset = Tunnel.objects.all() + model_form = forms.TunnelImportForm + + +class TunnelBulkEditView(generic.BulkEditView): + queryset = Tunnel.objects.annotate( + count_terminations=count_related(TunnelTermination, 'tunnel') + ) + filterset = filtersets.TunnelFilterSet + table = tables.TunnelTable + form = forms.TunnelBulkEditForm + + +class TunnelBulkDeleteView(generic.BulkDeleteView): + queryset = Tunnel.objects.annotate( + count_terminations=count_related(TunnelTermination, 'tunnel') + ) + filterset = filtersets.TunnelFilterSet + table = tables.TunnelTable + + +# +# Tunnel terminations +# + +class TunnelTerminationListView(generic.ObjectListView): + queryset = TunnelTermination.objects.all() + filterset = filtersets.TunnelTerminationFilterSet + filterset_form = forms.TunnelTerminationFilterForm + table = tables.TunnelTerminationTable + + +@register_model_view(TunnelTermination) +class TunnelTerminationView(generic.ObjectView): + queryset = TunnelTermination.objects.all() + + +@register_model_view(TunnelTermination, 'edit') +class TunnelTerminationEditView(generic.ObjectEditView): + queryset = TunnelTermination.objects.all() + form = forms.TunnelTerminationForm + + +@register_model_view(TunnelTermination, 'delete') +class TunnelTerminationDeleteView(generic.ObjectDeleteView): + queryset = TunnelTermination.objects.all() + + +class TunnelTerminationBulkImportView(generic.BulkImportView): + queryset = TunnelTermination.objects.all() + model_form = forms.TunnelTerminationImportForm + + +class TunnelTerminationBulkEditView(generic.BulkEditView): + queryset = TunnelTermination.objects.all() + filterset = filtersets.TunnelTerminationFilterSet + table = tables.TunnelTerminationTable + form = forms.TunnelTerminationBulkEditForm + + +class TunnelTerminationBulkDeleteView(generic.BulkDeleteView): + queryset = TunnelTermination.objects.all() + filterset = filtersets.TunnelTerminationFilterSet + table = tables.TunnelTerminationTable + + +# +# IKE proposals +# + +class IKEProposalListView(generic.ObjectListView): + queryset = IKEProposal.objects.all() + filterset = filtersets.IKEProposalFilterSet + filterset_form = forms.IKEProposalFilterForm + table = tables.IKEProposalTable + + +@register_model_view(IKEProposal) +class IKEProposalView(generic.ObjectView): + queryset = IKEProposal.objects.all() + + +@register_model_view(IKEProposal, 'edit') +class IKEProposalEditView(generic.ObjectEditView): + queryset = IKEProposal.objects.all() + form = forms.IKEProposalForm + + +@register_model_view(IKEProposal, 'delete') +class IKEProposalDeleteView(generic.ObjectDeleteView): + queryset = IKEProposal.objects.all() + + +class IKEProposalBulkImportView(generic.BulkImportView): + queryset = IKEProposal.objects.all() + model_form = forms.IKEProposalImportForm + + +class IKEProposalBulkEditView(generic.BulkEditView): + queryset = IKEProposal.objects.all() + filterset = filtersets.IKEProposalFilterSet + table = tables.IKEProposalTable + form = forms.IKEProposalBulkEditForm + + +class IKEProposalBulkDeleteView(generic.BulkDeleteView): + queryset = IKEProposal.objects.all() + filterset = filtersets.IKEProposalFilterSet + table = tables.IKEProposalTable + + +# +# IKE policies +# + +class IKEPolicyListView(generic.ObjectListView): + queryset = IKEPolicy.objects.all() + filterset = filtersets.IKEPolicyFilterSet + filterset_form = forms.IKEPolicyFilterForm + table = tables.IKEPolicyTable + + +@register_model_view(IKEPolicy) +class IKEPolicyView(generic.ObjectView): + queryset = IKEPolicy.objects.all() + + +@register_model_view(IKEPolicy, 'edit') +class IKEPolicyEditView(generic.ObjectEditView): + queryset = IKEPolicy.objects.all() + form = forms.IKEPolicyForm + + +@register_model_view(IKEPolicy, 'delete') +class IKEPolicyDeleteView(generic.ObjectDeleteView): + queryset = IKEPolicy.objects.all() + + +class IKEPolicyBulkImportView(generic.BulkImportView): + queryset = IKEPolicy.objects.all() + model_form = forms.IKEPolicyImportForm + + +class IKEPolicyBulkEditView(generic.BulkEditView): + queryset = IKEPolicy.objects.all() + filterset = filtersets.IKEPolicyFilterSet + table = tables.IKEPolicyTable + form = forms.IKEPolicyBulkEditForm + + +class IKEPolicyBulkDeleteView(generic.BulkDeleteView): + queryset = IKEPolicy.objects.all() + filterset = filtersets.IKEPolicyFilterSet + table = tables.IKEPolicyTable + + +# +# IPSec proposals +# + +class IPSecProposalListView(generic.ObjectListView): + queryset = IPSecProposal.objects.all() + filterset = filtersets.IPSecProposalFilterSet + filterset_form = forms.IPSecProposalFilterForm + table = tables.IPSecProposalTable + + +@register_model_view(IPSecProposal) +class IPSecProposalView(generic.ObjectView): + queryset = IPSecProposal.objects.all() + + +@register_model_view(IPSecProposal, 'edit') +class IPSecProposalEditView(generic.ObjectEditView): + queryset = IPSecProposal.objects.all() + form = forms.IPSecProposalForm + + +@register_model_view(IPSecProposal, 'delete') +class IPSecProposalDeleteView(generic.ObjectDeleteView): + queryset = IPSecProposal.objects.all() + + +class IPSecProposalBulkImportView(generic.BulkImportView): + queryset = IPSecProposal.objects.all() + model_form = forms.IPSecProposalImportForm + + +class IPSecProposalBulkEditView(generic.BulkEditView): + queryset = IPSecProposal.objects.all() + filterset = filtersets.IPSecProposalFilterSet + table = tables.IPSecProposalTable + form = forms.IPSecProposalBulkEditForm + + +class IPSecProposalBulkDeleteView(generic.BulkDeleteView): + queryset = IPSecProposal.objects.all() + filterset = filtersets.IPSecProposalFilterSet + table = tables.IPSecProposalTable + + +# +# IPSec policies +# + +class IPSecPolicyListView(generic.ObjectListView): + queryset = IPSecPolicy.objects.all() + filterset = filtersets.IPSecPolicyFilterSet + filterset_form = forms.IPSecPolicyFilterForm + table = tables.IPSecPolicyTable + + +@register_model_view(IPSecPolicy) +class IPSecPolicyView(generic.ObjectView): + queryset = IPSecPolicy.objects.all() + + +@register_model_view(IPSecPolicy, 'edit') +class IPSecPolicyEditView(generic.ObjectEditView): + queryset = IPSecPolicy.objects.all() + form = forms.IPSecPolicyForm + + +@register_model_view(IPSecPolicy, 'delete') +class IPSecPolicyDeleteView(generic.ObjectDeleteView): + queryset = IPSecPolicy.objects.all() + + +class IPSecPolicyBulkImportView(generic.BulkImportView): + queryset = IPSecPolicy.objects.all() + model_form = forms.IPSecPolicyImportForm + + +class IPSecPolicyBulkEditView(generic.BulkEditView): + queryset = IPSecPolicy.objects.all() + filterset = filtersets.IPSecPolicyFilterSet + table = tables.IPSecPolicyTable + form = forms.IPSecPolicyBulkEditForm + + +class IPSecPolicyBulkDeleteView(generic.BulkDeleteView): + queryset = IPSecPolicy.objects.all() + filterset = filtersets.IPSecPolicyFilterSet + table = tables.IPSecPolicyTable + + +# +# IPSec profiles +# + +class IPSecProfileListView(generic.ObjectListView): + queryset = IPSecProfile.objects.all() + filterset = filtersets.IPSecProfileFilterSet + filterset_form = forms.IPSecProfileFilterForm + table = tables.IPSecProfileTable + + +@register_model_view(IPSecProfile) +class IPSecProfileView(generic.ObjectView): + queryset = IPSecProfile.objects.all() + + +@register_model_view(IPSecProfile, 'edit') +class IPSecProfileEditView(generic.ObjectEditView): + queryset = IPSecProfile.objects.all() + form = forms.IPSecProfileForm + + +@register_model_view(IPSecProfile, 'delete') +class IPSecProfileDeleteView(generic.ObjectDeleteView): + queryset = IPSecProfile.objects.all() + + +class IPSecProfileBulkImportView(generic.BulkImportView): + queryset = IPSecProfile.objects.all() + model_form = forms.IPSecProfileImportForm + + +class IPSecProfileBulkEditView(generic.BulkEditView): + queryset = IPSecProfile.objects.all() + filterset = filtersets.IPSecProfileFilterSet + table = tables.IPSecProfileTable + form = forms.IPSecProfileBulkEditForm + + +class IPSecProfileBulkDeleteView(generic.BulkDeleteView): + queryset = IPSecProfile.objects.all() + filterset = filtersets.IPSecProfileFilterSet + table = tables.IPSecProfileTable + + +# L2VPN + +class L2VPNListView(generic.ObjectListView): + queryset = L2VPN.objects.all() + table = tables.L2VPNTable + filterset = filtersets.L2VPNFilterSet + filterset_form = forms.L2VPNFilterForm + + +@register_model_view(L2VPN) +class L2VPNView(generic.ObjectView): + queryset = L2VPN.objects.all() + + def get_extra_context(self, request, instance): + import_targets_table = RouteTargetTable( + instance.import_targets.prefetch_related('tenant'), + orderable=False + ) + export_targets_table = RouteTargetTable( + instance.export_targets.prefetch_related('tenant'), + orderable=False + ) + + return { + 'import_targets_table': import_targets_table, + 'export_targets_table': export_targets_table, + } + + +@register_model_view(L2VPN, 'edit') +class L2VPNEditView(generic.ObjectEditView): + queryset = L2VPN.objects.all() + form = forms.L2VPNForm + + +@register_model_view(L2VPN, 'delete') +class L2VPNDeleteView(generic.ObjectDeleteView): + queryset = L2VPN.objects.all() + + +class L2VPNBulkImportView(generic.BulkImportView): + queryset = L2VPN.objects.all() + model_form = forms.L2VPNImportForm + + +class L2VPNBulkEditView(generic.BulkEditView): + queryset = L2VPN.objects.all() + filterset = filtersets.L2VPNFilterSet + table = tables.L2VPNTable + form = forms.L2VPNBulkEditForm + + +class L2VPNBulkDeleteView(generic.BulkDeleteView): + queryset = L2VPN.objects.all() + filterset = filtersets.L2VPNFilterSet + table = tables.L2VPNTable + + +@register_model_view(L2VPN, 'contacts') +class L2VPNContactsView(ObjectContactsView): + queryset = L2VPN.objects.all() + + +# +# L2VPN terminations +# + +class L2VPNTerminationListView(generic.ObjectListView): + queryset = L2VPNTermination.objects.all() + table = tables.L2VPNTerminationTable + filterset = filtersets.L2VPNTerminationFilterSet + filterset_form = forms.L2VPNTerminationFilterForm + + +@register_model_view(L2VPNTermination) +class L2VPNTerminationView(generic.ObjectView): + queryset = L2VPNTermination.objects.all() + + +@register_model_view(L2VPNTermination, 'edit') +class L2VPNTerminationEditView(generic.ObjectEditView): + queryset = L2VPNTermination.objects.all() + form = forms.L2VPNTerminationForm + template_name = 'vpn/l2vpntermination_edit.html' + + +@register_model_view(L2VPNTermination, 'delete') +class L2VPNTerminationDeleteView(generic.ObjectDeleteView): + queryset = L2VPNTermination.objects.all() + + +class L2VPNTerminationBulkImportView(generic.BulkImportView): + queryset = L2VPNTermination.objects.all() + model_form = forms.L2VPNTerminationImportForm + + +class L2VPNTerminationBulkEditView(generic.BulkEditView): + queryset = L2VPNTermination.objects.all() + filterset = filtersets.L2VPNTerminationFilterSet + table = tables.L2VPNTerminationTable + form = forms.L2VPNTerminationBulkEditForm + + +class L2VPNTerminationBulkDeleteView(generic.BulkDeleteView): + queryset = L2VPNTermination.objects.all() + filterset = filtersets.L2VPNTerminationFilterSet + table = tables.L2VPNTerminationTable diff --git a/netbox/wireless/api/views.py b/netbox/wireless/api/views.py index 1103cec37..a6cc9f535 100644 --- a/netbox/wireless/api/views.py +++ b/netbox/wireless/api/views.py @@ -1,6 +1,6 @@ from rest_framework.routers import APIRootView -from netbox.api.viewsets import NetBoxModelViewSet +from netbox.api.viewsets import NetBoxModelViewSet, MPTTLockedMixin from wireless import filtersets from wireless.models import * from . import serializers @@ -14,7 +14,7 @@ class WirelessRootView(APIRootView): return 'Wireless' -class WirelessLANGroupViewSet(NetBoxModelViewSet): +class WirelessLANGroupViewSet(MPTTLockedMixin, NetBoxModelViewSet): queryset = WirelessLANGroup.objects.add_related_count( WirelessLANGroup.objects.all(), WirelessLAN, diff --git a/netbox/wireless/models.py b/netbox/wireless/models.py index 046918535..0b114f85f 100644 --- a/netbox/wireless/models.py +++ b/netbox/wireless/models.py @@ -2,7 +2,6 @@ from django.core.exceptions import ValidationError from django.db import models from django.urls import reverse from django.utils.translation import gettext_lazy as _ -from mptt.models import MPTTModel from dcim.choices import LinkStatusChoices from dcim.constants import WIRELESS_IFACE_TYPES @@ -214,14 +213,14 @@ class WirelessLink(WirelessAuthenticationBase, PrimaryModel): if self.interface_a.type not in WIRELESS_IFACE_TYPES: raise ValidationError({ 'interface_a': _( - "{type_display} is not a wireless interface." - ).format(type_display=self.interface_a.get_type_display()) + "{type} is not a wireless interface." + ).format(type=self.interface_a.get_type_display()) }) if self.interface_b.type not in WIRELESS_IFACE_TYPES: raise ValidationError({ 'interface_a': _( - "{type_display} is not a wireless interface." - ).format(type_display=self.interface_b.get_type_display()) + "{type} is not a wireless interface." + ).format(type=self.interface_b.get_type_display()) }) def save(self, *args, **kwargs): diff --git a/netbox/wireless/search.py b/netbox/wireless/search.py index 1f8097cd7..c8ac023cc 100644 --- a/netbox/wireless/search.py +++ b/netbox/wireless/search.py @@ -11,6 +11,7 @@ class WirelessLANIndex(SearchIndex): ('auth_psk', 2000), ('comments', 5000), ) + display_attrs = ('group', 'status', 'vlan', 'tenant', 'description') @register_search @@ -21,6 +22,7 @@ class WirelessLANGroupIndex(SearchIndex): ('slug', 110), ('description', 500), ) + display_attrs = ('description',) @register_search @@ -32,3 +34,4 @@ class WirelessLinkIndex(SearchIndex): ('auth_psk', 2000), ('comments', 5000), ) + display_attrs = ('status', 'tenant', 'description') diff --git a/netbox/wireless/tests/test_filtersets.py b/netbox/wireless/tests/test_filtersets.py index 0629fea07..4184d5392 100644 --- a/netbox/wireless/tests/test_filtersets.py +++ b/netbox/wireless/tests/test_filtersets.py @@ -36,6 +36,10 @@ class WirelessLANGroupTestCase(TestCase, ChangeLoggedFilterSetTests): for group in child_groups: group.save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_name(self): params = {'name': ['Wireless LAN Group 1', 'Wireless LAN Group 2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -103,7 +107,8 @@ class WirelessLANTestCase(TestCase, ChangeLoggedFilterSetTests): tenant=tenants[0], auth_type=WirelessAuthTypeChoices.TYPE_OPEN, auth_cipher=WirelessAuthCipherChoices.CIPHER_AUTO, - auth_psk='PSK1' + auth_psk='PSK1', + description='foobar1' ), WirelessLAN( ssid='WLAN2', @@ -113,7 +118,8 @@ class WirelessLANTestCase(TestCase, ChangeLoggedFilterSetTests): tenant=tenants[1], auth_type=WirelessAuthTypeChoices.TYPE_WEP, auth_cipher=WirelessAuthCipherChoices.CIPHER_TKIP, - auth_psk='PSK2' + auth_psk='PSK2', + description='foobar2' ), WirelessLAN( ssid='WLAN3', @@ -123,11 +129,16 @@ class WirelessLANTestCase(TestCase, ChangeLoggedFilterSetTests): tenant=tenants[2], auth_type=WirelessAuthTypeChoices.TYPE_WPA_PERSONAL, auth_cipher=WirelessAuthCipherChoices.CIPHER_AES, - auth_psk='PSK3' + auth_psk='PSK3', + description='foobar3' ), ) WirelessLAN.objects.bulk_create(wireless_lans) + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_ssid(self): params = {'ssid': ['WLAN1', 'WLAN2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) @@ -160,6 +171,10 @@ class WirelessLANTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'auth_psk': ['PSK1', 'PSK2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_description(self): + params = {'description': ['foobar1', 'foobar2']} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_tenant(self): tenants = Tenant.objects.all()[:2] params = {'tenant_id': [tenants[0].pk, tenants[1].pk]} @@ -240,6 +255,10 @@ class WirelessLinkTestCase(TestCase, ChangeLoggedFilterSetTests): ssid='LINK4' ).save() + def test_q(self): + params = {'q': 'foobar1'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1) + def test_ssid(self): params = {'ssid': ['LINK1', 'LINK2']} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) diff --git a/requirements.txt b/requirements.txt index 7580af9cd..1ab2caaea 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,35 +1,35 @@ -bleach==6.0.0 -Django==4.2.4 -django-cors-headers==4.2.0 +bleach==6.1.0 +Django==4.2.8 +django-cors-headers==4.3.1 django-debug-toolbar==4.2.0 -django-filter==23.2 +django-filter==23.5 django-graphiql-debug-toolbar==0.2.0 -django-mptt==0.14 +django-mptt==0.14.0 django-pglocks==1.0.4 django-prometheus==2.3.1 -django-redis==5.3.0 -django-rich==1.7.0 -django-rq==2.8.1 -django-tables2==2.6.0 -django-taggit==4.0.0 -django-timezone-field==5.1 +django-redis==5.4.0 +django-rich==1.8.0 +django-rq==2.10.1 +django-taggit==5.0.1 +django-tables2==2.7.0 +django-timezone-field==6.1.0 djangorestframework==3.14.0 -drf-spectacular==0.26.4 -drf-spectacular-sidecar==2023.8.1 -feedparser==6.0.10 +drf-spectacular==0.27.0 +drf-spectacular-sidecar==2023.12.1 +feedparser==6.0.11 graphene-django==3.0.0 gunicorn==21.2.0 Jinja2==3.1.2 -Markdown==3.3.7 -mkdocs-material==9.1.21 -mkdocstrings[python-legacy]==0.22.0 -netaddr==0.8.0 -Pillow==10.0.0 -psycopg[binary,pool]==3.1.10 +Markdown==3.5.1 +mkdocs-material==9.5.3 +mkdocstrings[python-legacy]==0.24.0 +netaddr==0.9.0 +Pillow==10.1.0 +psycopg[binary,pool]==3.1.16 PyYAML==6.0.1 -sentry-sdk==1.29.2 -social-auth-app-django==5.2.0 -social-auth-core[openidconnect]==4.4.2 +requests==2.31.0 +social-auth-app-django==5.4.0 +social-auth-core[openidconnect]==4.5.1 strawberry-graphql-django==0.16.0 svgwrite==1.4.3 tablib==3.5.0 diff --git a/upgrade.sh b/upgrade.sh index cac046a9f..47b3b108a 100755 --- a/upgrade.sh +++ b/upgrade.sh @@ -7,6 +7,10 @@ # Python 3.8 or later. cd "$(dirname "$0")" + +NETBOX_VERSION="$(grep ^VERSION netbox/netbox/settings.py | cut -d\' -f2)" +echo "You are installing (or upgrading to) NetBox version ${NETBOX_VERSION}" + VIRTUALENV="$(pwd -P)/venv" PYTHON="${PYTHON:-python3}" @@ -113,11 +117,6 @@ COMMAND="python3 netbox/manage.py clearsessions" echo "Removing expired user sessions ($COMMAND)..." eval $COMMAND || exit 1 -# Clear the cache -COMMAND="python3 netbox/manage.py clearcache" -echo "Clearing the cache ($COMMAND)..." -eval $COMMAND || exit 1 - if [ -v WARN_MISSING_VENV ]; then echo "--------------------------------------------------------------------" echo "WARNING: No existing virtual environment was detected. A new one has"